Implement invite deleting/revoking

This commit is contained in:
Trever Fischer
2012-02-19 23:12:57 -05:00
parent 55201d6a22
commit 35fae8b679
6 changed files with 52 additions and 4 deletions

View File

@@ -14,6 +14,10 @@ class Invite(models.Model):
code = models.CharField(max_length=30)
creator = models.ForeignKey(User, related_name='invites')
claimer = models.OneToOneField(User, related_name='claimed_invite', blank=True, null=True)
deleted = models.BooleanField(default=False)
class Meta:
ordering = ['deleted']
@models.permalink
def get_absolute_url(self):

View File

@@ -7,6 +7,7 @@ urlpatterns = patterns('profiles',
url(r'^register', 'views.register'),
url(r'^invites/claim$', 'views.claimInvite'),
url(r'^invites/claim/(?P<code>.+)$', 'views.claimInvite'),
url(r'^invites/delete/(?P<code>.+)$', 'views.deleteInvite'),
url(r'^invites/new$', 'views.createInvite'),
url(r'^invites$', 'views.invites'),
url(r'^edit$', 'views.edit'),

View File

@@ -82,6 +82,16 @@ def register(request):
return HttpResponseRedirect("/")
return render_to_response('profiles/register.html', {'userForm': userForm, 'profileForm': profileForm, 'invite':invite}, context_instance = RequestContext(request))
@login_required
def deleteInvite(request, code=None):
invite = models.Invite.objects.get(code__exact=code)
if invite.claimer:
return HttpResponseRedirect(reverse('profiles.views.invites'))
if request.method == 'POST':
invite.deleted = True
invite.save()
return HttpResponseRedirect(reverse('profiles.views.invites'))
return render_to_response('profiles/delete_invite.html', {'invite':invite}, context_instance = RequestContext(request))
def claimInvite(request, code=None):
if request.user.is_authenticated():

View File

@@ -153,3 +153,8 @@ tr.sticky a:link {
color: #fff;
border: 1px solid white;
}
#invite-table tr.deleted {
background-color:#000;
color:#aaa;
}

View File

@@ -0,0 +1,12 @@
{% extends 'base.html' %}
{% block title %}Delete Invite{% endblock %}
{% block content %}
<form method="POST" action="{%url profiles.views.deleteInvite code=invite.code %}">
{% csrf_token %}
<p>If you delete this invite, it may not be used to create an account. If you already gave this invite to someone, <em>they will not be able to use it!</em></p>
<p>Are you sure you want to delete this invite?</p>
<input type="submit" value="Yes, I'm sure."/>
</form>
{% endblock %}

View File

@@ -4,16 +4,32 @@
{% block content %}
<p>Your Invites:</p>
<table>
<table id='invite-table'>
<tr class="header">
<th>Code</th>
<th>Invited User</th>
</tr>
{% if invites %}
{% for invite in invites %}
<tr>
<td><a href="{{invite.get_absolute_url}}">{{invite.code}}</a></td>
<td>{{invite.claimer}}</td>
<tr class="{%cycle 'even' 'odd' %} {% if invite.deleted %}deleted{%endif%}">
<td>
{% if invite.deleted %}
{{invite.code}}
{% else %}
<a href="{{invite.get_absolute_url}}">{{invite.code}}</a>
{% endif %}
</td>
<td>
{% if invite.claimer %}
{{invite.claimer}}
{% else %}
{% if invite.deleted %}
<em>Deleted</em>
{% else %}
<a href="{%url profiles.views.deleteInvite code=invite.code %}">Delete</a>
{% endif %}
{% endif %}
</td>
</tr>
{% endfor %}
{% else %}