diff --git a/app/blueprints/packages/releases.py b/app/blueprints/packages/releases.py index e7ef6a73..f464542c 100644 --- a/app/blueprints/packages/releases.py +++ b/app/blueprints/packages/releases.py @@ -28,7 +28,7 @@ from app.logic.releases import do_create_vcs_release, LogicError, do_create_zip_ from app.models import Package, db, User, PackageState, Permission, UserRank, PackageDailyStats, LuantiRelease, \ PackageRelease, PackageUpdateTrigger, PackageUpdateConfig from app.rediscache import has_key, set_temp_key, make_download_key -from app.tasks.importtasks import check_update_config +from app.tasks.importtasks import check_update_config_default from app.utils import is_user_bot, is_package_page, nonempty_or_none, normalize_line_endings from . import bp, get_package_tabs @@ -310,7 +310,7 @@ def set_update_config(package, form): db.session.commit() if package.update_config.last_commit is None: - check_update_config.delay(package.id) + check_update_config_default.delay(package.id) @bp.route("/packages///update-config/", methods=["GET", "POST"]) diff --git a/app/models/packages.py b/app/models/packages.py index e25c46c8..1c0ab96e 100644 --- a/app/models/packages.py +++ b/app/models/packages.py @@ -1371,6 +1371,8 @@ class PackageUpdateConfig(db.Model): # Set to now when an outdated notification is sent. Set to None when a release is created outdated_at = db.Column(db.DateTime, nullable=True, default=None) + last_checked_at = db.Column(db.DateTime, nullable=True, default=None) + trigger = db.Column(db.Enum(PackageUpdateTrigger), nullable=False, default=PackageUpdateTrigger.COMMIT) ref = db.Column(db.String(41), nullable=True, default=None) diff --git a/app/tasks/importtasks.py b/app/tasks/importtasks.py index 05eff165..877ed368 100644 --- a/app/tasks/importtasks.py +++ b/app/tasks/importtasks.py @@ -478,13 +478,11 @@ def check_update_config_impl(package): if config.last_commit == commit: if tag and config.last_tag != tag: config.last_tag = tag - db.session.commit() return if not config.last_commit: config.last_commit = commit config.last_tag = tag - db.session.commit() return if package.releases.filter_by(commit_hash=commit).count() > 0: @@ -503,8 +501,6 @@ def check_update_config_impl(package): msg = "Created release {} (Git Update Detection)".format(rel.title) add_system_audit_log(AuditSeverity.NORMAL, msg, package.get_url("packages.view"), package) - db.session.commit() - make_vcs_release.apply_async((rel.id, commit), task_id=rel.task_id) elif config.outdated_at is None: @@ -531,7 +527,7 @@ def check_update_config_impl(package): config.last_commit = commit config.last_tag = tag - db.session.commit() + def check_update_config(self, package_id): package: Package = Package.query.get(package_id) @@ -543,6 +539,9 @@ def check_update_config(self, package_id): err = None try: check_update_config_impl(package) + + package.update_config.last_checked_at = datetime.datetime.now() + db.session.commit() except GitCommandError as e: # This is needed to stop the backtrace being weird err = e.stderr diff --git a/migrations/versions/1acc6e90bbac_.py b/migrations/versions/1acc6e90bbac_.py new file mode 100644 index 00000000..91a19bd6 --- /dev/null +++ b/migrations/versions/1acc6e90bbac_.py @@ -0,0 +1,26 @@ +"""empty message + +Revision ID: 1acc6e90bbac +Revises: 57b7fbc174cf +Create Date: 2025-08-26 20:23:29.086541 + +""" +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects import postgresql + +# revision identifiers, used by Alembic. +revision = '1acc6e90bbac' +down_revision = '57b7fbc174cf' +branch_labels = None +depends_on = None + + +def upgrade(): + with op.batch_alter_table('package_update_config', schema=None) as batch_op: + batch_op.add_column(sa.Column('last_checked_at', sa.DateTime(), nullable=True)) + + +def downgrade(): + with op.batch_alter_table('package_update_config', schema=None) as batch_op: + batch_op.drop_column('last_checked_at')