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()
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:
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
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:
"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)}
"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),
])}