Beispiel #1
0
def csv_import():
    from config.extensions import db
    import dal.jurisdiction_dao as juris_dao

    if request.method == 'GET':

        dao = Dao(stateful=True)
        mods = mods_dao.get_all(dao)
        grps = groups_dao.get_all(dao, with_members=False)
        jurisdictions = juris_dao.get_all(dao)
        dao.close()

        return render_template(
            'contacts/csv_import.html',
            modifications=mods,
            groups=grps,
            jurisdictions=jurisdictions,
            title='Contact Import'
        )

    data = json.loads(request.form['params'])
    rex = [Contact(rename_fields(rec)) for rec in data]
    for rec in rex:
        db.session.add(rec)
    try:
        db.session.commit()
        return jsonify(msg='Successful!')
    except Exception as ex:
        db.session.rollback()
        return jsonify(error=str(ex))
Beispiel #2
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())
def import_spreadsheet():
    import lib.excel_lib as xl
    from dal.dao import Dao
    from models.deposit import Deposit

    file = 'c:/bench/allocat/data/test_deposits.xls'
    wb = xl.open_wb(file)
    sheets = wb.sheet_names()

    rex = []
    dao = Dao(stateful=True)
    for idx in range(0, len(sheets)):
        sh = wb.sheet_by_index(idx)
        print('Sheet ' + sh.name)

        nrows = sum(1 for _ in sh.get_rows())
        for rownum in range(0, nrows):
            if sh.cell_value(rownum, 1).startswith('506'):
                ss_rec = Deposit(sh.row_values(rownum))
                # if ss_rec.invoice_num == 'K8H1025':
                #     print('boo')
                if ss_rec.invoice_num[0:2] not in ('K0', 'K9'):
                    continue
                try:
                    db_rec = Deposit.get_by_invoice_num(dao, ss_rec.invoice_num)
                except Exception as ex:
                    print(str(ex))
                if not db_rec:
                    ss_rec.add(dao)
                    rex.append(ss_rec)
    dao.close()
    return rex
Beispiel #4
0
def drop():
    contact_id = json.loads(request.args['contact_id'])
    dao = Dao(stateful=True)
    success = con_dao.drop(dao, contact_id)
    dao.close()
    if not success:
        msg = 'Contact not deleted. Please report.'
        return jsonify(error=msg)
    return jsonify(dropped='Contact dropped!')
Beispiel #5
0
    def update_dept(self, obj, value):
        obj.name = value.upper()
        if not obj.name:
            uil.show_error('Department name missing!')
            return

        if obj.id:
            obj.update(Dao())
        else:
            obj.id = obj.add(Dao())
Beispiel #6
0
    def _get_data(self):
        from dal.dao import Dao
        from models.project import Project
        from models.employee import Employee
        from models.assignment import Assignment

        dao = Dao(db_path=self.db_path, stateful=True)
        self._prj_rex = Project.get_all(dao)
        self._emp_rex = Employee.get_all(dao)
        self._asn_rex = Assignment.get_all(dao)
        dao.close()
Beispiel #7
0
    def update_admin(self, obj, value):
        err_msg = vl.validate_name(value)
        if err_msg:
            uil.show_error(err_msg)
            return

        obj.name = value.upper()
        if obj.id:
            obj.update(Dao())
        else:
            obj.add(Dao())
Beispiel #8
0
def groups():
    con_rex = con_dao.get_all(Dao())
    contacts = [{
        'id': rec['id'],
        'name': StrLib.common_name(rec)
    } for rec in con_rex]

    return render_template('groups/groups.html',
                           title='Groups',
                           groups=grp_dao.get_all(Dao(), with_members=True),
                           contacts=contacts,
                           modifications=Modification.get_all(serialized=True))
Beispiel #9
0
    def update_admin_email(self, obj, value):
        if not vl.validate_email(value):
            uil.show_error('Invalid email!')
            return

        if not obj.name:
            uil.show_error('Admin name missing!')
            return

        obj.email = value
        if obj.id:
            obj.update(Dao())
        else:
            obj.add(Dao())
