Massimo,

is this sufficient to understand the problem, or should I describe
further ?

ciao
Stefan

On 26 Okt., 19:57, znafets <znaf...@googlemail.com> wrote:
> Massimo,
>
> I am sorry, I will try to be more explicite here:
>
> the model (two tables user and addr)
>
> db.define_table('user',
>                 Field('name', length=12, requires=IS_NOT_EMPTY()),
>                 Field('alias',length=12 ),
>                 Field('rname', length=28),
>                 Field('gender', requires=IS_IN_SET(['Male', 'Female',
> 'Other'])),
>                 Field('email', length=12),
>                 Field('password','password'),
>                 Field('created_on','date'),
>                 Field('console','boolean',default=False),
>                 Field('verification',default=''),
>                 Field('last_attempt_time','integer',default=0),
>                 Field('failed_attempts','integer',default=0))
>
> db.user.name.requires=IS_NOT_IN_DB(db,'user.name',
>                                         error_message='value already
> in DB')
> db.user.password.requires=CRYPT()
> db.user.email.requires=[IS_EMAIL(),IS_NOT_IN_DB(db,'user.email')]
> db.user.public_fields=['name', 'alias','rname', 'email','password',
>                                 'reg_date','console']
> db.user.public_labels={'name':'User Name', 'alias':'User Alias',
>                         'rname':'Real Name', 'created_on':'Member
> since',
>                         'console':'Console Login'}
>
> VALID_USER=IS_IN_DB(db(db.user.verification==''),'user.id','%(id)s:%
> (name)s')
>
> # addr table
> db.define_table('addr',
>                 Field('user', db.user),
>                 Field('zip'),
>                 Field('city'),
>                 Field('street'),
>                 Field('number'),
>                 Field('country'),
>                 Field('phone_short'),
>                 Field('phone_office'),
>                 Field('phone_home'),
>                 Field('phone_mobile'),
>                 Field('fax'),
>                 Field('birth', 'date'),
>                 Field('notes','text'))
>
> from these two tables I get the record data in the controller function
> like this:
>
> def edit_user():
>     if len(request.args):
>
>         req_user_id = request.args[0]
>
>         # if current user is not a member of system manager group
>         # he cannot edit any records except his own
>         if not is_member("Systems") and session.user_id != int
> (req_user_id):
>             session.flash = 'sorry, no sufficient access rights'
>             redirect(URL(r=request,f='index'))
>
>         user = db((db.user.id == req_user_id) &
>                             (db.addr.user == req_user_id)).select()[0]
>
>         db.user.id.default = user.user.id
>         db.user.name.default = user.user.name
>         db.user.email.default = user.user.email
>         db.addr.city.default = user.addr.city
>
>         form = SQLFORM.factory(db.user.name, db.user.rname,
> db.addr.city)
>
>    ###
>    ### this call doesn't work due to no_table issue
>    ###
>     if form.accepts(request.vars, session):
>
>         # change the user data
>         if change_user_data(user):
>             response.flash = 'form accepted'
>         else:
>             response.flash = 'form not accepted'
>         redirect(URL(r=request,f='index'))
>
>     elif form.errors:
>         response.flash = 'form has errors'
>
>     return dict(form=form)
>
> what I would like to do now is to place the fields in the view where I
> think it males most sense like:
> name                                    zip   city
> rname                                  street number
> etc.
>
> submit
>
> after submit the records in both tables should be updated, means when
> I changed the street the record in addr table gets updated, some field
> from user table and this one gets updated. It's okay updating all
> records of both tables when submit button getts pressed.
>
> I do not have preferences for either SQLFORM or FORM or
> SQLFORM.factory. What ever is easier and less hard to read.
> I am also fine with doing plain old HTML manually in the view as long
> as I can access the field values and place the fields where ever I
> want them and as long as I can get that information change back to the
> controller that is supposed to update my records.
>
> Thanks for getting into it with me.
>
> ciao
> Stefan
>
> On 26 Okt., 19:38, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > Stephan,
>
> > I think I am not completely understanding what you need. can you make
> > a concrete example of a model, how the model should look like (use a
> > drawing or text) and what should happen when the form is submitted?
>
> > Massimo
>
> > On Oct 26, 1:33 pm, znafets <znaf...@googlemail.com> wrote:
>
> > > @weheh: I saw that but couldn't take too much from it
> > > @Thadeus: Woooa, that looks like for a second generation BF compiler -
> > > I am blinded :) , thank you anyway
> > > @Massimo: I knew you would like that highly sophisticated stuff but
> > > please don't ask me if it helps to solve my problem, or better put: is
> > > this the only solution to that use case I described ? Then I guess
> > > this is way out of my league and incomprehensible for my old eyes.
>
> > > I adored web2py so far for being easy to use and elegant, but in this
> > > specific case I am willing to rethink that impression in a way that it
> > > may be easy as long as one stays on well flattened roads leading to
> > > standard views with minimum customization. Once you are passed that it
> > > seems to get really hairy.
>
> > > to recap:
> > > getting data from two tables displayed in a view with fields that are
> > > supposed to appear where I want them, pre-filled with the data that is
> > > already in the db is this the only way to do it in web2py ?
> > > seriously ? No easier, better, smoother way ?
>
> > > ciao
> > > Stefan
>
> > > On 26 Okt., 18:00, mdipierro <mdipie...@cs.depaul.edu> wrote:
>
> > > > An aesthetic issue. Consider you can replace:
>
> > > > {{
> > > > def req():
> > > >     return XML('''<span class="required">*</span>''')
>
> > > > }}
>
> > > > with
>
> > > > {{req=SPAN("*",_class="required")}}
>
> > > > and call it with {{=req}} or
>
> > > > {{def req():}}<span class="required">*</span>{{return}}
>
> > > > and call it with {{req()}} (no equal)
>
> > > > Massimo
>
> > > > On Oct 26, 11:51 am, Thadeus Burgess <thade...@thadeusb.com> wrote:
>
> > > > > This is usually what I end up doing for custom form. It allows for 
> > > > > fully
> > > > > customizable XHTML/CSS 3 forms.
>
> > > > > {{
> > > > > def req():
> > > > >     return XML('''<span class="required">*</span>''')}}
>
> > > > > {{pass}}
>
> > > > > {{def labels(field, required):}}
> > > > >                 <label for="{{=field}}" id="{{=field}}__label"
> > > > > class="title">{{=form.custom.label[field]}}{{if
> > > > > required:}}{{=req()}}{{pass}}</label>
> > > > >                 <label for="{{=field}}" id="{{=field}}__comment"
> > > > > class="comment">{{=form.custom.comment[field]}}</label>
> > > > >                 <label for="{{=field}}" id="{{=field}}__error"
> > > > > class="error">{{if
> > > > > form.errors.has_key(field):}}{{=form.errors[field]}}{{pass}}</label>
> > > > > {{pass}}
>
> > > > > {{def li(field, required=True):}}
> > > > >         <li {{if form.errors.has_key(field):}}class="err"{{pass}}>
> > > > >             <div class="labels">
> > > > >                 {{labels(field, required)}}
> > > > >             </div>
> > > > >             {{=form.custom.widget[field]}}
> > > > >         </li>
> > > > > {{pass}}
>
> > > > > {{=form.custom.begin}}
>
> > > > > <fieldset>
> > > > >     <legend></legend>
> > > > >     <ol>
> > > > >         {{li('signup_code')}}
> > > > >     </ol>
> > > > > </fieldset>
>
> > > > > <fieldset>
> > > > >     <ol>
> > > > >         <li>
> > > > >             <div class="labels">
> > > > >                 <label for="submit" class="title">Click to finish and 
> > > > > submit
> > > > > your information.</label>
> > > > >             </div>
> > > > >             <input type="submit" class="submit" value="Submit" />
> > > > >         </li>
> > > > >     </ol>
> > > > > </fieldset>
>
> > > > > {{=form.custom.end}}
>
> > > > > -Thadeus
>
> > > > > On Mon, Oct 26, 2009 at 7:43 AM, weheh <richard_gor...@verizon.net> 
> > > > > wrote:
>
> > > > > >http://groups.google.com/group/web2py/browse_thread/thread/c6e3021507...
>
> > > > > > On Oct 26, 7:55 am, znafets <znaf...@googlemail.com> wrote:
> > > > > > > the call to form.accepts fails with "key error" no-table ... 
> > > > > > > after the
> > > > > > > form gets submitted...
>
> > > > > > >   if form.accepts(request.vars, session):
>
> > > > > > > On 26 Okt., 11:05, znafets <znaf...@googlemail.com> wrote:
>
> > > > > > > > Hi Thadeus, weheh,
>
> > > > > > > > if I make it read like this:
>
> > > > > > > >         req_user_id = request.args[0]
>
> > > > > > > >         user = db((db.user.id == req_user_id) &
> > > > > > > >                             (db.addr.user == 
> > > > > > > > req_user_id)).select()[0]
>
> > > > > > > >         db.user.id.default = user.user.id
> > > > > > > >         db.user.name.default = user.user.name
> > > > > > > >         db.user.email.default = user.user.email
> > > > > > > >         db.addr.city.default = user.addr.city
>
> > > > > > > >         form = SQLFORM.factory(db.user.name, db.user.rname,
> > > > > > > > db.addr.city)
>
> > > > > > > > pre populating works.
>
> > > > > > > > @weheh: can you post an example how you take it from there with 
> > > > > > > > the
> > > > > > > > custom.form technics ?
>
> > > > > > > > thanls
> > > > > > > > Stefan
>
> > > > > > > > On 26 Okt., 07:06, weheh <richard_gor...@verizon.net> wrote:
>
> > > > > > > > > This is an unsolicited testimonial. I've been doing this kind 
> > > > > > > > > of
> > > > > > > > > multi-
> > > > > > > > > table-form thing now for about a month or two. I collect data 
> > > > > > > > > for
> > > > > > > > > specific fields for multiple tables (2 or 3 at a time) using
> > > > > > > > > SQLFORM.factory forms and use form.custom.begin ... 
> > > > > > > > > form.custom.end
> > > > > > > > > in
> > > > > > > > > my views. At first, it felt all cold, slobbery and
>
> ...
>
> Erfahren Sie mehr »
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To post to this group, send email to web2py@googlegroups.com
To unsubscribe from this group, send email to 
web2py+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/web2py?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to