app/soc/views/models/survey.py
author Lennard de Rijk <ljvderijk@gmail.com>
Tue, 04 Aug 2009 15:58:31 +0200
changeset 2722 1ec0af4ddd72
parent 2659 8df08a3b17db
child 2723 9e03061402ac
permissions -rw-r--r--
Added view for showing Survey Records. The current access level is set to Developer only until this feature is complete d. A start has also been made on the viewResults method which will list the appropr iate SurveyRecords for a given survey with a redirect to the viewRecord view. Patch by: Lennard de Rijk and James Levy
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
     1
#!/usr/bin/python2.5
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
     2
#
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
     3
# Copyright 2009 the Melange authors.
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
     4
#
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
     5
# Licensed under the Apache License, Version 2.0 (the "License");
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
     6
# you may not use this file except in compliance with the License.
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
     7
# You may obtain a copy of the License at
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
     8
#
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
     9
#   http://www.apache.org/licenses/LICENSE-2.0
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    10
#
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    11
# Unless required by applicable law or agreed to in writing, software
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    12
# distributed under the License is distributed on an "AS IS" BASIS,
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    14
# See the License for the specific language governing permissions and
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    15
# limitations under the License.
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    16
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    17
"""Views for Surveys.
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    18
"""
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    19
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    20
__authors__ = [
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    21
  '"Daniel Diniz" <ajaksu@gmail.com>',
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    22
  '"James Levy" <jamesalexanderlevy@gmail.com>',
2463
05af53239799 Add more flexibility to the Survey helper for use with the new Survey types.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2455
diff changeset
    23
  '"Lennard de Rijk" <ljvderijk@gmail.com>',
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    24
  ]
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    25
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    26
import datetime
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    27
import re
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    28
import string
2475
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
    29
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
    30
from google.appengine.ext import db
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
    31
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    32
from django import forms
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    33
from django import http
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    34
from django.utils import simplejson
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    35
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    36
from soc.logic import cleaning
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    37
from soc.logic import dicts
2543
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
    38
from soc.logic.helper import timeline
2455
a023b71ce125 fixed critical errors related to survey subclassing and renaming of deadline and opening properties, and surveys in sidebar are now marked as such and have a red color if untaken
james@jamess-macbook-air.local
parents: 2448
diff changeset
    39
from soc.logic.models.survey import logic as survey_logic
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    40
from soc.logic.models.user import logic as user_logic
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    41
from soc.models.survey import Survey
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    42
from soc.models.survey_record import SurveyRecord
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    43
from soc.models.user import User
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    44
from soc.views import out_of_band
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    45
from soc.views.helper import access
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    46
from soc.views.helper import decorators
2501
d612b48e6e12 Added Survey From Field validation.
Daniel Diniz <ajaksu@gmail.com>
parents: 2497
diff changeset
    47
from soc.views.helper import forms as forms_helper
2576
7a1138f8a0e2 Removed results list from Survey edit.
Daniel Diniz <ajaksu@gmail.com>
parents: 2560
diff changeset
    48
from soc.views.helper import lists
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    49
from soc.views.helper import redirects
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    50
from soc.views.helper import responses
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    51
from soc.views.helper import surveys
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    52
from soc.views.helper import widgets
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    53
from soc.views.models import base
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    54
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    55
2658
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    56
DEF_CHOICE_TYPES = set(('selection', 'pick_multi', 'choice', 'pick_quant'))
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    57
DEF_TEXT_TYPES = set(('long_answer', 'short_answer'))
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    58
DEF_PROPERTY_TYPES = tuple(DEF_CHOICE_TYPES) + tuple(DEF_TEXT_TYPES)
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    59
2502
2e096acc8720 Surveys can now have required questions and comments can be turned on/off.
Daniel Diniz <ajaksu@gmail.com>
parents: 2501
diff changeset
    60
# used in View.getSchemaOptions to map POST values
2658
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    61
DEF_BOOL = {'True': True, 'False': False}
2502
2e096acc8720 Surveys can now have required questions and comments can be turned on/off.
Daniel Diniz <ajaksu@gmail.com>
parents: 2501
diff changeset
    62
2658
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    63
DEF_SHORT_ANSWER = ("Short Answer",
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    64
                    "Less than 40 characters. Rendered as a text input. "
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    65
                    "It's possible to add a free form question (Content) "
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    66
                    "and a in-input prompt/example text.")
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    67
DEF_CHOICE = (
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    68
    "Selection",
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    69
    "Can be set as a single choice (selection) or multiple choice "
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    70
    "(pick_multi) question. Rendered as a select (single choice) "
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    71
    "or a group of checkboxes (multiple choice). It's possible to "
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    72
    "add a free form question (Content) and as many free form options "
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    73
    "as wanted. Each option can be edited (double-click), deleted "
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    74
    "(click on (-) button) or reordered (drag and drop).")
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    75
DEF_LONG_ANSWER = (
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    76
    "Long Answer",
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    77
    "Unlimited length, auto-growing field. Rendered as a textarea. "
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    78
    "It's possible to add a free form question (Content) and an in-input "
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    79
    "prompt/example text.")
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    80
2658
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    81
DEF_QUESTION_TYPES = dict(short_answer=DEF_SHORT_ANSWER,
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    82
                          long_answer=DEF_LONG_ANSWER, choice=DEF_CHOICE)
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    83
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    84
# for toCSV and View.exportSerialized
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    85
DEF_FIELDS = 'author modified_by'
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
    86
DEF_PLAIN = 'is_featured content created modified'
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    87
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    88
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    89
class View(base.View):
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    90
  """View methods for the Survey model.
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    91
  """
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    92
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    93
  def __init__(self, params=None):
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    94
    """Defines the fields and methods required for the base View class
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    95
    to provide the user with list, public, create, edit and delete views.
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    96
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    97
    Params:
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    98
      params: a dict with params for this View
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
    99
    """
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   100
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   101
    rights = access.Checker(params)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   102
    rights['any_access'] = ['allow']
2473
5cf0625dfa73 Changed the Survey public view to give a preview of the Survey.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2472
diff changeset
   103
    rights['show'] = [('checkIsSurveyWritable', survey_logic)]
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   104
    rights['create'] = ['checkIsUser']
2471
04f13163c1e8 Brown paper bag "without tea" morning typo fix in Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2469
diff changeset
   105
    rights['edit'] = [('checkIsSurveyWritable', survey_logic)]
2473
5cf0625dfa73 Changed the Survey public view to give a preview of the Survey.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2472
diff changeset
   106
    rights['delete'] = ['checkIsDeveloper'] # TODO: fix deletion of Surveys
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   107
    rights['list'] = ['checkDocumentList']
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   108
    rights['pick'] = ['checkDocumentPick']
2722
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   109
    rights['record'] = ['checkIsDeveloper'] # TODO: proper access check
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   110
    rights['results'] = ['checkIsDeveloper'] # TODO: proper access check
2534
c880489123fc Fixed basic Survey access check.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2519
diff changeset
   111
    rights['take'] = [('checkIsSurveyTakeable', survey_logic)]
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   112
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   113
    new_params = {}
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   114
    new_params['logic'] = survey_logic
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   115
    new_params['rights'] = rights
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   116
2582
df5939fecaff Added Surveys to sidebar menu.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2576
diff changeset
   117
    new_params['name'] = 'Survey'
