Yes, its part of the SQLFORM. I have attached my file from the controller. Could you please let me know where do I need to make the changes (i.e. keepvalues = True)
Regards, Anuj On Tuesday, May 5, 2020 at 6:38:29 PM UTC+5:30, Scott Hunter wrote: > > If this is part of a form (which I have to guess at, since you have > provided *no* details), you can use the `keepvalues` option to not reset > the fields of a form. > > On Tuesday, May 5, 2020 at 8:24:32 AM UTC-4, Anuj Mahawar wrote: >> >> Hey Scott, >> Yeah, I meant that the date is resetting to the current date even though >> I am selecting any previous date. Do you have any suggestions to change >> this default behavior? >> >> On Tuesday, May 5, 2020 at 5:22:30 PM UTC+5:30, Scott Hunter wrote: >>> >>> What do you mean by "redirected"? If you just mean that the date field >>> is reset to the current date, that is the same default behavior for all >>> input fields. >>> >>> On Tuesday, May 5, 2020 at 12:44:31 AM UTC-4, Anuj Mahawar wrote: >>>> >>>> I am a beginner to the web2py. I am building an application with a date >>>> picker on the home page. The issue is - Whenever I try to edit a previous >>>> day's record and submit, instead of on being on the same date, it is being >>>> redirected to the current date page. e.g. suppose I have logged in and it >>>> displays the current date i.e. 29 April 2020. When I try to edit a record >>>> for 01 April 2020 and submit the entry, it is being redirected to the >>>> current date i.e. 29 April 2020. Any idea why the application is behaving >>>> like that? >>>> >>>> -- 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 web2py+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/web2py/197d1e24-a50d-4ec8-b6a5-a517beed0f04%40googlegroups.com.
# -*- coding: utf-8 -*- # ------------------------------------------------------------------------- # This is a sample controller # this file is released under public domain and you can use without limitations # ------------------------------------------------------------------------- # ---- example index page ---- def index(): if not session.logged_in_user: redirect(URL('login')) import datetime form=SQLFORM(db.ts_date,buttons=[]) for row in form.element('table'): del row[0] message = pull_home_data() #except Exception,e: # response.flash='Something wrong! '+str(e) return locals() def pull_home_data(): if not session.logged_in_user: redirect(URL('login')) import datetime date = '' message='' ts_data='' html = '' userid = session.user_id inst_prod='' sum_time=datetime.timedelta() if 1: if request.post_vars.date: date = date=datetime.datetime.strptime(request.post_vars.date,"%d %B %Y").date() else: date = request.now ts_data = db((db.ts_data.date_worked == date) & (db.ts_data.username==userid)).select(db.ts_data.id,db.ts_data.product_Name,db.ts_data.time_worked,db.ts_data.comments,db.ts_data.date_worked,orderby=db.ts_data.id) if ts_data: total_time = [str(x['time_worked']) for x in ts_data] for y in total_time: (h, m, s) = y.split(':') d = datetime.timedelta(hours=int(h), minutes=int(m)) sum_time += d html += '<div style="float:right; font-size:20px; margin-top:10px">Total Hours Worked <span style="color:brown">'+str(sum_time)[:-3]+'</span></div>' ts_prod = list(set(row['product_Name'] for row in ts_data)) for row in ts_prod: sum_ptime = datetime.timedelta() total_prod_time = [str(x['time_worked']) for x in ts_data if x['product_Name'] == row] for u in total_prod_time: (h, m, s) = u.split(':') pt = datetime.timedelta(hours=int(h), minutes=int(m)) sum_ptime += pt html += '<div style= "width:100%; float:left;"><h4 style="padding:5px"><hr>' + str(row['product_name']) + '<div style="float:right;">Total Hrs <span style="color:orange">'+str(sum_ptime)[:-3]+'</span></div></h4>' for dat in ts_data: if row == dat['product_Name']: html += '<div class="task_class"><table class="main"><tr colspan="2"><td> <div style="float:right;"><button href="#" class="deletebtn" onClick="delete_entry('+str(dat['id'])+',this)"; id="Btn_delete_'+str(dat['id'])+'" >Delete</button></div><div style="float:right;"><button href="#" class="addbtn" onClick="edit_entry('+str(dat['id'])+','+str(row)+',\''+str(row['product_name'])+'\')"; id="Btn_edit_'+str(dat['id'])+'" >Edit</button></div></td></tr>' task_data = db(db.ts_task_data.transaction_id == dat['id']).select(db.ts_task_data.lable_name,db.ts_task_data.value) for i in task_data: lable = db(db.ts_form.id == i['lable_name']).select(db.ts_form.lable_name) if lable: if '|' in i['value']: itms = i['value'].split('|') html += '<tr><td><div class="task_head">'+str(lable[0]['lable_name'])+'</div><div >'+str(itms[0])+'</div></td></tr>' html += '<tr><td><div class="task_head">'+str(itms[0])+' Type'+'</div><div >'+str(itms[1])+'</div></td></tr>' else: html += '<tr><td><div class="task_head">'+str(lable[0]['lable_name'])+'</div><div >'+str(i['value'])+'</div></td></tr>' html += '<tr><td><div class="task_head">Time Worked</div><div >' + str(dat['time_worked'])+ '</div></td></tr><tr><td><div Style="font-weight:bold; float:left;">Comments<div style="font-weight:normal">'+str(dat['comments']) + '</div></div></td></tr>' html += '</table></div>' html += '</div>' else: message = 'No Record Found! Click Add to create new.' message += html return message def reports(): if not session.logged_in_user: redirect(URL('login')) if session.is_admin[0]['Is_Admin'] != 'Y': redirect(URL('index')) import datetime message = '<h4>Full Export</h4>' fullexportform = SQLFORM.factory( Field('Startdate',type='date',label='Start Date',requires=[IS_NOT_EMPTY(),IS_DATE(format=('%d %B %Y'))],widget=date_widget,default=request.now), Field('Enddate',type='date',label='End Date',requires=[IS_NOT_EMPTY(),IS_DATE(format=('%d %B %Y'))],widget=date_widget,default=request.now),buttons=[INPUT(_type='button',_value='Export',_id='form_button_report',_onClick='generate_full(this.form,"full",this)')]) collectstatsform = SQLFORM.factory( Field('Startdatestats',type='date',label='Start Date',requires=[IS_NOT_EMPTY(),IS_DATE(format=('%d %B %Y'))],widget=date_widget,default=request.now), Field('Enddatestats',type='date',label='End Date',requires=[IS_NOT_EMPTY(),IS_DATE(format=('%d %B %Y'))],widget=date_widget,default=request.now),buttons=[INPUT(_type='button',_value='Submit',_id='form_button_stats',_onClick='calculate_stats(this.form,"stats",this)')]) message += XML(fullexportform) return locals() def generate_full(): if not session.logged_in_user: redirect(URL('login')) message = '' key=[] import pandas as pd import numpy as np import datetime, json,csv, os, time try: ts = time.time() currtime = str(datetime.datetime.fromtimestamp(ts).strftime('%H_%M_%S')) form_json = request.post_vars.formdata formdata = json.loads(form_json) tmpfilename=os.path.join(request.folder,'static','export_tmp.csv') for row in formdata: if row['name'] == 'Startdate': sdate = datetime.datetime.strptime(row['value'],"%d %B %Y").date() if row['name'] == 'Enddate': edate = datetime.datetime.strptime(row['value'],"%d %B %Y").date() if sdate <= edate: ts_data = db((db.ts_data.date_worked >= sdate) & (db.ts_data.date_worked <= edate) ).select(db.ts_data.id,db.ts_data.product_Name,db.ts_data.time_worked,db.ts_data.date_worked,db.ts_data.comments,db.ts_data.username,orderby=db.ts_data.id) for tsd in ts_data: tsd['product_Name'] = tsd['product_Name']['product_name'] tsun = db((db.ts_auth_user.id == tsd['username'])).select(db.ts_auth_user.username,db.ts_auth_user.User_Role) tsd['username'] = tsun[0]['username'] tsd['usergroup']=tsun[0]['User_Role'] if 'product_Name' not in key: key =key + ['product_Name'] tstd = db((db.ts_task_data.transaction_id == tsd['id'])).select(db.ts_task_data.lable_name,db.ts_task_data.value,orderby=db.ts_task_data.id) for i in tstd: if '|' in str(i['value']): splitdeftask = str(i['value']).split('|') deftask = str(splitdeftask[0]) subtask = str(splitdeftask[1]) ln = str(i['lable_name']['lable_name']) tsd[ln]=str(deftask) if ln not in key: key = key + [ln] newtype = str(deftask) + ' Type' if newtype not in key: key = key + [newtype] tsd[newtype]=str(subtask) else: ln = str(i['lable_name']['lable_name']) tsd[ln]=str(i['value']) if ln not in key: key = key + [ln] if 'delete_record' in tsd: del tsd['delete_record'] if 'update_record' in tsd: del tsd['update_record'] if 'ts_task_data' in tsd: del tsd['ts_task_data'] if 'id' in tsd: del tsd['id'] keys = key + ['time_worked'] +['date_worked'] +['usergroup']+['username'] + ['comments'] with open(tmpfilename, 'wb') as output_file: dict_writer = csv.DictWriter(output_file, keys) dict_writer.writeheader() dict_writer.writerows(ts_data) message += str('Export_Data_'+currtime+'.csv') else: message += 'Start date should be less than End date' except Exception,e: message += str(e) return XML(message) def calculate_stats(): if not session.logged_in_user: redirect(URL('login')) import pandas as pd import numpy as np import datetime, json,csv, os, time form_json = request.post_vars.formdata formdata = json.loads(form_json) message = '' fields=[] tmpfilename=os.path.join(request.folder,'static','calculate_stats.csv') key=[] if 1: for row in formdata: if row['name'] == 'Startdatestats': sdate = datetime.datetime.strptime(row['value'],"%d %B %Y").date() if row['name'] == 'Enddatestats': edate = datetime.datetime.strptime(row['value'],"%d %B %Y").date() if sdate <= edate: ts_data = db((db.ts_data.date_worked >= sdate) & (db.ts_data.date_worked <= edate) ).select(db.ts_data.id,db.ts_data.product_Name,db.ts_data.time_worked,db.ts_data.date_worked,db.ts_data.comments,db.ts_data.username,orderby=db.ts_data.id) for tsd in ts_data: tsd['product_Name'] = tsd['product_Name']['product_name'] tsun = db((db.ts_auth_user.id == tsd['username'])).select(db.ts_auth_user.username,db.ts_auth_user.User_Role) tsd['username'] = tsun[0]['username'] tsd['usergroup']=tsun[0]['User_Role'] if 'product_Name' not in key: key =key + ['id'] +['product_Name'] tstd = db((db.ts_task_data.transaction_id == tsd['id'])).select(db.ts_task_data.lable_name,db.ts_task_data.value,orderby=db.ts_task_data.id) for i in tstd: if '|' in str(i['value']): splitdeftask = str(i['value']).split('|') deftask = str(splitdeftask[0]) subtask = str(splitdeftask[1]) ln = str(i['lable_name']['lable_name']) tsd[ln]=str(deftask) if ln not in key: key = key + [ln] newtype = str(deftask) + ' Type' if newtype not in key: key = key + [newtype] tsd[newtype]=str(subtask) else: ln = str(i['lable_name']['lable_name']) tsd[ln]=str(i['value']) if ln not in key: key = key + [ln] if 'delete_record' in tsd: del tsd['delete_record'] if 'update_record' in tsd: del tsd['update_record'] if 'ts_task_data' in tsd: del tsd['ts_task_data'] if 'id' in tsd: del tsd['id'] #keys = key + ['time_worked'] +['date_worked'] +['usergroup']+['username'] + ['comments'] #with open(tmpfilename, 'wb') as output_file: # dict_writer = csv.DictWriter(output_file, keys) # dict_writer.writeheader() # dict_writer.writerows(ts_data) #df = pd.read_csv(tmpfilename) #data = pd.pivot_table(df,index=["id","product_Name"]) Task_Types = list(set(i['Task Type'] for i in ts_data)) fields.append(Field('Task_Type_label',label='Task Type',requires=IS_IN_SET(Task_Types,zero=T('Choose a task...')),widget=lambda field,value: SQLFORM.widgets.options.widget(field,value,cols=2,_onChange='showStats($(this).find("option:selected").text(),this)'))) statform = SQLFORM.factory(*fields) submit = statform.element('input',_type='submit') submit['_style']='display:none;' taskdiv = '' message += XML(statform) for tt in Task_Types: taskeffort = [str(x['time_worked']) for x in ts_data if x['Task Type']== tt] onsite_Effort = [str(x['time_worked']) for x in ts_data if x['Task Type']== tt and x['usergroup']=='Onsite'] onsite_ind = list(set(x['username'] for x in ts_data if x['Task Type'] == tt and x['usergroup'] == 'Onsite')) offsh_ind = list(set(x['username'] for x in ts_data if x['Task Type'] == tt and x['usergroup'] == 'Offshore')) onind_sum = datetime.timedelta() offsh_sum = datetime.timedelta() onsite_list = '<table>' offsh_list = '<table>' for q in onsite_ind: onind_time = [str(x['time_worked']) for x in ts_data if x['Task Type']== tt and x['usergroup']=='Onsite' and x['username']==q] onind_sum = datetime.timedelta() for y in onind_time: (h, m, s) = y.split(':') d = datetime.timedelta(hours=int(h), minutes=int(m)) onind_sum += d onsite_list += '<tr><td>'+str(q)+'</td><td>'+ str(onind_sum)[:-3]+'</td></tr>' onsite_list += '</table>' for q in offsh_ind: offsh_sum = datetime.timedelta() offsh_time = [str(x['time_worked']) for x in ts_data if x['Task Type']== tt and x['usergroup']=='Offshore' and x['username']==q] for y in offsh_time: (h, m, s) = y.split(':') d = datetime.timedelta(hours=int(h), minutes=int(m)) offsh_sum += d offsh_list += '<tr><td>'+str(q)+'</td><td>'+ str(offsh_sum)[:-3]+'</td></tr>' offsh_list += '</table>' task_sum = datetime.timedelta() onsite_sum = datetime.timedelta() offshore_sum = datetime.timedelta() offshore_Effort = [str(x['time_worked']) for x in ts_data if x['Task Type']== tt and x['usergroup']=='Offshore'] for y in taskeffort: (h, m, s) = y.split(':') d = datetime.timedelta(hours=int(h), minutes=int(m)) task_sum += d for y in onsite_Effort: (h, m, s) = y.split(':') d = datetime.timedelta(hours=int(h), minutes=int(m)) onsite_sum += d for y in offshore_Effort: (h, m, s) = y.split(':') d = datetime.timedelta(hours=int(h), minutes=int(m)) offshore_sum += d prodlist = list(set(x['product_Name'] for x in ts_data if x['Task Type'] == tt)) proddata ='' for pl in prodlist: prod_on_user = '' prod_off_user='' prod_sum = datetime.timedelta() prodonst = datetime.timedelta() prodoff = datetime.timedelta() prodtime = [str(x['time_worked']) for x in ts_data if x['product_Name'] == pl and x['Task Type']==tt] for y in prodtime: (h, m, s) = y.split(':') d = datetime.timedelta(hours=int(h), minutes=int(m)) prod_sum += d onsite_prod_eff = [str(x['time_worked']) for x in ts_data if x['Task Type']== tt and x['usergroup']=='Onsite' and x['product_Name'] == pl] onsite_prd_users = list(set(str(x['username']) for x in ts_data if x['Task Type']== tt and x['usergroup']=='Onsite' and x['product_Name'] == pl)) offshr_prd_users = list(set(str(x['username']) for x in ts_data if x['Task Type']== tt and x['usergroup']=='Offshore' and x['product_Name'] == pl)) oputrow = '' ofputrow = '' for u in offshr_prd_users: offsh_prd_user_time = [str(x['time_worked']) for x in ts_data if x['Task Type']== tt and x['usergroup']=='Offshore' and x['product_Name'] == pl and x['username'] == u] ofput = datetime.timedelta() for y in offsh_prd_user_time: (h, m, s) = y.split(':') d = datetime.timedelta(hours=int(h), minutes=int(m)) ofput += d ofputrow += '<tr><td>'+str(u)+'</td><td>'+str(ofput)[:-3]+'</td></tr>' for u in onsite_prd_users: onsite_prd_user_time = [str(x['time_worked']) for x in ts_data if x['Task Type']== tt and x['usergroup']=='Onsite' and x['product_Name'] == pl and x['username'] == u] oput = datetime.timedelta() for y in onsite_prd_user_time: (h, m, s) = y.split(':') d = datetime.timedelta(hours=int(h), minutes=int(m)) oput += d oputrow += '<tr><td>'+str(u)+'</td><td>'+str(oput)[:-3]+'</td></tr>' for y in onsite_prod_eff: (h, m, s) = y.split(':') d = datetime.timedelta(hours=int(h), minutes=int(m)) prodonst += d prod_on_user += '<table><tr><td>Onsite Effort '+'</td><td>'+str(prodonst)[:-3]+'</td></tr>'+oputrow+'</table>' off_prod_eff = [str(x['time_worked']) for x in ts_data if x['Task Type']== tt and x['usergroup']=='Offshore' and x['product_Name'] == pl] for y in off_prod_eff: (h, m, s) = y.split(':') d = datetime.timedelta(hours=int(h), minutes=int(m)) prodoff += d prod_off_user += '<table><tr><td>Offshore Effort '+'</td><td>'+str(prodoff)[:-3]+'</td></tr>'+ofputrow+'</table>' proddata += '<tr><td><h6>'+str(pl)+'</h6>'+prod_on_user+'</td><td><h6>Total Hours '+str(prod_sum)[:-3]+'</h6>'+prod_off_user+'</td></tr>' taskdiv += '<div id = "'+str(tt).replace(" ","")+'" style ="display:None; color:black"><table class="reporttable"><tr><th>'+str(tt)+'</th><th>Total Effort '+str(task_sum)[:-3]+'</th></tr><tr><td><div style="width:49%; float:left"> <h6>Onsite Total Effort '+str(onsite_sum)[:-3]+'</h6>'+str(onsite_list)+'</div></td><td><div style="width:49%; float:left"><h6>Offshore Total Effort '+str(offshore_sum)[:-3]+'</h6>'+str(offsh_list)+'</td></tr>'+proddata+'</table></div>' message = statform + XML(taskdiv) #message += str(Task_Types) else: message += 'Start date should be less than End date' #except Exception,e: # message += str(e) return XML(message) def change_password(): if not session.logged_in_user: redirect(URL('login')) import time updpass = '' form = SQLFORM.factory( Field('oldpass', type='password',label = 'Old Password',requires = IS_NOT_EMPTY()), Field('newpass', type = 'password',label = 'New Password', requires = IS_NOT_EMPTY())) if form.process().accepted: updpass = db((db.ts_auth_user.username == session.logged_in_user) & (db.ts_auth_user.password == (form.vars.oldpass))).update(password = (form.vars.newpass)) if updpass: db.commit() session.flash="Password update succeeded!" redirect(URL('index')) else: db.rollback() response.flash="Password Update failed!" return dict(form = form) def login(): if session.logged_in_user: redirect(URL('index')) form = SQLFORM.factory( Field('name',type='string',label='Username',requires=IS_NOT_EMPTY()), Field('password',type='password',label='Password',requires=[IS_NOT_EMPTY()])) #form = FORM(DIV('Username: ',INPUT(_name='name', _style='width:auto', requires=[IS_NOT_EMPTY(error_message='Cannot be empty!'),IS_IN_DB(db, db.ts_auth_user.username,error_message='User Not Found!')])),BR(),CENTER(INPUT(_type='submit'))) if form.process().accepted: loginsuccess = db((db.ts_auth_user.username == form.vars.name) & (db.ts_auth_user.password == (form.vars.password))).select(db.ts_auth_user.id) if loginsuccess: session.logged_in_user = form.vars.name session.user_id = str(db((db.ts_auth_user.username==form.vars.name)).select(db.ts_auth_user.id)[0]['id']) session.User_First_Name = db((db.ts_auth_user.username==form.vars.name)).select(db.ts_auth_user.FirstName) session.is_admin = db((db.ts_auth_user.username==form.vars.name)).select(db.ts_auth_user.Is_Admin) #db.User_Login_Log.insert(User_ID =session.user_id); redirect(URL('index')) else: session.logged_in_user = None session.User_First_Name = None session.is_admin = None response.flash='Login Error, Please enter a valid username/password' return dict(form=form) def control_page(): if not session.logged_in_user: redirect(URL('login')) if session.is_admin[0]['Is_Admin'] != 'Y': response.flash='Only Admins could edit.' try: message =A(T('Add Product and associated activities '), _href=URL('ts_product')) + BR() + A(T('View activities and add values'), _href=URL('ts_form')) +HR()+ A(T('Home '), _href=URL('index')) +BR()+ A(T('Add Users '), _href=URL('users')) except Exception, e: message = str(e) return locals() def ts_product(): if not session.logged_in_user: redirect(URL('login')) db.ts_product.id.readable=False if session.is_admin[0]['Is_Admin'] != 'Y': response.flash='Only Admins could edit.' return dict(grid=SQLFORM.smartgrid(db.ts_product,linked_tables=['ts_form'],csv=False,editable=False,deletable=False,create=False,searchable=False,user_signature=False)) return dict(grid=SQLFORM.smartgrid(db.ts_product,linked_tables=['ts_form'],oncreate = ir_oncreation,csv=False,searchable=False,user_signature=False)) def ts_form(): if not session.logged_in_user: redirect(URL('login')) db.ts_form.id.readable=False db.ts_misc_data.id.readable=False if session.is_admin[0]['Is_Admin'] != 'Y': response.flash='Only Admins could edit.' return dict(grid=SQLFORM.smartgrid(db.ts_form,linked_tables=['ts_misc_data'],csv=False,editable=False,deletable=False,create=False,oncreate = ir_oncreation,searchable=False,user_signature=False)) return dict(grid=SQLFORM.smartgrid(db.ts_form,linked_tables=['ts_misc_data'],csv=False,oncreate = ir_oncreation,searchable=False,user_signature=False)) def prod_pull(): if not session.logged_in_user: redirect(URL('login')) import json qry = db(db.ts_product.is_active == True).select(db.ts_product.ALL,orderby=db.ts_product.sort_order) return json.dumps([[[r.id],[r.product_name]] for r in qry]) def ir_oncreation(form1): session.flash='Record Inserted Successfully!' redirect(request.url) return locals() def users(): if not session.logged_in_user: redirect(URL('login')) import time if session.is_admin[0]['Is_Admin'] != 'Y': redirect(URL('index')) response.flash='Only Admins could add new users.' return dict(grid=SQLFORM.grid(db.ts_auth_user,user_signature=False,csv=False,searchable=False)) def change_pull(): if not session.logged_in_user: redirect(URL('login')) import datetime form='' qry='' fields=[] form='' ts_misc_data='' instype = request.post_vars.type misc_data = '' items='' fldlbl='' taskid='' prodid = '' deftime='' defcomments='' ent_task_data='' defdate='' formid='0' userid = session.user_id try: if instype == 'Edit': taskid = request.post_vars.product entered_data = db(db.ts_data.id == taskid).select(db.ts_data.product_Name,db.ts_data.comments,db.ts_data.time_worked,db.ts_data.date_worked,orderby=db.ts_data.id) ent_task_data = db(db.ts_task_data.transaction_id == taskid).select(db.ts_task_data.id,db.ts_task_data.lable_name,db.ts_task_data.value, orderby=db.ts_task_data.id) deftime = entered_data[0]['time_worked'] defcomments = entered_data[0]['comments'] dateval = entered_data[0]['date_worked'] prodid = str(entered_data[0]['product_Name']) qry = db((db.ts_form.product_name == prodid)).select(db.ts_form.id,db.ts_form.lable_name,db.ts_form.data_type,db.ts_form.not_null,orderby=db.ts_form.sort_order) elif instype == 'New': prodid = request.post_vars.product dateval = datetime.datetime.strptime(request.post_vars.dateval,"%d %B %Y").date() qry = db((db.ts_form.product_name == prodid) & (db.ts_form.is_active == True)).select(db.ts_form.id,db.ts_form.lable_name,db.ts_form.data_type,db.ts_form.not_null,orderby=db.ts_form.sort_order) form = '<div style="border:1px solid lightgrey; font-size:15px; margin-bottom:10px;">'+'<div style="float:right; margin: 2px 2px;font-size:16px;" id=progress_'+str(prodid)+'>  </div>' if qry: for row in qry: formid=prodid+'_'+str(row.id) if row.not_null == 'Y': fldlbl = 'NNField' else: fldlbl = 'Field' dd_id=prodid+'_'+str(row.id) deftask = '' subtask = '' if row.data_type == 'Dropdown': for z in ent_task_data: if formid == prodid+'_'+str(z['lable_name']): deftask = str(z['value']) if '|' in deftask: splitdeftask = deftask.split('|') deftask = str(splitdeftask[0]) subtask = str(splitdeftask[1]) ts_misc_data = '' ts_misc='' if instype == 'New': ts_misc = db((db.ts_misc_data.lable_name == row.id) & (db.ts_misc_data.is_active==True)).select(db.ts_misc_data.id,db.ts_misc_data.additional_data,orderby=db.ts_misc_data.sort_order) elif instype == 'Edit': ts_misc = db((db.ts_misc_data.lable_name == row.id)).select(db.ts_misc_data.id,db.ts_misc_data.additional_data,orderby=db.ts_misc_data.sort_order) ts_misc_data = ([i.additional_data for i in ts_misc]) misc_data = [j.split('|')[0] for j in ts_misc_data] fields.append(Field(fldlbl+'_'+formid+'_label',label=row.lable_name,default=deftask,requires=IS_IN_SET(misc_data,zero=T('Choose '+row.lable_name+'...')),widget=lambda field,value: SQLFORM.widgets.options.widget(field,value,cols=2,_onChange='showHideFields($(this).find("option:selected").text(),this)'))) for k in ts_misc_data: if '|' in str(k): items = k.split('|') fields.append(Field('hidden_'+formid+'_'+str(items[0]).replace(" ",""), default = subtask, label = str(items[0])+ ' Type',requires=IS_IN_SET(items[1:],zero=T('Choose '+str(items[0])+' type...')),widget=lambda field,value: SQLFORM.widgets.options.widget(field,value))) else: for z in ent_task_data: if formid == prodid+'_'+str(z['lable_name']): deftask = str(z['value']) fields.append(Field(fldlbl+'_'+formid+'_label',default=deftask,label=row.lable_name,type='string')) if instype == 'New': fields.append(Field(fldlbl+'_'+prodid+'_time',label='Effort',type='time',default='00:00')) fields.append(Field(fldlbl+'_'+prodid+'_date',label='Date',type='date',widget=date_widget,default=dateval)) fields.append(Field('Field'+'_'+prodid+'_comments',default=defcomments,label='Comments',widget=lambda field,value: SQLFORM.widgets.text.widget(field,value,_rows=2))) form += XML(SQLFORM.factory(*fields,buttons=[INPUT(_type='button',_value='Submit',_id='form_button_'+formid,_onClick='submit_data(this.form,'+prodid+',"new",this,'+taskid+')')]))+'</div>' elif instype == 'Edit': fields.append(Field(fldlbl+'_'+prodid+'_time',label='Effort',type='time',default=deftime)) fields.append(Field(fldlbl+'_'+prodid+'_date',label='Date',type='date',widget=date_widget,default=dateval)) fields.append(Field('Field'+'_'+prodid+'_comments',default=defcomments,label='Comments',widget=lambda field,value: SQLFORM.widgets.text.widget(field,value,_rows=2))) fields.append(Field('Field'+'_'+prodid+'_updtoins',label='Insert as New', type='boolean')) form += XML(SQLFORM.factory(*fields,buttons=[INPUT(_type='button',_value='Update',_id='form_button_'+formid,_onClick='submit_data(this.form,'+prodid+',"edit",this,'+taskid+')')]))+'</div>' # if entered_data: # for row in entered_data: # ins_type = '</span><span style="color:gold; font-size:12px;" >Edit</span>' # form = '<div style="border:1px solid lightgrey; margin-bottom:10px;"><span style= "color: chocolate; font-size:20px; padding:5px 0px 5px 5px;">'+row.lable_name + ' ' #form += XML(SQLFORM.factory(*fields,buttons=[INPUT(_type='button',_value='Submit',_id='form_button_'+formid,_onClick='submit_data(this.form,'+prodid+',"new")')]))+'</div>' except Exception, e: form = str(e) return XML(form) def delete_task(): if not session.logged_in_user: redirect(URL('login')) deltask='' message = '' try: taskid = request.post_vars.taskid if taskid: db(db.ts_task_data.transaction_id == taskid).delete() deltask = db(db.ts_data.id == taskid).delete() if deltask: db.commit() session.flash = 'Delete Succeeded!' else: session.flash = 'Delete Failed!' raise Exception('Delete Failed!') except Exception,e: db.rollback() message += str(e) return message def load_data(): if not session.logged_in_user: redirect(URL('login')) import datetime import json ids = '' message = '' del_status = '' dateval='' comments='' timeval='' oprtype = request.post_vars.oprtype userid = session.user_id username=session.logged_in_user secid='' insid='' updid='' taskid='' try: form_json = request.post_vars.formdata formdata = json.loads(form_json) prid = request.post_vars.prodid for row in formdata: if (row['name'].endswith('time')): timeval = row['value'][:5] if (row['name'].endswith('date')): dateval = row['value']#datetime.datetime.strptime(row['value'], '%Y-%m-%d').date() if (row['name'].endswith('comments')): comments = row['value'] if (row['name'].endswith('updtoins')): if (row['value'] == 'on'): oprtype = 'new' if oprtype == 'new': insid = db.ts_data.insert(product_Name=prid,username=userid,comments=comments,time_worked=timeval,date_worked=dateval,CREATED_BY=username,UPDATED_BY=username) if insid: for row in formdata: if (row['name'].endswith('label')): ids = row['name'].split('_') hiddenval = ([i['value'] for i in formdata if i['name']=='hidden_'+ids[1]+'_'+ids[2]+'_'+row['value'].replace(" ","")]) if hiddenval: row['value']+='|' + str(hiddenval[0]) secid = db.ts_task_data.insert(transaction_id=insid,lable_name=ids[2],value=row['value']) if secid: db.commit() else: raise Exception('Insert Failed!') message ='Task Insert Succeeded!' elif oprtype == 'edit': taskid = request.post_vars.taskid updid = db(db.ts_data.id==taskid).update(comments=comments,time_worked=timeval,date_worked=dateval,UPDATED_BY=username) if updid: db(db.ts_task_data.transaction_id == taskid).delete() for row in formdata: if (row['name'].endswith('label')): ids = row['name'].split('_') hiddenval = ([i['value'] for i in formdata if i['name']=='hidden_'+ids[1]+'_'+ids[2]+'_'+row['value'].replace(" ","")]) if hiddenval: row['value']+='|' + str(hiddenval[0]) secid = db.ts_task_data.insert(transaction_id=taskid,lable_name=ids[2],value=row['value']) if secid: db.commit() else: raise Exception('Update Failed!') message += 'Task Update Succeeded!' except Exception, e: db.rollback() message = str(e) return XML(message) def logout(): session.logged_in_user = None session.User_First_Name = None session.clear() redirect(URL('login'))