def build_globals(): import globals as gbl import lib.ui_lib as uil from dal.dao import Dao import dal.prj_dal as prj_dal import dal.emp_dal as emp_dal dao = Dao(stateful=True) gbl.prjRex = prj_dal.get_all_active(dao) gbl.empRex = emp_dal.get_all(dao) dao.close() # Add PI and PM names to prjRex # Build prj name and nickname comparison dicts empNames = {emp['id']: emp['name'] for emp in gbl.empRex.values()} for prj in gbl.prjRex.values(): prj['PiName'] = empNames[prj['PI']] if prj['PI'] else '' prj['PmName'] = empNames[prj['PM']] if prj['PM'] else '' gbl.prjNames[uil.set2compare(prj['name'])] = prj['id'] gbl.prjNicknames[uil.set2compare(prj['nickname'])] = prj['id'] w = dc.GetTextExtent(prj['name'])[0] if dc.GetTextExtent(prj['name'])[0] > gbl.widestPrjName: gbl.widestPrjName = w w = dc.GetTextExtent(prj['nickname'])[0] if w > gbl.widestNickname: gbl.widestNickname = w gbl.empNames = {uil.set2compare(e['name']): e['id'] for e in gbl.empRex.values()} gbl.widestEmpName = uil.getWidestTextExtent(font, empNames.values())
def update_emp(self, old_rec, new_rec): idx = self._emp_rex.index(new_rec) if old_rec.name != new_rec.name: del self.emp_names[uil.set2compare(old_rec.name)] self.emp_names[uil.set2compare(new_rec.name)] = new_rec.id if self._active_only: idx = [x for x in self._emp_rex if x.active].index(new_rec) self.notify('employees', idx)
def add_prj(self, new_prj): self._prj_rex.append(new_prj) self._prj_rex = sorted(self._prj_rex, key=lambda i: i.name.lower()) idx = self._prj_rex.index(new_prj) if self._active_only: idx = [x for x in self._prj_rex if x.active].index(new_prj) self.prj_names[uil.set2compare(new_prj.name)] = new_prj.id self.prj_full_names[uil.set2compare(new_prj.full_name)] = new_prj.id self.notify('projects', idx)
def update_prj(self, old_rec, new_rec): idx = self._prj_rex.index(new_rec) if old_rec.name != new_rec.name: del self.prj_names[uil.set2compare(old_rec.name)] self.prj_names[uil.set2compare(new_rec.name)] = new_rec.id if old_rec.full_name != new_rec.full_name: del self.prj_full_names[uil.set2compare(old_rec.full_name)] self.prj_full_names[uil.set2compare( new_rec.full_name)] = new_rec.id if self._active_only: idx = [x for x in self._prj_rex if x.active].index(new_rec) self.notify('projects', idx)
def _build_dataset(self): self._get_data() for prj in self._prj_rex: prj.asns = [ asn for asn in self._asn_rex if asn.project_id == prj.id ] self.prj_names[uil.set2compare(prj.name)] = prj.id self.prj_full_names[uil.set2compare(prj.full_name)] = prj.id for emp in self._emp_rex: emp.asns = [ asn for asn in self._asn_rex if asn.employee_id == emp.id ] self.emp_names[uil.set2compare(emp.name)] = emp.id
def add_emp(self, new_emp): self._emp_rex.append(new_emp) self._emp_rex = sorted(self._emp_rex, key=lambda i: i.name.lower()) idx = self._emp_rex.index(new_emp) if self._active_only: idx = [x for x in self._emp_rex if x.active].index(new_emp) self.emp_names[uil.set2compare(new_emp.name)] = new_emp.id self.notify('employees', idx)
def validatePrjNickname(value, match=None): if value is None or value == '': return 'Project nickname required!' if match: target = uil.set2compare(value) if target in match.values: if match.id == 0 or match.values[target] != match.id: return 'Project nickname not unique!' return None
def validateEmpName(value, match=None): if value is None or value == '': return 'Employee name required!' if match: if not re.match(WHOLE_NAME_PATTERN, value.upper()): return 'Employee name invalid!' target = uil.set2compare(value) if target in match.names: if match.names[target] != match.id: return 'Employee name not unique!' return None
def drop_emp(self, emp): del self.emp_names[uil.set2compare(emp.name)] idx = self._emp_rex.index(emp) del self._emp_rex[idx] self.notify('employees')
def drop_prj(self, prj): del self.prj_names[uil.set2compare(prj.name)] del self.prj_full_names[uil.set2compare(prj.full_name)] idx = self._prj_rex.index(prj) del self._prj_rex[idx] self.notify('projects')