df5939fecaff Added Surveys to sidebar menu.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2576
diff changeset
   118
    new_params['sidebar_grouping'] = "Surveys"
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   119
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   120
    new_params['extra_django_patterns'] = [
2475
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   121
         (r'^%(url_name)s/(?P<access_type>take)/%(key_fields)s$',
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   122
         'soc.views.models.%(module_name)s.take',
2485
4f4e4fdc283d Fixed typo in title of Survey Take page.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2484
diff changeset
   123
         'Take %(name)s'),
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   124
         (r'^%(url_name)s/(?P<access_type>json)/%(scope)s$',
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   125
         'soc.views.models.%(module_name)s.json',
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   126
         'Export %(name)s as JSON'),
2722
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   127
        (r'^%(url_name)s/(?P<access_type>record)/%(key_fields)s$',
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   128
         'soc.views.models.%(module_name)s.record',
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   129
         'View survey record for %(name)s'),
2576
7a1138f8a0e2 Removed results list from Survey edit.
Daniel Diniz <ajaksu@gmail.com>
parents: 2560
diff changeset
   130
        (r'^%(url_name)s/(?P<access_type>results)/%(key_fields)s$',
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   131
         'soc.views.models.%(module_name)s.results',
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   132
         'View survey results for %(name)s'),
2455
a023b71ce125 fixed critical errors related to survey subclassing and renaming of deadline and opening properties, and surveys in sidebar are now marked as such and have a red color if untaken
james@jamess-macbook-air.local
parents: 2448
diff changeset
   133
        (r'^%(url_name)s/(?P<access_type>show)/user/(?P<link_id>)\w+$',
a023b71ce125 fixed critical errors related to survey subclassing and renaming of deadline and opening properties, and surveys in sidebar are now marked as such and have a red color if untaken
james@jamess-macbook-air.local
parents: 2448
diff changeset
   134
         'soc.views.models.%(module_name)s.results',
a023b71ce125 fixed critical errors related to survey subclassing and renaming of deadline and opening properties, and surveys in sidebar are now marked as such and have a red color if untaken
james@jamess-macbook-air.local
parents: 2448
diff changeset
   135
         'View survey results for user'),
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   136
        ]
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   137
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   138
    new_params['export_content_type'] = 'text/text'
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   139
    new_params['export_extension'] = '.csv'
2658
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   140
    new_params['export_function'] = surveys.toCSV(self)
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   141
    new_params['delete_redirect'] = '/'
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   142
    new_params['list_key_order'] = [
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   143
        'link_id', 'scope_path', 'name', 'short_name', 'title',
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   144
        'content', 'prefix','read_access','write_access']
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   145
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   146
    new_params['edit_template'] = 'soc/survey/edit.html'
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   147
    new_params['create_template'] = 'soc/survey/edit.html'
2478
985fd974e095 Clean up and other fixes for Survey modules.
Daniel Diniz <ajaksu@gmail.com>
parents: 2477
diff changeset
   148
    new_params['public_template'] = 'soc/survey/public.html'
2722
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   149
    new_params['record_template'] = 'soc/survey/view_record.html'
2475
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   150
    new_params['take_template'] = 'soc/survey/take.html'
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   151
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   152
    new_params['no_create_raw'] = True
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   153
    new_params['no_create_with_scope'] = True
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   154
    new_params['no_create_with_key_fields'] = True
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   155
    new_params['no_list_raw'] = True
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   156
    new_params['sans_link_id_create'] = True
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   157
    new_params['sans_link_id_list'] = True
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   158
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   159
    new_params['create_dynafields'] = [
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   160
        {'name': 'link_id',
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   161
         'base': forms.fields.CharField,
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   162
         'label': 'Survey Link ID',
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   163
         },
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   164
        ]
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   165
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   166
    new_params['create_extra_dynaproperties'] = {
2558
ba32a4f5716b Added the possiblitity to add a description to the top of the Survey.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2546
diff changeset
   167
        'content': forms.fields.CharField(required=False, label='Description',
ba32a4f5716b Added the possiblitity to add a description to the top of the Survey.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2546
diff changeset
   168
            widget=widgets.FullTinyMCE(attrs={'rows': 25, 'cols': 100})),
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   169
        'survey_html': forms.fields.CharField(widget=forms.HiddenInput,
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   170
                                              required=False),
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   171
        'scope_path': forms.fields.CharField(widget=forms.HiddenInput,
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   172
                                             required=True),
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   173
        'prefix': forms.fields.CharField(widget=widgets.ReadOnlyInput(),
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   174
                                        required=True),
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   175
        'clean_content': cleaning.clean_html_content('content'),
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   176
        'clean_link_id': cleaning.clean_link_id('link_id'),
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   177
        'clean_scope_path': cleaning.clean_scope_path('scope_path'),
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   178
        'clean': cleaning.validate_document_acl(self, True),
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   179
        }
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   180
2558
ba32a4f5716b Added the possiblitity to add a description to the top of the Survey.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2546
diff changeset
   181
    new_params['extra_dynaexclude'] = ['author', 'created',
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   182
                                       'home_for', 'modified_by', 'modified',
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   183
                                       'take_survey', 'survey_content']
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   184
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   185
    new_params['edit_extra_dynaproperties'] = {
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   186
        'doc_key_name': forms.fields.CharField(widget=forms.HiddenInput),
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   187
        'created_by': forms.fields.CharField(widget=widgets.ReadOnlyInput(),
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   188
                                             required=False),
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   189
        'last_modified_by': forms.fields.CharField(
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   190
                                widget=widgets.ReadOnlyInput(), required=False),
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   191
        'clean': cleaning.validate_document_acl(self),
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   192
        }
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   193
2464
64b241a237b2 Merge params from inheriting Survey views so functionality can be reused.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2463
diff changeset
   194
    params = dicts.merge(params, new_params, sub_merge=True)
2463
05af53239799 Add more flexibility to the Survey helper for use with the new Survey types.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2455
diff changeset
   195
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   196
    super(View, self).__init__(params=params)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   197
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   198
  def list(self, request, access_type, page_name=None, params=None,
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   199
           filter=None, order=None, **kwargs):
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   200
    """See base.View.list.
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   201
    """
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   202
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   203
    return super(View, self).list(request, access_type, page_name=page_name,
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   204
                                  params=params, filter=kwargs)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   205
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   206
  def _public(self, request, entity, context):
2473
5cf0625dfa73 Changed the Survey public view to give a preview of the Survey.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2472
diff changeset
   207
    """Add a preview version of the Survey to the page's context.
2455
a023b71ce125 fixed critical errors related to survey subclassing and renaming of deadline and opening properties, and surveys in sidebar are now marked as such and have a red color if untaken
james@jamess-macbook-air.local
parents: 2448
diff changeset
   208
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   209
    Args:
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   210
      request: the django request object
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   211
      entity: the entity to make public
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   212
      context: the context object
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   213
    """
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   214
2473
5cf0625dfa73 Changed the Survey public view to give a preview of the Survey.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2472
diff changeset
   215
    # construct the form to be shown on the page
5cf0625dfa73 Changed the Survey public view to give a preview of the Survey.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2472
diff changeset
   216
    # TODO(ljvderijk) Generate SurveyForm without passing along the logic
2517
97117d341f62 Split SurveyForm into SurveyTakeForm and SurveyEditForm.
Daniel Diniz <ajaksu@gmail.com>
parents: 2516
diff changeset
   217
    survey_form = surveys.SurveyTakeForm(survey_content=entity.survey_content,
97117d341f62 Split SurveyForm into SurveyTakeForm and SurveyEditForm.
Daniel Diniz <ajaksu@gmail.com>
parents: 2516
diff changeset
   218
                                         survey_logic=self._params['logic'])
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   219
2473
5cf0625dfa73 Changed the Survey public view to give a preview of the Survey.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2472
diff changeset
   220
    survey_form.getFields()
2455
a023b71ce125 fixed critical errors related to survey subclassing and renaming of deadline and opening properties, and surveys in sidebar are now marked as such and have a red color if untaken
james@jamess-macbook-air.local
parents: 2448
diff changeset
   221
