app/soc/tasks/convert.py
author Sverre Rabbelier <srabbelier@gmail.com>
Tue, 08 Sep 2009 14:56:39 +0200
changeset 2882 3fbbb56b7925
permissions -rw-r--r--
Add a view to start conversion tasks
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()