app/soc/views/models/student_proposal.py
author Lennard de Rijk <ljvderijk@gmail.com>
Wed, 04 Mar 2009 22:11:26 +0000
changeset 1666 cdb7e5581694
parent 1639 170ac4ca078d
child 1715 3ec1a9518452
permissions -rw-r--r--
Mentor buttons only show up depending on if you are already on the possible mentors list. Also made the textual changes stated in a comment on r2250. Patch by: Lennard de Rijk Reviewed by: to-be-reviewed
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1426
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     1
#!/usr/bin/python2.5
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     2
#
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     3
# Copyright 2009 the Melange authors.
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     4
#
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     5
# Licensed under the Apache License, Version 2.0 (the "License");
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     6
# you may not use this file except in compliance with the License.
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     7
# You may obtain a copy of the License at
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     8
#
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     9
#   http://www.apache.org/licenses/LICENSE-2.0
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    10
#
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    11
# Unless required by applicable law or agreed to in writing, software
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    12
# distributed under the License is distributed on an "AS IS" BASIS,
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    14
# See the License for the specific language governing permissions and
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    15
# limitations under the License.
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    16
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    17
"""Views for Student Proposal.
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    18
"""
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    19
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    20
__authors__ = [
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    21
    '"Lennard de Rijk" <ljvderijk@gmail.com>',
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    22
  ]
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    23
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    24
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    25
import datetime
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    26
import time
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    27
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    28
from django import forms
1498
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
    29
from django import http
1426
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    30
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    31
from soc.logic import cleaning
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    32
from soc.logic import dicts
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
    33
from soc.logic.models import mentor as mentor_logic
1426
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    34
from soc.logic.models import organization as org_logic
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
    35
from soc.logic.models import org_admin as org_admin_logic
1426
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    36
from soc.logic.models import student as student_logic
1469
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
    37
from soc.logic.models import user as user_logic
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
    38
from soc.views import helper
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
    39
from soc.views import out_of_band
1426
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    40
from soc.views.helper import access
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    41
from soc.views.helper import decorators
1569
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
    42
from soc.views.helper import dynaform
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
    43
from soc.views.helper import params as params_helper
1426
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    44
from soc.views.helper import redirects
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
    45
from soc.views.helper import responses
1426
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    46
from soc.views.helper import widgets
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    47
from soc.views.models import base
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    48
from soc.views.models import student as student_view
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    49
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    50
import soc.logic.models.student_proposal
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    51
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    52
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    53
class View(base.View):
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    54
  """View methods for the Student Proposal model.
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    55
  """
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    56
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    57
  def __init__(self, params=None):
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    58
    """Defines the fields and methods required for the base View class
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    59
    to provide the user with list, public, create, edit and delete views.
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    60
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    61
    Params:
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    62
      params: a dict with params for this View
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    63
    """
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    64
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    65
    rights = access.Checker(params)
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    66
    rights['create'] = ['checkIsDeveloper']
1467
c5f99265a680 Changed the access checks in student_proposal view to use the newly created checks.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1430
diff changeset
    67
    rights['edit'] = [('checkCanStudentPropose', 'scope_path'),
c5f99265a680 Changed the access checks in student_proposal view to use the newly created checks.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1430
diff changeset
    68
        ('checkRoleAndStatusForStudentProposal',
c5f99265a680 Changed the access checks in student_proposal view to use the newly created checks.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1430
diff changeset
    69
            [['proposer'], ['active'], ['new', 'pending']])]
1426
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    70
    rights['delete'] = ['checkIsDeveloper']
1467
c5f99265a680 Changed the access checks in student_proposal view to use the newly created checks.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1430
diff changeset
    71
    rights['show'] = [
c5f99265a680 Changed the access checks in student_proposal view to use the newly created checks.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1430
diff changeset
    72
        ('checkRoleAndStatusForStudentProposal',
c5f99265a680 Changed the access checks in student_proposal view to use the newly created checks.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1430
diff changeset
    73
            [['proposer', 'org_admin', 'mentor', 'host'], 
1639
170ac4ca078d Fix too long lines in soc.views.models.student_proposal module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1620
diff changeset
    74
            ['active', 'inactive'], 
170ac4ca078d Fix too long lines in soc.views.models.student_proposal module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1620
diff changeset
    75
            ['new', 'pending', 'accepted', 'rejected']])]
