Login.py uses FFK and Cheetah with them template embedded as a variable in the file
EditUser.py uses FFK and the external template EditUser.ctd. (ctd is my own extention, you may want to follow the convention and use .tmpl) EditUser.ctd includes the bizzar newline fix that you need to use to add a "\n" into javascript -Aaron Held ----- Original Message ----- From: "Ian Sparks" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]> Sent: Tuesday, March 26, 2002 5:48 PM Subject: [Webware-discuss] Using FunFormKit & Cheetah > I searched the back-messages and saw that people had attempted to post > examples of FunFormKit and Cheetah integration but GeoCrawler seemed to have > dropped the attachments. > > Could someone post an example of integrating these two products? > > Many thanks. > > - Ian Sparks. > > > _______________________________________________ > Webware-discuss mailing list > [EMAIL PROTECTED] > https://lists.sourceforge.net/lists/listinfo/webware-discuss >
templateDef = """
<div align=center>
$rf.start
$rf.hidden
<table>
#if ($rf.errorText())
<tr><td colspan="2" align="center">Warning:
<b>$rf.errorText()</b></td></tr>
#end if
#for $f in $rf.visibleFields
#if (not $f.isSubmit)
<tr><td align="right">$f.description:</td><td>$f
$f.error</td></tr>
#end if
#end for
<tr><td align="center" colspan="2">
#for $f in $rf.submitFields
$f $f.error
#end for
</td></tr>
</table>
$rf.end
</div>
"""
from SitePage import SitePage
from FunFormKit.Form import *
from FunFormKit.Field import *
from FunFormKit.Validator import *
from Cheetah.Template import Template
from CSUserManager import UserManager
class loginUser(FormValidator):
def validate(self,fieldDict):
print('in Validate: ', fieldDict['userName'],fieldDict['password'])
#user = UserManager.login(fieldDict['userName'],fieldDict['password'])
user=UserManager.login(fieldDict['userName'],fieldDict['password'])
#user='aaron'
if (user==None):
print "Invalid User/Pass"
return {"form":'This is not a valid User Name / Password'}
else:
print 'Valid user in loginUser - FV'
return None
class NotExists(ValidatorConverter):
def validate(self, value):
#if value != "Admin":
# return 'For this example, please use "Admin"'
#else:
return None
fields = [
TextField('userName', size=30, maxLength=30,validators =
[NotEmpty(),NotExists()]),
PasswordField('password', size=30, maxLength=30,validators = [NotEmpty()]),
SubmitButton('submitLogin', description='Login', methodToInvoke='loginUser'),
]
formDefs = [
FormDefinition('Login','writeForm',fields,formValidators=[loginUser()])
]
class Login(SitePage, FormServlet):
def __init__(self):
FormServlet.__init__(self, 'writeContent', formDefs)
SitePage.__init__(self)
def writeForm(self):
defaults = {}
options = {}
#defaults['userName']='[EMAIL PROTECTED]'
#defaults['password']='vector'
#if not len(permissionID):
# options['update'] = {'hide': 1}
#else:
# options['add'] = {'hide': 1}
rf = self.renderableForm(defaults=defaults, optionSet=options)
t = Template(templateDef,[{'rf':rf}])
self.writeln(t)
self.setUpLog('Login','Anonymous User is viewing the login page' )
def loginUser(self,fields):
self._user = UserManager.login(fields['userName'],fields['password'])
self.session().setValue('user',self._user)
self.response().sendRedirect('Welcome')
self.setUpLog('LoginUser','%s is Logging in' % fields['userName'] )
def title(self):
return "Please Login"
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)
EditUser.ctd
Description: Binary data
