Пример #1
0
def add_rendition():
    item = application.getItemByUUID(request.args(0))
    content = db.plugin_picture_info(item_id=item.unique_id)

    form = SQLFORM(db.plugin_picture_rendition)

    if form.process().accepted:
        r_id = form.vars.id
        rend = db.plugin_picture_rendition(r_id)
        (filename, stream) = db.plugin_picture_rendition.picture.retrieve(
            rend.picture)
        filename = stream.name
        im = Image.open(filename)
        # update rendition with image info
        rend.height = im.height
        rend.width = im.width
        rend.format = im.format
        rend.color = im.mode
        rend.update_record()
        # append this rendition to the item content
        content.renditions.append(r_id)
        content.update_record()
        redirect(application.getItemURL(item.unique_id))

    return locals()
Пример #2
0
def diff():
    item = application.getItemByUUID(request.args(0))
    content = db.plugin_picture_info(item_id=item.unique_id)
    archive = db.plugin_picture_info_archive(request.args(1))

    fields = []
    fields_archived = []
    fields_names = []

    for f in db.plugin_picture_info:
        # if values diff
        if content[f.name] != archive[f.name]:
            fields_names.append(f.name)
            f.comment = None
            fields.append(f)
            db.plugin_picture_info_archive[f.name].comment = None
            fields_archived.append(db.plugin_picture_info_archive[f.name])

    # build two readonly forms
    form_actual = SQLFORM.factory(
        *fields,
        record=content,
        readonly=True,
        showid=False,
        formstyle='divs'
        )
    form_archive = SQLFORM.factory(
        *fields,
        record=archive,
        readonly=True,
        showid=False,
        formstyle='divs')

    return locals()
Пример #3
0
def diff():
    item = application.getItemByUUID(request.args(0))
    content = db.plugin_picture_info(item_id=item.unique_id)
    archive = db.plugin_picture_info_archive(request.args(1))

    fields = []
    fields_archived = []
    fields_names = []

    for f in db.plugin_picture_info:
        # if values diff
        if content[f.name] != archive[f.name]:
            fields_names.append(f.name)
            f.comment = None
            fields.append(f)
            db.plugin_picture_info_archive[f.name].comment = None
            fields_archived.append(db.plugin_picture_info_archive[f.name])

    # build two readonly forms
    form_actual = SQLFORM.factory(
        *fields,
        record=content,
        readonly=True,
        showid=False,
        formstyle='divs'
        )
    form_archive = SQLFORM.factory(
        *fields,
        record=archive,
        readonly=True,
        showid=False,
        formstyle='divs')

    return locals()
Пример #4
0
def index():
    """
    Edit content
    """
    item = application.getItemByUUID(request.args(0))

    db.plugin_picture_info.thumbnail.readable = False
    db.plugin_picture_info.thumbnail.writable = False
    db.plugin_picture_info.renditions.readable = False
    db.plugin_picture_info.renditions.writable = False

    content = db.plugin_picture_info(item_id=item.unique_id)

    form = SQLFORM(
        db.plugin_picture_info,
        record=content,
        showid=False,
        submit_button=T('Save'))

    if form.process().accepted:
        application.notifyChanges(item.unique_id)
        application.indexItem(item.unique_id)
        response.flash = None

    return dict(form=form, item=item, content=content)
Пример #5
0
def add_rendition():
    item = application.getItemByUUID(request.args(0))
    content = db.plugin_picture_info(item_id=item.unique_id)

    form = SQLFORM(db.plugin_picture_rendition)

    if form.process().accepted:
        r_id = form.vars.id
        rend = db.plugin_picture_rendition(r_id)
        (filename,
         stream) = db.plugin_picture_rendition.picture.retrieve(rend.picture)
        filename = stream.name
        im = Image.open(filename)
        # update rendition with image info
        rend.height = im.height
        rend.width = im.width
        rend.format = im.format
        rend.color = im.mode
        rend.update_record()
        # append this rendition to the item content
        content.renditions.append(r_id)
        content.update_record()
        redirect(application.getItemURL(item.unique_id))

    return locals()
Пример #6
0
            def __plugin_picture_item_on_delete(s):
                item = s.select().first()
                if item.item_type == 'picture':
                    # cleanup here
                    cnt = db.plugin_picture_info(item_id=item.unique_id)
                    db(db.plugin_picture_rendition.id.belongs(
                        cnt.renditions)).delete()
                    db(db.plugin_picture_info.item_id ==
                       item.unique_id).delete()

                return False  # remember to procced
Пример #7
0
            def __plugin_picture_item_on_delete(s):
                item = s.select().first()
                if item.item_type == 'picture':
                    # cleanup here
                    cnt = db.plugin_picture_info(item_id=item.unique_id)
                    db(
                        db.plugin_picture_rendition.id.belongs(
                            cnt.renditions)).delete()
                    db(
                        db.plugin_picture_info.item_id == item.unique_id
                    ).delete()

                return False  # remember to procced
