1 from sqlalchemy
import create_engine
2 from sqlalchemy
.orm
import sessionmaker
4 from mediagoblin
.init
import setup_global_and_app_config
, setup_database
5 from mediagoblin
.db
.util
import ObjectId
7 from mediagoblin
.db
.sql
.models
import (Base
, User
, MediaEntry
, MediaComment
,
10 # Session = sessionmaker()
11 from mediagoblin
.db
.sql
.base
import Session
16 def add_obj_ids(entry
, new_entry
):
18 print "%r -> %r" % (entry
._id
, new_entry
.id)
19 obj_id_table
[entry
._id
] = new_entry
.id
22 def copy_attrs(entry
, new_entry
, attr_list
):
25 setattr(new_entry
, a
, val
)
27 def copy_reference_attr(entry
, new_entry
, ref_attr
):
29 val
= obj_id_table
[val
]
30 setattr(new_entry
, ref_attr
, val
)
33 def convert_users(mk_db
):
36 for entry
in mk_db
.User
.find():
40 copy_attrs(entry
, new_entry
,
41 ('username', 'email', 'created', 'pw_hash', 'email_verified',
42 'status', 'verification_key', 'is_admin', 'url',
44 'fp_verification_key', 'fp_token_expire',))
45 # new_entry.fp_verification_expire = entry.fp_token_expire
47 session
.add(new_entry
)
49 add_obj_ids(entry
, new_entry
)
55 def convert_media_entries(mk_db
):
58 for entry
in mk_db
.MediaEntry
.find():
59 print repr(entry
.title
)
61 new_entry
= MediaEntry()
62 copy_attrs(entry
, new_entry
,
63 ('title', 'slug', 'created',
64 'description', 'description_html',
65 'media_type', 'state',
68 copy_reference_attr(entry
, new_entry
, "uploader")
70 session
.add(new_entry
)
72 add_obj_ids(entry
, new_entry
)
78 def convert_media_tags(mk_db
):
80 session
.autoflush
= False
82 for media
in mk_db
.MediaEntry
.find():
83 print repr(media
.title
)
85 for otag
in media
.tags
:
86 print " ", repr((otag
["slug"], otag
["name"]))
88 nslug
= session
.query(Tag
).filter_by(slug
=otag
["slug"]).first()
89 print " ", repr(nslug
)
91 nslug
= Tag(slug
=otag
["slug"])
94 print " ", repr(nslug
), nslug
.id
98 ntag
.name
= otag
["name"]
99 ntag
.media_entry
= obj_id_table
[media
._id
]
106 def convert_media_comments(mk_db
):
109 for entry
in mk_db
.MediaComment
.find():
110 print repr(entry
.content
)
112 new_entry
= MediaComment()
113 copy_attrs(entry
, new_entry
,
115 'content', 'content_html',))
116 copy_reference_attr(entry
, new_entry
, "media_entry")
117 copy_reference_attr(entry
, new_entry
, "author")
119 session
.add(new_entry
)
121 add_obj_ids(entry
, new_entry
)
128 engine
= create_engine('sqlite:///mediagoblin.db', echo
=True)
129 Session
.configure(bind
=engine
)
131 setup_global_and_app_config("mediagoblin.ini")
133 mk_conn
, mk_db
= setup_database()
135 Base
.metadata
.create_all(engine
)
139 convert_media_entries(mk_db
)
141 convert_media_tags(mk_db
)
143 convert_media_comments(mk_db
)
147 if __name__
== '__main__':