app/soc/modules/ghop/views/models/task.py
author Madhusudan.C.S <madhusudancs@gmail.com>
Wed, 09 Sep 2009 20:15:53 +0200
changeset 2893 1adc6a815c71
parent 2885 f064654837f7
child 2942 996e64ba2db8
permissions -rw-r--r--
Several style and import fixes regarding the GHOP module. Reviewed by: Lennard de Rijk
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2885
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     1
#!/usr/bin/python2.5
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     2
#
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     3
# Copyright 2009 the Melange authors.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     4
#
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     5
# Licensed under the Apache License, Version 2.0 (the "License");
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     6
# you may not use this file except in compliance with the License.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     7
# You may obtain a copy of the License at
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     8
#
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
     9
#   http://www.apache.org/licenses/LICENSE-2.0
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    10
#
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    11
# Unless required by applicable law or agreed to in writing, software
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    12
# distributed under the License is distributed on an "AS IS" BASIS,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    14
# See the License for the specific language governing permissions and
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    15
# limitations under the License.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    16
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    17
"""Views for Tasks.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    18
"""
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    19
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    20
__authors__ = [
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    21
    '"Madhusudan.C.S" <madhusudancs@gmail.com>'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    22
  ]
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    23
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    24
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    25
import datetime
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    26
import time
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    27
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    28
from google.appengine.ext import db
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    29
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    30
from django import forms
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    31
from django import http
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    32
from django.utils.translation import ugettext
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    33
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    34
from soc.logic import cleaning
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    35
from soc.logic import dicts
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    36
from soc.logic.models import host as host_logic 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    37
from soc.logic.models import student as student_logic
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    38
from soc.logic.models import user as user_logic
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    39
from soc.views import helper
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    40
from soc.views import out_of_band
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    41
from soc.views.helper import decorators
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    42
from soc.views.helper import dynaform
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    43
from soc.views.helper import lists
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    44
from soc.views.helper import params as params_helper
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    45
from soc.views.helper import requests
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    46
from soc.views.helper import redirects
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    47
from soc.views.helper import responses
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    48
from soc.views.helper import widgets
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    49
from soc.views.models import base
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    50
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    51
from soc.modules.ghop.logic import cleaning as ghop_cleaning
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    52
from soc.modules.ghop.logic.models import comment as ghop_comment_logic
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    53
from soc.modules.ghop.logic.models import mentor as ghop_mentor_logic
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    54
from soc.modules.ghop.logic.models import organization as ghop_org_logic
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    55
from soc.modules.ghop.logic.models import org_admin as ghop_org_admin_logic
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    56
from soc.modules.ghop.logic.models import program as ghop_program_logic
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    57
from soc.modules.ghop.logic.models import task as ghop_task_logic
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    58
from soc.modules.ghop.models import task as ghop_task_model
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    59
from soc.modules.ghop.views.helper import access
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    60
from soc.modules.ghop.views.helper import redirects as ghop_redirects
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    61
from soc.modules.ghop.views.models import organization as ghop_org_view
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    62
from soc.modules.ghop.tasks import task_update
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    63
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    64
import soc.modules.ghop.logic.models.task
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    65
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    66
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    67
class View(base.View):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    68
  """View methods for the Tasks.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    69
  """
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    70
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    71
  DEF_AWAITING_REG_MSG = ugettext(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    72
      'The task is open but you cannot claim this task since you '
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    73
      'have not completed the student signup after finishing your '
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    74
      'first task.')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    75
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    76
  DEF_CAN_EDIT_TASK_MSG = ugettext(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    77
      'The task can be edited by clicking on the edit link '
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    78
      'next to the title above.')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    79
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    80
  DEF_MAX_TASK_LIMIT_MSG_FMT = ugettext(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    81
      'The task is open but you cannot claim this task since you '
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    82
      'either have already claimed %d task.')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    83
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    84
  DEF_SIGNIN_TO_COMMENT_MSG = ugettext(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    85
      '<a href=%s>Sign in</a> to perform any action or comment on '
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    86
      'this task.')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    87
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    88
  DEF_STUDENT_SIGNUP_MSG = ugettext(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    89
      'You have successfully completed this task. Sign up as a student '
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    90
      'before you proceed further.')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    91
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    92
  DEF_TASK_CLAIMED_BY_YOU_MSG = ugettext( 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    93
      'This task has been claimed by you!')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    94
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    95
  DEF_TASK_CLAIMED_BY_STUDENT_MSG = ugettext(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    96
      'This task has been claimed by a student!')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    97
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    98
  DEF_TASK_CLAIMED_MSG = ugettext(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
    99
      'The task is already claimed and the work is in progress.')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   100
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   101
  DEF_TASK_CLAIM_REQUESTED_MSG = ugettext(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   102
      'A student has requested to claim this task. Accept or '
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   103
      'Reject the request.')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   104
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   105
  DEF_TASK_CLOSED_MSG = ugettext('The task is closed.')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   106
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   107
  DEF_TASK_CMPLTD_BY_YOU_MSG = ugettext(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   108
      'You have successfully completed this task!')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   109
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   110
  DEF_TASK_NO_MORE_SUBMIT_MSG = ugettext(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   111
      'You have submitted the work to this task, but deadline has passed '
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   112
      'You cannot submit any more work until your mentor extends the '
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   113
      'deadline.')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   114
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   115
  DEF_TASK_MENTOR_REOPENED_MSG = ugettext(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   116
      'The task has been reopened.')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   117
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   118
  DEF_TASK_NEEDS_REVIEW_MSG = ugettext(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   119
      'Student has submitted his work for this task! It needs review.')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   120
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   121
  DEF_TASK_OPEN_MSG = ugettext(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   122
      'This task is open. If you are GHOP student, you can claim it!')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   123
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   124
  DEF_TASK_REOPENED_MSG = ugettext(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   125
      'This task has been reopened. If you are a GHOP student, '
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   126
      'you can clam it!')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   127
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   128
  DEF_TASK_REQ_CLAIMED_BY_YOU_MSG = ugettext(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   129
      'You have requested to claim this task!')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   130
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   131
  DEF_TASK_UNPUBLISHED_MSG = ugettext(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   132
      'The task is not yet published. It can be edited by clicking on '
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   133
      'the edit button below.')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   134
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   135
  DEF_WS_MSG_FMT = ugettext(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   136
      '(To see the work submitted <a href=#ws%d>click here</a>.)')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   137
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   138
  def __init__(self, params=None):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   139
    """Defines the fields and methods required for the task View class
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   140
    to provide the user with the necessary views.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   141
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   142
    Params:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   143
      params: a dict with params for this View
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   144
    """
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   145
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   146
    rights = access.GHOPChecker(params)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   147
    # TODO: create and suggest_task don't need access checks which use state
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   148
    # also feels like roles are being checked twice?
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   149
    rights['create'] = [
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   150
        ('checkCanOrgAdminOrMentorEdit', ['scope_path', True]),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   151
        ('checkRoleAndStatusForTask',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   152
            [['ghop/org_admin'], ['active'], 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   153
            []])]
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   154
    rights['edit'] = [
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   155
        ('checkCanOrgAdminOrMentorEdit', ['scope_path', False]),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   156
        ('checkRoleAndStatusForTask',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   157
            [['ghop/org_admin'], ['active'], 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   158
            ['Unapproved', 'Unpublished', 'Open']])]
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   159
    rights['delete'] = ['checkIsDeveloper']
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   160
    rights['show'] = ['checkStatusForTask']
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   161
    rights['list_org_tasks'] = [
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   162
        ('checkCanOrgAdminOrMentorEdit', ['scope_path', False])]
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   163
    rights['suggest_task'] = [
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   164
        ('checkCanOrgAdminOrMentorEdit', ['scope_path', True]),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   165
        ('checkRoleAndStatusForTask',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   166
            [['ghop/org_admin', 'ghop/mentor'], ['active'], 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   167
            []])]
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   168
    rights['search'] = ['allow']
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   169
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   170
    new_params = {}
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   171
    new_params['logic'] = soc.modules.ghop.logic.models.task.logic
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   172
    new_params['rights'] = rights
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   173
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   174
    new_params['name'] = "Task"
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   175
    new_params['module_name'] = "task"
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   176
    new_params['sidebar_grouping'] = 'Tasks'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   177
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   178
    new_params['module_package'] = 'soc.modules.ghop.views.models'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   179
    new_params['url_name'] = 'ghop/task'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   180
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   181
    new_params['scope_view'] = ghop_org_view
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   182
    new_params['scope_redirect'] = redirects.getCreateRedirect
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   183
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   184
    new_params['list_heading'] = 'modules/ghop/task/list/heading.html' 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   185
    new_params['list_row'] = 'modules/ghop/task/list/row.html'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   186
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   187
    new_params['extra_dynaexclude'] = ['task_type', 'mentors', 'user',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   188
                                       'student', 'program', 'status', 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   189
                                       'deadline', 'created_by',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   190
                                       'created_on', 'modified_by',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   191
                                       'modified_on', 'history',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   192
                                       'link_id', 'difficulty']
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   193
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   194
    patterns = []
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   195
    patterns += [
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   196
        (r'^%(url_name)s/(?P<access_type>suggest_task)/%(scope)s$',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   197
        '%(module_package)s.%(module_name)s.suggest_task',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   198
        'Mentors suggest %(name)s'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   199
        (r'^%(url_name)s/(?P<access_type>suggest_task)/%(key_fields)s$',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   200
        '%(module_package)s.%(module_name)s.suggest_task',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   201
        'Mentors edit a %(name)s'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   202
        (r'^%(url_name)s/(?P<access_type>list_org_tasks)/%(scope)s$',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   203
        '%(module_package)s.%(module_name)s.list_org_tasks',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   204
        'List Organization %(name)s'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   205
        (r'^%(url_name)s/(?P<access_type>search)/'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   206
         '(?P<scope_path>%(ulnp)s)/%(lnp)s$',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   207
        '%(module_package)s.%(module_name)s.search',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   208
        'Search for %(name)ss'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   209
        ]
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   210
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   211
    new_params['extra_django_patterns'] = patterns
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   212
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   213
    new_params['create_dynafields'] = [
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   214
        {'name': 'arbit_tags',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   215
         'base': forms.fields.CharField,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   216
         'label': 'Arbitrary Tags',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   217
         'required': False,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   218
         'group': ugettext('Tags'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   219
         'help_text': ugettext(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   220
             'Enter arbitrary Tags for this task separated by comma.\n'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   221
             '<b>Note:</b> Tag names are case sensitive. If the tag is same '
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   222
             'as the program mandated tag, it will be considered as a '
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   223
             'mandatory tag.')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   224
         },
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   225
        ]
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   226
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   227
    new_params['create_extra_dynaproperties'] = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   228
        'description': forms.fields.CharField(required=True,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   229
            widget=widgets.FullTinyMCE(attrs={'rows': 25, 'cols': 100})),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   230
        'scope_path': forms.CharField(widget=forms.HiddenInput,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   231
            required=True),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   232
        'time_to_complete': forms.IntegerField(min_value=1,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   233
                                               required=True),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   234
        'clean_description': cleaning.clean_html_content('description'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   235
        'clean_arbit_tags': cleaning.str2set('arbit_tags'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   236
        }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   237
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   238
    new_params['edit_extra_dynaproperties'] = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   239
        'link_id': forms.CharField(widget=forms.HiddenInput)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   240
        }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   241
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   242
    new_params['public_template'] = 'modules/ghop/task/public.html'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   243
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   244
    params = dicts.merge(params, new_params, sub_merge=True)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   245
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   246
    super(View, self).__init__(params=params)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   247
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   248
    # holds the base form for the task creation and editing
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   249
    self._params['base_create_form'] = self._params['create_form']
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   250
    self._params['base_edit_form'] = self._params['edit_form'] 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   251
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   252
    # extend create and edit form for org admins
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   253
    dynafields = [
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   254
        {'name': 'mentors_list',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   255
         'required': True,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   256
         'base': forms.fields.CharField,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   257
         'label': 'Assign mentors',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   258
         'help_text': 'Assign mentors to this task by '
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   259
             'giving their link_ids separated by comma.',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   260
         },
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   261
        {'name': 'published',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   262
         'required': False,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   263
         'initial': False,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   264
         'base': forms.fields.BooleanField,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   265
         'label': 'Publish the task',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   266
         'help_text': ugettext('By ticking this box, the task will be'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   267
                               'made public and can be claimed by students.'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   268
         }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   269
        ]
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   270
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   271
    dynaproperties = params_helper.getDynaFields(dynafields)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   272
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   273
    dynaproperties['clean_mentors_list'] = ghop_cleaning.cleanMentorsList(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   274
        'mentors_list')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   275
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   276
    create_form = dynaform.extendDynaForm(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   277
        dynaform=self._params['create_form'],
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   278
        dynaproperties=dynaproperties)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   279
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   280
    self._params['create_form'] = create_form
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   281
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   282
    edit_form = dynaform.extendDynaForm(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   283
        dynaform=self._params['edit_form'],
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   284
        dynaproperties=dynaproperties)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   285
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   286
    self._params['edit_form'] = edit_form
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   287
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   288
    # create the comment form
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   289
    dynafields = [
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   290
        {'name': 'comment',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   291
         'base': forms.CharField,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   292
         'widget': widgets.FullTinyMCE(attrs={'rows': 10, 'cols': 40}),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   293
         'label': 'Comment',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   294
         'required': False,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   295
         'example_text': 'Comment is optional.<br/>'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   296
             'Choose an appropriate Action below and Save your '
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   297
             'changes.<br /><br />Caution, you will not be able '
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   298
             'to edit your comment!',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   299
         },
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   300
         ]
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   301
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   302
    dynaproperties = params_helper.getDynaFields(dynafields)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   303
    dynaproperties['clean_comment'] = cleaning.clean_html_content('comment')
2893
1adc6a815c71 Several style and import fixes regarding the GHOP module.
Madhusudan.C.S <madhusudancs@gmail.com>
parents: 2885
diff changeset
   304
    dynaproperties['clean'] = ghop_cleaning.cleanTaskComment(
2885
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   305
        'comment', 'action', 'work_submission')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   306
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   307
    comment_form = dynaform.newDynaForm(dynamodel=None, 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   308
        dynabase=helper.forms.BaseForm, dynainclude=None, 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   309
        dynaexclude=None, dynaproperties=dynaproperties)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   310
    self._params['comment_form'] = comment_form
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   311
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   312
  def _getTagsForProgram(self, form_name, params, **kwargs):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   313
    """Extends form dynamically from difficulty levels in program entity.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   314
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   315
    Args:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   316
     form_name: the Form entry in params to extend
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   317
     params: the params for the view
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   318
    """
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   319
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   320
    # obtain program_entity using scope_path which holds 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   321
    # the org_entity key_name
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   322
    org_entity = ghop_org_logic.logic.getFromKeyName(kwargs['scope_path'])
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   323
    program_entity = ghop_program_logic.logic.getFromKeyName(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   324
        org_entity.scope_path)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   325
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   326
    # get a list difficulty levels stored for the program entity
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   327
    tds = ghop_task_model.TaskDifficultyTag.get_by_scope(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   328
        program_entity) 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   329
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   330
    difficulties = []
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   331
    for td in tds:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   332
      difficulties.append((td.tag, td.tag))
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   333
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   334
    # get a list of task type tags stored for the program entity
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   335
    tts = ghop_task_model.TaskTypeTag.get_by_scope(program_entity) 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   336
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   337
    type_tags = []
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   338
    for tt in tts:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   339
      type_tags.append((tt.tag, tt.tag))
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   340
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   341
    # create the difficultly level field containing the choices 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   342
    # defined in the program entity
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   343
    dynafields = [
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   344
        {'name': 'difficulty',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   345
         'base': forms.ChoiceField,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   346
         'label': 'Difficulty level',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   347
         'required': True,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   348
         'passthrough': ['initial', 'required', 'choices',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   349
                         'label', 'help_text'],
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   350
         'choices': difficulties,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   351
         'group': ugettext('Tags'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   352
         'help_text': ugettext('Difficulty Level of this task.'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   353
         },
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   354
         {'name': 'type_tags',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   355
         'base': forms.MultipleChoiceField,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   356
         'label': 'Task Types',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   357
         'required': True,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   358
         'passthrough': ['initial', 'required', 'choices',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   359
                         'label', 'help_text'],
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   360
         'choices': type_tags,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   361
         'group': ugettext('Tags'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   362
         'help_text': ugettext('Task Type tags mandated by the program. You '
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   363
                               'must select one or more of them.'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   364
         },
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   365
       ]
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   366
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   367
    dynaproperties = params_helper.getDynaFields(dynafields)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   368
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   369
    extended_form = dynaform.extendDynaForm(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   370
        dynaform=params[form_name],
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   371
        dynaproperties=dynaproperties)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   372
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   373
    return extended_form
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   374
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   375
  @decorators.check_access
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   376
  def create(self, request, access_type,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   377
             page_name=None, params=None, **kwargs):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   378
    """Replaces the create Form with the dynamic one.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   379
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   380
    For args see base.View.create().
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   381
    """
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   382
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   383
    params = dicts.merge(params, self._params)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   384
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   385
    # extend create_form to include difficulty levels
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   386
    params['create_form'] = self._getTagsForProgram(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   387
        'create_form', params, **kwargs)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   388
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   389
    return super(View, self).create(request, 'allow', page_name=page_name,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   390
                                    params=params, **kwargs)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   391
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   392
  @decorators.merge_params
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   393
  @decorators.check_access
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   394
  def edit(self, request, access_type,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   395
           page_name=None, params=None, seed=None, **kwargs):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   396
    """See base.View.edit().
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   397
    """
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   398
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   399
    logic = params['logic']
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   400
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   401
    context = helper.responses.getUniversalContext(request)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   402
    helper.responses.useJavaScript(context, params['js_uses_all'])
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   403
    context['page_name'] = page_name
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   404
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   405
    try:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   406
      entity = logic.getFromKeyFieldsOr404(kwargs)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   407
    except out_of_band.Error, error:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   408
      msg = self.DEF_CREATE_NEW_ENTITY_MSG_FMT % {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   409
          'entity_type_lower' : params['name'].lower(),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   410
          'entity_type' : params['name'],
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   411
          'create' : params['missing_redirect']
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   412
          }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   413
      error.message_fmt = error.message_fmt + msg
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   414
      return helper.responses.errorResponse(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   415
          error, request, context=context)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   416
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   417
    user_account = user_logic.logic.getForCurrentAccount()
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   418
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   419
    filter = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   420
        'user': user_account,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   421
        }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   422
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   423
    # extend edit_form to include difficulty levels
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   424
    params['edit_form'] = self._getTagsForProgram(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   425
        'edit_form', params, **kwargs)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   426
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   427
    org_admin_entities = ghop_org_admin_logic.logic.getForFields(filter) 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   428
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   429
    if entity and entity.status == 'Unapproved':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   430
      approval_req = True 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   431
      for org_admin_entity in org_admin_entities:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   432
        if org_admin_entity.key().name() == entity.created_by.key().name():
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   433
          approval_req = False
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   434
          break
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   435
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   436
      if approval_req:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   437
        dynafields = [
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   438
            {'name': 'approved',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   439
             'required': False,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   440
             'initial': False,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   441
             'base': forms.fields.BooleanField,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   442
             'label': 'Approve the task',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   443
             'help_text': 'By ticking this box, the task will be'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   444
                 'will be approved for publishing.',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   445
            }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   446
            ]
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   447
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   448
        dynaproperties = params_helper.getDynaFields(dynafields)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   449
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   450
        edit_form = dynaform.extendDynaForm(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   451
            dynaform=params['edit_form'],
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   452
            dynaproperties=dynaproperties)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   453
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   454
        params['edit_form'] = edit_form
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   455
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   456
    if request.method == 'POST':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   457
      return self.editPost(request, entity, context, params=params)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   458
    else:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   459
      return self.editGet(request, entity, context, params=params)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   460
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   461
  def _editGet(self, request, entity, form):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   462
    """See base.View._editGet().
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   463
    """
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   464
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   465
    if entity.task_type:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   466
      form.fields['type_tags'].initial = entity.tags_string(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   467
          entity.task_type, ret_list=True)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   468
    if entity.arbit_tag:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   469
      form.fields['arbit_tags'].initial = entity.tags_string(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   470
          entity.arbit_tag)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   471
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   472
    if entity.difficulty:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   473
      form.fields['difficulty'].initial = entity.tags_string( 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   474
          entity.difficulty)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   475
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   476
    if entity.mentors and 'mentors_list' in form.fields:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   477
      mentor_entities = db.get(entity.mentors)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   478
      mentors_list = []
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   479
      for mentor in mentor_entities:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   480
        mentors_list.append(mentor.link_id)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   481
      form.fields['mentors_list'].initial = ', '.join(mentors_list)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   482
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   483
    form.fields['link_id'].initial = entity.link_id
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   484
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   485
    # checks if the task is already approved or not and sets
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   486
    # the form approved field
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   487
    if 'approved' in form.fields:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   488
      if entity.status == 'Unapproved':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   489
        form.fields['approved'].initial = False
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   490
      else:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   491
        form.fields['approved'].initial = True
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   492
 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   493
    # checks if the task is already published or not and sets
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   494
    # the form published field 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   495
    if 'published' in form.fields:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   496
      if entity.status == 'Unapproved' or entity.status == 'Unpublished':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   497
        form.fields['published'].initial = False
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   498
      else:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   499
        form.fields['published'].initial = True
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   500
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   501
    return super(View, self)._editGet(request, entity, form)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   502
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   503
  def _editPost(self, request, entity, fields):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   504
    """See base._editPost().
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   505
    """
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   506
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   507
    super(View, self)._editPost(request, entity, fields)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   508
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   509
    # TODO: this method can be made more clear, it seems a bit of a mess
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   510
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   511
    if not entity:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   512
      program_entity = fields['scope'].scope
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   513
      fields['program'] = program_entity
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   514
    else:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   515
      program_entity = entity.program 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   516
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   517
    user_account = user_logic.logic.getForCurrentAccount()
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   518
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   519
    filter = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   520
        'user': user_account,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   521
        'scope': fields['scope'],
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   522
        'status': 'active'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   523
        }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   524
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   525
    role_entity = ghop_org_admin_logic.logic.getForFields(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   526
        filter, unique=True)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   527
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   528
    if role_entity:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   529
      # this user can publish/approve the task
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   530
      if fields.get('approved') and fields.get('published'):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   531
        fields['status'] = 'Open'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   532
      elif not fields.get('approved'):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   533
        fields['status'] = 'Unapproved'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   534
      else:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   535
        fields['status'] = 'Unpublished'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   536
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   537
      fields['mentors'] = []
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   538
      if fields.get('mentors_list'):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   539
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   540
        for mentor_link_id in fields['mentors_list']:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   541
          properties = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   542
              'scope_path': fields['scope_path'],
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   543
              'link_id': mentor_link_id,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   544
              }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   545
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   546
          mentor_entity = ghop_mentor_logic.logic.getFromKeyFields(properties)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   547
          fields['mentors'].append(mentor_entity.key())
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   548
    else:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   549
      role_entity = ghop_mentor_logic.logic.getForFields(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   550
          filter, unique=True)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   551
      if not entity:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   552
        # creating a new task
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   553
        fields['status'] = 'Unapproved'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   554
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   555
    # explicitly change the last_modified_on since the content has been edited
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   556
    fields['modified_on'] = datetime.datetime.now()
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   557
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   558
    if not entity:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   559
      fields['link_id'] = 't%i' % (int(time.time()*100))
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   560
      fields['modified_by'] = role_entity
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   561
      fields['created_by'] = role_entity 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   562
      fields['created_on'] = datetime.datetime.now()
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   563
    else:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   564
      fields['link_id'] = entity.link_id
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   565
      fields['modified_by'] = role_entity
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   566
      if 'status' not in fields:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   567
        fields['status'] = entity.status
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   568
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   569
    fields['difficulty'] = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   570
        'tags': fields['difficulty'],
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   571
        'scope': program_entity
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   572
        }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   573
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   574
    fields['task_type'] = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   575
        'tags': fields['type_tags'],
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   576
        'scope': program_entity
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   577
        }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   578
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   579
    fields['arbit_tag'] = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   580
        'tags': fields['arbit_tags'],
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   581
        'scope': program_entity
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   582
        }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   583
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   584
    return
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   585
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   586
  @decorators.merge_params
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   587
  @decorators.check_access
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   588
  def suggestTask(self, request, access_type, page_name=None, 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   589
                  params=None, **kwargs):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   590
    """View used to allow mentors to create or edit a task. 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   591
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   592
    Tasks created by mentors must be approved by org admins
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   593
    before they are published.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   594
    """
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   595
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   596
    params = dicts.merge(params, self._params)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   597
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   598
    if 'link_id' in kwargs:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   599
      # extend create_form to include difficulty levels
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   600
      params['mentor_form'] = self._getTagsForProgram(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   601
          'base_edit_form', params, **kwargs)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   602
      try:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   603
        entity = self._logic.getFromKeyFieldsOr404(kwargs)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   604
      except out_of_band.Error, error:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   605
        return helper.responses.errorResponse(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   606
            error, request, template=params['error_public'])
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   607
    else:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   608
      # extend create_form to include difficulty levels
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   609
      params['mentor_form'] = self._getTagsForProgram(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   610
          'base_create_form', params, **kwargs)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   611
      entity = None
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   612
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   613
    context = helper.responses.getUniversalContext(request)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   614
    helper.responses.useJavaScript(context, params['js_uses_all'])
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   615
    context['page_name'] = page_name
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   616
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   617
    if request.method == 'POST':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   618
      return self.suggestTaskPost(request, context,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   619
                                  params, entity)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   620
    else:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   621
      return self.suggestTaskGet(request, context,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   622
                                 params, entity, **kwargs)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   623
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   624
  def suggestTaskPost(self, request, context, params, entity):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   625
    """Handles the POST request for the suggest task view.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   626
    """
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   627
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   628
    form = params['mentor_form'](request.POST)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   629
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   630
    if not form.is_valid():
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   631
      return self._constructResponse(request, None, context, form, params)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   632
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   633
    _, fields = helper.forms.collectCleanedFields(form)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   634
    # TODO: this non-standard view shouldn't call _editPost but its own method
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   635
    self._editPost(request, entity, fields)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   636
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   637
    logic = params['logic']
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   638
    if entity:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   639
      entity = logic.updateEntityProperties(entity, fields)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   640
    else:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   641
      entity = logic.updateOrCreateFromFields(fields)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   642
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   643
    page_params = params['edit_params']
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   644
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   645
    redirect = ghop_redirects.getSuggestTaskRedirect(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   646
        entity, params)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   647
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   648
    return http.HttpResponseRedirect(redirect)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   649
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   650
  def suggestTaskGet(self, request, context, params, entity, **kwargs):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   651
    """Handles the GET request for the suggest task view.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   652
    """
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   653
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   654
    if entity:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   655
      # populate form with the existing entity
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   656
      form = params['mentor_form'](instance=entity)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   657
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   658
      self._editGet(request, entity, form)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   659
    else:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   660
      form = params['mentor_form']()
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   661
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   662
    return self._constructResponse(request, entity, context, form, params)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   663
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   664
  @decorators.merge_params
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   665
  @decorators.check_access
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   666
  def listOrgTasks(self, request, access_type,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   667
                   page_name=None, params=None, **kwargs):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   668
    """See base.View.list()
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   669
    """
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   670
    if request.method == 'POST':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   671
      return self.listOrgTasksPost(request, params, **kwargs)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   672
    else: # request.method == 'GET'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   673
      return self.listOrgTasksGet(request, page_name, params, **kwargs)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   674
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   675
  def listOrgTasksPost(self, request, params, **kwargs):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   676
    """Handles the POST request for the list tasks view.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   677
    """
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   678
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   679
    # update the status of task entities that have been approved
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   680
    # and published
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   681
    task_entities = []
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   682
    for key_name, published in request.POST.items():
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   683
      task_entity = ghop_task_logic.logic.getFromKeyName(key_name)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   684
      if task_entity:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   685
        task_entity.status = 'Open'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   686
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   687
        task_entities.append(task_entity)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   688
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   689
    # bulk update the task_entities
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   690
    # TODO: Have to be replaced by Task Queue APIs later
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   691
    db.put(task_entities)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   692
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   693
    # redirect to the same page
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   694
    return http.HttpResponseRedirect('')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   695
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   696
  def listOrgTasksGet(self, request, page_name, params, **kwargs):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   697
    """Handles the GET request for the list tasks view.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   698
    """
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   699
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   700
    from soc.modules.ghop.views.helper import list_info as list_info_helper
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   701
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   702
    org_entity =  ghop_org_logic.logic.getFromKeyNameOr404(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   703
        kwargs['scope_path'])
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   704
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   705
    contents = []
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   706
    context = {}
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   707
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   708
    user_account = user_logic.logic.getForCurrentAccount()
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   709
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   710
    fields = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   711
        'user': user_account,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   712
        'scope': org_entity,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   713
        'status': 'active'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   714
        }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   715
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   716
    up_params = params.copy()
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   717
    # give the capability to approve tasks for the org_admins
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   718
    if ghop_org_admin_logic.logic.getForFields(fields, unique=True):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   719
      up_params['list_template'] = 'modules/ghop/task/approve/approve.html'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   720
      up_params['list_heading'] = 'modules/ghop/task/approve/heading.html'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   721
      up_params['list_row'] = 'modules/ghop/task/approve/row.html'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   722
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   723
    up_params['list_action'] = (redirects.getPublicRedirect,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   724
                                up_params)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   725
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   726
    up_params['list_description'] = ugettext(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   727
       'List of Unapproved or Unpublished tasks')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   728
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   729
    filter = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   730
        'scope': org_entity,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   731
        'status': ['Unapproved', 'Unpublished'],
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   732
        }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   733
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   734
    up_list = lists.getListContent(request, up_params, filter,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   735
                                   order=order, idx=0, 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   736
                                   need_content=True)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   737
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   738
    if up_list:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   739
      up_mentors_list = {}
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   740
      for task_entity in up_list['data']:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   741
        up_mentors_list[task_entity.key()] = db.get(task_entity.mentors)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   742
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   743
      up_list['info'] = (list_info_helper.getTasksInfo(up_mentors_list), None)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   744
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   745
      contents.append(up_list)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   746
      context['up_list'] = True
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   747
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   748
    ap_params = up_params.copy()
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   749
    ap_params['list_template'] = 'soc/models/list.html'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   750
    ap_params['list_heading'] = 'modules/ghop/task/list/heading.html'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   751
    ap_params['list_row'] = 'modules/ghop/task/list/row.html'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   752
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   753
    ap_params['list_action'] = (redirects.getPublicRedirect,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   754
                                ap_params)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   755
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   756
    ap_params['list_description'] = ugettext(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   757
       'List of published tasks')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   758
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   759
    filter = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   760
        'scope': org_entity,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   761
        'status': ['Open', 'Reopened', 'ClaimRequested', 'Claimed',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   762
            'ActionNeeded', 'Closed', 'AwaitingRegistration', 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   763
            'NeedsWork', 'NeedsReview'],
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   764
        }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   765
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   766
    ap_list = lists.getListContent(request, ap_params, filter,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   767
                                   order=order, idx=1, 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   768
                                   need_content=True)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   769
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   770
    if ap_list:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   771
      ap_mentors_list = {}
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   772
      for task_entity in ap_list['data']:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   773
        ap_mentors_list[task_entity.key()] = db.get(task_entity.mentors)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   774
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   775
      ap_list['info'] = (list_info_helper.getTasksInfo(ap_mentors_list), None)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   776
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   777
      contents.append(ap_list)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   778
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   779
    # call the _list method from base to display the list
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   780
    return self._list(request, up_params, contents, page_name, context)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   781
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   782
  @decorators.merge_params
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   783
  @decorators.check_access
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   784
  def public(self, request, access_type,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   785
             page_name=None, params=None, **kwargs):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   786
    """See base.View.public().
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   787
    """
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   788
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   789
    # create default template context for use with any templates
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   790
    context = helper.responses.getUniversalContext(request)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   791
    helper.responses.useJavaScript(context, params['js_uses_all'])
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   792
    context['page_name'] = page_name
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   793
    entity = None
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   794
    logic = params['logic']
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   795
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   796
    try:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   797
      entity, comment_entities, ws_entities = (
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   798
          logic.getFromKeyFieldsWithCWSOr404(kwargs))
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   799
    except out_of_band.Error, error:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   800
      return helper.responses.errorResponse(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   801
          error, request, template=params['error_public'], context=context)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   802
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   803
    if entity.status in ['Claimed', 'NeedsReview',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   804
                         'ActionNeeded', 'NeedsWork']:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   805
      entity, comment_entity, ws_entity = (
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   806
          ghop_task_logic.logic.updateTaskStatus(entity))
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   807
      if comment_entity:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   808
        comment_entities.append(comment_entity)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   809
      if ws_entity:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   810
        ws_entities.append(ws_entity)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   811
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   812
    context['entity'] = entity
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   813
    context['entity_key_name'] = entity.key().id_or_name() 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   814
    context['entity_type'] = params['name']
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   815
    context['entity_type_url'] = params['url_name']
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   816
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   817
    user_account = user_logic.logic.getForCurrentAccount()
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   818
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   819
    # get some entity specific context
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   820
    self.updatePublicContext(context, entity, comment_entities,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   821
                             ws_entities, user_account, params)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   822
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   823
    validation = self._constructActionsList(context, entity, 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   824
                                            user_account, params)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   825
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   826
    context = dicts.merge(params['context'], context)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   827
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   828
    if request.method == 'POST':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   829
      return self.publicPost(request, context, params, entity, 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   830
                             user_account, validation, **kwargs)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   831
    else: # request.method == 'GET'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   832
      return self.publicGet(request, context, params, entity,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   833
                            user_account, **kwargs)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   834
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   835
  def publicPost(self, request, context, params, entity,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   836
                 user_account=None, validation=None, **kwargs):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   837
    """Handles the POST request for the entity's public page.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   838
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   839
    Args:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   840
        entity: the task entity
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   841
        rest: see base.View.public()
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   842
    """
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   843
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   844
    from soc.modules.ghop.logic.models import student as ghop_student_logic
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   845
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   846
    form = params['comment_form'](request.POST)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   847
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   848
    if not form.is_valid():
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   849
      template = params['public_template']
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   850
      context['comment_form'] = form
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   851
      return self._constructResponse(request, entity, context,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   852
                                     form, params, template=template)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   853
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   854
    _, fields = helper.forms.collectCleanedFields(form)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   855
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   856
    changes = []
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   857
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   858
    action = fields['action']
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   859
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   860
    properties = None
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   861
    ws_properties = None
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   862
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   863
    # TODO: this can be separated into several methods that handle the changes
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   864
    if validation == 'claim_request' and action == 'request':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   865
      deadline = datetime.datetime.now() + datetime.timedelta(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   866
            hours=entity.time_to_complete)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   867
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   868
      properties = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   869
          'status': 'ClaimRequested',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   870
          'user': user_account,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   871
          'deadline': deadline,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   872
          }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   873
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   874
      st_filter = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   875
          'user': user_account,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   876
          'scope': entity.program,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   877
          'status': 'active'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   878
          }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   879
      student_entity = ghop_student_logic.logic.getForFields(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   880
          st_filter, unique=True)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   881
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   882
      if student_entity:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   883
        properties['student'] = student_entity
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   884
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   885
      changes.extend([ugettext('User-Student'), 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   886
                      ugettext('Action-Claim Requested'), 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   887
                      ugettext('Status-%s' % (properties['status']))
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   888
                      ])
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   889
    elif (validation == 'claim_withdraw' or 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   890
        validation == 'needs_review') and action == 'withdraw':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   891
      properties = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   892
          'user': None,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   893
          'student': None,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   894
          'status': 'Reopened',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   895
          'deadline': None,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   896
          }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   897
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   898
      changes.extend([ugettext('User-Student'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   899
                      ugettext('Action-Withdrawn'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   900
                      ugettext('Status-%s' % (properties['status']))
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   901
                      ])
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   902
    elif validation == 'needs_review' and action == 'needs_review':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   903
      properties = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   904
          'status': 'NeedsReview',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   905
          }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   906
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   907
      changes.extend([
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   908
          ugettext('User-Student'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   909
          ugettext('Action-Submitted work and Requested for review'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   910
          ugettext('Status-%s' % (properties['status']))])
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   911
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   912
      ws_properties = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   913
          'parent': entity,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   914
          'link_id': 't%i' % (int(time.time()*100)),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   915
          'scope_path': entity.key().name(),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   916
          'scope': entity.scope,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   917
          'user': user_account,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   918
          'information': fields['comment'],
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   919
          'url_to_work': fields['work_submission'],
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   920
          'submitted_on': datetime.datetime.now(),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   921
          }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   922
    elif validation == 'accept_claim':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   923
      if action == 'accept':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   924
        deadline = datetime.datetime.now() + datetime.timedelta(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   925
            hours=entity.time_to_complete)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   926
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   927
        properties = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   928
            'status': 'Claimed',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   929
            'deadline': deadline,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   930
            }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   931
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   932
        changes.extend([ugettext('User-Mentor'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   933
                        ugettext('Action-Claim Accepted'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   934
                        ugettext('Status-%s' % (properties['status']))
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   935
                        ])
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   936
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   937
        task_update.spawnUpdateTask(entity)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   938
      if action == 'reject':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   939
        properties = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   940
            'user': None,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   941
            'student': None,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   942
            'status': 'Reopened',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   943
            'deadline': None,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   944
            }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   945
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   946
        changes.extend([ugettext('User-Mentor'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   947
                        ugettext('Action-Claim Rejected'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   948
                        ugettext('Status-%s' % (properties['status']))
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   949
                        ])
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   950
    elif validation == 'close':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   951
      if action == 'needs_work':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   952
        properties = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   953
            'status': 'NeedsWork',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   954
            }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   955
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   956
        changes.extend([ugettext('User-Mentor'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   957
                        ugettext('Action-Requested more work'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   958
                        ugettext('Status-%s' % (properties['status']))
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   959
                        ])
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   960
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   961
        if fields['extended_deadline'] > 0:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   962
          deadline = entity.deadline + datetime.timedelta(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   963
              hours=fields['extended_deadline'])
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   964
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   965
          properties['deadline'] = deadline
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   966
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   967
          changes.append(ugettext('DeadlineExtendedBy-%d hrs to %s' % (
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   968
              fields['extended_deadline'], deadline.strftime(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   969
                  '%d %B %Y, %H :%M'))))
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   970
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   971
          task_update.spawnUpdateTask(entity)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   972
        else:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   973
          changes.append(ugettext('NoDeadlineExtensionGiven'))
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   974
      elif action == 'reopened':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   975
        properties = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   976
          'user': None,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   977
          'student': None,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   978
          'status': 'Reopened',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   979
          'deadline': None,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   980
          }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   981
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   982
        changes.extend([ugettext('User-Mentor'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   983
                        ugettext('Action-Reopened'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   984
                        ugettext('Status-%s' % (properties['status']))
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   985
                        ])
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   986
      elif action == 'closed':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   987
        properties = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   988
            'deadline': None,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   989
            }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   990
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   991
        if entity.student:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   992
          properties['status'] = 'Closed'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   993
        else:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   994
          properties['status'] = 'AwaitingRegistration'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   995
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   996
        changes.extend([ugettext('User-Mentor'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   997
                        ugettext('Action-Closed the task'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   998
                        ugettext('Status-%s' % (properties['status']))
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
   999
                        ])
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1000
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1001
    comment_properties = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1002
        'parent': entity,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1003
        'scope_path': entity.key().name(),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1004
        'created_by': user_account,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1005
        'changes': changes,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1006
        }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1007
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1008
    if ws_properties:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1009
      comment_properties['content'] = self.DEF_WS_MSG_FMT
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1010
    else:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1011
      comment_properties['content'] = fields['comment']
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1012
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1013
    ghop_task_logic.logic.updateEntityPropertiesWithCWS(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1014
        entity, properties, comment_properties, ws_properties)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1015
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1016
    # redirect to the same page
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1017
    return http.HttpResponseRedirect('')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1018
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1019
  def publicGet(self, request, context, params, entity,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1020
                user_account, **kwargs):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1021
    """Handles the GET request for the entity's public page.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1022
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1023
    Args:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1024
        entity: the task entity
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1025
        rest see base.View.public()
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1026
    """
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1027
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1028
    context['comment_form'] = params['comment_form']()
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1029
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1030
    template = params['public_template']
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1031
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1032
    return responses.respond(request, template, context=context)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1033
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1034
  def updatePublicContext(self, context, entity, comment_entities,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1035
                          ws_entities, user_account, params):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1036
    """Updates the context for the public page with information.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1037
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1038
    Args:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1039
      context: the context that should be updated
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1040
      entity: a task used to set context
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1041
      user_account: user entity of the logged in user
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1042
      params: dict with params for the view using this context
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1043
    """
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1044
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1045
    mentor_entities = db.get(entity.mentors)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1046
    mentors_str = ""
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1047
    for mentor in mentor_entities:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1048
      mentors_str += mentor.name() + ", "
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1049
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1050
    if mentors_str:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1051
      context['mentors_str'] = mentors_str[:-2]
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1052
    else:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1053
      context['mentors_str'] = "Not Assigned" 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1054
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1055
    context['difficulty_str'] = entity.tags_string(entity.difficulty)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1056
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1057
    context['task_type_str'] = entity.tags_string(entity.task_type)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1058
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1059
    if entity.deadline:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1060
      # TODO: it should be able to abuse Django functionality for this
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1061
      ttc = entity.deadline - datetime.datetime.now()
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1062
      (ttc_min, ttc_hour) = ((ttc.seconds / 60), (ttc.seconds / 3600))
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1063
      if ttc_min >= 60:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1064
        ttc_min = ttc_min % 60
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1065
      if ttc_hour > 1:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1066
        if ttc_min == 0:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1067
          ttc_str = '%d hours' % (ttc_hour)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1068
        else:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1069
          ttc_str = '%d:%02d hours' % (ttc_hour, ttc_min)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1070
        if ttc.days == 1:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1071
          ttc_str = '%d day, %s' % (ttc.days, ttc_str)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1072
        elif ttc.days > 1:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1073
          ttc_str = '%d days, %s' % (ttc.days, ttc_str)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1074
      else:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1075
        ttc_str = '%d mins' % (ttc_min)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1076
      context['time_to_complete'] = ttc_str
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1077
    else:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1078
      if entity.status == 'NeedsReview':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1079
        context['time_to_complete'] = 'No Time Left'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1080
      else:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1081
        context['time_to_complete'] = '%d hours' % (entity.time_to_complete)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1082
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1083
    context['comments'] = comment_entities
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1084
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1085
    context['work_submissions'] = ws_entities
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1086
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1087
  def _constructActionsList(self, context, entity,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1088
                            user_account, params):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1089
    """Constructs a list of actions for the task page and extends
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1090
    the comment form with this list.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1091
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1092
    This method also returns the validation used by POST method to 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1093
    validate the user input data.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1094
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1095
    Args:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1096
      context: the context that should be updated
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1097
      entity: a task used to set context
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1098
      user_account: user entity of the logged in user
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1099
      params: dict with params for the view using this context
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1100
    """
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1101
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1102
    # variable that holds what kind of validation this user
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1103
    # and task combination pass.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1104
    validation = None
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1105
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1106
    # The following header messages are shown for non-logged in
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1107
    # general public, logged in public and the student.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1108
    if entity.status is 'Closed':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1109
      context['header_msg'] = self.DEF_TASK_CLOSED_MSG
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1110
      validation = 'closed'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1111
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1112
    if entity.status == 'Open':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1113
      context['header_msg'] = self.DEF_TASK_OPEN_MSG
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1114
    elif entity.status == 'Reopened':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1115
      context['header_msg'] = self.DEF_TASK_REOPENED_MSG
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1116
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1117
    if user_account:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1118
      actions = [('noaction', 'Comment without action')]
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1119
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1120
      # if the user is logged give him the permission to claim
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1121
      # the task only if he none of program host, org admin or mentor
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1122
      filter = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1123
          'user': user_account,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1124
          }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1125
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1126
      host_entity = host_logic.logic.getForFields(filter, unique=True)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1127
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1128
      filter['scope_path'] = entity.scope_path
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1129
      org_admin_entity = ghop_org_admin_logic.logic.getForFields(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1130
          filter, unique=True)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1131
      mentor_entity = ghop_mentor_logic.logic.getForFields(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1132
          filter, unique=True)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1133
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1134
      if host_entity or org_admin_entity or mentor_entity:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1135
        validation, mentor_actions = self._constructMentorActions(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1136
            context, entity)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1137
        actions += mentor_actions
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1138
        if entity.status in ['Unapproved', 'Unpublished', 'Open']:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1139
          if host_entity or org_admin_entity:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1140
            context['edit_link'] = redirects.getEditRedirect(entity, params)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1141
          elif mentor_entity:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1142
            context['suggest_link'] = ghop_redirects.getSuggestTaskRedirect(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1143
                entity, params)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1144
      else:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1145
        validation, student_actions = self._constructStudentActions(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1146
            context, entity, user_account)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1147
        actions += student_actions
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1148
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1149
      # create the difficultly level field containing the choices 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1150
      # defined in the program entity
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1151
      dynafields = [
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1152
          {'name': 'action',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1153
           'base': forms.ChoiceField,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1154
           'label': 'Action',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1155
           'required': False,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1156
           'passthrough': ['initial', 'required', 'choices'],
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1157
           'choices': actions,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1158
           },
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1159
         ]
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1160
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1161
      if validation == 'needs_review':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1162
        dynafields.append(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1163
            {'name': 'work_submission',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1164
             'base': forms.URLField,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1165
             'label': 'Submit Work',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1166
             'required': False,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1167
             'help_text': 'Provide a link to your work in this box. '
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1168
                 'Please use the comment box if you need to explain '
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1169
                 'of your work.',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1170
             })
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1171
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1172
      if validation == 'close':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1173
        dynafields.append(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1174
            {'name': 'extended_deadline',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1175
             'base': forms.IntegerField,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1176
             'min_value': 1,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1177
             'label': 'Extend deadline by',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1178
             'required': False,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1179
             'passthrough': ['min_value', 'required', 'help_text'],
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1180
             'help_text': 'Optional: Specify the number of hours by '
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1181
                 'which you want to extend the deadline for the task '
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1182
                 'for this student. ',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1183
             })
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1184
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1185
      dynaproperties = params_helper.getDynaFields(dynafields)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1186
      if validation == 'needs_review':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1187
        dynaproperties['clean_work_submission'] = cleaning.clean_url(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1188
            'work_submission')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1189
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1190
      extended_comment_form = dynaform.extendDynaForm(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1191
          dynaform=params['comment_form'],
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1192
          dynaproperties=dynaproperties)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1193
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1194
      params['comment_form'] = extended_comment_form
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1195
    else:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1196
      # list of statuses a task can be in after it is requested to be
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1197
      # claimed before closing or re-opening
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1198
      claim_status = ['ClaimRequested', 'Claimed', 'ActionNeeded',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1199
                      'NeedsWork', 'NeedsReview']
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1200
      if entity.status in claim_status:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1201
        context['header_msg'] = self.DEF_TASK_CLAIMED_MSG
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1202
      elif entity.status in ['AwaitingRegistration', 'Closed']:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1203
        context['header_msg'] = self.DEF_TASK_CLOSED_MSG
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1204
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1205
      context['signin_comment_msg'] = self.DEF_SIGNIN_TO_COMMENT_MSG % (
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1206
          context['sign_in'])
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1207
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1208
    return validation
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1209
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1210
  def _constructMentorActions(self, context, entity):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1211
    """Constructs the list of actions for mentors, org admins and
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1212
    hosts.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1213
    """
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1214
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1215
    # variable that holds what kind of validation this user
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1216
    # and task combination pass.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1217
    validation = None
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1218
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1219
    actions = []
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1220
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1221
    if entity.status in ['Unapproved', 'Unpublished']:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1222
      context['header_msg'] = self.DEF_TASK_UNPUBLISHED_MSG
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1223
      context['comment_disabled'] = True
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1224
    elif entity.status == 'Open':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1225
      context['header_msg'] = self.DEF_CAN_EDIT_TASK_MSG
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1226
    elif entity.status == 'Reopened':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1227
      context['header_msg'] = self.DEF_TASK_MENTOR_REOPENED_MSG
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1228
    elif entity.status == 'ClaimRequested':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1229
      actions.extend([('accept', 'Accept claim request'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1230
                      ('reject', 'Reject claim request')])
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1231
      context['header_msg'] = self.DEF_TASK_CLAIM_REQUESTED_MSG
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1232
      validation = 'accept_claim'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1233
    elif entity.status == 'Claimed':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1234
      context['header_msg'] = self.DEF_TASK_CLAIMED_BY_STUDENT_MSG
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1235
    elif entity.status == 'NeedsReview':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1236
      context['header_msg'] = self.DEF_TASK_NEEDS_REVIEW_MSG
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1237
      actions.extend([('needs_work', 'Needs More Work'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1238
                      ('reopened', 'Reopen the task'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1239
                      ('closed', 'Close the task')])
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1240
      validation = 'close'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1241
    elif entity.status in ['AwaitingRegistration', 'Closed']:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1242
      context['header_msg'] = self.DEF_TASK_CLOSED_MSG
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1243
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1244
    return validation, actions
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1245
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1246
  def _constructStudentActions(self, context, entity, user_account):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1247
    """Constructs the list of actions for students.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1248
    """
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1249
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1250
    # variable that holds what kind of validation this user
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1251
    # and task combination pass.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1252
    validation = None
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1253
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1254
    actions = []
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1255
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1256
    if entity.status in ['Open', 'Reopened']:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1257
      task_filter = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1258
          'user': user_account,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1259
          'status': ['ClaimRequested', 'Claimed', 'ActionNeeded', 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1260
                     'NeedsWork', 'NeedsReview']
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1261
          }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1262
      task_entities = ghop_task_logic.logic.getForFields(task_filter)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1263
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1264
      if len(task_entities) >= entity.program.nr_simultaneous_tasks:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1265
        context['header_msg'] = self.DEF_MAX_TASK_LIMIT_MSG_FMT % (
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1266
            entity.program.nr_simultaneous_tasks)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1267
        validation = 'claim_ineligible'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1268
        return validation, actions
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1269
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1270
      task_filter['status'] = 'AwaitingRegistration'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1271
      task_entities = ghop_task_logic.logic.getForFields(task_filter)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1272
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1273
      if task_entities:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1274
        context['header_msg'] = self.DEF_AWAITING_REG_MSG
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1275
        validation = 'claim_ineligible'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1276
      else:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1277
        actions.append(('request', 'Request to claim the task'))
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1278
        validation = 'claim_request'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1279
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1280
    # TODO: lot of double information here that can be simplified
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1281
    if entity.user and user_account.key() == entity.user.key():
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1282
      if entity.status  == 'ClaimRequested':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1283
        context['header_msg'] = self.DEF_TASK_REQ_CLAIMED_BY_YOU_MSG
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1284
        actions.append(('withdraw', 'Withdraw from the task'))
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1285
        validation = 'claim_withdraw'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1286
      elif entity.status in ['Claimed', 'NeedsWork', 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1287
                             'NeedsReview', 'ActionNeeded']:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1288
        context['header_msg'] = self.DEF_TASK_CLAIMED_BY_YOU_MSG
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1289
        actions.extend([
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1290
            ('withdraw', 'Withdraw from the task'),
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1291
            ('needs_review', 'Submit work and Request for review')])
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1292
        validation = 'needs_review'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1293
      elif entity.status == 'NeedsReview':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1294
        context['header_msg'] = self.DEF_TASK_NO_MORE_SUBMIT_MSG
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1295
        actions.append(('withdraw', 'Withdraw from the task'))
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1296
        if datetime.datetime.now < entity.deadline:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1297
          actions.append(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1298
              ('needs_review', 'Submit work and Request for review'))
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1299
        validation = 'needs_review'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1300
      elif entity.status == 'AwaitingRegistration':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1301
        context['header_msg'] = self.DEF_STUDENT_SIGNUP_MSG
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1302
      elif entity.status == 'Closed':
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1303
        context['header_msg'] = self.DEF_TASK_CMPLTD_BY_YOU_MSG
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1304
    else:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1305
      if entity.status in ['ClaimRequested', 'Claimed', 
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1306
                           'ActionNeeded', 'NeedsWork',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1307
                           'NeedsReview']:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1308
        context['header_msg'] = self.DEF_TASK_CLAIMED_MSG
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1309
      if entity.status in ['AwaitingRegistration', 'Closed']:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1310
        context['header_msg'] = self.DEF_TASK_CLOSED_MSG
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1311
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1312
    return validation, actions
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1313
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1314
  @decorators.merge_params
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1315
  @decorators.check_access
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1316
  def search(self, request, access_type, page_name=None,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1317
             params=None, filter=None, order=None,**kwargs):
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1318
    """View method to search for GHOP Tasks.
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1319
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1320
    Args:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1321
      request: the standard Django HTTP request object
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1322
      access_type : the name of the access type which should be checked
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1323
      page_name: the page name displayed in templates as page and header title
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1324
      params: a dict with params for this View
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1325
      kwargs: the Key Fields for the specified entity
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1326
    """
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1327
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1328
    from soc.modules.ghop.views.helper import list_info as list_info_helper
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1329
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1330
    get_params = request.GET
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1331
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1332
    contents = []
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1333
    context = {}
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1334
    if not filter:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1335
      filter = {}
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1336
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1337
    public_status = ['Open', 'Reopened', 'ClaimRequested', 'Claimed',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1338
                     'ActionNeeded', 'Closed', 'AwaitingRegistration',
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1339
                     'NeedsWork', 'NeedsReview']
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1340
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1341
    task_params = params.copy()
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1342
    task_params['list_template'] = 'modules/ghop/task/search/search.html'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1343
    task_params['list_heading'] = 'modules/ghop/task/search/heading.html'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1344
    task_params['list_row'] = 'modules/ghop/task/search/row.html'
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1345
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1346
    task_params['list_action'] = (redirects.getPublicRedirect,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1347
                                  task_params)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1348
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1349
    task_params['list_description'] = ugettext(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1350
       'Search results: ')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1351
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1352
    program_entity = ghop_program_logic.logic.getFromKeyFields(kwargs)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1353
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1354
    org_fields = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1355
        'scope': program_entity,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1356
        }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1357
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1358
    org_entities = ghop_org_logic.logic.getForFields(org_fields)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1359
    org_names = []
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1360
    for org in org_entities:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1361
      org_names.append(org.name)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1362
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1363
    df_entities = ghop_task_model.TaskDifficultyTag.get_by_scope(
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1364
        program_entity)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1365
    difficulties = []
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1366
    for df_entity in df_entities:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1367
      difficulties.append(df_entity.tag)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1368
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1369
    tt_entities = ghop_task_model.TaskTypeTag.get_by_scope(program_entity)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1370
    task_types = []
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1371
    for tt_entity in tt_entities:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1372
      task_types.append(tt_entity.tag)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1373
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1374
    context['org_entities'] = org_names
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1375
    context['public_status'] = public_status
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1376
    context['difficulties'] =  difficulties
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1377
    context['tags'] = task_types
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1378
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1379
    org_filter = get_params.getlist('Organization')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1380
    status_filter = get_params.getlist('Status')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1381
    df_filter = get_params.getlist('Difficulty')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1382
    tag_filter = get_params.getlist('Tags')
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1383
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1384
    if org_filter:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1385
      org_fields = {
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1386
        'scope': program_entity,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1387
        'name': org_filter,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1388
      }
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1389
      org_entities = ghop_org_logic.logic.getForFields(org_fields)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1390
      filter['scope'] = org_entities
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1391
    if status_filter:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1392
      filter['status']= status_filter
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1393
    else:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1394
      filter['status'] = public_status
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1395
    if df_filter:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1396
      filter['difficulty'] = df_filter
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1397
    if tag_filter:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1398
      filter['task_type'] = tag_filter
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1399
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1400
    filter['program'] = program_entity
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1401
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1402
    task_list = lists.getListContent(request, task_params, filter,
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1403
                                     order=order, idx=0, need_content=True)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1404
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1405
    if task_list:
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1406
      contents.append(task_list)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1407
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1408
    # call the _list method from base to display the list
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1409
    return self._list(request, task_params, contents, page_name, context)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1410
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1411
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1412
view = View()
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1413
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1414
create = decorators.view(view.create)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1415
delete = decorators.view(view.delete)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1416
edit = decorators.view(view.edit)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1417
list = decorators.view(view.list)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1418
list_org_tasks = decorators.view(view.listOrgTasks)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1419
suggest_task = decorators.view(view.suggestTask)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1420
public = decorators.view(view.public)
f064654837f7 Added GHOP Task View.
Madhusudan.C.S <madhusudancs@gmail.com>
parents:
diff changeset
  1421
search = decorators.view(view.search)