app/soc/tasks/updates/module_conversion.py
author Lennard de Rijk <ljvderijk@gmail.com>
Sun, 04 Oct 2009 21:15:58 +0200
changeset 3007 d23d1dee5261
parent 3006 e74c4d37a61a
child 3008 525c65b0a320
permissions -rw-r--r--
Added StudentProject update to the Module Conversion updates.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2973
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     1
#!/usr/bin/python2.5
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     2
#
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     3
# Copyright 2009 the Melange authors.
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     4
#
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     5
# Licensed under the Apache License, Version 2.0 (the "License");
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     6
# you may not use this file except in compliance with the License.
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     7
# You may obtain a copy of the License at
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     8
#
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     9
#   http://www.apache.org/licenses/LICENSE-2.0
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    10
#
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    11
# Unless required by applicable law or agreed to in writing, software
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    12
# distributed under the License is distributed on an "AS IS" BASIS,
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    14
# See the License for the specific language governing permissions and
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    15
# limitations under the License.
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    16
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    17
"""The module conversion updates are defined in this module.
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    18
"""
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    19
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    20
__authors__ = [
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    21
  '"Lennard de Rijk" <ljvderijk@gmail.com>',
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    22
  ]
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    23
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    24
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    25
from google.appengine.api.labs import taskqueue
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    26
from google.appengine.ext import db
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    27
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    28
from django.http import HttpResponse
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    29
2998
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
    30
from soc.logic.models.mentor import logic as mentor_logic
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
    31
from soc.logic.models.org_admin import logic as org_admin_logic
2997
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
    32
from soc.logic.models.organization import logic as org_logic
3000
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
    33
from soc.logic.models.program import logic as program_logic
3006
e74c4d37a61a Added Review module conversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3001
diff changeset
    34
from soc.logic.models.review import logic as review_logic
3000
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
    35
from soc.logic.models.student import logic as student_logic
3007
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
    36
from soc.logic.models.student_project import logic as student_project_logic
2996
9a62e3cad4a8 Use the iterative task iterator for the ProgramConversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2973
diff changeset
    37
from soc.tasks.helper import decorators
2973
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    38
from soc.tasks.helper import error_handler
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    39
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    40
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    41
# batch size to use when going through the entities
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    42
DEF_BATCH_SIZE = 10
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    43
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    44
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    45
def startUpdateWithUrl(request, task_url):
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    46
  """Spawns an update task for the given task URL.
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    47
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    48
  Args:
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    49
    request: Django Request object
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    50
    task_url: The URL used to run this update task
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    51
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    52
  Returns:
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    53
    True iff the new task is successfully added to the Task Queue API
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    54
  """
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    55
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    56
  new_task = taskqueue.Task(url=task_url)
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    57
  new_task.add()
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    58
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    59
  return True
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    60
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    61
2996
9a62e3cad4a8 Use the iterative task iterator for the ProgramConversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2973
diff changeset
    62
@decorators.iterative_task(program_logic)
9a62e3cad4a8 Use the iterative task iterator for the ProgramConversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2973
diff changeset
    63
def runProgramConversionUpdate(request, entities, context, *args, **kwargs):
2998
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
    64
  """AppEngine Task that converts Programs into GSoCPrograms.
2973
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    65
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    66
  Args:
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    67
    request: Django Request object
2996
9a62e3cad4a8 Use the iterative task iterator for the ProgramConversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2973
diff changeset
    68
    entities: list of Program entities to convert
9a62e3cad4a8 Use the iterative task iterator for the ProgramConversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2973
diff changeset
    69
    context: the context of this task
2973
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    70
  """
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    71
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    72
  from soc.modules.gsoc.models.program import GSoCProgram
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    73
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    74
  # get all the properties that are part of each Programs
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    75
  program_model = program_logic.getModel()
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    76
  program_properties = program_model.properties().keys()
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    77
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    78
  # use this to store all the new GSoCPrograms
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    79
  gsoc_programs = []
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    80
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    81
  for entity in entities:
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    82
    gsoc_properties = {}
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    83
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    84
    for program_property in program_properties:
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    85
      # copy over all the information from the program entity
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    86
      gsoc_properties[program_property] = getattr(entity, program_property)
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    87
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    88
    # create the new GSoCProgram entity and prepare it to be stored
2997
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
    89
    gsoc_program_entity = GSoCProgram(key_name=entity.key().name(),
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
    90
                                      **gsoc_properties)
2973
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    91
    gsoc_programs.append(gsoc_program_entity)
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    92
2999
d933a6da5eef Only store all the entities once in the ModuleConversion, after the for loop.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2998
diff changeset
    93
  # store all the new GSoCPrograms
