예제 #1
0
파일: admin.py 프로젝트: s-tar/kate
def save_object():
    if not request.user.role('admin'): return False
    data = request.forms
    photos = request.files.getall('file')

    v = Validator(data)

    v.fields("file.id").integer(nullable=True)
    v.fields("file.visible").boolean()
    v.fields("file.order").integer()

    if v.is_valid():
        data = v.valid_data
        about = request.db(Content).get_by_alias('about')
        if not about:
            about = Content()
            about.con_alias = 'about'
            about.con_name = 'about'

        about.con_text = data.get("text")

        request.db.add(about)
        request.db.commit()

        action = data.getall('file.action')
        visible = data.getall('file.visible')
        order = data.getall('file.order')

        for i, id in enumerate(data.getall('file.id')):
            if action[i]:
                if action[i] == 'new':
                    file = request.db(File).create('photo.jpg', module=module.name, entity=about)
                    file.create_dir()
                    file.update_uniq_id()
                    photo = photos.pop(0)
                    image_resize(photo).convert('RGB').save(file.get_fullpath())
                else:
                    file = request.db(File).get_by_id(id)
                file.visible = visible[i]
                file.order = order[i]
                if action[i] == 'delete':
                    file.remove_files()
                    request.db.delete(file)
                else:
                    request.db.add(file)

        request.db.commit()
        return {"status": "ok",
                "reload": 'true'}
    else:
        return {"status": "fail",
                "errors": v.errors}
예제 #2
0
파일: admin.py 프로젝트: s-tar/kate
def save_object():
    if not request.user.role("admin"):
        return False
    data = request.forms
    data["image"] = request.files.get("image")
    v = Validator(data)
    v.field("image").image()
    img = data.get("image")

    if v.is_valid() and img is not None:
        path = os.path.abspath(files_dir + "/upload/")
        image_name = "image." + str(uuid.uuid4()) + ".png"
        if not os.path.exists(path):
            os.makedirs(path)

        image_path = os.path.join(path, image_name)

        image = image_resize(img)
        image.save(image_path)

        return {"status": "ok", "url": "/file/upload/" + image_name, "width": image.size[0], "height": image.size[1]}
    else:
        return {"status": "fail", "errors": v.errors}