From e252030e5a0fcacbaa776e8b0339de5f7ea8ac3c Mon Sep 17 00:00:00 2001 From: Fedeper Date: Fri, 6 Oct 2017 18:42:56 -0300 Subject: [PATCH] editar tareas --- tareas/forms.py | 4 +- tareas/models.py | 1 + tareas/static/css/tareas.css | 4 ++ tareas/templates/tareas/comentario.html | 55 +++++++++++++++------- tareas/templates/tareas/editar_tareas.html | 2 +- tareas/views.py | 49 ++++++++++++++----- topolino/urls.py | 3 +- 7 files changed, 84 insertions(+), 34 deletions(-) diff --git a/tareas/forms.py b/tareas/forms.py index 91b421a..beb2e56 100644 --- a/tareas/forms.py +++ b/tareas/forms.py @@ -5,7 +5,7 @@ from pagedown.widgets import PagedownWidget -# creo un formulario con el campo texto para mostrar +# creo un formulario que hereda de Comentario y agrega el atributo fields(campo texto) con el campo texto para mostrar class Comentarios(forms.ModelForm): class Meta: model= Comentario @@ -23,7 +23,7 @@ class ComentarioForm(forms.ModelForm): texto = forms.CharField(widget=PagedownWidget(show_preview=False)) class Meta: model = Comentario - fields=['texto'] + fields = ['texto'] class TareaForm(forms.ModelForm): descripcion = forms.CharField(widget=PagedownWidget(show_preview=False)) diff --git a/tareas/models.py b/tareas/models.py index c1ce69d..baf4441 100644 --- a/tareas/models.py +++ b/tareas/models.py @@ -38,6 +38,7 @@ def __str__(self): return self.nombre class Comentario(models.Model): + # relaciono un comentario a una tarea a traves de su clave foranea tarea = models.ForeignKey(Tarea, null=True) usuario = models.ForeignKey(User) fecha = models.DateTimeField(default= timezone.now) diff --git a/tareas/static/css/tareas.css b/tareas/static/css/tareas.css index 6e73eb1..dd62bf6 100644 --- a/tareas/static/css/tareas.css +++ b/tareas/static/css/tareas.css @@ -18,6 +18,10 @@ font-family: 'Lobster', cursive; } + h5 { + font-family: 'Lobster', cursive; text-align: right; + } + .date { float: right; color: #828282; diff --git a/tareas/templates/tareas/comentario.html b/tareas/templates/tareas/comentario.html index 55ba4db..4a173c4 100644 --- a/tareas/templates/tareas/comentario.html +++ b/tareas/templates/tareas/comentario.html @@ -24,9 +24,29 @@ {% endif %}

- {{tarea.usuario}} {{tarea.fecha_creacion}}
+ +
+ +
+ +
+
+ + +
+
+ +

Descripción

+ {{tarea.usuario}} +
{{tarea.fecha_creacion}}


+ {{tarea.descripcion|markdown}} EDITAR
+
+
+
+
+
+
- {{tarea.descripcion|markdown}}
{% block arriba %}
@@ -40,23 +60,22 @@

Comentarios

@@ -67,7 +86,7 @@

{{c.usuario}}

{% endblock %} -
+
@@ -75,8 +94,8 @@

{{c.usuario}}

{% endblock %} -{{block.super}} -
+ {{block.super}} +
{% endblock content %} diff --git a/tareas/templates/tareas/editar_tareas.html b/tareas/templates/tareas/editar_tareas.html index f81e6b7..14bd295 100644 --- a/tareas/templates/tareas/editar_tareas.html +++ b/tareas/templates/tareas/editar_tareas.html @@ -12,7 +12,7 @@ - + {% endblock content %} diff --git a/tareas/views.py b/tareas/views.py index e5ab517..c054652 100644 --- a/tareas/views.py +++ b/tareas/views.py @@ -9,11 +9,15 @@ def nombrecat(request): @login_required def comentario(request,id): - + # instancio un formulario de comentario en blanco form = ComentarioForm() + # trae un objeto tarea de cierto id tarea=get_object_or_404(Tarea, id=id) - form_estado= Tarea_estado(instance=tarea) + # formulario que permite cambiar estado de una tarea + form_estado = Tarea_estado(instance=tarea) + estado_viejo = tarea.estado + if request.method == "POST": if 'submit_estado' in request.POST: #import ipdb;ipdb.set_trace @@ -27,8 +31,8 @@ def comentario(request,id): usuario = request.user texto = "{} cambió el estado de {} a {}".format(usuario, estado_viejo, estado_nuevo) Comentario(usuario=usuario,texto=texto, tarea=tarea, manual=False).save() - return redirect(tarea) + else: form = ComentarioForm(request.POST) if form.is_valid(): @@ -77,18 +81,38 @@ def register(request): def home(request): return redirect('/login/') -def editar_tareas(request): - form= TareaForm() +def editar_tareas(request,id = None): + ''' + Esta vista sirve para crear un comentario nuevo en una tarea o modificar un comentario + ''' - if request.method == "POST": - form = TareaForm(request.POST) + if id: + # si la tarea tiene un id me trae esa tarea sino da error 404 + tarea = get_object_or_404(Tarea, id=id) + descripcion_vieja = tarea.descripcion + else: + tarea = None + + # instancio un objeto que permite modificar 'titulo', 'descripcion', 'categoria', 'prioridad' + form = TareaForm(instance = tarea) + + if request.method == "POST": + form = TareaForm(request.POST, instance = tarea) + print(request.POST) if form.is_valid(): - - tarea = form.save(commit=False) - tarea.usuario = request.user - tarea.save() - return redirect(tarea) + tarea = form.save(commit=False) + tarea.usuario = request.user + tarea.save() + descripcion_nueva = tarea.descripcion + + if descripcion_nueva != descripcion_vieja: + usuario = request.user + texto = "{} editó el comentario de {} a {}".format(usuario, descripcion_vieja, descripcion_nueva) + Comentario(usuario = usuario,texto = texto, tarea = tarea, manual = False).save() + + return redirect(tarea) + return render(request, "tareas/editar_tareas.html",{"form": form}) @@ -101,3 +125,4 @@ def buscar(request): tareas= Tareas.objects.filter(tarea=tarea).order_by('-fecha') return render(request, "tareas/tareas.html",{"form": form}) + \ No newline at end of file diff --git a/topolino/urls.py b/topolino/urls.py index f9e1dff..7a0a80f 100644 --- a/topolino/urls.py +++ b/topolino/urls.py @@ -26,6 +26,7 @@ url(r'^tareas/(?P[0-9]+)/$', views.comentario), url(r'^tareas/', views.lista_tareas), url(r'^registration/registro.html',views.register), - url(r'^editar_tareas/', views.editar_tareas), + url(r'^editar_tareas/(?P[0-9]+)/$', views.editar_tareas), + url(r'^editar_tareas/$', views.editar_tareas), url('^',include('django.contrib.auth.urls')), ]