changeset 204:4ef3a86b4b17

Tidy project administration pages headers + start group features selection
author Sylvain Beucler <beuc@beuc.net>
date Thu, 29 Jul 2010 22:04:45 +0200
parents 8d2449a167bb
children 93815ee7cef7
files savane/svmain/forms.py savane/svmain/models.py savane/svmain/templatetags/svtopmenu.py savane/svmain/urls.py savane/svmain/views.py templates/svmain/group_admin.html templates/svmain/group_admin_features.html templates/svmain/group_admin_info.html templates/svmain/group_admin_members.html templates/svmain/group_admin_members_add.html templates/svmain/group_detail.html
diffstat 11 files changed, 110 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/savane/svmain/forms.py
+++ b/savane/svmain/forms.py
@@ -24,3 +24,20 @@
     class Meta:
         model = svmain_models.SvGroupInfo
         fields = ('full_name', 'short_description', 'long_description', 'devel_status',)
+
+class GroupFeaturesForm(forms.ModelForm):
+    class Meta:
+        model = svmain_models.SvGroupInfo
+        fields = ('use_homepage', 'use_mail', 'use_news', 'use_download', 
+                  'use_extralink_documentation',
+                  'use_cvs', 'use_arch', 'use_svn', 'use_git', 'use_hg', 'use_bzr',
+                  'use_bugs', 'use_support', 'use_patch', 'use_task',
+                  
+                  'url_homepage', 'url_mail', 'url_download', 'url_extralink_documentation',
+                  'url_cvs', 'url_cvs_viewcvs', 'url_cvs_viewcvs_homepage',
+                  'url_arch', 'url_arch_viewcvs',
+                  'url_svn', 'url_svn_viewcvs',
+                  'url_git', 'url_git_viewcvs',
+                  'url_hg', 'url_hg_viewcvs',
+                  'url_bzr', 'url_bzr_viewcvs',
+                  'url_bugs', 'url_support', 'url_patch', 'url_task')
--- a/savane/svmain/models.py
+++ b/savane/svmain/models.py
@@ -408,8 +408,8 @@
     # Project "Features"
     use_homepage                = models.BooleanField(default=False)
     use_mail                    = models.BooleanField(default=False)
-    use_patch                   = models.BooleanField(default=False)
-    use_task                    = models.BooleanField(default=False)
+    use_download                = models.BooleanField(default=False)
+    use_extralink_documentation = models.BooleanField(default=False)
     use_cvs                     = models.BooleanField(default=False)
     use_arch                    = models.BooleanField(default=False)
     use_svn                     = models.BooleanField(default=False)
@@ -417,16 +417,16 @@
     use_hg                      = models.BooleanField(default=False)
     use_bzr                     = models.BooleanField(default=False)
     use_news                    = models.BooleanField(default=False)
+    use_bugs                    = models.BooleanField(default=False)
+    use_patch                   = models.BooleanField(default=False)
     use_support                 = models.BooleanField(default=False)
-    use_download                = models.BooleanField(default=False)
-    use_bugs                    = models.BooleanField(default=False)
-    use_extralink_documentation = models.BooleanField(default=False)
+    use_task                    = models.BooleanField(default=False)
 
     # blank means 'use default'
     url_homepage                = models.CharField(max_length=255, blank=True)
+    url_mail                    = models.CharField(max_length=255, blank=True)
     url_download                = models.CharField(max_length=255, blank=True)
-    url_support                 = models.CharField(max_length=255, blank=True)
-    url_mail                    = models.CharField(max_length=255, blank=True)
+    url_extralink_documentation = models.CharField(max_length=255, blank=True)
     url_cvs                     = models.CharField(max_length=255, blank=True)
     url_cvs_viewcvs             = models.CharField(max_length=255, blank=True)
     url_cvs_viewcvs_homepage    = models.CharField(max_length=255, blank=True)
@@ -441,9 +441,9 @@
     url_bzr                     = models.CharField(max_length=255, blank=True)
     url_bzr_viewcvs             = models.CharField(max_length=255, blank=True)
     url_bugs                    = models.CharField(max_length=255, blank=True)
+    url_patch                   = models.CharField(max_length=255, blank=True)
+    url_support                 = models.CharField(max_length=255, blank=True)
     url_task                    = models.CharField(max_length=255, blank=True)
