1 from app.models import PackageRelease, db, Permission
2 from app.tasks.importtasks import makeVCSRelease
3 from celery import uuid
4 from flask import jsonify, abort, url_for
8 def error(status, message):
9 abort(status, jsonify({ "success": False, "error": message }))
12 def handleCreateRelease(token, package, title, ref):
13 if not token.canOperateOnPackage(package):
14 return error(403, "API token does not have access to the package")
16 if not package.checkPerm(token.owner, Permission.MAKE_RELEASE):
17 return error(403, "Permission denied. Missing MAKE_RELEASE permission")
19 five_minutes_ago = datetime.datetime.now() - datetime.timedelta(minutes=5)
20 count = package.releases.filter(PackageRelease.releaseDate > five_minutes_ago).count()
22 return error(429, "Too many requests, please wait before trying again")
24 rel = PackageRelease()
34 makeVCSRelease.apply_async((rel.id, ref), task_id=rel.task_id)
38 "task": url_for("tasks.check", id=rel.task_id),
39 "release": rel.getAsDictionary()