From 4ccdaf5187885a580903602a471052a3833b25ea Mon Sep 17 00:00:00 2001 From: Andrew Williams Date: Wed, 10 Mar 2010 00:55:39 +0000 Subject: [PATCH] Added User Lookup feature --- sso/forms.py | 11 +++++++ sso/urls.py | 1 + sso/views.py | 55 ++++++++++++++++++++++------------- templates/base.html | 4 +++ templates/sso/user.html | 15 ++++++---- templates/sso/userlookup.html | 12 ++++++++ 6 files changed, 72 insertions(+), 26 deletions(-) create mode 100644 templates/sso/userlookup.html diff --git a/sso/forms.py b/sso/forms.py index 651b61d..be2951b 100644 --- a/sso/forms.py +++ b/sso/forms.py @@ -1,4 +1,5 @@ from django import forms +from django.contrib.auth.models import User from eve_api.models.api_player import EVEAccount from sso.models import ServiceAccount, Service @@ -52,3 +53,13 @@ class RedditAccountForm(forms.Form): return self.cleaned_data else: raise forms.ValidationError("This User ID is already registered") + +class UserLookupForm(forms.Form): + username = forms.CharField(label = u'User ID', max_length=64) + + def clean(self): + try: + acc = User.objects.get(username=self.cleaned_data['username']) + except User.DoesNotExist: + raise forms.ValidationError("User doesn't exist") + return self.cleaned_data diff --git a/sso/urls.py b/sso/urls.py index 1d852a1..e0a8ac4 100644 --- a/sso/urls.py +++ b/sso/urls.py @@ -15,4 +15,5 @@ urlpatterns = patterns('', (r'^profile/del/reddit/$', views.reddit_del), (r'^profile/del/reddit/(?P\d+)/$', views.reddit_del), (r'^users/(?P.*)/$', views.user_view), + (r'^users/$', views.user_view), ) diff --git a/sso/views.py b/sso/views.py index 7a97786..0514610 100644 --- a/sso/views.py +++ b/sso/views.py @@ -9,7 +9,7 @@ from eve_api.api_puller.accounts import import_eve_account from eve_api.models.api_player import EVEAccount from sso.models import ServiceAccount, SSOUser, ExistingUser -from sso.forms import EveAPIForm, UserServiceAccountForm, RedditAccountForm +from sso.forms import EveAPIForm, UserServiceAccountForm, RedditAccountForm, UserLookupForm from reddit.models import RedditAccount @@ -166,7 +166,23 @@ def reddit_del(request, redditid=0): @login_required -def user_view(request, user): +def user_view(request, user=None): + form = UserLookupForm() + + if user: + user = user + elif request.method == 'POST': + form = UserLookupForm(request.POST) + if form.is_valid(): + user = form.cleaned_data['username'] + else: + return render_to_response('sso/userlookup.html', { + 'form': form, + }) + else: + return render_to_response('sso/userlookup.html', { + 'form': form, + }) is_admin = request.user.is_staff @@ -174,28 +190,27 @@ def user_view(request, user): profile = user.get_profile() if is_admin: - try: - services = ServiceAccount.objects.filter(user=user).all() - except ServiceAccount.DoesNotExist: - services = None + try: + services = ServiceAccount.objects.filter(user=user).all() + except ServiceAccount.DoesNotExist: + services = None - try: - reddits = RedditAccount.objects.filter(user=user).all() - except ServiceAccount.DoesNotExist: - reddits = None + try: + reddits = RedditAccount.objects.filter(user=user).all() + except ServiceAccount.DoesNotExist: + reddits = None - try: - eveaccounts = EVEAccount.objects.filter(user=user).all() + try: + eveaccounts = EVEAccount.objects.filter(user=user).all() - characters = [] + characters = [] - for acc in eveaccounts: - chars = acc.characters.all() - for char in chars: - characters.append({'name': char.name, 'corp': char.corporation.name}) + for acc in eveaccounts: + chars = acc.characters.all() + for char in chars: + characters.append({'name': char.name, 'corp': char.corporation.name}) - except EVEAccount.DoesNotExist: - eveaccounts = None + except EVEAccount.DoesNotExist: + eveaccounts = None return render_to_response('sso/user.html', locals()) - diff --git a/templates/base.html b/templates/base.html index d550606..15014de 100644 --- a/templates/base.html +++ b/templates/base.html @@ -17,6 +17,10 @@
  • Home
  • {% if request.user %}
  • Profile
  • + {% if request.user.is_staff %} +
  • Lookup User
  • +
  • Admin
  • + {% endif %}
  • Logout
  • {% else %}
  • Login
  • diff --git a/templates/sso/user.html b/templates/sso/user.html index 8450143..cf9af3f 100644 --- a/templates/sso/user.html +++ b/templates/sso/user.html @@ -1,3 +1,5 @@ +{% extends "base.html" %} + {% block content %}

    {{user.username}}'s Profile

    @@ -6,9 +8,10 @@ Email: {{ user.email }}
    {% if is_admin %} +

    Service Accounts

    {% if services %} - +
    {% for acc in services %} @@ -19,10 +22,10 @@ {% endfor %}
    ServiceUsernamePasswordActive
    {{ acc.service }}
    {% endif %} - +

    Eve API Keys

    {% if eveaccounts %} - +
    {% for acc in eveaccounts %} @@ -35,7 +38,7 @@ {% endif %}
    {% if characters %} -
    User IDAPI KeyDescriptionActive
    {{ acc.api_user_id }}
    +
    {% for char in characters %} @@ -45,10 +48,10 @@
    Character NameCorp
    {{ char.name }}
    {% endif %} - +

    Reddit Accounts

    {% if reddits %} - +
    {% for acc in reddits %} diff --git a/templates/sso/userlookup.html b/templates/sso/userlookup.html new file mode 100644 index 0000000..2248525 --- /dev/null +++ b/templates/sso/userlookup.html @@ -0,0 +1,12 @@ +{% extends "base.html" %} + +{% block title %}User Lookup{% endblock %} + +{% block content %} + +
    UsernameCreated Date
    {{ acc.username }}
    +{{ form.as_table }} +
    + + +{% endblock %}