Rory McCann has proposed merging lp:~rorymcc/loco-directory/bug-600134 into
lp:loco-directory.
Requested reviews:
loco-directory-dev (loco-directory-dev)
Related bugs:
#600134 Signing up for an event is too long and non-obvious
https://bugs.launchpad.net/bugs/600134
--
https://code.launchpad.net/~rorymcc/loco-directory/bug-600134/+merge/33995
Your team loco-directory-dev is requested to review the proposed merge of
lp:~rorymcc/loco-directory/bug-600134 into lp:loco-directory.
=== modified file 'loco_directory/events/models.py'
--- loco_directory/events/models.py 2010-08-18 16:18:41 +0000
+++ loco_directory/events/models.py 2010-08-28 14:46:38 +0000
@@ -124,6 +124,26 @@
else:
return False
+ def has_rsvped(self, user):
+ """
+ Has this user 'RSVPed'? i.e. has this user given us an answer if they
+ will or will not be coming?
+ """
+ if user.is_authenticated():
+ return self.attendee_set.filter(attendee=user).count() > 0
+ else:
+ return False
+
+ def attendee(self, user):
+ """
+ The attendee for this user for this event. If they are not logged in,
+ or they have not RSVPed, then None is returned
+ """
+ if user.is_authenticated() and self.has_rsvped(user):
+ return self.attendee_set.get(attendee=user)
+ else:
+ return None
+
def total_attending(self):
total_attending_guests = queryset_sum('guests', Attendee.objects.filter(team_event__id__exact=self.id).filter(promise="sure"))
total_attending_registered = queryset_count('attendee', Attendee.objects.filter(team_event__id__exact=self.id).filter(promise="sure"))
@@ -166,6 +186,6 @@
guests = models.PositiveSmallIntegerField(verbose_name=_('Additional Guests'))
def __unicode__(self):
- return self.attendee
+ return unicode(self.attendee)
=== modified file 'loco_directory/events/urls.py'
--- loco_directory/events/urls.py 2010-08-17 12:00:55 +0000
+++ loco_directory/events/urls.py 2010-08-28 14:46:38 +0000
@@ -7,7 +7,11 @@
#team events
url(r'^team/ical/$', 'events.views.teams_event_list_ical', name='teams-event-list-ical'),
url(r'^team/(?P<team_event_id>\d+)/detail/ical/$', 'events.views.event_ical', name='event-ical'),
+
url(r'^team/(?P<team_event_id>\d+)/register/$', 'events.views.team_event_register', name='team-event-register'),
+
+ url(r'^team/(?P<team_event_id>\d+)/register/attending/(?P<promise>\w+)$', 'events.views.team_event_register_attending_status', name='team-event-register-attending-status'),
+
url(r'^team/(?P<team_event_id>\d+)/detail/$', 'events.views.team_event_detail', name='team-event-detail'),
url(r'^team/(?P<team_event_id>\d+)/delete/$', 'events.views.team_event_delete', name='team-event-delete'),
url(r'^team/(?P<team_event_id>\d+)/update/$', 'events.views.team_event_update', name='team-event-update'),
=== modified file 'loco_directory/events/views.py'
--- loco_directory/events/views.py 2010-08-17 14:40:36 +0000
+++ loco_directory/events/views.py 2010-08-28 14:46:38 +0000
@@ -8,7 +8,7 @@
from events.models import TeamEvent
from events.models import GlobalEvent
from teams.models import Team, Country, Continent
-from events.models import Attendee
+from events.models import Attendee, ATTENDEE_PROMISE_CHOICES
from forms import TeamEventForm
from forms import TeamEventCommentForm
@@ -120,6 +120,8 @@
context = {
'team_event_object': team_event_object,
'user_is_attending': team_event_object.is_attending(request.user),
+ 'user_has_rsvped': team_event_object.has_rsvped(request.user),
+ 'user_attendee': team_event_object.attendee(request.user),
'user_is_team_member': is_member,
}
return render_to_response('events/team_event_detail.html',
@@ -330,6 +332,28 @@
context, RequestContext(request))
+...@login_required
+def team_event_register_attending_status(request, team_event_id, promise):
+ """
+ Simple one-shot view to change you attending status. 'promise' is the
+ 'sure'/'maybe'/'not' which is your status. This can be used to update your
+ existing status
+ You are redirect back to the event page when done.
+ """
+ team_event_object = get_object_or_404(TeamEvent, pk=team_event_id)
+ if team_event_object.has_rsvped(request.user):
+ attendee_object = team_event_object.attendee_set.get(attendee=request.user)
+ else:
+ attendee_object = Attendee(team_event=team_event_object, attendee=request.user, guests=0)
+
+ if request.method == 'POST':
+ if promise in [x[0] for x in ATTENDEE_PROMISE_CHOICES]:
+ attendee_object.promise = str(promise)
+ attendee_object.save()
+ request.user.message_set.create(message=_('Your registration has been saved.'))
+
+ return redirect( team_event_object )
+
def team_event_comment_new(request, team_event_id):
"""
create a comment for a team event
=== modified file 'loco_directory/media/css/newstyle.css'
--- loco_directory/media/css/newstyle.css 2010-08-27 07:21:09 +0000
+++ loco_directory/media/css/newstyle.css 2010-08-28 14:46:38 +0000
@@ -175,3 +175,7 @@
-webkit-box-shadow: 0px 0px 1px #FFE4B6;
}
+form.inline {
+ display: inline;
+}
+
=== modified file 'loco_directory/templates/events/team_event_detail_attendees.inc.html'
--- loco_directory/templates/events/team_event_detail_attendees.inc.html 2010-08-16 18:14:57 +0000
+++ loco_directory/templates/events/team_event_detail_attendees.inc.html 2010-08-28 14:46:38 +0000
@@ -4,10 +4,45 @@
<tr>
<td colspan="2">
{% if user.is_authenticated %}
- {% if user_is_attending %}
- <a href="{% url team-event-register team_event_object.id %}">{% trans 'Change your Registration Status' %}</a>
+ {% if user_has_rsvped %}
+ {% ifequal user_attendee.promise 'sure' %}
+ <p>{% trans 'You are registered to come to this event' %}</p>
+ <form class="inline" method="POST" action="{% url team-event-register-attending-status team_event_object.id 'maybe' %}">
+ <button submit="submit">{% trans "I might be coming to this event" %}</button>
+ </form>
+ <form class="inline" method="POST" action="{% url team-event-register-attending-status team_event_object.id 'not'%}">
+ <button submit="submit">{% trans "☹ I'm not coming to this event" %}</button>
+ </form>
+ {% endifequal %}
+ {% ifequal user_attendee.promise 'maybe' %}
+ <p>{% trans 'You have registered that you might come to this event' %}</p>
+ <form class="inline" method="POST" action="{% url team-event-register-attending-status team_event_object.id 'sure' %}">
+ <button submit="submit">{% trans "☺ I'm coming to this event" %}</button>
+ </form>
+ <form class="inline" method="POST" action="{% url team-event-register-attending-status team_event_object.id 'not' %}">
+ <button submit="submit">{% trans "☹ I'm not coming to this event" %}</button>
+ </form>
+ {% endifequal %}
+ {% ifequal user_attendee.promise 'not' %}
+ <p>{% trans 'You have registered that you will not be coming to this event' %}</p>
+ <form class="inline" method="POST" action="{% url team-event-register-attending-status team_event_object.id 'sure' %}">
+ <button submit="submit">{% trans "☺ I'm coming to this event" %}</button>
+ </form>
+ <form class="inline" method="POST" action="{% url team-event-register-attending-status team_event_object.id 'maybe' %}">
+ <button submit="submit">{% trans "I might be coming to this event" %}</button>
+ </form>
+ {% endifequal %}
{% else %}
- <a href="{% url team-event-register team_event_object.id %}">{% trans 'Register for this Event' %}</a>
+ <p>{% trans 'Are you coming to this event?' %}</p>
+ <form class="inline" method="POST" action="{% url team-event-register-attending-status team_event_object.id 'sure' %}">
+ <button submit="submit">{% trans "☺ I'm coming to this event" %}</button>
+ </form>
+ <form class="inline" method="POST" action="{% url team-event-register-attending-status team_event_object.id 'maybe' %}">
+ <button submit="submit">{% trans "I might be coming to this event" %}</button>
+ </form>
+ <form class="inline" method="POST" action="{% url team-event-register-attending-status team_event_object.id 'not' %}">
+ <button submit="submit">{% trans "☹ I'm not coming to this event" %}</button>
+ </form>
{% endif %}
{% endif %}
</td>
_______________________________________________
Mailing list: https://launchpad.net/~loco-directory-dev
Post to : [email protected]
Unsubscribe : https://launchpad.net/~loco-directory-dev
More help : https://help.launchpad.net/ListHelp