Example #1
0
def convert_media_entries(mk_db):
    session = Session()

    for entry in mk_db.MediaEntry.find().sort('created'):
        print repr(entry.title)

        new_entry = MediaEntry()
        copy_attrs(entry, new_entry,
            ('title', 'slug', 'created',
             'description',
             'media_type', 'state', 'license',
             'fail_error', 'fail_metadata',
             'queued_task_id',))
        copy_reference_attr(entry, new_entry, "uploader")

        session.add(new_entry)
        session.flush()
        add_obj_ids(entry, new_entry)

        for key, value in entry.media_files.iteritems():
            new_file = MediaFile(name=key, file_path=value)
            new_file.media_entry = new_entry.id
            Session.add(new_file)

        for attachment in entry.attachment_files:
            new_attach = MediaAttachmentFile(
                name=attachment["name"],
                filepath=attachment["filepath"],
                created=attachment["created"]
                )
            new_attach.media_entry = new_entry.id
            Session.add(new_attach)

    session.commit()
    session.close()
Example #2
0
def cleanup_sql_tables(sql_db):
    for mt, table_list in media_types_tables:
        session = Session()

        count = session.query(MediaEntry.media_type). \
            filter_by(media_type=unicode(mt)).count()
        print "  %s: %d entries" % (mt, count)

        if count == 0:
            print "\tAnalyzing tables"
            for tab in table_list:
                cnt2 = session.query(tab).count()
                print "\t  %s: %d entries" % (tab.__tablename__, cnt2)
                assert cnt2 == 0

            print "\tRemoving migration info"
            mi = session.query(MigrationData).filter_by(name=unicode(mt)).one()
            session.delete(mi)
            session.commit()
            session.close()

            print "\tDropping tables"
            tables = [model.__table__ for model in table_list]
            Base_v0.metadata.drop_all(sql_db.engine, tables=tables)

        session.close()
Example #3
0
def convert_media_tags(mk_db):
    session = Session()
    session.autoflush = False

    for media in mk_db.MediaEntry.find().sort('created'):
        print repr(media.title)

        for otag in media.tags:
            print "  ", repr((otag["slug"], otag["name"]))

            nslug = session.query(Tag).filter_by(slug=otag["slug"]).first()
            print "     ", repr(nslug)
            if nslug is None:
                nslug = Tag(slug=otag["slug"])
                session.add(nslug)
                session.flush()
            print "     ", repr(nslug), nslug.id

            ntag = MediaTag()
            ntag.tag = nslug.id
            ntag.name = otag["name"]
            ntag.media_entry = obj_id_table[media._id]
            session.add(ntag)

    session.commit()
    session.close()
Example #4
0
def clean_orphan_tags(commit=True):
    """Search for unused MediaTags and delete them"""
    q1 = Session.query(Tag).outerjoin(MediaTag).filter(MediaTag.id==None)
    for t in q1:
        Session.delete(t)
    # The "let the db do all the work" version:
    # q1 = Session.query(Tag.id).outerjoin(MediaTag).filter(MediaTag.id==None)
    # q2 = Session.query(Tag).filter(Tag.id.in_(q1))
    # q2.delete(synchronize_session = False)
    if commit:
        Session.commit()
Example #5
0
def clean_orphan_tags():
    q1 = Session.query(Tag).outerjoin(MediaTag).filter(MediaTag.id==None)
    for t in q1:
        Session.delete(t)

    # The "let the db do all the work" version:
    # q1 = Session.query(Tag.id).outerjoin(MediaTag).filter(MediaTag.id==None)
    # q2 = Session.query(Tag).filter(Tag.id.in_(q1))
    # q2.delete(synchronize_session = False)

    Session.commit()
Example #6
0
def convert_add_migration_versions(dummy_sql_db):
    session = Session()

    for name in chain(("__main__",),
                      imap(lambda e: e[0], media_types_tables)):
        print "\tAdding %s" % (name,)
        m = MigrationData(name=unicode(name), version=0)
        session.add(m)

    session.commit()
    session.close()
Example #7
0
def convert_video(mk_db):
    session = Session()

    for media in mk_db.MediaEntry.find(
            {'media_type': 'mediagoblin.media_types.video'}).sort('created'):
        media_data_row = VideoData(**media.media_data)
        media_data_row.media_entry = obj_id_table[media['_id']]
        session.add(media_data_row)

    session.commit()
    session.close()
Example #8
0
def convert_image(mk_db):
    session = Session()

    for media in mk_db.MediaEntry.find(
            {'media_type': 'mediagoblin.media_types.image'}).sort('created'):
        media_data = copy(media.media_data)

        if len(media_data):
            media_data_row = ImageData(**media_data)
            media_data_row.media_entry = obj_id_table[media['_id']]
            session.add(media_data_row)

    session.commit()
    session.close()
Example #9
0
def convert_users(mk_db):
    session = Session()

    for entry in mk_db.User.find().sort('created'):
        print entry.username

        new_entry = User()
        copy_attrs(entry, new_entry,
            ('username', 'email', 'created', 'pw_hash', 'email_verified',
             'status', 'verification_key', 'is_admin', 'url',
             'bio',
             'fp_verification_key', 'fp_token_expire',))
        # new_entry.fp_verification_expire = entry.fp_token_expire

        session.add(new_entry)
        session.flush()
        add_obj_ids(entry, new_entry)

    session.commit()
    session.close()
Example #10
0
def convert_media_comments(mk_db):
    session = Session()

    for entry in mk_db.MediaComment.find().sort('created'):
        print repr(entry.content)

        new_entry = MediaComment()
        copy_attrs(entry, new_entry,
            ('created',
             'content',))

        try:
            copy_reference_attr(entry, new_entry, "media_entry")
            copy_reference_attr(entry, new_entry, "author")
        except KeyError as e:
            print('KeyError in convert_media_comments(): {0}'.format(e))
        else:
            session.add(new_entry)
            session.flush()
            add_obj_ids(entry, new_entry)

    session.commit()
    session.close()
Example #11
0
def atomic_update(table, query_dict, update_values):
    table.find(query_dict).update(update_values,
    	synchronize_session=False)
    Session.commit()
Example #12
0
 def commit(self):
     Session.commit()