Limit active invite counts. Fixes #12

This commit is contained in:
Trever Fischer
2012-03-10 20:54:05 -05:00
parent f289be9a94
commit b1bc7cb6f4
2 changed files with 31 additions and 4 deletions

View File

@@ -5,7 +5,7 @@ from django.core.urlresolvers import reverse
from django.core import mail
import models
class InviteTest(TestCase):
class InviteUseTest(TestCase):
def setUp(self):
self.client = Client()
self.user = User.objects.create_user('ValidUsername', 'test@example.com')
@@ -50,6 +50,26 @@ class InviteTest(TestCase):
resp = self.client.post(reverse('local.views.register' ), data)
self.assertEqual(len(mail.outbox), 1)
class InviteManageTest(TestCase):
def setUp(self):
self.client = Client()
self.user = User.objects.create_user('ValidUsername', 'test@example.com', 'password')
self.user.save()
self.client.login(username='ValidUsername', password='password')
def tearDown(self):
self.user.delete()
def testCreateMaxInvites(self):
for i in range(0, 100):
self.client.get(reverse('local.views.createInvite'))
self.assertEqual(len(self.user.invites.all()), 2)
def testDeleteInvites(self):
self.client.get(reverse('local.views.createInvite'))
self.client.post(reverse('local.views.deleteInvite', kwargs={'code':self.user.invites.all()[0]}))
self.assertEqual(len(self.user.invites.exclude(deleted=True)), 0)
class AccountCreationTest(TestCase):
def testCreation(self):
user = User.objects.create_user('ValidUser', 'test@example.com')

View File

@@ -1,5 +1,6 @@
from django.contrib.auth.decorators import login_required
from django.contrib.sites.models import Site
from django.contrib import messages
from django.http import HttpResponseRedirect, Http404
from django.shortcuts import render_to_response
from notification import models as notification
@@ -37,9 +38,13 @@ def invites(request):
@login_required
def createInvite(request):
invite = models.Invite()
invite.creator = request.user
invite.save()
activeCount = request.user.invites.exclude(deleted=True).filter(claimer=None)
if len(activeCount) < 2:
invite = models.Invite()
invite.creator = request.user
invite.save()
else:
messages.error(request, "You already have your maximum number of active invites.")
return HttpResponseRedirect(reverse('local.views.invites'))
def register(request):
@@ -75,10 +80,12 @@ def register(request):
def deleteInvite(request, code=None):
invite = models.Invite.objects.get(code__exact=code)
if invite.claimer:
messages.error(request, "That invite is already claimed.")
return HttpResponseRedirect(reverse('local.views.invites'))
if request.method == 'POST':
invite.deleted = True
invite.save()
messages.info(request, "Invite deleted.")
return HttpResponseRedirect(reverse('local.views.invites'))
return render_to_response('local/delete_invite.html', {'invite':invite}, context_instance = RequestContext(request))