Ejemplo n.º 1
0
def claim_req(request):
    mcid = normalize_mcid(request.REQUEST['mcid'])
    user = User.objects.get(mcid=mcid)

    if request.POST:
        form = ClaimForm(request.POST)

        if form.is_valid():
            user.email = form.clean_data['email']
            user.set_password(form.clean_data['password'])
            user.acctype = 'CLAIMED'
            user.save()

            return render_to_response(
                'users/claimed.html',
                default_context(request,
                                mcuser=user,
                                password=form.clean_data['password']))
    else:
        initial = user.__dict__.copy()
        initial['password'] = random_password()
        form = ClaimForm(initial=initial)

    return render_to_response('users/claim.html',
                              default_context(request, form=form, mcuser=user))
Ejemplo n.º 2
0
def create_req(request):
    """Form for registering a new user.
    """
    if request.POST:
        mcid = normalize_mcid(request.POST['mcid'])

        form = CreateForm(request.POST)

        if form.is_valid():
            object = User()
            object.mcid = mcid
            object.updatetime = 0
            object.ccrlogupdatetime = 0
            object.acctype = 'SPONSORED'

            object.first_name = form.clean_data['first_name']
            object.last_name = form.clean_data['last_name']
            object.enable_simtrak = False
            object.enable_dod = False
            object.save()

            return submit_redirect(request,
                                   object,
                                   save_redirect='user?mcid=%(mcid)s',
                                   edit_redirect='edit?mcid=%(mcid)s')
    else:
        mcid = mcid_generator.next_mcid_str()
        form = CreateForm()

    return render_to_response('users/create.html',
                              default_context(request, form=form, mcid=mcid))
Ejemplo n.º 3
0
def user_req(request):
    try:
        mcid = normalize_mcid(request.GET["mcid"])
        user = User.objects.get(mcid=mcid)
    except KeyError:
        return search_req(request)
    except User.DoesNotExist:
        return search(request, mcid)
    else:
        ts = datetime.fromtimestamp(user.ccrlogupdatetime)

        where = [
            "groupmembers.memberaccid = %s" % mcid,
            "groupmembers.groupinstanceid = groupinstances.groupinstanceid",
        ]

        member_of = Group.objects.extra(where=where, tables=["groupmembers"])

        if member_of:
            member_of = member_of[0]
        else:
            member_of = None

        where = ["external_users.mcid = %s" % mcid, "external_users.provider_id = identity_providers.id"]

        accounts = IdentityProvider.objects.extra(
            where=where, select={"username": "******"}, tables=["external_users"]
        )

        accounts = [augment(idp) for idp in accounts]

        return render_to_response(
            "users/user.html",
            default_context(request, mcuser=user, ccrlogupdatetime=ts, member_of=member_of, accounts=accounts),
        )
Ejemplo n.º 4
0
def addgroup_req(request):
    mcid = normalize_mcid(request.REQUEST["mcid"])
    user = User.objects.get(mcid=mcid)

    if request.POST:
        form = GroupForm(request.POST)

        if form.is_valid():
            g = create_group(
                form.clean_data["name"],
                normalize_mcid(form.clean_data["accid"]),
                "https://" + request.META["SERVER_NAME"],
            )

            g.save()

            return submit_redirect(
                request,
                g,
                create_redirect="addgroup?mcid=%s" % mcid,
                edit_redirect="../groups/edit?id=%(groupinstanceid)s",
                save_redirect="groups?mcid=%s" % mcid,
            )

    else:
        form = GroupForm(initial=dict(accid=pretty_mcid(mcid)))

    return render_to_response("users/addgroup.html", default_context(request, mcuser=user, form=form))
Ejemplo n.º 5
0
def groups_req(request):
    """search and/or list all groups, so this user can be added
    to specific groups
    """
    mcid = normalize_mcid(request.REQUEST["mcid"])
    user = User.objects.get(mcid=mcid)

    where = ["groupmembers.memberaccid = %s" % mcid, "groupmembers.groupinstanceid = groupinstances.groupinstanceid"]

    member_of = Group.objects.extra(where=where, tables=["groupmembers"])

    q = request.REQUEST.get("q", "")

    if q:
        groups = Group.objects.filter(name__icontains=q)
    else:
        groups = Group.objects.order_by("name")

    return object_list(
        request,
        queryset=groups,
        template_name="users/groups.html",
        paginate_by=10,
        allow_empty=True,
        extra_context=default_context(request, mcuser=user, member_of=member_of, q=q),
    )
