hi,

I propose to add a few things to DAL

1) an 'act_as' parameter in define_table so I can extend Table class
and use it as regular table

for e.g.

db.define_table("images",
    Field("category", db.categories),
    Field("title"),
    act_as=OrderedList,
)

OrderedList is a class that extends Table class and adds a 'line'
column,
overrides insert and __del__ methods and adds 2 other methods:
move_before, move_after

required changes to gluon dal:
- add 'act_as' to the allowed keyword list in define_table method
['migrate', 'primarykey', 'fake_migrate', 'format', 'trigger_name',
'sequence_name', 'act_as']
- act_as = args.get('act_as',Table)  - Table is the default for
'act_as'
- t = self[tablename] = act_as(self, tablename, *fields, ....

usages:
_id = db.images.insert(... )
db.images.move_before(_id,  2)


2) please add __mod__ to Expression class so I can use it in dal
expressions

I want that

#move last image to first position and all other images positions are
increased by 1
db(db.images).update(line=db.images.line % _count +1)

but I am forced to use raw sql
db.executesql('UPDATE images SET line = line %% %s +1', (_count,))

Reply via email to