logo       

Re: complete example: msg#00035

python.cheetah

Subject: Re: complete example

I don't have a complete application handy, but here is a clean one. It uses the typical WebKit.Page for the site layout and cheetah for the writeContent bit

Nano Surbakti wrote:

Hi all,
Are there any site examples using Cheetah (& Webware (& FunFormKit)), so
I can learn faster how to use them.

Thanks.

Nano'



-------------------------------------------------------
This SF.net email is sponsored by: SF.net Giveback Program.
SourceForge.net hosts over 70,000 Open Source Projects.
See the people who have HELPED US provide better services:
Click here: http://sourceforge.net/supporters.php
_______________________________________________
Cheetahtemplate-discuss mailing list
Cheetahtemplate-discuss@xxxxxxxxxxxxxxxxxxxxx
https://lists.sourceforge.net/lists/listinfo/cheetahtemplate-discuss


--
-Aaron
http://www.MetroNY.com/
"I don't know what's wrong with my television set. I was getting
C-Span and the Home Shopping Network on the same station.
I actually bought a congressman."
- Bruce Baum


from SecurePage import SecurePage
from FunFormKit.Form import *
from FunFormKit.Field import *
from FunFormKit.Validator import *
from Cheetah.Template import Template
import os.path
from configuration import datapool,SiteSettings
import CSUserManager

class TrimConverter(ValidatorConverter):
"""This converter trims a string
"""
def __init__(self, value):
self.value = value
ValidatorConverter.__init__(self)
def convert(self, value):
from string import strip
return strip(self.value)

fields = [
TextField('username', description='User Name', size=20,
maxLength=20,validators = []),
TextField('password', size=20, maxLength=20,validators =
[NotEmpty(),MinLength(3)]),
SubmitButton('UpdateUser', description='Update User',
methodToInvoke='updateUser'),
TextField('phone', size=20, maxLength=20,
extraHTML='onFocus="this.select()"',validators = [NotEmpty(),MinLength(3)]),
TextareaField('groups', rows=5, cols=50,validators = []),
TextareaField('notes', rows=5, cols=50,validators = []),
]

formDefs = [
FormDefinition('EditUser','writeForm',fields)
]

class EditUser(SecurePage, FormServlet):
def __init__(self):
FormServlet.__init__(self, 'writeContent', formDefs)
SecurePage.__init__(self)

def title(self):
return('Edit User')

def updateUser(self,fields):
user=self.session().value('user')
print self.request().fields()
username=self.request().field('username')

userToUpdate=CSUserManager.UserManager.requestUserByName(user,username)
print 'userToUpdate:', userToUpdate
userToUpdate.passwd = self.request().field('password')
userToUpdate.phone = self.request().field('phone')
userToUpdate.groups = self.request().field('groups')
userToUpdate.notes = self.request().field('notes')
updatedUser =
CSUserManager.UserManager.updateUser(user,userToUpdate)
#from WebUtils.Funcs import urlEncode
#newURL="EditUser?username=%s" % urlEncode(fields['username'])
#self.response().sendRedirect(newURL)
#self.writeln('<br>',newURL)
self.writeln('<h2>User Changes have been Saved!</h2>')
self.writeForm()
self.setUpLog('EditedUser','%s is edited %s' %
(self._user.name,userToUpdate.name))


def writeForm(self):
rf = self.renderableForm()
defaults={}
options={}
user=self.session().value('user')
if (self.request().hasField('username')):
username=self.request().field('username')
staticGroups=0
else:
username=user.name
options['groups']={'static':1}
staticGroups=1


userToView=CSUserManager.UserManager.requestUserByName(user,username)
options['username']={'static':1}
defaults['username']=userToView.name
defaults['password']=userToView.passwd
defaults['phone']=userToView.phone
defaults['groups']=userToView.groups
defaults['notes']=userToView.notes
rf = self.renderableForm(defaults=defaults, optionSet=options)

templateFile=os.path.join(os.path.dirname(self.serverSidePath()),'templates','EditUser.ctd')
t = Template(file=templateFile,searchList=[{'rf':rf,
'user':userToView,'staticGroups':staticGroups},SiteSettings[user.company]])
self.writeln(t)
#self.writeln('<br>', templateFile)
#set $nl='\\n'
<SCRIPT LANGUAGE="JavaScript"><!--
function addGroups(sText){
// this routine adds a new item to our listbox
if (document.form.groups.value.length > 3) {
document.form.groups.value=document.form.groups.value + "$nl" + sText
}
else
{
document.form.groups.value=sText
}
}
//--></SCRIPT>
<div align=center>
$rf.start
$rf.hidden
<table>
<tr><td align="right"
class="label">Company:</td><td>$user.company</td></tr>
#for $f in
[$rf['username'],$rf['password'],$rf['phone']]
<tr><td align="right" valign="top"
class="label">$f.description:</td><td>$f $f.error</td></tr>
#end for
#if ($showGroups == 'True')
#set $f = $rf['groups']
#if ($staticGroups==0)
<tr><td align="right" valign="top"
class="label">$f.description:
<br>
<input type=button value=select
onClick="window.open('groupSelect',
'goGroup','toolbar=no,menubar=yes,location=no,directories=no,status=yes,resizeable=yes,width=500,height=500,left=50,top=50');"></td>
<td class="label">One Group per line - a
<b>%</b> is a wildcard.<br>
ie -
<b>Office%</b> will match any group staring with the word 'Office' <br>$f.error
$f</td></tr>
#else
<tr><td align="right" valign="top"
class="label">$f.description:</td>
<td class="label">Note: <b>%</b> is a
wildcard.<br>
ie - <b>Office%</b> will match any group
staring with the word 'Office'
<hr> $f<hr></td></tr>
#end if
#else
<input type=hidden name='groups' value=''>
#end if
#set $f = $rf['notes']
<tr><td align="right" valign="top"
class="label">$f.description:</td><td>$f $f.error</td></tr>
<tr><td align="center" colspan="2">
#for $f in $rf.submitFields
$f $f.error
#end for
</td></tr>
</table>
$rf.end
</div>
<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise