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()
15 def add_obj_ids(entry
, new_entry
):
17 print "%r -> %r" % (entry
._id
, new_entry
.id)
18 obj_id_table
[entry
._id
] = new_entry
.id
21 def copy_attrs(entry
, new_entry
, attr_list
):
24 setattr(new_entry
, a
, val
)
26 def copy_reference_attr(entry
, new_entry
, ref_attr
):
28 val
= obj_id_table
[val
]
29 setattr(new_entry
, ref_attr
, val
)
32 def convert_users(mk_db
):
35 for entry
in mk_db
.User
.find():
39 copy_attrs(entry
, new_entry
,
40 ('username', 'email', 'created', 'pw_hash', 'email_verified',
41 'status', 'verification_key', 'is_admin', 'url',
43 'fp_verification_key', 'fp_token_expire',))
44 # new_entry.fp_verification_expire = entry.fp_token_expire
46 session
.add(new_entry
)
48 add_obj_ids(entry
, new_entry
)
54 def convert_media_entries(mk_db
):
57 for entry
in mk_db
.MediaEntry
.find():
58 print repr(entry
.title
)
60 new_entry
= MediaEntry()
61 copy_attrs(entry
, new_entry
,
62 ('title', 'slug', 'created',
63 'description', 'description_html',
67 copy_reference_attr(entry
, new_entry
, "uploader")
69 session
.add(new_entry
)
71 add_obj_ids(entry
, new_entry
)
77 def convert_media_tags(mk_db
):
79 session
.autoflush
= False
81 for media
in mk_db
.MediaEntry
.find():
82 print repr(media
.title
)
84 for otag
in media
.tags
:
85 print " ", repr((otag
["slug"], otag
["name"]))
87 nslug
= session
.query(Tag
).filter_by(slug
=otag
["slug"]).first()
88 print " ", repr(nslug
)
90 nslug
= Tag(slug
=otag
["slug"])
93 print " ", repr(nslug
), nslug
.id
97 ntag
.name
= otag
["name"]
98 ntag
.media_entry
= obj_id_table
[media
._id
]
105 def convert_media_comments(mk_db
):
108 for entry
in mk_db
.MediaComment
.find():
109 print repr(entry
.content
)
111 new_entry
= MediaComment()
112 copy_attrs(entry
, new_entry
,
114 'content', 'content_html',))
115 copy_reference_attr(entry
, new_entry
, "media_entry")
116 copy_reference_attr(entry
, new_entry
, "author")
118 session
.add(new_entry
)
120 add_obj_ids(entry
, new_entry
)
127 engine
= create_engine('sqlite:///mediagoblin.db', echo
=True)
128 Session
.configure(bind
=engine
)
130 setup_global_and_app_config("mediagoblin.ini")
132 mk_conn
, mk_db
= setup_database()
134 Base
.metadata
.create_all(engine
)
137 convert_media_entries(mk_db
)
138 convert_media_tags(mk_db
)
139 convert_media_comments(mk_db
)
142 if __name__
== '__main__':