DateTime(timezone=False), nullable=False, server_default=sqlalchemy.func.current_timestamp(),
)
- async def delete(self, user=None):
+ async def delete(self, *args, **kwargs):
+ """
+ Deletes this package
+ """
# Check if this package can be deleted
- if not self.can_be_deleted():
+ if not await self.can_be_deleted():
log.debug("Won't delete package %s as it is still in use")
return
log.info("Deleting package %s" % self)
- # Mark as deleted
- await self._set_attribute_now("deleted_at")
- if user:
- await self._set_attribute("deleted_by", user)
+ # Delete from the database
+ await super().delete(*args, **kwargs)
# Unlink the payload
if self.path:
await self.backend.unlink(self.path)
# Reset path
- await self._set_attribute("path", None)
+ self.path = None
- def can_be_deleted(self):
+ async def can_be_deleted(self):
"""
Checks if this package is being used somewhere else and
therefore cannot be deleted.
"""
# If there any builds using this package, it cannot be deleted
- if self.builds:
+ if await self.get_builds():
return False
# This package can be deleted