Ejemplo n.º 6
0
def upload_req(request):
    from base64 import b64decode

    if request.FILES and 'csv' in request.FILES:
        s = request.FILES['csv']['content']

    elif 'url' in request.REQUEST:
        s = urlopen(request.REQUEST['url']).read()

    else:
        return render_to_response('idps/upload.html', default_context(request))

    r = reader(StringIO(s))
    # okay to remove first column, the 'id' field
    columns = r.next()
    assert columns[0] == 'id'
    if 'png16x16' in columns:
        image_row = columns.index('png16x16')
    else:
        image_row = None

    columns = columns[1:]
    sql = "INSERT INTO identity_providers (" + ', '.join(columns) + \
          ") VALUES (" + ', '.join(['%s'] * len(columns)) + ')'

    for row in r:
        if image_row is not None and row[image_row]:
            row[image_row] = b64decode(row[image_row])
        sql_execute(sql, *row[1:])

    return HttpResponseRedirect('.')
Ejemplo n.º 7
0
def add_req(request):
    if request.POST:
        request.POST.update(request.FILES)

        form = IDPForm(request.POST)

        if form.is_valid():

            object = IdentityProvider()
            object.source_id = form.clean_data['source_id']
            object.name = form.clean_data['name']
            object.domain = form.clean_data['domain']
            object.logouturl = form.clean_data['logouturl']
            object.website = form.clean_data['website']
            object.format = form.clean_data['format']

            object.save()

            if 'logo' in request.FILES:
                update_logo(object.id, request.FILES['logo'])

            return submit_redirect(request, object)
    else:
        form = IDPForm()

    return render_to_response('idps/add.html',
                              default_context(request, form=form))
Ejemplo n.º 8
0
def disable_req(request):
    if request.POST:
        if "disable" in request.POST:
            mcid = normalize_mcid(request.POST["mcid"])
            user = User.objects.get(mcid=mcid)

            sql_execute("DELETE FROM groupmembers WHERE memberaccid=%s", user.mcid)

            user.sha1 = None
            user.acctype = "DISABLED"
            user.save()

        return HttpResponseRedirect(".")

    mcid = normalize_mcid(request.GET["mcid"])
    user = User.objects.get(mcid=mcid)
    ts = datetime.fromtimestamp(user.ccrlogupdatetime)

    where = ["groupmembers.memberaccid = %s" % mcid, "groupmembers.groupinstanceid = groupinstances.groupinstanceid"]

    member_of = Group.objects.extra(where=where, tables=["groupmembers"])

    return render_to_response(
        "users/disable.html", default_context(request, mcuser=user, ccrlogupdatetime=ts, member_of=member_of)
    )
Ejemplo n.º 9
0
def create_req(request):
    """Form for registering a new user.
    """
    if request.POST:
        mcid = normalize_mcid(request.POST["mcid"])

        form = CreateForm(request.POST)

        if form.is_valid():
            object = User()
            object.mcid = mcid
            object.updatetime = 0
            object.ccrlogupdatetime = 0
            object.acctype = "SPONSORED"

            object.first_name = form.clean_data["first_name"]
            object.last_name = form.clean_data["last_name"]
            object.enable_simtrak = False
            object.enable_dod = False
            object.save()

            return submit_redirect(
                request, object, save_redirect="user?mcid=%(mcid)s", edit_redirect="edit?mcid=%(mcid)s"
            )
    else:
        mcid = mcid_generator.next_mcid_str()
        form = CreateForm()

    return render_to_response("users/create.html", default_context(request, form=form, mcid=mcid))
Ejemplo n.º 10
0
def index_req(request):
    return object_list(request,
		       queryset = Certificate.objects.all(),
		       template_name = 'security/index.html',
		       paginate_by = 20,
		       allow_empty = True,
		       extra_context = default_context(request))
Ejemplo n.º 11
0
def cert_req(request):
    id = request.REQUEST['id']
    cert = Certificate.objects.get(id = id)

    if request.POST:
	request.POST.update(request.FILES)

	form = CertForm(request.POST)

	if form.is_valid():
	    text = form.clean_data['text']
	    file = form.clean_data['file']
	    if file: file = file.get('content')

	    crt = text or file

	    cert.crt = crt
	    cert.save()

	    return HttpResponseRedirect('.')

    else:
	form = CertForm(initial = dict(id = cert.id))

    return render_to_response('security/cert.html',
                              default_context(request, form=form, cert=cert))
