app/soc/tasks/convert.py
author Sverre Rabbelier <srabbelier@gmail.com>
Sat, 12 Sep 2009 00:59:58 +0200
changeset 2899 691735924efb
parent 2882 3fbbb56b7925
permissions -rw-r--r--
Fix broken maintenance mode Maintenance mode has been broken since r7fe19ebfe0d3 (Thu Jun 4) "Display caught errors on the page itself", fix it by passing the site entity, rather than the site module to isActivePeriod.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
2882
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     1
#!/usr/bin/python2.5
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     2
#
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     3
# Copyright 2009 the Melange authors.
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     4
#
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     5
# Licensed under the Apache License, Version 2.0 (the "License");
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     6
# you may not use this file except in compliance with the License.
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     7
# You may obtain a copy of the License at
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     8
#
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     9
#   http://www.apache.org/licenses/LICENSE-2.0
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    10
#
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    11
# Unless required by applicable law or agreed to in writing, software
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    12
# distributed under the License is distributed on an "AS IS" BASIS,
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    14
# See the License for the specific language governing permissions and
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    15
# limitations under the License.
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    16
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    17
"""Tasks conversion starter.
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    18
"""
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    19
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    20
__authors__ = [
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    21
  '"Sverre Rabbelier" <sverre@rabbelier.nl>',
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    22
  ]
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    23
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    24
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    25
from django import http
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    26
from django.template import loader
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    27
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    28
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    29
def getDjangoURLPatterns():
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    30
  """Returns the URL patterns for the view in this module.
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    31
  """
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    32
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    33
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    34
  patterns = [(r'tasks/convert/([a-z]+)$', 'soc.tasks.convert.runner')]
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    35
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    36
  return patterns
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    37
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    38
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    39
class TaskRunner(object):
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    40
  """Runs one of the supported task starters.
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    41
  """
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    42
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    43
  def __init__(self):
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    44
    """Initializes the TaskRunner.
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    45
    """
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    46
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    47
    self.options = {
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    48
        'program': self.startProgramConversion,
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    49
        'organization': self.startOrganizationConversion,
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    50
        'student': self.startStudentConversion,
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    51
    }
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    52
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    53
  def getOptions(self):
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    54
    """Returns the supported option types.
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    55
    """
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    56
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    57
    return self.options.keys()
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    58
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    59
  def __call__(self, request, option):
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    60
    """Starts the specified task.
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    61
    """
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    62
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    63
    context = {
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    64
        'page_name': 'Start conversion job',
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    65
    }
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    66
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    67
    fun = self.options.get(option)
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    68
    if not fun:
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    69
      template = 'soc/error.html'
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    70
      context['message'] = 'Uknown option "%s".' % option
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    71
    else:
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    72
      template = 'soc/tasks/convert.html'
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    73
      context['option'] = option
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    74
      context['success'] = fun(request)
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    75
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    76
    content = loader.render_to_string(template, dictionary=context)
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    77
    return http.HttpResponse(content)
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    78
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    79
  def startProgramConversion(self, request):
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    80
    """
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    81
    """
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    82
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    83
    # TODO(ljvderijk): implement this
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    84
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    85
    return False
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    86
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    87
  def startOrganizationConversion(self, request):
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    88
    """
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    89
    """
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    90
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    91
    # TODO(ljvderijk): implement this
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    92
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    93
    return False
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    94
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    95
  def startStudentConversion(self, request):
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    96
    """
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    97
    """
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    98
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    99
    # TODO(ljvderijk): implement this
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   100
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   101
    return False
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   102
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   103
3fbbb56b7925 Add a view to start conversion tasks
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
   104
runner = TaskRunner()