Exemplo n.º 1
0
    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'))
Exemplo n.º 2
0
    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)
Exemplo n.º 3
0
 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
Exemplo n.º 4
0
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()
    ]
Exemplo n.º 5
0
 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
Exemplo n.º 6
0
    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'))
Exemplo n.º 7
0
    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 []