6 changed files with 102 additions and 247 deletions
-
59abonapp/models.py
-
28abonapp/views.py
-
5agent/commands/dhcp.py
-
82clientsideapp/locale/ru/LC_MESSAGES/django.po
-
11clientsideapp/views.py
-
136migrate_to_0.2.py
@ -1,136 +0,0 @@ |
|||
#!/usr/bin/env python3 |
|||
# -*- coding: utf-8 -*- |
|||
import os |
|||
from json import dump |
|||
import django |
|||
|
|||
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "djing.settings") |
|||
django.setup() |
|||
from django.db.models import fields as django_fields |
|||
|
|||
|
|||
def get_fixture_from_unchanget_model(model_name: str, model_class): |
|||
""" |
|||
Создаёт фикстуру если модели между версиями не изменились |
|||
:param model_name: str 'app_label.model_name' |
|||
:param model_class: Model модель для которой надо сделать фикстуру |
|||
:return: список словарей |
|||
""" |
|||
print(model_name) |
|||
|
|||
def get_fields(obj): |
|||
fields = dict() |
|||
for field in obj._meta.get_fields(): |
|||
if isinstance(field, django_fields.reverse_related.ManyToOneRel) or \ |
|||
isinstance(field, django_fields.reverse_related.ManyToManyRel): |
|||
continue |
|||
field_val = getattr(obj, field.name) |
|||
if field_val is None: |
|||
continue |
|||
if isinstance(field, django_fields.related.ManyToManyField): |
|||
fields[field.name] = [f.pk for f in field_val.all()] |
|||
elif isinstance(field, django_fields.related.ForeignKey): |
|||
fields[field.name] = field_val.pk |
|||
elif isinstance(field, django_fields.FloatField): |
|||
fields[field.name] = float(field_val) |
|||
elif isinstance(field, django_fields.DateTimeField): |
|||
fields[field.name] = str(field_val) |
|||
elif isinstance(field, django_fields.AutoField): |
|||
continue |
|||
else: |
|||
fields[field.name] = field_val |
|||
return fields |
|||
res = [{ |
|||
'model': model_name, |
|||
'pk': obj.pk, |
|||
'fields': get_fields(obj) |
|||
} for obj in model_class.objects.all()] |
|||
return res |
|||
|
|||
|
|||
def dump_abonapp(): |
|||
from abonapp import models |
|||
res = [{ |
|||
'model': 'group_app.group', |
|||
'pk': abon_group.pk, |
|||
'fields': { |
|||
'title': abon_group.title |
|||
} |
|||
} for abon_group in models.AbonGroup.objects.all()] |
|||
|
|||
#res += get_fixture_from_unchanget_model('abonapp.abonlog', models.AbonLog) |
|||
|
|||
res += get_fixture_from_unchanget_model('abonapp.abontariff', models.AbonTariff) |
|||
|
|||
res += get_fixture_from_unchanget_model('abonapp.abonstreet', models.AbonStreet) |
|||
|
|||
res += get_fixture_from_unchanget_model('abonapp.extrafieldsmodel', models.ExtraFieldsModel) |
|||
|
|||
res += get_fixture_from_unchanget_model('abonapp.abon', models.Abon) |
|||
'''res += [{ |
|||
'model': 'abonapp.abon', |
|||
'pk': ab.pk, |
|||
'fields': { |
|||
'current_tariff': ab.current_tariff.pk, |
|||
'group': ab.group.pk, |
|||
'ballance': ab.ballance, |
|||
'ip_address': ab.ip_address, |
|||
'description': ab.description, |
|||
'street': ab.street, |
|||
'house': ab.house, |
|||
'extra_fields': [pid.pk for pid in ab.extra_fields.all()], |
|||
'device': ab.device.pk, |
|||
'dev_port': ab.dev_port.pk, |
|||
'is_dynamic_ip': ab.is_dynamic_ip |
|||
} |
|||
} for ab in models.Abon.objects.all()]''' |
|||
|
|||
res += get_fixture_from_unchanget_model('abonapp.passportinfo', models.PassportInfo) |
|||
|
|||
res += get_fixture_from_unchanget_model('abonapp.invoiceforpayment', models.InvoiceForPayment) |
|||
|
|||
res += get_fixture_from_unchanget_model('abonapp.alltimepaylog', models.AllTimePayLog) |
|||
|
|||
res += get_fixture_from_unchanget_model('abonapp.abonrawpassword', models.AbonRawPassword) |
|||
|
|||
res += get_fixture_from_unchanget_model('abonapp.additionaltelephone', models.AdditionalTelephone) |
|||
|
|||
res += get_fixture_from_unchanget_model('abonapp.periodicpayforid', models.PeriodicPayForId) |
|||
|
|||
return res |
|||
|
|||
|
|||
def dump_tariffs(): |
|||
from tariff_app import models |
|||
res = get_fixture_from_unchanget_model('tariff_app.Tariff', models.Tariff) |
|||
|
|||
res += get_fixture_from_unchanget_model('tariff_app.periodicpay', models.PeriodicPay) |
|||
|
|||
return res |
|||
|
|||
|
|||
def dump_devs(): |
|||
pass |
|||
#from devapp import models |
|||
|
|||
|
|||
|
|||
def make_migration(): |
|||
from datetime import datetime |
|||
from datetime import date |
|||
|
|||
def my_date_converter(o): |
|||
if isinstance(o, datetime) or isinstance(o, date): |
|||
return "%s" % o |
|||
|
|||
def appdump(fname, func): |
|||
with open(fname, 'w') as f: |
|||
dump(func(), f, default=my_date_converter, ensure_ascii=False) |
|||
|
|||
appdump('abon_fixture.json', dump_abonapp) |
|||
appdump('tariffs_fixture.json', dump_tariffs) |
|||
|
|||
|
|||
|
|||
if __name__ == '__main__': |
|||
make_migration() |
|||
Write
Preview
Loading…
Cancel
Save
Reference in new issue