david / django-invitation
Built on top of django-registration, it restricts registration to a given number of invited person per active user (strategy introduced by GMail to involve 2.0 users).
Clone this repository (size: 60.7 KB): HTTPS / SSH
$ hg clone http://code.welldev.org/django-invitation
| commit 14: | 2c779a2dd41a |
| parent 13: | 19027bb758cf |
| branch: | default |
invitation.views.invite requires remaining_invitations > 0 to send invitation.
Fixes issue #6.
Changed (Δ144 bytes):
raw changeset »
invitation/views.py (4 lines added, 2 lines removed)
Up to file-list invitation/views.py:
| … | … | @@ -11,6 +11,7 @@ from invitation.models import Invitation |
11 |
11 |
from invitation.forms import InvitationKeyForm |
12 |
12 |
|
13 |
13 |
is_key_valid = InvitationKey.objects.is_key_valid |
14 |
remaining_invitations_for_user = InvitationKey.objects.remaining_invitations_for_user |
|
14 |
15 |
|
15 |
16 |
# TODO: move the authorization control to a dedicated decorator |
16 |
17 |
|
| … | … | @@ -47,9 +48,10 @@ def register(request, success_url=None, |
47 |
48 |
def invite(request, success_url=None, |
48 |
49 |
form_class=InvitationKeyForm, |
49 |
50 |
template_name='invitation/invitation_form.html',): |
51 |
remaining_invitations = remaining_invitations_for_user(request.user) |
|
50 |
52 |
if request.method == 'POST': |
51 |
53 |
form = form_class(data=request.POST, files=request.FILES) |
52 |
if |
|
54 |
if remaining_invitations > 0 and form.is_valid(): |
|
53 |
55 |
invitation = InvitationKey.objects.create_invitation(request.user) |
54 |
56 |
invitation.send_to(form.cleaned_data["email"]) |
55 |
57 |
# success_url needs to be dynamically generated here; setting a |
| … | … | @@ -61,6 +63,6 @@ def invite(request, success_url=None, |
61 |
63 |
form = form_class() |
62 |
64 |
return direct_to_template(request, template_name, { |
63 |
65 |
'form': form, |
64 |
'remaining_invitations': |
|
66 |
'remaining_invitations': remaining_invitations, |
|
65 |
67 |
}) |
66 |
68 |
invite = login_required(invite) |
