app/soc/views/models/student_proposal.py
author Lennard de Rijk <ljvderijk@gmail.com>
Tue, 10 Mar 2009 19:09:12 +0000
changeset 1787 b623d96bc830
parent 1779 cdd11aa8dbc7
child 1838 5a8a254af95b
permissions -rw-r--r--
Organization admins can now put a Student Proposal at a specific rank. 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
1752
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   166
    # create the special form for public review
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   167
    dynafields = [
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   168
        {'name': 'comment',
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   169
         'base': forms.CharField,
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   170
         'widget': widgets.FullTinyMCE(attrs={'rows': 10, 'cols': 40}),
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   171
         'label': 'Comment',
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   172
         'required': False,
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   173
         },
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   174
         ]
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   175
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   176
    dynaproperties = params_helper.getDynaFields(dynafields)
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   177
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   178
    public_review_form = dynaform.newDynaForm(dynamodel=None, 
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   179
        dynabase=helper.forms.BaseForm, dynainclude=None, 
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   180
        dynaexclude=None, dynaproperties=dynaproperties)
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   181
    params['public_review_form'] = public_review_form
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   182
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   183
    # create the special form for mentors
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   184
    dynafields = [
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   185
        {'name': 'score',
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   186
         'base': forms.ChoiceField,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   187
         'label': 'Score',
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   188
         'initial': 0,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   189
         'required': False,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   190
         'passthrough': ['initial', 'required', 'choices'],
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   191
         'choices': [(-4,'-4: Wow. This. Sucks.'),
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   192
                     (-3,'-3: Needs a lot of work'),
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   193
                     (-2,'-2: This is bad'),
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   194
                     (-1,'-1: I dont like this'),
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   195
                     (0,'0: No score'),
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   196
                     (1,'1: Might have potential'),
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   197
                     (2,'2: Good'),
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   198
                     (3,'3: Almost there'),
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   199
                     (4,'4: Made. Of. Awesome.')]
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   200
        },
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   201
        {'name': 'comment',
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   202
         'base': forms.CharField,
1715
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   203
         'widget': widgets.FullTinyMCE(attrs={'rows': 10, 'cols': 40}),
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   204
         'label': 'Comment',
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   205
         'required': False,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   206
         },
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   207
        {'name': 'public',
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   208
         'base': forms.BooleanField,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   209
         'label': 'Public comment',
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   210
         'initial': False,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   211
         'required': False,
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
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   215
    dynaproperties = params_helper.getDynaFields(dynafields)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   216
1639
170ac4ca078d Fix too long lines in soc.views.models.student_proposal module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1620
diff changeset
   217
    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
   218
        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
   219
        dynaexclude=None, dynaproperties=dynaproperties)
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   220
    params['mentor_review_form'] = mentor_review_form
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   221
1787
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   222
    # TODO see if autocomplete can be used for mentor field
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   223
    dynafields = [
1787
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   224
      {'name': 'rank',
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   225
         'base': forms.IntegerField,
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   226
         'label': 'Set to rank',
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   227
         'help_text': 'Set this proposal to the given rank (ignores the given score)',
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   228
         'min_value': 1,
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   229
         'required': False,
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   230
         'passthrough': ['min_value', 'required', 'help_text'],
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   231
      },
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   232
      {'name': 'mentor',
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   233
       'base': forms.CharField,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   234
       'label': 'Assign Mentor (Link ID)',
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   235
       'required': False
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   236
      },
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   237
      ]
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   238
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   239
    dynaproperties = params_helper.getDynaFields(dynafields)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   240
1639
170ac4ca078d Fix too long lines in soc.views.models.student_proposal module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1620
diff changeset
   241
    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
   242
        dynaproperties=dynaproperties)
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   243
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   244
    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
   245
