Thanks for the replies. Pbreit, you pointed the real issue -- what should I
call the arguments (addperiodform.vars.id), that are passed from the goal
function to the addingperiod function?
from the controller file:
************
def goal():
...some code...
addperiodform = SQLFORM(db.period, fields=['begindate','enddate',
'planned'], labels={'begindate':'First day','enddate':'Last
day','planned':'Goal'},submit_button='Submit',formstyle='table2cols')
if addperiodform.accepts(request.post_vars, session):
redirect(URL('default', 'addingperiod', args=addperiodform.vars.id))
...some code...
def addingperiod():
if request.args and request.args[0]:
item_id=request.args[0]
prerecords = db().select(db.period.ALL, orderby=db.period.begindate)
for prerecord in prerecords:
if prerecord.theauth==auth.user_id:
accepted1="true"
accepted2="true"
...some if-statements...
if accepted1=="true":
if accepted2=="true":
db.period.insert(item_id) #this line creates an error
redirect(URL(f='goal'))
************
On Saturday, April 14, 2012 10:44:28 AM UTC+2, backseat wrote:
>
> On Fri, 13 Apr 2012 11:38:25 -0700 (PDT), [email protected] said:
>
> > The
> > function should only add periods that doesn't overlap any of the
> > already registered ones.
>
> Let me try to help (I owe this group a lot of help). I've ignored your
> code, and I don't know what schema you're using, but here's the pseudo
> and untested code:
>
> def should_this_period_be_inserted(start,end):
> # Check that all periods that started before this one
> # also finished before this one started
> q = ((db.period.begindate<start)&(db.period.enddate>start))
> if db(query).count():
> return False
> # Check that no periods started while this one was in progress
> q = ((db.period.begindate>=start)&(db.period.begindate<=end))
> if db(query).count():
> return False
> # If we got this far, the period didn't overlap
> return True
>
> Have I understood what you're trying to do?
> --
> "You can have everything in life you want if you help enough other people
> get what they want" - Zig Ziglar.
>
> Who did you help today?
>
>