|
|
|
@ -0,0 +1,54 @@ |
|
|
|
#!/usr/bin/env python |
|
|
|
import os |
|
|
|
from json import dump |
|
|
|
from django import setup |
|
|
|
|
|
|
|
|
|
|
|
class BatchSaveStreamList(list): |
|
|
|
def __init__(self, model_class, model_name, *args, **kwargs): |
|
|
|
super().__init__(*args, **kwargs) |
|
|
|
self._model_class = model_class |
|
|
|
self._model_name = model_name |
|
|
|
|
|
|
|
def __iter__(self): |
|
|
|
def fields(obj): |
|
|
|
return {ob.name: getattr(obj, ob.name) or None for ob in obj._meta.concrete_fields if ob.name != 'id'} |
|
|
|
|
|
|
|
for d in self._model_class.objects.all().iterator(): |
|
|
|
yield { |
|
|
|
"model": self._model_name, |
|
|
|
"pk": d.pk, |
|
|
|
"fields": fields(d) |
|
|
|
} |
|
|
|
|
|
|
|
def __len__(self): |
|
|
|
return 1 |
|
|
|
|
|
|
|
|
|
|
|
def batch_save(fname, model_class, model_name): |
|
|
|
sa = BatchSaveStreamList( |
|
|
|
model_class=model_class, |
|
|
|
model_name=model_name |
|
|
|
) |
|
|
|
with open(fname, 'w') as f: |
|
|
|
dump(sa, f, ensure_ascii=False, indent=2) |
|
|
|
|
|
|
|
|
|
|
|
# --------------------- |
|
|
|
|
|
|
|
|
|
|
|
def dump_groups(): |
|
|
|
from group_app.models import Group |
|
|
|
batch_save("groups.json", Group, 'groupapp.group') |
|
|
|
|
|
|
|
|
|
|
|
def dump_accounts(): |
|
|
|
from accounts_app.models import UserProfile, BaseAccount |
|
|
|
batch_save('accounts_baseaccount.json', BaseAccount, 'profiles.baseaccount') |
|
|
|
batch_save('accounts_userprofile.json', UserProfile, 'profiles.userprofile') |
|
|
|
|
|
|
|
|
|
|
|
if __name__ == '__main__': |
|
|
|
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'djing.settings') |
|
|
|
setup() |
|
|
|
dump_groups() |