]> git.parisson.com Git - mezzo.git/commitdiff
Add activity filters, filter published articles (fix #344), goto django 1.9.11
authorGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Mon, 7 Nov 2016 09:45:32 +0000 (10:45 +0100)
committerGuillaume Pellerin <guillaume.pellerin@ircam.fr>
Mon, 7 Nov 2016 09:45:32 +0000 (10:45 +0100)
app/locale/fr/LC_MESSAGES/django.po
app/organization/core/templatetags/organization_tags.py
app/organization/magazine/views.py
app/organization/network/models.py
app/templates/pages/teampage.html
requirements.txt

index 064769148f48fe3ceba5b45083293e15c5b417d8..6fd20e7504a2924457eb494bbefa6060326a23bc 100644 (file)
@@ -668,7 +668,7 @@ msgstr "grade de l'activité"
 
 #: organization/network/models.py:328
 msgid "activity framework"
-msgstr " cadre de l'activité"
+msgstr "corps de l'activité"
 
 #: organization/network/models.py:334
 msgid "activity function"
index 0fe1784f3bbf2e80c498a4e65d55741ecaa4b4af..278ca8c0c05dbfb7d9dee5b6d2e93d5939f27f67 100644 (file)
@@ -115,12 +115,6 @@ def in_category(objects, category):
 def sub_topics(topic):
     return ProjectTopic.objects.filter(parent=topic)
 
-
-@register.filter
-def classname(obj):
-    return obj.__class__.__name__
-
-
 @register.filter
 def classname(obj):
     return obj.__class__.__name__
@@ -135,3 +129,15 @@ def app_label_short(obj):
     else :
         app_label_short = app_label
     return app_label_short
+
+@register.as_tag
+def activity_statuses(*args):
+    return ActivityStatus.objects.filter(display=True)
+
+@register.filter
+def get_team_persons(status, team):
+    persons = []
+    for activity in status.activities.filter(teams__in=[team]):
+        if not activity.person in persons:
+            persons.append(activity.person)
+    return persons
index a1b892bfaadf23684a67c83c3bf4fcbd04962742..d8a1b2b9e4db2d45e9745aa0b5e6f43e9866cc19 100644 (file)
@@ -25,6 +25,10 @@ class ArticleDetailView(SlugMixin, DetailView):
     template_name='magazine/article/article_detail.html'
     context_object_name = 'article'
 
+    def get_object(self, **kwargs):
+        articles = self.model.objects.published(for_user=self.request.user).select_related()
+        return get_object_or_404(articles, slug=kwargs['slug'])
+
     def get_context_data(self, **kwargs):
         context = super(ArticleDetailView, self).get_context_data(**kwargs)
 
@@ -58,6 +62,9 @@ class ArticleListView(SlugMixin, ListView):
     template_name='magazine/article/article_list.html'
     context_object_name = 'article'
 
+    def get_queryset(self, **kwargs):
+        return self.model.objects.published(for_user=self.request.user).select_related()
+
     def get_context_data(self, **kwargs):
         context = super(ArticleListView, self).get_context_data(**kwargs)
         return context
index 5232ea0585370f1ed055b2f9d22d7d5302747f20..647b95f3420a2ff6d158de9f85eb80d5b34486c0 100644 (file)
@@ -313,8 +313,12 @@ class PersonListBlockInline(models.Model):
 
 class ActivityStatus(Named):
 
+    order = models.IntegerField(_('order number'), default=100)
+    display = models.BooleanField(_('display on team page'), blank=True, default=False)
+
     class Meta:
         verbose_name = _('activity status')
+        ordering = ['order']
 
 
 class ActivityGrade(Named):
@@ -383,7 +387,7 @@ class PersonActivity(Period):
     person = models.ForeignKey('Person', verbose_name=_('person'), related_name='activities')
 
     weeks = models.IntegerField(_('number of weeks'), blank=True, null=True)
-    status = models.ForeignKey(ActivityStatus, verbose_name=_('status'), blank=True, null=True, on_delete=models.SET_NULL)
+    status = models.ForeignKey(ActivityStatus, verbose_name=_('status'), blank=True, null=True, related_name='activities', on_delete=models.SET_NULL)
     is_permanent = models.BooleanField(_('permanent'), default=False)
     framework = models.ForeignKey(ActivityFramework, verbose_name=_('framework'), blank=True, null=True, on_delete=models.SET_NULL)
     grade = models.ForeignKey(ActivityGrade, verbose_name=_('grade'), blank=True, null=True, on_delete=models.SET_NULL)
index 3dfd6d33744a950f49661870776b1de418f35321..48882be5d8efa4c4441e2fc55c0c60dd197847ac 100644 (file)
     {% endwith %}
 {% endblock %}
 
+{% block page_person_list %}
+<div class="white-bg pb2">
+  <hr class="mt0" />
+    <div class="container">
+      {% activity_statuses as statuses %}
+        {% for status in statuses %}
+            {{ status.name }} :
+            {% for person in status|get_team_persons:page.teampage.team %}
+                {{ person.title }}{% if not forloop.last %}, {% endif %}
+            {% endfor %}
+            <br/>
+        {% endfor %}
+    </div>
+</div>
+{% endblock %}
+
+
 {% block related_project %}
     {% if page.teampage.team.leader_projects.all or page.teampage.team.partner_projects.all %}
         <div class="white-bg pb2">
index 0bd39c1fc4226daa7d55f91dbf18763799cfcc85..3d0c38ffececcd8d62861e1847f2012bd26d4377 100644 (file)
@@ -5,7 +5,7 @@ mysqlclient
 psycopg2
 pyquery
 humanize
-Django==1.9.10
+Django==1.9.11
 mezzanine==4.2.2
 django-modeltranslation
 django-meta