def process_request(self, request): tasklist = CeleryTaskTracker.objects.filter(owner=request.user.username) for task in tasklist: tclass = getattr(tasks, task.taskclass) status = tclass.AsyncResult(task.taskid) if status.info: if status.failed() or status.state == "ERROR": messages.error(request, str(status.info)) task.delete() elif status.state == "PROGRESS": messages.info(request, status.info) elif status.state == "SUCCESS": messages.success(request, status.info) task.delete() status.forget() return None
def promote_select(request, repo_id=None): repo = repo_utils.get_repo(repo_id) form = PromotePackageSelectionForm(request.POST or None, repo=repo) if request.method == 'POST' and form.is_valid(): repoapi = RepositoryAPI() pset = PackageSet.objects.create(stype="promote") pset.save() prepo = PackageSetRepo.objects.create(packageset=pset, repoid=repo['id'], name=repo['name']) prepo.save() packages = [] for pkg in repoapi.packages(repo['parent']['id']): if pkg['id'] in form.cleaned_data['packages']: packages.append(pkg) pspkg = \ PackageSetPackage.objects.create(packageset=pset, packageid=pkg['id'], pkgobj=cPickle.dumps(pkg)) pspkg.save() deps = repo_utils.resolve_deps(packages, [repo['parent']['id']], pkgfilter=repoapi.packages(repo['id'])) for pkg in deps: pspkg = PackageSetPackage.objects.create(packageset=pset, packageid=pkg['id'], pkgobj=cPickle.dumps(pkg)) pspkg.save() return HttpResponseRedirect(reverse('sponge.views.repos.promote_ok', kwargs=dict(pid=pset.pk))) packages = repo_utils.get_updates(repo) if packages: return dict(repo=repo, form=form) else: messages.info(request, "No packages available to be promoted from %s to %s" % (repo['parent']['name'], repo['name'])) return HttpResponseRedirect(reverse('sponge.views.repos.list'))