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 %} + + + + + +{% for acc in redditaccounts %} + + + +{% endfor %} + + +
UsernameCreated Date
{{ acc.username }}{{ acc.date_created }}
 
+{% 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

+
+{{ form.as_p }} + +
+{% endblock %}