|
a/scripts/backup_project.py |
|
b/scripts/backup_project.py |
|
... |
|
... |
4 |
import logging
|
4 |
import logging
|
5 |
|
5 |
|
6 |
from pylons import c
|
6 |
from pylons import c
|
7 |
from bson import BSON
|
7 |
from bson import BSON
|
8 |
|
8 |
|
9 |
from ming.orm import MappedClass, state, mapper
|
9 |
from ming.orm import Mapper, state, mapper
|
10 |
|
10 |
|
11 |
from allura import model as M
|
11 |
from allura import model as M
|
12 |
|
12 |
|
13 |
log = logging.getLogger(__name__)
|
13 |
log = logging.getLogger(__name__)
|
14 |
|
14 |
|
|
... |
|
... |
46 |
_write_bson(fp, state(project).document)
|
46 |
_write_bson(fp, state(project).document)
|
47 |
c.project = project
|
47 |
c.project = project
|
48 |
app_config_ids = [
|
48 |
app_config_ids = [
|
49 |
ac._id for ac in M.AppConfig.query.find(dict(project_id=c.project._id)) ]
|
49 |
ac._id for ac in M.AppConfig.query.find(dict(project_id=c.project._id)) ]
|
50 |
visited_collections = {}
|
50 |
visited_collections = {}
|
51 |
for name, cls in MappedClass._registry.iteritems():
|
51 |
for m in Mapper.all_mappers():
|
|
|
52 |
cls = m.mapped_class
|
52 |
cname = cls.__mongometa__.name
|
53 |
cname = cls.name
|
53 |
sess = cls.__mongometa__.session
|
54 |
sess = m.session
|
54 |
if sess is None:
|
55 |
if sess is None:
|
55 |
log.info('Skipping %s which has no session', cls)
|
56 |
log.info('Skipping %s which has no session', cls)
|
56 |
continue
|
57 |
continue
|
57 |
dbname = sess.impl.db.name
|
58 |
dbname = sess.impl.db.name
|
58 |
fqname = cname + '/' + dbname
|
59 |
fqname = cname + '/' + dbname
|