Initial commit

This commit is contained in:
Jesús
2018-10-11 12:33:40 -05:00
commit 932fd81b90
195 changed files with 33791 additions and 0 deletions

0
project/__init__.py Normal file
View File

8
project/admin.py Normal file
View File

@@ -0,0 +1,8 @@
from django.contrib import admin
from .models import Project
# Register your models here.
class ProjectAdmin(admin.ModelAdmin):
readonly_fields = ('created', 'updated',)
admin.site.register(Project, ProjectAdmin)

6
project/apps.py Normal file
View File

@@ -0,0 +1,6 @@
from django.apps import AppConfig
class ProjectConfig(AppConfig):
name = 'project'
verbose_name= 'Proyectos'

25
project/forms.py Normal file
View File

@@ -0,0 +1,25 @@
from django import forms
class ContactForm(forms.Form):
name = forms.CharField(label="Nombre",
required=True,
widget=forms.TextInput(
attrs={'placeholder': 'Nombre'}
),
min_length=3,
max_length=100)
email = forms.EmailField(label="Email",
required=True,
widget=forms.EmailInput(
attrs={'placeholder': 'user@page.domain'}
),
min_length=3,
max_length=100)
content = forms.CharField(label="Mensaje",
required=True,
widget=forms.Textarea(
attrs={'placeholder': 'Mensaje'}
),
min_length=10,
max_length=1000)

View File

@@ -0,0 +1,31 @@
# Generated by Django 2.1.2 on 2018-10-04 02:27
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Project',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(max_length=200, verbose_name='Titulo')),
('decription', models.TextField(verbose_name='Descripción')),
('image', models.ImageField(upload_to='projects/uploads/%Y/%m/%d/', verbose_name='Imagen')),
('link', models.URLField(blank=True, null=True, verbose_name='Sitio web')),
('created', models.DateTimeField(auto_now_add=True, verbose_name='Fecha de creación')),
('updated', models.DateTimeField(auto_now=True, verbose_name='Fecha de modificación')),
],
options={
'verbose_name': 'proyecto',
'verbose_name_plural': 'proyectos',
'ordering': ['-created'],
},
),
]

View File

21
project/models.py Normal file
View File

@@ -0,0 +1,21 @@
from django.db import models
class Project(models.Model):
title = models.CharField(max_length=200, verbose_name='Titulo')
decription = models.TextField(verbose_name='Descripción')
image = models.ImageField(verbose_name='Imagen',
upload_to='projects/uploads/%Y/%m/%d/')
link = models.URLField(null=True, blank=True, verbose_name='Sitio web')
created = models.DateTimeField(auto_now_add=True,
verbose_name='Fecha de creación')
updated = models.DateTimeField(auto_now=True,
verbose_name='Fecha de modificación')
class Meta:
verbose_name = 'proyecto'
verbose_name_plural = 'proyectos'
ordering = ["-created"]
def __str__(self):
return self.title

View File

