Package Gnumed :: Package business :: Module gmSurgery
[frames] | no frames]

Source Code for Module Gnumed.business.gmSurgery

  1  """GNUmed Surgery related middleware.""" 
  2  #============================================================ 
  3  __license__ = "GPL" 
  4  __version__ = "$Revision: 1.14 $" 
  5  __author__ = "K.Hilbert <Karsten.Hilbert@gmx.net>" 
  6   
  7   
  8  import sys, os 
  9   
 10   
 11  if __name__ == '__main__': 
 12          sys.path.insert(0, '../../') 
 13  from Gnumed.pycommon import gmPG2, gmTools, gmBorg, gmCfg2 
 14   
 15  _cfg = gmCfg2.gmCfgData() 
 16  #============================================================ 
17 -def delete_workplace(workplace=None, delete_config=False, conn=None):
18 19 args = {'wp': workplace} 20 21 # delete workplace itself (plugin load list, that is) 22 queries = [ 23 {'cmd': u""" 24 delete from cfg.cfg_item 25 where 26 fk_template = ( 27 select pk 28 from cfg.cfg_template 29 where name = 'horstspace.notebook.plugin_load_order' 30 ) 31 and 32 workplace = %(wp)s""", 33 'args': args 34 } 35 ] 36 37 # delete other config items associated with this workplace 38 if delete_config: 39 queries.append ({ 40 'cmd': u""" 41 delete from cfg.cfg_item 42 where 43 workplace = %(wp)s""", 44 'args': args 45 }) 46 47 gmPG2.run_rw_queries(link_obj = conn, queries = queries, end_tx = True)
48 #============================================================
49 -class gmCurrentPractice(gmBorg.cBorg):
50
51 - def __init__(self):
52 try: 53 self.already_inited 54 return 55 except AttributeError: 56 pass 57 58 self.__helpdesk = None 59 self.__active_workplace = None 60 61 self.already_inited = True
62 #-------------------------------------------------------- 63 # waiting list handling 64 #--------------------------------------------------------
65 - def remove_from_waiting_list(self, pk=None):
66 cmd = u'delete from clin.waiting_list where pk = %(pk)s' 67 args = {'pk': pk} 68 gmPG2.run_rw_queries(queries = [{'cmd': cmd, 'args': args}])
69 #--------------------------------------------------------
70 - def update_in_waiting_list(self, pk = None, urgency = 0, comment = None, zone = None):
71 cmd = u""" 72 update clin.waiting_list 73 set 74 urgency = %(urg)s, 75 comment = %(cmt)s, 76 area = %(zone)s 77 where 78 pk = %(pk)s""" 79 args = { 80 'pk': pk, 81 'urg': urgency, 82 'cmt': gmTools.none_if(comment, u''), 83 'zone': gmTools.none_if(zone, u'') 84 } 85 86 gmPG2.run_rw_queries(queries = [{'cmd': cmd, 'args': args}])
87 #--------------------------------------------------------
88 - def raise_in_waiting_list(self, current_position=None):
89 if current_position == 1: 90 return 91 92 cmd = u'select clin.move_waiting_list_entry(%(pos)s, (%(pos)s - 1))' 93 args = {'pos': current_position} 94 95 gmPG2.run_rw_queries(queries = [{'cmd': cmd, 'args': args}])
96 #--------------------------------------------------------
97 - def lower_in_waiting_list(self, current_position=None):
98 cmd = u'select clin.move_waiting_list_entry(%(pos)s, (%(pos)s+1))' 99 args = {'pos': current_position} 100 101 gmPG2.run_rw_queries(queries = [{'cmd': cmd, 'args': args}])
102 #-------------------------------------------------------- 103 # properties 104 #--------------------------------------------------------
106 cmd = u'select * from clin.v_waiting_list order by list_position' 107 rows, idx = gmPG2.run_ro_queries ( 108 queries = [{'cmd': cmd}], 109 get_col_idx = False 110 ) 111 return rows
112 113 waiting_list_patients = property (_get_waiting_list_patients, lambda x:x) 114 #--------------------------------------------------------
115 - def _set_helpdesk(self, helpdesk):
116 return
117
118 - def _get_helpdesk(self):
119 120 if self.__helpdesk is not None: 121 return self.__helpdesk 122 123 self.__helpdesk = gmTools.coalesce ( 124 _cfg.get ( 125 group = u'workplace', 126 option = u'help desk', 127 source_order = [ 128 ('explicit', 'return'), 129 ('workbase', 'return'), 130 ('local', 'return'), 131 ('user', 'return'), 132 ('system', 'return') 133 ] 134 ), 135 u'http://wiki.gnumed.de' 136 ) 137 138 return self.__helpdesk
139 140 helpdesk = property(_get_helpdesk, _set_helpdesk) 141 #--------------------------------------------------------
142 - def _get_db_logon_banner(self):
143 rows, idx = gmPG2.run_ro_queries(queries = [{'cmd': u'select _(message) from cfg.db_logon_banner'}]) 144 if len(rows) == 0: 145 return u'' 146 return gmTools.coalesce(rows[0][0], u'').strip()
147
148 - def _set_db_logon_banner(self, banner):
149 queries = [ 150 {'cmd': u'delete from cfg.db_logon_banner'} 151 ] 152 if banner.strip() != u'': 153 queries.append ({ 154 'cmd': u'insert into cfg.db_logon_banner (message) values (%(msg)s)', 155 'args': {'msg': banner.strip()} 156 }) 157 rows, idx = gmPG2.run_rw_queries(queries = queries, end_tx = True)
158 159 db_logon_banner = property(_get_db_logon_banner, _set_db_logon_banner) 160 #--------------------------------------------------------
161 - def _set_workplace(self, workplace):
162 # maybe later allow switching workplaces on the fly 163 return True
164
165 - def _get_workplace(self):
166 """Return the current workplace (client profile) definition. 167 168 The first occurrence counts. 169 """ 170 if self.__active_workplace is not None: 171 return self.__active_workplace 172 173 self.__active_workplace = gmTools.coalesce ( 174 _cfg.get ( 175 group = u'workplace', 176 option = u'name', 177 source_order = [ 178 ('explicit', 'return'), 179 ('workbase', 'return'), 180 ('local', 'return'), 181 ('user', 'return'), 182 ('system', 'return'), 183 ] 184 ), 185 u'Local Default' 186 ) 187 188 return self.__active_workplace
189 190 active_workplace = property(_get_workplace, _set_workplace) 191 #--------------------------------------------------------
192 - def _set_workplaces(self, val):
193 pass
194
195 - def _get_workplaces(self):
196 rows, idx = gmPG2.run_ro_queries(queries = [{'cmd': u'select distinct workplace from cfg.cfg_item'}]) 197 return [ r[0] for r in rows ]
198 199 workplaces = property(_get_workplaces, _set_workplaces) 200 #--------------------------------------------------------
201 - def _get_user_email(self):
202 # FIXME: get this from the current users staff record in the database 203 return _cfg.get ( 204 group = u'preferences', 205 option = u'user email', 206 source_order = [ 207 ('explicit', 'return'), 208 ('user', 'return'), 209 ('local', 'return'), 210 ('workbase', 'return'), 211 ('system', 'return') 212 ] 213 )
214
215 - def _set_user_email(self, val):
216 prefs_file = _cfg.get(option = 'user_preferences_file') 217 gmCfg2.set_option_in_INI_file ( 218 filename = prefs_file, 219 group = u'preferences', 220 option = u'user email', 221 value = val 222 ) 223 _cfg.reload_file_source(file = prefs_file)
224 225 user_email = property(_get_user_email, _set_user_email)
226 #============================================================ 227 if __name__ == '__main__': 228
229 - def run_tests():
230 prac = gmCurrentPractice() 231 # print "help desk:", prac.helpdesk 232 # print "active workplace:", prac.active_workplace 233 234 old_banner = prac.db_logon_banner 235 test_banner = u'a test banner' 236 prac.db_logon_banner = test_banner 237 if prac.db_logon_banner != test_banner: 238 print 'Cannot set logon banner to', test_banner 239 return False 240 prac.db_logon_banner = u'' 241 if prac.db_logon_banner != u'': 242 print 'Cannot set logon banner to ""' 243 return False 244 prac.db_logon_banner = old_banner 245 246 return True
247 248 if len(sys.argv) > 1 and sys.argv[1] == 'test': 249 if not run_tests(): 250 print "regression tests failed" 251 print "regression tests succeeded" 252 253 #============================================================ 254