In my signals.py I am doing the import for the function unique_order_reference_generator
within the function reserveditem_create_order_reference
. I wonder if that is the right approach, or is there a better solution?
file utils.py
from lumis.utils import get_random_string
from .models import Order, ReservedItem
def unique_order_reference_generator():
new_id = get_random_string(length=10)
reserved_item = ReservedItem.objects.filter(
order_reference=new_id
).exists()
order = Order.objects.filter(order_reference=new_id).exists()
if reserved_item or order:
return unique_order_reference_generator() # TODO Marc: Test
else:
return new_id
file signals.py
# Generate order reference
def reserveditem_create_order_reference(sender, instance, **kwargs):
from .utils import unique_order_reference_generator
if not instance.order_reference:
instance.order_reference = unique_order_reference_generator()
file app.py
class OrdersConfig(AppConfig):
name = 'orders'
def ready(self):
#Pre save signal for ReservedItem model
reserved_model = self.get_model('ReservedItem')
pre_save.connect(
reserveditem_create_order_reference,
sender=reserved_model,
dispatch_uid="my_unique_identifier"
)