d933a6da5eef Only store all the entities once in the ModuleConversion, after the for loop.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2998
diff changeset
    94
  db.put(gsoc_programs)
2973
ba3f2522e8df Added first version of the 1st step in the module conversion process.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    95
2996
9a62e3cad4a8 Use the iterative task iterator for the ProgramConversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2973
diff changeset
    96
  # task completed, return
9a62e3cad4a8 Use the iterative task iterator for the ProgramConversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2973
diff changeset
    97
  return
2997
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
    98
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
    99
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   100
@decorators.iterative_task(org_logic)
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   101
def runOrgConversionUpdate(request, entities, context, *args, **kwargs):
2998
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   102
  """AppEngine Task that converts Organizations into GSoCOrganizations.
2997
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   103
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   104
  Args:
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   105
    request: Django Request object
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   106
    entities: list of Organization entities to convert
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   107
    context: the context of this task
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   108
  """
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   109
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   110
  from soc.modules.gsoc.logic.models.program import logic as gsoc_program_logic
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   111
  from soc.modules.gsoc.models.organization import GSoCOrganization
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   112
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   113
  # get all the properties that are part of each Organization
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   114
  org_model = org_logic.getModel()
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   115
  org_properties = org_model.properties().keys()
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   116
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   117
  # use this to store all the new GSoCOrganization
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   118
  gsoc_orgs = []
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   119
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   120
  for entity in entities:
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   121
    gsoc_properties = {}
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   122
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   123
    for org_property in org_properties:
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   124
      # copy over all the information from the Organization entity
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   125
      gsoc_properties[org_property] = getattr(entity, org_property)
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   126
3001
1698cca3d912 Only set new properties outside the "properties" loop for the ModuleConversion.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3000
diff changeset
   127
    # get the Program key belonging to the old Organization
1698cca3d912 Only set new properties outside the "properties" loop for the ModuleConversion.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3000
diff changeset
   128
    program_key = entity.scope.key().id_or_name()
1698cca3d912 Only set new properties outside the "properties" loop for the ModuleConversion.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3000
diff changeset
   129
    # get the new GSoCProgram and set it as scope for the GSoCOrganzation
1698cca3d912 Only set new properties outside the "properties" loop for the ModuleConversion.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3000
diff changeset
   130
    gsoc_program = gsoc_program_logic.getFromKeyName(program_key)
1698cca3d912 Only set new properties outside the "properties" loop for the ModuleConversion.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3000
diff changeset
   131
    gsoc_properties['scope'] = gsoc_program
2997
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   132
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   133
    # create the new GSoCOrganization entity and prepare it to be stored
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   134
    gsoc_org_entity = GSoCOrganization(key_name=entity.key().name(),
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   135
                                       **gsoc_properties)
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   136
    gsoc_orgs.append(gsoc_org_entity)
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   137
2999
d933a6da5eef Only store all the entities once in the ModuleConversion, after the for loop.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2998
diff changeset
   138
  # store all the new GSoCOrganizations
d933a6da5eef Only store all the entities once in the ModuleConversion, after the for loop.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2998
diff changeset
   139
  db.put(gsoc_orgs)
2997
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   140
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   141
  # task completed, return
a7cb53d213d7 Added the Organization to GSoCOrganzation update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2996
diff changeset
   142
  return
2998
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   143
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   144
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   145
@decorators.iterative_task(org_admin_logic)
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   146
def runOrgAdminConversionUpdate(request, entities, context, *args, **kwargs):
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   147
  """AppEngine Task that converts OrgAdmins into GSoCOrgAdmins.
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   148
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   149
  Args:
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   150
    request: Django Request object
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   151
    entities: list of OrgAdmin entities to convert
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   152
    context: the context of this task
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   153
  """
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   154
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   155
  from soc.modules.gsoc.models.org_admin import GSoCOrgAdmin
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   156
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   157
  return _runOrgRoleConversionUpdate(entities, org_admin_logic, GSoCOrgAdmin)
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   158
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   159
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   160
@decorators.iterative_task(mentor_logic)
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   161
def runMentorConversionUpdate(request, entities, context, *args, **kwargs):
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   162
  """AppEngine Task that converts Mentors into GSoCMentors.
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   163
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   164
  Args:
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   165
    request: Django Request object
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   166
    entities: list of Mentor entities to convert
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   167
    context: the context of this task
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   168
  """
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   169
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   170
  from soc.modules.gsoc.models.mentor import GSoCMentor
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   171
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   172
  return _runOrgRoleConversionUpdate(entities, mentor_logic, GSoCMentor)
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   173
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   174
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   175
def _runOrgRoleConversionUpdate(entities, from_role_logic, to_role_model):
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   176
  """AppEngine Task that converts a normal Organization Role into a
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   177
  GSoCOrganization Role.
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   178
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   179
  Args:
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   180
    entities: Role entities to convert
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   181
    from_role_logic: the Role Logic instance where to convert from
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   182
    to_role_model: the role Model class where to convert to
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   183
  """
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   184
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   185
  from soc.modules.gsoc.logic.models.organization import logic as \
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   186
      gsoc_org_logic
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   187
  from soc.modules.gsoc.logic.models.program import logic as gsoc_program_logic
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   188
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   189
  # get all the properties that are part of each Organization's Role
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   190
  role_model = from_role_logic.getModel()
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   191
  role_properties = role_model.properties().keys()
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   192
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   193
  # use this to store all the new Roles
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   194
  gsoc_roles = []
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   195
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   196
  for entity in entities:
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   197
    gsoc_properties = {}
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   198
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   199
    for role_property in role_properties:
