Merged in [15715] from rcross@amsl.com:
Fix issue where new non-session location field value isn't saved. Fixes #2625.
- Legacy-Id: 15756
Note: SVN reference [15715] has been migrated to Git commit a47fba833f
This commit is contained in:
commit
e471386cf2
|
@ -282,6 +282,29 @@ class SecrMeetingTestCase(TestCase):
|
|||
response = self.client.get(url)
|
||||
self.assertEqual(response.status_code, 200)
|
||||
|
||||
def test_meetings_nonsession_add_valid(self):
|
||||
meeting = make_meeting_test_data()
|
||||
room = meeting.room_set.first()
|
||||
group = Group.objects.get(acronym='secretariat')
|
||||
url = reverse('ietf.secr.meetings.views.non_session',kwargs={'meeting_id':42,'schedule_name':'test-agenda'})
|
||||
self.client.login(username="secretary", password="secretary+password")
|
||||
response = self.client.post(url, {
|
||||
'day':'1',
|
||||
'time':'08:00',
|
||||
'duration':'02:00',
|
||||
'name':'Testing',
|
||||
'short':'test',
|
||||
'type':'reg',
|
||||
'group':group.pk,
|
||||
'location': room.pk,
|
||||
})
|
||||
print response.content
|
||||
self.assertRedirects(response, url)
|
||||
session = Session.objects.filter(meeting=meeting, name='Testing').first()
|
||||
self.assertTrue(session)
|
||||
|
||||
self.assertEqual(session.timeslotassignments.first().timeslot.location, room)
|
||||
|
||||
def test_meetings_nonsession_add_invalid(self):
|
||||
make_meeting_test_data()
|
||||
group = Group.objects.get(acronym='secretariat')
|
||||
|
@ -396,4 +419,3 @@ class SecrMeetingTestCase(TestCase):
|
|||
values = [ x[0] for x in times ]
|
||||
self.assertTrue(times)
|
||||
self.assertTrue(timeslot.time.strftime('%H%M') in values)
|
||||
|
||||
|
|
|
@ -434,10 +434,9 @@ def non_session(request, meeting_id, schedule_name):
|
|||
|
||||
check_nonsession(meeting,schedule)
|
||||
|
||||
slots = TimeSlot.objects.filter(meeting=meeting)
|
||||
slots = slots.filter(sessionassignments__schedule=schedule)
|
||||
slots = slots.filter(type__in=('break','reg','other','plenary','lead'))
|
||||
slots = slots.order_by('-type__name','time')
|
||||
non_session_types = ('break','reg','other','plenary','lead')
|
||||
assignments = schedule.assignments.filter(timeslot__type__in=non_session_types)
|
||||
assignments = assignments.order_by('-timeslot__type__name','timeslot__time')
|
||||
|
||||
if request.method == 'POST':
|
||||
form = NonSessionForm(request.POST, meeting=meeting)
|
||||
|
@ -448,6 +447,7 @@ def non_session(request, meeting_id, schedule_name):
|
|||
type = form.cleaned_data['type']
|
||||
group = form.cleaned_data['group']
|
||||
duration = form.cleaned_data['duration']
|
||||
location = form.cleaned_data['location']
|
||||
|
||||
# create TimeSlot object
|
||||
timeslot = TimeSlot.objects.create(type=type,
|
||||
|
@ -455,6 +455,7 @@ def non_session(request, meeting_id, schedule_name):
|
|||
name=name,
|
||||
time=time,
|
||||
duration=duration,
|
||||
location=location,
|
||||
show_location=form.cleaned_data['show_location'])
|
||||
|
||||
if timeslot.type.slug not in ('other','plenary','lead'):
|
||||
|
@ -485,7 +486,7 @@ def non_session(request, meeting_id, schedule_name):
|
|||
messages.warning(request, 'There are non-session items which do not have a room assigned')
|
||||
|
||||
return render(request, 'meetings/non_session.html', {
|
||||
'slots': slots,
|
||||
'assignments': assignments,
|
||||
'form': form,
|
||||
'meeting': meeting,
|
||||
'schedule': schedule},
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
<div class="module">
|
||||
<h2>TimeSlots</h2>
|
||||
|
||||
{% if slots %}
|
||||
{% if assignments %}
|
||||
<table id="nonsessions" class="full-width">
|
||||
<thead>
|
||||
<tr>
|
||||
|
@ -23,19 +23,19 @@
|
|||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for item in slots %}
|
||||
{% for assignment in assignments %}
|
||||
<tr class="{% cycle row1 row2 %}{% ifchanged item.type %} break{% endifchanged %}{% if item.session.status.slug == "canceled" %} cancelled{% endif %}">
|
||||
<td>{{ item.time|date:"D" }}</td>
|
||||
<td>{{ item.time|date:"H:i" }}-{{ item.end_time|date:"H:i" }}</td>
|
||||
<td>{{ item.name }}</td>
|
||||
<td>{{ item.session.short }}</td>
|
||||
<td>{{ item.session.group.acronym }}</td>
|
||||
<td>{{ item.location }}</td>
|
||||
<td>{{ item.show_location }}</td>
|
||||
<td>{{ item.type }}</td>
|
||||
<td><a href="{% url "ietf.secr.meetings.views.non_session_edit" meeting_id=meeting.number schedule_name=schedule.name slot_id=item.id %}">Edit</a></td>
|
||||
<td><a href="{% url "ietf.secr.meetings.views.non_session_cancel" meeting_id=meeting.number schedule_name=schedule.name slot_id=item.id %}">Cancel</a></td>
|
||||
<td><a href="{% url "ietf.secr.meetings.views.non_session_delete" meeting_id=meeting.number schedule_name=schedule.name slot_id=item.id %}">Delete</a></td>
|
||||
<td>{{ assignment.timeslot.time|date:"D" }}</td>
|
||||
<td>{{ assignment.timeslot.time|date:"H:i" }}-{{ assignment.timeslot.end_time|date:"H:i" }}</td>
|
||||
<td>{{ assignment.timeslot.name }}</td>
|
||||
<td>{{ assignment.session.short }}</td>
|
||||
<td>{{ assignment.session.group.acronym }}</td>
|
||||
<td>{{ assignment.timeslot.location }}</td>
|
||||
<td>{{ assignment.timeslot.show_location }}</td>
|
||||
<td>{{ assignment.timeslot.type }}</td>
|
||||
<td><a href="{% url "ietf.secr.meetings.views.non_session_edit" meeting_id=meeting.number schedule_name=schedule.name slot_id=assignment.timeslot.id %}">Edit</a></td>
|
||||
<td><a href="{% url "ietf.secr.meetings.views.non_session_cancel" meeting_id=meeting.number schedule_name=schedule.name slot_id=assignment.timeslot.id %}">Cancel</a></td>
|
||||
<td><a href="{% url "ietf.secr.meetings.views.non_session_delete" meeting_id=meeting.number schedule_name=schedule.name slot_id=assignment.timeslot.id %}">Delete</a></td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
|
|
|
@ -225,7 +225,7 @@ class Command(BaseCommand):
|
|||
# update later
|
||||
# Permissions will be handled during permission update later.
|
||||
return env, ""
|
||||
except TracError as e:
|
||||
except (TracError, IOError) as e:
|
||||
msg = "While creating Trac instance for %s: %s" % (group, e)
|
||||
self.log(msg)
|
||||
return None, msg
|
||||
|
|
Loading…
Reference in a new issue