1426
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    76
    rights['list'] = ['checkIsDeveloper']
1482
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
    77
    rights['list_orgs'] = [
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
    78
        ('checkIsStudent', ['scope_path', ['active']]),
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
    79
        ('checkCanStudentPropose', 'scope_path')]
1469
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
    80
    rights['list_self'] = [
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
    81
        ('checkIsStudent', ['scope_path', ['active', 'inactive']])]
1467
c5f99265a680 Changed the access checks in student_proposal view to use the newly created checks.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1430
diff changeset
    82
    rights['apply'] = [
c5f99265a680 Changed the access checks in student_proposal view to use the newly created checks.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1430
diff changeset
    83
        ('checkIsStudent', ['scope_path', ['active']]),
c5f99265a680 Changed the access checks in student_proposal view to use the newly created checks.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1430
diff changeset
    84
        ('checkCanStudentPropose', 'scope_path')]
1620
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
    85
    rights['review'] = [('checkRoleAndStatusForStudentProposal',
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
    86
            [['org_admin', 'mentor', 'host'], 
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
    87
            ['active'], ['new', 'pending']])]
1426
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    88
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    89
    new_params = {}
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    90
    new_params['logic'] = soc.logic.models.student_proposal.logic
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    91
    new_params['rights'] = rights
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    92
    new_params['name'] = "Student Proposal"
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    93
    new_params['url_name'] = "student_proposal"
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    94
    new_params['sidebar_grouping'] = 'Student Proposal'
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    95
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    96
    new_params['scope_view'] = student_view
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    97
    new_params['scope_redirect'] = redirects.getCreateRedirect
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    98
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    99
    new_params['no_create_with_key_fields'] = True
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   100
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   101
    patterns = [
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   102
        (r'^%(url_name)s/(?P<access_type>apply)/%(scope)s$',
1569
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   103
        'soc.views.models.%(module_name)s.apply',
1426
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   104
        'Create a new %(name)s'),
1469
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   105
        (r'^%(url_name)s/(?P<access_type>list_self)/%(scope)s$',
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   106
        'soc.views.models.%(module_name)s.list_self',
1482
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   107
        'List my %(name_plural)s'),
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   108
        (r'^%(url_name)s/(?P<access_type>list_orgs)/%(scope)s$',
1484
6b00a2a43eaf Changed the method and variable name in student_proposal to match the access type.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1482
diff changeset
   109
        'soc.views.models.%(module_name)s.list_orgs',
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   110
        'List my %(name_plural)s'),
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   111
        (r'^%(url_name)s/(?P<access_type>review)/%(key_fields)s$',
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   112
        'soc.views.models.%(module_name)s.review',
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   113
        'Review %(name)s'),
1426
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   114
    ]
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   115
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   116
    new_params['extra_django_patterns'] = patterns
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   117
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   118
    new_params['extra_dynaexclude'] = ['org', 'program', 'score',
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   119
                                       'status', 'mentor', 'link_id',
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   120
                                       'possible_mentors']
