neue Archivfunktion und Optimierung an Artikelbearbeitung
This commit is contained in:
@@ -12,6 +12,7 @@ verhindert, dass eine Liste durch Löschen des letzten Mitglieds
|
||||
verwaist, die Mitgliedschaft macht Abfragen einheitlich.
|
||||
"""
|
||||
|
||||
from datetime import timedelta
|
||||
from typing import Annotated
|
||||
|
||||
from fastapi import Depends, HTTPException, status
|
||||
@@ -20,6 +21,7 @@ from sqlalchemy.orm import Session
|
||||
|
||||
from app.deps import DbSession, VerifiedUser
|
||||
from app.models import ListMember, ShoppingList
|
||||
from app.security import utcnow
|
||||
|
||||
ROLE_RANK = {"viewer": 1, "editor": 2, "owner": 3}
|
||||
|
||||
@@ -60,6 +62,17 @@ def _access(db: Session, list_id: str, user_id: str, minimum: str) -> ShoppingLi
|
||||
status.HTTP_403_FORBIDDEN,
|
||||
f"Für diese Aktion ist mindestens die Rolle '{minimum}' erforderlich.",
|
||||
)
|
||||
|
||||
# Grundlage der automatischen Archivierung. Höchstens stündlich
|
||||
# schreiben - jeder Zugriff wäre unnötige Last, und für eine Frist
|
||||
# von Monaten genügt diese Auflösung bei Weitem.
|
||||
now = utcnow()
|
||||
if membership.last_opened_at is None or now - membership.last_opened_at > timedelta(
|
||||
hours=1
|
||||
):
|
||||
membership.last_opened_at = now
|
||||
db.commit()
|
||||
|
||||
return lst
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user