Ejemplo n.º 12
0
def index_req(request):
    return object_list(request,
                       queryset = ExternalApplication.objects.order_by('ea_name'),
                       template_name = 'applications/index.html',
                       paginate_by = 20,
                       allow_empty = True,
                       extra_context = default_context(request))
Ejemplo n.º 13
0
def register_application_req(request):

    form = AppRegistrationForm(request.POST)
    
    if not form.is_valid():
      return render_to_response('applications/register.html',
				default_context(request, form=form))

    ip = request.META['REMOTE_ADDR']
    code = request.POST['code']
    name = request.POST['name']
    email = request.POST['email']
    url = request.POST['website_url']

    if 'save' in request.POST and request.POST['save'] == 'Save':
      id = request.POST['id']
      print "Updating ea " + id
      ea = ExternalApplication.objects.get(ea_id=id)
      ea.ea_name = name
      ea.ea_code = code
      ea.ea_contact_email = email
      ea.ea_web_site_url = url
    else:
      # Compute a random key
      key = sha.new(str(random.randint(0,1000000))+ip+code+name).hexdigest()
      secret = sha.new(str(random.randint(0,1000000))+code+ip+name).hexdigest()
      ea = ExternalApplication(ea_name=name,ea_code=code,ea_key=key,ea_ip_address=ip,ea_active_status='Pending',ea_secret=secret, ea_contact_email=email, ea_web_site_url=url)

      # add authentication token for this application
      at = AuthenticationToken(at_account_id=None,at_token=key,at_secret=secret)
      at.save()

    ea.save()
    return HttpResponseRedirect('.')
Ejemplo n.º 14
0
def disable_req(request):
    if request.POST:
        if 'disable' in request.POST:
            mcid = normalize_mcid(request.POST['mcid'])
            user = User.objects.get(mcid=mcid)

            sql_execute('DELETE FROM groupmembers WHERE memberaccid=%s',
                        user.mcid)

            user.sha1 = None
            user.acctype = 'DISABLED'
            user.save()

        return HttpResponseRedirect('.')

    mcid = normalize_mcid(request.GET['mcid'])
    user = User.objects.get(mcid=mcid)
    ts = datetime.fromtimestamp(user.ccrlogupdatetime)

    where = [
        'groupmembers.memberaccid = %s' % mcid,
        'groupmembers.groupinstanceid = groupinstances.groupinstanceid'
    ]

    member_of = Group.objects.extra(where=where, tables=['groupmembers'])

    return render_to_response(
        'users/disable.html',
        default_context(request,
                        mcuser=user,
                        ccrlogupdatetime=ts,
                        member_of=member_of))
Ejemplo n.º 15
0
def edit_req(request):
    id = request.REQUEST['id'].strip()
    object = IdentityProvider.objects.get(id=id)
    
    if request.POST:
        form = IDPForm(request.POST)

        if form.is_valid():
            object.source_id = form.clean_data['source_id']
            object.name = form.clean_data['name']
            object.domain = form.clean_data['domain']
            object.logouturl = form.clean_data['logouturl']
            object.website = form.clean_data['website']
            object.format = form.clean_data['format']

            object.save()

            if 'logo' in request.FILES:
                update_logo(object.id, request.FILES['logo'])

            return submit_redirect(request, object)
    else:
        form = IDPForm(initial = object.__dict__)

    return render_to_response('idps/edit.html',
                              default_context(request, form=form,
                                              object=object))
Ejemplo n.º 16
0
def edit_application_req(request):
    id = request.GET['id']
    ea = ExternalApplication.objects.get(ea_id=id)
    form = AppRegistrationForm({'name':ea.ea_name, 'code':ea.ea_code, 'email':ea.ea_contact_email, 'website_url':ea.ea_web_site_url})
    return render_to_response('applications/register.html',
			      default_context(request, form=form, ea=ea,
					      existing=True))
Ejemplo n.º 17
0
def index_req(request):
    cursor = sql_cursor()

    cursor.execute(SQL)
    a = cursor.fetchone()

    vars = default_context(
        request,
        admins_count=Admin.objects.count(),
        users_count=User.objects.filter(sha1__isnull=False).count(),
        groups_count=Group.objects.count(),
        idps_count=IdentityProvider.objects.count())

    if a:
        vars['backups'] = True
        n = float(a[3])
        if n == 0.0:
            n = 1.0

        vars['backup_permerrs'] = int(100.0 * a[0] / n)
        vars['backup_temperrs'] = int(100.0 * a[1] / n)
        vars['backup_finished'] = int(100.0 * (a[3] - a[2]) / n)
    else:
        vars['backups'] = False

    return render_to_response('index.html', vars)