2473
5cf0625dfa73 Changed the Survey public view to give a preview of the Survey.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2472
diff changeset
   222
    context['survey_form'] = survey_form
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   223
2473
5cf0625dfa73 Changed the Survey public view to give a preview of the Survey.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2472
diff changeset
   224
    # return True to signal that the page may be displayed
5cf0625dfa73 Changed the Survey public view to give a preview of the Survey.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2472
diff changeset
   225
    return True
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   226
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   227
  def _editPost(self, request, entity, fields):
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   228
    """See base.View._editPost().
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   229
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   230
    Processes POST request items to add new dynamic field names,
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   231
    question types, and default prompt values to SurveyContent model.
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   232
    """
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   233
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   234
    user = user_logic.getForCurrentAccount()
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   235
    schema = {}
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   236
    survey_fields = {}
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   237
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   238
    if not entity:
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   239
      # new Survey
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   240
      if 'serialized' in request.POST:
2478
985fd974e095 Clean up and other fixes for Survey modules.
Daniel Diniz <ajaksu@gmail.com>
parents: 2477
diff changeset
   241
        fields, schema, survey_fields = self.importSerialized(request, fields,
985fd974e095 Clean up and other fixes for Survey modules.
Daniel Diniz <ajaksu@gmail.com>
parents: 2477
diff changeset
   242
                                                              user)
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   243
      fields['author'] = user
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   244
    else:
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   245
      fields['author'] = entity.author
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   246
      schema = self.loadSurveyContent(schema, survey_fields, entity)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   247
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   248
    # remove deleted properties from the model
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   249
    self.deleteQuestions(schema, survey_fields, request.POST)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   250
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   251
    # add new text questions and re-build choice questions
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   252
    self.getRequestQuestions(schema, survey_fields, request.POST)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   253
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   254
    # get schema options for choice questions
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   255
    self.getSchemaOptions(schema, survey_fields, request.POST)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   256
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   257
    survey_content = getattr(entity,'survey_content', None)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   258
    # create or update a SurveyContent for this Survey
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   259
    survey_content = survey_logic.createSurvey(survey_fields, schema,
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   260
                                                survey_content=survey_content)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   261
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   262
    # save survey_content for existent survey or pass for creating a new one
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   263
    if entity:
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   264
      entity.modified_by = user
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   265
      entity.survey_content = survey_content
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   266
      db.put(entity)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   267
    else:
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   268
      fields['survey_content'] = survey_content
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   269
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   270
    fields['modified_by'] = user
2543
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   271
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   272
    super(View, self)._editPost(request, entity, fields)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   273
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   274
  def loadSurveyContent(self, schema, survey_fields, entity):
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   275
    """Populate the schema dict and get text survey questions.
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   276
    """
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   277
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   278
    if hasattr(entity, 'survey_content'):
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   279
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   280
      # there is a SurveyContent already
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   281
      survey_content = entity.survey_content
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   282
      schema = eval(survey_content.schema)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   283
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   284
      for question_name in survey_content.dynamic_properties():
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   285
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   286
        # get the current questions from the SurveyContent
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   287
        if question_name not in schema:
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   288
          continue
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   289
2658
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   290
        if schema[question_name]['type'] not in DEF_CHOICE_TYPES:
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   291
          # Choice questions are always regenerated from request, see
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   292
          # self.get_request_questions()
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   293
          question = getattr(survey_content, question_name)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   294
          survey_fields[question_name] = question
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   295
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   296
    return schema
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   297
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   298
  def deleteQuestions(self, schema, survey_fields, POST):
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   299
    """Process the list of questions to delete, from a hidden input.
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   300
    """
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   301
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   302
    deleted = POST.get('__deleted__', '')
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   303
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   304
    if deleted:
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   305
      deleted = deleted.split(',')
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   306
      for field in deleted:
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   307
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   308
        if field in schema:
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   309
          del schema[field]
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   310
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   311
        if field in survey_fields:
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   312
          del survey_fields[field]
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   313
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   314
  def getRequestQuestions(self, schema, survey_fields, POST):
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   315
    """Get fields from request.
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   316
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   317
    We use two field/question naming and processing schemes:
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   318
      - Choice questions consist of <input/>s with a common name, being rebuilt
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   319
        anew on every edit POST so we can gather ordering, text changes,
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   320
        deletions and additions.
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   321
      - Text questions only have special survey__* names on creation, afterwards
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   322
        they are loaded from the SurveyContent dynamic properties.
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   323
    """
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   324
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   325
    for key, value in POST.items():
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   326
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   327
      if key.startswith('id_'):
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   328
        # Choice question fields, they are always generated from POST contents,
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   329
        # as their 'content' is editable and they're reorderable. Also get
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   330
        # its field index for handling reordering fields later.
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   331
        name, number = key[3:].replace('__field', '').rsplit('_', 1)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   332
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   333
        if name not in schema:
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   334
          if 'NEW_' + name in POST:
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   335
            # new Choice question, set generic type and get its index
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   336
            schema[name] = {'type': 'choice'}
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   337
2658
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   338
        if name in schema and schema[name]['type'] in DEF_CHOICE_TYPES:
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   339
          # build an index:content dictionary
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   340
          if name in survey_fields:
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   341
            if value not in survey_fields[name]:
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   342
              survey_fields[name][int(number)] = value
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   343
          else:
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   344
            survey_fields[name] = {int(number): value}
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   345
2560
a944c0169ad8 Added ability to add custom tooltips and UI improvements.
Daniel Diniz <ajaksu@gmail.com>
parents: 2558
diff changeset
   346
      elif key.startswith('survey__'): # Text question
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   347
        # this is super ugly but unless data is serialized the regex is needed
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   348
        prefix = re.compile('survey__([0-9]{1,3})__')
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   349
        prefix_match = re.match(prefix, key)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   350
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   351
        index = prefix_match.group(0).replace('survey', '').replace('__','')
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   352
        index = int(index)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   353
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   354
        field_name = prefix.sub('', key)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   355
        field = 'id_' + key
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   356
2658
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   357
        for ptype in DEF_PROPERTY_TYPES:
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   358
          # should only match one
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   359
          if ptype + "__" in field_name:
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   360
            field_name = field_name.replace(ptype + "__", "")
2560
a944c0169ad8 Added ability to add custom tooltips and UI improvements.
Daniel Diniz <ajaksu@gmail.com>
parents: 2558
diff changeset
   361
            if field_name not in schema:
a944c0169ad8 Added ability to add custom tooltips and UI improvements.
Daniel Diniz <ajaksu@gmail.com>
parents: 2558
diff changeset
   362
              schema[field_name]= {}
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   363
            schema[field_name]["index"] = index
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   364
            schema[field_name]["type"] = ptype
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   365
2560
a944c0169ad8 Added ability to add custom tooltips and UI improvements.
Daniel Diniz <ajaksu@gmail.com>
parents: 2558
diff changeset
   366
        # store text question tooltip from the input/textarea value
a944c0169ad8 Added ability to add custom tooltips and UI improvements.
Daniel Diniz <ajaksu@gmail.com>
parents: 2558
diff changeset
   367
        schema[field_name]["tip"] = value
a944c0169ad8 Added ability to add custom tooltips and UI improvements.
Daniel Diniz <ajaksu@gmail.com>
parents: 2558
diff changeset
   368