Пример #8
0
def delete_rendition():
    item = application.getItemByUUID(request.args(0))
    content = db.plugin_picture_info(item_id=item.unique_id)
    rend = db.plugin_picture_rendition(request.args(1))

    if item and content and rend:
        # remove rendition
        # update content.renditions
        # update content db record
        r_id = rend.id
        del db.plugin_picture_rendition[r_id]
        content.renditions.remove(r_id)
        content.update_record()

    return CAT('')
Пример #9
0
def delete_rendition():
    item = application.getItemByUUID(request.args(0))
    content = db.plugin_picture_info(item_id=item.unique_id)
    rend = db.plugin_picture_rendition(request.args(1))

    if item and content and rend:
        # remove rendition
        # update content.renditions
        # update content db record
        r_id = rend.id
        del db.plugin_picture_rendition[r_id]
        content.renditions.remove(r_id)
        content.update_record()

    return CAT('')
Пример #10
0
def changelog():
    item = application.getItemByUUID(request.args(0))
    pic_info = db.plugin_picture_info(item_id=item.unique_id)

    query = (db.plugin_picture_info_archive.current_record == pic_info.id)
    db.plugin_picture_info_archive.modified_on.label = T('Date & Time')
    db.plugin_picture_info_archive.modified_on.readable = True
    db.plugin_picture_info_archive.modified_by.label = T('User')
    db.plugin_picture_info_archive.modified_by.readable = True
    fields = [
        db.plugin_picture_info_archive.modified_on,
        db.plugin_picture_info_archive.modified_by
    ]

    def gen_links(row):
        diff = A(
            SPAN(_class="glyphicon glyphicon-random"),
            _href=URL('diff', args=[item.unique_id, row.id]),
            _class="btn btn-default",
            _title=T("Differences"),
        )

        return CAT(diff)

    links = [dict(header='', body=gen_links)]

    changes = SQLFORM.grid(
        query,
        orderby=[~db.plugin_picture_info_archive.modified_on],
        fields=fields,
        args=request.args[:1],
        create=False,
        editable=False,
        details=False,
        deletable=False,
        searchable=False,
        csv=False,
        links=links,
    )

    return locals()
Пример #11
0
def changelog():
    item = application.getItemByUUID(request.args(0))
    pic_info = db.plugin_picture_info(item_id=item.unique_id)

    query = (db.plugin_picture_info_archive.current_record == pic_info.id)
    db.plugin_picture_info_archive.modified_on.label = T('Date & Time')
    db.plugin_picture_info_archive.modified_on.readable = True
    db.plugin_picture_info_archive.modified_by.label = T('User')
    db.plugin_picture_info_archive.modified_by.readable = True
    fields = [
        db.plugin_picture_info_archive.modified_on,
        db.plugin_picture_info_archive.modified_by
    ]

    def gen_links(row):
        diff = A(
            SPAN(_class="glyphicon glyphicon-random"),
            _href=URL(
                'diff',
                args=[item.unique_id, row.id]),
            _class="btn btn-default",
            _title=T("Differences"),
        )

        return CAT(diff)

    links = [dict(header='', body=gen_links)]

    changes = SQLFORM.grid(
        query,
        orderby=[~db.plugin_picture_info_archive.modified_on],
        fields=fields,
        args=request.args[:1],
        create=False, editable=False, details=False, deletable=False,
        searchable=False,
        csv=False,
        links=links,
    )

    return locals()
Пример #12
0
def add_rendition():
    item = application.getItemByUUID(request.args(0))
    content = db.plugin_picture_info(item_id=item.unique_id)
    db.plugin_picture_rendition.thumbnail.writable = False
    db.plugin_picture_rendition.thumbnail.readable = False

    form = SQLFORM(db.plugin_picture_rendition)

    if form.process().accepted:
        r_id = form.vars.id
        rend = db.plugin_picture_rendition(r_id)
        (filename, stream) = db.plugin_picture_rendition.picture.retrieve(
            rend.picture)
        filename = stream.name
        im = Image.open(filename)
        # update rendition with image info
        rend.width, rend.height = im.size
        rend.format = im.format
        rend.color = im.mode
        rend.update_record()
        # --------------------------------
        size = (700, 700)
        im.thumbnail(size)
        fl = NamedTemporaryFile(suffix=".jpg", delete=True)
        fl.close()
        im.save(fl.name, "JPEG")
        store_tumb = db.plugin_picture_rendition.thumbnail.store(
            open(fl.name, 'rb'), fl.name)
        os.unlink(fl.name)  # cleanup
        rend.update_record(
            thumbnail=store_tumb
        )
        # append this rendition to the item content
        content.renditions.append(r_id)
        content.update_record()
        redirect(application.getItemURL(item.unique_id))

    return locals()
Пример #13
0
def index():
    """
    Edit content
    """
    item = application.getItemByUUID(request.args(0))

    db.plugin_picture_info.renditions.readable = False
    db.plugin_picture_info.renditions.writable = False

    content = db.plugin_picture_info(item_id=item.unique_id)

    form = SQLFORM(
        db.plugin_picture_info,
        record=content,
        showid=False,
        submit_button=T('Save'))

    if form.process().accepted:
        application.notifyChanges(item.unique_id)
        application.indexItem(item.unique_id)
        response.flash = None

    return dict(form=form, item=item, content=content)