X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/b0af42626632f8750ac9e88338be7e196bd4f91d..8132fc186eb0c5fd02c86828c3a4735754296d02:/apps/catalogue/templatetags/wall.py diff --git a/apps/catalogue/templatetags/wall.py b/apps/catalogue/templatetags/wall.py index 28671fb7..d000421a 100755 --- a/apps/catalogue/templatetags/wall.py +++ b/apps/catalogue/templatetags/wall.py @@ -7,7 +7,7 @@ from django.contrib.comments.models import Comment from django import template from django.utils.translation import ugettext as _ -from catalogue.models import Chunk, BookPublishRecord +from catalogue.models import Chunk, BookPublishRecord, Image, ImagePublishRecord register = template.Library() @@ -44,7 +44,7 @@ def changes_wall(user=None, max_len=None, day=None): for item in qs: tag = 'stage' if item.tags.count() else 'change' chunk = item.tree - w = WallItem(tag) + w = WallItem(tag) if user and item.author != user: w.header = _('Related edit') else: @@ -60,6 +60,36 @@ def changes_wall(user=None, max_len=None, day=None): yield w +def image_changes_wall(user=None, max_len=None, day=None): + qs = Image.change_model.objects.order_by('-created_at') + qs = qs.select_related('author', 'tree', 'tree__title') + if user is not None: + qs = qs.filter(Q(author=user) | Q(tree__user=user)) + if max_len is not None: + qs = qs[:max_len] + if day is not None: + next_day = day + timedelta(1) + qs = qs.filter(created_at__gte=day, created_at__lt=next_day) + for item in qs: + tag = 'stage' if item.tags.count() else 'change' + image = item.tree + w = WallItem(tag) + if user and item.author != user: + w.header = _('Related edit') + else: + w.header = _('Edit') + w.title = image.title + w.summary = item.description + w.url = reverse('wiki_img_editor', + args=[image.slug]) + '?diff=%d' % item.revision + w.timestamp = item.created_at + w.user = item.author + w.user_name = item.author_name + w.email = item.author_email + yield w + + + # TODO: marked for publishing @@ -84,6 +114,27 @@ def published_wall(user=None, max_len=None, day=None): yield w +def image_published_wall(user=None, max_len=None, day=None): + qs = ImagePublishRecord.objects.select_related('image__title') + if user: + # TODO: published my book + qs = qs.filter(Q(user=user)) + if max_len is not None: + qs = qs[:max_len] + if day is not None: + next_day = day + timedelta(1) + qs = qs.filter(timestamp__gte=day, timestamp__lt=next_day) + for item in qs: + w = WallItem('publish') + w.header = _('Publication') + w.title = item.image.title + w.timestamp = item.timestamp + w.url = item.image.get_absolute_url() + w.user = item.user + w.email = item.user.email + yield w + + def comments_wall(user=None, max_len=None, day=None): qs = Comment.objects.filter(is_public=True).select_related().order_by('-submit_date') if user: @@ -140,6 +191,8 @@ def wall(context, user=None, max_len=100): "wall": big_wall([ changes_wall(user, max_len), published_wall(user, max_len), + image_changes_wall(user, max_len), + image_published_wall(user, max_len), comments_wall(user, max_len), ], max_len)} @@ -151,5 +204,7 @@ def day_wall(context, day): "wall": big_wall([ changes_wall(day=day), published_wall(day=day), + image_changes_wall(day=day), + image_published_wall(day=day), comments_wall(day=day), ])}