def add_doctype(self): url = '/v1/doc-type/' resp = proxy.get(url) if resp.status_code != 200: flash('暂时无法更新支持的文档资料列表', 'error') return redirect(self.get_url('.index')) # 原来支持的 support_doctypes = resp.json()['items'] or [] # 现在更新的 doc_type = request.form.get('doc_type', None) if not doc_type: flash('文档资料类别不能为空。', 'error') return redirect(self.get_url('.index')) supported = set([item['id'] for item in support_doctypes]) update = set(doc_type.split(',')) if update < supported: flash('文档库资料类别只能新增或重置', 'error') return redirect(self.get_url('.index')) try: new_add = update - supported for item in new_add: doc_type = dict(id=item, value=item) proxy.create(doc_type, url) except: raise BackendServiceError( 'Update support doctype occured failure.') flash('文档资料类别更新成功。', 'success') return redirect(self.get_url('.index'))
def index(self): # 加载该界面的一些常用数据 form = EarlyWarningForm() warn = EarlyWarning(current_app.redis_cache) warn.get_form(form) warn.get_value() warn.out_put() if is_form_submitted(): form = EarlyWarningForm(formdata=get_form_data()) if form.validate(): warn.get_form(form) warnings = warn.set_warning() warn.out_put() current_app.predicts_cfg = warnings flash('配置设置成功。', 'success') else: flash('配置设置失败。', 'error') # 获取后台支持的文档类别 resp = proxy.get('/v1/doc-type/') support_doctypes = [] if resp.status_code == 200 and resp.json()['items'] is not None: support_doctypes = [item['id'] for item in resp.json()['items']] return self.render(self._template, form=form, support_doctypes=support_doctypes)
def get_choice(self): resp = proxy.get('/v1/support-plane-types/') if resp.status_code != 200: raise BackendServiceError('API has something wrong.') items = resp.json()['items'] if not items: raise BackendServiceError('API has something wrong.') result = [] for x in items: tmp_dict = tuple(dict(key=items[x], value=x).values()) result.append(tmp_dict) return result
def get_allowed_models(): "获取为当前用户授权的维修方案(机型)列表" resp = proxy.get('/v1/support-plane-types/') if resp.status_code != 200: return [] supported = resp.json()['items'] AircraftModel = namedtuple('AircraftModel', ['label', 'value']) return [ AircraftModel(label=value, value=key) for key, value in supported.items() ]
def get_choice(self): doc_type = [] url = '/v1/doc-type/' resp = proxy.get(url) if resp.status_code != 200: raise BackendServiceError('API has something wrong.') items = resp.json().get('items') if not items: raise BackendServiceError('API has something wrong.') for item in items: # if item.get('expanded'): # doc_type.append((item.get('id'), item.get('id'))) # else: # doc_type.append(("temporary", item.get('id'))) doc_type.append((item.get('id'), item.get('id'))) return doc_type
def reset_doctype(self): url = '/v1/doc-type/' resp = proxy.get(url) if resp.status_code != 200: flash('暂时无法更新支持的文档资料列表', 'error') return redirect(self.get_url('.index')) try: support_doctypes = resp.json()['items'] for item in support_doctypes: # 只有扩展的需要删除 if 'expanded' in item and item['expanded']: doc_type = dict(id=item['id'], value=item['id']) proxy.delete_with_data(doc_type, url, item['etag']) except: raise BackendServiceError( 'Update support doctype occured failure.') flash('文档库资料类别重置完毕。', 'success') return redirect(self.get_url('.index'))
def get_predict_items(self, max_count=None): # 下面的接口可以获得到期推算的内容 resp = proxy.get('/v1/mxm/ptime/?ascend=1') if resp.status_code == 200: predict_items = resp.json()['items'] if predict_items is None: return [] show_list = [] exist_plane = {} # 第一遍遍历 for item in predict_items: timestamp = 0 plane_id = item['planeId'] if plane_id not in exist_plane: exist_plane[plane_id] = get_aircraft_info(plane_id) plane_info = exist_plane[plane_id] mx_item = get_mx_item_info(plane_info['id'], plane_info['planeType'], item['boundedId']) if mx_item is None: continue ret = { 'warningLevel': item['warningLevel'], 'err': item['itempredictTime']['errorMessage'], 'earliest': item['itempredictTime']['earlisetpredictTime'], 'best': item['itempredictTime']['bestpredictTime'], 'latest': item['itempredictTime']['latestpredictTime'], 'mxType': mx_item.mx_type, } interval_type = {} ret['intervalTimes'] = [] for temp in item['intervalspredictTime']: ori = { 'err': temp['errorMessage'], 'earliest': temp['earlisetpredictTime'], 'best': temp['bestpredictTime'], 'latest': temp['latestpredictTime'], 'left': temp['left'], 'type': temp['intervalType'], } ret['intervalTimes'].append(ori) interval_type[temp['intervalType']] = temp['left'] level = get_predict_level(ret) if item['itempredictTime']['earlisetpredictTime']: timestamp = item['itempredictTime']['earlisetpredictTime'] if timestamp == 0 and level == 0: level = 4 show_list.append({ 'role': self.can_aircraft, 'id': str(plane_info['_id']), 'mxId': mx_item.id, 'mxType': mx_item.mx_type, 'description': mx_item.description, 'planeId': plane_info['id'], 'level': level, 'earliest': timestamp_to_date(timestamp), 'intervaltype': interval_type, }) show_list.sort(list_level_compare_max) if max_count and isinstance(max_count, int): if len(show_list) <= max_count: return show_list return show_list[:max_count] return show_list return []