Beispiel #10
0
    def processAsn(self):
        from dal.dao import Dao
        import dal.asn_dal as asn_dal

        d = self.formData
        if self.asn is None:
            d['employee_id'] = self.cboOwner.getSelectionId()
            d['project_id'] = self.ownerRec['id']
            result = asn_dal.add(Dao(), d)
            print(result)
        else:
            d['employee_id'] = self.asn['employee_id']
            d['project_id'] = self.asn['project_id']
            result = asn_dal.update(Dao(), self.asn['id'], d)
            print(result)
Beispiel #11
0
 def setProps(self, emp_id):
     self.assignee = 'Project'
     self.dlg = EmpAsnDlg
     self.dal = emp_dal
     if emp_id:
         self.asns = emp_dal.getAsns(Dao(), emp_id)
         gbl.empRex[emp_id]['asns'] = self.asns
Beispiel #12
0
def update_member():
    params = json.loads(request.form['params'])
    try:
        nrows = grp_dao.update_member(Dao(), params)
        return jsonify(nrows=nrows)
    except Exception as ex:
        return jsonify(error=str(ex))
Beispiel #13
0
def add_member():
    params = json.loads(request.form['params'])
    try:
        mem_id = grp_dao.add_member(Dao(), params)
        return jsonify(mem_id=mem_id)
    except Exception as ex:
        return jsonify(error=str(ex))
Beispiel #14
0
def drop():
    grp_id = json.loads(request.args['grp_id'])
    try:
        grp_dao.drop(Dao(), grp_id)
        return jsonify(dropped='Group dropped!')
    except Exception as ex:
        return jsonify(error=str(ex))
Beispiel #15
0
 def setProps(self, prj_id):
     self.assignee = 'Employee'
     self.dlg = PrjAsnDlg
     self.dal = prj_dal
     if prj_id:
         self.asns = prj_dal.getAsns(Dao(), prj_id)
         gbl.prjRex[prj_id]['asns'] = self.asns
Beispiel #16
0
    def buildDataSet(self, start, thru, months):
        from dal.dao import Dao
        import dal.asn_dal as asn_dal

        asns = asn_dal.get_for_timeframe(Dao(), start, thru)
        self.emp_asns = {emp['id']: [] for emp in gbl.empRex.values()}

        for asn in asns:
            self.emp_asns[asn['employee_id']].append(asn)

        for emp in gbl.empRex:
            row = EffRow(emp)
            for month in months:
                cell = EffCell(month)
                for emp_asn in self.emp_asns[emp]:
                    uglyMo = ml.uglify(month)
                    if uglyMo < emp_asn['first_month'] or uglyMo > emp_asn[
                            'last_month']:
                        continue
                    cell.total += emp_asn['effort']
                    cell.efforts.append(
                        PercentEffort(emp_asn['project'], emp_asn['effort']))
                row.cells.append(cell)
            self.rows.append(row)

        self.breakdowns = self.build_breakdowns()
Beispiel #17
0
def drop_member():
    mem_id = json.loads(request.args['mem_id'])
    try:
        grp_dao.drop(Dao(), mem_id)
        return jsonify(dropped='Member dropped!')
    except Exception as ex:
        return jsonify(error=str(ex))
    def save_form(self):
        form_vals = self.view.get_form_values()
        obj = self.view.get_work_list_selection()
        updatable_flds = [
            'dept', 'admin_approved', 'va_approved', 'invoice_num', 'amount',
            'short_code', 'grant_admin', 'grant_admin_email'
        ]
        for fld in updatable_flds:
            setattr(obj, fld, form_vals[fld])

        if obj.id:
            result = obj.update(Dao())
        else:
            result = obj.add(Dao())

        self.view.reload_work_grid(obj)

        uil.show_msg('Ledger updated!', 'Hooray')
    def update_model(self, form_values):
        model = self.model[self.view.get_selected_idx()]
        try:
            model.update(Dao(), form_values)
        except Exception as ex:
            uil.show_error(str(ex))
            return

        uil.show_msg('Employee updated!', 'Hallelujah!')
    def update_entries(self):
        from dal.dao import Dao
        from models.invoice import Invoice

        dao = Dao(stateful=True)

        invoice_rex = self.import_spreadsheet()

        for invoice_rec in list(invoice_rex):
            ledger_rec = Invoice.get_by_invoice(dao, invoice_rec.invoice_num)
            if ledger_rec:
                ledger_rec.update_balance(dao, invoice_rec.amount)

        new_rex = Invoice.get_rex(dao)

        dao.close()

        gbl.dataset.set_ledger_data(new_rex)
        self.init_view()
    def add_model(self, form_values):
        new_model = Employee(self.get_new_model_values(form_values))

        try:
            new_model.id = new_model.add(Dao())
        except Exception as ex:
            uil.show_error(str(ex))
            return

        uil.show_msg('Employee added!', 'Hallelujah!')