1426
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   121
1430
ff8cc6b15e6a Rename dynafields to dynaproperties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1426
diff changeset
   122
    new_params['create_extra_dynaproperties'] = {
1426
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   123
        'content': forms.fields.CharField(required=True,
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   124
            widget=widgets.FullTinyMCE(attrs={'rows': 25, 'cols': 100})),
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   125
        'scope_path': forms.CharField(widget=forms.HiddenInput,
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   126
            required=True),
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   127
        'organization': forms.CharField(label='Organization Link ID',
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   128
            required=True),
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   129
        'clean_organization': cleaning.clean_link_id('organization'),
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   130
        'clean_additional_info': cleaning.clean_url('additional_info'),
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   131
        'clean': cleaning.validate_student_proposal('organization',
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   132
            'scope_path', student_logic, org_logic),
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   133
        }
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   134
1430
ff8cc6b15e6a Rename dynafields to dynaproperties
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1426
diff changeset
   135
    new_params['edit_extra_dynaproperties'] = {
1426
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   136
        'organization': forms.CharField(label='Organization Link ID',
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   137
            widget=widgets.ReadOnlyInput),
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   138
        'link_id': forms.CharField(widget=forms.HiddenInput)
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   139
        }
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   140
1498
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   141
    new_params['edit_template'] = 'soc/student_proposal/edit.html'
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   142
    new_params['review_template'] = 'soc/student_proposal/review.html'
1426
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   143
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   144
    params = dicts.merge(params, new_params)
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   145
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   146
    super(View, self).__init__(params=params)
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   147
1569
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   148
    # create the special form for students
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   149
    dynafields = [
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   150
        {'name': 'organization',
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   151
         'base': forms.CharField,
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   152
         'label': 'Organization Link ID',
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   153
         'widget': widgets.ReadOnlyInput(),
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   154
         'required': False,
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   155
         },
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   156
        ]
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   157
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   158
    dynaproperties = params_helper.getDynaFields(dynafields)
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   159
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   160
    student_create_form = dynaform.extendDynaForm(
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   161
        dynaform=self._params['create_form'],
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   162
        dynaproperties=dynaproperties)
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   163
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   164
    params['student_create_form'] = student_create_form
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   165
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   166
    # create the special form for mentors
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   167
    dynafields = [
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   168
        {'name': 'score',
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   169
         'base': forms.ChoiceField,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   170
         'label': 'Score',
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   171
         'initial': 0,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   172
         'required': False,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   173
         'passthrough': ['initial', 'required', 'choices'],
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   174
         'choices': [(-4,'-4: Wow. This. Sucks.'),
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   175
                     (-3,'-3: Needs a lot of work'),
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   176
                     (-2,'-2: This is bad'),
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   177
                     (-1,'-1: I dont like this'),
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   178
                     (0,'0: No score'),
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   179
                     (1,'1: Might have potential'),
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   180
                     (2,'2: Good'),
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   181
                     (3,'3: Almost there'),
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   182
                     (4,'4: Made. Of. Awesome.')]
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   183
        },
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   184
        {'name': 'comment',
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   185
         'base': forms.CharField,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   186
         'widget': forms.Textarea,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   187
         'label': 'Comment',
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   188
         'required': False,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   189
         },
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   190
        {'name': 'public',
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   191
         'base': forms.BooleanField,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   192
         'label': 'Public comment',
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   193
         'initial': False,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   194
         'required': False,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   195
         },
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   196
         ]
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   197
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   198
    dynaproperties = params_helper.getDynaFields(dynafields)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   199
1639
170ac4ca078d Fix too long lines in soc.views.models.student_proposal module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1620
diff changeset
   200
    mentor_review_form = dynaform.newDynaForm(dynamodel=None, 
170ac4ca078d Fix too long lines in soc.views.models.student_proposal module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1620
diff changeset
   201
        dynabase=helper.forms.BaseForm, dynainclude=None, 
170ac4ca078d Fix too long lines in soc.views.models.student_proposal module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1620
diff changeset
   202
        dynaexclude=None, dynaproperties=dynaproperties)
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   203
    params['mentor_review_form'] = mentor_review_form
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   204
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   205
    # TODO see if autocomplete can be used for this field
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   206
    dynafields = [
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   207
      {'name': 'mentor',
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   208
       'base': forms.CharField,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   209
       'label': 'Assign Mentor (Link ID)',
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   210
       'required': False
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   211
      },
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   212
      ]
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   213
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   214
    dynaproperties = params_helper.getDynaFields(dynafields)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   215
