app/soc/logic/models/document.py
author Sverre Rabbelier <srabbelier@gmail.com>
Sat, 31 Jan 2009 12:59:52 +0000
changeset 1106 e14b0995cf29
parent 1095 0122dc66e5d2
child 1115 0a723ff3d27c
permissions -rw-r--r--
Flush sidebar when creating a new entity Patch by: Sverre Rabbelier
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
"""Document (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: 410
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
1019
0cd056f2c739 Flush cache if user makes a document featured
Sverre Rabbelier <srabbelier@gmail.com>
parents: 678
diff changeset
    25
from soc.cache import sidebar
535
9045b8888772 Refactor classes in soc/logic/models to make more use of inheritance. Add
Todd Larsen <tlarsen@google.com>
parents: 530
diff changeset
    26
from soc.logic.models import work
678
b982d9175605 Added a linkable logic module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 655
diff changeset
    27
from soc.logic.models import linkable as linkable_logic
316
9efdc7bc3565 Add missing blank lines between imports and sort all of the imports.
Pawel Solyga <Pawel.Solyga@gmail.com>
parents: 308
diff changeset
    28
308
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    29
import soc.models.document
481
94834a1e6c01 Attempt to rename User.id to User.account, in preparation for making User be
Todd Larsen <tlarsen@google.com>
parents: 432
diff changeset
    30
import soc.models.work
308
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    31
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    32
535
9045b8888772 Refactor classes in soc/logic/models to make more use of inheritance. Add
Todd Larsen <tlarsen@google.com>
parents: 530
diff changeset
    33
class Logic(work.Logic):
308
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    34
  """Logic methods for the Document model
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    35
  """
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    36
535
9045b8888772 Refactor classes in soc/logic/models to make more use of inheritance. Add
Todd Larsen <tlarsen@google.com>
parents: 530
diff changeset
    37
  def __init__(self, model=soc.models.document.Document,
678
b982d9175605 Added a linkable logic module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 655
diff changeset
    38
               base_model=soc.models.work.Work, scope_logic=linkable_logic):
308
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    39
    """Defines the name, key_name and model for this entity.
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    40
    """
655
9635cbaa2dcd Cleanups to the logic module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 535
diff changeset
    41
678
b982d9175605 Added a linkable logic module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 655
diff changeset
    42
    super(Logic, self).__init__(model=model, base_model=base_model,
b982d9175605 Added a linkable logic module
Sverre Rabbelier <srabbelier@gmail.com>
parents: 655
diff changeset
    43
                                scope_logic=scope_logic)
410
2af7f84f4fc7 Moved all key_name related things to the logic modules
Sverre Rabbelier <srabbelier@gmail.com>
parents: 316
diff changeset
    44
1095
0122dc66e5d2 Add access control to document model and view
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1019
diff changeset
    45
  def getKeyValues(self, entity):
0122dc66e5d2 Add access control to document model and view
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1019
diff changeset
    46
    """See base.Logic.getKeyNameValues.
0122dc66e5d2 Add access control to document model and view
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1019
diff changeset
    47
    """
0122dc66e5d2 Add access control to document model and view
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1019
diff changeset
    48
0122dc66e5d2 Add access control to document model and view
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1019
diff changeset
    49
    return [entity.prefix, entity.scope_path, entity.link_id]
0122dc66e5d2 Add access control to document model and view
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1019
diff changeset
    50
0122dc66e5d2 Add access control to document model and view
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1019
diff changeset
    51
  def getKeyValuesFromFields(self, fields):
0122dc66e5d2 Add access control to document model and view
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1019
diff changeset
    52
    """See base.Logic.getKeyValuesFromFields.
0122dc66e5d2 Add access control to document model and view
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1019
diff changeset
    53
    """
0122dc66e5d2 Add access control to document model and view
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1019
diff changeset
    54
0122dc66e5d2 Add access control to document model and view
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1019
diff changeset
    55
    return [fields['prefix'], fields['scope_path'], fields['link_id']]
0122dc66e5d2 Add access control to document model and view
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1019
diff changeset
    56
0122dc66e5d2 Add access control to document model and view
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1019
diff changeset
    57
  def getKeyFieldNames(self):
0122dc66e5d2 Add access control to document model and view
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1019
diff changeset
    58
    """See base.Logic.getKeyFieldNames.
0122dc66e5d2 Add access control to document model and view
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1019
diff changeset
    59
    """
0122dc66e5d2 Add access control to document model and view
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1019
diff changeset
    60
0122dc66e5d2 Add access control to document model and view
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1019
diff changeset
    61
    return ['prefix', 'scope_path', 'link_id']
0122dc66e5d2 Add access control to document model and view
Sverre Rabbelier <srabbelier@gmail.com>
parents: 1019
diff changeset
    62
1019
0cd056f2c739 Flush cache if user makes a document featured
Sverre Rabbelier <srabbelier@gmail.com>
parents: 678
diff changeset
    63
  def _updateField(self, entity, name, value):
0cd056f2c739 Flush cache if user makes a document featured
Sverre Rabbelier <srabbelier@gmail.com>
parents: 678
diff changeset
    64
    """Special logic for role. If state changes to active we flush the sidebar.
0cd056f2c739 Flush cache if user makes a document featured
Sverre Rabbelier <srabbelier@gmail.com>
parents: 678
diff changeset
    65
    """
0cd056f2c739 Flush cache if user makes a document featured
Sverre Rabbelier <srabbelier@gmail.com>
parents: 678
diff changeset
    66
0cd056f2c739 Flush cache if user makes a document featured
Sverre Rabbelier <srabbelier@gmail.com>
parents: 678
diff changeset
    67
    if (name == 'is_featured') and (entity.is_featured != value):
0cd056f2c739 Flush cache if user makes a document featured
Sverre Rabbelier <srabbelier@gmail.com>
parents: 678
diff changeset
    68
      sidebar.flush()
0cd056f2c739 Flush cache if user makes a document featured
Sverre Rabbelier <srabbelier@gmail.com>
parents: 678
diff changeset
    69
0cd056f2c739 Flush cache if user makes a document featured
Sverre Rabbelier <srabbelier@gmail.com>
parents: 678
diff changeset
    70
    return True
0cd056f2c739 Flush cache if user makes a document featured
Sverre Rabbelier <srabbelier@gmail.com>
parents: 678
diff changeset
    71
308
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    72
740090cd17c9 Added invididual model logic files
Sverre Rabbelier <srabbelier@gmail.com>
parents:
diff changeset
    73
logic = Logic()