1426
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   246
  def _editGet(self, request, entity, form):
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   247
    """See base.View._editGet().
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   248
    """
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
    form.fields['link_id'].initial = entity.link_id
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   251
    form.fields['organization'].initial = entity.org.link_id
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
    return super(View, self)._editGet(request, entity, form)
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   254
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   255
  def _editPost(self, request, entity, fields):
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   256
    """See base.View._editPost().
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   257
    """
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 not entity:
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   260
      fields['link_id'] = 't%i' % (time.time())
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
      fields['link_id'] = entity.link_id
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   263
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   264
    # fill in the scope via call to super
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   265
    super(View, self)._editPost(request, entity, fields)
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   266
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   267
    if not entity:
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   268
      # 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
   269
      fields['program'] = fields['scope'].scope
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   270
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   271
      filter = {'scope': fields['program'],
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   272
                'link_id': fields['organization']}
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   273
      fields['org'] = org_logic.logic.getForFields(filter, unique=True)
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   274
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   275
    # 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
   276
    fields['last_modified_on'] = datetime.datetime.now()
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   277
1752
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   278
  @decorators.merge_params
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   279
  @decorators.check_access
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   280
  def public(self, request, access_type,
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   281
             page_name=None, params=None, **kwargs):
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   282
    """View in which the student can see and reply to the comments on the
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   283
       Student Proposal.
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   284
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   285
    For params see base.view.Public().
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   286
    """
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   287
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   288
    context = helper.responses.getUniversalContext(request)
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   289
    helper.responses.useJavaScript(context, params['js_uses_all'])
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   290
    context['page_name'] = page_name
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   291
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   292
    try:
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   293
      entity = self._logic.getFromKeyFieldsOr404(kwargs)
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   294
    except out_of_band.Error, error:
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   295
      return helper.responses.errorResponse(
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   296
          error, request, template=params['error_public'], context=context)
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   297
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   298
    context['entity'] = entity
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   299
    context['entity_type'] = params['name']
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   300
    context['entity_type_url'] = params['url_name']
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   301
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   302
    if request.method == 'POST':
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   303
      return self.publicPost(request, context, params, entity, **kwargs)
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   304
    else: # request.method == 'GET'
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   305
      return self.publicGet(request, context, params, entity, **kwargs)
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   306
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   307
  def publicPost(self, request, context, params, entity, **kwargs):
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   308
    """Handles the POST request for the entity's public page.
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   309
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   310
    Args:
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   311
        entity: the student proposal entity
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   312
        rest: see base.View.public()
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   313
    """
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   314
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   315
    # populate the form using the POST data
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   316
    form = params['public_review_form'](request.POST)
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   317
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   318
    if not form.is_valid():
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   319
      # get some entity specific context
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   320
      self.updatePublicContext(context, entity, params)
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   321
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   322
      # return the invalid form response
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   323
      return self._constructResponse(request, entity=entity, context=context,
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   324
          form=form, params=params, template=params['public_template'])
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   325
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   326
    # get the commentary
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   327
    fields = form.cleaned_data
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   328
    comment = fields['comment']
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   329
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   330
    if comment:
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   331
      # create a new public review containing the comment
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   332
      user_entity = user_logic.logic.getForCurrentAccount()
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   333
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   334
      if user_entity.key() == entity.scope.user.key():
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   335
        # student is posting
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   336
        reviewer = entity.scope
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   337
      else:
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   338
        # check if the person commenting is an org_admin
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   339
        # or a mentor for the given proposal
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   340
        fields = {'user': user_entity,
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   341
                  'scope': entity.org,
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   342
                  'status': 'active',
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   343
                  }
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   344
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   345
        reviewer = org_admin_logic.logic.getForFields(fields, unique=True)
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   346
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   347
        if not reviewer:
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   348
          # no org_admin found, maybe it's a mentor?
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   349
          reviewer = mentor_logic.logic.getForFields(filter, unique=True)
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   350
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   351
      # create the review (reviewer might be None if a Host or Developer is posting)
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   352
      self._createReviewFor(entity, reviewer, comment, is_public=True)
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   353
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   354
    # redirect to the same page
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   355
    return http.HttpResponseRedirect('')
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   356
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   357
  def publicGet(self, request, context, params, entity, **kwargs):
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   358
    """Handles the GET request for the entity's public page.
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   359
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   360
    Args:
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   361
        entity: the student proposal entity
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   362
        rest see base.View.public()
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   363
    """
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   364
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   365
    # get some entity specific context
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   366
    self.updatePublicContext(context, entity, params)
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   367
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   368
    context['form'] = params['public_review_form']()
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   369
    template = params['public_template']
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   370
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   371
    return responses.respond(request, template, context=context)
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   372
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   373
  def updatePublicContext(self, context, entity, params):