1639
170ac4ca078d Fix too long lines in soc.views.models.student_proposal module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1620
diff changeset
   216
    admin_review_form = dynaform.extendDynaForm(dynaform=mentor_review_form, 
170ac4ca078d Fix too long lines in soc.views.models.student_proposal module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1620
diff changeset
   217
        dynaproperties=dynaproperties)
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   218
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   219
    params['admin_review_form'] = admin_review_form
1569
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   220
1426
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   221
  def _editGet(self, request, entity, form):
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   222
    """See base.View._editGet().
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   223
    """
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   224
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   225
    form.fields['link_id'].initial = entity.link_id
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   226
    form.fields['organization'].initial = entity.org.link_id
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   227
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   228
    return super(View, self)._editGet(request, entity, form)
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   229
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   230
  def _editPost(self, request, entity, fields):
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   231
    """See base.View._editPost().
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   232
    """
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   233
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   234
    if not entity:
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   235
      fields['link_id'] = 't%i' % (time.time())
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   236
    else:
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   237
      fields['link_id'] = entity.link_id
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   238
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   239
    # fill in the scope via call to super
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   240
    super(View, self)._editPost(request, entity, fields)
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   241
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   242
    if not entity:
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   243
      # creating a new application so set the program and org field
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   244
      fields['program'] = fields['scope'].scope
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   245
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   246
      filter = {'scope': fields['program'],
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   247
                'link_id': fields['organization']}
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   248
      fields['org'] = org_logic.logic.getForFields(filter, unique=True)
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   249
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   250
    # explicitly change the last_modified_on since the content has been edited
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   251
    fields['last_modified_on'] = datetime.datetime.now()
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   252
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   253
  def _public(self, request, entity, context):
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   254
    """See base.View._public().
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   255
    """
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   256
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   257
    context['student_name'] = entity.scope.name()
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   258
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   259
    if entity.mentor:
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   260
      context['mentor_name'] = entity.mentor.name()
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   261
    else:
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   262
      context['mentor_name'] = "No mentor assigned"
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   263
1469
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   264
  @decorators.merge_params
1482
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   265
  @decorators.check_access
1569
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   266
  def apply(self, request, access_type,
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   267
             page_name=None, params=None, **kwargs):
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   268
    """Special view used to prepopulate the form with the organization
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   269
       contributors template.
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   270
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   271
       For params see base.View.public()
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   272
    """
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   273
    get_dict = request.GET
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   274
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   275
    if get_dict.get('organization'):
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   276
      # organization chosen, prepopulate with template
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   277
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   278
      # get the organization
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   279
      student_entity = student_logic.logic.getFromKeyName(kwargs['scope_path'])
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   280
      program_entity = student_entity.scope
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   281
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   282
      filter = {'link_id': get_dict['organization'],
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   283
                'scope': program_entity}
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   284
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   285
      org_entity = org_logic.logic.getForFields(filter, unique=True)
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   286
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   287
      if org_entity:
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   288
        # organization found use special form
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   289
        params['create_form'] = params['student_create_form']
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   290
        kwargs['content'] = org_entity.contrib_template
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   291
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   292
    # Create page is an edit page with no key fields
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   293
    empty_kwargs = {}
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   294
    fields = self._logic.getKeyFieldNames()
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   295
    for field in fields:
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   296
      empty_kwargs[field] = None
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   297
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   298
    return super(View, self).edit(request, access_type, page_name=page_name,
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   299
                     params=params, seed=kwargs, **empty_kwargs)
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   300
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   301
  @decorators.merge_params
6347d0a4fa7b Students who follow the submit your student proposal link will now see their org's proposal template when creating their own proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1498
diff changeset
   302
  @decorators.check_access