Ejemplo n.º 18
0
def add_req(request):
    if request.POST:
        request.POST.update(request.FILES)

        form = IDPForm(request.POST)

        if form.is_valid():

            object = IdentityProvider()
            object.source_id = form.clean_data['source_id']
            object.name = form.clean_data['name']
            object.domain = form.clean_data['domain']
            object.logouturl = form.clean_data['logouturl']
            object.website = form.clean_data['website']
            object.format = form.clean_data['format']

            object.save()

            if 'logo' in request.FILES:
                update_logo(object.id, request.FILES['logo'])

            return submit_redirect(request, object)
    else:
        form = IDPForm()

    return render_to_response('idps/add.html',
                              default_context(request, form=form))
Ejemplo n.º 19
0
def upload_req(request):
    from base64 import b64decode

    if request.FILES and 'csv' in request.FILES:
        s = request.FILES['csv']['content']

    elif 'url' in request.REQUEST:
        s = urlopen(request.REQUEST['url']).read()

    else:
        return render_to_response('idps/upload.html',
                                  default_context(request))

    r = reader(StringIO(s))
    # okay to remove first column, the 'id' field
    columns = r.next()
    assert columns[0] == 'id'
    if 'png16x16' in columns:
        image_row = columns.index('png16x16')
    else:
        image_row = None

    columns = columns[1:]
    sql = "INSERT INTO identity_providers (" + ', '.join(columns) + \
          ") VALUES (" + ', '.join(['%s'] * len(columns)) + ')'

    for row in r:
        if image_row is not None and row[image_row]:
            row[image_row] = b64decode(row[image_row])
        sql_execute(sql, *row[1:]) 

    return HttpResponseRedirect('.')
Ejemplo n.º 20
0
def index_req(request):
    return object_list(request,
                       queryset=Group.objects.order_by('name'),
                       template_name='groups/index.html',
                       paginate_by=20,
                       allow_empty=True,
                       extra_context=default_context(request))
Ejemplo n.º 21
0
def wiz_name_req(request):
    id = request.REQUEST['id']
    g = Group.objects.get(groupinstanceid=id)

    if request.POST:
        form = CreateNameForm(request.POST)

        if form.is_valid():
            p = Practice.objects.get(practiceid=g.parentid)
            g.name = p.practicename = form.clean_data['name']

            g.save()
            p.save()

            if 'prev' in request.POST:
                url = 'wiz_create?id=%d&mcid=%s' % (g.groupinstanceid,
                                                    g.accid.mcid)
            else:
                url = 'wiz_users?id=%d' % g.groupinstanceid

            return HttpResponseRedirect(url)

    else:
        form = CreateNameForm(dict(name=g.name, id=g.groupinstanceid))

    return render_to_response('groups/wiz_2name.html',
                              default_context(request, form=form, id=id))
Ejemplo n.º 22
0
def login_as_req(request):
    mcid = normalize_mcid(request.GET['mcid'])
    user = User.objects.get(mcid=mcid)

    return render_to_response(
        'users/login_as.html',
        default_context(request, mcid=pretty_mcid(mcid), mcuser=user))
Ejemplo n.º 23
0
def addgroup_req(request):
    mcid = normalize_mcid(request.REQUEST['mcid'])
    user = User.objects.get(mcid=mcid)

    if request.POST:
        form = GroupForm(request.POST)

        if form.is_valid():
            g = create_group(form.clean_data['name'],
                             normalize_mcid(form.clean_data['accid']),
                             'https://' + request.META['SERVER_NAME'])

            g.save()

            return submit_redirect(
                request,
                g,
                create_redirect='addgroup?mcid=%s' % mcid,
                edit_redirect='../groups/edit?id=%(groupinstanceid)s',
                save_redirect='groups?mcid=%s' % mcid)

    else:
        form = GroupForm(initial=dict(accid=pretty_mcid(mcid)))

    return render_to_response('users/addgroup.html',
                              default_context(request, mcuser=user, form=form))
Ejemplo n.º 24
0
def delete_req(request):
    if request.POST:
        if 'delete' in request.POST or 'delete.x' in request.POST:
            id = request.POST['id']
            group = Group.objects.get(groupinstanceid=id)
            delete_group(group)

        return HttpResponseRedirect('.')

    id = request.GET['id']
    group = Group.objects.get(groupinstanceid=id)

    where = [
        'groupmembers.memberaccid = users.mcid',
        'groupmembers.groupinstanceid = groupinstances.groupinstanceid',
        'groupinstances.groupinstanceid = %s' % id
    ]

    users = User.objects.extra(where=where,
                               tables=['groupmembers', 'groupinstances'])

    return render_to_response(
        'groups/delete.html', default_context(request,
                                              group=group,
                                              users=users))
