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
|
from django.core import mail
|
||||||
import models
|
import models
|
||||||
|
|
||||||
class InviteTest(TestCase):
|
class InviteUseTest(TestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
self.client = Client()
|
self.client = Client()
|
||||||
self.user = User.objects.create_user('ValidUsername', 'test@example.com')
|
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)
|
resp = self.client.post(reverse('local.views.register' ), data)
|
||||||
self.assertEqual(len(mail.outbox), 1)
|
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):
|
class AccountCreationTest(TestCase):
|
||||||
def testCreation(self):
|
def testCreation(self):
|
||||||
user = User.objects.create_user('ValidUser', 'test@example.com')
|
user = User.objects.create_user('ValidUser', 'test@example.com')
|
||||||
|
@@ -1,5 +1,6 @@
|
|||||||
from django.contrib.auth.decorators import login_required
|
from django.contrib.auth.decorators import login_required
|
||||||
from django.contrib.sites.models import Site
|
from django.contrib.sites.models import Site
|
||||||
|
from django.contrib import messages
|
||||||
from django.http import HttpResponseRedirect, Http404
|
from django.http import HttpResponseRedirect, Http404
|
||||||
from django.shortcuts import render_to_response
|
from django.shortcuts import render_to_response
|
||||||
from notification import models as notification
|
from notification import models as notification
|
||||||
@@ -37,9 +38,13 @@ def invites(request):
|
|||||||
|
|
||||||
@login_required
|
@login_required
|
||||||
def createInvite(request):
|
def createInvite(request):
|
||||||
invite = models.Invite()
|
activeCount = request.user.invites.exclude(deleted=True).filter(claimer=None)
|
||||||
invite.creator = request.user
|
if len(activeCount) < 2:
|
||||||
invite.save()
|
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'))
|
return HttpResponseRedirect(reverse('local.views.invites'))
|
||||||
|
|
||||||
def register(request):
|
def register(request):
|
||||||
@@ -75,10 +80,12 @@ def register(request):
|
|||||||
def deleteInvite(request, code=None):
|
def deleteInvite(request, code=None):
|
||||||
invite = models.Invite.objects.get(code__exact=code)
|
invite = models.Invite.objects.get(code__exact=code)
|
||||||
if invite.claimer:
|
if invite.claimer:
|
||||||
|
messages.error(request, "That invite is already claimed.")
|
||||||
return HttpResponseRedirect(reverse('local.views.invites'))
|
return HttpResponseRedirect(reverse('local.views.invites'))
|
||||||
if request.method == 'POST':
|
if request.method == 'POST':
|
||||||
invite.deleted = True
|
invite.deleted = True
|
||||||
invite.save()
|
invite.save()
|
||||||
|
messages.info(request, "Invite deleted.")
|
||||||
return HttpResponseRedirect(reverse('local.views.invites'))
|
return HttpResponseRedirect(reverse('local.views.invites'))
|
||||||
return render_to_response('local/delete_invite.html', {'invite':invite}, context_instance = RequestContext(request))
|
return render_to_response('local/delete_invite.html', {'invite':invite}, context_instance = RequestContext(request))
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user