-    url_patch                   = models.CharField(max_length=255, blank=True)
-    url_extralink_documentation = models.CharField(max_length=255, blank=True)
 
     # Admin override (unused)
     #dir_cvs = models.CharField(max_length=255)
--- a/savane/svmain/templatetags/svtopmenu.py
+++ b/savane/svmain/templatetags/svtopmenu.py
@@ -43,15 +43,21 @@
                    'href' : reverse('savane:svmain:group_detail', args=[group.name]),
                    'title': "Project Main Page at %s" % 'this website'}
         entry_home['children'] = []
-        entry_home['children'].append({'text' : _("Main"), 'href' : reverse('savane:svmain:group_detail', args=[group.name]) })
-        entry_home['children'].append({'text' : _("View Members"), 'href' : reverse('savane:svmain:group_memberlist', args=[group.name]) })
+        entry_home['children'].append({'text' : _("Main"),
+                                       'href' : reverse('savane:svmain:group_detail', args=[group.name]) })
+        entry_home['children'].append({'text' : _("View members"),
+                                       'href' : reverse('savane:svmain:group_memberlist', args=[group.name]) })
+        entry_home['children'].append({'text' : _("GPG keyring"),
+                                       'href' : reverse('savane:svmain:group_gpgkeyring', args=[group.name]) })
         if (svmain_models.Membership.is_admin(context['user'], group)):
             entry_home['children'].append({'separator' : True })
             entry_home['children'].append({'text' : _("Administer:"), 'strong': True,
                                            'href' : reverse('savane:svmain:group_admin', args=[group.name]) })