1498
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   303
  def edit(self, request, access_type,
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   304
           page_name=None, params=None, seed=None, **kwargs):
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   305
    """If the POST contains (action, Withdraw) the proposal in kwargs
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   306
       will be marked as invalid.
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   307
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   308
    For params see base.View.edit()
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   309
    """
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   310
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   311
    # check if request.POST contains action
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   312
    post_dict = request.POST
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   313
    if 'action' in post_dict and post_dict['action'] == 'Withdraw':
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   314
      # withdraw this proposal
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   315
      filter = {'scope_path': kwargs['scope_path'],
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   316
                'link_id': kwargs['link_id']}
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   317
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   318
      proposal_logic = params['logic']
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   319
      student_proposal_entity = proposal_logic.getForFields(filter, unique=True)
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   320
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   321
      # update the entity mark it as invalid
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   322
      proposal_logic.updateEntityProperties(student_proposal_entity,
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   323
          {'status': 'invalid'})
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   324
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   325
      # redirect to the program's homepage
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   326
      redirect_url = redirects.getHomeRedirect(student_proposal_entity.program,
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   327
          {'url_name': 'program'})
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   328
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   329
      return http.HttpResponseRedirect(redirect_url)
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   330
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   331
    return super(View, self).edit(request=request, access_type=access_type,
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   332
           page_name=page_name, params=params, seed=seed, **kwargs)
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   333
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   334
  @decorators.merge_params
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   335
  @decorators.check_access
1484
6b00a2a43eaf Changed the method and variable name in student_proposal to match the access type.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1482
diff changeset
   336
  def listOrgs(self, request, access_type,
1491
acf7e32de8ca Style fixes in student_proposal and organization view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1484
diff changeset
   337
               page_name=None, params=None, **kwargs):
1482
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   338
    """Lists all organization which the given student can propose to.
1469
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   339
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   340
    For params see base.View.public().
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   341
    """
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   342
1482
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   343
    from soc.views.models import organization as org_view
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   344
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   345
    student_entity = student_logic.logic.getFromKeyName(kwargs['scope_path'])
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   346
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   347
    filter = {'scope' : student_entity.scope,
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   348
              'status': 'active'}
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   349
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   350
    list_params = org_view.view.getParams().copy()
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   351
    list_params['list_description'] = ('List of %(name_plural)s you can send '
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   352
        'your proposal to.') % list_params
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   353
    list_params['list_action'] = (redirects.getStudentProposalRedirect,
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   354
        {'student_key': student_entity.key().name(),
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   355
            'url_name': params['url_name']})
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   356
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   357
    return self.list(request, access_type=access_type, page_name=page_name,
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   358
                     params=list_params, filter=filter, **kwargs)
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   359
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   360
  @decorators.merge_params
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   361
  @decorators.check_access
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   362
  def listSelf(self, request, access_type,
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   363
             page_name=None, params=None, **kwargs):
1639
170ac4ca078d Fix too long lines in soc.views.models.student_proposal module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1620
diff changeset
   364
    """Lists all proposals from the current logged-in user 
170ac4ca078d Fix too long lines in soc.views.models.student_proposal module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1620
diff changeset
   365
       for the given student.
1482
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   366
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   367
    For params see base.View.public().
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   368
    """
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   369
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   370
    student_entity = student_logic.logic.getFromKeyName(kwargs['scope_path'])
1469
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   371
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   372
    filter = {'scope' : student_entity,
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   373
              'status': ['new', 'pending', 'accepted', 'rejected']}
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   374
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   375
    list_params = params.copy()
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   376
    list_params['list_description'] = 'List of my %(name_plural)s' % list_params
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   377
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   378
    return self.list(request, access_type=access_type, page_name=page_name,
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   379
                     params=list_params, filter=filter, **kwargs)
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   380
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   381
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   382
  @decorators.merge_params
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   383
  @decorators.check_access
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   384
  def review(self, request, access_type,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   385
             page_name=None, params=None, **kwargs):
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   386
    """View that allows Organization Admins and Mentors to review the proposal.
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   387
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   388
       For Args see base.View.public().
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   389
    """
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   390
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   391
    try:
