Source code for nh_eobs.settings

from openerp.osv import osv, orm, fields
import re


[docs]class NHEobsWorkloadBucket(orm.Model): _name = 'nh.clinical.settings.workload' _columns = { 'name': fields.text(string='Name of the workload bucket'), 'settings_id': fields.many2one('nh.clinical.settings', 'workload_bucket_period'), 'sequence': fields.integer(string='Sequence for order', default=1) } _order = 'sequence asc'
[docs]class NHEobsSettings(orm.Model): _name = 'nh.clinical.settings' WORKLOAD_BUCKET_REGEX = r'^\d+[-|+]{1}(\d+)?.+$' _columns = { 'discharge_transfer_period': fields.integer( string='Days to keep patients in ' 'Discharge/Transfer lists'), 'workload_bucket_period': fields.one2many( 'nh.clinical.settings.workload', 'settings_id', string='Time (in minutes) between buckets in Workload view'), 'activity_period': fields.integer( string='Time (in minutes) to show user activities in') } _defaults = { 'discharge_transfer_period': 3, 'activity_period': 60 }
[docs] def get_settings(self, cr, uid, settings, context=None): if not isinstance(settings, list): settings = [settings] vals = self.browse(cr, uid, []) if not vals.ids: self.create(cr, uid, {}) get_vals = self.read(cr, uid, 1, settings) return get_vals
[docs] def get_setting(self, cr, uid, setting, context=None): if isinstance(setting, list): setting = setting[0] return self.get_settings(cr, uid, setting).get(setting)
[docs] def validate_workload_buckets(self, buckets, context=None): errors = [] pattern = re.compile(self.WORKLOAD_BUCKET_REGEX) for bucket in buckets: match = pattern.match(bucket) if not match: errors.append(str(buckets.index(bucket) + 1)) if errors: plural = 's' if len(errors) > 1 else '' is_are = 'are' if len(errors) > 1 else 'is' positions = ' and '.join(errors) message = 'Time period{plural} in position{plural} {positions} ' \ '{is_are} invalid' return message.format(plural=plural, is_are=is_are, positions=positions) else: return True
[docs]class NHEobsConfigSettings(osv.TransientModel): _inherit = 'res.config.settings' _name = 'nh.clinical.config.settings' _columns = { 'discharge_transfer_period': fields.integer(), 'workload_bucket_period': fields.one2many( 'nh.clinical.settings.workload', 'settings_id'), 'activity_period': fields.integer() }
[docs] def refresh_discharge_transfer_views(self, cr, interval, context=None): nh_eobs_sql = self.pool.get('nh.clinical.sql') discharge = \ nh_eobs_sql.get_last_discharge_users('{0}d'.format(interval)) transfer = \ nh_eobs_sql.get_last_transfer_users('{0}d'.format(interval)) wardboard = \ nh_eobs_sql.get_wardboard('{0}d'.format(interval)) return cr.execute( """ create or replace view last_discharge_users as({last_discharge_users}); create or replace view last_transfer_users as({last_transfer_users}); create or replace view nh_clinical_wardboard as({wardboard}); """.format(last_discharge_users=discharge, last_transfer_users=transfer, wardboard=wardboard) )
[docs] def refresh_workload_view(self, cr, buckets, context=None): sql_pool = self.pool.get('nh.clinical.sql') view = sql_pool.get_workload(buckets) return cr.execute( 'create or replace view ' 'nh_activity_workload as ({workload})'.format( table=self._table, workload=view))
[docs] def set_discharge_transfer_period(self, cr, uid, ids, context=None): settings_pool = self.pool.get('nh.clinical.settings') wizard = self.browse(cr, uid, ids, context=context) settings_pool.write(cr, uid, 1, { 'discharge_transfer_period': wizard.discharge_transfer_period }, context=context) return self.refresh_discharge_transfer_views( cr, wizard.discharge_transfer_period, context=context)
[docs] def execute(self, cr, uid, id, context=None): self.set_workload_bucket_period(cr, uid, id, context=context) self.set_activity_period(cr, uid, id, context=context) self.set_discharge_transfer_period(cr, uid, id, context=context) return { 'name': 'Open-eObs Settings', 'type': 'ir.actions.act_window', 'res_model': self._name, 'res_id': 0, 'view_type': 'form', 'view_mode': 'form', 'target': 'inline', }
[docs] def set_workload_bucket_period(self, cr, uid, ids, context=None): settings_pool = self.pool.get('nh.clinical.settings') workload_pool = self.pool.get('nh.clinical.settings.workload') wizard = self.read(cr, uid, ids, context=context)[0] bucket_objs = workload_pool.read(cr, uid, wizard.get('workload_bucket_period'), context=context) buckets = [bucket.get('name') for bucket in bucket_objs] validation = settings_pool.validate_workload_buckets(buckets, context=context) if isinstance(validation, str): raise ValueError(validation) settings_pool.write(cr, uid, 1, {'workload_bucket_period': [ [6, 0, wizard.get('workload_bucket_period')]]}, context=context) return self.refresh_workload_view(cr, bucket_objs, context=context)
[docs] def set_activity_period(self, cr, uid, ids, context=None): settings_pool = self.pool.get('nh.clinical.settings') wizard = self.browse(cr, uid, ids, context=context) return settings_pool.write(cr, uid, 1, { 'activity_period': wizard.activity_period }, context=context)
[docs] def get_default_all(self, cr, uid, ids, context=None): settings_pool = self.pool.get('nh.clinical.settings') get_vals = settings_pool.read(cr, uid, 1, context=context) if not get_vals: settings_pool.create(cr, uid, {}, context=context) get_vals = settings_pool.read(cr, uid, 1, context=context) return { 'discharge_transfer_period': get_vals.get('discharge_transfer_period'), 'workload_bucket_period': get_vals.get('workload_bucket_period'), 'activity_period': get_vals.get('activity_period') }