Ejemplo n.º 25
0
def wiz_name_req(request):
    id = request.REQUEST['id']
    g = Group.objects.get(groupinstanceid = id)

    if request.POST:
        form = CreateNameForm(request.POST)

        if form.is_valid():
            p = Practice.objects.get(practiceid = g.parentid)
            g.name = p.practicename = form.clean_data['name']

            g.save()
            p.save()

            if 'prev' in request.POST:
                url = 'wiz_create?id=%d&mcid=%s' % (g.groupinstanceid, g.accid.mcid)
            else:
                url = 'wiz_users?id=%d' % g.groupinstanceid

            return HttpResponseRedirect(url)

    else:
        form = CreateNameForm(dict(name = g.name,
                                id = g.groupinstanceid))

    return render_to_response('groups/wiz_2name.html',
                              default_context(request, form=form, id=id))
Ejemplo n.º 26
0
def index_req(request):
    return object_list(request,
                       queryset = Entry.objects.order_by('datetime', 'id'),
                       template_name = 'logs/index.html',
                       paginate_by = 20,
                       allow_empty = True,
                       extra_context = default_context(request))
Ejemplo n.º 27
0
def wizard(request,
           form_type,
           template,
           next=None,
           prev=None,
           initial=None,
           context=None):
    context = context or dict()

    if request.POST:
        form = form_type(request.POST)

        if form.is_valid():
            save_form_properties(form)

            if next and 'next' in request.POST:
                return HttpResponseRedirect(next)

            elif prev and 'prev' in request.POST:
                return HttpResponseRedirect(prev)
    else:
        form = form_type(initial=initial or initial_values())

    context.update(default_context(request, form=form))

    return render_to_response(template, context)
Ejemplo n.º 28
0
def password_req(request):
    """Allows the user to change his/her password.

    If the existing password matches, and both new password
    fields match, then the password is changed.

    A ?next=/... query parameter can be added, so after the
    password is changed, the user is redirected back to the
    original referring page.
    """
    next = request.POST.get('next',
			    request.META.get('HTTP_REFERER',
					     DEFAULT_REDIRECT))
    args = default_context(request, username=request.user.username, next=next)

    try:
	password = request.POST['password']

	pw1 = request.POST['pw1']
	pw2 = request.POST['pw2']
    except KeyError:
	pass
    else:
	if pw1 != pw2:
	    args['mismatch'] = True
	elif not request.user.check_password(password):
	    args['error'] = True
	else:
	    request.user.set_password(pw1)
	    request.user.save()
	    return HttpResponseRedirect(next)

    return render_to_response('registration/password.html', args)
Ejemplo n.º 29
0
def edit_req(request):
    id = request.REQUEST['id'].strip()
    object = IdentityProvider.objects.get(id=id)

    if request.POST:
        form = IDPForm(request.POST)

        if form.is_valid():
            object.source_id = form.clean_data['source_id']
            object.name = form.clean_data['name']
            object.domain = form.clean_data['domain']
            object.logouturl = form.clean_data['logouturl']
            object.website = form.clean_data['website']
            object.format = form.clean_data['format']

            object.save()

            if 'logo' in request.FILES:
                update_logo(object.id, request.FILES['logo'])

            return submit_redirect(request, object)
    else:
        form = IDPForm(initial=object.__dict__)

    return render_to_response(
        'idps/edit.html', default_context(request, form=form, object=object))
Ejemplo n.º 30
0
def create_req(request):
    """Form for registering a new user.
    """
    if request.POST:
        form = CreateForm(request.POST)
    else:
        form = CreateForm()

    if form.is_valid():
        if form.clean_data['pw1'] != form.clean_data['pw2']:
            form.errors['pw2'] = ["Must match password above"]
        else:
            try:
                user = User.objects.create_user(form.clean_data['username'],
                                                form.clean_data['email'],
                                                form.clean_data['pw1'])
            except:
                form.errors['username'] = ["Username already exists"]
            else:
                user.first_name = form.clean_data['first_name']
                user.last_name = form.clean_data['last_name']
                user.is_staff = True
                user.save()

                return submit_redirect(request, user,
                                       edit_redirect = 'edit?id=%(id)s')

    return render_to_response('admins/create.html',
			      default_context(request, form=form))
