diff --git a/mural/migrations/0005_mural_edited.py b/mural/migrations/0005_mural_edited.py new file mode 100644 index 0000000..9d44a83 --- /dev/null +++ b/mural/migrations/0005_mural_edited.py @@ -0,0 +1,20 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.10 on 2017-02-06 21:12 +from __future__ import unicode_literals + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('mural', '0004_auto_20170206_1348'), + ] + + operations = [ + migrations.AddField( + model_name='mural', + name='edited', + field=models.BooleanField(default=False, verbose_name='Edited'), + ), + ] diff --git a/mural/models.py b/mural/models.py index 8d20c3a..c803c91 100644 --- a/mural/models.py +++ b/mural/models.py @@ -3,6 +3,8 @@ from django.core import validators from django.core.exceptions import ValidationError from django.utils.translation import ugettext_lazy as _ +from topics.decorators import always_as_child + from categories.models import Category from subjects.models import Subject from topics.models import KnowsChild, Resource @@ -22,17 +24,31 @@ class Mural(KnowsChild): user = models.ForeignKey(User, verbose_name = _('User'), related_name = "post_user", null = True) create_date = models.DateTimeField(_('Create Date'), auto_now_add = True) last_update = models.DateTimeField(_('Last Update'), auto_now = True) + edited = models.BooleanField(_('Edited'), default = False) + + @always_as_child + def update_link(self): + pass class GeneralPost(Mural): space = models.IntegerField(_('Space'), default = 0, blank = True) + def update_link(self): + return "mural:update_general" + class CategoryPost(Mural): space = models.ForeignKey(Category, verbose_name = ('Category'), related_name = 'post_category') + def update_link(self): + return "" + class SubjectPost(Mural): space = models.ForeignKey(Subject, verbose_name = _('Subject'), related_name = 'post_subject') resource = models.ForeignKey(Resource, verbose_name = _('Resource'), related_name = 'post_resource', null = True) + def update_link(self): + return "" + class Comment(models.Model): comment = models.TextField(_('Comment'), blank = True) image = models.ImageField(verbose_name = _('Image'), null=True, blank = True, upload_to = 'posts/comments/', validators = [validate_img_extension]) @@ -41,12 +57,18 @@ class Comment(models.Model): create_date = models.DateTimeField(_('Create Date'), auto_now_add = True) last_update = models.DateTimeField(_('Last Update'), auto_now = True) +""" + Model to handle posts visualizations +""" class MuralVisualizations(models.Model): viewed = models.BooleanField(_('Viewed'), default = False) post = models.ForeignKey(Mural, verbose_name = _('Post'), related_name = 'visualization_post', null = True) comment = models.ForeignKey(Comment, verbose_name = _('Comment'), related_name = 'visualization_comment', null = True) user = models.ForeignKey(User, verbose_name = _('User'), related_name = "visualization_user", null = True) +""" + Model to handle users favorite posts +""" class MuralFavorites(models.Model): post = models.ForeignKey(Mural, verbose_name = _('Post'), related_name = 'favorites_post', null = True) user = models.ForeignKey(User, verbose_name = _('User'), related_name = "favorites_user", null = True) \ No newline at end of file diff --git a/mural/templates/mural/_view.html b/mural/templates/mural/_view.html index 326a44b..2b0008c 100644 --- a/mural/templates/mural/_view.html +++ b/mural/templates/mural/_view.html @@ -1,6 +1,6 @@ {% load i18n mural_filters %} -
- {% trans 'In' %} {{ post.last_update }} + {% trans 'In' %} {{ post.last_update }} {{ post|is_edited }}
{% autoescape off %} diff --git a/mural/templates/mural/list.html b/mural/templates/mural/list.html index 653d414..e169203 100644 --- a/mural/templates/mural/list.html +++ b/mural/templates/mural/list.html @@ -65,11 +65,11 @@ $('#post-modal-form').modal('show'); } - }) + }); }); }); - function setPostFormSubmit() { + function setPostFormSubmit(post = "") { var frm = $('#post-form'); frm.submit(function () { @@ -82,9 +82,17 @@ dataType: "json", async: false, success: function (data) { - $('.posts').prepend(data.view); + if (post != "") { + var old = $("#post-" + post); + + old.before(data.view); + + old.remove(); + } else { + $('.posts').prepend(data.view); - $('.no-subjects').attr('style', 'display:none'); + $('.no-subjects').attr('style', 'display:none'); + } $('#post-modal-form').modal('hide'); @@ -92,7 +100,7 @@ }, error: function(data) { $("#post-modal-form").html(data.responseText); - setPostFormSubmit(); + setPostFormSubmit(post); }, cache: false, contentType: false, @@ -123,7 +131,25 @@ btn.attr('data-original-title', response.label); } }); + } + + function editPost(btn) { + var url = btn.data('url'); + var post = btn.data('post'); + + console.log(url); + console.log(post); + $.ajax({ + url: url, + success: function (data) { + $('#post-modal-form').html(data); + + setPostFormSubmit(post); + + $('#post-modal-form').modal('show'); + } + }); } {% endblock %} \ No newline at end of file diff --git a/mural/templatetags/mural_filters.py b/mural/templatetags/mural_filters.py index 5b58394..5a67272 100644 --- a/mural/templatetags/mural_filters.py +++ b/mural/templatetags/mural_filters.py @@ -5,6 +5,13 @@ from mural.models import MuralFavorites register = template.Library() +@register.filter(name = 'is_edited') +def is_edited(post): + if post.edited: + return _("(Edited)") + + return "" + @register.filter(name = 'action_icon') def action_icon(action): if action == "comment": diff --git a/mural/urls.py b/mural/urls.py index 58efae5..625f347 100644 --- a/mural/urls.py +++ b/mural/urls.py @@ -4,6 +4,7 @@ from . import views urlpatterns = [ url(r'^$', views.GeneralIndex.as_view(), name='manage_general'), url(r'^create_gen/$', views.GeneralCreate.as_view(), name='create_general'), - url(r'^render_post/([\w_-]+)/$', views.render_gen_post, name='render_post_general'), + url(r'^update_gen/(?P