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