2016-03-24 11 views
1

Ich benutze GNU Health auf Tryton und möchte eine Domain-Suche in einer Ansicht mit PYSON und Felder für den aktuellen Benutzer. Das Problem ist, dass ich nicht weiß, wie ich auf die Felder des aktuellen Benutzers verweisen soll.PYSON Domain-Suche referenziert Felder des aktuellen Benutzers

Ich möchte überprüfen, ob der Benutzer is_healthprof und wenn das der Fall Filter mit dem Nachnamen-Feld des aktuellen Benutzers als Gesundheit professionellen Nachnamen ist, so dass der Benutzer nur die Daten zu ihm sehen. Ich habe den folgenden Code in meiner XML-View-Datei ausprobiert, aber da ich nicht weiß, wie es funktioniert, funktioniert der Trick nicht.

<field name="domain">[('appointment_date', '>=', DateTime(hour=0, minute=0, second=0, microsecond=0)),(If(Eval('party.party.is_healthprof', -1),('healthprof.lastname','=',party.party.lastname)))]</field> 

Vielen Dank im Voraus!

Antwort

0

Anstatt eine Domäne zu verwenden, sollten Sie eine Zugriffsregel hinzufügen, die vom is_healthprooft-Flag des Benutzers abhängt. Siehe:

http://doc.tryton.org/3.8/trytond/doc/topics/access_rights.html?highlight=access

Mit Zugriffsregeln wird die Domain für jede Operation auf dem Modell durchzusetzen, so dass, wenn der Benutzer das Modell für eine Beziehung Feld zugreift oder für eine andere Aktion, wird die Zugriffsregel auch anzuwenden.

BTW, anstatt ein Flag im Benutzer zu erstellen, um anzugeben, ob es healthproft ist, ich denke, es ist besser, eine Benutzergruppe für Healtproft zu erstellen und die Benutzer mit dieser Gruppe (und so die Zugriffsgruppe) zu verknüpfen.

Ich hoffe, es hilft.

+0

Fügen Sie also einfach die Zugriffsregel (wie im Dokument erwähnt) zu dieser Benutzergruppe hinzu. – pokoli

+0

Ich habe getan, was Sie gesagt haben, aber ich kann nicht auf die richtige 'ID' verweisen. Ich habe die Domain [('healthprof', '=', user.id)] hinzugefügt, aber die 'id', die ich bekomme, ist diejenige, die in der Tabelle res_user als interner Benutzer enthalten ist. Ich muss auf den Verweis in der Tabelle gnuhealth_healthprofessional (gnuhealth_healthprofessional.id) verweisen, die von gnuhealth_healthprofessional.name mit party_party.id verknüpft ist. Die ID bei party_party ist durch party_party.internal_user mit dem internen Benutzer verbunden. Ich habe versucht, der Dokumentation zu folgen, aber ich bin ein Neuling und kann es nicht funktionieren lassen. Danke im fortgeschrittenen –

+0

Sie müssen die Beziehungen verwenden, um die richtige ID zu erhalten. Etwas wie: [('healthprof', '=', user.party.gnu_professional.id)] – pokoli

Verwandte Themen