]> git.0d.be Git - earwig.git/commitdiff
manager: add individual page for channels
authorFrédéric Péters <fpeters@0d.be>
Sun, 2 Sep 2018 11:49:24 +0000 (13:49 +0200)
committerFrédéric Péters <fpeters@0d.be>
Sun, 2 Sep 2018 12:09:43 +0000 (14:09 +0200)
earwig/manager/static/css/manager.scss
earwig/manager/templates/earwig/manager_channel.html [new file with mode: 0644]
earwig/manager/templates/earwig/manager_channels.html
earwig/manager/templates/earwig/manager_home.html
earwig/manager/templates/earwig/manager_sound.html
earwig/manager/urls.py
earwig/manager/views.py

index 18eb56a54b05dc7e0f976f7fe3f992c3d7dfa043..78ff34c1c1860acf8550d3e6695e14ee7bfa9e65 100644 (file)
@@ -20,3 +20,9 @@ table.sounds {
                max-width: 80ex;
        }
 }
+
+ul.channels-list {
+       span.count {
+               opacity: 0.5;
+       }
+}
diff --git a/earwig/manager/templates/earwig/manager_channel.html b/earwig/manager/templates/earwig/manager_channel.html
new file mode 100644 (file)
index 0000000..2e9f722
--- /dev/null
@@ -0,0 +1,23 @@
+{% extends "earwig/manager_home.html" %}
+{% load i18n %}
+
+{% block appbar %}
+<h2>{{ object }}</h2>
+{% endblock %}
+
+{% block content %}
+
+<div class="description">{{ object.subtitle }}</div>
+
+<ul>
+  <li>{% trans "Address:" %} <a href="{{ object.channel_url }}">{{ object.channel_url }}</a></li>
+  <li>{% trans "Feed Address:" %} <a href="{{ object.feed_url }}">{{ object.feed_url }}</a></li>
+  <li>{% trans "Policy:" %}
+      {% if object.policy == '' %}{% trans "Moderate" %}
+      {% else %}{% trans "Autopublish" %}{% endif %}</li>
+  </li>
+</ul>
+
+<h3>{% trans "Sounds" %}</h3>
+{{ block.super }}
+{% endblock %}
index 29274a65a95a6376e9fcc4a6806b656c3b056f54..3c888cc2b6682d6f01d7a9fb5d1b89576f2b2117 100644 (file)
 {% endblock %}
 
 {% block content %}
-<ul class="objects-list single-links">
+<ul class="objects-list single-links channels-list">
  {% for channel in object_list %}
  <li>
-  <a class="external-link" href="{{ channel.channel_url }}">{{ channel.title }}</a>
+  <a href="{% url 'earwig-channel-detail' pk=channel.pk %}">{{ channel.title }}</a>
   <a rel="popup" class="delete" href="{% url 'earwig-channel-delete' pk=channel.pk %}">{% trans "remove" %}</a>
  </li>
  {% endfor %}
index 01c0607ba1644fcddfcbfa89945eefc24949268f..e9900af9c22157b6d669a8f4ad0ddc5c8fa004d7 100644 (file)
@@ -37,7 +37,7 @@
 <tbody>
  {% for sound in object_list %}
  <tr>
-   <td><a class="external-link" href="{{ sound.channel.channel_url }}">{{ sound.channel.title }}</a></td>
+   <td><a href="{% url 'earwig-channel-detail' pk=sound.channel.pk %}">{{ sound.channel.title }}</a></td>
    <td><a class="title" href="{% url 'earwig-sound-detail' pk=sound.pk %}">{{ sound.title }}</a>
        {% if sound.description %}<span class="description">{{ sound.description|striptags|truncatewords:40|safe }}</span>{% endif %}
    </td>
    <td>{{ sound.creation_timestamp }}</td>
    <td>
      {% if sound.can_publish %}
-       <a href="{% url 'earwig-sound-publish' pk=sound.pk %}?next=home">{% trans "Publish" %}</a> /
+       <a href="{% url 'earwig-sound-publish' pk=sound.pk %}?next={{next}}">{% trans "Publish" %}</a> /
      {% endif %}
      {% if sound.can_reject %}
