changeset 5059:3369af2e2622

Fix bug: #62018, Appointment end before start // Remove faulty Lang.strftime method call
author Luis Falcon <falcon@gnuhealth.org>
date Mon, 14 Feb 2022 13:49:09 +0000
parents 9dd94a7ecd3d
children 48e9240df572
files tryton/health/health.py tryton/health_calendar/data/messages/messages.xml tryton/health_calendar/exceptions.py tryton/health_calendar/health_calendar.py tryton/health_surgery/health_surgery.py
diffstat 5 files changed, 38 insertions(+), 50 deletions(-) [+]
line wrap: on
line diff
--- a/tryton/health/health.py
+++ b/tryton/health/health.py
@@ -3201,40 +3201,22 @@
             disease.validate_treatment_dates()
 
     def validate_disease_period(self):
-        Lang = Pool().get('ir.lang')
-
-        language, = Lang.search([
-            ('code', '=', Transaction().language),
-            ])
         if (self.healed_date and self.diagnosed_date):
             if (self.healed_date < self.diagnosed_date):
                 raise DateHealedBeforeDx(
                     gettext('health.msg_healed_before_dx',
-                            healed_date=Lang.strftime(
-                                self.healed_date,
-                                language.code, language.date),
-                            diagnosed_date=Lang.strftime(
-                                self.diagnosed_date,
-                                language.code, language.date),
+                            healed_date=self.healed_date,
+                            diagnosed_date=self.diagnosed_date,
                             )
                     )
 
     def validate_treatment_dates(self):
-        Lang = Pool().get('ir.lang')
-
-        language, = Lang.search([
-            ('code', '=', Transaction().language),
-            ])
         if (self.date_stop_treatment and self.date_start_treatment):
             if (self.date_stop_treatment < self.date_start_treatment):
                 raise EndTreatmentDateBeforeStart(
                     gettext('health.msg_end_treatment_before_start',
-                            date_stop_treatment=Lang.strftime(
-                                self.date_stop_treatment,
-                                language.code, language.date),
-                            date_start_treatment=Lang.strftime(
-                                self.date_start_treatment,
-                                language.code, language.date),
+                            date_stop_treatment=self.date_stop_treatment,
+                            date_start_treatment=self.date_start_treatment,
                             )
                     )
 
@@ -3848,19 +3830,12 @@
             medication.validate_medication_dates()
 
     def validate_medication_dates(self):
-        Lang = Pool().get('ir.lang')
-
-        language, = Lang.search([
-            ('code', '=', Transaction().language),
-            ])
         if self.end_treatment:
             if (self.end_treatment < self.start_treatment):
                 raise MedEndDateBeforeStart(gettext(
                     'health.msg_med_end_date_before_start',
-                    start_treatment=Lang.strftime(
-                        self.start_treatment, language.code, language.date),
-                    end_treatment=Lang.strftime(
-                        self.end_treatment, language.code, language.date),
+                    start_treatment=self.start_treatment,
+                    end_treatment=self.end_treatment
                     )
                 )
 
@@ -4888,21 +4863,12 @@
             evaluation.check_health_professional()
 
     def validate_evaluation_period(self):
-        Lang = Pool().get('ir.lang')
-
-        language, = Lang.search([
-            ('code', '=', Transaction().language),
-            ])
         if (self.evaluation_endtime and self.evaluation_start):
             if (self.evaluation_endtime < self.evaluation_start):
                 raise EvaluationEndBeforeStart(gettext(
                     'health.msg_end_evaluation_time_before_start',
-                    evaluation_start=Lang.strftime(
-                            self.evaluation_start, language.code,
-                            language.date),
-                    evaluation_endtime=Lang.strftime(
-                            self.evaluation_endtime, language.code,
-                            language.date),
+                    evaluation_start=self.evaluation_start,
+                    evaluation_endtime=self.evaluation_endtime,
                         )
                     )
 
--- a/tryton/health_calendar/data/messages/messages.xml
+++ b/tryton/health_calendar/data/messages/messages.xml
@@ -4,13 +4,18 @@
 <tryton>
     <data grouped="1">
         <record model="ir.message" id="msg_no_company_timezone">
-            <field name="text">You need to define a timezone for this company before creating a work schedule</field>
+            <field name="text">SM-CALENDAR-001: You need to define a timezone for this company before creating a work schedule</field>
         </record>
         <record model="ir.message" id="msg_end_before_start">
-            <field name="text">End date before start</field>
+            <field name="text">SM-CALENDAR-002: End date before start</field>
         </record>
         <record model="ir.message" id="msg_period_too_long">
-            <field name="text">The schedule period should be less than 31 days</field>
+            <field name="text">SM-CALENDAR-003: The schedule period should be less than 31 days</field>
         </record>
+
+        <record model="ir.message" id="msg_appointment_end_date_before_start">
+            <field name="text">SM-CALENDAR-0004: The Appointment END date "%(appointment_date_end)s" is BEFORE the start date "%(appointment_date)s"</field>
+        </record>
+
     </data>
 </tryton>
--- a/tryton/health_calendar/exceptions.py
+++ b/tryton/health_calendar/exceptions.py
@@ -14,3 +14,7 @@
 
 class PeriodTooLong(ValidationError):
     pass
+
+
+class AppointmentEndDateBeforeStart(ValidationError):
+    pass
--- a/tryton/health_calendar/health_calendar.py
+++ b/tryton/health_calendar/health_calendar.py
@@ -24,7 +24,9 @@
 from trytond.model import fields
 from trytond.pyson import Eval, Not, Bool
 from trytond.pool import Pool, PoolMeta
+from trytond.i18n import gettext
 
+from .exceptions import (AppointmentEndDateBeforeStart)
 
 __all__ = ['User', 'Appointment']
 
@@ -51,6 +53,22 @@
     appointment_date_end = fields.DateTime('End Date and Time')
 
     @classmethod
+    def validate(cls, appointments):
+        super(Appointment, cls).validate(appointments)
+        for appointment in appointments:
+            appointment.validate_appointment_dates()
+
+    def validate_appointment_dates(self):
+        if self.appointment_date_end:
+            if (self.appointment_date_end < self.appointment_date):
+                raise AppointmentEndDateBeforeStart(gettext(
+                    'health_calendar.msg_appointment_end_date_before_start',
+                    appointment_date=self.appointment_date,
+                    appointment_date_end=self.appointment_date_end
+                    )
+                )
+
+    @classmethod
     def create(cls, vlist):
         pool = Pool()
         Event = pool.get('calendar.event')
--- a/tryton/health_surgery/health_surgery.py
+++ b/tryton/health_surgery/health_surgery.py
@@ -476,11 +476,6 @@
             surgery.validate_surgery_period()
 
     def validate_surgery_period(self):
-        Lang = Pool().get('ir.lang')
-
-        language, = Lang.search([
-            ('code', '=', Transaction().language),
-            ])
         if (self.surgery_end_date and self.surgery_date):
             if (self.surgery_end_date < self.surgery_date):
                 raise EndDateBeforeStart(