[Checkins] SVN: grokapps/PlainLoginDemo/ added delete button to
member listing
Luciano Ramalho
luciano at ramalho.org
Mon Jan 14 18:54:29 EST 2008
Log message for revision 82878:
added delete button to member listing
Changed:
U grokapps/PlainLoginDemo/README.txt
U grokapps/PlainLoginDemo/buildout.cfg
U grokapps/PlainLoginDemo/setup.py
U grokapps/PlainLoginDemo/src/plainlogindemo/app.py
U grokapps/PlainLoginDemo/src/plainlogindemo/app_templates/listing.pt
-=-
Modified: grokapps/PlainLoginDemo/README.txt
===================================================================
--- grokapps/PlainLoginDemo/README.txt 2008-01-14 20:58:02 UTC (rev 82877)
+++ grokapps/PlainLoginDemo/README.txt 2008-01-14 23:54:29 UTC (rev 82878)
@@ -1,4 +1,4 @@
-LoginDemo is a sample application showing how to implement user account
+PlainLoginDemo is a sample application showing how to implement user account
creation and login using Grok.
Main features
@@ -14,7 +14,7 @@
- member listing page is protected by permission, requiring user log in
-- good functional test coverage (see text files in src/logindemo/ftests)
+- good functional test coverage (see text files in src/plainlogindemo/ftests)
Todo
----
Modified: grokapps/PlainLoginDemo/buildout.cfg
===================================================================
--- grokapps/PlainLoginDemo/buildout.cfg 2008-01-14 20:58:02 UTC (rev 82877)
+++ grokapps/PlainLoginDemo/buildout.cfg 2008-01-14 23:54:29 UTC (rev 82878)
@@ -11,11 +11,11 @@
[app]
recipe = zc.zope3recipes>=0.5.3:application
-eggs = LoginDemo
-site.zcml = <include package="logindemo" />
+eggs = PlainLoginDemo
+site.zcml = <include package="plainlogindemo" />
<include package="zope.app.twisted" />
- <configure i18n_domain="logindemo">
+ <configure i18n_domain="plainlogindemo">
<unauthenticatedPrincipal id="zope.anybody"
title="Unauthenticated User" />
<unauthenticatedGroup id="zope.Anybody"
@@ -56,13 +56,13 @@
[test]
recipe = zc.recipe.testrunner
-eggs = LoginDemo
+eggs = PlainLoginDemo
defaults = ['--tests-pattern', '^f?tests$', '-v']
# this section named so that the i18n scripts are called bin/i18n...
[i18n]
recipe = lovely.recipe:i18n
-package = logindemo
-domain = logindemo
-location = src/logindemo
+package = plainlogindemo
+domain = plainlogindemo
+location = src/plainlogindemo
output = locales
Modified: grokapps/PlainLoginDemo/setup.py
===================================================================
--- grokapps/PlainLoginDemo/setup.py 2008-01-14 20:58:02 UTC (rev 82877)
+++ grokapps/PlainLoginDemo/setup.py 2008-01-14 23:54:29 UTC (rev 82878)
@@ -2,7 +2,7 @@
version = '0.0'
-setup(name='LoginDemo',
+setup(name='PlainLoginDemo',
version=version,
description="",
long_description="""\
Modified: grokapps/PlainLoginDemo/src/plainlogindemo/app.py
===================================================================
--- grokapps/PlainLoginDemo/src/plainlogindemo/app.py 2008-01-14 20:58:02 UTC (rev 82877)
+++ grokapps/PlainLoginDemo/src/plainlogindemo/app.py 2008-01-14 23:54:29 UTC (rev 82878)
@@ -152,7 +152,7 @@
grok.require('plainlogindemo.ViewMemberListing')
- def fieldNames(self):
+ def field_names(self):
# failed attempt to list fields but not methods; this returns empty
# return (f for f in IInternalPrincipal if IField.providedBy(f))
@@ -169,10 +169,14 @@
for id in sorted(principals.keys()):
user = principals[id]
fields = {}
- for field in self.fieldNames():
+ for field in self.field_names():
fields[field] = getattr(user, field)
roster.append(fields)
return roster
+
+ def delete_allowed(self):
+ # XXX: this is not the right way to do it... it's just a test
+ return self.request.principal.id.endswith('.manager')
class PasswordManagerChoices(object):
implements(IIterableSource)
Modified: grokapps/PlainLoginDemo/src/plainlogindemo/app_templates/listing.pt
===================================================================
--- grokapps/PlainLoginDemo/src/plainlogindemo/app_templates/listing.pt 2008-01-14 20:58:02 UTC (rev 82877)
+++ grokapps/PlainLoginDemo/src/plainlogindemo/app_templates/listing.pt 2008-01-14 23:54:29 UTC (rev 82878)
@@ -4,12 +4,17 @@
<h1>Member Listing</h1>
<table>
- <tr><th tal:repeat="field view/fieldNames"
+ <tr><th tal:repeat="field view/field_names"
tal:content="field">Field name</th></tr>
- <tr tal:repeat="member view/members">
+ <tr valign="top" tal:repeat="member view/members">
<td bgcolor="lightgray"
- tal:repeat="field view/fieldNames"
+ tal:repeat="field view/field_names"
tal:content="python:member[field]"></td>
+ <td tal:condition="view/delete_allowed">
+ <form tal:attributes="action view/url" method="post">
+ <input type="submit" value="Delete" />
+ </form>
+ </td>
</tr>
</table>
</div>
More information about the Checkins
mailing list