savannah-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Savannah-cvs] [SCM] Savane-cleanup framework branch, master, updated. 4


From: Sylvain Beucler
Subject: [Savannah-cvs] [SCM] Savane-cleanup framework branch, master, updated. 49aa3e88609d97cf4b512b937cc57573456d5265
Date: Sun, 25 Jul 2010 17:18:36 +0000

This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Savane-cleanup framework".

The branch, master has been updated
       via  49aa3e88609d97cf4b512b937cc57573456d5265 (commit)
      from  1a41d71870dc3d1097a375a514971f5bf011f34b (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
http://git.savannah.gnu.org/cgit/savane-cleanup/framework.git/commit/?id=49aa3e88609d97cf4b512b937cc57573456d5265

commit 49aa3e88609d97cf4b512b937cc57573456d5265
Author: Sylvain Beucler <address@hidden>
Date:   Sun Jul 25 19:18:28 2010 +0200

    Add separate project memberlist page

diff --git a/savane/svmain/models.py b/savane/svmain/models.py
index 1d7bc51..e12f751 100644
--- a/savane/svmain/models.py
+++ b/savane/svmain/models.py
@@ -493,8 +493,11 @@ class SvGroupInfo(models.Model):
         else:
             return self.group.name
 
-    def get_admins(self):
-        return auth_models.User.objects.filter(membership__admin_flags='A')
+    def get_admin_memberships(self):
+        return self.group.membership_set.filter(admin_flags='A')
+
+    def get_active_memberships(self):
+        return self.group.membership_set.exclude(admin_flags='P')
 
     @staticmethod
     def query_active_groups_raw(conn, fields):
diff --git a/savane/svmain/templatetags/svtopmenu.py 
b/savane/svmain/templatetags/svtopmenu.py
index 460d8b6..5f0c739 100644
--- a/savane/svmain/templatetags/svtopmenu.py
+++ b/savane/svmain/templatetags/svtopmenu.py
@@ -18,8 +18,9 @@
 
 from django import template
 from django.core.urlresolvers import reverse
-import savane.svmain.models as svmain_models
 from django.conf import settings
+from django.utils.translation import ugettext as _
+import savane.svmain.models as svmain_models
 
 register = template.Library()
 
@@ -35,20 +36,21 @@ def svtopmenu(context, menu_name):
     """
     icon = 'main'
     entries = []
+    group = context['group']
 
     if menu_name == 'group':
         entry_home = { 'text' : 'Home',
-                   'href' : reverse('savane.svmain.group_detail', 
args=[context['group'].name]),
+                   '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' : 1.1, 'href' : 1.1, 'title': 
1.1 })
-        if (context['user'].groups.filter(name=context['group']).count()):
-            entry_home['children'].append({'separator' : True })
-            entry_home['children'].append({'text' : "I'm a member", 'href' : 
1.2, 'title': 1.2 })
-        if (svmain_models.Membership.objects.filter(user=context['user'], 
group=context['group'], admin_flags='A').count()):
+        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]) })
+        if (svmain_models.Membership.is_admin(context['user'], group)):
             entry_home['children'].append({'separator' : True })
-            entry_home['children'].append({'text' : "I'm an admin",
-                                           'href' : 
reverse('savane.svmain.group_admin', args=[context['group'].name]) })
+            entry_home['children'].append({'text' : _("Administer:"), 
'strong': True,
+                                           'href' : 
reverse('savane.svmain.group_admin', args=[group.name]) })
+            entry_home['children'].append({'text' : _("Manage Members"),
+                                           'href' : 
reverse('savane.svmain.group_admin_members', args=[group.name]) })
 
         entry_test = {
                     'text' : 2, 'href' : 2, 'title': 2, 'children':
diff --git a/savane/svmain/urls.py b/savane/svmain/urls.py
index dd596ec..1aa77d8 100644
--- a/savane/svmain/urls.py
+++ b/savane/svmain/urls.py
@@ -84,6 +84,15 @@ urlpatterns += patterns ('',
       name='savane.svmain.group_detail'),
   url(r'^pr/(?P<slug>[-\w]+)/$', views.group_redir),
   url(r'^projects/(?P<slug>[-\w]+)/$', views.group_redir),
+  url(r'^p/(?P<slug>[-\w]+)/memberlist/$', object_detail,
+      { 'queryset' : auth_models.Group.objects.all(),
+        'slug_field' : 'name',
+        'extra_context' : { 'title' : 'Summary: Project Memberlist' },
+        'template_name' : 'svmain/group_memberlist.html',
+        'template_object_name' : 'group', },
+      name='savane.svmain.group_memberlist'),
+)
+urlpatterns += decorated_patterns ('', login_required,
   url(r'^p/(?P<slug>[-\w]+)/join/$', views.group_join),
 )
 urlpatterns += decorated_patterns ('', only_project_admin,
diff --git a/static_media/savane/css/Savannah.css 
b/static_media/savane/css/Savannah.css
index bcdade7..02b7037 100644
--- a/static_media/savane/css/Savannah.css
+++ b/static_media/savane/css/Savannah.css
@@ -569,7 +569,7 @@ li.topmenuitemsubmenuseparator {
 
 
 
-.boxtitle {
+.box th, .boxtitle {
        font-weight: bold;
        text-align: center;
        text-transform: capitalize;
@@ -1077,7 +1077,7 @@ li.topmenuitemsubmenu:hover {
        margin-right: 1%; 
 }
 
-.boxtitle  {   
+.box th, .boxtitle  {
        background-image: url("../images/leopard.png");
        background-color: #eddb5a;
        border: thin outset #641212;
diff --git a/templates/svmain/group_detail.html 
b/templates/svmain/group_detail.html
index b9136b7..56d60cb 100644
--- a/templates/svmain/group_detail.html
+++ b/templates/svmain/group_detail.html
@@ -11,24 +11,24 @@
 <div class="indexright">
   <div class="box">
     <div class="boxtitle">{% trans "Membership Info" %}</div>
-    {% if group.svgroupinfo.get_admins %}
-    <div class="boxitem"><span class="smaller">{% trans "Project Admins:" 
%}</span></div>
-    {% for user in group.svgroupinfo.get_admins %}
-    <div class="{% cycle 'boxitemalt' 'boxitem' %}"><span 
class="smaller">&nbsp;
-       - <a href="{% url savane.svmain.user_detail user.username %}">{{ 
user.svuserinfo.get_full_name_display }}</a></span></div>
+    {% if group.svgroupinfo.get_admin_memberships %}
+    <div class="boxitem smaller">{% trans "Project Admins:" %}</div>
+    {% for membership in group.svgroupinfo.get_admin_memberships %}
+    <div class="{% cycle 'boxitemalt' 'boxitem' %} smaller">&nbsp;
+       - <a href="{% url savane.svmain.user_detail membership.user.username 
%}">{{ membership.user.svuserinfo.get_full_name_display }}</a></div>
     {% endfor %}
     {% else %}
-    <div class="boxitem"><span class="smaller">{% trans "No members!" 
%}</span></div>
+    <div class="boxitem smaller">{% trans "No members!" %}</div>
     {% endif %}
-    <div class="boxitem"><span class="smaller">{% blocktrans count 
group.user_set.count as count %}{{count}} active member{% plural %}{{count}} 
active members{% endblocktrans %}</span></div>
-    <div class="boxitemalt"><span class="smaller">[<a href="memberlist/">{% 
trans "View Members" %}</a>]</span></div>
+    <div class="boxitem smaller">{% blocktrans count group.user_set.count as 
count %}{{count}} active member{% plural %}{{count}} active members{% 
endblocktrans %}</div>
+    <div class="boxitemalt smaller">[<a href="memberlist/">{% trans "View 
Members" %}</a>]</div>
   </div>
   <div class="box">
     <div class="boxtitle">{% trans "Group identification" %}</div>
-    <div class="boxitem"><span class="smaller">{% trans "Id:" %} 
<strong>#{{group.pk}}</strong></span></div>
-    <div class="boxitemalt"><span class="smaller">{% trans "System Name:" %} 
<strong>{{group.name}}</strong></span></div>
-    <div class="boxitem"><span class="smaller">{% trans "Name:" %} 
<strong>{{group.svgroupinfo.full_name}}</strong></span></div>
-    <div class="boxitemalt"><span class="smaller">{% trans "Group Type:" %} 
<strong>{{group.svgroupinfo.type.name}}</strong></span></div>
+    <div class="boxitem smaller">{% trans "Id:" %} 
<strong>#{{group.pk}}</strong></div>
+    <div class="boxitemalt smaller">{% trans "System Name:" %} 
<strong>{{group.name}}</strong></div>
+    <div class="boxitem smaller">{% trans "Name:" %} 
<strong>{{group.svgroupinfo.full_name}}</strong></div>
+    <div class="boxitemalt smaller">{% trans "Group Type:" %} 
<strong>{{group.svgroupinfo.type.name}}</strong></div>
   </div>
 </div>
 
diff --git a/templates/svmain/group_memberlist.html 
b/templates/svmain/group_memberlist.html
new file mode 100644
index 0000000..1e4c32b
--- /dev/null
+++ b/templates/svmain/group_memberlist.html
@@ -0,0 +1,45 @@
+{% extends "base.html" %}
+{% load i18n %}
+{% load svtopmenu %}
+
+{% block title %}
+{{group.svgroupinfo.get_full_name_display}} - {{title}}
+{% endblock %}
+
+{% block icon %}people{% endblock %}
+
+{% block topmenu %}
+  {% svtopmenu "group" %}
+{% endblock %}
+
+{% block content %}
+
+<table class="box">
+<tr><th></th><th>Member</th><th>Resume and skills</th></tr>
+{% for membership in group.svgroupinfo.get_active_memberships %}
+<tr class="{% cycle 'boxitemalt' 'boxitem' %}">
+  <td>
+    {% ifequal membership.admin_flags 'A' %}
+    <img class="icon"
+      alt="{% trans "Project Administrator" %}"
+      
src="{{STATIC_MEDIA_URL}}savane/images/common/roles1/project-admin.orig.png" />
+    {% else %}
+    <img class="icon"
+      alt="{% trans "Project Member" %}"
+      
src="{{STATIC_MEDIA_URL}}savane/images/common/roles1/project-member.orig.png" />
+    {% endifequal %}
+  </td>
+  <td><a href="{% url savane.svmain.user_detail membership.user.username 
%}">{{ membership.user.svuserinfo.get_full_name_display }}</a></td>
+  <td>TODO</td>
+{% endfor %}
+</table>
+
+{% endblock %}
+
+{% comment %}
+Local Variables: **
+mode: django-html **
+tab-width: 4 **
+indent-tabs-mode: nil **
+End: **
+{% endcomment %}
diff --git a/templates/svmain/svtopmenu.html b/templates/svmain/svtopmenu.html
index ab75e21..3ceed89 100644
--- a/templates/svmain/svtopmenu.html
+++ b/templates/svmain/svtopmenu.html
@@ -5,10 +5,12 @@
     <ul id="submenu{{forloop.counter}}" class="topmenuitemsubmenu">
     {% for l2 in l1.children %}
       {% if l2.separator %}
-         <li class="topmenuitemsubmenuseparator">&nbsp;</li>
-         {% else %}
-      <li class="topmenuitemsubmenu"><a href="{{l2.href}}" 
title="{{l2.title}}">{{ l2.text }}</a></li>
-         {% endif %}
+      <li class="topmenuitemsubmenuseparator">&nbsp;</li>
+      {% else %}
+      <li class="topmenuitemsubmenu"><a href="{{l2.href}}" 
title="{{l2.title}}">
+         {% if l2.strong %}<strong>{{ l2.text }}</strong>{% else %}{{ l2.text 
}}{% endif %}
+      </a></li>
+      {% endif %}
     {% endfor %}
     </ul>
   </li>

-----------------------------------------------------------------------

Summary of changes:
 savane/svmain/models.py                 |    7 +++-
 savane/svmain/templatetags/svtopmenu.py |   20 +++++++------
 savane/svmain/urls.py                   |    9 ++++++
 static_media/savane/css/Savannah.css    |    4 +-
 templates/svmain/group_detail.html      |   24 ++++++++--------
 templates/svmain/group_memberlist.html  |   45 +++++++++++++++++++++++++++++++
 templates/svmain/svtopmenu.html         |   10 ++++---
 7 files changed, 90 insertions(+), 29 deletions(-)
 create mode 100644 templates/svmain/group_memberlist.html


hooks/post-receive
-- 
Savane-cleanup framework



reply via email to

[Prev in Thread] Current Thread [Next in Thread]