예제 #1
0
파일: middleware.py 프로젝트: Tvaske/sponge
    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
예제 #2
0
파일: repos.py 프로젝트: Tvaske/sponge
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'))