From e7ab42804446b0959b54ce144b21262f4f691d23 Mon Sep 17 00:00:00 2001
From: Andrew Williams
Date: Tue, 2 Mar 2010 22:57:10 +0000
Subject: [PATCH] Added RedditAccount as a editable section to users, also
added Admin side
---
reddit/admin.py | 8 ++++++
sso/forms.py | 12 +++++++++
sso/urls.py | 5 +++-
sso/views.py | 45 +++++++++++++++++++++++++++++++-
templates/profile.html | 23 ++++++++++++++++
templates/sso/redditaccount.html | 14 ++++++++++
6 files changed, 105 insertions(+), 2 deletions(-)
create mode 100644 reddit/admin.py
create mode 100644 templates/sso/redditaccount.html
diff --git a/reddit/admin.py b/reddit/admin.py
new file mode 100644
index 0000000..1098c95
--- /dev/null
+++ b/reddit/admin.py
@@ -0,0 +1,8 @@
+from django.contrib import admin
+from reddit.models import RedditAccount
+
+class RedditAccountAdmin(admin.ModelAdmin):
+ list_display = ('username', 'user', 'date_created', 'link_karma', 'comment_karma')
+ search_fields = ['username', 'user']
+
+admin.site.register(RedditAccount, RedditAccountAdmin)
diff --git a/sso/forms.py b/sso/forms.py
index 3aa3517..cd04892 100644
--- a/sso/forms.py
+++ b/sso/forms.py
@@ -2,6 +2,7 @@ from django import forms
from eve_api.models.api_player import EVEAccount
from sso.models import ServiceAccount, Service
+from reddit.models import RedditAccount
class EveAPIForm(forms.Form):
user_id = forms.CharField(label = u'User ID', max_length=10)
@@ -37,3 +38,14 @@ def UserServiceAccountForm(user):
password = forms.CharField(label = u'Password',widget = forms.PasswordInput(render_value=False))
return ServiceAccountForm
+
+class RedditAccountForm(forms.Form):
+ username = forms.CharField(label = u'User ID', max_length=64)
+
+ def clean(self):
+ try:
+ eaccount = RedditAccount.objects.get(username=self.cleaned_data['username'])
+ except RedditAccount.DoesNotExist:
+ return self.cleaned_data
+ else:
+ raise forms.ValidationError("This User ID is already registered")
diff --git a/sso/urls.py b/sso/urls.py
index 6c3fc55..7a67a2c 100644
--- a/sso/urls.py
+++ b/sso/urls.py
@@ -9,6 +9,9 @@ urlpatterns = patterns('',
(r'^profile/del/eveapi/$', views.eveapi_del),
(r'^profile/del/eveapi/(?P\d+)/$', views.eveapi_del),
(r'^profile/add/service', views.service_add),
- (r'^profile/del/service/$', views.eveapi_del),
+ (r'^profile/del/service/$', views.service_del),
(r'^profile/del/service/(?P\d+)/$', views.service_del),
+ (r'^profile/add/reddit', views.reddit_add),
+ (r'^profile/del/reddit/$', views.reddit_del),
+ (r'^profile/del/reddit/(?P\d+)/$', views.reddit_del),
)
diff --git a/sso/views.py b/sso/views.py
index 815ef15..cde286f 100644
--- a/sso/views.py
+++ b/sso/views.py
@@ -9,7 +9,9 @@ from eve_api.api_puller.accounts import import_eve_account
from eve_api.models.api_player import EVEAccount
from sso.models import ServiceAccount, SSOUser
-from sso.forms import EveAPIForm, UserServiceAccountForm
+from sso.forms import EveAPIForm, UserServiceAccountForm, RedditAccountForm
+
+from reddit.models import RedditAccount
import settings
@@ -30,6 +32,11 @@ def profile(request):
srvaccounts = ServiceAccount.objects.filter(user=request.user).all()
except ServiceAccount.DoesNotExist:
srvaccounts = None
+
+ try:
+ redditaccounts = RedditAccount.objects.filter(user=request.user).all()
+ except ServiceAccount.DoesNotExist:
+ redditaccounts = None
try:
eveaccounts = EVEAccount.objects.filter(user=request.user).all()
@@ -118,4 +125,40 @@ def service_del(request, serviceid=0):
return HttpResponseRedirect(reverse('sso.views.profile'))
+@login_required
+def reddit_add(request):
+ if request.method == 'POST':
+ form = RedditAccountForm(request.POST)
+ if form.is_valid():
+
+ acc = RedditAccount()
+
+ acc.user = request.user
+ acc.username = form.cleaned_data['username']
+
+ acc.save()
+ return HttpResponseRedirect(reverse('sso.views.profile')) # Redirect after POST
+ else:
+ defaults = { 'username': request.user.username, }
+ form = RedditAccountForm(defaults) # An unbound form
+
+ return render_to_response('sso/redditaccount.html', {
+ 'form': form,
+ })
+
+@login_required
+def reddit_del(request, redditid=0):
+ if redditid > 0 :
+ try:
+ acc = RedditAccount.objects.get(id=redditid)
+ except RedditAccount.DoesNotExist:
+ return HttpResponseRedirect(reverse('sso.views.profile'))
+
+ if acc.user == request.user:
+ acc.delete()
+
+ return HttpResponseRedirect(reverse('sso.views.profile'))
+
+
+
diff --git a/templates/profile.html b/templates/profile.html
index 2b41780..3cc107a 100644
--- a/templates/profile.html
+++ b/templates/profile.html
@@ -71,6 +71,29 @@ setup.
Add a Eve API key
+
+
+Reddit Accounts
+This is a list of all your current linked Reddit accounts
+{% if redditaccounts %}
+
+
+| Username | Created Date |
+
+
+{% for acc in redditaccounts %}
+| {{ acc.username }} |
+ {{ acc.date_created }} |
+
+{% endfor %}
+
+| |
+
+{% endif %}
+
+Add a Reddit account
+
+
If you encounter any errors during using this service, copy the massive
error message into Pastebin and give
Matalok a good kicking on IRC/Jabber/Email or on the Forums.
diff --git a/templates/sso/redditaccount.html b/templates/sso/redditaccount.html
new file mode 100644
index 0000000..6c337b9
--- /dev/null
+++ b/templates/sso/redditaccount.html
@@ -0,0 +1,14 @@
+{% extends "base.html" %}
+
+{% block title %}Add Reddit Account{% endblock %}
+
+{% block content %}
+This will bind a Reddit account to your Auth Gateway login, this is usually required for application to the
+corporation
+Please note, you will be forever tied to this account and posts and comments made on this account will be checked
+on from time to time
+
+{% endblock %}