1758
e035f81d367b Some minor style fixes.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1752
diff changeset
   374
    """Updates the context for the public page with information from the entity.
1752
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   375
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   376
    Args:
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   377
      context: the context that should be updated
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   378
      entity: a student proposal_entity used to set context
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   379
      params: dict with params for the view using this context
1426
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   380
    """
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   381
1741
0da1285f5bc0 Public reviews are now shown on the public page for the student proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1715
diff changeset
   382
    from soc.logic.models.review import logic as review_logic
0da1285f5bc0 Public reviews are now shown on the public page for the student proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1715
diff changeset
   383
1426
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   384
    context['student_name'] = entity.scope.name()
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   385
1741
0da1285f5bc0 Public reviews are now shown on the public page for the student proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1715
diff changeset
   386
    context['public_reviews'] = review_logic.getReviewsForEntity(entity,
0da1285f5bc0 Public reviews are now shown on the public page for the student proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1715
diff changeset
   387
        is_public=True, order=['created'])
1426
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   388
1469
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   389
  @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
   390
  @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
   391
  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
   392
             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
   393
    """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
   394
       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
   395
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
   396
       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
   397
    """
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
   398
    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
   399
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
   400
    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
   401
      # 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
   402
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
   403
      # 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
   404
      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
   405
      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
   406
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
   407
      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
   408
                '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
   409
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
   410
      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
   411
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
   412
      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
   413
        # 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
   414
        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
   415
        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
   416
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
   417
    # 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
   418
    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
   419
    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
   420
    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
   421
      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
   422
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
   423
    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
   424
                     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
   425
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
   426
  @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
   427
  @decorators.check_access
1498
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   428
  def edit(self, request, access_type,
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   429
           page_name=None, params=None, seed=None, **kwargs):
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   430
    """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
   431
       will be marked as invalid.
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   432
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   433
    For params see base.View.edit()
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   434
    """
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   435
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   436
    # check if request.POST contains action
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   437
    post_dict = request.POST
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   438
    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
   439
      # withdraw this proposal
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   440
      filter = {'scope_path': kwargs['scope_path'],
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   441
                'link_id': kwargs['link_id']}
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   442
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   443
      proposal_logic = params['logic']
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   444
      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
   445
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   446
      # update the entity mark it as invalid
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   447
      proposal_logic.updateEntityProperties(student_proposal_entity,
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   448
          {'status': 'invalid'})
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   449
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   450
      # redirect to the program's homepage
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   451
      redirect_url = redirects.getHomeRedirect(student_proposal_entity.program,
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   452
          {'url_name': 'program'})
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   453
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   454
      return http.HttpResponseRedirect(redirect_url)
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   455
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   456
    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
   457
           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
   458
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   459
  @decorators.merge_params
00293057b009 Added proposal withdrawal for students.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1491
diff changeset
   460
  @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
   461
  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
   462
               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
   463
    """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
   464
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   465
    For params see base.View.public().
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   466
    """
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   467
1482
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   468
    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
   469
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   470
    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
   471
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   472
    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
   473
              'status': 'active'}
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   474
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   475
    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
   476
    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
   477
        '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
   478
    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
   479
        {'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
   480
            '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
   481
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   482
    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
   483
                     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
   484
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   485
  @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
   486
  @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
   487
  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
   488
             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
   489
    """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
   490
       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
   491
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   492
    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
   493
    """
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   494
5229a40d4792 Added view which lists all orgs a student can propose to.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1469
diff changeset
   495
    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
   496
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   497
    filter = {'scope' : student_entity,
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   498
              'status': ['new', 'pending', 'accepted', 'rejected']}
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   499
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   500
    list_params = params.copy()
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   501
    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
   502
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   503
    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
   504
                     params=list_params, filter=filter, **kwargs)
