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 [email protected].
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'))