a944c0169ad8 Added ability to add custom tooltips and UI improvements.
Daniel Diniz <ajaksu@gmail.com>
parents: 2558
diff changeset
   369
        # add the question as a dynamic property to survey_content
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   370
        survey_fields[field_name] = value
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   371
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   372
  def getSchemaOptions(self, schema, survey_fields, POST):
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   373
    """Get question, type, rendering and option order for choice questions.
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   374
    """
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   375
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   376
    RENDER = {'checkboxes': 'multi_checkbox', 'select': 'single_select',
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   377
              'radio_buttons': 'quant_radio'}
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   378
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   379
    RENDER_TYPES = {'select': 'selection',
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   380
                    'checkboxes': 'pick_multi',
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   381
                    'radio_buttons': 'pick_quant' }
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   382
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   383
    for key in schema:
2658
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   384
      if schema[key]['type'] in DEF_CHOICE_TYPES and key in survey_fields:
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   385
        render_for = 'render_for_' + key
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   386
        if render_for in POST:
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   387
          schema[key]['render'] = RENDER[POST[render_for]]
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   388
          schema[key]['type'] = RENDER_TYPES[POST[render_for]]
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   389
2560
a944c0169ad8 Added ability to add custom tooltips and UI improvements.
Daniel Diniz <ajaksu@gmail.com>
parents: 2558
diff changeset
   390
        # set the choice question's tooltip
a944c0169ad8 Added ability to add custom tooltips and UI improvements.
Daniel Diniz <ajaksu@gmail.com>
parents: 2558
diff changeset
   391
        tip_for = 'tip_for_' + key
a944c0169ad8 Added ability to add custom tooltips and UI improvements.
Daniel Diniz <ajaksu@gmail.com>
parents: 2558
diff changeset
   392
        schema[key]['tip'] = POST.get(tip_for)
a944c0169ad8 Added ability to add custom tooltips and UI improvements.
Daniel Diniz <ajaksu@gmail.com>
parents: 2558
diff changeset
   393
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   394
        # handle reordering fields
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   395
        ordered = False
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   396
        order = 'order_for_' + key
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   397
        if order in POST and isinstance(survey_fields[key], dict):
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   398
          order = POST[order]
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   399
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   400
          # 'order_for_name' is jquery serialized from a sortable, so it's in
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   401
          # a 'name[]=1&name[]=2&name[]=0' format ('id-li-' is set in our JS)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   402
          order = order.replace('id-li-%s[]=' % key, '')
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   403
          order = order.split('&')
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   404
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   405
          if len(order) == len(survey_fields[key]) and order[0]:
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   406
            order = [int(number) for number in order]
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   407
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   408
            if set(order) == set(survey_fields[key]):
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   409
              survey_fields[key] = [survey_fields[key][i] for i in order]
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   410
              ordered = True
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   411
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   412
          if not ordered:
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   413
            # we don't have a good ordering to use
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   414
            ordered = sorted(survey_fields[key].items())
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   415
            survey_fields[key] = [value for index, value in ordered]
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   416
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   417
      # set 'question' entry (free text label for question) in schema
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   418
      question_for = 'NEW_' + key
2560
a944c0169ad8 Added ability to add custom tooltips and UI improvements.
Daniel Diniz <ajaksu@gmail.com>
parents: 2558
diff changeset
   419
      if question_for in POST and POST[question_for]:
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   420
        schema[key]["question"] = POST[question_for]
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   421
2502
2e096acc8720 Surveys can now have required questions and comments can be turned on/off.
Daniel Diniz <ajaksu@gmail.com>
parents: 2501
diff changeset
   422
      # set wheter the question is required
2e096acc8720 Surveys can now have required questions and comments can be turned on/off.
Daniel Diniz <ajaksu@gmail.com>
parents: 2501
diff changeset
   423
      required_for = 'required_for_' + key
2658
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   424
      schema[key]['required'] = DEF_BOOL[POST[required_for]]
2502
2e096acc8720 Surveys can now have required questions and comments can be turned on/off.
Daniel Diniz <ajaksu@gmail.com>
parents: 2501
diff changeset
   425
2e096acc8720 Surveys can now have required questions and comments can be turned on/off.
Daniel Diniz <ajaksu@gmail.com>
parents: 2501
diff changeset
   426
      # set wheter the question allows comments
2e096acc8720 Surveys can now have required questions and comments can be turned on/off.
Daniel Diniz <ajaksu@gmail.com>
parents: 2501
diff changeset
   427
      comment_for = 'comment_for_' + key
2658
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   428
      schema[key]['has_comment'] = DEF_BOOL[POST[comment_for]]
2502
2e096acc8720 Surveys can now have required questions and comments can be turned on/off.
Daniel Diniz <ajaksu@gmail.com>
parents: 2501
diff changeset
   429
2560
a944c0169ad8 Added ability to add custom tooltips and UI improvements.
Daniel Diniz <ajaksu@gmail.com>
parents: 2558
diff changeset
   430
      # set the question index from JS-calculated value
a944c0169ad8 Added ability to add custom tooltips and UI improvements.
Daniel Diniz <ajaksu@gmail.com>
parents: 2558
diff changeset
   431
      index_for = 'index_for_' + key
a944c0169ad8 Added ability to add custom tooltips and UI improvements.
Daniel Diniz <ajaksu@gmail.com>
parents: 2558
diff changeset
   432
      if index_for in POST:
a944c0169ad8 Added ability to add custom tooltips and UI improvements.
Daniel Diniz <ajaksu@gmail.com>
parents: 2558
diff changeset
   433
        schema[key]['index'] = int(POST[index_for].replace('__', ''))
a944c0169ad8 Added ability to add custom tooltips and UI improvements.
Daniel Diniz <ajaksu@gmail.com>
parents: 2558
diff changeset
   434
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   435
  def createGet(self, request, context, params, seed):
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   436
    """Pass the question types for the survey creation template.
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   437
    """
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   438
2658
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   439
    context['question_types'] = DEF_QUESTION_TYPES
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   440
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   441
    # avoid spurious results from showing on creation
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   442
    context['new_survey'] = True
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   443
    return super(View, self).createGet(request, context, params, seed)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   444
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   445
  def editGet(self, request, entity, context, params=None):
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   446
    """Process GET requests for the specified entity.
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   447
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   448
    Builds the SurveyForm that represents the Survey question contents.
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   449
    """
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   450
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   451
    self._entity = entity
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   452
    survey_content = entity.survey_content
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   453
2517
97117d341f62 Split SurveyForm into SurveyTakeForm and SurveyEditForm.
Daniel Diniz <ajaksu@gmail.com>
parents: 2516
diff changeset
   454
    survey_form = surveys.SurveyEditForm(survey_content=survey_content,
97117d341f62 Split SurveyForm into SurveyTakeForm and SurveyEditForm.
Daniel Diniz <ajaksu@gmail.com>
parents: 2516
diff changeset
   455
                                         survey_logic=params['logic'])
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   456
    survey_form.getFields()
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   457
2658
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   458
    local = dict(survey_form=survey_form, question_types=DEF_QUESTION_TYPES,
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   459
                survey_h=entity.survey_content)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   460
    context.update(local)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   461
2478
985fd974e095 Clean up and other fixes for Survey modules.
Daniel Diniz <ajaksu@gmail.com>
parents: 2477
diff changeset
   462
    params['edit_form'] = surveys.HelperForm(params['edit_form'])
2440
05c430d1c147 Renamed opening to survey_start and deadline to survey_end.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2439
diff changeset
   463
    if entity.survey_end and datetime.datetime.now() > entity.survey_end:
2455
a023b71ce125 fixed critical errors related to survey subclassing and renaming of deadline and opening properties, and surveys in sidebar are now marked as such and have a red color if untaken
james@jamess-macbook-air.local
parents: 2448
diff changeset
   464
      # are we already passed the survey_end?
