Exemplo n.º 1
0
def upgrade():
    from depot.manager import DepotManager
    from depot.fields.upload import UploadedFile
    from depot.fields.sqlalchemy import UploadedFileField

    from kotti import DBSession, metadata
    from kotti.resources import File

    t = sa.Table('files', metadata)
    t.c.data.type = sa.LargeBinary()
    dn = DepotManager.get_default()

    update = t.update()
    conn = DBSession.connection()

    for obj in DBSession.query(File):
        uploaded_file = UploadedFile({'depot_name': dn, 'files': []})
        uploaded_file._thaw()
        uploaded_file.process_content(obj.data,
                                      filename=obj.filename,
                                      content_type=obj.mimetype)
        stored_file = DepotManager.get().get(uploaded_file['file_id'])
        stmt = update.where(t.c.id == obj.id).values(
            data=uploaded_file.encode())
        res = conn.execute(stmt)
        assert res.rowcount == 1
        stored_file.last_modified = obj.modification_date

        log.info("Migrated {} bytes for File with pk {} to {}/{}".format(
            len(obj.data), obj.id, dn, uploaded_file['file_id']))

    DBSession.flush()
    if DBSession.get_bind().name != 'sqlite':  # not supported by sqlite
        op.alter_column('files', 'data', type_=UploadedFileField())
Exemplo n.º 2
0
def upgrade():
    sa.orm.events.MapperEvents._clear()  # avoids filedepot magic

    from depot.manager import DepotManager
    from depot.fields.upload import UploadedFile
    from depot.fields.sqlalchemy import UploadedFileField

    from kotti import DBSession, metadata
    from kotti.resources import File

    t = sa.Table("files", metadata)
    t.c.data.type = sa.LargeBinary()
    dn = DepotManager.get_default()

    for obj in DBSession.query(File):
        uploaded_file = UploadedFile({"depot_name": dn, "files": []})
        uploaded_file._thaw()
        uploaded_file.process_content(obj.data, filename=obj.filename, content_type=obj.mimetype)
        stored_file = DepotManager.get().get(uploaded_file["file_id"])
        obj.data = uploaded_file.encode()
        stored_file.last_modified = obj.modification_date

        log.info(
            "Migrated {} bytes for File with pk {} to {}/{}".format(len(obj.data), obj.id, dn, uploaded_file["file_id"])
        )

    DBSession.flush()
    if DBSession.get_bind().name != "sqlite":  # not supported by sqlite
        op.alter_column("files", "data", type_=UploadedFileField())
def upgrade():
    from depot.manager import DepotManager
    from depot.fields.upload import UploadedFile
    from depot.fields.sqlalchemy import UploadedFileField

    from kotti import DBSession, metadata
    from kotti.resources import File

    t = sa.Table('files', metadata)
    t.c.data.type = sa.LargeBinary()
    dn = DepotManager.get_default()

    update = t.update()
    conn = DBSession.connection()

    for obj in DBSession.query(File):
        uploaded_file = UploadedFile({'depot_name': dn, 'files': []})
        uploaded_file._thaw()
        uploaded_file.process_content(
            obj.data, filename=obj.filename, content_type=obj.mimetype)
        stored_file = DepotManager.get().get(uploaded_file['file_id'])
        stmt = update.where(
            t.c.id == obj.id).values(data=uploaded_file.encode())
        res = conn.execute(stmt)
        assert res.rowcount == 1
        stored_file.last_modified = obj.modification_date

        log.info("Migrated {} bytes for File with pk {} to {}/{}".format(
            len(obj.data), obj.id, dn, uploaded_file['file_id']))

    DBSession.flush()
    if DBSession.get_bind().name != 'sqlite':   # not supported by sqlite
        op.alter_column('files', 'data', type_=UploadedFileField())
Exemplo n.º 4
0
 def process(thing):
     id, data, filename, mimetype = thing
     uploaded_file = UploadedFile({'depot_name': dn, 'files': []})
     uploaded_file._thaw()
     uploaded_file.process_content(
         data, filename=filename, content_type=mimetype)
     _saved.append({'nodeid': id, 'data': uploaded_file.encode()})
     log.info("Saved data for node id {}".format(id))
 def process(thing, store):
     id, data, filename, mimetype = thing
     logger.debug("Handling file with id %s" % id)
     uploaded_file = UploadedFile({"depot_name": "local", "files": []})
     uploaded_file._thaw()
     uploaded_file.process_content(data, filename=filename, content_type=mimetype)
     store.append({"nodeid": thing.id, "depot_datas": uploaded_file.encode()})
     logger.info("Saved data for node id {}".format(id))
Exemplo n.º 6
0
 def process(thing):
     id, data, filename, mimetype = thing
     uploaded_file = UploadedFile({'depot_name': dn, 'files': []})
     # noinspection PyProtectedMember
     uploaded_file._thaw()
     uploaded_file.process_content(
         data, filename=filename, content_type=mimetype)
     _saved.append({'nodeid': id, 'data': uploaded_file.encode()})
     log.info(f"Saved data for node id {id}")
 def process(thing, store):
     id, data, filename, mimetype = thing
     logger.debug("Handling file with id %s" % id)
     uploaded_file = UploadedFile({'depot_name': "local", 'files': []})
     uploaded_file._thaw()
     uploaded_file.process_content(data,
                                   filename=filename,
                                   content_type=mimetype)
     store.append({
         'nodeid': thing.id,
         'depot_datas': uploaded_file.encode(),
     })
     logger.info("Saved data for node id {}".format(id))