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)
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)