mirror of
https://github.com/inventree/InvenTree.git
synced 2025-04-30 04:26:44 +00:00
Provide model-level default function option
This commit is contained in:
parent
8d5c3ab18a
commit
b2ae346343
@ -108,6 +108,13 @@ class InvenTreeMetadata(SimpleMetadata):
|
|||||||
|
|
||||||
model_fields = model_meta.get_field_info(model_class)
|
model_fields = model_meta.get_field_info(model_class)
|
||||||
|
|
||||||
|
model_default_func = getattr(model_class, 'api_defaults', None)
|
||||||
|
|
||||||
|
if model_default_func:
|
||||||
|
model_default_values = model_class.api_defaults(self.request)
|
||||||
|
else:
|
||||||
|
model_default_values = {}
|
||||||
|
|
||||||
# Iterate through simple fields
|
# Iterate through simple fields
|
||||||
for name, field in model_fields.fields.items():
|
for name, field in model_fields.fields.items():
|
||||||
|
|
||||||
@ -123,6 +130,9 @@ class InvenTreeMetadata(SimpleMetadata):
|
|||||||
|
|
||||||
serializer_info[name]['default'] = default
|
serializer_info[name]['default'] = default
|
||||||
|
|
||||||
|
elif name in model_default_values:
|
||||||
|
serializer_info[name]['default'] = model_default_values[name]
|
||||||
|
|
||||||
# Iterate through relations
|
# Iterate through relations
|
||||||
for name, relation in model_fields.relations.items():
|
for name, relation in model_fields.relations.items():
|
||||||
|
|
||||||
@ -141,6 +151,9 @@ class InvenTreeMetadata(SimpleMetadata):
|
|||||||
if 'help_text' not in serializer_info[name] and hasattr(relation.model_field, 'help_text'):
|
if 'help_text' not in serializer_info[name] and hasattr(relation.model_field, 'help_text'):
|
||||||
serializer_info[name]['help_text'] = relation.model_field.help_text
|
serializer_info[name]['help_text'] = relation.model_field.help_text
|
||||||
|
|
||||||
|
if name in model_default_values:
|
||||||
|
serializer_info[name]['default'] = model_default_values[name]
|
||||||
|
|
||||||
except AttributeError:
|
except AttributeError:
|
||||||
pass
|
pass
|
||||||
|
|
||||||
|
@ -47,7 +47,7 @@ def get_next_build_number():
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
if Build.objects.count() == 0:
|
if Build.objects.count() == 0:
|
||||||
return
|
return '0001'
|
||||||
|
|
||||||
build = Build.objects.exclude(reference=None).last()
|
build = Build.objects.exclude(reference=None).last()
|
||||||
|
|
||||||
@ -107,6 +107,21 @@ class Build(MPTTModel, ReferenceIndexingMixin):
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@classmethod
|
||||||
|
def api_defaults(cls, request):
|
||||||
|
"""
|
||||||
|
Return default values for this model when issuing an API OPTIONS request
|
||||||
|
"""
|
||||||
|
|
||||||
|
defaults = {
|
||||||
|
'reference': get_next_build_number(),
|
||||||
|
}
|
||||||
|
|
||||||
|
if request and request.user:
|
||||||
|
defaults['issued_by'] = request.user.pk
|
||||||
|
|
||||||
|
return defaults
|
||||||
|
|
||||||
def save(self, *args, **kwargs):
|
def save(self, *args, **kwargs):
|
||||||
|
|
||||||
self.rebuild_reference_field()
|
self.rebuild_reference_field()
|
||||||
|
@ -37,7 +37,7 @@ def get_next_po_number():
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
if PurchaseOrder.objects.count() == 0:
|
if PurchaseOrder.objects.count() == 0:
|
||||||
return
|
return '0001'
|
||||||
|
|
||||||
order = PurchaseOrder.objects.exclude(reference=None).last()
|
order = PurchaseOrder.objects.exclude(reference=None).last()
|
||||||
|
|
||||||
@ -66,7 +66,7 @@ def get_next_so_number():
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
if SalesOrder.objects.count() == 0:
|
if SalesOrder.objects.count() == 0:
|
||||||
return
|
return '0001'
|
||||||
|
|
||||||
order = SalesOrder.objects.exclude(reference=None).last()
|
order = SalesOrder.objects.exclude(reference=None).last()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user