1639
170ac4ca078d Fix too long lines in soc.views.models.student_proposal module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1620
diff changeset
   392
      entity = self._logic.getFromKeyFieldsOr404(kwargs)
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   393
    except out_of_band.Error, error:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   394
      return helper.responses.errorResponse(
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   395
          error, request, template=params['error_public'])
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   396
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   397
    # get the context for this webpage
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   398
    context = responses.getUniversalContext(request)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   399
    responses.useJavaScript(context, params['js_uses_all'])
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   400
    context['page_name'] = page_name
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   401
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   402
    context['student_name'] = entity.scope.name()
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   403
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   404
    if entity.mentor:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   405
      context['mentor_name'] = entity.mentor.name()
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   406
    else:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   407
      context['mentor_name'] = "No mentor assigned"
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   408
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   409
    context['entity'] = entity
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   410
    context['entity_type'] = params['name']
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   411
    context['entity_type_url'] = params['url_name']
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   412
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   413
    # get the roles important for reviewing an application
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   414
    filter = {'user': user_logic.logic.getForCurrentAccount(),
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   415
        'scope': entity.org,
1620
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
   416
        'status': 'active'}
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   417
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   418
    org_admin_entity = org_admin_logic.logic.getForFields(filter, unique=True)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   419
    mentor_entity = mentor_logic.logic.getForFields(filter, unique=True)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   420
1639
170ac4ca078d Fix too long lines in soc.views.models.student_proposal module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1620
diff changeset
   421
    # check if the current user is a mentor and wants 
170ac4ca078d Fix too long lines in soc.views.models.student_proposal module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1620
diff changeset
   422
    # to change his role for this app
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   423
    choice = request.GET.get('mentor')
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   424
    if mentor_entity and choice:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   425
      self._adjustPossibleMentors(entity, mentor_entity, choice)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   426
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   427
    # decide which form to use
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   428
    if org_admin_entity:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   429
      form = params['admin_review_form']
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   430
    else:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   431
      form = params['mentor_review_form']
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   432
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   433
    if request.method == 'POST':
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   434
      return self.reviewPost(request, context, params, entity,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   435
                             form, org_admin_entity, mentor_entity, **kwargs)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   436
    else:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   437
      # request.method == 'GET'
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   438
      return self.reviewGet(request, context, params, entity,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   439
                            form, org_admin_entity, mentor_entity, **kwargs)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   440
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   441
  def reviewPost(self, request, context, params, entity, form,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   442
                 org_admin, mentor, **kwargs):
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   443
    """Handles the POST request for the proposal review view.
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   444
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   445
    Args:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   446
        entity: the student proposal entity
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   447
        form: the form to use in this view
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   448
        org_admin: org admin entity for the current user/proposal (iff available)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   449
        mentor: mentor entity for the current user/proposal (iff available)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   450
        rest: see base.View.public()
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   451
    """
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   452
    # populate the form using the POST data
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   453
    form = form(request.POST)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   454
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   455
    if not form.is_valid():
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   456
      # return the invalid form response
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   457
      return self._constructResponse(request, entity=entity, context=context,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   458
          form=form, params=params, template=params['review_template'])
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   459
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   460
    fields = form.cleaned_data
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   461
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   462
    if org_admin:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   463
      # org admin found, try to adjust the assigned mentor
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   464
      self._adjustMentor(entity, fields['mentor'])
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   465
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   466
    is_public = fields['public']
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   467
    comment = fields['comment']
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   468
    given_score = int(fields['score'])
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   469
1620
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
   470
    if (org_admin or mentor) and (not is_public) and (given_score is not 0):
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
   471
      # if it is not a public comment and it's made by a member of the
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
   472
      # organization we score and display an additional message in the comment
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   473
      new_score = given_score + entity.score
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   474
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   475
      if org_admin:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   476
        name = org_admin.name()
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   477
      elif mentor:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   478
        name = mentor.name()
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   479
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   480
      # TODO(ljvderijk) hook up comments
