Merge lp:~rorymcc/loco-team-portal/bug-600134 into lp:loco-team-portal

Proposed by Rory McCann
Status: Rejected
Rejected by: Chris Johnston
Proposed branch: lp:~rorymcc/loco-team-portal/bug-600134
Merge into: lp:loco-team-portal
Diff against target: 236 lines (+152/-5)
6 files modified
INSTALL (+1/-1)
loco_directory/events/models.py (+41/-0)
loco_directory/events/urls.py (+5/-0)
loco_directory/events/views.py (+53/-1)
loco_directory/media/css/newstyle.css (+4/-0)
loco_directory/templates/events/team_event_detail_attendees.inc.html (+48/-3)
To merge this branch: bzr merge lp:~rorymcc/loco-team-portal/bug-600134
Reviewer Review Type Date Requested Status
Chris Johnston Disapprove
Michael Hall (community) Needs Fixing
Review via email: mp+33995@code.launchpad.net
To post a comment you must log in.
264. By Michael Hall

Add User Profiles, merge from Daniel Holbach

265. By Michael Hall

Redesign of Global Events to match Team Event redesign, merge from Chris Johnston

267. By Rory McCann

Allow one to update the number of guests one is bringing

268. By Rory McCann

Changes for user profile

269. By Rory McCann

more fixes for supporting user profiles

270. By Rory McCann

changes to fix for profiles

Revision history for this message
Michael Hall (mhall119) wrote :

Traceback:
File "/usr/lib/pymodules/python2.6/django/core/handlers/base.py" in get_response
  92. response = callback(request, *callback_args, **callback_kwargs)
File "/home/mhall/projects/LD/loco-directory/loco_directory/events/views.py" in team_event_detail
  123. 'user_has_rsvped': team_event_object.has_rsvped(request.user),
File "/home/mhall/projects/LD/loco-directory/loco_directory/events/models.py" in has_rsvped
  153. return self.attendee_set.filter(attendee=user).count() > 0
File "/usr/lib/pymodules/python2.6/django/db/models/manager.py" in filter
  129. return self.get_query_set().filter(*args, **kwargs)
File "/usr/lib/pymodules/python2.6/django/db/models/query.py" in filter
  498. return self._filter_or_exclude(False, *args, **kwargs)
File "/usr/lib/pymodules/python2.6/django/db/models/query.py" in _filter_or_exclude
  516. clone.query.add_q(Q(*args, **kwargs))
File "/usr/lib/pymodules/python2.6/django/db/models/sql/query.py" in add_q
  1675. can_reuse=used_aliases)
File "/usr/lib/pymodules/python2.6/django/db/models/sql/query.py" in add_filter
  1569. negate=negate, process_extras=process_extras)
File "/usr/lib/pymodules/python2.6/django/db/models/sql/query.py" in setup_joins
  1737. "Choices are: %s" % (name, ", ".join(names)))

Exception Type: FieldError at /events/team/13/detail/
Exception Value: Cannot resolve keyword 'attendee' into field. Choices are: attendee_profile, guests, id, promise, team_event

review: Needs Fixing
Revision history for this message
Chris Johnston (cjohnston) wrote :

Rejecting due to how old code is.

review: Disapprove

Unmerged revisions

270. By Rory McCann

changes to fix for profiles

269. By Rory McCann

more fixes for supporting user profiles

268. By Rory McCann

Changes for user profile

267. By Rory McCann

Allow one to update the number of guests one is bringing

266. By Rory McCann

