Ejemplo n.º 1
0
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())
Ejemplo n.º 2
0
 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)
Ejemplo n.º 3
0
 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)
Ejemplo n.º 4
0
 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)
Ejemplo n.º 5
0
    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
Ejemplo n.º 6
0
 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)
Ejemplo n.º 7
0
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
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
 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')
Ejemplo n.º 10
0
 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')