app/soc/logic/models/club.py
author Lennard de Rijk <ljvderijk@gmail.com>
Wed, 21 Jan 2009 19:32:00 +0000
changeset 882 267e31f1a0b6
parent 871 0ec74865eb5e
child 892 c3cdb581ffd2
permissions -rw-r--r--
Added club_app model and logic. Patch by: Lennard de Rijk
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
782
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     1
#!/usr/bin/python2.5
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     2
#
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     3
# Copyright 2008 the Melange authors.
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     4
#
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     5
# Licensed under the Apache License, Version 2.0 (the "License");
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     6
# you may not use this file except in compliance with the License.
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     7
# You may obtain a copy of the License at
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     8
#
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     9
#   http://www.apache.org/licenses/LICENSE-2.0
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    10
#
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    11
# Unless required by applicable law or agreed to in writing, software
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    12
# distributed under the License is distributed on an "AS IS" BASIS,
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    14
# See the License for the specific language governing permissions and
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    15
# limitations under the License.
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    16
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    17
"""Club (Model) query functions.
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    18
"""
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    19
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    20
__authors__ = [
801
06a84103ed8b Invite (backup-)admin when creating a club
Sverre Rabbelier <srabbelier@gmail.com>
parents: 782
diff changeset
    21
    '"Sverre Rabbelier" <sverre@rabbelier.nl>',
06a84103ed8b Invite (backup-)admin when creating a club
Sverre Rabbelier <srabbelier@gmail.com>
parents: 782
diff changeset
    22
    '"Lennard de Rijk" <ljvderijk@gmail.com>',
782
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    23
  ]
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    24
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    25
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    26
from soc.logic.models import group
882
267e31f1a0b6 Added club_app model and logic.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 871
diff changeset
    27
from soc.logic.models import club_app as club_app_logic
801
06a84103ed8b Invite (backup-)admin when creating a club
Sverre Rabbelier <srabbelier@gmail.com>
parents: 782
diff changeset
    28
from soc.logic.models import request as request_logic
782
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    29
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    30
import soc.models.club
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    31
import soc.models.group
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    32
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    33
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    34
class Logic(group.Logic):
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    35
  """Logic methods for the Club model.
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    36
  """
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    37
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    38
  def __init__(self, model=soc.models.club.Club,
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    39
               base_model=soc.models.group, scope_logic=None):
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    40
    """Defines the name, key_name and model for this entity.
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    41
    """
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    42
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    43
    super(Logic, self).__init__(model, base_model=base_model,
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    44
                                scope_logic=scope_logic)
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    45
801
06a84103ed8b Invite (backup-)admin when creating a club
Sverre Rabbelier <srabbelier@gmail.com>
parents: 782
diff changeset
    46
  def _onCreate(self, entity):
804
13fcbd8598a4 Fixed a bug that was triggered on manual club creation without an application.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 801
diff changeset
    47
    """Invites the group admin and backup admin.
801
06a84103ed8b Invite (backup-)admin when creating a club
Sverre Rabbelier <srabbelier@gmail.com>
parents: 782
diff changeset
    48
    """
06a84103ed8b Invite (backup-)admin when creating a club
Sverre Rabbelier <srabbelier@gmail.com>
parents: 782
diff changeset
    49
06a84103ed8b Invite (backup-)admin when creating a club
Sverre Rabbelier <srabbelier@gmail.com>
parents: 782
diff changeset
    50
    # Find their application
882
267e31f1a0b6 Added club_app model and logic.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 871
diff changeset
    51
    application = club_app_logic.logic.getFromFields(link_id=entity.link_id)
801
06a84103ed8b Invite (backup-)admin when creating a club
Sverre Rabbelier <srabbelier@gmail.com>
parents: 782
diff changeset
    52
804
13fcbd8598a4 Fixed a bug that was triggered on manual club creation without an application.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 801
diff changeset
    53
    if application:
13fcbd8598a4 Fixed a bug that was triggered on manual club creation without an application.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 801
diff changeset
    54
      # only if there is an application send out the invites
13fcbd8598a4 Fixed a bug that was triggered on manual club creation without an application.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 801
diff changeset
    55
      properties = {
13fcbd8598a4 Fixed a bug that was triggered on manual club creation without an application.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 801
diff changeset
    56
          'scope': entity,
13fcbd8598a4 Fixed a bug that was triggered on manual club creation without an application.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 801
diff changeset
    57
          'scope_path': entity.key().name(),
13fcbd8598a4 Fixed a bug that was triggered on manual club creation without an application.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 801
diff changeset
    58
          'role': 'club_admin',
871
0ec74865eb5e Reverted r1457.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 868
diff changeset
    59
          'group_accepted': True,
804
13fcbd8598a4 Fixed a bug that was triggered on manual club creation without an application.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 801
diff changeset
    60
          }
801
06a84103ed8b Invite (backup-)admin when creating a club
Sverre Rabbelier <srabbelier@gmail.com>
parents: 782
diff changeset
    61
804
13fcbd8598a4 Fixed a bug that was triggered on manual club creation without an application.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 801
diff changeset
    62
      for admin in [application.applicant, application.backup_admin]:
13fcbd8598a4 Fixed a bug that was triggered on manual club creation without an application.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 801
diff changeset
    63
        properties['link_id'] = admin.link_id
13fcbd8598a4 Fixed a bug that was triggered on manual club creation without an application.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 801
diff changeset
    64
        key_fields = request_logic.logic.getKeyFieldsFromDict(properties)
13fcbd8598a4 Fixed a bug that was triggered on manual club creation without an application.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 801
diff changeset
    65
        request_logic.logic.updateOrCreateFromFields(properties, key_fields)
13fcbd8598a4 Fixed a bug that was triggered on manual club creation without an application.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 801
diff changeset
    66
13fcbd8598a4 Fixed a bug that was triggered on manual club creation without an application.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 801
diff changeset
    67
      # set the application to completed  
13fcbd8598a4 Fixed a bug that was triggered on manual club creation without an application.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 801
diff changeset
    68
      fields = {'application_completed' : True}
882
267e31f1a0b6 Added club_app model and logic.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 871
diff changeset
    69
      club_app_logic.logic.updateModelProperties(application, fields)
801
06a84103ed8b Invite (backup-)admin when creating a club
Sverre Rabbelier <srabbelier@gmail.com>
parents: 782
diff changeset
    70
782
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    71
27924b0f13cd Fixed missing files in r1364.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    72
logic = Logic()