@@ -0,0 +1,111 @@
{% extends 'core/base.html' %}
{% load static %}
{% block content %}
<section class="acerca-de" id="acerca-de">
<div class="contenedor">
<div class="foto">
<img alt="Jesús Eduardo" title="Jesús Eduardo" src="{% static 'core/images/foto.png' %}" width="115"/>
</div>
<div class="texto">
<h3 class="titulo">Acerca de</h3>
<p>Consultor y desarrollador de <span class="bold">Software Libre</span>. Hacker de <span class="bold">Hyperbola GNU/Linux-Libre.</span></p>
</div>
</div>
</section>
<!-- Projects -->
<section class="trabajos" id="trabajos">
<div class="contenedor">
<h3 class="titulo">Proyectos</h3>
<div class="contenedor-trabajos">
<!-- Trabajo -->
{% for project in projects %}
<div class="trabajo">
<div class="thumb">
<img alt="{{project.title}}" title="{{project.title}}" src="{{project.image.url}}"/>
</div>
<div class="descripcion">
<p class="nombre">
{% if project.link %}
<a href="{{project.link}}" rel="noopener noreferrer" target="_blank">
{{project.title}}</a>
{% endif %}
</p>
<p class="categoria">{{project.decription}}</p>
</div>
</div>
{% endfor %}
<!-- EndTrabajo -->
</div>
</div>
</section>
{% endblock %}
<!-- footer -->
{% block footer %}
<footer>
{% block contacto %}
<section class="contacto" id="contacto">
<div class="contenedor">
<h3 class="titulo">Contacto</h3>
<!-- Formulario -->
{% if 'ok' in request.GET %}
<p>
<span class="alert success">Su mensaje se ha enviado correctamente.
En breve nos pondremos en contacto con vuestra persona.</span>
</p>
{% endif %}
{% if 'fail' in request.GET %}
<p>
<span class="alert danger">Opp's hubo un error al enviar su mensaje.
Vuelva a intentarlo.</span>
</p>
{% endif %}
<form id="formulario" class="formulario" method='POST'>
{% csrf_token %}
{{form.name}}
{{form.name.errors}}
{{form.email}}
{{form.email.errors}}
{{form.content}}
{{form.content.errors}}
<ul id="error" class="error"></ul>
<input class="boton" name="submit" type="submit" value="Enviar"/>
</form>
<!--EndFormulario-->
</div>
</section>
{% endblock %}
<div class="redes-sociales-libres">
<div class="contenedor">
{% if LINK_GNUSOCIAL %}
<a class="gnusocial" href="{{LINK_GNUSOCIAL}}" rel="noopener noreferrer" target="_blank"><i class="icon-gnusocial"></i></a>
{% endif %}
{% if LINK_DIASPORA %}
<a class="diaspora" href="{{LINK_DIASPORA}}" rel="noopener noreferrer" target="_blank"><i class="icon-diaspora"></i></a>
{% endif %}
{% if LINK_MEDIAGOBLIN %}
<a class="mediagoblin" href="{{LINK_MEDIAGOBLIN}}" rel="noopener noreferrer" target="_blank"><i class="icon-mediagoblin"></i></a>
{% endif %}
{% if LINK_GITLAB %}
<a class="gitlab" href="{{LINK_GITLAB}}" rel="noopener noreferrer" target="_blank"><i class="icon-gitlab"></i></a>
{% endif %}
{% if LINK_NOTABUG %}
<a class="notabug" href="{{LINK_NOTABUG}}" rel="noopener noreferrer" target="_blank"><i class="icon-notabug"></i></a>
{% endif %}
</div>
</div>
<div class="copyleft">
<p>Copyleft <i class="icon-copyleft"></i> 2018 - Heckyel
<a rel="license noopener noreferrer" href="https://www.gnu.org/licenses/agpl-3.0.html" target="_blank">
<abbr title="GNU Affero General Public License version 3">GNU AGPLv3+</abbr></a> | <a rel="noopener noreferrer" href="https://notabug.org/heckyel/personal-site" target="_blank">source code</a>
<a hidden href="{% static 'core/librejs.html' %}" data-jslicense="1" rel="license">Información de licencias de JavaScript.</a>
</p>
</div>
</footer>
{% endblock %}

3
project/tests.py Normal file
View File

@@ -0,0 +1,3 @@
from django.test import TestCase
# Create your tests here.

6
project/urls.py Normal file
View File

@@ -0,0 +1,6 @@
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name="home"),
]

37
project/views.py Normal file
View File

@@ -0,0 +1,37 @@
from django.shortcuts import render, redirect
from django.urls import reverse
from django.core.mail import EmailMessage
from .models import Project
from .forms import ContactForm
def home(request):
projects = Project.objects.all()
# Form
contact_form = ContactForm()
if request.method == "POST":
contact_form = ContactForm(data=request.POST)
if contact_form.is_valid():
name = request.POST.get('name', '')
email = request.POST.get('email', '')
content = request.POST.get('content', '')
# Send Email
msg = EmailMessage(
"Personal-Site: Nuevo mensaje",
"De {} <{}>\n\nEscribió:\n\n{}".format(name, email, content),
"noreply@heckyel.ga",
["heckyel@riseup.net"],
reply_to=[email],
)
try:
msg.send(fail_silently=False)
# ok
return redirect(reverse('home')+"?ok")
except:
# Fail
return redirect(reverse('home')+"?fail")
# EndForm
return render(request, 'trabajo/index.html',
{'projects': projects, 'form': contact_form})