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 subprocess
|
||||||
import sys
|
import sys
|
||||||
import time
|
import time
|
||||||
|
from datetime import datetime
|
||||||
|
|
||||||
import pygit2
|
import pygit2
|
||||||
import srcinfo.parse
|
import srcinfo.parse
|
||||||
|
@ -92,7 +93,7 @@ def save_metadata(metadata, conn, user): # noqa: C901
|
||||||
user_id = int(cur.fetchone()[0])
|
user_id = int(cur.fetchone()[0])
|
||||||
|
|
||||||
# Update package base details and delete current packages.
|
# Update package base details and delete current packages.
|
||||||
now = int(time.time())
|
now = int(datetime.utcnow().timestamp())
|
||||||
conn.execute(
|
conn.execute(
|
||||||
"UPDATE PackageBases SET ModifiedTS = ?, "
|
"UPDATE PackageBases SET ModifiedTS = ?, "
|
||||||
+ "PackagerUID = ?, OutOfDateTS = NULL WHERE ID = ?",
|
+ "PackagerUID = ?, OutOfDateTS = NULL WHERE ID = ?",
|
||||||
|
@ -230,6 +231,14 @@ def save_metadata(metadata, conn, user): # noqa: C901
|
||||||
[pkgbase_id, user_id],
|
[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()
|
conn.commit()
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -55,6 +55,8 @@ class PackageBase(Base):
|
||||||
self.SubmittedTS = now
|
self.SubmittedTS = now
|
||||||
if not self.ModifiedTS:
|
if not self.ModifiedTS:
|
||||||
self.ModifiedTS = now
|
self.ModifiedTS = now
|
||||||
|
if not self.MetaModifiedTS:
|
||||||
|
self.MetaModifiedTS = now
|
||||||
|
|
||||||
if not self.FlaggerComment:
|
if not self.FlaggerComment:
|
||||||
self.FlaggerComment = str()
|
self.FlaggerComment = str()
|
||||||
|
|
|
@ -123,6 +123,8 @@ async def pkgbase_keywords(
|
||||||
for keyword in new_keywords:
|
for keyword in new_keywords:
|
||||||
db.create(PackageKeyword, PackageBase=pkgbase, Keyword=keyword)
|
db.create(PackageKeyword, PackageBase=pkgbase, Keyword=keyword)
|
||||||
|
|
||||||
|
pkgbase.MetaModifiedTS = time.utcnow()
|
||||||
|
|
||||||
return RedirectResponse(f"/pkgbase/{name}", status_code=HTTPStatus.SEE_OTHER)
|
return RedirectResponse(f"/pkgbase/{name}", status_code=HTTPStatus.SEE_OTHER)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -15,6 +15,7 @@ from sqlalchemy import (
|
||||||
String,
|
String,
|
||||||
Table,
|
Table,
|
||||||
Text,
|
Text,
|
||||||
|
func,
|
||||||
text,
|
text,
|
||||||
)
|
)
|
||||||
from sqlalchemy.dialects.mysql import BIGINT, DECIMAL, INTEGER, TINYINT
|
from sqlalchemy.dialects.mysql import BIGINT, DECIMAL, INTEGER, TINYINT
|
||||||
|
@ -170,6 +171,12 @@ PackageBases = Table(
|
||||||
Column("FlaggerComment", Text, nullable=False),
|
Column("FlaggerComment", Text, nullable=False),
|
||||||
Column("SubmittedTS", BIGINT(unsigned=True), nullable=False),
|
Column("SubmittedTS", BIGINT(unsigned=True), nullable=False),
|
||||||
Column("ModifiedTS", BIGINT(unsigned=True), nullable=False),
|
Column("ModifiedTS", BIGINT(unsigned=True), nullable=False),
|
||||||
|
Column(
|
||||||
|
"MetaModifiedTS",
|
||||||
|
BIGINT(unsigned=True),
|
||||||
|
nullable=False,
|
||||||
|
server_default=func.now(),
|
||||||
|
),
|
||||||
Column(
|
Column(
|
||||||
"FlaggerUID", ForeignKey("Users.ID", ondelete="SET NULL")
|
"FlaggerUID", ForeignKey("Users.ID", ondelete="SET NULL")
|
||||||
), # who flagged the package out-of-date?
|
), # 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