def registrate(): data = request.forms data['photo'] = request.files.get('photo') v = Validator(data) v.field("first_name").required() v.field("last_name").required() v.field("email").required().email() v.field("password").required().length(min=5, message="Длина пароля не менее %(min)d символов") v.field("photo").image() if data.get("password") != data.get("repassword"): v.add_error('password', 'Пароли не совпадают', 'wrong_repassword') if(v.is_valid()): data = v.valid_data password_hash = hash_password(data.get('password')) user = request.db(User).get_by_email(data['email']) if user: v.add_error('email', 'Электронный адрес уже используется.', 'email_is_used_already') else: user = User() user.email = data['email'] user.first_name = data['first_name'] user.last_name = data['last_name'] user.password = password_hash request.db.add(user) request.db.commit() img = data.get("photo") if img is not None: path = profile_path.format(id=user.id) photo_name = 'photo_'+str(user.id)+"_"+str(uuid.uuid4())+".png" thumbnail_name = photo_name.rstrip(".png")+".thumbnail.png" if not os.path.exists(path): os.makedirs(path) remove_similar(path, photo_name) image_path = os.path.join(path, photo_name) thumbnail_path = os.path.join(path, thumbnail_name) photo = image_thumbnail(img, width=200, height=200, fill='cover') photo.save(image_path) img.file.seek(0) thumbnail = image_thumbnail(img, width=50, height=50, fill='cover') thumbnail.save(thumbnail_path) user.photo = "/file"+image_path.replace(files_dir, '').replace("\\", '/') user.photo_s = "/file"+thumbnail_path.replace(files_dir, '').replace("\\", '/') request.db.commit() auth(user) return {"status": "ok", "reload": True} return {"status": "fail", "errors": v.errors}
def login_native(): data = request.forms v = Validator(data) v.field("email").required() v.field("password").required() if v.is_valid(): data = v.valid_data user = request.db().query(User).filter(User.email == data.get('email')).first() if not user or not verify_password(data.get('password'), user.password): v.add_error('email', 'Неправильный email или пароль', 'wrong_login') else: auth(user) return {"status": "ok", "reload": True} return {"status": "fail", "errors": v.errors}
def seo_save(): if not request.user.role('admin'): return False data = request.forms v = Validator(data) v.field("seou_url").required() v.field("seou_id").integer(nullable=True) v.fields("seot_id").integer(nullable=True) seo = request.db(SEOUrl).get_by_url(v.valid_data.get("seou_url").strip()) if seo is not None and seo.seou_id != v.valid_data.seou_id: v.add_error("seou_url", "Такая ссылка уже существует") if v.is_valid(): seo = request.db(SEOUrl).get_by_id(data.seou_id) if seo is None: seo = SEOUrl() seo.seou_url = data.get('seou_url').strip() tag_ids = data.getall('seot_id') tag_text = data.getall('seot_text') request.db.add(seo) request.db.commit() for i, text in enumerate(tag_text): text = text.strip() id = tag_ids[i] tag = request.db(SEOUrl).get_by_id(id) if tag is None: tag = SEOTag() tag.seou_id = seo.seou_id if text == '': if id is not None: request.db.delete(tag) else: tag.seot_text = text request.db.add(tag) request.db.commit() return {"status": "ok"} else: return {"status": "fail", "errors": v.errors}
def save(): if not request.user.role('admin'): return False data = request.forms v = Validator(data) data['lng_code'] = data['lng_code'].upper() v.field("lng_id").integer(nullable=True) v.field("lng_code").required() v.field("lng_name").required() lang = request.db(Language).get_by_code(data.get("lng_code")) if lang is not None and lang.lng_id != data['lng_id']: v.add_error('lng_name', 'Язык с таким кодом уже существует', 'language.exists') if v.is_valid(): data = v.valid_data lang = request.db(Language).get_by_id(data.get("lng_id")) if lang is None: lang = Language() lang.lng_code = data.get("lng_code") lang.lng_name = data.get("lng_name") request.db.add(lang) request.db.commit() return {"status": "ok", "language": lang.as_dict(translated=True)} else: return {"status": "fail", "errors": v.errors}