Added simple way to mark if you are coming to an event or not

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'INSTALL'
--- INSTALL 2010-07-01 06:27:09 +0000
+++ INSTALL 2010-08-28 16:20:56 +0000
@@ -1,4 +1,4 @@
1For Postgresql:1 For Postgresql:
2 - sudo apt-get install postgresql-8.3 python-psycopg2 2 - sudo apt-get install postgresql-8.3 python-psycopg2
3# not sure if necessary3# not sure if necessary
4# - sudo passwd postgres4# - sudo passwd postgres
55
=== modified file 'loco_directory/events/models.py'
--- loco_directory/events/models.py 2010-08-24 15:24:24 +0000
+++ loco_directory/events/models.py 2010-08-28 16:20:56 +0000
@@ -124,6 +124,46 @@
124 else:124 else:
125 return False125 return False
126126
127 def has_rsvped(self, user):
128 """
129 Has this user 'RSVPed'? i.e. has this user given us an answer if they
130 will or will not be coming?
131 """
132 if user.is_authenticated():
133 return self.attendee_set.filter(attendee_profile__user=user).count() > 0
134 else:
135 return False
136
137 def attendee(self, user):
138 """
139 The attendee for this user for this event. If they are not logged in,
140 or they have not RSVPed, then None is returned
141 """
142 if user.is_authenticated() and self.has_rsvped(user):
143 return self.attendee_set.get(attendee_profile__user=user)
144 else:
145 return None
146
147 def has_rsvped(self, user):
148 """
149 Has this user 'RSVPed'? i.e. has this user given us an answer if they
150 will or will not be coming?
151 """
152 if user.is_authenticated():
153 return self.attendee_set.filter(attendee=user).count() > 0
154 else:
155 return False
156
157 def attendee(self, user):
158 """
159 The attendee for this user for this event. If they are not logged in,
160 or they have not RSVPed, then None is returned
161 """
162 if user.is_authenticated() and self.has_rsvped(user):
163 return self.attendee_set.get(attendee=user)
164 else:
165 return None
166
127 def total_attending(self):167 def total_attending(self):
128 total_attending_guests = queryset_sum('guests', Attendee.objects.filter(team_event__id__exact=self.id).filter(promise="sure"))168 total_attending_guests = queryset_sum('guests', Attendee.objects.filter(team_event__id__exact=self.id).filter(promise="sure"))
129 total_attending_registered = queryset_count('attendee', Attendee.objects.filter(team_event__id__exact=self.id).filter(promise="sure"))169 total_attending_registered = queryset_count('attendee', Attendee.objects.filter(team_event__id__exact=self.id).filter(promise="sure"))
@@ -169,3 +209,4 @@
169 return self.attendee_profile.user.username209 return self.attendee_profile.user.username
170210
171211
212
172213
=== 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 16:20:56 +0000
@@ -7,7 +7,12 @@
7 #team events7 #team events
8 url(r'^team/ical/$', 'events.views.teams_event_list_ical', name='teams-event-list-ical'),8 url(r'^team/ical/$', 'events.views.teams_event_list_ical', name='teams-event-list-ical'),
9 url(r'^team/(?P<team_event_id>\d+)/detail/ical/$', 'events.views.event_ical', name='event-ical'),9 url(r'^team/(?P<team_event_id>\d+)/detail/ical/$', 'events.views.event_ical', name='event-ical'),
10
10 url(r'^team/(?P<team_event_id>\d+)/register/$', 'events.views.team_event_register', name='team-event-register'),11 url(r'^team/(?P<team_event_id>\d+)/register/$', 'events.views.team_event_register', name='team-event-register'),
12
13 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'),
14 url(r'^team/(?P<team_event_id>\d+)/register/guests/$', 'events.views.team_event_register_guests', name='team-event-register-guests'),
15
11 url(r'^team/(?P<team_event_id>\d+)/detail/$', 'events.views.team_event_detail', name='team-event-detail'),16 url(r'^team/(?P<team_event_id>\d+)/detail/$', 'events.views.team_event_detail', name='team-event-detail'),
12 url(r'^team/(?P<team_event_id>\d+)/delete/$', 'events.views.team_event_delete', name='team-event-delete'),17 url(r'^team/(?P<team_event_id>\d+)/delete/$', 'events.views.team_event_delete', name='team-event-delete'),
13 url(r'^team/(?P<team_event_id>\d+)/update/$', 'events.views.team_event_update', name='team-event-update'),18 url(r'^team/(?P<team_event_id>\d+)/update/$', 'events.views.team_event_update', name='team-event-update'),
1419
=== modified file 'loco_directory/events/views.py'
--- loco_directory/events/views.py 2010-08-24 15:24:24 +0000
+++ loco_directory/events/views.py 2010-08-28 16:20:56 +0000
@@ -8,7 +8,7 @@
8from events.models import TeamEvent8from events.models import TeamEvent
9from events.models import GlobalEvent9from events.models import GlobalEvent
10from teams.models import Team, Country, Continent10from teams.models import Team, Country, Continent
11from events.models import Attendee11from events.models import Attendee, ATTENDEE_PROMISE_CHOICES
1212
13from forms import TeamEventForm13from forms import TeamEventForm
14from forms import TeamEventCommentForm14from forms import TeamEventCommentForm
@@ -120,6 +120,8 @@
120 context = {120 context = {
121 'team_event_object': team_event_object,121 'team_event_object': team_event_object,
122 'user_is_attending': team_event_object.is_attending(request.user),122 'user_is_attending': team_event_object.is_attending(request.user),
123 'user_has_rsvped': team_event_object.has_rsvped(request.user),
124 'user_attendee': team_event_object.attendee(request.user),
123 'user_is_team_member': is_member,125 'user_is_team_member': is_member,
124 }126 }
125 return render_to_response('events/team_event_detail.html', 127 return render_to_response('events/team_event_detail.html',
@@ -332,6 +334,56 @@
332 context, RequestContext(request))334 context, RequestContext(request))
333335
334336
337@login_required
338def team_event_register_attending_status(request, team_event_id, promise):
339 """
340 Simple one-shot view to change you attending status. 'promise' is the
341 'sure'/'maybe'/'not' which is your status. This can be used to update your
342 existing status
343 You are redirect back to the event page when done.
344 """
345 team_event_object = get_object_or_404(TeamEvent, pk=team_event_id)
346 if team_event_object.has_rsvped(request.user):
347 attendee_object = team_event_object.attendee_set.get(attendee_profile__user=request.user)
348 else:
349 from userprofiles.models import create_profile
350 profile = create_profile(request.user.username)
351 attendee_object = Attendee(team_event=team_event_object, attendee_profile=profile, guests=0)
352
353 if request.method == 'POST':
354 if promise in [x[0] for x in ATTENDEE_PROMISE_CHOICES]:
355 attendee_object.promise = str(promise)
356 attendee_object.save()
357 request.user.message_set.create(message=_('Your registration has been saved.'))
358
359 return redirect( team_event_object )
360
361@login_required
362def team_event_register_guests(request, team_event_id):
363 """
364 Updates the number of guests that a person is bringing
365 """
366 team_event_object = get_object_or_404(TeamEvent, pk=team_event_id)
367 if team_event_object.has_rsvped(request.user):
368 attendee_object = team_event_object.attendee_set.get(attendee_profile__user=request.user)
369 else:
370 from userprofiles.models import create_profile
371 profile = create_profile(request.user.username)
372 attendee_object = Attendee(team_event=team_event_object, attendee_profile=profile, guests=0)
373
374 if request.method == 'POST':
375 try:
376 guests = int(request.POST['guests'])
377 if 0 <= guests <= 10:
378 attendee_object.guests = guests
379 attendee_object.save()
380 request.user.message_set.create(message=_('Saved your number of guests'))
381 except:
382 pass
383
384
385 return redirect( team_event_object )
386
335def team_event_comment_new(request, team_event_id):387def team_event_comment_new(request, team_event_id):
336 """388 """
337 create a comment for a team event389 create a comment for a team event
338390
=== 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 16:20:56 +0000
@@ -175,3 +175,7 @@
175 -webkit-box-shadow: 0px 0px 1px #FFE4B6;175 -webkit-box-shadow: 0px 0px 1px #FFE4B6;
176}176}
177177
178form.inline {
179 display: inline;
180}
181
178182
=== modified file 'loco_directory/templates/events/team_event_detail_attendees.inc.html'
--- loco_directory/templates/events/team_event_detail_attendees.inc.html 2010-08-24 15:24:24 +0000
+++ loco_directory/templates/events/team_event_detail_attendees.inc.html 2010-08-28 16:20:56 +0000
@@ -4,10 +4,55 @@
4 <tr>4 <tr>
5 <td colspan="2">5 <td colspan="2">
6 {% if user.is_authenticated %}6 {% if user.is_authenticated %}
7 {% if user_is_attending %}7 {% if user_has_rsvped %}
8 <a href="{% url team-event-register team_event_object.id %}">{% trans 'Change your Registration Status' %}</a>8 {% ifequal user_attendee.promise 'sure' %}
9 <p>{% trans 'You are registered to come to this event' %}
10 <form class="inline" method="POST" action="{% url team-event-register-guests team_event_object.id %}">
11 {% blocktrans with user_attendee.guests as guests %}I am bringing <input name="guests" type="number" min="0" max="10" width="2" value="{{ guests }}" /> guests.{% endblocktrans %}
12 <button submit="submit">{% trans 'Update' %}</button>
13 </form>
14 </p>
15 <form class="inline" method="POST" action="{% url team-event-register-attending-status team_event_object.id 'maybe' %}">
16 <button submit="submit">{% trans "I might be coming to this event" %}</button>
17 </form>
18 <form class="inline" method="POST" action="{% url team-event-register-attending-status team_event_object.id 'not'%}">
19 <button submit="submit">{% trans "&#9785; I'm not coming to this event" %}</button>
20 </form>
21 {% endifequal %}
22 {% ifequal user_attendee.promise 'maybe' %}
23 <p>{% trans 'You have registered that you might come to this event' %}
24 <form class="inline" method="POST" action="{% url team-event-register-guests team_event_object.id %}">
25 {% blocktrans with user_attendee.guests as guests %}I am bringing <input name="guests" type="number" min="0" max="10" width="2" value="{{ guests }}" /> guests.{% endblocktrans %}
26 <button submit="submit">{% trans 'Update' %}</button>
27 </form>
28 </p>
29 <form class="inline" method="POST" action="{% url team-event-register-attending-status team_event_object.id 'sure' %}">
30 <button submit="submit">{% trans "&#9786; I'm coming to this event" %}</button>
31 </form>
32 <form class="inline" method="POST" action="{% url team-event-register-attending-status team_event_object.id 'not' %}">
33 <button submit="submit">{% trans "&#9785; I'm not coming to this event" %}</button>
34 </form>
35 {% endifequal %}
36 {% ifequal user_attendee.promise 'not' %}
37 <p>{% trans 'You have registered that you will not be coming to this event' %}</p>
38 <form class="inline" method="POST" action="{% url team-event-register-attending-status team_event_object.id 'sure' %}">
39 <button submit="submit">{% trans "&#9786; I'm coming to this event" %}</button>
40 </form>
41 <form class="inline" method="POST" action="{% url team-event-register-attending-status team_event_object.id 'maybe' %}">
42 <button submit="submit">{% trans "I might be coming to this event" %}</button>
43 </form>
44 {% endifequal %}
9 {% else %}45 {% else %}
10 <a href="{% url team-event-register team_event_object.id %}">{% trans 'Register for this Event' %}</a>46 <p>{% trans 'Are you coming to this event?' %}</p>
47 <form class="inline" method="POST" action="{% url team-event-register-attending-status team_event_object.id 'sure' %}">
48 <button submit="submit">{% trans "&#9786; I'm coming to this event" %}</button>
49 </form>
50 <form class="inline" method="POST" action="{% url team-event-register-attending-status team_event_object.id 'maybe' %}">
51 <button submit="submit">{% trans "I might be coming to this event" %}</button>
52 </form>
53 <form class="inline" method="POST" action="{% url team-event-register-attending-status team_event_object.id 'not' %}">
54 <button submit="submit">{% trans "&#9785; I'm not coming to this event" %}</button>
55 </form>
11 {% endif %}56 {% endif %}
12 {% endif %}57 {% endif %}
13 </td>58 </td>

Subscribers

People subscribed via source and target branches