d69b00439d59 Added listing of your own student proposals.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1467
diff changeset
   505
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   506
  @decorators.merge_params
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   507
  @decorators.check_access
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   508
  def review(self, request, access_type,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   509
             page_name=None, params=None, **kwargs):
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   510
    """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
   511
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   512
       For Args see base.View.public().
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
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   515
    try:
1639
170ac4ca078d Fix too long lines in soc.views.models.student_proposal module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1620
diff changeset
   516
      entity = self._logic.getFromKeyFieldsOr404(kwargs)
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   517
    except out_of_band.Error, error:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   518
      return helper.responses.errorResponse(
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   519
          error, request, template=params['error_public'])
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   520
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   521
    # get the context for this webpage
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   522
    context = responses.getUniversalContext(request)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   523
    responses.useJavaScript(context, params['js_uses_all'])
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   524
    context['page_name'] = page_name
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   525
    context['entity'] = entity
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   526
    context['entity_type'] = params['name']
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   527
    context['entity_type_url'] = params['url_name']
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   528
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   529
    # get the roles important for reviewing an application
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   530
    filter = {'user': user_logic.logic.getForCurrentAccount(),
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   531
        'scope': entity.org,
1620
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
   532
        'status': 'active'}
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   533
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   534
    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
   535
    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
   536
1639
170ac4ca078d Fix too long lines in soc.views.models.student_proposal module.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 1620
diff changeset
   537
    # 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
   538
    # to change his role for this app
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   539
    choice = request.GET.get('mentor')
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   540
    if mentor_entity and choice:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   541
      self._adjustPossibleMentors(entity, mentor_entity, choice)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   542
1779
cdd11aa8dbc7 Org admins can mark a StudentProposal as invalid if they for any reason find it ineligible.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1758
diff changeset
   543
    is_ineligible = request.GET.get('ineligible')
cdd11aa8dbc7 Org admins can mark a StudentProposal as invalid if they for any reason find it ineligible.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1758
diff changeset
   544
    if org_admin_entity and is_ineligible:
cdd11aa8dbc7 Org admins can mark a StudentProposal as invalid if they for any reason find it ineligible.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1758
diff changeset
   545
      # mark the proposal invalid and return to the list
cdd11aa8dbc7 Org admins can mark a StudentProposal as invalid if they for any reason find it ineligible.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1758
diff changeset
   546
      properties = {'status': 'invalid'}
cdd11aa8dbc7 Org admins can mark a StudentProposal as invalid if they for any reason find it ineligible.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1758
diff changeset
   547
      self._logic.updateEntityProperties(entity, properties)
cdd11aa8dbc7 Org admins can mark a StudentProposal as invalid if they for any reason find it ineligible.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1758
diff changeset
   548
cdd11aa8dbc7 Org admins can mark a StudentProposal as invalid if they for any reason find it ineligible.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1758
diff changeset
   549
      redirect = redirects.getListProposalsRedirect(entity.org,
cdd11aa8dbc7 Org admins can mark a StudentProposal as invalid if they for any reason find it ineligible.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1758
diff changeset
   550
                                                    {'url_name': 'org'})
cdd11aa8dbc7 Org admins can mark a StudentProposal as invalid if they for any reason find it ineligible.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1758
diff changeset
   551
      return http.HttpResponseRedirect(redirect)
cdd11aa8dbc7 Org admins can mark a StudentProposal as invalid if they for any reason find it ineligible.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1758
diff changeset
   552
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   553
    # decide which form to use
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   554
    if org_admin_entity:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   555
      form = params['admin_review_form']
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   556
    else:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   557
      form = params['mentor_review_form']
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   558
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   559
    if request.method == 'POST':
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   560
      return self.reviewPost(request, context, params, entity,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   561
                             form, org_admin_entity, mentor_entity, **kwargs)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   562
    else:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   563
      # request.method == 'GET'
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   564
      return self.reviewGet(request, context, params, entity,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   565
                            form, org_admin_entity, mentor_entity, **kwargs)
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
  def reviewPost(self, request, context, params, entity, form,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   568
                 org_admin, mentor, **kwargs):
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   569
    """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
   570
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   571
    Args:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   572
        entity: the student proposal entity
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   573
        form: the form to use in this view
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   574
        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
   575
        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
   576
        rest: see base.View.public()
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   577
    """
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   578
    # populate the form using the POST data
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   579
    form = form(request.POST)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   580
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   581
    if not form.is_valid():
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   582
      # return the invalid form response
1715
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   583
      # get all the extra information that should be in the context
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   584
      review_context = self._getDefaultReviewContext(entity, org_admin, mentor)
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   585
      context = dicts.merge(context, review_context)
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   586
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   587
      return self._constructResponse(request, entity=entity, context=context,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   588
          form=form, params=params, template=params['review_template'])
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   589
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   590
    fields = form.cleaned_data
1787
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   591
    is_public = fields['public']
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   592
    comment = fields['comment']
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   593
    given_score = int(fields['score'])
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   594
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   595
    if org_admin:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   596
      # 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
   597
      self._adjustMentor(entity, fields['mentor'])
1715
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   598
      reviewer = org_admin
1787
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   599
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   600
      # try to see if the rank is given and adjust the given_score if needed
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   601
      rank = fields['rank']
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   602
      if rank:
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   603
        ranker = self._logic.getRankerFor(entity)
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   604
        # if a very high rank is filled in use the highest one that returns a score
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   605
        rank = min(ranker.TotalRankedScores(), rank)
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   606
        # ranker uses zero-based ranking
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   607
        score_and_rank = ranker.FindScore(rank-1)
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   608
        # get the score at the requested rank
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   609
        score_at_rank = score_and_rank[0][0]
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   610
        # calculate the score that should be given to end up at the given rank
b623d96bc830 Organization admins can now put a Student Proposal at a specific rank.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1779
diff changeset
   611
        given_score = score_at_rank - entity.score
1715
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   612
    else:
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   613
      # might be None (if Host or Developer is commenting)
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   614
      reviewer = mentor
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   615
1715
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   616
    if reviewer and (not is_public) and (given_score is not 0):
1620
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
   617
      # if it is not a public comment and it's made by a member of the
1715
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   618
      # organization we update the score of the proposal
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   619
      new_score = given_score + entity.score
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   620
1620
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
   621
      properties = {'score': new_score}
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
   622
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
   623
      # 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
   624
      if entity.status == 'new':
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
   625
        properties['status'] = 'pending'
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
   626
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   627
      # 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
   628
      self._logic.updateEntityProperties(entity, properties)
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   629
1715
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   630
    # create the review entity
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   631
    if comment or (given_score is not 0):
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   632
      self._createReviewFor(entity, reviewer, comment, given_score, is_public)
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   633
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   634
    # redirect to the same page
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   635
    return http.HttpResponseRedirect('')
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   636
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   637
  def reviewGet(self, request, context, params, entity, form,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   638
                 org_admin, mentor, **kwargs):
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   639
    """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
   640
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   641
    Args:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   642
        entity: the student proposal entity
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   643
        form: the form to use in this view
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   644
        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
   645
        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
   646
        rest: see base.View.public()
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   647
    """
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   648
1620
45f4e9cd9100 Added access check to student_proposal review.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1613
diff changeset
   649
    # 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
   650
    initial = {'score': 0}
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   651
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   652
    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
   653
      # 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
   654
      initial['mentor'] = entity.mentor.link_id
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   655
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   656
    context['form'] = form(initial)
1715
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   657
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   658
    # get all the extra information that should be in the context
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   659
    review_context = self._getDefaultReviewContext(entity, org_admin, mentor)
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   660
    context = dicts.merge(context, review_context)
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   661
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   662
    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
   663
1715
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   664
    return responses.respond(request, template, context=context)
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   665
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   666
  def _getDefaultReviewContext(self, entity, org_admin,
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   667
                               mentor):
1758
e035f81d367b Some minor style fixes.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1752
diff changeset
   668
    """Returns the default context for the review page.
