Enable new serializer for the bootstrap app, add per fixture type empyt checking, model fixture processing and final fixture processing
This commit is contained in:
@@ -7,7 +7,7 @@ from django.core import serializers
|
|||||||
from django.utils.datastructures import SortedDict
|
from django.utils.datastructures import SortedDict
|
||||||
|
|
||||||
from .exceptions import ExistingData
|
from .exceptions import ExistingData
|
||||||
from .literals import FIXTURE_TYPE_PK_NULLIFIER
|
from .literals import FIXTURE_TYPE_PK_NULLIFIER, FIXTURE_TYPE_MODEL_PROCESS
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -70,4 +70,6 @@ class BootstrapModel(object):
|
|||||||
if self.sanitize:
|
if self.sanitize:
|
||||||
# Remove primary key values
|
# Remove primary key values
|
||||||
result = FIXTURE_TYPE_PK_NULLIFIER[serialization_format](result)
|
result = FIXTURE_TYPE_PK_NULLIFIER[serialization_format](result)
|
||||||
|
# Do any clean up required on the fixture
|
||||||
|
result = FIXTURE_TYPE_MODEL_PROCESS[serialization_format](result)
|
||||||
return result
|
return result
|
||||||
|
|||||||
@@ -12,11 +12,11 @@ from django.utils.translation import ugettext_lazy as _
|
|||||||
|
|
||||||
FIXTURE_TYPE_JSON = 'json'
|
FIXTURE_TYPE_JSON = 'json'
|
||||||
FIXTURE_TYPE_YAML = 'yaml'
|
FIXTURE_TYPE_YAML = 'yaml'
|
||||||
|
FIXTURE_TYPE_BETTER_YAML = 'better_yaml'
|
||||||
FIXTURE_TYPE_XML = 'xml'
|
FIXTURE_TYPE_XML = 'xml'
|
||||||
|
|
||||||
FIXTURE_TYPES_CHOICES = (
|
FIXTURE_TYPES_CHOICES = (
|
||||||
(FIXTURE_TYPE_JSON, _(u'JSON')),
|
(FIXTURE_TYPE_JSON, _(u'JSON')),
|
||||||
#(FIXTURE_TYPE_YAML, _(u'YAML')),
|
|
||||||
# Disabing XML until a way to specify a null pk is found
|
# Disabing XML until a way to specify a null pk is found
|
||||||
#(FIXTURE_TYPE_XML, _(u'XML')),
|
#(FIXTURE_TYPE_XML, _(u'XML')),
|
||||||
)
|
)
|
||||||
@@ -24,16 +24,40 @@ FIXTURE_TYPES_CHOICES = (
|
|||||||
FIXTURE_FILE_TYPE = {
|
FIXTURE_FILE_TYPE = {
|
||||||
FIXTURE_TYPE_JSON: 'json',
|
FIXTURE_TYPE_JSON: 'json',
|
||||||
FIXTURE_TYPE_YAML: 'yaml',
|
FIXTURE_TYPE_YAML: 'yaml',
|
||||||
|
FIXTURE_TYPE_BETTER_YAML: 'better_yaml',
|
||||||
FIXTURE_TYPE_XML: 'xml',
|
FIXTURE_TYPE_XML: 'xml',
|
||||||
}
|
}
|
||||||
|
|
||||||
FIXTURE_TYPE_PK_NULLIFIER = {
|
FIXTURE_TYPE_PK_NULLIFIER = {
|
||||||
FIXTURE_TYPE_JSON: lambda x: re.sub('"pk": [0-9]{1,5}', '"pk": null', x),
|
FIXTURE_TYPE_JSON: lambda x: re.sub('"pk": [0-9]{1,5}', '"pk": null', x),
|
||||||
FIXTURE_TYPE_YAML: lambda x: re.sub('pk: [0-9]{1,5}', 'pk: null', x),
|
FIXTURE_TYPE_YAML: lambda x: re.sub('pk: [0-9]{1,5}', 'pk: null', x),
|
||||||
|
FIXTURE_TYPE_BETTER_YAML: lambda x: re.sub('pk: [0-9]{1,5}', 'pk: null', x),
|
||||||
FIXTURE_TYPE_XML: lambda x: re.sub('pk="[0-9]{1,5}"', 'pk=null', x),
|
FIXTURE_TYPE_XML: lambda x: re.sub('pk="[0-9]{1,5}"', 'pk=null', x),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FIXTURE_TYPE_EMPTY_FIXTURE = {
|
||||||
|
FIXTURE_TYPE_JSON: lambda x: '[]' in x or x == ',',
|
||||||
|
FIXTURE_TYPE_YAML: lambda x: '[]' in x,
|
||||||
|
FIXTURE_TYPE_BETTER_YAML: lambda x: '{}' in x,
|
||||||
|
FIXTURE_TYPE_XML: lambda x: x,
|
||||||
|
}
|
||||||
|
|
||||||
|
FIXTURE_TYPE_MODEL_PROCESS = {
|
||||||
|
FIXTURE_TYPE_JSON: lambda x: '%s,' % x[2:-2],
|
||||||
|
FIXTURE_TYPE_YAML: lambda x: x,
|
||||||
|
FIXTURE_TYPE_BETTER_YAML: lambda x: x,
|
||||||
|
FIXTURE_TYPE_XML: lambda x: x,
|
||||||
|
}
|
||||||
|
|
||||||
|
FIXTURE_TYPE_FIXTURE_PROCESS = {
|
||||||
|
FIXTURE_TYPE_JSON: lambda x: '[\n%s\n]' % x,
|
||||||
|
FIXTURE_TYPE_YAML: lambda x: x,
|
||||||
|
FIXTURE_TYPE_BETTER_YAML: lambda x: x,
|
||||||
|
FIXTURE_TYPE_XML: lambda x: x,
|
||||||
|
}
|
||||||
|
|
||||||
COMMAND_LOADDATA = 'loaddata'
|
COMMAND_LOADDATA = 'loaddata'
|
||||||
|
|
||||||
if YAML_AVAILABLE:
|
if YAML_AVAILABLE:
|
||||||
FIXTURE_TYPES_CHOICES += (FIXTURE_TYPE_YAML, _(u'YAML')),
|
FIXTURE_TYPES_CHOICES += (FIXTURE_TYPE_YAML, _(u'YAML')),
|
||||||
|
FIXTURE_TYPES_CHOICES += (FIXTURE_TYPE_BETTER_YAML, _(u'Better YAML')),
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ from django.db import models
|
|||||||
from django.core import serializers
|
from django.core import serializers
|
||||||
|
|
||||||
from .classes import BootstrapModel
|
from .classes import BootstrapModel
|
||||||
|
from .literals import FIXTURE_TYPE_FIXTURE_PROCESS, FIXTURE_TYPE_EMPTY_FIXTURE
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
@@ -22,6 +23,7 @@ class BootstrapSetupManager(models.Manager):
|
|||||||
result = []
|
result = []
|
||||||
for bootstrap_model in BootstrapModel.get_all():
|
for bootstrap_model in BootstrapModel.get_all():
|
||||||
model_fixture = bootstrap_model.dump(serialization_format)
|
model_fixture = bootstrap_model.dump(serialization_format)
|
||||||
if '[]' not in model_fixture and '{}' not in model_fixture:
|
# Only add non empty model fixtures
|
||||||
|
if not FIXTURE_TYPE_EMPTY_FIXTURE[serialization_format](model_fixture):
|
||||||
result.append(model_fixture)
|
result.append(model_fixture)
|
||||||
return '\n'.join(result)
|
return FIXTURE_TYPE_FIXTURE_PROCESS[serialization_format]('\n'.join(result))
|
||||||
|
|||||||
Reference in New Issue
Block a user