Fix groupe deletion (removed orphans)

This commit is contained in:
augustin64 2023-10-26 23:38:09 +02:00
parent 34cae34236
commit 2de234870e
3 changed files with 19 additions and 6 deletions

View File

@ -2,7 +2,7 @@ import os
from ..db import get_db from ..db import get_db
from .attachment import Attachment
class Album(): class Album():
def __init__(self, uuid=None, id=None): def __init__(self, uuid=None, id=None):
@ -116,6 +116,18 @@ class Album():
""" """
) )
for partition in partitions.fetchall(): for partition in partitions.fetchall():
data = db.execute(
"""
SELECT * FROM attachments
WHERE partition_uuid = ?
""",
(partition["uuid"],)
)
attachments = [Attachment(data=i) for i in data]
for attachment in attachments:
attachment.delete()
os.remove(f"partitioncloud/partitions/{partition['uuid']}.pdf") os.remove(f"partitioncloud/partitions/{partition['uuid']}.pdf")
if os.path.exists(f"partitioncloud/static/thumbnails/{partition['uuid']}.jpg"): if os.path.exists(f"partitioncloud/static/thumbnails/{partition['uuid']}.jpg"):
os.remove(f"partitioncloud/static/thumbnails/{partition['uuid']}.jpg") os.remove(f"partitioncloud/static/thumbnails/{partition['uuid']}.jpg")

View File

@ -54,9 +54,9 @@ class Groupe():
""" """
SELECT id FROM album SELECT id FROM album
LEFT JOIN groupe_contient_album LEFT JOIN groupe_contient_album
LEFT JOIN contient_user
ON groupe_contient_album.album_id=album.id ON groupe_contient_album.album_id=album.id
AND contient_user.album_id=album.id LEFT JOIN contient_user
ON contient_user.album_id=album.id
WHERE user_id IS NULL AND groupe_id IS NULL WHERE user_id IS NULL AND groupe_id IS NULL
""" """
).fetchall() ).fetchall()

View File

@ -194,15 +194,16 @@ class User():
def quit_album(self, album_uuid): def quit_album(self, album_uuid):
db = get_db() db = get_db()
album = Album(uuid=album_uuid)
db.execute( db.execute(
""" """
DELETE FROM contient_user DELETE FROM contient_user
JOIN album
ON album.id = album_id
WHERE user_id = ? WHERE user_id = ?
AND album_id = ? AND album.uuid = ?
""", """,
(self.id, album.id) (self.id, album_uuid)
) )
db.commit() db.commit()