Ejemplo n.º 31
0
def index_req(request):
    return object_list(request,
                       queryset = User.objects.order_by('username'),
                       template_name = 'admins/index.html',
                       paginate_by = 20,
                       allow_empty = True,
                       extra_context = default_context(request))
Ejemplo n.º 32
0
def password_req(request):
    """Allows the user to change his/her password.

    If the existing password matches, and both new password
    fields match, then the password is changed.

    A ?next=/... query parameter can be added, so after the
    password is changed, the user is redirected back to the
    original referring page.
    """
    next = request.POST.get('next',
                            request.META.get('HTTP_REFERER', DEFAULT_REDIRECT))
    args = default_context(request, username=request.user.username, next=next)

    try:
        password = request.POST['password']

        pw1 = request.POST['pw1']
        pw2 = request.POST['pw2']
    except KeyError:
        pass
    else:
        if pw1 != pw2:
            args['mismatch'] = True
        elif not request.user.check_password(password):
            args['error'] = True
        else:
            request.user.set_password(pw1)
            request.user.save()
            return HttpResponseRedirect(next)

    return render_to_response('registration/password.html', args)
Ejemplo n.º 33
0
def groups_req(request):
    """search and/or list all groups, so this user can be added
    to specific groups
    """
    mcid = normalize_mcid(request.REQUEST['mcid'])
    user = User.objects.get(mcid=mcid)

    where = [
        'groupmembers.memberaccid = %s' % mcid,
        'groupmembers.groupinstanceid = groupinstances.groupinstanceid'
    ]

    member_of = Group.objects.extra(where=where, tables=['groupmembers'])

    q = request.REQUEST.get('q', '')

    if q:
        groups = Group.objects.filter(name__icontains=q)
    else:
        groups = Group.objects.order_by('name')

    return object_list(request,
                       queryset=groups,
                       template_name='users/groups.html',
                       paginate_by=10,
                       allow_empty=True,
                       extra_context=default_context(request,
                                                     mcuser=user,
                                                     member_of=member_of,
                                                     q=q))
Ejemplo n.º 34
0
def edit_req(request):
    id = int(request.REQUEST['id'].strip())

    group = Group.objects.get(groupinstanceid = id)

    if request.POST:
	form = EditForm(request.POST)

	if form.is_valid():
	    group.name = form.clean_data['name']
	    group.adminUrl = form.clean_data['adminUrl']
	    group.memberUrl = form.clean_data['memberUrl']
	    group.worklist_limit = form.clean_data['worklist_limit']
	    group.save()

	    return submit_redirect(request, group,
				   create_redirect='wiz_create',
				   edit_redirect='edit?id=%(groupinstanceid)d')
    else:
	form = EditForm(initial = group.__dict__)

    return render_to_response('groups/edit.html',
			      default_context(request,
				              group=group,
				              form=form))
Ejemplo n.º 35
0
def index_req(request):
    return object_list(
        request,
        queryset=ExternalApplication.objects.order_by('ea_name'),
        template_name='applications/index.html',
        paginate_by=20,
        allow_empty=True,
        extra_context=default_context(request))
Ejemplo n.º 36
0
def add_users(request, this_action, next_action, template):
    id = request.REQUEST['id'].strip()
    group = Group.objects.get(groupinstanceid=int(id))

    context = default_context(request, action=this_action, group=group, id=id)

    if 'q' in request.REQUEST:
        q = request.REQUEST['q']
        qs = search_query_set(q)
        context['q'] = q
    else:
        qs = all_query_set()

    if 'mcid' in request.POST:
        mcid = normalize_mcid(request.POST['mcid'])

        if 'remove.x' in request.POST:
            sql_execute("DELETE FROM groupmembers " + \
                        "WHERE groupinstanceid = %s AND memberaccid = %s",
                        int(id), mcid)
        elif 'add.x' in request.POST:
            # Only one group per user
            sql_execute("DELETE FROM groupmembers " + \
          "wHERE memberaccid = %s", mcid)

            sql_execute("INSERT INTO groupmembers " + \
                        "(groupinstanceid, memberaccid) " + \
                        "VALUES (%s, %s)", int(id), mcid)

        return HttpResponseRedirect(this_action)

    if 'prev' in request.POST:
        return HttpResponseRedirect('wiz_name?id=%s' % id)

    if 'finish' in request.POST:
        return HttpResponseRedirect(next_action)

    where = [
        'groupmembers.memberaccid = users.mcid',
        'groupmembers.groupinstanceid = %s' % id
    ]
    context['members'] = User.objects.extra(where=where,
                                            tables=['groupmembers'])

    where = [
        'mcid NOT IN (SELECT memberaccid FROM groupmembers WHERE groupinstanceid = %s)'
        % id
    ]
    select = {
        'groupname':
        'SELECT DISTINCT(name) FROM groupinstances, groupmembers WHERE groupmembers.groupinstanceid = groupinstances.groupinstanceid AND groupmembers.memberaccid = users.mcid'
    }

    return object_list(request,
                       queryset=qs.extra(where=where, select=select),
                       template_name=template,
                       paginate_by=20,
                       extra_context=context)
