changeset 273:62f8e93ade0e

Project jobs list
author Sylvain Beucler <beuc@beuc.net>
date Fri, 13 Aug 2010 00:13:58 +0200
parents f62ff36b62c1
children 5422c973575d
files TODO savane/svmain/templatetags/svtopmenu.py savane/svpeople/urls.py savane/svpeople/views.py templates/svpeople/job_detail.html templates/svpeople/job_list.inc templates/svpeople/job_list_by_category.html templates/svpeople/job_list_by_group.html templates/svpeople/job_list_by_type.html
diffstat 9 files changed, 55 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- a/TODO
+++ b/TODO
@@ -141,7 +141,7 @@
 
     [X] View a job (by category & group type)
 
-    [ ] Project jobs list
+    [X] Project jobs list
 
     [ ] Edit job
 
--- a/savane/svmain/templatetags/svtopmenu.py
+++ b/savane/svmain/templatetags/svtopmenu.py
@@ -150,11 +150,23 @@
             entry_sourcecode['children'].append({'text' : _("Browse web pages repository"),
                                                  'href' : group.svgroupinfo.get_url_homepage_vcs_browser() })
 
+        # Jobs
+        entry_job = {'text' : _("Jobs"),
+                              'href' : reverse('savane:svpeople:job_list_by_group', args=[group.name]) }
+        entry_job['children'] = []
+        entry_job['children'].append({'text' : _("Browse"),
+                                               'href' : reverse('savane:svpeople:job_list_by_group', args=[group.name]) })
+        if (svmain_models.Membership.is_admin(context['user'], group)):
+            entry_job['children'].append({'separator' : True })
+            entry_job['children'].append({'text' : _("Add:") + " (TODO)", 'strong': True,
+                                                   'href' : '' })
+
         # Add 'em all!
         entries.append(entry_home)
         entries.append(entry_homepage)
         entries.append(entry_download)
         entries.append(entry_mailinglist)
+        entries.append(entry_job)
         if len(entry_sourcecode['children']) > 0:
             entries.append(entry_sourcecode)
     elif menu_name == 'my':
--- a/savane/svpeople/urls.py
+++ b/savane/svpeople/urls.py
@@ -35,6 +35,9 @@
   url(r'^type/(?P<type_id>\d+)/$', views.job_list_by_type,
       { 'extra_context' : { 'title' : _("Project help wanted"), }, },
       name='job_list_by_type'),
+  url(r'^group/(?P<slug>[-\w]+)/$', views.job_list_by_group,
+      { 'extra_context' : { 'title' : _("Looking for a job to edit"), }, },
+      name='job_list_by_group'),
   url(r'^job/(?P<object_id>\d+)/$', object_detail,
       { 'queryset' : svpeople_models.Job.objects.all(),
         'extra_context' : { 'title' : _("View a job"), }, },
--- a/savane/svpeople/views.py
+++ b/savane/svpeople/views.py
@@ -23,6 +23,7 @@
 from django.contrib import messages
 from django.utils.translation import ugettext as _, ungettext
 from django.db import models
+import django.contrib.auth.models as auth_models
 from annoying.decorators import render_to
 from savane.middleware.exception import HttpAppException
 import savane.svmain.models as svmain_models
@@ -70,3 +71,16 @@
         }
     context.update(extra_context)
     return context
+
+@render_to('svpeople/job_list_by_group.html', mimetype=None)
+def job_list_by_group(request, slug, extra_context={}):
+    group = get_object_or_404(auth_models.Group, name=slug)
+    object_list = svpeople_models.Job.open_objects \
+        .filter(group=group).order_by('-date') \
+        .select_related('category', 'group__svgroupinfo__type')
+    context = {
+        'type' : type,
+        'object_list' : object_list,
+        }
+    context.update(extra_context)
+    return context
--- a/templates/svpeople/job_detail.html
+++ b/templates/svpeople/job_detail.html
@@ -1,6 +1,5 @@
 {% extends "base.html" %}
 {% load i18n %}
-{% load svtopmenu %}
 {% load svmarkup %}
 
 {% block title %}
--- a/templates/svpeople/job_list.inc
+++ b/templates/svpeople/job_list.inc
@@ -12,7 +12,7 @@
   <td><a href="{% url savane:svpeople:job_detail object.pk %}">{{object.title}}</a></td>
   <td>{{object.category.label}}</td>
   <td>{{object.date}}</td>
-  <td><a href="{% url savane:svmain:group_detail object.group.pk %}">{{object.group.svgroupinfo.full_name}}</a></td>
+  <td><a href="{% url savane:svmain:group_detail object.group.name %}">{{object.group.svgroupinfo.full_name}}</a></td>
   <td>{{object.group.svgroupinfo.type.name}}</td>
 </tr>
 {% endfor %}
--- a/templates/svpeople/job_list_by_category.html
+++ b/templates/svpeople/job_list_by_category.html
@@ -1,6 +1,5 @@
 {% extends "base.html" %}
 {% load i18n %}
-{% load svtopmenu %}
 
 {% block title %}
 {% blocktrans %}People at {{site_name}}{% endblocktrans %}{% trans ": " %}
new file mode 100644
--- /dev/null
+++ b/templates/svpeople/job_list_by_group.html
@@ -0,0 +1,24 @@
+{% extends "base.html" %}
+{% load i18n %}
+
+{% block title %}
+{% blocktrans %}People at {{site_name}}{% endblocktrans %}{% trans ": " %}{{title}}
+{% endblock %}
+
+{% block icon %}people{% endblock %}
+
+{% block content %}
+
+<p>{% trans "Here is a list of positions available for this project." %}</p>
+
+{% include "svpeople/job_list.inc" %}
+
+{% endblock %}
+
+{% comment %}
+Local Variables: **
+mode: django-html **
+tab-width: 4 **
+indent-tabs-mode: nil **
+End: **
+{% endcomment %}
--- a/templates/svpeople/job_list_by_type.html
+++ b/templates/svpeople/job_list_by_type.html
@@ -1,6 +1,5 @@
 {% extends "base.html" %}
 {% load i18n %}
-{% load svtopmenu %}
 
 {% block title %}
 {% blocktrans %}People at {{site_name}}{% endblocktrans %}{% trans ": " %}{{title}}