def save_comment(id=None): user = auth.service.get_user() data = dict(request.form) data['upload'] = request.files.getlist('upload') v = Validator(data) v.fields('upload').image() v.fields('file.id').integer(nullable=True) if v.is_valid(): if not id: v.field('entity_name').required() v.field('entity_id').integer(nullable=True).required() if not v.valid_data.list('url') and not v.valid_data.list( 'upload'): v.field('comment').required( message="Напишите хоть что-нибудь...") if v.is_valid() and user.is_authorized(): data = v.valid_data if not id: comment = Comment() comment.author_id = user.id comment.entity = data.entity_name comment.entity_id = data.entity_id else: comment = Comment.get(id) if comment: comment.modify_datetime = datetime.datetime.now() comment.status = Comment.Status.MODIFIED if comment: return save(comment, data) v.add_error('comment', 'Что-то пошло не так... Попробуйте позже.') return jsonify({'status': 'fail', 'errors': v.errors})
def save_comment(id=None): user = auth.service.get_user() data = dict(request.form) data['upload'] = request.files.getlist('upload') v = Validator(data) v.fields('upload').image() v.fields('file.id').integer(nullable=True) if v.is_valid(): if not id: v.field('entity_name').required() v.field('entity_id').integer(nullable=True).required() if not v.valid_data.list('url') and not v.valid_data.list('upload'): v.field('comment').required(message="Напишите хоть что-нибудь...") if v.is_valid() and user.is_authorized(): data = v.valid_data if not id: comment = Comment() comment.author_id = user.id comment.entity = data.entity_name comment.entity_id = data.entity_id else: comment = Comment.get(id) if comment: comment.modify_datetime = datetime.datetime.now() comment.status = Comment.Status.MODIFIED if comment: return save(comment, data) v.add_error('comment', 'Что-то пошло не так... Попробуйте позже.') return jsonify({'status': 'fail', 'errors': v.errors})
def login_post(): v = Validator(request.form) v.field("login").required() v.field("password").required() if v.is_valid(): login = v.valid_data.login password = v.valid_data.password if auth.service.login(login, password): return jsonify({"status": "ok"}) else: v.add_error('login', 'Логин или пароль не верен', 'wrong_login_or_password') return jsonify({"status": "fail", "errors": v.errors})
def add_user(): _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('login').required() v.field('department').required() v.field('groups').required() v.field('mobile_phone').required().phone_number() v.field('birth_date').datetime(format='%d.%m.%Y') if v.is_valid(): data = { 'name': v.valid_data.name, 'surname': v.valid_data.surname, 'email': v.valid_data.email, 'login': v.valid_data.login, 'department': v.valid_data.department, 'groups': v.valid_data.list('groups'), 'mobile_phone': v.valid_data.mobile_phone, 'skype': v.valid_data.skype, 'birth_date': v.valid_data.birth_date, 'photo': v.valid_data.file } already_used_login = User.get_by_login(data['login']) already_used_email = User.get_by_email(data['email']) if already_used_login: v.add_error('login', 'Такой логин уже занят') if already_used_email: v.add_error('email', 'Такой email уже занят') if already_used_login or already_used_email: return {"status": "fail", "errors": v.errors} try: create_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}
def edit_pass_post(): current_user = auth.service.get_user() v = Validator(request.form) v.field('password_old').required() v.field('password_1').required() v.field('password_2').required() v.field('password_2').equal(v.field('password_1'), message="Повторный пароль неверный") if v.is_valid(): old_password = request.form.get("password_old") new_password = request.form.get("password_1") try: modify_password(current_user.login, old_password, new_password) except PasswordError: v.add_error('password_old', 'Неверный пароль') return jsonify({"status": "fail", "errors": v.errors}) return jsonify({"status": "ok"}) return jsonify({"status": "fail", "errors": v.errors})