Merge lp:~daker/loco-team-portal/fix.1164296 into lp:loco-team-portal

Proposed by Adnane Belmadiaf
Status: Merged
Approved by: Adnane Belmadiaf
Approved revision: 634
Merged at revision: 634
Proposed branch: lp:~daker/loco-team-portal/fix.1164296
Merge into: lp:loco-team-portal
Diff against target: 179 lines (+39/-32)
3 files modified
loco_directory/events/forms.py (+8/-10)
loco_directory/events/views.py (+14/-12)
loco_directory/events/widgets.py (+17/-10)
To merge this branch: bzr merge lp:~daker/loco-team-portal/fix.1164296
Reviewer Review Type Date Requested Status
LoCo Team Portal Developers Pending
Review via email: mp+157739@code.launchpad.net

Commit message

Fix the time widget to select the correct time

To post a comment you must log in.
633. By Adnane Belmadiaf

More fixes

634. By Adnane Belmadiaf

removed comma

Preview Diff

[H/L] Next/Prev Comment, [J/K] Next/Prev File, [N/P] Next/Prev Hunk
=== modified file 'loco_directory/events/forms.py'
--- loco_directory/events/forms.py 2013-02-17 01:44:52 +0000
+++ loco_directory/events/forms.py 2013-04-08 20:27:19 +0000
@@ -44,12 +44,12 @@
4444
45 class Media:45 class Media:
46 css = {'all': (46 css = {'all': (
47 settings.MEDIA_URL + 'jquery-ui/css/smoothness/jquery-ui.css',47 settings.MEDIA_URL + 'jquery-ui/css/smoothness/jquery-ui.css',
48 )}48 )}
49 js = (49 js = (
50 settings.MEDIA_URL + 'jquery-ui/jquery-ui.js',50 settings.MEDIA_URL + 'jquery-ui/jquery-ui.js',
51 settings.MEDIA_URL + 'js/events-ui.js',51 settings.MEDIA_URL + 'js/events-ui.js',
52 )52 )
5353
54 def __init__(self, *args, **kargs):54 def __init__(self, *args, **kargs):
55 super(BaseEventForm, self).__init__(*args, **kargs)55 super(BaseEventForm, self).__init__(*args, **kargs)
@@ -60,7 +60,7 @@
60 begin = self.cleaned_data.get('date_begin')60 begin = self.cleaned_data.get('date_begin')
61 end = self.cleaned_data.get('date_end')61 end = self.cleaned_data.get('date_end')
62 if begin and end and begin > end:62 if begin and end and begin > end:
63 raise forms.ValidationError("Events can not end before they start.")63 raise forms.ValidationError(_("Events can not end before they start."))
64 return self.cleaned_data64 return self.cleaned_data
6565
6666
@@ -86,15 +86,13 @@
8686
87 def clean(self):87 def clean(self):
88 venue = self.cleaned_data.get('venue')88 venue = self.cleaned_data.get('venue')
89 begin = self.cleaned_data.get('date_begin', None)
90 end = self.cleaned_data.get('date_end', None)
89 if venue is not None:91 if venue is not None:
90 begin = self.cleaned_data.get('date_begin', None)
91 end = self.cleaned_data.get('date_end', None)
92 if begin is not None and end is not None:92 if begin is not None and end is not None:
93 self.cleaned_data['date_begin'] = venue.fromlocaltime(begin)93 self.cleaned_data['date_begin'] = venue.fromlocaltime(begin)
94 self.cleaned_data['date_end'] = venue.fromlocaltime(end)94 self.cleaned_data['date_end'] = venue.fromlocaltime(end)
95 elif self.teams:95 elif self.teams:
96 begin = self.cleaned_data.get('date_begin', None)
97 end = self.cleaned_data.get('date_end', None)
98 if begin is not None and end is not None:96 if begin is not None and end is not None:
99 self.cleaned_data['date_begin'] = self.teams[0].fromlocaltime(begin)97 self.cleaned_data['date_begin'] = self.teams[0].fromlocaltime(begin)
100 self.cleaned_data['date_end'] = self.teams[0].fromlocaltime(end)98 self.cleaned_data['date_end'] = self.teams[0].fromlocaltime(end)
10199
=== modified file 'loco_directory/events/views.py'
--- loco_directory/events/views.py 2013-02-18 22:16:11 +0000
+++ loco_directory/events/views.py 2013-04-08 20:27:19 +0000
@@ -8,12 +8,11 @@
8from django.db.models import Count8from django.db.models import Count
99
10from .models import (TeamEvent, GlobalEvent, Attendee, TeamEventComment)10from .models import (TeamEvent, GlobalEvent, Attendee, TeamEventComment)
11from teams.models import Team, Country, Continent11from teams.models import Team
1212
13from .forms import (TeamEventForm, TeamEventCommentForm,13from .forms import (TeamEventForm, TeamEventCommentForm,
14 GlobalEventForm, AttendeeRegistrationForm)14 GlobalEventForm, AttendeeRegistrationForm)
1515
16from common.utils import simple_iterator
17from common.forms import FilterHistoryList16from common.forms import FilterHistoryList
18from common import launchpad17from common import launchpad
1918
@@ -294,10 +293,11 @@
294 """293 """
295 update team event294 update team event
296 """295 """
297 team_event_object = get_object_or_404(TeamEvent, pk=team_event_id)296 team_event = get_object_or_404(TeamEvent, pk=team_event_id)
297 teams = team_event.teams.all()
298 #check if user is admin or owner of a team298 #check if user is admin or owner of a team
299 is_member = False299 is_member = False
300 for team in team_event_object.teams.all():300 for team in teams:
301 if launchpad.is_team_member(request.user, team):301 if launchpad.is_team_member(request.user, team):
302 is_member = True302 is_member = True
303 break303 break
@@ -306,22 +306,24 @@
306306
307 if is_on_lc or is_member:307 if is_on_lc or is_member:
308 if request.method == 'POST':308 if request.method == 'POST':
309 form = TeamEventForm(data=request.POST, instance=team_event_object, teams=team_event_object.teams.all())309 form = TeamEventForm(data=request.POST, instance=team_event, teams=teams)
310 if form.is_valid():310 if form.is_valid():
311 form.save()311 form.save()
312 request.user.message_set.create(message=_('Team Event updated.'))312 request.user.message_set.create(message=_('Team Event updated.'))
313 return redirect(team_event_object)313 return redirect(team_event)
314 else:314 else:
315 form = TeamEventForm(instance=team_event_object, teams=team_event_object.teams.all())315 form = TeamEventForm(instance=team_event, teams=teams)
316316
317 context = {317 context = {
318 'form': form,318 'form': form,
319 }319 }
320 return render_to_response('events/team_event_update.html',320 return render_to_response(
321 context, RequestContext(request))321 'events/team_event_update.html',
322 context, RequestContext(request)
323 )
322 else:324 else:
323 request.user.message_set.create(message='%s %s' % (_('You can not update this team event.'), _('You are not a member of the team or on the LoCo Council.')))325 request.user.message_set.create(message='%s %s' % (_('You can not update this team event.'), _('You are not a member of the team or on the LoCo Council.')))
324 return redirect(team_event_object)326 return redirect(team_event)
325327
326328
327@login_required329@login_required
@@ -349,8 +351,8 @@
349 is_past_event = True351 is_past_event = True
350352
351 context = {353 context = {
352 'form': form,354 'form': form,
353 'is_past_event': is_past_event,355 'is_past_event': is_past_event,
354 }356 }
355357
356 return render_to_response('events/team_event_register.html',358 return render_to_response('events/team_event_register.html',
357359
=== modified file 'loco_directory/events/widgets.py'
--- loco_directory/events/widgets.py 2013-02-17 01:44:52 +0000
+++ loco_directory/events/widgets.py 2013-04-08 20:27:19 +0000
@@ -1,10 +1,10 @@
1# -*- coding: utf-8 -*-1# -*- coding: utf-8 -*-
2from django import forms
3from django.utils.translation import ugettext as _
4
2from datetime import time5from datetime import time
3from time import strptime, strftime6from time import strptime, strftime
47
5from django import forms
6from django.utils.translation import ugettext as _
7
88
9class DateWidget(forms.DateInput):9class DateWidget(forms.DateInput):
10 """A more-friendly date widget with a pop-up calendar.10 """A more-friendly date widget with a pop-up calendar.
@@ -45,7 +45,17 @@
45 super(TimeWidget, self).__init__(widgets, attrs)45 super(TimeWidget, self).__init__(widgets, attrs)
4646
47 def decompress(self, value):47 def decompress(self, value):
48 if isinstance(value, time):48 if isinstance(value, str):
49 value = strptime(value, '%I:%M %p')
50 hour = int(value.tm_hour)
51 minute = int(value.tm_min)
52 if hour < 12:
53 meridian = 'AM'
54 else:
55 meridian = 'PM'
56 hour -= 12
57 return (hour, minute, meridian)
58 elif isinstance(value, time):
49 hour = int(value.strftime("%I"))59 hour = int(value.strftime("%I"))
50 minute = int(value.strftime("%M"))60 minute = int(value.strftime("%M"))
51 meridian = value.strftime("%p")61 meridian = value.strftime("%p")
@@ -65,11 +75,8 @@
6575
6676
67class DateTimeWidget(forms.SplitDateTimeWidget):77class DateTimeWidget(forms.SplitDateTimeWidget):
68 """A more-friendly date/time widget.78 """
6979 A more-friendly date/time widget.
70 Inspired by:
71
72 http://copiesofcopies.org/webl/2010/04/26/a-better-datetime-widget-for-django/
73 """80 """
74 def __init__(self, attrs=None, date_format=None, time_format=None):81 def __init__(self, attrs=None, date_format=None, time_format=None):
75 super(DateTimeWidget, self).__init__(attrs, date_format, time_format)82 super(DateTimeWidget, self).__init__(attrs, date_format, time_format)
@@ -87,4 +94,4 @@
87 return (None, None)94 return (None, None)
8895
89 def format_output(self, rendered_widgets):96 def format_output(self, rendered_widgets):
90 return '%s%s' % (rendered_widgets[0], rendered_widgets[1])97 return '%s %s' % (rendered_widgets[0], rendered_widgets[1])

Subscribers

People subscribed via source and target branches