1639
170ac4ca078d Fix too long lines in soc.views.models.student_proposal module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1620
diff changeset
   481
      comment = '%s has given %i points \n %s' % (name, given_score, comment)
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   482
1620
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
   483
      properties = {'score': new_score}
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
   484
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
   485
      # if the proposal is new we change it status to pending
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
   486
      if entity.status == 'new':
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
   487
        properties['status'] = 'pending'
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
   488
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   489
      # update the proposal with the new score
1620
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
   490
      self._logic.updateEntityProperties(entity, properties)
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   491
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   492
    # redirect to the same page
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   493
    return http.HttpResponseRedirect('')
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   494
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   495
  def reviewGet(self, request, context, params, entity, form,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   496
                 org_admin, mentor, **kwargs):
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   497
    """Handles the GET request for the proposal review view.
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   498
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   499
    Args:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   500
        entity: the student proposal entity
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   501
        form: the form to use in this view
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   502
        org_admin: org admin entity for the current user/proposal (iff available)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   503
        mentor: mentor entity for the current user/proposal (iff available)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   504
        rest: see base.View.public()
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   505
    """
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   506
1620
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
   507
    # set the initial score since the default is ignored
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
   508
    initial = {'score': 0}
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   509
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   510
    if org_admin and entity.mentor:
1620
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
   511
      # set the mentor field to the current mentor
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   512
      initial['mentor'] = entity.mentor.link_id
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   513
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   514
    context['form'] = form(initial)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   515
    template = params['review_template']
1666
cdb7e5581694 Mentor buttons only show up depending on if you are already on the possible mentors list.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1639
diff changeset
   516
cdb7e5581694 Mentor buttons only show up depending on if you are already on the possible mentors list.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1639
diff changeset
   517
    # set the possible mentors in the context
cdb7e5581694 Mentor buttons only show up depending on if you are already on the possible mentors list.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1639
diff changeset
   518
    possible_mentors = entity.possible_mentors
cdb7e5581694 Mentor buttons only show up depending on if you are already on the possible mentors list.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1639
diff changeset
   519
cdb7e5581694 Mentor buttons only show up depending on if you are already on the possible mentors list.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1639
diff changeset
   520
    if not possible_mentors:
cdb7e5581694 Mentor buttons only show up depending on if you are already on the possible mentors list.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1639
diff changeset
   521
      context['possible_mentors'] = "None"
cdb7e5581694 Mentor buttons only show up depending on if you are already on the possible mentors list.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1639
diff changeset
   522
    else:
cdb7e5581694 Mentor buttons only show up depending on if you are already on the possible mentors list.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1639
diff changeset
   523
      mentor_names = []
cdb7e5581694 Mentor buttons only show up depending on if you are already on the possible mentors list.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1639
diff changeset
   524
cdb7e5581694 Mentor buttons only show up depending on if you are already on the possible mentors list.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1639
diff changeset
   525
      for mentor_key in possible_mentors:
cdb7e5581694 Mentor buttons only show up depending on if you are already on the possible mentors list.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1639
diff changeset
   526
        mentor = mentor_logic.logic.getFromKeyName(mentor_key.name())
cdb7e5581694 Mentor buttons only show up depending on if you are already on the possible mentors list.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1639
diff changeset
   527
        mentor_names.append(mentor.name())
cdb7e5581694 Mentor buttons only show up depending on if you are already on the possible mentors list.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1639
diff changeset
   528
cdb7e5581694 Mentor buttons only show up depending on if you are already on the possible mentors list.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1639
diff changeset
   529
      context['possible_mentors'] = ', '.join(mentor_names)
cdb7e5581694 Mentor buttons only show up depending on if you are already on the possible mentors list.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1639
diff changeset
   530
cdb7e5581694 Mentor buttons only show up depending on if you are already on the possible mentors list.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1639
diff changeset
   531
    if mentor:
cdb7e5581694 Mentor buttons only show up depending on if you are already on the possible mentors list.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1639
diff changeset
   532
      if mentor.key() in possible_mentors:
