| 1 |
#!/usr/bin/env python |
|---|
| 2 |
|
|---|
| 3 |
import optparse |
|---|
| 4 |
import simplejson |
|---|
| 5 |
|
|---|
| 6 |
class DumpData(object): |
|---|
| 7 |
|
|---|
| 8 |
def __init__(self, domainRegistry): |
|---|
| 9 |
self.assertIsDomainRegistry(domainRegistry) |
|---|
| 10 |
self.domainRegistry = domainRegistry |
|---|
| 11 |
self.jsonDataDump = '' |
|---|
| 12 |
self.dataDump = None |
|---|
| 13 |
|
|---|
| 14 |
def assertIsDomainRegistry(self, domainRegistry): |
|---|
| 15 |
if not hasattr(domainRegistry, 'getDomainClassRegister'): |
|---|
| 16 |
msg = "Domain registry has no 'getDomainClassRegister()' method." |
|---|
| 17 |
raise Exception(msg) |
|---|
| 18 |
|
|---|
| 19 |
def dumpData(self): |
|---|
| 20 |
self.dataDump = {} |
|---|
| 21 |
domainClassRegister = application.registry.getDomainClassRegister() |
|---|
| 22 |
for className in domainClassRegister.keys(): |
|---|
| 23 |
classData = {} |
|---|
| 24 |
domainClass = application.registry.getDomainClass(className) |
|---|
| 25 |
# Dumping class meta data |
|---|
| 26 |
metaClassData = {} |
|---|
| 27 |
for attr in domainClass.meta.attributes: |
|---|
| 28 |
metaClassData[attr.name] = attr.typeName |
|---|
| 29 |
classData['metaData'] = metaClassData |
|---|
| 30 |
# Dumping class register objects |
|---|
| 31 |
domainRegister = domainClass.createRegister() |
|---|
| 32 |
for domainObject in domainRegister: |
|---|
| 33 |
domainObjectData = domainObject.asDictValues() |
|---|
| 34 |
# Dumping object data |
|---|
| 35 |
classData[domainObject.id] = domainObjectData |
|---|
| 36 |
self.dataDump[className] = classData |
|---|
| 37 |
|
|---|
| 38 |
def dumpJsonData(self): |
|---|
| 39 |
self.dumpData() |
|---|
| 40 |
self.jsonDataDump = simplejson.dumps(self.dataDump) |
|---|
| 41 |
|
|---|
| 42 |
def printData(self): |
|---|
| 43 |
self.dumpJsonData() |
|---|
| 44 |
print self.jsonDataDump |
|---|
| 45 |
|
|---|
| 46 |
class SystemNameError(Exception): pass |
|---|
| 47 |
|
|---|
| 48 |
if __name__ == '__main__': |
|---|
| 49 |
optionParser = optparse.OptionParser() |
|---|
| 50 |
optionParser.add_option( |
|---|
| 51 |
'-s', '--system', |
|---|
| 52 |
dest='system', |
|---|
| 53 |
default='', |
|---|
| 54 |
help='A name of a system' |
|---|
| 55 |
) |
|---|
| 56 |
(options, args) = optionParser.parse_args() |
|---|
| 57 |
systemName = options.system |
|---|
| 58 |
if not systemName: |
|---|
| 59 |
raise SystemNameError(systemName) |
|---|
| 60 |
else: |
|---|
| 61 |
print "Importing %s.soleInstance" % systemName |
|---|
| 62 |
soleInstance = __import__(systemName+'.soleInstance','','','*') |
|---|
| 63 |
from soleInstance import application |
|---|
| 64 |
dataDumper = DumpData(application.registry) |
|---|
| 65 |
dataDumper.printData() |
|---|
| 66 |
|
|---|