--- a/app/soc/views/models/presence.py Thu Jan 22 16:03:17 2009 +0000
+++ b/app/soc/views/models/presence.py Thu Jan 22 16:04:48 2009 +0000
@@ -27,6 +27,7 @@
from django import forms
from django.utils.translation import ugettext_lazy
+from soc.logic import cleaning
from soc.logic import dicts
from soc.logic import validate
from soc.logic.models import document as document_logic
@@ -42,79 +43,6 @@
import soc.views.helper.widgets
-class SettingsValidationForm(helper.forms.BaseForm):
- """Django form displayed when creating or editing Settings.
-
- This form includes validation functions for Settings fields.
- """
-
- # TODO(tlarsen): scope_path will be a hard-coded read-only
- # field for some (most?) User Roles
- home_scope_path = forms.CharField(required=False,
- label=ugettext_lazy('home page Document scope path'),
- help_text=soc.models.work.Work.scope_path.help_text)
-
- # TODO(tlarsen): actually, using these two text fields to specify
- # the Document is pretty cheesy; this needs to be some much better
- # Role-scoped Document selector that we don't have yet. See:
- # http://code.google.com/p/soc/issues/detail?id=151
- home_link_id = forms.CharField(required=False,
- label=ugettext_lazy('home page Document link ID'),
- help_text=soc.models.work.Work.link_id.help_text)
-
- # TODO(tlarsen): scope_path will be a hard-coded read-only
- # field for some (most?) User Roles
- tos_scope_path = forms.CharField(required=False,
- label=ugettext_lazy('Terms of Service Document scope path'),
- help_text=soc.models.work.Work.scope_path.help_text)
-
- # TODO(tlarsen): actually, using these two text fields to specify
- # the Document is pretty cheesy; this needs to be some much better
- # Role-scoped Document selector that we don't have yet
- # See:
- # http://code.google.com/p/soc/issues/detail?id=151
- tos_link_id = forms.CharField(required=False,
- label=ugettext_lazy('Terms of Service Document link ID'),
- help_text=soc.models.work.Work.link_id.help_text)
-
- def clean_feed_url(self):
- feed_url = self.cleaned_data.get('feed_url')
-
- if feed_url == '':
- # feed url not supplied (which is OK), so do not try to validate it
- return None
-
- if not validate.isFeedURLValid(feed_url):
- raise forms.ValidationError('This URL is not a valid ATOM or RSS feed.')
-
- return feed_url
-
-
-class CreateForm(SettingsValidationForm):
- """Django form displayed when creating or editing Settings.
- """
-
- class Meta:
- """Inner Meta class that defines some behavior for the form.
- """
- #: db.Model subclass for which the form will gather information
- model = soc.models.presence.Presence
-
- #: list of model fields which will *not* be gathered by the form
- exclude = ['scope',
- # TODO(tlarsen): this needs to be enabled once a button to a list
- # selection "interstitial" page is implemented, see:
- # http://code.google.com/p/soc/issues/detail?id=151
- 'home', 'tos']
-
-
-class EditForm(CreateForm):
- """Django form displayed a Document is edited.
- """
-
- pass
-
-
class View(base.View):
"""View methods for the Presence model.
"""
@@ -127,25 +55,26 @@
params: a dict with params for this View
"""
- rights = {}
- rights['any_access'] = [access.allow]
- rights['show'] = [access.allow]
+ new_params = {}
+
+ new_params['extra_dynaexclude'] = ['home', 'tos']
- new_params = {}
- new_params['logic'] = soc.logic.models.presence.logic
- new_params['rights'] = rights
+ new_params['create_extra_dynafields'] = {
+ # override some editors
+ 'home_link_id': forms.CharField(required=False,
+ label=ugettext_lazy('Home page Document link ID'),
+ help_text=soc.models.work.Work.link_id.help_text),
- new_params['name'] = "Home Settings"
- new_params['url_name'] = "home/settings"
- new_params['module_name'] = "presence"
+ 'tos_link_id': forms.CharField(required=False,
+ label=ugettext_lazy('Terms of Service Document link ID'),
+ help_text=soc.models.work.Work.link_id.help_text),
- new_params['edit_form'] = EditForm
- new_params['create_form'] = CreateForm
+ # add cleaning of the link id and feed url
+ 'clean_link_id': cleaning.clean_link_id,
+ 'clean_feed_url': cleaning.clean_feed_url,
+ }
- # Disable the presence sidebar until we have some use for it
- new_params['sidebar_defaults'] = []
-
- params = dicts.merge(params, new_params)
+ params = dicts.merge(params, new_params, sub_merge=True)
super(View, self).__init__(params=params)
@@ -171,11 +100,12 @@
try:
if entity.home:
- form.fields['home_scope_path'].initial = entity.home.scope_path
form.fields['home_link_id'].initial = entity.home.link_id
+ except db.Error:
+ pass
+ try:
if entity.tos:
- form.fields['tos_scope_path'].initial = entity.tos.scope_path
form.fields['tos_link_id'].initial = entity.tos.link_id
except db.Error:
pass
@@ -186,33 +116,21 @@
"""See base.View._editPost().
"""
- home_scope_path = fields['home_scope_path']
+ scope_path = entity.key().name()
home_link_id = fields['home_link_id']
# TODO notify the user if home_doc is not found
home_doc = document_logic.logic.getFromFields(
- scope_path=home_scope_path, link_id=home_link_id)
+ scope_path=scope_path, link_id=home_link_id)
fields['home'] = home_doc
- tos_scope_path = fields['tos_scope_path']
tos_link_id = fields['tos_link_id']
# TODO notify the user if tos_doc is not found
tos_doc = document_logic.logic.getFromFields(
- scope_path=tos_scope_path, link_id=tos_link_id)
+ scope_path=scope_path, link_id=tos_link_id)
fields['tos'] = tos_doc
super(View, self)._editPost(request, entity, fields)
-
-
-view = View()
-
-create = view.create
-edit = view.edit
-delete = view.delete
-list = view.list
-public = view.public
-export = view.export
-