cdb7e5581694 Mentor buttons only show up depending on if you are already on the possible mentors list.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1639
diff changeset
   533
        # show "No longer willing to mentor"
cdb7e5581694 Mentor buttons only show up depending on if you are already on the possible mentors list.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1639
diff changeset
   534
        context['remove_me_as_mentor'] = True
cdb7e5581694 Mentor buttons only show up depending on if you are already on the possible mentors list.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1639
diff changeset
   535
      else:
cdb7e5581694 Mentor buttons only show up depending on if you are already on the possible mentors list.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1639
diff changeset
   536
        # show "I am willing to mentor"
cdb7e5581694 Mentor buttons only show up depending on if you are already on the possible mentors list.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1639
diff changeset
   537
        context['add_me_as_mentor'] = True
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   538
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   539
    return responses.respond(request, template, context=context)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   540
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   541
  def _adjustPossibleMentors(self, entity, mentor, choice):
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   542
    """Adjusts the possible mentors list for a proposal.
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   543
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   544
    Args:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   545
      entity: Student Proposal entity
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   546
      mentor: Mentor entity
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   547
      choice: 1 means want to mentor, 0 do not want to mentor
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   548
    """
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   549
    possible_mentors = entity.possible_mentors
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   550
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   551
    if choice == '1':
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   552
      # add the mentor to possible mentors list if not already in
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   553
      if mentor.key() not in possible_mentors:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   554
        possible_mentors.append(mentor.key())
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   555
        fields = {'possible_mentors': possible_mentors}
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   556
        self._logic.updateEntityProperties(entity, fields)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   557
    elif choice == '0':
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   558
      # remove the mentor from the possible mentors list
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   559
      if mentor.key() in possible_mentors:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   560
        possible_mentors.remove(mentor.key())
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   561
        fields = {'possible_mentors': possible_mentors}
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   562
        self._logic.updateEntityProperties(entity, fields)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   563
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   564
  def _adjustMentor(self, entity, mentor_id):
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   565
    """Changes the mentor to the given link_id.
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   566
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   567
    Args:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   568
      entity: Student Proposal entity
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   569
      mentor_id: Link ID of the mentor that needs to be assigned
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   570
                 Iff not given then removes the assigned mentor
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   571
    """
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   572
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   573
    if entity.mentor and entity.mentor.link_id == mentor_id:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   574
      # no need to change
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   575
      return
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   576
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   577
    if mentor_id:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   578
      # try to locate the mentor
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   579
      fields = {'link_id': mentor_id,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   580
                'scope': entity.org,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   581
                'status': 'active'}
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   582
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   583
      mentor_entity = mentor_logic.logic.getForFields(fields, unique=True)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   584
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   585
      if not mentor_entity:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   586
        # no mentor found, do not update
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   587
        return
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   588
    else:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   589
      # reset to None
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   590
      mentor_entity = None
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   591
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   592
    # update the proposal
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   593
    properties = {'mentor': mentor_entity}
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   594
    self._logic.updateEntityProperties(entity, properties)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   595
1426
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   596
view = View()
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   597
1584
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1569
diff changeset
   598
admin = decorators.view(view.admin)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1569
diff changeset
   599
apply = decorators.view(view.apply)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1569
diff changeset
   600
create = decorators.view(view.create)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1569
diff changeset
   601
delete = decorators.view(view.delete)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1569
diff changeset
   602
edit = decorators.view(view.edit)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1569
diff changeset
   603
list = decorators.view(view.list)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1569
diff changeset
   604
list_orgs = decorators.view(view.listOrgs)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1569
diff changeset
   605
list_self = decorators.view(view.listSelf)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1569
diff changeset
   606
public = decorators.view(view.public)
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   607
review = decorators.view(view.review)
1584
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1569
diff changeset
   608
export = decorators.view(view.export)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1569
diff changeset
   609
pick = decorators.view(view.pick)