app/soc/tasks/grading_survey_group.py
author Lennard de Rijk <ljvderijk@gmail.com>
Mon, 13 Jul 2009 00:59:48 +0200
changeset 2618 6a3c464f871f
child 2631 f0d3d24a609b
permissions -rw-r--r--
Added Tasks to update/create GradingRecords for a given GradingSurveyGroup. Also added a stub to update StudentProjects for a given GradingSurveyGroup.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2618
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     1
#!/usr/bin/python2.5
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     2
#
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     3
# Copyright 2009 the Melange authors.
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     4
#
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     5
# Licensed under the Apache License, Version 2.0 (the "License");
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     6
# you may not use this file except in compliance with the License.
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     7
# You may obtain a copy of the License at
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     8
#
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     9
#   http://www.apache.org/licenses/LICENSE-2.0
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    10
#
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    11
# Unless required by applicable law or agreed to in writing, software
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    12
# distributed under the License is distributed on an "AS IS" BASIS,
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    14
# See the License for the specific language governing permissions and
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    15
# limitations under the License.
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    16
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    17
"""Tasks related to Grading Survey Groups.
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    18
"""
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    19
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    20
__authors__ = [
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    21
  '"Lennard de Rijk" <ljvderijk@gmail.com>',
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    22
  ]
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    23
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    24
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    25
import datetime
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    26
import logging
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    27
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    28
from google.appengine.api.labs import taskqueue
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    29
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    30
from django import http
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    31
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    32
from soc.tasks.helper import error_handler
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    33
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    34
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    35
# batch size to use when going through StudentProjects
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    36
DEF_BATCH_SIZE = 10
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    37
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    38
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    39
def getDjangoURLPatterns():
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    40
  """Returns the URL patterns for the tasks in this module.
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    41
  """
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    42
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    43
  patterns = [(
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    44
      r'tasks/grading_survey_group/update_records$',
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    45
      'soc.tasks.grading_survey_group.updateOrCreateRecordsForSurveyGroup'),
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    46
              (
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    47
      r'tasks/grading_survey_group/update_projects$',
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    48
      'soc.tasks.grading_survey_group.updateProjectsForSurveyGroup')]
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    49
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    50
  return patterns
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    51
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    52
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    53
def updateOrCreateRecordsForSurveyGroup(request, *args, **kwargs):
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    54
  """Updates or creates GradingRecords for the given GradingSurveyGroup.
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    55
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    56
  Expects the following to be present in the POST dict:
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    57
    group_key: Specifies the GradingSurveyGroup key name.
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    58
    project_key: optional to specify which project was the last for which this
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    59
                 task was run
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    60
  Args:
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    61
    request: Django Request object
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    62
  """
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    63
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    64
  from soc.logic.models.grading_record import logic as grading_record_logic
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    65
  from soc.logic.models.grading_survey_group import logic as survey_group_logic
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    66
  from soc.logic.models.student_project import logic as student_project_logic
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    67
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    68
  post_dict = request.POST
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    69
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    70
  group_key = post_dict.get('group_key')
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    71
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    72
  if not group_key:
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    73
    # invalid task data, log and return OK
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    74
    return error_handler.logErrorAndReturnOK(
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    75
        'Invalid updateRecordForSurveyGroup data: %s' % post_dict)
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    76
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    77
  # get the GradingSurveyGroup for the given keyname
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    78
  survey_group_entity = survey_group_logic.getFromKeyName(group_key)
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    79
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    80
  if not survey_group_entity:
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    81
    # invalid GradingSurveyGroup specified, log and return OK
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    82
    return error_handler.logErrorAndReturnOK(
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    83
        'Invalid GradingSurveyGroup specified: %s' % group_key)
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    84
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    85
  # check and retrieve the project_key that has been done last
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    86
  if 'project_key' in post_dict:
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    87
    project_start_key = post_dict['project_key']
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    88
  else:
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    89
    project_start_key = None
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    90
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    91
  # get all valid StudentProjects from starting key
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    92
  fields = {'program': survey_group_entity.scope,
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    93
            'status': ['accepted', 'failed', 'completed', 'withdrawn']}
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    94
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    95
  if project_start_key:
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    96
    # retrieve the last project that was done
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    97
    project_start = student_project_logic.getFromKeyName(project_start_key)
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    98
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    99
    if not project_start:
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   100
      # invalid starting project key specified, log and return OK
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   101
      return error_handler.logErrorAndReturnOK(
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   102
          'Invalid Student Project Key specified: %s' %(project_start_key))
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   103
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   104
    fields['__key__ >'] = project_start.key()
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   105
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   106
  # get the first batch_size number of StudentProjects
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   107
  project_entities = student_project_logic.getForFields(fields,
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   108
                                                        limit=DEF_BATCH_SIZE)
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   109
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   110
  # update/create and batch put the new GradingRecords
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   111
  grading_record_logic.updateOrCreateRecordsFor(survey_group_entity,
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   112
                                                project_entities)
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   113
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   114
  if len(project_entities) == DEF_BATCH_SIZE:
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   115
    # spawn new task starting from the last
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   116
    new_project_start = project_entities[DEF_BATCH_SIZE-1].key().id_or_name()
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   117
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   118
    # pass along these params as POST to the new task
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   119
    task_params = {'group_key': group_key,
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   120
                   'project_key': new_project_start}
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   121
    task_url = '/tasks/grading_survey_group/update_records'
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   122
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   123
    new_task = taskqueue.Task(params=task_params, url=task_url)
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   124
    new_task.add()
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   125
  else:
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   126
    # task completed, update timestamp for last update complete
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   127
    fields = {'last_update_complete': datetime.datetime.now()}
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   128
    survey_group_logic.updateEntityProperties(survey_group_entity, fields)
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   129
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   130
  # task completed, return OK
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   131
  return http.HttpResponse('OK')
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   132
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   133
def updateProjectsForSurveyGroup(request, *args, **kwargs):
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   134
  """Updates each StudentProject for which a GradingRecord is found.
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   135
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   136
  Expects the following to be present in the POST dict:
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   137
    group_key: Specifies the GradingSurveyGroup key name.
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   138
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   139
  Args:
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   140
    request: Django Request object
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   141
  """
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   142
  # TODO(ljvderijk) implement this method
6a3c464f871f Added Tasks to update/create GradingRecords for a given GradingSurveyGroup.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
   143
  return http.HttpResponse('OK')