Skip to content

Commit df5417e

Browse files
committed
Use xslugify on floor and room names, instead of slugify which ignores slashes.
- Legacy-Id: 11592
1 parent 87273de commit df5417e

5 files changed

Lines changed: 25 additions & 20 deletions

File tree

ietf/meeting/models.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626
from ietf.name.models import MeetingTypeName, TimeSlotTypeName, SessionStatusName, ConstraintName, RoomResourceName
2727
from ietf.person.models import Person
2828
from ietf.utils.storage import NoLocationMigrationFileSystemStorage
29+
from ietf.utils.text import xslugify
2930

3031
countries = pytz.country_names.items()
3132
countries.sort(lambda x,y: cmp(x[1], y[1]))
@@ -365,7 +366,7 @@ class Meta:
365366

366367
def floorplan_path(instance, filename):
367368
root, ext = os.path.splitext(filename)
368-
return u"%s/floorplan-%s-%s%s" % (settings.FLOORPLAN_MEDIA_DIR, instance.meeting.number, slugify(instance.name), ext)
369+
return u"%s/floorplan-%s-%s%s" % (settings.FLOORPLAN_MEDIA_DIR, instance.meeting.number, xslugify(instance.name), ext)
369370

370371
class FloorPlan(models.Model):
371372
name = models.CharField(max_length=255)

ietf/meeting/tests_views.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
from ietf.name.models import SessionStatusName
2525
from ietf.utils.test_utils import TestCase, login_testing_unauthorized, unicontent
2626
from ietf.utils.mail import outbox
27+
from ietf.utils.text import xslugify
2728

2829
from ietf.person.factories import PersonFactory
2930
from ietf.group.factories import GroupFactory
@@ -1111,7 +1112,7 @@ def test_floor_plan_page(self):
11111112
r = self.client.get(url)
11121113
self.assertEqual(r.status_code, 200)
11131114

1114-
url = urlreverse('ietf.meeting.views.floor_plan', kwargs={'floor': slugify(floorplan.name)} )
1115+
url = urlreverse('ietf.meeting.views.floor_plan', kwargs={'floor': xslugify(floorplan.name)} )
11151116
r = self.client.get(url)
11161117
self.assertEqual(r.status_code, 200)
11171118

ietf/meeting/views.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@
5151
from ietf.utils.mail import send_mail_message
5252
from ietf.utils.pipe import pipe
5353
from ietf.utils.pdf import pdf_pages
54+
from ietf.utils.text import xslugify
5455

