Hi everyone,
I bumped into strange behaviour using CrudRestController, I have a field
(proposers) which is one side of many to many relation. When I edit the
entry and try to save it I am getting "put() keywords must be strings"
params dictionary looks like:
{'name': 627, 'proposers': [u'163', u'15'], None: '', 'sprox_method': u'',
'sprox_id': '', 'id': 57, 'desc': u'SDLKFJ NSKLAF FLAKSDJ F\u010cAKLSJD
FLKWJHER'}
it does have key None, but I couldn't figure out how did it get there.
Any help will be greatly appreciated.
*Model looks like:*
class Bills(object):
def __init___(self, **kw):
for key, value in kw.iteritems():
setattr(self, key, value)
def __unicode__(self):
return u"%s\t%s" %(self.name, self.desc)
class Link_proposers_bills_view2(object):
def __init___(self, **kw):
for key, value in kw.iteritems():
setattr(self, key, value)
def __unicode__(self):
return u"%s %s" %(self.proposer, self.bill)
class Proposers_select_view(object):
def __init___(self, **kw):
for key, value in kw.iteritems():
setattr(self, key, value)
def __unicode__(self):
return self.name
global bills
bills = Table("bills", metadata, autoload=True, autoload_with=engine)
mapper(
Bills,
bills,
properties = {"amendments" : relationship(Amendments,
backref='bills'),
"proceedings": relationship(Proceedings,
secondary=link_proceedings_bills, backref='bills'),
'conclusions': relationship(Conclusions,
backref='bills'),
'reports': relationship(Reports,
backref='bills'),
'opinions': relationship(Opinions,
backref='bills'),
"bill_type" : relationship(Bill_types,
backref='bills'),
"term" : relationship(Terms,
backref='bills'),
'proposers':
relationship(Proposers_select_view, secondary=link_proposers_bills_view2,
backref='bills'),
}
)
global link_proposers_bills_view2
link_proposers_bills_view2 = Table("link_proposers_bills_view2",
metadata, Column('id', Integer, primary_key=True), Column('proposer_id',
Integer, ForeignKey('proposers_select_view.id')), Column('bill_id',
Integer, ForeignKey('bills.id')), autoload=True, autoload_with=engine)
mapper(
Link_proposers_bills_view2,
link_proposers_bills_view2,
)
global proposers_select_view
proposers_select_view = Table("proposers_select_view", metadata,
Column('id', Integer, primary_key=True), autoload=True,
autoload_with=engine)
mapper(
Proposers_select_view,
proposers_select_view,
)
*Controller looks like:*
class BillController(CrudRestController):
allow_only = predicates.in_group('users')
model = Bills
pagination = {'items_per_page': 50}
title = "Akti"
class Table(SortableTableBase):
title = "Akti"
__model__ = Bills_view
__limit_fields__ = ['term', 'proposers', 'bill_type', 'name',
'desc', 'proceedings', 'amendments', 'reports', 'conclusions', 'opinions']
class Table_filler(TableFiller):
__model__ = Bills_view
class Add_form(AddRecordForm):
__model__ = Bills
__omit_fields__ = ['id', 'name_str', 'amendments', 'bill_type',
'term', 'proceedings', "link_proceedings_bills", "reports", "conclusions",
'opinions']
__hide_fields__ = ['term_id',]
__field_order__ = ['proposers', 'bill_type_id', 'desc', 'date',
'name', 'klasa', 'urbr']
class Edit_form(EditableForm):
__model__ = Bills_view
__omit_fields__ = ['name_str', 'proposer_id', 'amendments',
'bill_type', 'term', 'link_proceedings_bills',
'link_proceedings_bills_view', 'proceedings', 'bill', "reports",
"conclusions", 'opinions']
__hide_fields__ = ['id', 'term_id']
__field_order__ = ['proposers', 'bill_type_id', 'desc', 'date',
'klasa', 'urbr', 'name']
class Edit_filler(EditFormFiller):
__model__ = Bills
table = Table(DBSession)
table_filler = Table_filler(DBSession)
new_form = Add_form(DBSession)
edit_form = Edit_form(DBSession)
edit_filler = Edit_filler(DBSession)
--
You received this message because you are subscribed to the Google Groups
"TurboGears" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/turbogears.
For more options, visit https://groups.google.com/d/optout.