a023b71ce125 fixed critical errors related to survey subclassing and renaming of deadline and opening properties, and surveys in sidebar are now marked as such and have a red color if untaken
james@jamess-macbook-air.local
parents: 2448
diff changeset
   465
      context["passed_survey_end"] = True
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   466
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   467
    return super(View, self).editGet(request, entity, context, params=params)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   468
2475
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   469
  @decorators.merge_params
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   470
  @decorators.check_access
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   471
  def take(self, request, access_type, page_name=None,
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   472
           params=None, **kwargs):
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   473
    """View for taking a Survey.
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   474
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   475
    For Args see base.View().public().
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   476
    """
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   477
2477
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   478
    survey_logic = params['logic']
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   479
2475
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   480
    try:
2497
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   481
      entity = survey_logic.getFromKeyFieldsOr404(kwargs)
2475
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   482
    except out_of_band.Error, error:
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   483
      return responses.errorResponse(
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   484
          error, request, template=params['error_public'])
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   485
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   486
    template = params['take_template']
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   487
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   488
    # get the context for this webpage
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   489
    context = responses.getUniversalContext(request)
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   490
    responses.useJavaScript(context, params['js_uses_all'])
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   491
    context['page_name'] = "%s titled '%s'" % (page_name, entity.title)
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   492
    context['entity'] = entity
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   493
2477
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   494
    # try to get an existing SurveyRecord for the current user
2497
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   495
    survey_record = self._getSurveyRecordFor(entity, request, params)
2477
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   496
2519
53b0cc84ab00 Added _getSurveyTakeForm to the Survey view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2518
diff changeset
   497
    # get an instance of SurveyTakeForm to use
2542
a9dec4763c6b POST data always overwrites survey_record data when used to populate form.
Daniel Diniz <ajaksu@gmail.com>
parents: 2540
diff changeset
   498
    survey_form = self._getSurveyTakeForm(entity, survey_record, params,
a9dec4763c6b POST data always overwrites survey_record data when used to populate form.
Daniel Diniz <ajaksu@gmail.com>
parents: 2540
diff changeset
   499
                                          request.POST)
2518
66405056baf8 Only initialize a SurveyTakeForm in take instead of in takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2517
diff changeset
   500
66405056baf8 Only initialize a SurveyTakeForm in take instead of in takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2517
diff changeset
   501
    # fill context with the survey_form and additional information
66405056baf8 Only initialize a SurveyTakeForm in take instead of in takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2517
diff changeset
   502
    context['survey_form'] = survey_form
66405056baf8 Only initialize a SurveyTakeForm in take instead of in takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2517
diff changeset
   503
    self.setHelpAndStatus(context, entity, survey_record)
66405056baf8 Only initialize a SurveyTakeForm in take instead of in takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2517
diff changeset
   504
2475
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   505
    if request.POST:
2518
66405056baf8 Only initialize a SurveyTakeForm in take instead of in takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2517
diff changeset
   506
      return self.takePost(request, template, context, params, survey_form,
66405056baf8 Only initialize a SurveyTakeForm in take instead of in takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2517
diff changeset
   507
                           entity, survey_record, **kwargs)
2475
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   508
    else: #request.GET
2518
66405056baf8 Only initialize a SurveyTakeForm in take instead of in takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2517
diff changeset
   509
      return self.takeGet(request, template, context, params, survey_form,
66405056baf8 Only initialize a SurveyTakeForm in take instead of in takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2517
diff changeset
   510
                          entity, survey_record, **kwargs)
2475
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   511
2497
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   512
  def _getSurveyRecordFor(self, survey, request, params):
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   513
    """Returns the SurveyRecord for the given Survey and request.
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   514
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   515
    Args:
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   516
        survey: a Survey entity
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   517
        request: a Django HTTPRequest object
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   518
        params: params for the requesting view
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   519
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   520
    Returns:
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   521
        An existing SurveyRecord iff any exists for the given Survey, request
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   522
        and any other conditions that must apply.
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   523
    """
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   524
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   525
    survey_logic = params['logic']
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   526
    record_logic = survey_logic.getRecordLogic()
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   527
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   528
    user_entity = user_logic.getForCurrentAccount()
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   529
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   530
    filter = {'survey': survey,
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   531
              'user': user_entity}
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   532
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   533
    return record_logic.getForFields(filter, unique=True)
996f381d458c Added _getSurveyRecordFor method to Survey View.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2493
diff changeset
   534
2542
a9dec4763c6b POST data always overwrites survey_record data when used to populate form.
Daniel Diniz <ajaksu@gmail.com>
parents: 2540
diff changeset
   535
  def _getSurveyTakeForm(self, survey, record, params, post_dict=None):
2519
53b0cc84ab00 Added _getSurveyTakeForm to the Survey view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2518
diff changeset
   536
    """Returns the specific SurveyTakeForm needed for the take view.
53b0cc84ab00 Added _getSurveyTakeForm to the Survey view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2518
diff changeset
   537
53b0cc84ab00 Added _getSurveyTakeForm to the Survey view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2518
diff changeset
   538
    Args:
53b0cc84ab00 Added _getSurveyTakeForm to the Survey view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2518
diff changeset
   539
        survey: a Survey entity
53b0cc84ab00 Added _getSurveyTakeForm to the Survey view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2518
diff changeset
   540
        record: a SurveyRecord instance if any exist
53b0cc84ab00 Added _getSurveyTakeForm to the Survey view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2518
diff changeset
   541
        params: the params dict for the requesting View
2542
a9dec4763c6b POST data always overwrites survey_record data when used to populate form.
Daniel Diniz <ajaksu@gmail.com>
parents: 2540
diff changeset
   542
        post_dict: POST data to be passed to form initialization
2519
53b0cc84ab00 Added _getSurveyTakeForm to the Survey view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2518
diff changeset
   543
53b0cc84ab00 Added _getSurveyTakeForm to the Survey view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2518
diff changeset
   544
    Returns:
53b0cc84ab00 Added _getSurveyTakeForm to the Survey view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2518
diff changeset
   545
        An instance of SurveyTakeForm that can be used to take a Survey.
53b0cc84ab00 Added _getSurveyTakeForm to the Survey view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2518
diff changeset
   546
    """
53b0cc84ab00 Added _getSurveyTakeForm to the Survey view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2518
diff changeset
   547
53b0cc84ab00 Added _getSurveyTakeForm to the Survey view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2518
diff changeset
   548
    return surveys.SurveyTakeForm(survey_content=survey.survey_content,
2542
a9dec4763c6b POST data always overwrites survey_record data when used to populate form.
Daniel Diniz <ajaksu@gmail.com>
parents: 2540
diff changeset
   549
                                  survey_record=record,
a9dec4763c6b POST data always overwrites survey_record data when used to populate form.
Daniel Diniz <ajaksu@gmail.com>
parents: 2540
diff changeset
   550
                                  survey_logic=params['logic'],
a9dec4763c6b POST data always overwrites survey_record data when used to populate form.
Daniel Diniz <ajaksu@gmail.com>
parents: 2540
diff changeset
   551
                                  data=post_dict)
a9dec4763c6b POST data always overwrites survey_record data when used to populate form.
Daniel Diniz <ajaksu@gmail.com>
parents: 2540
diff changeset
   552
2519
53b0cc84ab00 Added _getSurveyTakeForm to the Survey view.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2518
diff changeset
   553
2518
66405056baf8 Only initialize a SurveyTakeForm in take instead of in takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2517
diff changeset
   554
  def takeGet(self, request, template, context, params, survey_form, entity,
66405056baf8 Only initialize a SurveyTakeForm in take instead of in takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2517
diff changeset
   555
              record, **kwargs):