Beispiel #22
0
    def pm_dlg(self, emp):
        dlg = PmDlg(self.view, emp)
        dlg.ShowModal()

        if dlg.emp.pm:
            dlg.emp.update_pm(Dao())
            self.set_emp_lists()

        dlg.Destroy()
        uil.show_msg('PM updated!', 'Yippee!')
Beispiel #23
0
    def add_pm(self):
        emp = self.view.get_emp_selection()
        dlg = PmDlg(self.view, emp)
        dlg.ShowModal()

        if dlg.emp.pm:
            dlg.emp.update_pm(Dao())
            self.set_emp_lists()

        dlg.Destroy()
        uil.show_msg('PM updated!', 'Yippee!')
Beispiel #24
0
    def save(self):
        from dal.dao import Dao
        from models.assignment import Assignment
        import wx

        form_values = self.get_form_values()
        if self.is_valid(form_values):
            try:
                if self.asn:
                    self.asn.from_dict(form_values)
                    self.asn.update(Dao())
                else:
                    self.asn = Assignment(form_values)
                    self.asn.add(Dao())
            except Exception as ex:
                vl.show_errmsg(None, str(ex))
                return

            wx.MessageBox('Assignment saved!', 'Hallelujah!', wx.OK)
            self.view.Parent.Close()
Beispiel #25
0
    def update_pm_nonva_email(self, emp, value):
        if not vl.validate_email(value):
            uil.show_error('Invalid non-VA email!')
            return

        if not emp.name:
            uil.show_error('PM name missing!')
            return

        emp.nonva_email = value
        emp.update_pm(Dao())
Beispiel #26
0
    def drop(self, action):
        idx = self.view.get_selected_idx()

        if action == 'Undrop':
            self.undrop(idx)
            return

        try:
            self.model[idx].drop(Dao())
        except Exception as ex:
            uil.show_error(str(ex))
            return
    def add_model(self, form_values):
        from models.project import Project

        new_model = Project(self.get_new_model_values(form_values))

        try:
            new_model.id = new_model.add(Dao())
        except Exception as ex:
            uil.show_error(str(ex))
            return

        uil.show_msg('Project added!', 'Hallelujah!')
Beispiel #28
0
 def addRec(self):
     try:
         rec_id = self.dal.add(Dao(), self.formData)
     except Exception as ex:
         wx.MessageBox('Error adding %s: %s' % (self.ownerName, str(ex)))
         return False
     self.ownerRec = self.formData.copy()
     self.ownerRec['id'] = rec_id
     self.supplementRec()
     self.ownerRec['active'] = 1
     self.updateMyRex()
     wx.MessageBox('%s added!' % self.ownerName)
     return True
Beispiel #29
0
 def dropRec(self):
     try:
         result = self.dal.delete(Dao(), [self.ownerRec['id']])
     except Exception as ex:
         wx.MessageBox('Error dropping %s: %s' % (self.ownerName, str(ex)))
         return False
     if result != 1:
         wx.MessageBox('Unanticipated error dropping %s' % self.ownerName)
         return False
     del self.rex[self.ownerRec['id']]
     self.GrandParent.loadList(self.rex.values())
     wx.MessageBox('%s dropped!' % self.ownerName)
     return True
Beispiel #30
0
    def drop_asn(self):
        selections = self.view.get_selected_asns()
        ids = [x.id for x in selections]
        if not ids:
            uil.show_error('No assignments selected!')
            return

        if uil.confirm(self.view, 'Drop selected assignments?'):
            try:
                Assignment.drop_many(Dao(), ids)
            except Exception as ex:
                uil.show_error(str(ex))
                return