Write() takes exactly 3 arguments (5 given)

25 views
Skip to first unread message

Khurram Shahzad

unread,
Aug 16, 2017, 12:42:00 AM8/16/17
to try...@googlegroups.com
Hi,
I have written following code to get/set Doctor Rounds


    roundings = fields.One2Many('gnuhealth.patient.rounding', 'name', 'Rounds by various doctors/nurses')
    roundings_doctor = fields.Function(fields.One2Many('gnuhealth.patient.rounding', 'name', 'Rounds by various doctors'), 'get_roundings_doctor','set_roundings_doctor')


    def get_roundings_doctor(self, name):
        for line in roundings:
            if line.health_professional.healthprof_type.id == 2:
                lines.add(line.id)
        return list(lines)

    @classmethod
    def set_roundings_doctor(cls, records, name, value):
            if not value:
            return
        cls.write(records, {
                'roundings': value,
                })

It works fine and I am able to view the rounds and also update them.

But, to meet another requirement, I overrided the write method in gnuhealth.patient.rounding class as:

    @classmethod
    def write(cls, roundings, values):
        # TODO - confirm the record is being updated by the Doctor who created it

        return super(PatientRounding, cls).write(appointments, values)

After this change I can still view the records but when I 'Save' after changing a round, following error is displayed:

Traceback (most recent call last):
  File "/home/gnuhealth/gnuhealth/tryton/server/trytond-3.8.8/trytond/protocols/dispatcher.py", line 162, in dispatch
    result = rpc.result(meth(*c_args, **c_kwargs))
  File "/home/gnuhealth/gnuhealth/tryton/server/trytond-3.8.8/trytond/modules/health_inpatient_calendar/health_inpatient_calendar.py", line 96, in write
    return super(InpatientRegistration, cls).write(registrations, values)
  File "/home/gnuhealth/gnuhealth/tryton/server/trytond-3.8.8/trytond/model/modelsql.py", line 930, in write
    field.set(cls, fname, *fargs)
  File "/home/gnuhealth/gnuhealth/tryton/server/trytond-3.8.8/trytond/model/fields/function.py", line 109, in set
    setter(Model.browse(ids), name, value)
  File "/home/gnuhealth/gnuhealth/tryton/server/trytond-3.8.8/trytond/modules/health_inpatient/health_inpatient.py", line 481, in set_roundings_doctor
   
  File "/home/gnuhealth/gnuhealth/tryton/server/trytond-3.8.8/trytond/modules/health_inpatient_calendar/health_inpatient_calendar.py", line 96, in write
    return super(InpatientRegistration, cls).write(registrations, values)
  File "/home/gnuhealth/gnuhealth/tryton/server/trytond-3.8.8/trytond/model/modelsql.py", line 930, in write
    field.set(cls, fname, *fargs)
  File "/home/gnuhealth/gnuhealth/tryton/server/trytond-3.8.8/trytond/model/fields/one2many.py", line 205, in set
    Target.write(*to_write)
TypeError: write() takes exactly 3 arguments (5 given)


I am unable to understand what's wrong with the code. Thanking you in anticipation!
--
 
Regards,
Khurram.
Reply all
Reply to author
Forward
0 new messages