def api_token(request): return render_to_response( 'pkg/api_token.html', { 'api_token': get_api_token(request.user), }, context_instance=RequestContext(request), )
def api_authorized(request): def _get(key): if key in request.POST: return request.POST[key] else: raise Exception('%s not found in the data!' % key) username = _get('user') api_token = _get('token') package_slug = _get('package') version_slug = _get('version') variant_slug = _get('variant') user = get_object_or_404(User, username=username) if get_api_token(user) != api_token: raise Exception("The api token is incorrect.") package = get_object_or_404(Package, slug=package_slug) version = get_object_or_404(Version, package=package, slug=version_slug) return {'authorized': package.is_authorized_for_variant(user, variant_slug, True)}
def api_submit(request): def _get(key): if key in request.POST: return request.POST[key] else: raise Exception('%s not found in the data!' % key) usefile = _get('usefile') username = _get('user') slug = _get('slug') api_token = _get('token') checksums = request.POST.get('checksums', '') variant_name = request.POST.get('name', '') # first, see if the api token is correct. user = get_object_or_404(User, username=username) if get_api_token(user) != api_token: raise Exception("The api token is incorrect.") # get & validate. dct = parse_usefile(usefile) validate_usefile(dct) # do we have such a package and such a version? package = get_object_or_404(Package, slug=slug) version = get_object_or_404(Version, package=package, slug=dct['Version']) if not package.is_authorized_for_variant(user, dct['Variant'], True): raise Exception("You are not allowed to add this variant to this package.") if Variant.objects.filter(slug=dct['Variant'], version=version): raise Exception("A variant like this already exists.") # yeah, we have. create a new version. variant = Variant( slug=dct['Variant'], name=variant_name, version=version, usefile=usefile, checksums=checksums ) variant.set_signature() variant.save() return {'path': urlresolvers.reverse('nirvana.pkg.views.variant', kwargs={'slug': package.slug, 'version_slug': dct['Version'], 'variant_slug': dct['Variant']})}