Discussion:
[tryton] domain rule for selecting certain records
Khurram Shahzad
2018-03-19 13:07:01 UTC
Permalink
Hi All,

I have a 'AdmiittedPatient' class with following two fields:

patient = fields.One2Many('party.party','Patient')
bed_transfers = fields.One2Many('gnuhealth.bed.transfer', 'name',
'Transfer History', readonly=True)

where gnuhealth.bed.transfer ('BedTransfers') class has:
bed_from = fields.Many2One('gnuhealth.hospital.bed', 'From',)
bed_to = fields.Many2One('gnuhealth.hospital.bed', 'To',)

Now, I am trying to write a domain rule which will display those patients
who were transferred to a Bed with id 15.

(Eval('15'), 'in', [Eval('bed_transfers',{}).get('bed_from', -1)])

But, it is failing with an error. Any help please?
--
Regards,
Khurram.
--
You received this message because you are subscribed to the Google Groups "tryton" group.
To view this discussion on the web visit https://groups.google.com/d/msgid/tryton/CAM3N3CydkYy6RFJJTJfGBYzjOzGHLdwRgAtPUc5bUTdK90H78A%40mail.gmail.com.
Cédric Krier
2018-03-20 16:21:58 UTC
Permalink
Post by Khurram Shahzad
patient = fields.One2Many('party.party','Patient')
bed_transfers = fields.One2Many('gnuhealth.bed.transfer', 'name',
'Transfer History', readonly=True)
bed_from = fields.Many2One('gnuhealth.hospital.bed', 'From',)
bed_to = fields.Many2One('gnuhealth.hospital.bed', 'To',)
Now, I am trying to write a domain rule which will display those patients
who were transferred to a Bed with id 15.
What are you calling a "domain rule"?
Post by Khurram Shahzad
(Eval('15'), 'in', [Eval('bed_transfers',{}).get('bed_from', -1)])
Eval('15') can never work. If you want the number 15, you must type: 15
--
Cédric Krier - B2CK SPRL
Email/Jabber: ***@b2ck.com
Tel: +32 472 54 46 59
Website: http://www.b2ck.com/
--
You received this message because you are subscribed to the Google Groups "tryton" group.
To view this discussion on the web visit https://groups.google.com/d/msgid/tryton/20180320162158.GW3935%40kei.
Khurram Shahzad
2018-03-20 16:47:02 UTC
Permalink
Post by Cédric Krier
Post by Khurram Shahzad
patient = fields.One2Many('party.party','Patient')
bed_transfers = fields.One2Many('gnuhealth.bed.transfer', 'name',
'Transfer History', readonly=True)
bed_from = fields.Many2One('gnuhealth.hospital.bed', 'From',)
bed_to = fields.Many2One('gnuhealth.hospital.bed', 'To',)
Now, I am trying to write a domain rule which will display those patients
who were transferred to a Bed with id 15.
What are you calling a "domain rule"?
Sorry, I was referring to "domain clause", I was writing in my module's
view.xml file.
Post by Cédric Krier
Post by Khurram Shahzad
(Eval('15'), 'in', [Eval('bed_transfers',{}).get('bed_from', -1)])
Eval('15') can never work. If you want the number 15, you must type: 15
Changing it to 15 didn't work either. In fact, 'bed_transfers' is a
one2Many field. What I want is to get list values of 'bed_from' field from
every record of this one2Many field. I think, the above-given code will
consider 'bed_tranfers' a dictionary and return value of 'bed_from' it.
Post by Cédric Krier
--
Cédric Krier - B2CK SPRL
Tel: +32 472 54 46 59
Website: http://www.b2ck.com/
--
You received this message because you are subscribed to the Google Groups "tryton" group.
To view this discussion on the web visit https://groups.google.com/d/
msgid/tryton/20180320162158.GW3935%40kei.
--
Regards,
Khurram.
--
You received this message because you are subscribed to the Google Groups "tryton" group.
To view this discussion on the web visit https://groups.google.com/d/msgid/tryton/CAM3N3CzBdPrjYFxj1eojSAqiR%3Ddmg7BY262PoseF2CkNizQZcg%40mail.gmail.com.
Cédric Krier
2018-03-20 18:48:10 UTC
Permalink
Post by Khurram Shahzad
Post by Cédric Krier
Post by Khurram Shahzad
patient = fields.One2Many('party.party','Patient')
bed_transfers = fields.One2Many('gnuhealth.bed.transfer', 'name',
'Transfer History', readonly=True)
bed_from = fields.Many2One('gnuhealth.hospital.bed', 'From',)
bed_to = fields.Many2One('gnuhealth.hospital.bed', 'To',)
Now, I am trying to write a domain rule which will display those patients
who were transferred to a Bed with id 15.
What are you calling a "domain rule"?
Sorry, I was referring to "domain clause", I was writing in my module's
view.xml file.
I do not see where you try to put this domain. Is it a
ir.action.act_window.domain ?
Post by Khurram Shahzad
Post by Cédric Krier
Post by Khurram Shahzad
(Eval('15'), 'in', [Eval('bed_transfers',{}).get('bed_from', -1)])
Eval('15') can never work. If you want the number 15, you must type: 15
Changing it to 15 didn't work either. In fact, 'bed_transfers' is a
one2Many field. What I want is to get list values of 'bed_from' field from
every record of this one2Many field. I think, the above-given code will
consider 'bed_tranfers' a dictionary and return value of 'bed_from' it.
The result of the evaluation of a One2Many is a list of id. You can not
retrieve a specific field from the list.
You need to create a Function field that provide you the right data at
the main record.
--
Cédric Krier - B2CK SPRL
Email/Jabber: ***@b2ck.com
Tel: +32 472 54 46 59
Website: http://www.b2ck.com/
--
You received this message because you are subscribed to the Google Groups "tryton" group.
To view this discussion on the web visit https://groups.google.com/d/msgid/tryton/20180320184810.GZ3935%40kei.
Khurram Shahzad
2018-03-20 19:02:24 UTC
Permalink
Post by Khurram Shahzad
Post by Cédric Krier
Post by Khurram Shahzad
patient = fields.One2Many('party.party','Patient')
bed_transfers = fields.One2Many('gnuhealth.bed.transfer', 'name',
'Transfer History', readonly=True)
bed_from = fields.Many2One('gnuhealth.hospital.bed', 'From',)
bed_to = fields.Many2One('gnuhealth.hospital.bed', 'To',)
Now, I am trying to write a domain rule which will display those patients
who were transferred to a Bed with id 15.
What are you calling a "domain rule"?
Sorry, I was referring to "domain clause", I was writing in my module's
view.xml file.
I do not see where you try to put this domain. Is it a
ir.action.act_window.domain ?


Yes, it is!
Post by Khurram Shahzad
Post by Cédric Krier
Post by Khurram Shahzad
(Eval('15'), 'in', [Eval('bed_transfers',{}).get('bed_from', -1)])
Eval('15') can never work. If you want the number 15, you must type: 15
Changing it to 15 didn't work either. In fact, 'bed_transfers' is a
one2Many field. What I want is to get list values of 'bed_from' field from
every record of this one2Many field. I think, the above-given code will
consider 'bed_tranfers' a dictionary and return value of 'bed_from' it.
The result of the evaluation of a One2Many is a list of id. You can not
retrieve a specific field from the list.
You need to create a Function field that provide you the right data at
the main record.


Ok. I will create a function field. Thanks for the clue.
--
You received this message because you are subscribed to the Google Groups "tryton" group.
To view this discussion on the web visit https://groups.google.com/d/msgid/tryton/CAM3N3CytxEcpN9KpPoB71jiDsaTaaaPEvxEK8Hm37XsMvbTVAw%40mail.gmail.com.
Continue reading on narkive:
Loading...