2475
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   556
    """Handles the GET request for the Survey's take page.
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   557
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   558
    Args:
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   559
        template: the template used for this view
2518
66405056baf8 Only initialize a SurveyTakeForm in take instead of in takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2517
diff changeset
   560
        survey_form: instance of SurveyTakeForm
2477
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   561
        entity: the Survey entity
2518
66405056baf8 Only initialize a SurveyTakeForm in take instead of in takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2517
diff changeset
   562
        record: a SurveyRecord entity iff any exists
2475
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   563
        rest: see base.View.public()
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   564
    """
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   565
2486
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   566
    # call the hook method
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   567
    self._takeGet(request, template, context, params, entity, record, **kwargs)
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   568
2477
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   569
    return responses.respond(request, template, context)
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   570
2486
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   571
  def _takeGet(self, request, template, context, params, entity, record,
2518
66405056baf8 Only initialize a SurveyTakeForm in take instead of in takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2517
diff changeset
   572
               **kwargs):
2486
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   573
    """Hook for the GET request for the Survey's take page.
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   574
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   575
    This method is called just before the GET page is shown.
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   576
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   577
    Args:
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   578
        template: the template used for this view
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   579
        entity: the Survey entity
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   580
        record: a SurveyRecord entity
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   581
        rest: see base.View.public()
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   582
    """
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   583
    pass
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   584
2518
66405056baf8 Only initialize a SurveyTakeForm in take instead of in takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2517
diff changeset
   585
  def takePost(self, request, template, context, params, survey_form, entity,
66405056baf8 Only initialize a SurveyTakeForm in take instead of in takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2517
diff changeset
   586
               record, **kwargs):
2475
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   587
    """Handles the POST request for the Survey's take page.
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   588
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   589
    Args:
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   590
        template: the template used for this view
2518
66405056baf8 Only initialize a SurveyTakeForm in take instead of in takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2517
diff changeset
   591
        survey_form: instance of SurveyTakeForm
2477
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   592
        entity: the Survey entity
2486
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   593
        record: a SurveyRecord entity
2475
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   594
        rest: see base.View.public()
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   595
    """
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   596
2484
f41a9e1eeeea Add a base implementation of takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2478
diff changeset
   597
    survey_logic = params['logic']
f41a9e1eeeea Add a base implementation of takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2478
diff changeset
   598
    record_logic = survey_logic.getRecordLogic()
f41a9e1eeeea Add a base implementation of takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2478
diff changeset
   599
2501
d612b48e6e12 Added Survey From Field validation.
Daniel Diniz <ajaksu@gmail.com>
parents: 2497
diff changeset
   600
    if not survey_form.is_valid():
2516
afae8791ad97 Do not call takeGet when SurveyForm ValidationError occurs.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2504
diff changeset
   601
      # show the form errors
afae8791ad97 Do not call takeGet when SurveyForm ValidationError occurs.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2504
diff changeset
   602
      return self._constructResponse(request, entity=entity, context=context,
afae8791ad97 Do not call takeGet when SurveyForm ValidationError occurs.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2504
diff changeset
   603
                                     form=survey_form, params=params,
afae8791ad97 Do not call takeGet when SurveyForm ValidationError occurs.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2504
diff changeset
   604
                                     template=template)
2501
d612b48e6e12 Added Survey From Field validation.
Daniel Diniz <ajaksu@gmail.com>
parents: 2497
diff changeset
   605
d612b48e6e12 Added Survey From Field validation.
Daniel Diniz <ajaksu@gmail.com>
parents: 2497
diff changeset
   606
    # retrieve the data from the form
d612b48e6e12 Added Survey From Field validation.
Daniel Diniz <ajaksu@gmail.com>
parents: 2497
diff changeset
   607
    _, properties = forms_helper.collectCleanedFields(survey_form)
2475
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   608
2484
f41a9e1eeeea Add a base implementation of takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2478
diff changeset
   609
    # add the required SurveyRecord properties
f41a9e1eeeea Add a base implementation of takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2478
diff changeset
   610
    properties['user'] = user_logic.getForCurrentAccount()
f41a9e1eeeea Add a base implementation of takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2478
diff changeset
   611
    properties['survey'] = entity
f41a9e1eeeea Add a base implementation of takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2478
diff changeset
   612
2486
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   613
    # call the hook method before updating the SurveyRecord
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   614
    self._takePost(request, params, entity, record, properties)
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   615
2484
f41a9e1eeeea Add a base implementation of takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2478
diff changeset
   616
    # update the record entity if any and clear all dynamic properties
2540
1e44d71c0e3e Several style fixes due to code reviews.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2534
diff changeset
   617
    record_logic.updateOrCreateFromFields(record, properties,
1e44d71c0e3e Several style fixes due to code reviews.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2534
diff changeset
   618
                                          clear_dynamic=True)
2484
f41a9e1eeeea Add a base implementation of takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2478
diff changeset
   619
f41a9e1eeeea Add a base implementation of takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2478
diff changeset
   620
    # TODO: add notice to page that the response has been saved successfully
f41a9e1eeeea Add a base implementation of takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2478
diff changeset
   621
    # redirect to the same page for now
f41a9e1eeeea Add a base implementation of takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2478
diff changeset
   622
    redirect = request.path
f41a9e1eeeea Add a base implementation of takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2478
diff changeset
   623
    return http.HttpResponseRedirect(redirect)
2477
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   624
2486
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   625
  def _takePost(self, request, params, entity, record, properties):
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   626
    """Hook for the POST request for the Survey's take page.
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   627
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   628
    This method is called just before the SurveyRecord is stored.
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   629
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   630
    Args:
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   631
        request: Django Request object
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   632
        params: the params for the current view
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   633
        entity: a Survey entity
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   634
        record: a SurveyRecord entity
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   635
        properties: properties to be stored in the SurveyRecord entity
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   636
    """
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   637
    pass
78c87d9f4af7 Added hook methods to takeGet and takePost.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2485
diff changeset
   638
2543
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   639
2477
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   640
  def setHelpAndStatus(self, context, survey, survey_record):
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   641
    """Get help_text and status for template use.
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   642
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   643
    Args:
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   644
        context: the context for the view to update
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   645
        survey: a Survey entity
2501
d612b48e6e12 Added Survey From Field validation.
Daniel Diniz <ajaksu@gmail.com>
parents: 2497
diff changeset
   646
        survey_record: a SurveyRecordEntity
2477
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   647
    """
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   648
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   649
    if not survey.survey_end:
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   650
      survey_end_text = ""
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   651
    else:
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   652
      survey_end_text = " by " + str(
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   653
          survey.survey_end.strftime("%A, %d. %B %Y %I:%M%p"))
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   654
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   655
    if survey_record:
2658
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   656
      help_text = "You may edit and re-submit this survey %s." %(
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   657
          survey_end_text)
2477
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   658
      status = "edit"
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   659
    else:
2658
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   660
      help_text = "Please complete this survey %s." %(
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   661
          survey_end_text)
2477
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   662
      status = "create"
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   663
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   664
    # update the context with the help_text and status
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   665
    context_update = dict(status=status, help_text=help_text)
e5629995d118 Implemented the takeGet view for Surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2476
diff changeset
   666
    context.update(context_update)
2475
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   667
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   668
  @decorators.merge_params
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   669
  @decorators.check_access
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   670
  def viewResults(self, request, access_type, page_name=None,
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   671
                  params=None, **kwargs):
