changeset 3197:f6f8e54213cd

Task #15167: Change field name to validated; Ignore non-validated servers on sync
author Chris Zimmerman <chris@teffalump.com>
date Sat, 09 Feb 2019 16:10:49 -0800
parents 40b3470c3b75
children 5a25b62eeebb
files tryton/health_orthanc/health_orthanc.py tryton/health_orthanc/view/config_form.xml tryton/health_orthanc/view/config_tree.xml
diffstat 3 files changed, 17 insertions(+), 13 deletions(-) [+]
line wrap: on
line diff
--- a/tryton/health_orthanc/health_orthanc.py
+++ b/tryton/health_orthanc/health_orthanc.py
@@ -44,7 +44,7 @@
     password = fields.Char('Password', required=True, help="Password for Orthanc REST server")
     last = fields.BigInteger('Last Index', readonly=True, help="Index of last change")
     sync_time = fields.DateTime('Sync Time', readonly=True, help="Time of last server sync")
-    confirmed = fields.Boolean('Confirmed', help="The server details have been successfully checked")
+    validated = fields.Boolean('Validated', help="The server details have been successfully checked")
     since_sync = fields.Function(fields.TimeDelta('Since last sync', help="Time since last sync"), 'get_since_sync')
     since_sync_readable = fields.Function(fields.Char('Since last sync', help="Time since last sync"), 'get_since_sync_readable')
     patients = fields.One2Many('gnuhealth.orthanc.patient', 'server', 'Patients')
@@ -81,10 +81,12 @@
         study = pool.get('gnuhealth.orthanc.study')
 
         if not servers:
-            servers = cls.search(['domain', '!=', None])
+            servers = cls.search([('domain', '!=', None),
+                                    ('validated', '=', True)])
 
         logger.info('Starting sync')
         for server in servers:
+            if not server.validated: continue
             logger.info('Getting new changes for <{}>'.format(server.label))
             orthanc = RestClient(server.domain, auth=auth(server.user, server.password))
             curr = server.last
@@ -95,13 +97,14 @@
             while True:
                 changes = orthanc.get_changes(since=curr)
                 for change in changes['Changes']:
-                    if change['ChangeType'] == 'NewStudy':
+                    type_ = change['ChangeType']
+                    if type_ == 'NewStudy':
                         new_studies.append(orthanc.get_study(change['ID']))
-                    elif change['ChangeType'] == 'StableStudy':
+                    elif type_ == 'StableStudy':
                         update_studies.append(orthanc.get_study(change['ID']))
-                    elif change['ChangeType'] == 'NewPatient':
+                    elif type_ == 'NewPatient':
                         new_patients.append(orthanc.get_patient(change['ID']))
-                    elif change['ChangeType'] == 'StablePatient':
+                    elif type_ == 'StablePatient':
                         update_patients.append(orthanc.get_patient(change['ID']))
                     else:
                         pass
@@ -128,7 +131,8 @@
         Study = pool.get('gnuhealth.orthanc.study')
 
         if not servers:
-            servers = cls.search(['domain', '!=', None])
+            servers = cls.search([('domain', '!=', None),
+                                    ('validated', '=', True)])
 
         for server in servers:
             logger.info('Full sync for <{}>'.format(server.label))
@@ -148,7 +152,7 @@
                 Study.create_studies(studies, server)
                 server.last = orthanc.get_changes(last=True).get('Last')
                 server.sync_time = datetime.now()
-                server.confirmed = True
+                server.validated = True
                 logger.info('<{}> sync complete: {} new patients, {} new studies'.format(server.label, len(patients), len(studies)))
             finally:
                 pass
@@ -156,7 +160,7 @@
 
     @staticmethod
     def quick_check(domain, user, password):
-        """Confirm server details"""
+        """Validate the server details"""
 
         try:
             orthanc = RestClient(domain, auth=auth(user, password))
@@ -167,7 +171,7 @@
             return True
 
     @fields.depends('domain', 'user', 'password')
-    def on_change_with_confirmed(self):
+    def on_change_with_validated(self):
         return self.quick_check(self.domain, self.user, self.password)
 
     def get_since_sync(self, name):
--- a/tryton/health_orthanc/view/config_form.xml
+++ b/tryton/health_orthanc/view/config_form.xml
@@ -12,8 +12,8 @@
             <field name="since_sync_readable"/>
             <label name="last"/>
             <field name="last"/>
-            <label name="confirmed"/>
-            <field name="confirmed" readonly="1"/>
+            <label name="validated"/>
+            <field name="validated" readonly="1"/>
         </group>
         <group string="User" yfill="1">
             <label name="user"/>
--- a/tryton/health_orthanc/view/config_tree.xml
+++ b/tryton/health_orthanc/view/config_tree.xml
@@ -3,6 +3,6 @@
     <field name="label" expand="1"/>
     <field name="since_sync_readable" expand="1"/>
     <field name="domain" expand="1"/>
-    <field name="confirmed"/>
+    <field name="validated"/>
 </tree>