-            entry_home['children'].append({'text' : _("Edit Public Info"),
+            entry_home['children'].append({'text' : _("Edit public info"),
                                            'href' : reverse('savane:svmain:group_admin_info', args=[group.name]) })
-            entry_home['children'].append({'text' : _("Manage Members"),
+            entry_home['children'].append({'text' : _("Select features"),
+                                           'href' : reverse('savane:svmain:group_admin_features', args=[group.name]) })
+            entry_home['children'].append({'text' : _("Manage members"),
                                            'href' : reverse('savane:svmain:group_admin_members', args=[group.name]) })
 
         entry_test = {
--- a/savane/svmain/urls.py
+++ b/savane/svmain/urls.py
@@ -78,7 +78,6 @@
   url(r'^p/(?P<slug>[-\w]+)/$', object_detail,
       { 'queryset' : auth_models.Group.objects.all(),
         'slug_field' : 'name',
-        'extra_context' : { 'title' : 'Project summary' },
         'template_name' : 'svmain/group_detail.html',
         'template_object_name' : 'group', },
       name='group_detail'),
@@ -102,17 +101,19 @@
 )
 urlpatterns += decorated_patterns ('', only_project_admin,
   url(r'^p/(?P<slug>[-\w]+)/admin/$', views.group_admin,
-      { 'extra_context' : { 'title' : 'Administration Summary' }, },
       name='group_admin'),
   url(r'^p/(?P<slug>[-\w]+)/admin/info/$', views.group_admin_info,
       { 'post_save_redirect' : '../../',  # back to project page to see the changes
-        'extra_context' : { 'title' : 'Administration Summary: Editing Public Info' }, },
+        'extra_context' : { 'title' : 'Editing public info' }, },
       name='group_admin_info'),
+  url(r'^p/(?P<slug>[-\w]+)/admin/features/$', views.group_admin_features,
+      { 'extra_context' : { 'title' : 'Select features' }, },
+      name='group_admin_features'),
   url(r'^p/(?P<slug>[-\w]+)/admin/members/$', views.group_admin_members,
-      { 'extra_context' : { 'title' : 'Administration Summary: Manage Members' }, },
+      { 'extra_context' : { 'title' : 'Manage members' }, },
       name='group_admin_members'),
   url(r'^p/(?P<slug>[-\w]+)/admin/members/add/$', views.group_admin_members_add,
-      { 'extra_context' : { 'title' : 'Administration Summary: Manage Members' }, },
+      { 'extra_context' : { 'title' : 'Manage members' }, },
       name='group_admin_members_add'),
 )
 
--- a/savane/svmain/views.py
+++ b/savane/svmain/views.py
@@ -156,6 +156,33 @@
     context.update(extra_context)
     return context
 
+@render_to("svmain/group_admin_features.html", mimetype=None)
+def group_admin_features(request, slug, extra_context={}):
+    group = get_object_or_404(auth_models.Group, name=slug)
+    object = group.svgroupinfo
+
+    form_class = svmain_forms.GroupFeaturesForm
+
+    if request.method == 'POST': # If the form has been submitted...
+        form = form_class(request.POST, instance=object) # A form bound to the POST data
+        if form.is_valid(): # All validation rules pass
+            # Process the data
+            object = form.save()
+            messages.success(request, u"%s saved." % capfirst(object._meta.verbose_name))
+            if post_save_redirect is None:
+                post_save_redirect = object.get_absolute_url()
+            return HttpResponseRedirect(post_save_redirect) # Redirect after POST
+    else:
+        form = form_class(instance=object) # An unbound form
+
+    context = {
+        'group' : group,
+        'form' : form,
+        }
+    context.update(extra_context)
+    return context
+    
+
 @render_to('svmain/group_admin_members.html', mimetype=None)
 def group_admin_members(request, slug, extra_context={}):
     group = get_object_or_404(auth_models.Group, name=slug)
--- a/templates/svmain/group_admin.html
+++ b/templates/svmain/group_admin.html
@@ -3,7 +3,7 @@
 {% load svtopmenu %}
 
 {% block title %}
-{{group.svgroupinfo.get_full_name_display}} - {{title}}
+{{group.svgroupinfo.get_full_name_display}} - {% trans "Administration summary" %}
 {% endblock %}
 
 {% block icon %}preferences{% endblock %}
new file mode 100644
--- /dev/null
+++ b/templates/svmain/group_admin_features.html
@@ -0,0 +1,33 @@
+{% extends "base.html" %}
+{% load i18n %}
+{% load svtopmenu %}
+
+{% block title %}
+{{group.svgroupinfo.get_full_name_display}} - {% trans "Administration summary" %}{% trans ": " %}{{title}}
+{% endblock %}
+
+{% block icon %}preferences{% endblock %}
+
+{% block topmenu %}
+  {% svtopmenu "group" %}
+{% endblock %}
+
+{% block content %}
+
+<form action="." method="POST">{% csrf_token %}
+<input type="hidden" name="next" value="{{next}}" />
+<table>
+{{ form.as_table }}
+</table>
+<p><input type="submit" value="{% trans "Submit" %}" /></p>
+</form>
+
+{% endblock %}
+
+{% comment %}
+Local Variables: **
+mode: django-html **
+tab-width: 4 **
+indent-tabs-mode: nil **
+End: **
+{% endcomment %}
--- a/templates/svmain/group_admin_info.html
+++ b/templates/svmain/group_admin_info.html
@@ -3,7 +3,7 @@
 {% load svtopmenu %}
 
 {% block title %}
-{{group.svgroupinfo.get_full_name_display}} - {{title}}
+{{group.svgroupinfo.get_full_name_display}} - {% trans "Administration summary" %}{% trans ": " %}{{title}}
 {% endblock %}
 
 {% block icon %}preferences{% endblock %}
--- a/templates/svmain/group_admin_members.html
+++ b/templates/svmain/group_admin_members.html
@@ -3,7 +3,7 @@
 {% load svtopmenu %}
 
 {% block title %}
-{{group.svgroupinfo.get_full_name_display}} - {{title}}
+{{group.svgroupinfo.get_full_name_display}} - {% trans "Administration summary" %}{% trans ": " %}{{title}}
 {% endblock %}
 
 {% block icon %}preferences{% endblock %}
--- a/templates/svmain/group_admin_members_add.html
+++ b/templates/svmain/group_admin_members_add.html
@@ -3,7 +3,7 @@
 {% load svtopmenu %}
 
 {% block title %}
-{{group.svgroupinfo.get_full_name_display}} - {{title}}
+{{group.svgroupinfo.get_full_name_display}} - {% trans "Administration summary" %}{% trans ": " %}{{title}}
 {% endblock %}
 
 {% block icon %}preferences{% endblock %}
--- a/templates/svmain/group_detail.html
+++ b/templates/svmain/group_detail.html
@@ -2,6 +2,10 @@
 {% load i18n %}
 {% load svtopmenu %}
 
+{% block title %}
+{{group.svgroupinfo.get_full_name_display}} - {% trans "Summary" %}
+{% endblock %}
+
 {% block topmenu %}
   {% svtopmenu "group" %}
 {% endblock %}