On Tuesday, January 6, 2015 12:55:03 PM UTC-3, Cédric Krier wrote:
>
> On 06 Jan 07:20, Mariano Ramon wrote: 
> > class CustomParty(ModelSQL, ModelView): 
> >     'Party' 
> >     __name__ = 'party.party' 
> > 
> >     @classmethod 
> >     def create(cls, vlist): 
> >         records = super(CustomParty, cls).create(vlist) 
> >         target = CustomPatient() 
> >         target.name = records[0] 
> >         target.save() 
>
> You must return records 
>
> > but this gives me 
> > 
> > assert self.name is not None 
> > AssertionError 
>
> It looks like your CustomPatient is not registered in the Pool 
>


I'm already using CustomPatient so it is on the pool
the last line of the stack trace where I get the assertion error
  File 
"/home/user/gnuhealth/tryton/server/trytond-3.2.4/trytond/model/fields/field.py",
 
line 209, in __get__
    assert self.name is not None

I thought self.name was dynamically generated to test required fields but 
lookin field.py i can see it is the name of the actual field and not some 
attribute of it. for reference that fuction in field.py is:

    def __get__(self, inst, cls):
        if inst is None:
            return self
        assert self.name is not None
        return inst.__getattr__(self.name)



 

>
> > printing records[0] 
> > gives me <class 'trytond.pool.party.party'> 
>
> Yes that is the first record created and you can not assign a instance 
> to a Char field (which I guess name is). 
>

name is a many2one field (is a 3rd party module we didn't name it like 
that) this is how is defined.


class PatientData(ModelSQL, ModelView):
    'Patient related information'
    __name__ = 'gnuhealth.patient'

    name = fields.Many2One(
        'party.party', 'Patient', required=True,
        domain=[
            ('is_patient', '=', True),
            ('is_person', '=', True),
            ],
        states={'readonly': Bool(Eval('name'))},
        help="Person associated to this patient")



this is our extension to that model


class CustomPatient(ModelSQL, ModelView):
    __name__ = 'gnuhealth.patient'


    # Our added attributes are here and we need an instance of this or 
PatientData and attach the created party to it



 hope this make it more clear. I don't know what to try..
thanks

Reply via email to