2576
7a1138f8a0e2 Removed results list from Survey edit.
Daniel Diniz <ajaksu@gmail.com>
parents: 2560
diff changeset
   672
    """View for SurveyRecords.
7a1138f8a0e2 Removed results list from Survey edit.
Daniel Diniz <ajaksu@gmail.com>
parents: 2560
diff changeset
   673
7a1138f8a0e2 Removed results list from Survey edit.
Daniel Diniz <ajaksu@gmail.com>
parents: 2560
diff changeset
   674
    For params see base.View.public().
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   675
    """
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   676
2722
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   677
    # TODO(ljvderijk) finish this method
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   678
    return http.HttpResponse("Work In Progress")
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   679
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   680
    # TODO If read access then show all records, else show only mine +
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   681
    # hook for subclasses. On both possibilities.
2576
7a1138f8a0e2 Removed results list from Survey edit.
Daniel Diniz <ajaksu@gmail.com>
parents: 2560
diff changeset
   682
7a1138f8a0e2 Removed results list from Survey edit.
Daniel Diniz <ajaksu@gmail.com>
parents: 2560
diff changeset
   683
    try:
2722
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   684
      entity = params['logic'].getFromKeyFieldsOr404(kwargs)
2576
7a1138f8a0e2 Removed results list from Survey edit.
Daniel Diniz <ajaksu@gmail.com>
parents: 2560
diff changeset
   685
    except out_of_band.Error, error:
7a1138f8a0e2 Removed results list from Survey edit.
Daniel Diniz <ajaksu@gmail.com>
parents: 2560
diff changeset
   686
      return responses.errorResponse(
7a1138f8a0e2 Removed results list from Survey edit.
Daniel Diniz <ajaksu@gmail.com>
parents: 2560
diff changeset
   687
          error, request, template=params['error_public'])
7a1138f8a0e2 Removed results list from Survey edit.
Daniel Diniz <ajaksu@gmail.com>
parents: 2560
diff changeset
   688
7a1138f8a0e2 Removed results list from Survey edit.
Daniel Diniz <ajaksu@gmail.com>
parents: 2560
diff changeset
   689
    # get the context for this webpage
7a1138f8a0e2 Removed results list from Survey edit.
Daniel Diniz <ajaksu@gmail.com>
parents: 2560
diff changeset
   690
    context = responses.getUniversalContext(request)
7a1138f8a0e2 Removed results list from Survey edit.
Daniel Diniz <ajaksu@gmail.com>
parents: 2560
diff changeset
   691
    responses.useJavaScript(context, params['js_uses_all'])
7a1138f8a0e2 Removed results list from Survey edit.
Daniel Diniz <ajaksu@gmail.com>
parents: 2560
diff changeset
   692
    context['page_name'] = "%s titled '%s'" % (page_name, entity.title)
7a1138f8a0e2 Removed results list from Survey edit.
Daniel Diniz <ajaksu@gmail.com>
parents: 2560
diff changeset
   693
    context['entity'] = entity
7a1138f8a0e2 Removed results list from Survey edit.
Daniel Diniz <ajaksu@gmail.com>
parents: 2560
diff changeset
   694
2722
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   695
    results_logic = params['logic'].getRecordLogic()
2467
f46cff8d676b Solved some merging problems and use the getRecordLogic where needed.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2464
diff changeset
   696
2722
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   697
    # only show truncated preview of first answer
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   698
    context['first_question'] = entity.survey_content.orderedProperties()[0]
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   699
2722
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   700
    context['record_redirect'] = redirects.getSurveyRecordRedirect(
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   701
        entity, params)
2576
7a1138f8a0e2 Removed results list from Survey edit.
Daniel Diniz <ajaksu@gmail.com>
parents: 2560
diff changeset
   702
2722
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   703
    filter = {'survey': entity}
2576
7a1138f8a0e2 Removed results list from Survey edit.
Daniel Diniz <ajaksu@gmail.com>
parents: 2560
diff changeset
   704
7a1138f8a0e2 Removed results list from Survey edit.
Daniel Diniz <ajaksu@gmail.com>
parents: 2560
diff changeset
   705
    list_params = params.copy()
7a1138f8a0e2 Removed results list from Survey edit.
Daniel Diniz <ajaksu@gmail.com>
parents: 2560
diff changeset
   706
    list_params['list_description'] = \
2722
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   707
      'List of %(name_plural)s.' % list_params
2576
7a1138f8a0e2 Removed results list from Survey edit.
Daniel Diniz <ajaksu@gmail.com>
parents: 2560
diff changeset
   708
    list_params['logic'] = results_logic
2722
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   709
    list_params['list_heading'] = 'soc/survey/list/results_heading.html'
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   710
    list_params['list_row'] = 'soc/survey/list/results_row.html'
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   711
2722
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   712
    record_list = lists.getListContent(request, list_params, filter, idx=0)
2455
a023b71ce125 fixed critical errors related to survey subclassing and renaming of deadline and opening properties, and surveys in sidebar are now marked as such and have a red color if untaken
james@jamess-macbook-air.local
parents: 2448
diff changeset
   713
2722
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   714
    contents = [record_list]
2455
a023b71ce125 fixed critical errors related to survey subclassing and renaming of deadline and opening properties, and surveys in sidebar are now marked as such and have a red color if untaken
james@jamess-macbook-air.local
parents: 2448
diff changeset
   715
2576
7a1138f8a0e2 Removed results list from Survey edit.
Daniel Diniz <ajaksu@gmail.com>
parents: 2560
diff changeset
   716
    return self._list(request, list_params, contents, page_name, context)
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   717
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   718
  @decorators.merge_params
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   719
  @decorators.check_access
2722
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   720
  def viewRecord(self, request, access_type, page_name=None,
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   721
                 params=None, **kwargs):
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   722
    """View that allows the user to see the contents of a single SurveyRecord.
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   723
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   724
    For params see base.View.public()
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   725
    """
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   726
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   727
    survey_logic = params['logic']
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   728
    record_logic = survey_logic.getRecordLogic()
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   729
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   730
    try:
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   731
      survey_entity = survey_logic.getFromKeyFieldsOr404(kwargs)
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   732
    except out_of_band.Error, error:
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   733
      return responses.errorResponse(
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   734
          error, request, template=params['error_public'])
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   735
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   736
    get_dict = request.GET
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   737
    record_id = get_dict.get('id')
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   738
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   739
    if record_id and record_id.isdigit():
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   740
      record_id = int(record_id)
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   741
      record_entity = record_logic.getFromIDOr404(record_id)
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   742
    else:
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   743
      raise out_of_band.Error('No valid Record ID given')
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   744
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   745
    if record_entity.survey.key() != survey_entity.key():
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   746
      # record does not match the retrieved survey
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   747
      raise out_of_band.Error('Record ID does not match the given survey')
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   748
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   749
    # get the context for this webpage
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   750
    context = responses.getUniversalContext(request)
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   751
    responses.useJavaScript(context, params['js_uses_all'])
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   752
    context['page_name'] = "%s titled '%s'" %(page_name, survey_entity.title)
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   753
    context['entity'] = survey_entity
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   754
    context['record'] = record_entity
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   755
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   756
    # store the read only survey form in the context
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   757
    survey_form = surveys.SurveyTakeForm(
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   758
       survey_content=survey_entity.survey_content,
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   759
       survey_record=record_entity,
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   760
       survey_logic=self._params['logic'],
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   761
       read_only=True)
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   762
    survey_form.getFields()
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   763
    context['survey_form'] = survey_form
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   764
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   765
    template = params['record_template']
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   766
    return responses.respond(request, template, context)
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   767
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   768
  @decorators.merge_params
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   769
  @decorators.check_access
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   770
  def exportSerialized(self, request, access_type, page_name=None,
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   771
                       params=None, **kwargs):
2658
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   772
    """Exports Surveys in JSON format.
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   773
2658
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   774
    For args see base.View.public().
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   775
    """
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   776
2658
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   777
    survey_logic = params['logic']
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   778
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   779
    try:
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   780
      sur = survey_logic.getFromKeyFieldsOr404(kwargs)
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   781
    except out_of_band.Error, error:
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   782
      return responses.errorResponse(
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   783
          error, request, template=params['error_public'])
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   784
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   785
    json = sur.toDict()
