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.

Reply via email to