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)

Attachment: EditUser.ctd
Description: Binary data

Reply via email to