Beispiel #1
0
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}
Beispiel #2
0
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}
Beispiel #3
0
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}
Beispiel #4
0
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}