Fix asset sample data command

This commit is contained in:
2022-02-15 02:40:20 +00:00
parent 27bb3f1d8e
commit d9664422c5
3 changed files with 14 additions and 7 deletions

View File

@@ -2,6 +2,7 @@ import random
from django.core.management.base import BaseCommand, CommandError
from django.db import transaction
from django.db.utils import IntegrityError
from django.utils import timezone
from reversion import revisions as reversion
@@ -125,5 +126,9 @@ class Command(BaseCommand):
if i % 3 == 0:
asset.purchased_from = random.choice(self.suppliers)
asset.clean()
asset.save()
with transaction.atomic():
try:
asset.clean()
asset.save()
except IntegrityError:
pass

View File

@@ -100,6 +100,11 @@ class AssetManager(models.Manager):
return qs
def get_available_asset_id(wanted_prefix=""):
last_asset = Asset.objects.filter(asset_id_prefix=wanted_prefix).last()
return 9000 if last_asset is None else wanted_prefix + str(last_asset.asset_id_number + 1)
@reversion.register
class Asset(models.Model, RevisionMixin):
parent = models.ForeignKey(to='self', related_name='asset_parent',

View File

@@ -151,8 +151,7 @@ class AssetCreate(LoginRequiredMixin, generic.CreateView):
def get_initial(self, *args, **kwargs):
initial = super().get_initial(*args, **kwargs)
last_asset = self.model.objects.filter(asset_id_prefix="").last()
initial["asset_id"] = 9000 if last_asset is None else str(last_asset.asset_id_number + 1)
initial["asset_id"] = models.get_available_asset_id()
return initial
def get_success_url(self):
@@ -169,9 +168,7 @@ class DuplicateMixin:
class AssetDuplicate(DuplicateMixin, AssetIDUrlMixin, AssetCreate):
def get_initial(self, *args, **kwargs):
initial = super().get_initial(*args, **kwargs)
prefix = self.get_object().asset_id_prefix
last_asset = self.model.objects.filter(asset_id_prefix=prefix).last()
initial["asset_id"] = 9000 if last_asset is None else prefix + str(last_asset.asset_id_number + 1)
initial["asset_id"] = models.get_available_asset_id(wanted_prefix=self.get_object().asset_id_prefix)
return initial
def get_context_data(self, **kwargs):