app/soc/logic/models/review.py
author Daniel Hans <Daniel.M.Hans@gmail.com>
Fri, 07 Aug 2009 01:27:24 +0200
changeset 2736 8f3935f0f4ba
parent 1757 0f909179ccf2
child 2774 14b51b124ccb
permissions -rw-r--r--
Argument store added to updateEntityProperties. This argument determines if an entity should be stored in the data model after its properties are updated. It may be useful, for example, along with tasks (Task Queue API). One may want to make some modifications to an entity during execution of a task, but the developer is sure that at least one new task, which also wants to modify the entity, will be queued, so he or she can just update the entity without saving the changes to the data model, set the entity in memcache and the following task (which is to be executed very shortly) is to retrive the current entity from the memcache (without any expensive calls to the actual data model).
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1710
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     1
#!/usr/bin/python2.5
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     2
#
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     3
# Copyright 2008 the Melange authors.
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     4
#
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     5
# Licensed under the Apache License, Version 2.0 (the "License");
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     6
# you may not use this file except in compliance with the License.
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     7
# You may obtain a copy of the License at
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     8
#
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
     9
#   http://www.apache.org/licenses/LICENSE-2.0
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    10
#
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    11
# Unless required by applicable law or agreed to in writing, software
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    12
# distributed under the License is distributed on an "AS IS" BASIS,
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    13
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    14
# See the License for the specific language governing permissions and
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    15
# limitations under the License.
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    16
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    17
"""Review (Model) query functions.
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    18
"""
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    19
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    20
__authors__ = [
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    21
  '"Lennard de Rijk" <ljvderijk@gmail.com>',
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    22
  ]
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    23
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    24
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    25
from soc.logic.models import base
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    26
from soc.logic.models import linkable as linkable_logic
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    27
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    28
import soc.models.comment
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    29
import soc.models.review
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    30
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    31
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    32
class Logic(base.Logic):
1757
0f909179ccf2 Some minor style fixes.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1740
diff changeset
    33
  """Logic methods for the review model.
1710
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    34
  """
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    35
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    36
  def __init__(self, model=soc.models.review.Review,
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    37
               base_model=soc.models.comment.Comment,
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    38
               scope_logic=linkable_logic):
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    39
    """Defines the name, key_name and model for this entity.
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    40
    """
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    41
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    42
    super(Logic, self).__init__(model=model, base_model=base_model,
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    43
                                scope_logic=scope_logic)
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    44
1740
fbc2ad561c4b Added a new method in the review logic to return all reviews for the given entity as scope.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1710
diff changeset
    45
  def getReviewsForEntity(self, entity, is_public, order=None):
fbc2ad561c4b Added a new method in the review logic to return all reviews for the given entity as scope.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1710
diff changeset
    46
    """Returns the reviews that have the given entity as scope.
fbc2ad561c4b Added a new method in the review logic to return all reviews for the given entity as scope.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1710
diff changeset
    47
    
fbc2ad561c4b Added a new method in the review logic to return all reviews for the given entity as scope.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1710
diff changeset
    48
    Args:
fbc2ad561c4b Added a new method in the review logic to return all reviews for the given entity as scope.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1710
diff changeset
    49
      entity: the entity which is the scope of the review
fbc2ad561c4b Added a new method in the review logic to return all reviews for the given entity as scope.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1710
diff changeset
    50
      is_public: determines if the public or non-public reviews are returned
fbc2ad561c4b Added a new method in the review logic to return all reviews for the given entity as scope.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1710
diff changeset
    51
      order: the optional ordering in which the reviews are returned
fbc2ad561c4b Added a new method in the review logic to return all reviews for the given entity as scope.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1710
diff changeset
    52
    """
fbc2ad561c4b Added a new method in the review logic to return all reviews for the given entity as scope.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1710
diff changeset
    53
fbc2ad561c4b Added a new method in the review logic to return all reviews for the given entity as scope.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1710
diff changeset
    54
    fields = {'scope': entity,
fbc2ad561c4b Added a new method in the review logic to return all reviews for the given entity as scope.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1710
diff changeset
    55
              'is_public': is_public}
fbc2ad561c4b Added a new method in the review logic to return all reviews for the given entity as scope.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1710
diff changeset
    56
fbc2ad561c4b Added a new method in the review logic to return all reviews for the given entity as scope.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1710
diff changeset
    57
    query = self.getQueryForFields(fields, order)
fbc2ad561c4b Added a new method in the review logic to return all reviews for the given entity as scope.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1710
diff changeset
    58
fbc2ad561c4b Added a new method in the review logic to return all reviews for the given entity as scope.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1710
diff changeset
    59
    return self.getAll(query)
fbc2ad561c4b Added a new method in the review logic to return all reviews for the given entity as scope.
Lennard de Rijk <ljvderijk@gmail.com>
parents: 1710
diff changeset
    60
1710
9003103d01a1 Added Logic for the Review Model.
Lennard de Rijk <ljvderijk@gmail.com>
parents:
diff changeset
    61
logic = Logic()