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.
--- 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')