-       <a href="{% url 'earwig-sound-reject' pk=sound.pk %}?next=home">{% trans "Reject" %}</a> /
+       <a href="{% url 'earwig-sound-reject' pk=sound.pk %}?next={{next}}">{% trans "Reject" %}</a> /
      {% endif %}
      {% if sound.can_unpublish %}
-       <a href="{% url 'earwig-sound-unpublish' pk=sound.pk %}">{% trans "Unpublish" %}</a>
+     <a href="{% url 'earwig-sound-unpublish' pk=sound.pk %}?next={{next}}">{% trans "Unpublish" %}</a>
      {% endif %}
  </tr>
  {% empty %}
index 3fe7050c90078b8fdbb806f7646b2869f12b2042..24ff878a91d861750947e527552d3dba1c229464 100644 (file)
 </span>
 {% endblock %}
 
+{% block breadcrumb %}
+{{ block.super }}
+<a href="{% url 'earwig-channel-detail' pk=object.channel.pk %}">{{ object.channel }}</a>
+{% endblock %}
+
 {% block content %}
 <ul>
   <li>{% trans "Address:" %} <a href="{{ object.page_url }}">{{ object.page_url }}</a></li>
index e0445da4cb2adfb82f81b900749dfbd500b148b6..bd7edfae6c9552c7c5f528793f66f4d6fc80fa6f 100644 (file)
@@ -22,6 +22,7 @@ urlpatterns = [
     url(r'^$', views.homepage, name='earwig-manager-homepage'),
     url(r'^channels/$', views.channels, name='earwig-channels'),
     url(r'^channels/add/$', views.channel_add, name='earwig-channel-add'),
+    url(r'^channels/(?P<pk>\d+)/$', views.channel_detail, name='earwig-channel-detail'),
     url(r'^channels/(?P<pk>\d+)/delete/$', views.channel_delete, name='earwig-channel-delete'),
     url(r'^sound/(?P<pk>\d+)/$', views.sound_detail, name='earwig-sound-detail'),
     url(r'^sound/(?P<pk>\d+)/publish/$', views.sound_publish, name='earwig-sound-publish'),
index ff70b40fbd94b8cd4421048e4dbca24176dd8faa..dd1f63674894fe172b054a96fca56b87d26fe4cb 100644 (file)
@@ -48,6 +48,7 @@ class Homepage(ListView):
     def get_context_data(self, **kwargs):
         context = super(Homepage, self).get_context_data(**kwargs)
         context['statuses'] = STATUSES
+        context['next'] = reverse_lazy('earwig-manager-homepage')
         return context
 
 homepage = Homepage.as_view()
@@ -61,6 +62,36 @@ class Channels(ListView):
 channels = Channels.as_view()
 
 
+class ChannelDetailView(DetailView):
+    model = Channel
+    template_name = 'earwig/manager_channel.html'
+
+    def get_sounds_queryset(self, **kwargs):
+        qs = self.get_object().sound_set.select_related()
+        if self.get_status_filter() != '_all':
+            qs = qs.filter(status=self.get_status_filter())
+        query = self.get_query_filter()
+        if query:
+            qs = qs.filter(Q(title__icontains=query) |
+                           Q(description__icontains=query))
+        return qs
+
+    def get_query_filter(self):
+        return self.request.GET.get('q') or ''
+
+    def get_status_filter(self):
+        return self.request.GET.get('q_status') or '_all'
+
+    def get_context_data(self, **kwargs):
+        context = super(ChannelDetailView, self).get_context_data()
+        context['object_list'] = self.get_sounds_queryset()
+        context['next'] = reverse_lazy('earwig-channel-detail', kwargs={'pk': self.get_object().pk})
+        context['statuses'] = STATUSES
+        return context
+
+channel_detail = ChannelDetailView.as_view()
+
+
 class ChannelAdd(CreateView):
     model = Channel
     fields = ('title', 'channel_url', 'feed_url', 'policy')
@@ -89,8 +120,8 @@ class SoundActionView(DetailView):
     model = Sound
 
     def get_success_url(self):
-        if self.request.GET.get('next') == 'home':
-            return reverse_lazy('earwig-manager-homepage')
+        if self.request.GET.get('next'):
+            return self.request.GET.get('next')
         return reverse_lazy('earwig-sound-detail', kwargs={'pk': self.get_object().pk})