Hi everyone!

I'm doing an app with fullcalendar (http://arshaw.com/fullcalendar/)
and now i'm with all the events and calendar cruds.

Its time to add some logic to the crud.create() of the events, an only
let the user to add events in his/her calendars, not in ALL the
calendars.

I have this:

db.define_table('calendars',
    Field('name', 'string', required=True, notnull=True),
    #Field('project_id', 'reference', default=None, required=True),
    format='%(name)s')

db.define_table('events',
    Field('title', 'string', required=True, notnull=True,
label=T('Title')),
    Field('place', 'string', label=T('Place')),
    Field('description', 'text', label=T('Description')),
    Field('init_date', 'datetime', required=True, label=T('Init
date')),
    Field('end_date', 'datetime', required=True, label=T('End date')),
    Field('calendar_id', 'reference calendars', label=T('Calendar')),
    Field('all_day', 'boolean', default=False, required=True,
label=T('All day')),
    format='%(title)s'
    )


db.define_table('user_calendars',
    Field('calendar', 'reference calendars', required=True,
notnull=True, label=T('Calendar')),
    Field('color', 'string', default="blue", required=True,
label=T('Color')),
    Field('fullcalendar_class', 'string', required=True,
writable=False, readable=False),
    Field('permissions', 'string', required=True,
label=T('Permissions'), requires=IS_IN_SET(['r', 'rw', 'owner'],
zero=None)),
    Field('user_id', 'reference auth_user', required=True,
notnull=True, label=T('User')),
    format='')



With that model defined, in the events crud, will appear ALL the
calendars, so i have tried to do something like this:

def create():
    query = ((db.user_calendars.calendar == db.calendars.id)  &
(db.user_calendars.user_id == auth.user.id)  &
((db.user_calendars.permissions =="owner") |
(db.user_calendars.permissions=="rw")))
    db.events.calendar_id.requires =IS_IN_DB(db, query, zero=None )
    return dict(form=crud.create(db.events))

And i found that the IS_IN_DB doesn't admit SQL queries xD

the query is something like: "give me all my calendars and the ones
where i can write"

Is there any "quick" and optimal solution to make all of this in the
controller? or i have to customize the crud form in the view?.

Thanks in advance!

Reply via email to