mirror of
https://gitlab.archlinux.org/archlinux/aurweb.git
synced 2025-02-03 10:43:03 +01:00
Merge branch 'metamodifiedts' into 'master'
feat: add PackageBase.MetaModifiedTS column See merge request archlinux/aurweb!537
This commit is contained in:
commit
e5165ff405
6 changed files with 101 additions and 1 deletions
|
@ -5,6 +5,7 @@ import re
|
|||
import subprocess
|
||||
import sys
|
||||
import time
|
||||
from datetime import datetime
|
||||
|
||||
import pygit2
|
||||
import srcinfo.parse
|
||||
|
@ -92,7 +93,7 @@ def save_metadata(metadata, conn, user): # noqa: C901
|
|||
user_id = int(cur.fetchone()[0])
|
||||
|
||||
# Update package base details and delete current packages.
|
||||
now = int(time.time())
|
||||
now = int(datetime.utcnow().timestamp())
|
||||
conn.execute(
|
||||
"UPDATE PackageBases SET ModifiedTS = ?, "
|
||||
+ "PackagerUID = ?, OutOfDateTS = NULL WHERE ID = ?",
|
||||
|
@ -230,6 +231,14 @@ def save_metadata(metadata, conn, user): # noqa: C901
|
|||
[pkgbase_id, user_id],
|
||||
)
|
||||
|
||||
# Update timestamp, set MetaModifiedTS after all the record
|
||||
# updates we just made.
|
||||
now = int(datetime.utcnow().timestamp())
|
||||
conn.execute(
|
||||
"UPDATE PackageBases SET MetaModifiedTS = ? WHERE ID = ?",
|
||||
[now, pkgbase_id],
|
||||
)
|
||||
|
||||
conn.commit()
|
||||
|
||||
|
||||
|
|
|
@ -55,6 +55,8 @@ class PackageBase(Base):
|
|||
self.SubmittedTS = now
|
||||
if not self.ModifiedTS:
|
||||
self.ModifiedTS = now
|
||||
if not self.MetaModifiedTS:
|
||||
self.MetaModifiedTS = now
|
||||
|
||||
if not self.FlaggerComment:
|
||||
self.FlaggerComment = str()
|
||||
|
|
|
@ -123,6 +123,8 @@ async def pkgbase_keywords(
|
|||
for keyword in new_keywords:
|
||||
db.create(PackageKeyword, PackageBase=pkgbase, Keyword=keyword)
|
||||
|
||||
pkgbase.MetaModifiedTS = time.utcnow()
|
||||
|
||||
return RedirectResponse(f"/pkgbase/{name}", status_code=HTTPStatus.SEE_OTHER)
|
||||
|
||||
|
||||
|
|
|
@ -15,6 +15,7 @@ from sqlalchemy import (
|
|||
String,
|
||||
Table,
|
||||
Text,
|
||||
func,
|
||||
text,
|
||||
)
|
||||
from sqlalchemy.dialects.mysql import BIGINT, DECIMAL, INTEGER, TINYINT
|
||||
|
@ -170,6 +171,12 @@ PackageBases = Table(
|
|||
Column("FlaggerComment", Text, nullable=False),
|
||||
Column("SubmittedTS", BIGINT(unsigned=True), nullable=False),
|
||||
Column("ModifiedTS", BIGINT(unsigned=True), nullable=False),
|
||||
Column(
|
||||
"MetaModifiedTS",
|
||||
BIGINT(unsigned=True),
|
||||
nullable=False,
|
||||
server_default=func.now(),
|
||||
),
|
||||
Column(
|
||||
"FlaggerUID", ForeignKey("Users.ID", ondelete="SET NULL")
|
||||
), # who flagged the package out-of-date?
|
||||
|
|
|
@ -0,0 +1,31 @@
|
|||
"""add MetaModifiedTS to PackageBase
|
||||
|
||||
Revision ID: 42584a60e7a7
|
||||
Revises: d64e5571bc8d
|
||||
Create Date: 2022-09-06 12:37:49.460344
|
||||
|
||||
"""
|
||||
from alembic import op
|
||||
from sqlalchemy.exc import OperationalError
|
||||
|
||||
from aurweb.models import PackageBase
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = "42584a60e7a7"
|
||||
down_revision = "d64e5571bc8d"
|
||||
branch_labels = None
|
||||
depends_on = None
|
||||
|
||||
table = PackageBase.__tablename__
|
||||
|
||||
|
||||
def upgrade():
|
||||
try:
|
||||
op.add_column(table, PackageBase.__table__.c.MetaModifiedTS)
|
||||
except OperationalError as e:
|
||||
print(e)
|
||||
print("MetaModifiedTS column already exists")
|
||||
|
||||
|
||||
def downgrade():
|
||||
op.remove_column(table, "MetaModifiedTS")
|
49
test/test_migrations.py
Normal file
49
test/test_migrations.py
Normal file
|
@ -0,0 +1,49 @@
|
|||
import pytest
|
||||
|
||||
from aurweb import db
|
||||
from aurweb.models import PackageBase, User
|
||||
from aurweb.time import utcnow
|
||||
|
||||
|
||||
@pytest.fixture(autouse=True)
|
||||
def setup(db_test: None) -> None:
|
||||
pass
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def user() -> User:
|
||||
|
||||
with db.begin():
|
||||
user_ = db.create(User, Username="test", Email="test@example.org")
|
||||
|
||||
yield user_
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def pkgbase(user: User) -> PackageBase:
|
||||
now = utcnow()
|
||||
|
||||
with db.begin():
|
||||
pkgbase_ = db.create(
|
||||
PackageBase,
|
||||
Name="pkg",
|
||||
ModifiedTS=now,
|
||||
MetaModifiedTS=now,
|
||||
SubmittedTS=now,
|
||||
Maintainer=user,
|
||||
Packager=user,
|
||||
)
|
||||
|
||||
yield pkgbase_
|
||||
|
||||
|
||||
def test_package_base_columns(user: User, pkgbase: PackageBase):
|
||||
assert pkgbase.Name == "pkg"
|
||||
|
||||
assert bool(pkgbase.SubmittedTS)
|
||||
assert bool(pkgbase.ModifiedTS)
|
||||
assert bool(pkgbase.MetaModifiedTS)
|
||||
|
||||
assert pkgbase.Maintainer == user
|
||||
assert pkgbase.Packager == user
|
||||
assert pkgbase.Flagger is None
|
Loading…
Add table
Reference in a new issue