1 from mediagoblin
.init
import setup_global_and_app_config
, setup_database
2 from mediagoblin
.db
.mongo
.util
import ObjectId
4 from mediagoblin
.db
.sql
.models
import (Base
, User
, MediaEntry
, MediaComment
,
5 Tag
, MediaTag
, MediaFile
)
6 from mediagoblin
.db
.sql
.open import setup_connection_and_db_from_config
as \
8 from mediagoblin
.db
.mongo
.open import setup_connection_and_db_from_config
as \
10 from mediagoblin
.db
.sql
.base
import Session
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',
64 'media_type', 'state',
67 copy_reference_attr(entry
, new_entry
, "uploader")
69 session
.add(new_entry
)
71 add_obj_ids(entry
, new_entry
)
73 for key
, value
in entry
.media_files
.iteritems():
74 new_file
= MediaFile(name
=key
, file_path
=value
)
75 new_file
.media_entry
= new_entry
.id
82 def convert_media_tags(mk_db
):
84 session
.autoflush
= False
86 for media
in mk_db
.MediaEntry
.find():
87 print repr(media
.title
)
89 for otag
in media
.tags
:
90 print " ", repr((otag
["slug"], otag
["name"]))
92 nslug
= session
.query(Tag
).filter_by(slug
=otag
["slug"]).first()
93 print " ", repr(nslug
)
95 nslug
= Tag(slug
=otag
["slug"])
98 print " ", repr(nslug
), nslug
.id
102 ntag
.name
= otag
["name"]
103 ntag
.media_entry
= obj_id_table
[media
._id
]
110 def convert_media_comments(mk_db
):
113 for entry
in mk_db
.MediaComment
.find():
114 print repr(entry
.content
)
116 new_entry
= MediaComment()
117 copy_attrs(entry
, new_entry
,
119 'content', 'content_html',))
120 copy_reference_attr(entry
, new_entry
, "media_entry")
121 copy_reference_attr(entry
, new_entry
, "author")
123 session
.add(new_entry
)
125 add_obj_ids(entry
, new_entry
)
132 global_config
, app_config
= setup_global_and_app_config("mediagoblin.ini")
134 sql_conn
, sql_db
= sql_connect({'sql_engine': 'sqlite:///mediagoblin.db'})
136 mk_conn
, mk_db
= mongo_connect(app_config
)
138 Base
.metadata
.create_all(sql_db
.engine
)
142 convert_media_entries(mk_db
)
144 convert_media_tags(mk_db
)
146 convert_media_comments(mk_db
)
150 if __name__
== '__main__':