Joanna Skrzeszewska has proposed merging lp:~jskrzeszewska/postorius/postorius 
into lp:postorius.

Requested reviews:
  Barry Warsaw (barry)

For more details, see:
https://code.launchpad.net/~jskrzeszewska/postorius/postorius/+merge/178413

Added page for rss settings.
-- 
https://code.launchpad.net/~jskrzeszewska/postorius/postorius/+merge/178413
Your team Mailman Coders is subscribed to branch lp:postorius.
=== modified file 'src/postorius/forms.py'
--- src/postorius/forms.py	2013-03-21 18:43:28 +0000
+++ src/postorius/forms.py	2013-08-03 05:48:27 +0000
@@ -183,6 +183,23 @@
             'required': _('Please enter an email address.'),
             'invalid': _('Please enter a valid email address.')})
 
+class ListRssFeed(FieldsetForm):
+
+    def __init__(self, result):
+        super(ListRssFeed, self).__init__()
+        self.enabled = result[u'enabled']
+        self.sizeLimit = result[u'sizeLimit']
+        self.fields['switched'] = forms.TypedChoiceField(
+            coerce=lambda x: x == 'True',
+            choices=((1, _('On')), (0, _('Off'))),
+            widget=forms.RadioSelect,
+            label=_('Switch a feed:'),
+            initial=self.enabled
+        )
+        self.fields['feed_entries'] = forms.DecimalField(
+            label=_('Number of entries for feed:'),
+            initial=self.sizeLimit
+        )
 
 class ListSettings(FieldsetForm):
     """Form fields dealing with the list settings.

=== modified file 'src/postorius/models.py'
--- src/postorius/models.py	2013-05-31 02:21:38 +0000
+++ src/postorius/models.py	2013-08-03 05:48:27 +0000
@@ -75,6 +75,20 @@
         except MailmanConnectionError, e:
             raise MailmanApiError(e)
 
+    def set(self, **kwargs):
+        try:
+            method = getattr(self.client, 'set_' + self.resource_name)
+            return method(**kwargs)
+        except AttributeError, e:
+            raise MailmanApiError(e)
+        except HTTPError, e:
+            if e.code == 404:
+                raise Mailman404Error
+            else:
+                raise
+        except MailmanConnectionError, e:
+            raise MailmanApiError(e)
+
     def get_or_404(self, **kwargs):
         """Similar to `self.get` but raises standard Django 404 error.
         """

=== added file 'src/postorius/templates/postorius/lists/rss_xml_template.html'
--- src/postorius/templates/postorius/lists/rss_xml_template.html	1970-01-01 00:00:00 +0000
+++ src/postorius/templates/postorius/lists/rss_xml_template.html	2013-08-03 05:48:27 +0000
@@ -0,0 +1,1 @@
+{{ xml_file_content|safe }}

=== added file 'src/postorius/templates/postorius/lists/rssfeed.html'
--- src/postorius/templates/postorius/lists/rssfeed.html	1970-01-01 00:00:00 +0000
+++ src/postorius/templates/postorius/lists/rssfeed.html	2013-08-03 05:48:27 +0000
@@ -0,0 +1,23 @@
+{% extends extend_template %}
+{% load url from future %}
+{% load i18n %}
+{% load nav_helpers %}
+
+{% block main %}
+    {% list_nav 'list_rssfeed' 'RSS Feed' %}
+    <table class="well">
+    <form action="{% url 'list_rssfeed' list.fqdn_listname %}" method="post" class="well"> {% csrf_token %}
+        {% if result.enabled %}
+            <tr><td>RSS feed link: <br /></td><td><a href="./getfeed">RSS link</a></td></tr>
+        {% endif %}
+        {% for field in form %}
+        <tr><td>
+            {{ field.label_tag }} <br />
+        </td><td>{{ field }}</td></tr>
+        {% endfor %}
+        <tr><td colspan="2">
+            <button class="btn btn-primary" type="submit">{%trans "Save changes" %}</button>
+        </td></tr>
+    </form>
+    </table>
+{% endblock main %}

=== modified file 'src/postorius/templates/postorius/menu/list_nav.html'
--- src/postorius/templates/postorius/menu/list_nav.html	2012-12-15 21:19:58 +0000
+++ src/postorius/templates/postorius/menu/list_nav.html	2013-08-03 05:48:27 +0000
@@ -22,6 +22,7 @@
         {% if user.is_superuser or user.is_list_owner %}
             <li class="mm_nav_item"><a class="{% nav_active_class current 'list_delete' %}" href="{% url 'list_delete' list.fqdn_listname %}">{% trans "Delete List" %}</a></li>
         {% endif %}
+        <li class="mm_nav_item"><a class="{% nav_active_class current 'list_rssfeed' %}" href="{% url 'list_rssfeed' list.fqdn_listname %}">{% trans "RSS Feed" %}</a></li>
     </ul>
     {% endif %}
 </div>

=== modified file 'src/postorius/urls.py'
--- src/postorius/urls.py	2013-07-05 11:05:45 +0000
+++ src/postorius/urls.py	2013-08-03 05:48:27 +0000
@@ -80,6 +80,46 @@
     # /lists/
     url(r'^lists/$', 'list_index', name='list_index'),
     url(r'^lists/new/$', 'list_new', name='list_new'),
+<<<<<<< TREE
+=======
+    url(r'^lists/(?P<fqdn_listname>[^/]+)/members/(?P<page>\d+)/$',
+        ListMembersView.as_view(), name='list_members_paged'),
+    url(r'^lists/(?P<fqdn_listname>[^/]+)/members/$',
+        ListMembersView.as_view(), name='list_members'),
+    url(r'^lists/(?P<fqdn_listname>[^/]+)/metrics$',
+        ListMetricsView.as_view(), name='list_metrics'),
+    url(r'^lists/(?P<fqdn_listname>[^/]+)/$',
+        ListSummaryView.as_view(), name='list_summary'),
+    url(r'^lists/(?P<fqdn_listname>[^/]+)/subscribe$',
+        ListSubsribeView.as_view(), name='list_subscribe'),
+    url(r'^lists/(?P<fqdn_listname>[^/]+)/rssfeed$',
+        ListFeedView.as_view(), name='list_rssfeed'),
+    url(r'^lists/(?P<fqdn_listname>[^/]+)/getfeed$',
+        ListFeedXmlView.as_view(), name='list_getfeed'),
+    url(r'^lists/(?P<fqdn_listname>[^/]+)/unsubscribe/(?P<email>[^/]+)$',
+        ListUnsubscribeView.as_view(), name='list_unsubscribe'),
+    url(r'^lists/(?P<fqdn_listname>[^/]+)/subscriptions$',
+        'list_subscriptions', name='list_subscriptions'),
+    url(r'^lists/(?P<fqdn_listname>[^/]+)/mass_subscribe/$',
+        ListMassSubsribeView.as_view(), name='mass_subscribe'),
+    url(r'^lists/(?P<fqdn_listname>[^/]+)/delete$',
+        'list_delete', name='list_delete'),
+    url(r'^lists/(?P<fqdn_listname>[^/]+)/held_messages/(?P<msg_id>[^/]+)/'
+        'accept$', 'accept_held_message', name='accept_held_message'),
+    url(r'^lists/(?P<fqdn_listname>[^/]+)/held_messages/(?P<msg_id>[^/]+)/'
+        'discard$', 'discard_held_message', name='discard_held_message'),
+    url(r'^lists/(?P<fqdn_listname>[^/]+)/held_messages/(?P<msg_id>[^/]+)/'
+        'defer$', 'defer_held_message', name='defer_held_message'),
+    url(r'^lists/(?P<fqdn_listname>[^/]+)/held_messages/(?P<msg_id>[^/]+)/'
+        'reject$', 'reject_held_message', name='reject_held_message'),
+    url(r'^lists/(?P<fqdn_listname>[^/]+)/held_messages$',
+        'list_held_messages', name='list_held_messages'),
+    url(r'^user_settings/$', 'user_settings', kwargs={"tab": "user"},
+        name='user_settings'),
+    url(r'^lists/(?P<fqdn_listname>[^/]+)/settings/(?P<visible_section>[^/]+)?'
+        '(?:/(?P<visible_option>.*))?$', 'list_settings',
+        name='list_settings'),
+>>>>>>> MERGE-SOURCE
     url(r'^more_info/(?P<formid>[^/]+)/(?P<helpid>[^/]+)$', 'more_info_tab', name='more_info_tab'),
     url(r'^lists/(?P<fqdn_listname>[^/]+)/', include(per_list_urlpatterns)),   
     # /users/

=== modified file 'src/postorius/views/list.py'
--- src/postorius/views/list.py	2013-07-14 20:39:16 +0000
+++ src/postorius/views/list.py	2013-08-03 05:48:27 +0000
@@ -16,6 +16,7 @@
 # You should have received a copy of the GNU General Public License along with
 # Postorius.  If not, see <http://www.gnu.org/licenses/>.
 
+import os
 
 from django.contrib import messages
 from django.contrib.auth.decorators import (login_required,
@@ -29,7 +30,7 @@
 
 from postorius import utils
 from postorius.models import (Domain, List, MailmanUser,
-                              MailmanApiError)
+                              MailmanApiError, MailmanRestManager)
 from postorius.forms import *
 from postorius.auth.decorators import *
 from postorius.views.generic import MailingListView
@@ -116,6 +117,43 @@
              'subscribe_form': ListSubscribe(initial={'email': user_email})},
             context_instance=RequestContext(request))
 
+class ListFeedView(MailingListView):
+
+    def get(self, request, fqdn_listname, updated=False):
+        manager = MailmanRestManager('feed', 'feeds')
+        result = manager.get(fqdn_listname=fqdn_listname)
+        form = ListRssFeed(result)
+        return render_to_response(
+            'postorius/lists/rssfeed.html',
+            {'list': self.mailing_list,
+             'result': result,
+             'updated': updated,
+             'form': form},
+            context_instance=RequestContext(request))
+
+    def post(self, request, fqdn_listname):
+        manager = MailmanRestManager('feed', 'feeds')
+        is_enabled = request.POST.get('switched')
+        size_limit = request.POST.get('feed_entries')
+        result = manager.get(fqdn_listname=fqdn_listname)
+        form = ListRssFeed(result)
+        if form.is_valid:
+            messages.success(request, 'The RSS feed settings have been updated')
+        manager.set(fqdn_listname=fqdn_listname, is_enabled=is_enabled, size_limit=size_limit)
+        return self.get(request, fqdn_listname, True)
+        
+class ListFeedXmlView(MailingListView):
+
+    def get(self, request, fqdn_listname):
+        dirPath = "/root/mailman/var/feeds"
+        fileName = fqdn_listname + ".xml"
+        filePath = os.path.abspath(os.path.join(dirPath, fileName))
+        with open(filePath, "r") as f:
+            xml_file_content = f.read()
+        return render_to_response(
+            'postorius/lists/rss_xml_template.html',
+            {'xml_file_content': xml_file_content},
+            context_instance=RequestContext(request))
 
 class ListSubsribeView(MailingListView):
     """Subscribe a mailing list."""

_______________________________________________
Mailman-coders mailing list
[email protected]
http://mail.python.org/mailman/listinfo/mailman-coders

Reply via email to