app/soc/logic/models/user.py
author Sverre Rabbelier <srabbelier@gmail.com>
Mon, 03 Nov 2008 19:47:02 +0000
changeset 439 0658c3c9a9dc
parent 434 a4fc430fefac
child 448 075360be6743
permissions -rw-r--r--
Minor fixes needed for generic key name We no longer try to retreive an entity when there are unset fields. This sort of makes 'getIfFields' obsolete, since we check if fields now anyway. This is needed because getKeyFieldsFromDict expects the fields to be set. Also a minor fix in a Django template so that the generic 'edit' page has a working delete button again.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
308
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     1
#!/usr/bin/python2.5
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     2
#
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     3
# Copyright 2008 the Melange authors.
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     4
#
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     5
# Licensed under the Apache License, Version 2.0 (the "License");
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     6
# you may not use this file except in compliance with the License.
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     7
# You may obtain a copy of the License at
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     8
#
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
     9
#   http://www.apache.org/licenses/LICENSE-2.0
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    10
#
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    11
# Unless required by applicable law or agreed to in writing, software
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    12
# distributed under the License is distributed on an "AS IS" BASIS,
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    14
# See the License for the specific language governing permissions and
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    15
# limitations under the License.
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    16
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    17
"""User (Model) query functions.
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    18
"""
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    19
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    20
__authors__ = [
429
e50e18936f06 Fixed typo in e-mail address
Sverre Rabbelier <srabbelier@gmail.com>
parents: 316
diff changeset
    21
  '"Sverre Rabbelier" <sverre@rabbelier.nl>',
308
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    22
  ]
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    23
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    24
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    25
from soc.logic import key_name
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    26
from soc.logic.models import base
316
9efdc7bc3565 Add missing blank lines between imports and sort all of the imports.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 308
diff changeset
    27
308
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    28
import soc.models.user
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    29
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    30
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    31
class Logic(base.Logic):
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    32
  """Logic methods for the User model
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    33
  """
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    34
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    35
  def __init__(self):
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    36
    """Defines the name, key_name and model for this entity.
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    37
    """
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    38
432
1851d67a1004 Add a generic method for getting a Keyname
Sverre Rabbelier <srabbelier@gmail.com>
parents: 429
diff changeset
    39
    self._name = "User"
308
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    40
    self._model = soc.models.user.User
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    41
    self._skip_properties = ['former_ids']
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    42
434
a4fc430fefac Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 432
diff changeset
    43
  def getKeyValues(self, entity):
a4fc430fefac Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 432
diff changeset
    44
    """See base.Logic.getKeyNameValues.
a4fc430fefac Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 432
diff changeset
    45
    """
a4fc430fefac Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 432
diff changeset
    46
a4fc430fefac Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 432
diff changeset
    47
    return [entity.link_name]
a4fc430fefac Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 432
diff changeset
    48
a4fc430fefac Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 432
diff changeset
    49
  def getKeyValuesFromFields(self, fields):
a4fc430fefac Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 432
diff changeset
    50
    """See base.Logic.getKeyValuesFromFields.
a4fc430fefac Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 432
diff changeset
    51
    """
a4fc430fefac Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 432
diff changeset
    52
a4fc430fefac Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 432
diff changeset
    53
    properties = {
a4fc430fefac Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 432
diff changeset
    54
        'link_name': fields['link_name']
a4fc430fefac Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 432
diff changeset
    55
        }
a4fc430fefac Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 432
diff changeset
    56
a4fc430fefac Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 432
diff changeset
    57
    entity = self.getForFields(properties, unique=True)
a4fc430fefac Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 432
diff changeset
    58
    return [entity.id.email()]
a4fc430fefac Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 432
diff changeset
    59
a4fc430fefac Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 432
diff changeset
    60
  def getKeyFieldNames(self):
a4fc430fefac Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 432
diff changeset
    61
    """See base.Logic.getKeyFieldNames
a4fc430fefac Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 432
diff changeset
    62
    """
a4fc430fefac Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 432
diff changeset
    63
a4fc430fefac Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 432
diff changeset
    64
    return ['email']
a4fc430fefac Added key field definitions to the User logic
Sverre Rabbelier <srabbelier@gmail.com>
parents: 432
diff changeset
    65
308
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    66
  def _updateField(self, model, name, value):
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    67
    """Special case logic for id.
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    68
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    69
    When the id is changed, the former_ids field should be appended
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    70
    with the old id.
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    71
    """
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    72
    if name == 'id' and model.id != value:
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    73
      model.former_ids.append(model.id)
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    74
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    75
    return True
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    76
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    77
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    78
logic = Logic()