Hi Mostwanted
We always can optimise our code.
The dict could have keys for each possible session. Then you only need one
line to produce a random time.
Maybe your onvalidation only requires two lines of code!
Please look at this...
def my_form_processing(form):
times = {
'single session':['0830-0930hrs', '0930-1030hrs', '1100-1200','1200-1300',
'1400-1500', '1500-1600', '1600-1700'],
'evening single':['1730-1830', '1830-1930'],
'double session':['0830-1030', '1100-1300', '1400-1700'],
'evening double':['1730-1930']
}
form.vars.the_time2 = random.choice(times[form.vars.class_session])
On Thursday, 16 July 2020 07:53:51 UTC+1, mostwanted wrote:
>
> The dictionary makes it less cubersome:
> def my_form_processing(form):
> times=dict({'single_session_times':['0830-0930hrs', '0930-1030hrs',
> '1100-1200','1200-1300', '1400-1500', '1500-1600', '1600-1700'],
> 'evening_single_session_times':['1730-1830', '1830-1930'],
> 'double_session_times':['0830-1030', '1100-1300', '1400-1700'],
> 'evening_double_session_times':['1730-1930']})
>
>
> if form.vars.class_session=='single session':
> the_time=random.choice(times['single_session_times'])
> form.vars.the_time2=the_time
>
> if form.vars.class_session=='evening single session':
> the_time=random.choice(times['evening_single_session_times'])
> form.vars.the_time2=the_time
>
> if form.vars.class_session=='double session':
> the_time2=random.choice(times['double_session_times'])
> form.vars.the_time2=the_time2
>
> if form.vars.class_session=='evening double session':
> the_time=random.choice(times['evening_double_session_times'])
> form.vars.the_time2=the_time
>
> @auth.requires_login()
> def index():
> form=SQLFORM(db.lecture)
> if form.process(onvalidation=my_form_processing).accepted:
> response.flash=T('Lecture Entered')
> return locals()
>
> Thank you guys, much appreiated.
>
> On Wednesday, July 15, 2020 at 11:20:01 PM UTC+2, villas wrote:
>>
>> We all have our styles of programming. I would probably create a dict of
>> times.
>> But any idea which works is fine. Everyone looks at their old code and
>> sees a better way.
>> My motto is: get something working and move on!
>>
>>
>>
>> On Wednesday, 15 July 2020 19:26:33 UTC+1, mostwanted wrote:
>>>
>>> Thank you Villas, i updated my controller like this & its giving
>>> results. I a sure there is a better way to do this, a ore cleaner way & if
>>> anyone cares to improve my code please dont hesitate so i could update mine
>>> & learn more:
>>>
>>> def my_form_processing(form):
>>> if form.vars.class_session=='single session':
>>> single_session_times=['0830-0930hrs', '0930-1030hrs',
>>> '1100-1200','1200-1300', '1400-1500', '1500-1600', '1600-1700']
>>> the_time=random.choice(single_session_times)
>>> form.vars.the_time2=the_time
>>>
>>> if form.vars.class_session=='evening single session':
>>> evening_single_session_times=['1730-1830', '1830-1930']
>>> the_time=random.choice(evening_single_session_times)
>>> form.vars.the_time2=the_time
>>>
>>> if form.vars.class_session=='double session':
>>> double_session_times=['0830-1030', '1100-1300', '1400-1700']
>>> the_time2=random.choice(double_session_times)
>>> form.vars.the_time2=the_time2
>>>
>>> if form.vars.class_session=='evening double session':
>>> evening_double_session_times=['1730-1930']
>>> the_time=random.choice(evening_double_session_times)
>>> form.vars.the_time2=the_time
>>>
>>> @auth.requires_login()
>>> def index():
>>> form=SQLFORM(db.lecture)
>>> if form.process(onvalidation=my_form_processing).accepted:
>>> response.flash=T('Lecture Entered')
>>> return locals()
>>> Regards;
>>>
>>> Mostwanted
>>>
>>> On Wednesday, July 15, 2020 at 5:47:18 PM UTC+2, villas wrote:
>>>>
>>>> Before submission of form, use JS.
>>>> or
>>>> After submission, allocate the time in the controller using
>>>> *onvalidation*. See
>>>> http://www.web2py.com/books/default/chapter/29/07/forms-and-validators#onvalidation
>>>>
>>>> On Wednesday, 15 July 2020 13:58:28 UTC+1, mostwanted wrote:
>>>>>
>>>>> I thought it would be easy but its not, wrong values are being
>>>>> selected from wrong lists! After submitting a form I wanna check to see
>>>>> if
>>>>> the session field is either a single_session, double_session,
>>>>> evening_single_session or evening_double_session, depending on what it is
>>>>> I
>>>>> want time to be selected randomly from an appropriate list and inputted
>>>>> into the session_time field but wrong values from wrong lists are
>>>>> entered,
>>>>> information gets mixed up!
>>>>>
>>>>> model code:
>>>>> db.define_table('lecture',
>>>>> Field('subject_name', 'reference subject'),
>>>>> Field('department', 'reference departments'), #HERE
>>>>> Field('theLevels', label=SPAN('Levels'), requires=
>>>>> IS_IN_SET(['1.1', '1.2', '2.1', '2.2', '3.1', '3.2', '4.1', '4.2'],
>>>>> zero='---Select A Level---')), #HERE
>>>>> Field('lecturer', 'reference lecturer'),
>>>>> Field('class_session', requires=IS_IN_SET(['single
>>>>> session', 'double session', 'evening single session', 'evening double
>>>>> session'], zero='----Select A Session Period----')),
>>>>> Field('session_time', readable=False, writable=False),
>>>>> Field('class_room', readable=False, writable=False),
>>>>> Field('controller', readable=False, writable=False)
>>>>> )
>>>>>
>>>>> single_session_times=['0830-0930hrs', '0930-1030hrs', '1100-1200',
>>>>> '1200-1300', '1400-1500', '1500-1600', '1600-1700']
>>>>> double_session_times=['0830-1030', '1100-1300', '1400-1700']
>>>>>
>>>>> evening_single_session_times=['1730-1830', '1830-1930']
>>>>> evening_double_session_times=['1730-1930']
>>>>> '''
>>>>> After submitting the form, have system scheck the session, if the
>>>>> session is any of whats defined give it a proper time
>>>>> '''
>>>>> if db.lecture.class_session=='single session':
>>>>> the_time=random.choice(single_session_times)
>>>>> db.lecture.session_time.default=the_time
>>>>>
>>>>>
>>>>> elif db.lecture.class_session=='evening single session':
>>>>> the_time=random.choice(evening_single_session_times)
>>>>> db.lecture.session_time.default=the_time
>>>>>
>>>>>
>>>>> elif db.lecture.class_session=='double session':
>>>>> the_time=random.choice(double_session_times)
>>>>> db.lecture.session_time.default=the_time
>>>>>
>>>>>
>>>>> elif db.lecture.class_session=='evening double session':
>>>>> the_time=random.choice(evening_double_session_times)
>>>>> db.lecture.session_time.default=the_time
>>>>>
>>>>>
>>>>>
>>>>> How can i achieve this with proper results from the intended list
>>>>>
>>>>> Mostwanted
>>>>>
>>>>
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/web2py/f9960603-ca95-43a9-85a8-cc2508f73552o%40googlegroups.com.