Ejemplo n.º 37
0
def group_req(request):
    try:
        id = int(request.GET['id'])
        group = Group.objects.get(groupinstanceid=id)

        where = [
            'groupmembers.memberaccid = users.mcid',
            'groupmembers.groupinstanceid = groupinstances.groupinstanceid',
            'groupinstances.groupinstanceid = %d' % id
        ]

        admin_where = [
            'groupadmins.adminaccid = users.mcid',
            'groupadmins.groupinstanceid = groupinstances.groupinstanceid',
            'groupinstances.groupinstanceid = %d' % id
        ]
        try:
            practice = Practice.objects.get(providergroupid=id)
            worklist = Practiceccrevent.objects.filter(
                practiceid=practice.practiceid, ViewStatus='VISIBLE')
        except Practice.DoesNotExist:
            practice = None
            worklist = []

        users = User.objects.extra(where=where,
                                   tables=['groupmembers', 'groupinstances'])

        owners = User.objects.extra(where=admin_where,
                                    tables=['groupadmins', 'groupinstances'])

        owner = None
        if (len(owners) > 0):
            owner = owners[0]

        return render_to_response(
            'groups/group.html',
            default_context(request,
                            group=group,
                            practice=practice,
                            worklist=worklist,
                            users=users,
                            owner=owner))
    except KeyError:
        return render_to_response('groups/query.html',
                                  default_context(request))
Ejemplo n.º 38
0
def index_req(request):
    context = default_context(request, OpenIDMode=get_property('OpenIDMode'))

    return object_list(request,
                       queryset=IdentityProvider.objects.order_by('name'),
                       template_name='idps/index.html',
                       paginate_by=20,
                       allow_empty=True,
                       extra_context=context)
Ejemplo n.º 39
0
def index_req(request):
    query = './?'
    order = 'name'

    if 'order' in request.GET:
        order = request.GET['order']
        query += 'order=%s&' % quote(order)

    return object_list(request,
                       queryset = Appliance.objects.order_by(*order.split(',')),
                       template_name='appliances/index.html',
                       paginate_by=20,
                       allow_empty=True,
                       extra_context=default_context(request,
                                                     order_query='./?',
                                                     search_query=query))
                       
    return render_to_response('appliances/index.html',
                              default_context(request, objects=objects))
Ejemplo n.º 40
0
def search_req(request):
    q = request.GET['q']
    qs = Group.objects.filter(name__icontains=q)

    return object_list(request,
                       queryset=qs,
                       template_name='groups/search.html',
                       paginate_by=20,
                       allow_empty=True,
                       extra_context=default_context(request, q=q))
Ejemplo n.º 41
0
def index_req(request):
    context = default_context(request,
                              OpenIDMode = get_property('OpenIDMode'))

    return object_list(request,
                       queryset = IdentityProvider.objects.order_by('name'),
                       template_name = 'idps/index.html',
                       paginate_by = 20,
                       allow_empty = True,
                       extra_context = context)
Ejemplo n.º 42
0
def search_req(request):
    q = request.GET['q']
    qs = Group.objects.filter(name__icontains = q)
    
    return object_list(request,
                       queryset = qs,
                       template_name = 'groups/search.html',
                       paginate_by = 20,
                       allow_empty = True,
                       extra_context = default_context(request, q=q))
Ejemplo n.º 43
0
def delete_req(request):
    name = 'ac' + request.REQUEST['property']
    property = MCProperty.objects.get(property = name)

    if 'delete' in request.POST or 'delete.x' in request.POST:
	property.delete()

	return HttpResponseRedirect('.')

    return render_to_response('config/delete.html',
			      default_context(request, property=property))
