Improved transaction and breakage report serializers when handling breakages

This commit is contained in:
Keannu Christian Bernasol 2023-12-27 20:38:43 +08:00
parent d0ca68149a
commit 0b1c065a80
4 changed files with 47 additions and 40 deletions

View file

@ -14,33 +14,3 @@ class BreakageReport(models.Model):
def __str__(self):
return f"Breakage report for transaction #{self.transaction.id} by {self.transaction.borrower} under {self.transaction.teacher}"
def save(self, *args, **kwargs):
# Check if the instance is being updated
if not self._state.adding:
# Check if all associated equipment instances have status "Working"
all_working = all(
eq.status == 'Working' for eq in self.equipments.all())
# If all equipment instances are working
if all_working:
# set resolved field to True
self.resolved = True
# set the status of the associated transaction to "Finalized"
self.transaction.status = 'Finalized'
self.transaction.save()
# Then save the instance again to reflect the changes
super().save(*args, **kwargs)
# If not, set the resolved field to False
else:
if (self.resolved != False or self.transaction.status != 'With Breakages: Pending Resolution'):
# set resolved field to False
self.resolved = False
# set the status of the associated transaction to still be pending
self.transaction.status = 'With Breakages: Pending Resolution'
self.transaction.save()
# Then save the instance again to reflect the changes
super().save(*args, **kwargs)
else:
super().save(*args, **kwargs)