1715
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   669
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   670
    Args:
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   671
      entity: Student Proposal entity
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   672
      org_admin: org admin entity for the current user/proposal (iff available)
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   673
      mentor: mentor entity for the current user/proposal (iff available)
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   674
    """
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   675
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   676
    from soc.logic.models.review import logic as review_logic
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   677
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   678
    context = {}
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   679
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   680
    context['student_name'] = entity.scope.name()
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   681
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   682
    if entity.mentor:
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   683
      context['mentor_name'] = entity.mentor.name()
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   684
    else:
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   685
      context['mentor_name'] = "No mentor assigned"
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   686
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
   687
    # 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
   688
    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
   689
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
   690
    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
   691
      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
   692
    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
   693
      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
   694
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
   695
      for mentor_key in possible_mentors:
1715
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   696
        possible_mentor = mentor_logic.logic.getFromKeyName(mentor_key.name())
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   697
        mentor_names.append(possible_mentor.name())
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
   698
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
   699
      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
   700
1715
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   701
    # TODO(ljvderijk) listing of total given scores per mentor
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   702
    # a dict with key as role.user ?
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   703
1741
0da1285f5bc0 Public reviews are now shown on the public page for the student proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1715
diff changeset
   704
    # order the reviews by ascending creation date
0da1285f5bc0 Public reviews are now shown on the public page for the student proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1715
diff changeset
   705
    order = ['created']
1715
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   706
1741
0da1285f5bc0 Public reviews are now shown on the public page for the student proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1715
diff changeset
   707
    # get the public reviews
0da1285f5bc0 Public reviews are now shown on the public page for the student proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1715
diff changeset
   708
    context['public_reviews'] = review_logic.getReviewsForEntity(entity,
0da1285f5bc0 Public reviews are now shown on the public page for the student proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1715
diff changeset
   709
        is_public=True, order=order)
1715
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   710
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   711
    # get the private reviews
1741
0da1285f5bc0 Public reviews are now shown on the public page for the student proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1715
diff changeset
   712
    context['private_reviews'] = review_logic.getReviewsForEntity(entity,
0da1285f5bc0 Public reviews are now shown on the public page for the student proposal.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1715
diff changeset
   713
        is_public=False, order=order)
1715
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   714
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   715
    # which button should we show to the mentor?
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
   716
    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
   717
      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
   718
        # 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
   719
        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
   720
      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
   721
        # 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
   722
        context['add_me_as_mentor'] = True
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   723
1779
cdd11aa8dbc7 Org admins can mark a StudentProposal as invalid if they for any reason find it ineligible.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1758
diff changeset
   724
    if org_admin:
cdd11aa8dbc7 Org admins can mark a StudentProposal as invalid if they for any reason find it ineligible.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1758
diff changeset
   725
      context['is_org_admin'] = True
cdd11aa8dbc7 Org admins can mark a StudentProposal as invalid if they for any reason find it ineligible.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1758
diff changeset
   726
1715
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   727
    return context
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   728
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   729
  def _adjustPossibleMentors(self, entity, mentor, choice):
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   730
    """Adjusts the possible mentors list for a proposal.
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   731
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   732
    Args:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   733
      entity: Student Proposal entity
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   734
      mentor: Mentor entity
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   735
      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
   736
    """
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   737
    possible_mentors = entity.possible_mentors
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   738
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   739
    if choice == '1':
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   740
      # 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
   741
      if mentor.key() not in possible_mentors:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   742
        possible_mentors.append(mentor.key())
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   743
        fields = {'possible_mentors': possible_mentors}
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   744
        self._logic.updateEntityProperties(entity, fields)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   745
    elif choice == '0':
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   746
      # remove the mentor from the possible mentors list
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   747
      if mentor.key() in possible_mentors:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   748
        possible_mentors.remove(mentor.key())
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   749
        fields = {'possible_mentors': possible_mentors}
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   750
        self._logic.updateEntityProperties(entity, fields)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   751
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   752
  def _adjustMentor(self, entity, mentor_id):
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   753
    """Changes the mentor to the given link_id.
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   754
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   755
    Args:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   756
      entity: Student Proposal entity
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   757
      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
   758
                 Iff not given then removes the assigned mentor
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   759
    """
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   760
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   761
    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
   762
      # no need to change
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   763
      return
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   764
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   765
    if mentor_id:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   766
      # try to locate the mentor
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   767
      fields = {'link_id': mentor_id,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   768
                'scope': entity.org,
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   769
                'status': 'active'}
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   770
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   771
      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
   772
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   773
      if not mentor_entity:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   774
        # no mentor found, do not update
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   775
        return
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   776
    else:
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   777
      # reset to None
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   778
      mentor_entity = None
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   779
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   780
    # update the proposal
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   781
    properties = {'mentor': mentor_entity}
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   782
    self._logic.updateEntityProperties(entity, properties)
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   783
1752
255117ccd6a0 The student proposal public page can now be used to place a public comment.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1741
diff changeset
   784
  def _createReviewFor(self, entity, reviewer, comment, score=0, is_public=True):
1715
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   785
    """Creates a review for the given proposal.
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   786
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   787
    Args:
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   788
      entity: Student Proposal entity for which the review should be created
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   789
      reviewer: A role entity of the reviewer (if possible, else None)
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   790
      comment: The textual contents of the review
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   791
      score: The score of the review (only used if the review is not public)
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   792
      is_public: Determines if the review is a public review
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   793
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   794
    Returns:
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   795
      - The newly created review
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   796
    """
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   797
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   798
    import time
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   799
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   800
    from soc.logic.models.review import logic as review_logic
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   801
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   802
    # create the fields for the review entity
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   803
    fields = {'link_id': 't%i' %(time.time()),
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   804
        'scope': entity,
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   805
        'scope_path': entity.key().name(),
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   806
        'author': user_logic.logic.getForCurrentAccount(),
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   807
        'content': comment,
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   808
        'is_public': is_public,
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   809
        'reviewer': reviewer
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   810
        }
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   811
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   812
    # add the given score if the review is not public
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   813
    if not is_public:
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   814
      fields['score'] = score
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   815
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   816
    key_name = review_logic.getKeyNameFromFields(fields)
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   817
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   818
    return review_logic.updateOrCreateFromKeyName(fields, key_name)
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   819
3ec1a9518452 Added the review capability to the student_proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1666
diff changeset
   820
1426
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   821
view = View()
dc3a7f618b68 Added student_proposal view.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   822
1584
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1569
diff changeset
   823
admin = decorators.view(view.admin)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1569
diff changeset
   824
apply = decorators.view(view.apply)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1569
diff changeset
   825
create = decorators.view(view.create)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1569
diff changeset
   826
delete = decorators.view(view.delete)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1569
diff changeset
   827
edit = decorators.view(view.edit)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1569
diff changeset
   828
list = decorators.view(view.list)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1569
diff changeset
   829
list_orgs = decorators.view(view.listOrgs)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1569
diff changeset
   830
list_self = decorators.view(view.listSelf)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1569
diff changeset
   831
public = decorators.view(view.public)
1613
59e5cc89e509 Added student proposal review page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1584
diff changeset
   832
review = decorators.view(view.review)
1584
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1569
diff changeset
   833
export = decorators.view(view.export)
d8ba8c917f37 Make use of decorators.view for all views
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1569
diff changeset
   834
pick = decorators.view(view.pick)