5556
from .forms import (InterimMeetingModelForm, InterimAnnounceForm, InterimSessionModelForm,
5657
InterimCancelForm)
@@ -1432,7 +1433,7 @@ def floor_plan(request, num=None, floor=None, ):
14321433
schedule = meeting.agenda
14331434
floors = FloorPlan.objects.filter(meeting=meeting).order_by('order')
14341435
if floor:
1435-
floors = [ f for f in floors if slugify(f.name) == floor ]
1436+
floors = [ f for f in floors if xslugify(f.name) == floor ]
14361437
return render(request, 'meeting/floor-plan.html', {
14371438
"schedule": schedule,
14381439
"number": num,

ietf/templates/meeting/agenda.html

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
{% load origin %}
44

55
{% load ietf_filters %}
6+
{% load textfilters %}
67

78
{% block title %}
89
IETF {{ schedule.meeting.number }} meeting agenda
@@ -194,9 +195,9 @@ <h2>
194195
<td colspan="3">
195196
{% if item.timeslot.show_location and item.timeslot.get_location %}
196197
{% if schedule.meeting.number|add:"0" < 96 %}
197-
<a href="https://tools.ietf.org/agenda/{{schedule.meeting.number}}/venue/?room={{ item.timeslot.get_location|slugify }}">{{item.timeslot.get_location|split:"/"|join:"/<wbr>"}}</a>
198+
<a href="https://tools.ietf.org/agenda/{{schedule.meeting.number}}/venue/?room={{ item.timeslot.get_location|xslugify }}">{{item.timeslot.get_location|split:"/"|join:"/<wbr>"}}</a>
198199
{% else %}
199-
<a href="{% url 'ietf.meeting.views.floor_plan' num=schedule.meeting.number %}?room={{ item.timeslot.get_location|slugify }}">{{item.timeslot.get_location|split:"/"|join:"/<wbr>"}}</a>
200+
<a href="{% url 'ietf.meeting.views.floor_plan' num=schedule.meeting.number %}?room={{ item.timeslot.get_location|xslugify }}">{{item.timeslot.get_location|split:"/"|join:"/<wbr>"}}</a>
200201
{% endif %}
201202
{% endif %}
202203
</td>
@@ -220,9 +221,9 @@ <h2>
220221
<td colspan="3">
221222
{% if item.timeslot.show_location and item.timeslot.get_location %}
222223
{% if schedule.meeting.number|add:"0" < 96 %}
223-
<a href="https://tools.ietf.org/agenda/{{schedule.meeting.number}}/venue/?room={{ item.timeslot.get_location|slugify }}">{{item.timeslot.get_location|split:"/"|join:"/<wbr>"}}</a>
224+
<a href="https://tools.ietf.org/agenda/{{schedule.meeting.number}}/venue/?room={{ item.timeslot.get_location|xslugify }}">{{item.timeslot.get_location|split:"/"|join:"/<wbr>"}}</a>
224225
{% else %}
225-
<a href="{% url 'ietf.meeting.views.floor_plan' num=schedule.meeting.number %}?room={{ item.timeslot.get_location|slugify }}">{{item.timeslot.get_location|split:"/"|join:"/<wbr>"}}</a>
226+
<a href="{% url 'ietf.meeting.views.floor_plan' num=schedule.meeting.number %}?room={{ item.timeslot.get_location|xslugify }}">{{item.timeslot.get_location|split:"/"|join:"/<wbr>"}}</a>
226227
{% endif %}
227228
{% endif %}
228229
</td>
@@ -233,9 +234,9 @@ <h2>
233234
<td>
234235
{% if item.timeslot.show_location and item.timeslot.get_location %}
235236
{% if schedule.meeting.number|add:"0" < 96 %}
236-
<a href="https://tools.ietf.org/agenda/{{schedule.meeting.number}}/venue/?room={{ item.timeslot.get_location|slugify }}">{{item.timeslot.get_location|split:"/"|join:"/<wbr>"}}</a>
237+
<a href="https://tools.ietf.org/agenda/{{schedule.meeting.number}}/venue/?room={{ item.timeslot.get_location|xslugify }}">{{item.timeslot.get_location|split:"/"|join:"/<wbr>"}}</a>
237238
{% else %}
238-
<a href="{% url 'ietf.meeting.views.floor_plan' num=schedule.meeting.number %}?room={{ item.timeslot.get_location|slugify }}">{{item.timeslot.get_location|split:"/"|join:"/<wbr>"}}</a>
239+
<a href="{% url 'ietf.meeting.views.floor_plan' num=schedule.meeting.number %}?room={{ item.timeslot.get_location|xslugify }}">{{item.timeslot.get_location|split:"/"|join:"/<wbr>"}}</a>
239240
{% endif %}
240241
{% endif %}
241242
</td>

ietf/templates/meeting/floor-plan.html

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
{% load origin %}
44

55
{% load ietf_filters %}
6+
{% load textfilters %}
67
{% load staticfiles %}
78

89
{% block title %}
@@ -48,27 +49,27 @@
4849
<div class="row">
4950
<div class="col-md-12">
5051
{% for floor in floors %}
51-
<div class="anchor-target" id="{{floor.name|slugify}}"></div>
52+
<div class="anchor-target" id="{{floor.name|xslugify}}"></div>
5253
<h3>{{ floor.name }}</h3>
5354
<div class="floor-plan">
54-
<img id="{{floor.name|slugify}}-image" class="col-md-12 col-sm-12 col-xs-12" src="{{ floor.image.url }}" >
55+
<img id="{{floor.name|xslugify}}-image" class="col-md-12 col-sm-12 col-xs-12" src="{{ floor.image.url }}" >
5556
<!-- We need as many of these as we can have individual rooms combining into one -->
56-
<div id="{{floor.name|slugify}}-arrowdiv0" style="position: absolute; left: 0; top: 67.5px; visibility: hidden;"><img id="arrow" src="{% static 'ietf/images/arrow-ani.gif' %}"></div>
57-
<div id="{{floor.name|slugify}}-arrowdiv1" style="position: absolute; left: 0; top: 67.5px; visibility: hidden;"><img id="arrow" src="{% static 'ietf/images/arrow-ani.gif' %}"></div>
58-
<div id="{{floor.name|slugify}}-arrowdiv2" style="position: absolute; left: 0; top: 67.5px; visibility: hidden;"><img id="arrow" src="{% static 'ietf/images/arrow-ani.gif' %}"></div>
59-
<div id="{{floor.name|slugify}}-arrowdiv3" style="position: absolute; left: 0; top: 67.5px; visibility: hidden;"><img id="arrow" src="{% static 'ietf/images/arrow-ani.gif' %}"></div>
57+
<div id="{{floor.name|xslugify}}-arrowdiv0" style="position: absolute; left: 0; top: 67.5px; visibility: hidden;"><img id="arrow" src="{% static 'ietf/images/arrow-ani.gif' %}"></div>
58+
<div id="{{floor.name|xslugify}}-arrowdiv1" style="position: absolute; left: 0; top: 67.5px; visibility: hidden;"><img id="arrow" src="{% static 'ietf/images/arrow-ani.gif' %}"></div>
59+
<div id="{{floor.name|xslugify}}-arrowdiv2" style="position: absolute; left: 0; top: 67.5px; visibility: hidden;"><img id="arrow" src="{% static 'ietf/images/arrow-ani.gif' %}"></div>
60+
<div id="{{floor.name|xslugify}}-arrowdiv3" style="position: absolute; left: 0; top: 67.5px; visibility: hidden;"><img id="arrow" src="{% static 'ietf/images/arrow-ani.gif' %}"></div>
6061
</div>
6162
<div class="rooms small">
6263
{% for f in floors %}
6364
{% for room in f.room_set.all %}
64-
<a href="javascript: setarrow('{{room.name|slugify}}')">{{ room.name|nbsp }}</a>&ensp;
65+
<a href="javascript: setarrow('{{room.name|xslugify}}')">{{ room.name|nbsp }}</a>&ensp;
6566
{% endfor %}
6667
{% endfor %}
6768
<hr class="slim">
6869
{% for f in floors %}
6970
{% for room in f.room_set.all %}
7071
{% if room.functional_display_name %}
71-
<a href="javascript: setarrow('{{room.name|slugify}}')">{{ room.functional_display_name|nbsp }}</a>&ensp;
72+
<a href="javascript: setarrow('{{room.name|xslugify}}')">{{ room.functional_display_name|nbsp }}</a>&ensp;
7273
{% endif %}
7374
{% endfor %}
7475
{% endfor %}
@@ -85,7 +86,7 @@ <h3>{{ floor.name }}</h3>
8586
<script>
8687
// These must match the 'arrowdiv' divs above
8788
var arrowsuffixlist = [ '0', '1', '2', '3' ];
88-
var floorlist = [{% for floor in floors %}{% if not forloop.first %}, {%endif%}'{{floor.name|slugify}}'{% endfor %}];
89+
var floorlist = [{% for floor in floors %}{% if not forloop.first %}, {%endif%}'{{floor.name|xslugify}}'{% endfor %}];
8990

9091
function roommap(nm)
9192
{
@@ -102,10 +103,10 @@ <h3>{{ floor.name }}</h3>
102103

103104
if (0) { }
104105
{% for room in meeting.room_set.all %}
105-
else if (nm == '{{room.name|slugify}}') { left = {{room.left}}; top = {{room.top}}; right = {{room.right}}; bottom = {{room.bottom}}; floor='{{room.floorplan.name|slugify}}'; width={{room.floorplan.image.width}}; }{% endfor %}
106+
else if (nm == '{{room.name|xslugify}}') { left = {{room.left}}; top = {{room.top}}; right = {{room.right}}; bottom = {{room.bottom}}; floor='{{room.floorplan.name|xslugify}}'; width={{room.floorplan.image.width}}; }{% endfor %}
106107

107108
{% for room in meeting.room_set.all %}{% if room.functional_display_name %}
108-
else if (nm == '{{room.functional_name|slugify}}') { left = {{room.left}}; top = {{room.top}}; right = {{room.right}}; bottom = {{room.bottom}}; floor='{{room.floorplan.name|slugify}}'; width={{room.floorplan.image.width}}; }{% endif %}{% endfor %}
109+
else if (nm == '{{room.functional_name|xslugify}}') { left = {{room.left}}; top = {{room.top}}; right = {{room.right}}; bottom = {{room.bottom}}; floor='{{room.floorplan.name|xslugify}}'; width={{room.floorplan.image.width}}; }{% endif %}{% endfor %}
109110

110111
else return null;
111112

0 commit comments

Comments
 (0)