Implements base.Logic functions in home_settings, site_settings and work
authorSverre Rabbelier <srabbelier@gmail.com>
Wed, 05 Nov 2008 23:32:59 +0000
changeset 443 94568ac6e3e1
parent 442 92c17629af0e
child 444 6e50bfc6e5a7
Implements base.Logic functions in home_settings, site_settings and work This patch implements the base.Logic funtions needed for making logic/key_name.py obsolete. This patch defines the needed functions in home_settings, site_settings and work. All modules in logic/models now have these functions defined. logic/models/site_settings.py now inherits from logic/models/home_settings.py because of their similar connection in the corresponding models. Please note that the self._keyName for these two modules still points to logic/key_name.py since entity_type is still used in views/home.py. A partial_path and link_name were added to HomeSettings as requested by SRabbelier.
app/soc/logic/models/home_settings.py
app/soc/logic/models/site_settings.py
app/soc/logic/models/work.py
app/soc/models/home_settings.py
--- a/app/soc/logic/models/home_settings.py	Tue Nov 04 20:06:36 2008 +0000
+++ b/app/soc/logic/models/home_settings.py	Wed Nov 05 23:32:59 2008 +0000
@@ -19,6 +19,7 @@
 
 __authors__ = [
   '"Sverre Rabbelier" <sverre@rabbelier.nl>',
+  '"Lennard de Rijk" <ljvderijk@gmail.com>'
   ]
 
 
@@ -42,6 +43,24 @@
     # views.models.base.View approach
     self._keyName = key_name.nameHomeSettings
     self._skip_properties = []
+  
+  def getKeyValues(self, entity):
+    """See base.Logic.getKeyNameValues.
+    """
+
+    return [entity.partial_path, entity.link_name]
+
+  def getKeyValuesFromFields(self, fields):
+    """See base.Logic.getKeyValuesFromFields.
+    """
+
+    return [fields['partial_path'], fields['link_name']]
+
+  def getKeyFieldNames(self):
+    """See base.Logic.getKeyFieldNames
+    """
+
+    return ['partial_path', 'link_name']
 
 
 logic = Logic()
--- a/app/soc/logic/models/site_settings.py	Tue Nov 04 20:06:36 2008 +0000
+++ b/app/soc/logic/models/site_settings.py	Wed Nov 05 23:32:59 2008 +0000
@@ -24,11 +24,12 @@
 
 from soc.logic import key_name
 from soc.logic.models import base
+from soc.logic.models import home_settings
 
 import soc.models.site_settings
 
 
-class Logic(base.Logic):
+class Logic(home_settings.Logic):
   """Logic methods for the SiteSettings model
   """
 
--- a/app/soc/logic/models/work.py	Tue Nov 04 20:06:36 2008 +0000
+++ b/app/soc/logic/models/work.py	Wed Nov 05 23:32:59 2008 +0000
@@ -19,6 +19,7 @@
 
 __authors__ = [
   '"Sverre Rabbelier" <sverre@rabbelier.nl>',
+  '"Lennard de Rijk" <ljvderijk@gmail.com>'
   ]
 
 
@@ -44,5 +45,22 @@
     self._skip_properties = []
     # TODO(tlarsen): write a nameWork method
 
+  def getKeyValues(self, entity):
+    """See base.Logic.getKeyNameValues.
+    """
+
+    return [entity.link_name]
+
+  def getKeyValuesFromFields(self, fields):
+    """See base.Logic.getKeyValuesFromFields.
+    """
+
+    return [fields['link_name']]
+
+  def getKeyFieldNames(self):
+    """See base.Logic.getKeyFieldNames
+    """
+
+    return ['link_name']
 
 logic = Logic()
--- a/app/soc/models/home_settings.py	Tue Nov 04 20:06:36 2008 +0000
+++ b/app/soc/models/home_settings.py	Wed Nov 05 23:32:59 2008 +0000
@@ -37,19 +37,35 @@
   This Model is the basis for more specific "/home" view settings, such as
   SiteSettings, ProgramSettings, etc.
   """
-  
+
   #: Reference to Document containing the contents of the "/home" page
   home = db.ReferenceProperty(
     reference_class=soc.models.document.Document,
     collection_name='home')
   home.help_text = ugettext_lazy(
       'Document to be used as the "/home" page static contents.')
-  
+
   #: Valid ATOM or RSS feed url or None if unused. Feed entries are shown 
   #: on the site page using Google's JavaScript blog widget  
   feed_url = db.LinkProperty(verbose_name=ugettext_lazy('Feed URL'))
   feed_url.help_text = ugettext_lazy(
       'The URL should be a valid ATOM or RSS feed. '
       'Feed entries are shown on the home page.')
-  
 
+#: Required path, prepended to a "link name" to form the document URL.
+  #: The combined path and link name must be globally unique on the
+  #: site.  Except in /site/docs (Developer) forms, this field is not
+  #: usually directly editable by the User, but is instead set by controller
+  #: logic to match the "scope" of the document.
+  partial_path = db.StringProperty(required=True,
+      verbose_name=ugettext_lazy('Partial path'))
+  partial_path.help_text = ugettext_lazy(
+    'path portion of URLs, prepended to link name')
+
+  #: Required link name, appended to a "path" to form the document URL.
+  #: The combined path and link name must be globally unique on the
+  #: site (but, unlike some link names, a Work link name can be reused,
+  #: as long as the combination with the preceding path is unique).
+  link_name = db.StringProperty(required=True,
+      verbose_name=ugettext_lazy('Link name'))
+  link_name.help_text = ugettext_lazy('link name used in URLs')