3000
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   200
      # copy over all the information from the Role entity
2998
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   201
      gsoc_properties[role_property] = getattr(entity, role_property)
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   202
3001
1698cca3d912 Only set new properties outside the "properties" loop for the ModuleConversion.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3000
diff changeset
   203
    # get the Program key belonging to the old Role
1698cca3d912 Only set new properties outside the "properties" loop for the ModuleConversion.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3000
diff changeset
   204
    program_key = entity.program.key().id_or_name()
1698cca3d912 Only set new properties outside the "properties" loop for the ModuleConversion.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3000
diff changeset
   205
    # get the new GSoCProgram and set it for the Role
1698cca3d912 Only set new properties outside the "properties" loop for the ModuleConversion.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3000
diff changeset
   206
    gsoc_program = gsoc_program_logic.getFromKeyName(program_key)
1698cca3d912 Only set new properties outside the "properties" loop for the ModuleConversion.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3000
diff changeset
   207
    gsoc_properties['program'] = gsoc_program
2998
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   208
3001
1698cca3d912 Only set new properties outside the "properties" loop for the ModuleConversion.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3000
diff changeset
   209
    # get the Organization key belonging to the old Role
1698cca3d912 Only set new properties outside the "properties" loop for the ModuleConversion.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3000
diff changeset
   210
    org_key = entity.scope.key().id_or_name()
1698cca3d912 Only set new properties outside the "properties" loop for the ModuleConversion.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3000
diff changeset
   211
    # get the new GSoCOrganization and set it as scope for the Role
1698cca3d912 Only set new properties outside the "properties" loop for the ModuleConversion.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3000
diff changeset
   212
    gsoc_org = gsoc_org_logic.getFromKeyName(org_key)
1698cca3d912 Only set new properties outside the "properties" loop for the ModuleConversion.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3000
diff changeset
   213
    gsoc_properties['scope'] = gsoc_org
2998
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   214
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   215
    # create the new GSoC Role entity and prepare it to be stored
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   216
    gsoc_role_entity = to_role_model(key_name=entity.key().name(),
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   217
                                        **gsoc_properties)
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   218
    gsoc_roles.append(gsoc_role_entity)
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   219
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   220
  # store all the new GSoC Roles
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   221
  db.put(gsoc_roles)
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   222
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   223
  # task completed, return
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   224
  return
9c34768346da Add OrgAdmin and Mentor to GSoCOrgadmin and GSoCMentor updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2997
diff changeset
   225
3000
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   226
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   227
@decorators.iterative_task(student_logic)
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   228
def runStudentConversionUpdate(request, entities, context, *args, **kwargs):
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   229
  """AppEngine Task that converts Students into GSoCStudents.
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   230
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   231
  Args:
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   232
    request: Django Request object
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   233
    entities: list of Student entities to convert
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   234
    context: the context of this task
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   235
  """
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   236
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   237
  from soc.modules.gsoc.logic.models.program import logic as gsoc_program_logic
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   238
  from soc.modules.gsoc.models.student import GSoCStudent
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   239
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   240
  # get all the properties that are part of each Student
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   241
  student_model = student_logic.getModel()
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   242
  student_properties = student_model.properties().keys()
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   243
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   244
  # use this to store all the new GSoCStudents
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   245
  gsoc_students = []
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   246
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   247
  for entity in entities:
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   248
    gsoc_properties = {}
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   249
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   250
    for student_property in student_properties:
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   251
      # copy over all the information from the Student entity
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   252
      gsoc_properties[student_property] = getattr(entity, student_property)
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   253
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   254
    # get the Program key belonging to the old Student
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   255
    program_key = entity.scope.key().id_or_name()
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   256
    # get the new GSoCProgram and set it as scope for the GSoCStudent
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   257
    gsoc_program = gsoc_program_logic.getFromKeyName(program_key)
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   258
    gsoc_properties['scope'] = gsoc_program
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   259
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   260
    # create the new GSoCStudent entity and prepare it to be stored
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   261
    gsoc_student_entity = GSoCStudent(key_name=entity.key().name(),
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   262
                                      **gsoc_properties)
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   263
    gsoc_students.append(gsoc_student_entity)
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   264
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   265
  # store all the new GSoCStudents
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   266
  db.put(gsoc_students)
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   267
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   268
  # task completed, return
