django data dumper (the default python manage.py datadumper
is not working for no reason)
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
#
# Author: Rex Zhang
# Create Time: 2012-11-13 10:14
# File name: datadumper.py
import sys, os
import re
import imp
import logging
import json
PROJECTROOT = os.path.expanduser('~/git/charts')
PROJECTNAME = 'charts'
sys.path.append(PROJECTROOT)
os.environ["DJANGO_SETTINGS_MODULE"] = '%s.settings' % (PROJECTNAME)
from django.core import serializers
from django.conf import settings
from django.utils.importlib import import_module
format = 'json'
indent = 4
class Dumper(object):
def __init__(self):
self.models = []
self.init_models()
def init_models(self):
apps = [a for a in settings.INSTALLED_APPS if 'django' not in a]
for a in apps:
try:
app_path = import_module(a).__path__
except AttributeError:
continue
try:
imp.find_module('models', app_path)
except ImportError as e:
print 'import error', e
continue
m = '%s.models' % a
m = import_module(m)
self.models.append(m)
def get(self, model):
try:
return [getattr(m, model) for m in self.models if hasattr(m, model)][0]
except Exception as e:
logging.error(e)
def to_json(self, model):
data = serializers.serialize(format, model.objects.all())
return data
dumper = Dumper()
model = dumper.get(sys.argv[1])
data = dumper.to_json(model)
print json.dumps(json.loads(data), indent=indent)