# HG changeset patch # User Sverre Rabbelier # Date 1225927979 0 # Node ID 94568ac6e3e1f5fef27426d62879a421c57d288b # Parent 92c17629af0ef02f4929be3ea1f05c9078aa575a 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. diff -r 92c17629af0e -r 94568ac6e3e1 app/soc/logic/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" ', + '"Lennard de Rijk" ' ] @@ -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() diff -r 92c17629af0e -r 94568ac6e3e1 app/soc/logic/models/site_settings.py --- 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 """ diff -r 92c17629af0e -r 94568ac6e3e1 app/soc/logic/models/work.py --- 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" ', + '"Lennard de Rijk" ' ] @@ -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() diff -r 92c17629af0e -r 94568ac6e3e1 app/soc/models/home_settings.py --- 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')