[Checkins]
SVN: Sandbox/darrylcousins/tfws.website/src/tfws/website/
Catching up with 3.4 eggs and fixing errors, tests again passing
Darryl Cousins
darryl at darrylcousins.net.nz
Sun Nov 4 23:32:22 EST 2007
Log message for revision 81518:
Catching up with 3.4 eggs and fixing errors, tests again passing
Changed:
U Sandbox/darrylcousins/tfws.website/src/tfws/website/BROWSER.txt
U Sandbox/darrylcousins/tfws.website/src/tfws/website/interfaces.py
U Sandbox/darrylcousins/tfws.website/src/tfws/website/members.py
U Sandbox/darrylcousins/tfws.website/src/tfws/website/site.txt
-=-
Modified: Sandbox/darrylcousins/tfws.website/src/tfws/website/BROWSER.txt
===================================================================
--- Sandbox/darrylcousins/tfws.website/src/tfws/website/BROWSER.txt 2007-11-05 03:54:54 UTC (rev 81517)
+++ Sandbox/darrylcousins/tfws.website/src/tfws/website/BROWSER.txt 2007-11-05 04:32:21 UTC (rev 81518)
@@ -125,7 +125,6 @@
We now have the edit form for a member.
>>> user.getControl('First Name').value = u'Darryl Jon'
- >>> #user.getControl('Email').value = u'Darryl Jon'
>>> user.getControl('Change Password').value = u'secret'
>>> user.getControl('Verify Password').value = u'osecret'
>>> user.getControl('Apply').click()
@@ -135,11 +134,11 @@
>>> 'Passwords do not match' in user.contents
True
- >>> #user.getControl('First Name').value = u'Darryl Jon'
- >>> #user.getControl('Change Password').value = u'secret'
- >>> #user.getControl('Verify Password').value = u'secret'
- >>> #user.getControl('Apply').click()
- >>> #'Data successfully updated' in user.contents
+ >>> user.getControl('First Name').value = u'Darryl Jon'
+ >>> user.getControl('Change Password').value = u'secret'
+ >>> user.getControl('Verify Password').value = u'secret'
+ >>> user.getControl('Apply').click()
+ >>> 'Data successfully updated' in user.contents
True
Modified: Sandbox/darrylcousins/tfws.website/src/tfws/website/interfaces.py
===================================================================
--- Sandbox/darrylcousins/tfws.website/src/tfws/website/interfaces.py 2007-11-05 03:54:54 UTC (rev 81517)
+++ Sandbox/darrylcousins/tfws.website/src/tfws/website/interfaces.py 2007-11-05 04:32:21 UTC (rev 81518)
@@ -81,10 +81,6 @@
"""Marker interface"""
-class PasswordsDoNotMatch(zope.schema.ValidationError):
- __doc__ = _("""Passwords do not match""")
-
-
class IPassword(zope.interface.Interface):
change_password = zope.schema.Password(
@@ -97,8 +93,6 @@
@zope.interface.invariant
def areEqual(data):
- print 'test equal'
if data.change_password != data.verify_password:
- #raise zope.interface.Invalid(_("Passwords do not match"))
- raise zope.interface.Invalid("Passwords do not match")
+ raise zope.interface.Invalid(_("Passwords do not match"))
Modified: Sandbox/darrylcousins/tfws.website/src/tfws/website/members.py
===================================================================
--- Sandbox/darrylcousins/tfws.website/src/tfws/website/members.py 2007-11-05 03:54:54 UTC (rev 81517)
+++ Sandbox/darrylcousins/tfws.website/src/tfws/website/members.py 2007-11-05 04:32:21 UTC (rev 81518)
@@ -9,7 +9,7 @@
from z3c.authentication.simple import member
from z3c.formui import layout
-from z3c.form import form, field
+from z3c.form import form, field, error
from zc.table import column
from zc.table.table import AlternatingRowFormatter
@@ -19,6 +19,7 @@
import mars.view
import mars.layer
import mars.template
+import mars.adapter
from tfws.website import interfaces
from tfws.website import permissions
@@ -120,9 +121,12 @@
class Member(grok.Model):
- """Stub object generated when traversing site/members"""
+ """Stub object generated when traversing site/members
+
+ One day I would dearly like to find a way to do this set/get stuff
+ with a lot less code.
+ """
grok.implements(interfaces.IWebSiteMember, interfaces.IPassword)
- verify_password = u''
def __init__(self, context, parent=None):
"""Make the object locatable"""
@@ -133,34 +137,52 @@
self.__name__ = context.__name__
self.context = context
- @property
- def email(self):
- return self.context.email
+ def set_email(self, value): self.context.email = value
+
+ def get_email(self): return self.context.email
- @property
- def login(self):
- return self.context.login
+ email = property(get_email, set_email)
- @property
- def change_password(self):
- return u''
+ def set_login(self, value): self.context.login = value
+
+ def get_login(self): return self.context.login
- @property
- def verify_password(self):
- return u''
+ login = property(get_login, set_login)
+ def set_verify_password(self, value): pass
+
+ def get_verify_password(self): return self.context.password
+
+ verify_password = property(get_verify_password, set_verify_password)
+
+ def set_change_password(self, value): self.context.password = value
+
+ def get_change_password(self): return self.context.password
+
+ change_password = property(get_change_password, set_change_password)
+
@property
def title(self):
return self.context.title
- @property
- def firstName(self):
+ def set_firstName(self, value):
+ self.context.firstName = value
+ self.context.title = '%s %s' % (self.context.firstName, self.context.lastName)
+
+ def get_firstName(self):
return self.context.firstName
- @property
- def lastName(self):
+ firstName = property(get_firstName, set_firstName)
+
+ def set_lastName(self, value):
+ self.context.lastName = value
+ self.context.title = '%s %s' % (self.context.firstName, self.context.lastName)
+
+ def get_lastName(self):
return self.context.lastName
+ lastName = property(get_lastName, set_lastName)
+
class MemberIndex(mars.form.FormView, layout.FormLayoutSupport,
form.DisplayForm):
grok.name('index')
@@ -186,23 +208,22 @@
'email')
fields += field.Fields(interfaces.IPassword)
- def applyChanges(self, data):
- change_password = data.get('change_password', None)
- del data['change_password']
- del data['verify_password']
+# register errorViewSnippet for Invalid
+# this is essential for correct rendering of the error
+class PasswordErrorViewSnippet(error.InvalidErrorViewSnippet):
+ """Error view snippet."""
+ zope.component.adapts(
+ zope.interface.Invalid, None, None, None, MemberEdit, Member)
- content = self.getContent().context
- changes = form.applyChanges(self, content, data)
- if content.password != change_password and change_password != None:
- content.password = change_password
- changes.setdefault(interfaces.IWebSiteMember, []).append('password')
- if changes:
- descriptions = []
- for interface, names in changes.items():
- descriptions.append(zope.lifecycleevent.Attributes(interface,
- *names))
- zope.event.notify(
- zope.lifecycleevent.ObjectModifiedEvent(content, *descriptions))
- return changes
+ def __init__(self, error, request, widget, field, form, content):
+ self.error = self.context = error
+ self.request = request
+ self.widget = form.widgets['change_password']
+ self.field = form.fields['change_password']
+ self.form = form
+ self.content = content
+class PasswordSnippet(mars.adapter.AdapterFactory):
+ mars.adapter.factory(PasswordErrorViewSnippet)
+
Modified: Sandbox/darrylcousins/tfws.website/src/tfws/website/site.txt
===================================================================
--- Sandbox/darrylcousins/tfws.website/src/tfws/website/site.txt 2007-11-05 03:54:54 UTC (rev 81517)
+++ Sandbox/darrylcousins/tfws.website/src/tfws/website/site.txt 2007-11-05 04:32:21 UTC (rev 81518)
@@ -145,14 +145,6 @@
We can traverse Members to a website member.
>>> tmember = members.traverse(member.__name__)
- >>> print (tmember.login, tmember.title, tmember.email)
- (u'darryl', u'Darryl Cousins', u'darryl at tfws.org.nz')
+ >>> print (tmember.login, tmember.title, tmember.email, tmember.password)
+ (u'darryl', u'Darryl Cousins', u'darryl at tfws.org.nz', 'tfws')
-We can't access the password for the member however
-
- >>> tmember.password
- Traceback (most recent call last):
- ...
- AttributeError: 'Member' object has no attribute 'password'
-
-
More information about the Checkins
mailing list