Limit active invite counts. Fixes #12
This commit is contained in:
@@ -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')
|
||||
|
@@ -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):
|
||||
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))
|
||||
|
||||
|
Reference in New Issue
Block a user