Skip to content
This repository has been archived by the owner on Jun 29, 2020. It is now read-only.

Commit

Permalink
Merge pull request #1114 from kawazrepos/revert-activity
Browse files Browse the repository at this point in the history
Revert "Merge pull request #1017 from kawazrepos/remove-history"
  • Loading branch information
giginet committed Nov 23, 2016
2 parents 3d3aa8f + 4524bc7 commit eab2219
Show file tree
Hide file tree
Showing 5 changed files with 21 additions and 11 deletions.
1 change: 0 additions & 1 deletion src/kawaz/core/activities/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
from django.views.generic.list import ListView
from activities.models import Activity


class ActivityListView(ListView):
paginate_by = 10
model = Activity
Expand Down
21 changes: 13 additions & 8 deletions src/lib/django-activities/activities/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@

import pickle
from django.db import models
from django.db.models import Max
from django.core import serializers
from django.contrib.contenttypes.models import ContentType
from django.contrib.contenttypes.fields import GenericForeignKey
from django.utils.translation import ugettext as _
Expand All @@ -23,14 +25,17 @@ def latests(self):
"""
Return latest activities of each particular content_objects
"""
# find created_at list of latest activities of each particular
# content_objects
# it use 'pk' instead of 'created_at' to filter latest while
# - more than two activities which has same 'created_at' is possible
# - newer activity have grater pk
qs = super().get_queryset()
qs = qs.raw(
'SELECT * FROM '
'(SELECT * FROM activities_activity ORDER BY id DESC) AS A '
'GROUP BY content_type_id, object_id ORDER BY id DESC'
)
qs.count = lambda: len(list(qs))
return qs
qs = qs.values('content_type_id', 'object_id')
qs = qs.annotate(pk=Max('pk'))
pks = qs.values_list('pk', flat=True)
# return activities corresponding to the latests
return self.filter(pk__in=pks)

def get_for_model(self, model):
"""
Expand Down Expand Up @@ -65,7 +70,7 @@ class Activity(models.Model):
objects = ActivityManager()

class Meta:
ordering = ('-pk',)
ordering = ('-created_at',)
verbose_name = _('Activity')
verbose_name_plural = _('Activities')

Expand Down
4 changes: 3 additions & 1 deletion src/lib/django-activities/activities/tests/test_models.py
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,9 @@ def test_all(self):

def test_latests(self):
latests = Activity.objects.latests()
self.assertEqual(latests.count(), 6)
# the status of latest activity should be 'deleted'
for latest in latests:
self.assertEqual(latest.status, 'deleted')

def test_get_for_model(self):
qs = Activity.objects.get_for_model(ModelA)
Expand Down
4 changes: 4 additions & 0 deletions src/templates/activities/base.html
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,11 @@ <h3> {% block root %} {% endblock %}</h3>

<div class="activity-history">
{% block history %}
{# 自分自身と過去2つの計3件を更新履歴として表示する #}
{% render_activity activity %}
{% for previous_activity in activity.get_previous_activities|slice:":2" %}
{% render_activity previous_activity %}
{% endfor %}
{% endblock %}
</div>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ <h2>{% trans "Activities" %}</h2>
</div>
{% get_latest_activities as activities %}
{% include "activities/components/activity_container.html" with activities=activities|slice:":10" %}
{% if activities.count > 10 %}
{% if activities|length > 10 %}
<div class="text-center">
<a class="btn btn-default" href="{% url "activities_activity_list" %}?page=2&type=wall">{% trans "Read more" %} <span class="glyphicon glyphicon-chevron-right"></span></a>
</div>
Expand Down

0 comments on commit eab2219

Please sign in to comment.