def select_autocomplete(request, permission): permis = request.session.get("domains.domain.select", {}) if not permission in permis or (time.time() - permis[permission]) > 1800: return HttpResponse(simplejson.dumps([])) #endif request.session['domains.domain.select'] = permis search = request.GET['term'] domainFilter = request.session.get('domains.domain.select.domainFilter', None) domains = getDomains(request, domainFilter, search) data = [ { "label": "%s (%s)" % (domain.name, domain.node.name), "value": domain.name, "id": domain.id } for domain in domains ] return HttpResponse(simplejson.dumps(data))
def canChangeAcls(request, *args, **kwargs): return bool(getDomains(request, "change_acl").count() != 0)
def canMigrateDomains(request, *args, **kwargs): return bool(getDomains(request, "migrate_domain").count() != 0)
def canRemoveDomains(request, *args, **kwargs): return bool(getDomains(request, "delete_domain").count() != 0)
def canViewDomains(request, *args, **kwargs): return bool(getDomains(request, "view_domain").count() != 0)
def canEditDomains(request, *args, **kwargs): return bool(getDomains(request, "change_domain").count() != 0)
def select(request, next, domainFilter, permission = None, *args, **kwargs): if permission: if not permission(request, *args, **kwargs): return HttpResponseRedirect("%s" % (reverse("403"))) #endif #endif permis = request.session.get("domains.domain.select", {}) permisHash = sha.sha(request.user.username.upper() + ":" + str(time.time())).hexdigest() permis[permisHash] = time.time() # Session cleanup hashes = permis.keys() for per in hashes: if (time.time() - permis[per]) > 1800: del permis[per] #endif #endfor request.session['domains.domain.select'] = permis request.session['domains.domain.select.domainFilter'] = domainFilter domains = getDomains(request, domainFilter) if request.method == "POST": form = SelectDomainForm(request.POST) if form.is_valid(): domainsAll = Domain.objects.filter(name=form.cleaned_data['name']) # Remove these which cannot be selected because of permissions allowedDomains = [] for dom in domainsAll: if dom in domains: # Id was sent with name if form.cleaned_data['id'] and dom.id == form.cleaned_data['id']: allowedDomains.append(dom) break #endif # Id wasn't sent with name if not form.cleaned_data['id']: allowedDomains.append(dom) #endif #endif #endfor domains = allowedDomains if len(domains) == 1: kwargs['domainId'] = domains[0].id return HttpResponseRedirect( reverse(next, args = args, kwargs = kwargs) ) elif len(domains) == 0: # User doesn't have permission to view domains form._errors['name'] = ErrorList([ _("A domain with that name does not exist.") ]) del form.cleaned_data['name'] else: # More than 1 domain form._errors['name'] = ErrorList([ _("Please choose which domain you want from list.") ]) del form.cleaned_data['name'] #endif #endif else: form = SelectDomainForm() #endif paginator = Paginator(domains, 25) try: page = int(request.GET.get("page", "1")) except ValueError: page = 1 #endtry try: domains = paginator.page(page) except (EmptyPage, InvalidPage): domains = paginator.page(paginator.num_pages) #endtry return render_to_response( "domains/domain/select.html", { "domains": domains, "form": form, "permission": permisHash, "next": next, "next_args": args, "next_kwargs": kwargs }, context_instance=RequestContext(request) )