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)+'> &nbsp</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'))

Reply via email to