733d07eac729 Add the Student to GSoCStudent conversion,
Lennard de Rijk <ljvderijk@gmail.com>
parents: 2999
diff changeset
   269
  return
3006
e74c4d37a61a Added Review module conversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3001
diff changeset
   270
e74c4d37a61a Added Review module conversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3001
diff changeset
   271
e74c4d37a61a Added Review module conversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3001
diff changeset
   272
@decorators.iterative_task(review_logic)
e74c4d37a61a Added Review module conversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3001
diff changeset
   273
def runReviewUpdate(request, entities, context, *args, **kwargs):
3007
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   274
  """AppEngine Task that updates Review entities.
3006
e74c4d37a61a Added Review module conversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3001
diff changeset
   275
e74c4d37a61a Added Review module conversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3001
diff changeset
   276
  Args:
e74c4d37a61a Added Review module conversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3001
diff changeset
   277
    request: Django Request object
e74c4d37a61a Added Review module conversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3001
diff changeset
   278
    entities: list of Review entities to update
e74c4d37a61a Added Review module conversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3001
diff changeset
   279
    context: the context of this task
e74c4d37a61a Added Review module conversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3001
diff changeset
   280
  """
e74c4d37a61a Added Review module conversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3001
diff changeset
   281
e74c4d37a61a Added Review module conversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3001
diff changeset
   282
  for entity in entities:
e74c4d37a61a Added Review module conversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3001
diff changeset
   283
    entity.reviewer = None
e74c4d37a61a Added Review module conversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3001
diff changeset
   284
e74c4d37a61a Added Review module conversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3001
diff changeset
   285
  # store all Reviews
e74c4d37a61a Added Review module conversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3001
diff changeset
   286
  db.put(entities)
e74c4d37a61a Added Review module conversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3001
diff changeset
   287
e74c4d37a61a Added Review module conversion update.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3001
diff changeset
   288
  # task completed, return
3007
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   289
  return
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   290
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   291
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   292
@decorators.iterative_task(student_project_logic)
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   293
def runStudentProjectUpdate(request, entities, context, *args, **kwargs):
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   294
  """AppEngine Task that updates StudentProject entities.
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   295
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   296
  Args:
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   297
    request: Django Request object
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   298
    entities: list of StudentProject entities to update
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   299
    context: the context of this task
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   300
  """
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   301
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   302
  from soc.modules.gsoc.logic.models.mentor import logic as mentor_logic
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   303
  from soc.modules.gsoc.logic.models.organization import logic as org_logic
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   304
  from soc.modules.gsoc.logic.models.program import logic as program_logic
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   305
  from soc.modules.gsoc.logic.models.student import logic as student_logic
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   306
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   307
  for entity in entities:
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   308
    entity.scope = org_logic.getFromKeyName(entity.scope.key().id_or_name())
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   309
    entity.mentor = mentor_logic.getFromKeyName(
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   310
        entity.mentor.key().id_or_name())
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   311
    entity.student = student_logic.getFromKeyName(
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   312
        entity.student.key().id_or_name())
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   313
    entity.program = program_logic.getFromKeyName(
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   314
        entity.program.key().id_or_name())
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   315
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   316
    old_mentors = entity.additional_mentors
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   317
    new_mentors = []
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   318
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   319
    for old_mentor in old_mentors:
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   320
      new_mentors.append(
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   321
        mentor_logic.getFromKeyName(old_mentor.id_or_name()))
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   322
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   323
    entity.additional_mentors = new_mentors
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   324
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   325
  # store all StudentProjects
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   326
  db.put(entities)
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   327
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   328
  # task completed, return
d23d1dee5261 Added StudentProject update to the Module Conversion updates.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 3006
diff changeset
   329
  return