Here is the model för tracker_person_product that tracks sellings, if
a person doesn´t have a entry in the tracker on an specific campaign
he doesn´t belong to that campaign.
Troop_person is the table where sellers a stored and well campaign is
the campaign table.

db.define_table('tracker_person_product',
    db.Field('troop', db.troop, required=True),
    db.Field('troop_person', db.troop_person, required=True),
    db.Field('campaign', db.campaign, required=True),
    db.Field('product', db.product, required=True),
    db.Field('count_received', 'integer', required=True,
requires=IS_INT_IN_RANGE(0, 1000000)),
    db.Field('count_sold', 'integer', required=True,
requires=IS_INT_IN_RANGE(0, 1000000)),
    db.Field('count_returned', 'integer', required=True,
requires=IS_INT_IN_RANGE(0, 1000000)),
    db.Field('count_paid', 'integer', required=True,
requires=IS_INT_IN_RANGE(0, 1000000)),
    db.Field('edited_by', db[user_table], required=True),
    db.Field('edited_date', 'datetime', required=True))


db.define_table('troop_person',
    db.Field('name', 'string', required=True),
    db.Field('troop', db.troop, required=True),
    db.Field('troop_group', db.troop_group, required=True),
    db.Field('reward_selected', 'integer', default=0),
    db.Field('edited_by', db[user_table], required=True),
    db.Field('edited_date', 'datetime', required=True),
    db.Field('surname', 'string', required=False))


db.define_table('campaign',
    db.Field('title_fi', 'string', requires=IS_NOT_EMPTY()),
    db.Field('title_se', 'string', requires=IS_NOT_EMPTY()),
    db.Field('starts', 'date', requires=IS_DATE(format=T('%Y-%m-%d'),
error_message=T('must be YYYY-MM-DD!'))),
    db.Field('ends', 'date', requires=IS_DATE(format=T('%Y-%m-%d'),
error_message=T('must be YYYY-MM-DD!'))),
    db.Field('description_fi', 'text'),
    db.Field('description_se', 'text'),
    db.Field('hidden', 'boolean'),
    db.Field('district', db.district, default=0),
    db.Field('created_by', db[user_table], required=True),
    db.Field('created_date', 'datetime', required=True),
    db.Field('edited_by', db[user_table], required=True),
    db.Field('edited_date', 'datetime', required=True),
    db.Field('main', 'boolean', default=False))


When polulating the tracker table form I use

    person_data = db((db.tracker_person_product.troop_person ==
db.troop_person.id)
        &(db.tracker_person_product.troop == troop.id) \
        &(db.tracker_person_product.campaign == campaign.id)) \
        .select(db.troop_person.ALL, orderby=db.troop_person.name,
distinct=True)


and when I want to find sellers not in the campaign I use

    person_data = db((db.tracker_person_product.troop_person ==
db.troop_person.id)
        &(db.tracker_person_product.troop == troop.id) \
        &(db.tracker_person_product.campaign != campaign.id)) \
        .select(db.troop_person.ALL, orderby=db.troop_person.name,
distinct=True)

Kenneth


On Jul 19, 2:40 am, "mr.freeze" <[email protected]> wrote:
> You could probably do it with IS_IN_DB depending on your model. I
> would personally create a widget since they are more flexible and
> intuitive to me. If you show your model then I can help you.
>
> On Jul 18, 6:27 pm, Kenneth <[email protected]> wrote:
>
> > Hello,
>
> > I have a case where I have a table of sellers, a table of campaigns
> > and then a tracker to follow how much each seller is selling. All
> > sellers are not in all campaigns, the tracker keeps track of witch
> > seller belongs to which campaign.
>
> > To adminitrate this I´m trying to make a drop down list where I could
> > select one och multiple sellers not in the campaign and add them to
> > the campaign.
>
> > Is this possible with SQLFORM or SQLFORM.factory or any other ready
> > function or do I have to make something myself?
>
> > Kenneth

Reply via email to