Example #1
0
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))
Example #2
0
def canChangeAcls(request, *args, **kwargs):
    return bool(getDomains(request, "change_acl").count() != 0)
Example #3
0
def canMigrateDomains(request, *args, **kwargs):
    return bool(getDomains(request, "migrate_domain").count() != 0)
Example #4
0
def canRemoveDomains(request, *args, **kwargs):
    return bool(getDomains(request, "delete_domain").count() != 0)
Example #5
0
def canViewDomains(request, *args, **kwargs):
    return bool(getDomains(request, "view_domain").count() != 0)
Example #6
0
def canEditDomains(request, *args, **kwargs):
    return bool(getDomains(request, "change_domain").count() != 0)
Example #7
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)
    )