diff --git a/profiles/models.py b/profiles/models.py index e610446..3d6071d 100644 --- a/profiles/models.py +++ b/profiles/models.py @@ -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): diff --git a/profiles/urls.py b/profiles/urls.py index e3ad6d4..db26e00 100644 --- a/profiles/urls.py +++ b/profiles/urls.py @@ -7,6 +7,7 @@ urlpatterns = patterns('profiles', url(r'^register', 'views.register'), url(r'^invites/claim$', 'views.claimInvite'), url(r'^invites/claim/(?P.+)$', 'views.claimInvite'), + url(r'^invites/delete/(?P.+)$', 'views.deleteInvite'), url(r'^invites/new$', 'views.createInvite'), url(r'^invites$', 'views.invites'), url(r'^edit$', 'views.edit'), diff --git a/profiles/views.py b/profiles/views.py index 12fbed1..2f1f5d3 100644 --- a/profiles/views.py +++ b/profiles/views.py @@ -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(): diff --git a/static/css/main.css b/static/css/main.css index f77e654..1f5a5ce 100644 --- a/static/css/main.css +++ b/static/css/main.css @@ -153,3 +153,8 @@ tr.sticky a:link { color: #fff; border: 1px solid white; } + +#invite-table tr.deleted { + background-color:#000; + color:#aaa; +} diff --git a/templates/profiles/delete_invite.html b/templates/profiles/delete_invite.html new file mode 100644 index 0000000..dc07a2c --- /dev/null +++ b/templates/profiles/delete_invite.html @@ -0,0 +1,12 @@ +{% extends 'base.html' %} + +{% block title %}Delete Invite{% endblock %} + +{% block content %} +
+{% csrf_token %} +

If you delete this invite, it may not be used to create an account. If you already gave this invite to someone, they will not be able to use it!

+

Are you sure you want to delete this invite?

+ +
+{% endblock %} diff --git a/templates/profiles/invites.html b/templates/profiles/invites.html index a53c22d..a1b0a52 100644 --- a/templates/profiles/invites.html +++ b/templates/profiles/invites.html @@ -4,16 +4,32 @@ {% block content %}

Your Invites:

- +
{% if invites %} {% for invite in invites %} - - - + + + {% endfor %} {% else %}
Code Invited User
{{invite.code}}{{invite.claimer}}
+ {% if invite.deleted %} + {{invite.code}} + {% else %} + {{invite.code}} + {% endif %} + + {% if invite.claimer %} + {{invite.claimer}} + {% else %} + {% if invite.deleted %} + Deleted + {% else %} + Delete + {% endif %} + {% endif %} +