Пример #1
0
    def getValues(self, coldefinition):
        cars = {}
        notfound = {}
        states = {'-1': 0, '0': 0, '1': 0}
        for c in Car.getCars(deptid=coldefinition['dept']):
            cars[unicode(c.name)] = c

        keys = Alarmkey.getAlarmkeys()
        worksheet = self.book.sheet_by_name(self.book.sheet_names()[int(
            coldefinition['sheet'])])

        def getPosForCol(name):
            ret = -65
            while len(name) > 0:
                ret += ord(name[0])
                name = name[1:]
            return ret

        def evalValue(crow, ccol):
            try:
                return worksheet.cell_value(crow, ccol)
            except:
                return ""

        importkeys = []
        # state -1:new, 0:no changes, 1:need update
        for row in range(self.headerrow + 1, worksheet.nrows - 1):
            item = {
                'cars1': [],
                'cars2': [],
                'material': [],
                'cars1_ids': [],
                'cars2_ids': [],
                'material_ids': [],
                'dbid':
                None,
                'state':
                '0',
                'category':
                evalValue(row, getPosForCol(coldefinition['category'])),
                'key':
                evalValue(row, getPosForCol(coldefinition['key'])),
                'keyinternal':
                evalValue(row, getPosForCol(coldefinition['keyinternal'])),
                'remark':
                evalValue(row, getPosForCol(coldefinition['remark']))
            }

            for field in ['cars1', 'cars2', 'material']:
                for c in coldefinition[field]:
                    cell_val = evalValue(row, getPosForCol(c))
                    if unicode(cell_val) in cars.keys():
                        item[field].append(cars[unicode(cell_val)])
                        item[field + '_ids'].append(
                            str(cars[unicode(cell_val)].id))
                    elif cell_val.strip() != '':
                        if unicode(cell_val) not in notfound.keys():
                            n_c = Car(
                                '<em style="color:#ff0000">%s</em>' % cell_val,
                                '', '', 0, 'new', coldefinition['dept'])
                            notfound[unicode(cell_val)] = n_c
                        else:
                            n_c = notfound[unicode(cell_val)]
                        item[field].append(n_c)
                        item[field + '_ids'].append(-1)

            # check if key exists
            for k in keys:
                if unicode(k.category) == unicode(
                        item['category']) and unicode(k.key) == unicode(
                            item['key']):
                    item['dbid'] = k.id
                    if k.getCars1(
                            coldefinition['dept']
                    ) != item['cars1'] or k.getCars2(
                            coldefinition['dept']
                    ) != item['cars2'] or k.getMaterial(
                            coldefinition['dept']) != item['material']:
                        item['cars1'] = k.getCars1(coldefinition['dept'])
                        item['cars2'] = k.getCars2(coldefinition['dept'])
                        item['material'] = k.getMaterial(coldefinition['dept'])
                        item['state'] = '1'  # mark to update

            if not item['dbid']: item['state'] = '-1'  # mark as new

            if item['category'] != '' and item['key'] != '':
                states[str(item['state'])] += 1
                importkeys.append(item)

        return dict(keys=importkeys, carsnotfound=notfound, states=states)
Пример #2
0
def getAdminContent(self, **params):
    """
    Deliver admin content of module cars

    :param params: use given parameters of request
    :return: rendered template as string
    """
    module = request.view_args['module'].split('/')

    if len(module) < 2:
        module.append(u'1')

    if request.method == 'POST':
        if request.form.get('action') == 'createcars':  # add car
            params.update({
                'car': Car('', '', '', '', '', int(module[1])),
                'departments': Department.getDepartments(),
                'cartypes': Settings.getCarTypes()
            })
            return render_template('admin.cars_edit.html', **params)

        elif request.form.get('action') == 'updatecars':  # save car
            if request.form.get('car_id') != 'None':  # update car
                car = Car.getCars(id=request.form.get('car_id'))

            else:  # add car
                car = Car('', '', '', '', '', module[1])
                db.session.add(car)

            car.name = request.form.get('edit_name')
            car.description = request.form.get('edit_description')
            car.fmsid = request.form.get('edit_fmsid')
            car.active = request.form.get('edit_active')
            car.type = request.form.get('edit_type')
            car._dept = request.form.get('edit_department')
            db.session.commit()

        elif request.form.get('action') == 'cancel':
            pass

        elif request.form.get('action').startswith('editcars_'):  # edit car
            params.update({
                'car':
                Car.getCars(id=request.form.get('action').split('_')[-1]),
                'departments':
                Department.getDepartments(),
                'cartypes':
                Settings.getCarTypes()
            })
            return render_template('admin.cars_edit.html', **params)

        elif request.form.get('action').startswith(
                'deletecars_'):  # delete car
            db.session.delete(
                Car.getCars(id=request.form.get('action').split('_')[-1]))
            db.session.commit()
    try:
        cars = Department.getDepartments(module[1]).getCars()
    except AttributeError:
        cars = []
    params.update({'cars': cars})
    return render_template('admin.cars.html', **params)