def edit_profile(): current_user = auth.service.get_user() _data = dict(request.form) _data["file"] = request.files["file"] v = Validator(_data) v.field('full_name').required() v.field('email').required().email() v.field('mobile_phone').required().phone_number() v.field('department').required() v.field('birth_date').datetime(format="%d.%m.%Y") v.field('file').image() if v.is_valid(): data = { 'id': current_user.id, 'full_name': v.valid_data.full_name, 'position': v.valid_data.position, 'mobile_phone': v.valid_data.mobile_phone, 'inner_phone': v.valid_data.inner_phone, 'department': v.valid_data.department, 'email': v.valid_data.email, 'skype': v.valid_data.skype, 'photo': v.valid_data.file, 'birth_date': v.valid_data.birth_date } try: update_user(**data) return {"status": "ok"} except DataProcessingError as e: return {'status': 'failOnProcess', 'error': e.value} return {"status": "fail", "errors": v.errors}
def edit_user(id): _data = dict(request.form) _data['file'] = request.files['file'] v = Validator(_data) v.field('name').required() v.field('surname').required() v.field('file').image() v.field('email').required().email() v.field('department').required() v.field('inner_phone').integer(nullable=True) v.field('mobile_phone').required().phone_number() v.field('birth_date').datetime(format='%d.%m.%Y') if v.is_valid(): edited_user = User.get_by_id(id) duplicate_error = False data = { 'id': id, 'full_name': "{0} {1}".format(v.valid_data.name, v.valid_data.surname), 'email': v.valid_data.email, 'department': v.valid_data.department, 'mobile_phone': v.valid_data.mobile_phone, 'inner_phone': v.valid_data.inner_phone, 'position': v.valid_data.position, 'skype': v.valid_data.skype, 'birth_date': v.valid_data.birth_date, 'photo': v.valid_data.file } user_with_same_email = User.get_by_email(data['email']) if user_with_same_email and user_with_same_email != edited_user: duplicate_error = True v.add_error('email', 'Такой email уже занят') if duplicate_error: return {"status": "fail", "errors": v.errors} try: update_user(**data) return {"status": "ok"} except DataProcessingError as e: return {'status': 'failOnProcess', 'error': e.value} return {"status": "fail", "errors": v.errors}