def smart_time(date): """ Cover for ru_strftime from pytils. Don't show needless part of time string """ now = timezone.now() today = now.replace(hour=0, minute=0, second=0) if date > now - datetime.timedelta(hours=2) and is_language('ru'): # from 2 hours ago to now return dt.distance_of_time_in_words(date, 1, now) elif date > today: # from start of today to 2 hours ago format = u'%H:%M' elif date > today - datetime.timedelta(days=1): # yesterday format = _('yesterday') + u', %H:%M' elif date > today - datetime.timedelta(days=2): # the day before yesterday format = _('day before yesterday') + u', %H:%M' elif date > today.replace(day=1, month=1): # this year format = u'%d %B, %H:%M' else: format = u'%d %B %Y, %H:%M' if is_language('ru'): return ru_strftime(date, format) else: return strftime(date, format)
def get(self, request, *args, **kwargs): ct = ContentType.objects.get_for_model(MODELS_MAPPINGS[kwargs['model']]) try: ct.get_object_for_this_type(pk=kwargs['object_id']) except ObjectDoesNotExist: raise ErrorResponse(status.HTTP_404_NOT_FOUND) queryset = Comment.objects.filter(content_type=ct, object_id=kwargs['object_id']).select_related('user') \ .order_by('tree_id', 'created') return [{ 'id': x.id, 'created': x.created, 'created_readable': ru_strftime(x.created, u'%d %B в %H:%M'), 'content': markdown.markdown(x.content), 'depth': x.depth, 'user': { 'id': x.user.id, 'username': x.user.username, } } for x in queryset]