]> git.0d.be Git - panikdb.git/commitdiff
add support for Topik objects
authorFrédéric Péters <fpeters@0d.be>
Mon, 25 May 2015 14:18:44 +0000 (16:18 +0200)
committerFrédéric Péters <fpeters@0d.be>
Mon, 25 May 2015 14:18:44 +0000 (16:18 +0200)
panikdb/customtags/templatetags/panikdbtags.py
panikdb/templates/combo/manager_base.html
panikdb/urls.py
panikdb/views.py

index 2a03ec813939d903468d03ce6f56fd7bc86f84a2..c5a85c2753b9b9e7c5ee452f212ef8be614214a3 100644 (file)
@@ -3,6 +3,7 @@ from django.conf import settings
 from django.core.urlresolvers import reverse
 
 from emissions.models import Emission, Episode, NewsItem, SoundFile, Focus
+from panikombo.models import Topik
 from combo.data.models import Page
 
 register = Library()
@@ -54,6 +55,8 @@ def has_focus(object):
         object_type = 'episode'
     elif isinstance(object, SoundFile):
         object_type = 'soundfile'
+    elif isinstance(object, Page):
+        object_type = 'page'
     else:
         return False
     try:
@@ -73,6 +76,8 @@ def unset_focus_url(object):
         object_type = 'episode'
     elif isinstance(object, SoundFile):
         object_type = 'soundfile'
+    elif isinstance(object, Page):
+        object_type = 'page'
     return reverse('focus-unset', kwargs={
         'object_type': object_type,
         'object_id': object.id})
@@ -88,6 +93,8 @@ def set_focus_url(object):
         object_type = 'episode'
     elif isinstance(object, SoundFile):
         object_type = 'soundfile'
+    elif isinstance(object, Page):
+        object_type = 'page'
     return reverse('focus-set', kwargs={
         'object_type': object_type,
         'object_id': object.id})
@@ -102,6 +109,12 @@ def can_focus(object):
         return True
     elif isinstance(object, SoundFile):
         return bool(object.format)
+    elif isinstance(object, Page):
+        try:
+            topik = Topik.objects.get(page=object)
+        except Topik.DoesNotExist:
+            return False
+        return bool(topik.image)
     return False
 
 
@@ -110,3 +123,16 @@ def as_duration(value):
     if not value:
         return '-'
     return '%s:%02d' % (value/60, value%60)
+
+
+@register.filter
+def is_page(obj):
+    return isinstance(obj, Page)
+
+@register.filter
+def has_topik(obj):
+    return Topik.objects.filter(page=obj).count() == 1
+
+@register.filter
+def topik_id(obj):
+    return Topik.objects.get(page=obj).id
index 73c77359e5ea62aaeca3547f052a91520c5d4ccb..057c5c5f0e20d99d84c60e158076cd371e5e70cd 100644 (file)
@@ -1,5 +1,5 @@
 {% extends "base.html" %}
-{% load static %}
+{% load static panikdbtags %}
 
 {% block extrascripts %}
 <script src="{% static "ckeditor/ckeditor/ckeditor.js" %}"></script>
 
 {% block more-user-links %}
 <a href="{% url 'combo-manager-homepage' %}">Pages</a>
+{% if object|is_page %}
+{% if object|has_topik %}
+  {% with object|topik_id as topik_id %}
+  <a rel="popup" href="{% url 'edit-topik' pk=topik_id %}">Options de Topik</a>
+  {% endwith %}
+{% else %}
+  <a href="{% url 'make-topik' page_pk=object.id %}">Transformer en Topik</a>
+{% endif %}
+{% endif %}
 {% endblock %}
 
 {% block bodyattr %}class="combo"{% endblock %}
index 7b215550eb6df7bdac34640cfb50dc6d3854d652..20ef2329f34f08abf3606991e5f891ce7b704265 100644 (file)
@@ -55,10 +55,16 @@ urlpatterns = patterns('',
     url(r'^focus/unset/(?P<object_type>[\w,-]+)/(?P<object_id>\d+)$',
         'panikdb.views.focus_unset', name='focus-unset'),
 
+    url(r'^cms/pages/(?P<page_pk>\w+)/make-topik$', 'panikdb.views.make_topik',
+        name='make-topik'),
+    url(r'^cms/pages/topik/(?P<pk>\w+)/edit-topik$', 'panikombo.views.topik_edit',
+        name='edit-topik'),
+
     url(r'^accounts/logout/', 'django.contrib.auth.views.logout_then_login', name='logout'),
     url(r'^accounts/', include('registration.backends.default.urls')),
 
     url(r'^combok/soundfiles/', 'panikombo.views.soundfiles'),
+    url(r'^combok/episodes/', 'panikombo.views.episodes'),
 
     url(r'^admin/', include(admin.site.urls)),
 )
index fba812bb12d3759ce44e6b27e8fa9aefab00de43..b7b57ec05e372c624f959293a00b350b8588628f 100644 (file)
@@ -7,9 +7,12 @@ from django.template import loader, Context
 from django.views.generic.base import TemplateView, RedirectView
 from django.views.generic.list import ListView
 from django.contrib import messages
+from django.shortcuts import redirect
 
 from emissions.models import *
 from emissions.utils import period_program
+from panikombo.models import Topik
+from combo.data.models import Page
 
 import emissions.views
 import newsletter.views
@@ -147,6 +150,16 @@ class FocusSetView(RedirectView):
                 'slug': soundfile.episode.slug,
                 'emission_slug': soundfile.episode.emission.slug,
                 })
+        if object_type == 'page':
+            page = Page.objects.get(id=object_id)
+            try:
+                f = Focus.objects.get(page=page)
+            except Focus.DoesNotExist:
+                f = Focus()
+            f.current = True
+            f.page = page
+            f.save()
+            return reverse('combo-manager-page-view', kwargs={'pk': object_id})
 
 focus_set = FocusSetView.as_view()
 
@@ -186,5 +199,17 @@ class FocusUnsetView(RedirectView):
                 'slug': soundfile.episode.slug,
                 'emission_slug': soundfile.episode.emission.slug,
                 })
+        if object_type == 'page':
+            focus = Focus.objects.get(page=object_id)
+            focus.current = False
+            focus.save()
+            return reverse('combo-manager-page-view', kwargs={'pk': object_id})
 
 focus_unset = FocusUnsetView.as_view()
+
+def make_topik(request, page_pk):
+    if Topik.objects.filter(page__id=page_pk).count():
+        raise Exception('page already associated to topik')
+    topik = Topik(page_id=page_pk)
+    topik.save()
+    return redirect('combo-manager-page-view', pk=page_pk)