app/soc/views/models/student_proposal.py
changeset 1469 d69b00439d59
parent 1467 c5f99265a680
child 1482 5229a40d4792
--- a/app/soc/views/models/student_proposal.py	Sun Feb 22 21:00:25 2009 +0000
+++ b/app/soc/views/models/student_proposal.py	Sun Feb 22 21:01:43 2009 +0000
@@ -31,6 +31,7 @@
 from soc.logic import dicts
 from soc.logic.models import organization as org_logic
 from soc.logic.models import student as student_logic
+from soc.logic.models import user as user_logic
 from soc.views.helper import access
 from soc.views.helper import decorators
 from soc.views.helper import redirects
@@ -64,6 +65,8 @@
             [['proposer', 'org_admin', 'mentor', 'host'], 
             ['active', 'inactive'], ['new', 'pending', 'accepted', 'rejected']])]
     rights['list'] = ['checkIsDeveloper']
+    rights['list_self'] = [
+        ('checkIsStudent', ['scope_path', ['active', 'inactive']])]
     rights['apply'] = [
         ('checkIsStudent', ['scope_path', ['active']]),
         ('checkCanStudentPropose', 'scope_path')]
@@ -84,6 +87,9 @@
         (r'^%(url_name)s/(?P<access_type>apply)/%(scope)s$',
         'soc.views.models.%(module_name)s.create',
         'Create a new %(name)s'),
+        (r'^%(url_name)s/(?P<access_type>list_self)/%(scope)s$',
+        'soc.views.models.%(module_name)s.list_self',
+        'List my %(name_plural)s')
     ]
 
     new_params['extra_django_patterns'] = patterns
@@ -159,6 +165,27 @@
     else:
       context['mentor_name'] = "No mentor assigned"
 
+  @decorators.merge_params
+  def listSelf(self, request, access_type,
+             page_name=None, params=None, **kwargs):
+    """Lists all proposals from the current logged-in user.
+
+    For params see base.View.public().
+    """
+
+    user_entity = user_logic.logic.getForCurrentAccount()
+    filter = {'user': user_entity}
+    student_entity = student_logic.logic.getForFields(filter, unique=True)
+
+    filter = {'scope' : student_entity,
+              'status': ['new', 'pending', 'accepted', 'rejected']}
+
+    list_params = params.copy()
+    list_params['list_description'] = 'List of my %(name_plural)s' % list_params
+
+    return self.list(request, access_type=access_type, page_name=page_name,
+                     params=list_params, filter=filter, **kwargs)
+
 view = View()
 
 admin = view.admin
@@ -166,6 +193,7 @@
 delete = view.delete
 edit = view.edit
 list = view.list
+list_self = view.listSelf
 public = view.public
 export = view.export
 pick = view.pick