Added a linkable logic module
authorSverre Rabbelier <srabbelier@gmail.com>
Sat, 06 Dec 2008 14:23:25 +0000
changeset 678 b982d9175605
parent 677 c8f24e3078b8
child 679 77a286ff6667
Added a linkable logic module The linkable logic module is used to signal the fact that the scope of an entity can be any linkable. Patch by: Sverre Rabbelier
app/soc/logic/models/document.py
app/soc/logic/models/linkable.py
app/soc/logic/models/presence.py
app/soc/logic/models/work.py
--- a/app/soc/logic/models/document.py	Sat Dec 06 12:13:19 2008 +0000
+++ b/app/soc/logic/models/document.py	Sat Dec 06 14:23:25 2008 +0000
@@ -23,6 +23,7 @@
 
 
 from soc.logic.models import work
+from soc.logic.models import linkable as linkable_logic
 
 import soc.models.document
 import soc.models.work
@@ -33,11 +34,12 @@
   """
 
   def __init__(self, model=soc.models.document.Document,
-               base_model=soc.models.work.Work):
+               base_model=soc.models.work.Work, scope_logic=linkable_logic):
     """Defines the name, key_name and model for this entity.
     """
 
-    super(Logic, self).__init__(model=model, base_model=base_model)
+    super(Logic, self).__init__(model=model, base_model=base_model,
+                                scope_logic=scope_logic)
 
 
 logic = Logic()
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/app/soc/logic/models/linkable.py	Sat Dec 06 14:23:25 2008 +0000
@@ -0,0 +1,54 @@
+#!/usr/bin/python2.5
+#
+# Copyright 2008 the Melange authors.
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#   http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+"""Linkable (Model) query functions.
+"""
+
+__authors__ = [
+  '"Sverre Rabbelier" <sverre@rabbelier.nl>',
+  ]
+
+
+from soc.logic.models import base
+
+import soc.models.linkable
+
+
+class Logic(base.Logic):
+  """Logic methods for the Linkable model.
+
+  Note: Logic classes should not inherit from this class, instead
+  it is meant to be referred to with scope_logic.
+  """
+
+  def __init__(self):
+    """Defines the name, key_name and model for this entity.
+    """
+
+    super(Logic, self).__init__(soc.models.linkable.Linkable)
+
+  def getScopeDepth(self):
+    """Returns the scope depth for this entity 
+
+    As it is impossible to determine the scope depth of a Linkable,
+    None is returned. This causes the scope regexp to match a scope
+    with an arbitrary depth. 
+    """
+
+    return None
+
+
+logic = Logic()
--- a/app/soc/logic/models/presence.py	Sat Dec 06 12:13:19 2008 +0000
+++ b/app/soc/logic/models/presence.py	Sat Dec 06 14:23:25 2008 +0000
@@ -24,6 +24,7 @@
 
 
 from soc.logic.models import base
+from soc.logic.models import linkable as linkable_logic
 
 import soc.models.presence
 
@@ -33,7 +34,7 @@
   """
 
   def __init__(self, model=soc.models.presence.Presence,
-               base_model=None, scope_logic=None):
+               base_model=None, scope_logic=linkable_logic):
     """Defines the name, key_name and model for this entity.
     """
 
--- a/app/soc/logic/models/work.py	Sat Dec 06 12:13:19 2008 +0000
+++ b/app/soc/logic/models/work.py	Sat Dec 06 14:23:25 2008 +0000
@@ -32,11 +32,13 @@
   """Logic methods for the Work model.
   """
 
-  def __init__(self, model=soc.models.work.Work, base_model=None):
+  def __init__(self, model=soc.models.work.Work,
+               base_model=None, scope_logic=None):
     """Defines the name, key_name and model for this entity.
     """
 
-    super(Logic, self).__init__(model, base_model=base_model)
+    super(Logic, self).__init__(model, base_model=base_model,
+                                scope_logic=scope_logic)
 
 
 logic = Logic()