2658
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   786
    json.update(dict((f, str(getattr(sur, f))) for f in DEF_PLAIN.split()))
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   787
    static = ((f, str(getattr(sur, f).link_id)) for f in DEF_FIELDS.split())
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   788
    json.update(dict(static))
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   789
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   790
    dynamic = sur.survey_content.dynamic_properties()
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   791
    content = ((prop, getattr(sur.survey_content, prop)) for prop in dynamic)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   792
    json['survey_content'] = dict(content)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   793
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   794
    schema =  sur.survey_content.schema
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   795
    json['survey_content']['schema'] = eval(sur.survey_content.schema)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   796
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   797
    data = simplejson.dumps(json, indent=2)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   798
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   799
    return self.json(request, data=json)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   800
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   801
  def importSerialized(self, request, fields, user):
2658
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   802
    """Import Surveys in JSON format.
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   803
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   804
    TODO: have this method do a proper import
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   805
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   806
    Args:
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   807
      request: Django Requset object
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   808
      fields: ???
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   809
      user: ???
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   810
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   811
    Returns:
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   812
      Keywords, the survey's schema and the survey content.
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   813
    """
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   814
    json = request.POST['serialized']
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   815
    json = simplejson.loads(json)['data']
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   816
    survey_content = json.pop('survey_content')
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   817
    schema = survey_content.pop('schema')
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   818
    del json['author']
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   819
    del json['created']
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   820
    del json['modified']
2658
34b414a80d42 Several style fixes and code cleaning for surveys.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2593
diff changeset
   821
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   822
    # keywords can't be unicode
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   823
    keywords = {}
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   824
    for key, val in json.items():
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   825
      keywords[str(key)] = val
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   826
    if 'is_featured' in keywords:
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   827
      keywords['is_featured'] = eval(keywords['is_featured'])
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   828
    return keywords, schema, survey_content
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   829
2543
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   830
  def getMenusForScope(self, entity, params, id, user):
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   831
    """List featured surveys if after the survey_start date 
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   832
    and before survey_end an iff the current user has the right taking access.
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   833
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   834
    Args:
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   835
      entity: entity which is the scope for a Survey
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   836
      params: params from the requesting View
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   837
      id: GAE user instance for the current user
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   838
      user: User entity from the current user
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   839
    """
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   840
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   841
    # only list surveys for registered users
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   842
    if not user:
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   843
      return []
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   844
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   845
    survey_params = self.getParams().copy()
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   846
    survey_logic = survey_params['logic']
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   847
    record_logic = survey_logic.getRecordLogic()
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   848
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   849
    # filter all featured surveys for the given entity
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   850
    filter = {
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   851
        'prefix' : params['url_name'],
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   852
        'scope_path': entity.key().id_or_name(),
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   853
        'is_featured': True,
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   854
        }
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   855
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   856
    survey_entities = survey_logic.getForFields(filter)
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   857
    submenus = []
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   858
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   859
    # get the rights checker
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   860
    rights = self._params['rights']
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   861
    rights.setCurrentUser(id, user)
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   862
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   863
    # cache ACL
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   864
    survey_rights = {}
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   865
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   866
    # add a link to all featured active surveys the user can take
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   867
    for survey_entity in survey_entities:
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   868
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   869
      if survey_entity.taking_access not in survey_rights:
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   870
        # we have not determined if this user has the given type of access
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   871
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   872
        # check if the current user is allowed to visit the take Survey page
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   873
        allowed_to_take = False
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   874
2546
df7e4291c23c Ensure that accessViolations for Survey menu items get captured.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2543
diff changeset
   875
        try:
df7e4291c23c Ensure that accessViolations for Survey menu items get captured.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2543
diff changeset
   876
          rights.checkIsSurveyTakeable(
df7e4291c23c Ensure that accessViolations for Survey menu items get captured.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2543
diff changeset
   877
              {'key_name': survey_entity.key().name(),
df7e4291c23c Ensure that accessViolations for Survey menu items get captured.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2543
diff changeset
   878
               'prefix': survey_entity.prefix,
df7e4291c23c Ensure that accessViolations for Survey menu items get captured.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2543
diff changeset
   879
               'scope_path': survey_entity.scope_path,
df7e4291c23c Ensure that accessViolations for Survey menu items get captured.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2543
diff changeset
   880
               'link_id': survey_entity.link_id,
df7e4291c23c Ensure that accessViolations for Survey menu items get captured.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2543
diff changeset
   881
               'user': user},
df7e4291c23c Ensure that accessViolations for Survey menu items get captured.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2543
diff changeset
   882
              survey_logic,
df7e4291c23c Ensure that accessViolations for Survey menu items get captured.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2543
diff changeset
   883
              check_time=False)
df7e4291c23c Ensure that accessViolations for Survey menu items get captured.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2543
diff changeset
   884
          allowed_to_take = True
df7e4291c23c Ensure that accessViolations for Survey menu items get captured.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2543
diff changeset
   885
        except:
df7e4291c23c Ensure that accessViolations for Survey menu items get captured.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2543
diff changeset
   886
          pass
df7e4291c23c Ensure that accessViolations for Survey menu items get captured.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2543
diff changeset
   887
2543
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   888
        # cache ACL for a given entity.taking_access
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   889
        survey_rights[survey_entity.taking_access] = allowed_to_take
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   890
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   891
        if not allowed_to_take:
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   892
          # not allowed to take this survey
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   893
          continue
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   894
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   895
      elif not survey_rights[survey_entity.taking_access]:
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   896
        # we already determined that the user doens't have access to this type
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   897
        continue
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   898
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   899
      if not timeline.isActivePeriod(survey_entity, 'survey'):
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   900
        # this survey is not active right now
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   901
        continue
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   902
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   903
      # check if any SurveyRecord is available for this survey
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   904
      filter = {'survey': survey_entity,
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   905
                'user': user}
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   906
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   907
      survey_record = record_logic.getForFields(filter, unique=True)
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   908
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   909
      if survey_record:
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   910
        taken_status = ""
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   911
      else:
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   912
        # no SurveyRecord available so we mark the survey as new
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   913
        taken_status = "(new)"
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   914
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   915
      submenu = (redirects.getTakeSurveyRedirect(survey_entity, survey_params),
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   916
                 'Survey ' + taken_status + ': ' + survey_entity.short_name,
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   917
                 'show')
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   918
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   919
      submenus.append(submenu)
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   920
    return submenus
4c95d717a976 Added Menu items for all three kinds of Surveys to the program menu.
James Levy <jamesalexanderlevy@gmail.com>
parents: 2542
diff changeset
   921
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   922
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   923
view = View()
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   924
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   925
admin = decorators.view(view.admin)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   926
create = decorators.view(view.create)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   927
edit = decorators.view(view.edit)
2475
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   928
export = decorators.view(view.export)
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   929
delete = decorators.view(view.delete)
2475
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   930
json = decorators.view(view.exportSerialized)
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   931
list = decorators.view(view.list)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   932
public = decorators.view(view.public)
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   933
pick = decorators.view(view.pick)
2722
1ec0af4ddd72 Added view for showing Survey Records.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2659
diff changeset
   934
record = decorators.view(view.viewRecord)
2435
dd16e9b3c2d0 Added View for Surveys.
James Levy <jamesalexanderlevy@gmail.com>
parents:
diff changeset
   935
results = decorators.view(view.viewResults)
2475
dfb9249d91b6 Added skeleton for the take view and its template.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2474
diff changeset
   936
take = decorators.view(view.take)