fix: depend on OutOfDateTS for flag state

It was found in the aur.al database that some records have
a non-null flagger, but are not flagged. Using the flagger
relationship, we were false redirecting away from the flag
page.

Signed-off-by: Kevin Morris <kevr@0cost.org>
This commit is contained in:
Kevin Morris 2022-02-05 03:21:46 -08:00
parent a445a40bea
commit 7618101b1b
No known key found for this signature in database
GPG key ID: F7E46DED420788F3
2 changed files with 4 additions and 4 deletions

View file

@ -78,7 +78,7 @@ async def pkgbase_voters(request: Request, name: str) -> Response:
async def pkgbase_flag_comment(request: Request, name: str): async def pkgbase_flag_comment(request: Request, name: str):
pkgbase = get_pkg_or_base(name, PackageBase) pkgbase = get_pkg_or_base(name, PackageBase)
if pkgbase.Flagger is None: if pkgbase.OutOfDateTS is None:
return RedirectResponse(f"/pkgbase/{name}", return RedirectResponse(f"/pkgbase/{name}",
status_code=HTTPStatus.SEE_OTHER) status_code=HTTPStatus.SEE_OTHER)
@ -120,7 +120,7 @@ async def pkgbase_flag_get(request: Request, name: str):
pkgbase = get_pkg_or_base(name, PackageBase) pkgbase = get_pkg_or_base(name, PackageBase)
has_cred = request.user.has_credential(creds.PKGBASE_FLAG) has_cred = request.user.has_credential(creds.PKGBASE_FLAG)
if not has_cred or pkgbase.Flagger is not None: if not has_cred or pkgbase.OutOfDateTS is not None:
return RedirectResponse(f"/pkgbase/{name}", return RedirectResponse(f"/pkgbase/{name}",
status_code=HTTPStatus.SEE_OTHER) status_code=HTTPStatus.SEE_OTHER)
@ -144,7 +144,7 @@ async def pkgbase_flag_post(request: Request, name: str,
status_code=HTTPStatus.BAD_REQUEST) status_code=HTTPStatus.BAD_REQUEST)
has_cred = request.user.has_credential(creds.PKGBASE_FLAG) has_cred = request.user.has_credential(creds.PKGBASE_FLAG)
if has_cred and not pkgbase.Flagger: if has_cred and not pkgbase.OutOfDateTS:
now = time.utcnow() now = time.utcnow()
with db.begin(): with db.begin():
pkgbase.OutOfDateTS = now pkgbase.OutOfDateTS = now

View file

@ -804,7 +804,7 @@ def test_pkgbase_flag(client: TestClient, user: User, maintainer: User,
pkgbase = package.PackageBase pkgbase = package.PackageBase
# We shouldn't have flagged the package yet; assert so. # We shouldn't have flagged the package yet; assert so.
assert pkgbase.Flagger is None assert pkgbase.OutOfDateTS is None
cookies = {"AURSID": user.login(Request(), "testPassword")} cookies = {"AURSID": user.login(Request(), "testPassword")}
endpoint = f"/pkgbase/{pkgbase.Name}/flag" endpoint = f"/pkgbase/{pkgbase.Name}/flag"