예제 #1
0
    def generator(company):
        z = zipfile.ZipFile(upload, 'r')
        data = json.loads(z.read('index.json'))
        total = len(data)
        now = 0
        email_dup = 0
        try:
            for subject_data in data:
                now += 1
                error_code = None
                try:
                    photos = []
                    success_photo = failed_photo = 0

                    for photo in subject_data['photos']:
                        photo, error = create_user_photo(StringIO.StringIO(z.read(photo)), company.id)
                        if not error:
                            photos.append(photo)
                            success_photo += 1
                        else:
                            failed_photo += 1

                    del subject_data['id']
                    del subject_data['photos']
                    subject_data['company_id'] = company.id
                    subject_data['avatar'] = ''

                    date = subject_data['birthday']
                    if type(date) is int:
                        subject_data['birthday'] = datetime.date.fromtimestamp(date)

                    date = subject_data['entry_date']
                    if type(date) is int:
                        subject_data['entry_date'] = datetime.date.fromtimestamp(date)

                    # 判断email是否已经存在
                    email = subject_data['email']
                    if email and Subject.query.filter_by(email=email).first():
                        print email
                        email_dup += 1
                        error_code = ErrorCode.ERROR_EMAIL_EXISTED

                    if error_code is None:
                        subject = Subject(**subject_data)
                        subject.photos = photos
                        db.session.add(subject)
                except:
                    logger.error('/subject/import.zip exception: ' + str(traceback.format_exc()))
                    error_code = ErrorCode.ERROR_UNKNOWN

                    # 建议email字段默认为空字符串,如果有重复,则赋值
                yield json.dumps(
                    dict(now=now, total=total, name=subject_data.get('name'), success=success_photo, fail=failed_photo,
                         email=email if error_code == ErrorCode.ERROR_EMAIL_EXISTED else '')) + '\n'
            print 'email duplicate', email_dup
            update_company_data_version(company, 0)
            z.close()
        except:
            db.session.rollback()
            z.close()
예제 #2
0
def temp(plane_list, a_mission):
    plane_id = plane_list.pop().plane_id
    try:
        bonus = __accept_mission(a_mission.country_nb, plane_id, a_mission.mission_nb, a_mission.mission_type)
    except Exception as e:
        exception_text = traceback.format_exc()
        logger.error(exception_text)
예제 #3
0
def get_value_from_regex(regex, string):
    try:
        result = get_values_from_regex(regex, string)[0]
    except:
        message = 'String not found: regex: {} in string: {}'.format(regex, string)
        logger.error(message)
        # TODO replace with more specific exception
        raise Exception(message)
    return result
예제 #4
0
 async def all_exception_handler(request: Request, exc: Exception):
     """
     全局所有异常
     :param request:
     :param exc:
     :return:
     """
     logger.error(f"全局异常\n{request.method}URL:{request.url}\nHeaders:{request.headers}\n{traceback.format_exc()}")
     return response_code.resp_500()
예제 #5
0
 async def request_validation_exception_handler(request: Request, exc: RequestValidationError):
     """
     请求参数验证异常
     :param request:
     :param exc:
     :return:
     """
     logger.error(
         f"请求参数格式错误\nURL:{request.method}{request.url}\nHeaders:{request.headers}\n{traceback.format_exc()}")
     return response_code.resp_4001(message=exc.errors())
예제 #6
0
    async def user_token_exception_handler(request: Request, exc: custom_exc.TokenAuthError):
        """
        用户token异常
        :param request:
        :param exc:
        :return:
        """
        logger.error(f"用户认证异常\nURL:{request.method}{request.url}\nHeaders:{request.headers}\n{traceback.format_exc()}")

        return response_code.resp_4003(message=exc.err_desc)
예제 #7
0
 async def user_not_found_exception_handler(
         request: Request, exc: custom_exc.AuthenticationError):
     """
     用户权限不足
     :param request:
     :param exc:
     :return:
     """
     logger.error(f"用户权限不足 \nURL:{request.method}{request.url}")
     return response_code.resp_4003(message=exc.err_desc)
예제 #8
0
    async def user_not_found_exception_handler(request: Request, exc: custom_exc.TokenExpired):
        """
        token过期
        :param request:
        :param exc:
        :return:
        """
        logger.error(
            f"token未知用户\nURL:{request.method}{request.url}\nHeaders:{request.headers}\n{traceback.format_exc()}")

        return response_code.resp_4002(message=exc.err_desc)
예제 #9
0
def update_updater():
    token = request.args.get('token')
    model = 3

    box = Box.query.filter_by(box_token=token).first()
    if box is None or box.box_version is None:
        box_version = BoxVersion.query.filter_by(
            version=DEFAULT_BOX_VERSION).first()
    else:
        box_version = box.box_version
    if box_version is None:
        return Response(status=404)
    if box is not None:
        model = box.model

    config_text = box_version.config.replace('{{token}}', token)
    config_text = config_text.replace('{{facemin}}', '50')

    config = json.loads(config_text)

    leaf = None
    for package in config['packages']:
        if package['name'] == 'leaf':
            leaf = package
            break
    if leaf is None:
        return Response(status=500)

    if config_text.find('-fpp.model') == -1:
        if model in CORE_MODELS:
            model = CORE_MODELS[model]
            config['packages'] = model['packages'] + config['packages']
            leaf['args'].extend(model['leaf-params'])

    if box:
        leaf_config = box.get_leaf_config()
        if leaf_config.get('-video.facemin') == 50:
            del leaf_config['-video.facemin']

        if leaf_config:
            d = {}
            try:
                for arg in leaf['args'][1:]:
                    k, v = arg.split('=')
                    d[k] = v
                d.update(leaf_config)
                leaf['args'][1:] = [
                    str(k) + '=' + str(v) for k, v in d.items()
                ]
            except Exception, e:
                logger.error(e)
예제 #10
0
def view_generic(_, view_name):
    """ First parameter request is not used. Replaced by _ for sonar """
    requested_view = 'view_{}()'.format(view_name)
    action_url = 'Requested view: {}'.format(requested_view)
    try:
        logger.info(action_url)
        eval(requested_view)
        logger.info('Successful')
    except Exception as e:
        exception_text = traceback.format_exc()
        logger.error(exception_text)
        notify('FM: Exception', 'Exception:\n{}'.format(exception_text))
        raise e
    finally:
        save_session_to_db()
    return HttpResponse('started')
예제 #11
0
 def __do_maintenance(self):
     page = None
     try:
         page = get_request(MAINTENANCE_URL.format(plane_id=self.plane.plane_id))
         exception_if_not_contains('Votre avion est maintenant en maintenance', page)
     except:
         logger.error('Problem sending to maintenance')
         if not string_contains("en mission, en maintenance ou n'a pas plus de 100,000 km sans maintenance",
                                page):
             # case when the current airport has changed
             # case not enough mecanicians
             notify('FM : could not send to maintenance', page)
         else:
             # TODO case plane maintenance was over, should continue iteration over planes, refresh and run again
             logger.warning("Outdated plane list (not an exception anymore)")
             # raise OutdatedPlanesListException()
     self.__ready = False