Ejemplo n.º 44
0
def search_req(request):
    try:
        qstr = request.GET['q']
        if '@' in qstr:
            qs = User.objects.filter(email=qstr)
        else:
            q = qstr.split()
            x = Q(first_name=q[0]) | Q(last_name=q[0]) | Q(username=q[0])
            for y in q[1:]:
                x = x | Q(first_name=y) | Q(last_name=y) | Q(username=y)
            qs = User.objects.filter(x)

        return object_list(request, queryset = qs,
                           template_name = 'admins/search.html',
                           paginate_by = 20,
                           allow_empty = True,
                           extra_context = default_context(request, q=qstr))
    except KeyError:
        return render_to_response('admins/search.html',
				  default_context(request))
Ejemplo n.º 45
0
def delete_req(request):
    name = 'ac' + request.REQUEST['property']
    property = MCProperty.objects.get(property=name)

    if 'delete' in request.POST or 'delete.x' in request.POST:
        property.delete()

        return HttpResponseRedirect('.')

    return render_to_response('config/delete.html',
                              default_context(request, property=property))
Ejemplo n.º 46
0
def edit_application_req(request):
    id = request.GET['id']
    ea = ExternalApplication.objects.get(ea_id=id)
    form = AppRegistrationForm({
        'name': ea.ea_name,
        'code': ea.ea_code,
        'email': ea.ea_contact_email,
        'website_url': ea.ea_web_site_url
    })
    return render_to_response(
        'applications/register.html',
        default_context(request, form=form, ea=ea, existing=True))
Ejemplo n.º 47
0
def delete_req(request):
    id = int(request.REQUEST['id'])
    object = Appliance.objects.get(id=id)

    if request.POST:
        if 'delete' in request.POST or 'delete.x' in request.POST:
            object.delete()

        return HttpResponseRedirect('.')

    return render_to_response('appliances/merge.html',
                              default_context(request, object=object))
Ejemplo n.º 48
0
def config(request, form_type, template, initial = None):
    if request.POST:
        form = form_type(request.POST)

        if form.is_valid():
            save_form_properties(form)

            return HttpResponseRedirect('.')
    else:
        form = form_type(initial = initial or initial_values())

    return render_to_response(template, default_context(request, form=form))
Ejemplo n.º 49
0
def details_req(request):
    id = request.GET['id'].strip()
    object = IdentityProvider.objects.get(id = id)

    where = ['external_users.mcid = users.mcid',
             'external_users.provider_id = %s' % id]

    qs = User.objects.extra(where = where,
                            select = {'username': '******'},
                            tables = ['external_users'])

    return object_list(request,
                       queryset = qs,
                       template_name = 'idps/details.html',
                       paginate_by = 20,
                       allow_empty = True,
                       extra_context = default_context(request, object=object,
                                                       count=qs.count()))

    return render_to_response('idps/details.html',
                              default_context(request, object=object))
Ejemplo n.º 50
0
def config(request, form_type, template, initial=None):
    if request.POST:
        form = form_type(request.POST)

        if form.is_valid():
            save_form_properties(form)

            return HttpResponseRedirect('.')
    else:
        form = form_type(initial=initial or initial_values())

    return render_to_response(template, default_context(request, form=form))
Ejemplo n.º 51
0
def csr_req(request):
    id = request.GET['id']
    cert = Certificate.objects.get(id=id)

    csr = cert.csr.split('\n')

    cols = 0
    for line in csr:
	cols = max(cols, len(line))

    return render_to_response('security/csr.html',
                              default_context(request, cert=cert, rows=len(csr),
                                              cols = cols))
Ejemplo n.º 52
0
def claim_req(request):
    mcid = normalize_mcid(request.REQUEST["mcid"])
    user = User.objects.get(mcid=mcid)

    if request.POST:
        form = ClaimForm(request.POST)

        if form.is_valid():
            user.email = form.clean_data["email"]
            user.set_password(form.clean_data["password"])
            user.acctype = "CLAIMED"
            user.save()

            return render_to_response(
                "users/claimed.html", default_context(request, mcuser=user, password=form.clean_data["password"])
            )
    else:
        initial = user.__dict__.copy()
        initial["password"] = random_password()
        form = ClaimForm(initial=initial)

    return render_to_response("users/claim.html", default_context(request, form=form, mcuser=user))
Ejemplo n.º 53
0
def edit_req(request):
    mcid = normalize_mcid(request.REQUEST["mcid"])
    user = User.objects.get(mcid=mcid)

    if request.POST:
        form = UserForm(request.POST)

        if form.is_valid() and save_user(user, form):
            return submit_redirect(request, user, edit_redirect="edit?mcid=%(mcid)s")
    else:
        form = UserForm(initial=user.__dict__)

    return render_to_response("users/edit.html", default_context(request, form=form, mcuser=user))