Use xslugify on floor and room names, instead of slugify which ignores slashes.
- Legacy-Id: 11592
This commit is contained in:
parent
87273de795
commit
df5417e7b3
|
@ -26,6 +26,7 @@ from ietf.group.utils import can_manage_materials
|
|||
from ietf.name.models import MeetingTypeName, TimeSlotTypeName, SessionStatusName, ConstraintName, RoomResourceName
|
||||
from ietf.person.models import Person
|
||||
from ietf.utils.storage import NoLocationMigrationFileSystemStorage
|
||||
from ietf.utils.text import xslugify
|
||||
|
||||
countries = pytz.country_names.items()
|
||||
countries.sort(lambda x,y: cmp(x[1], y[1]))
|
||||
|
@ -365,7 +366,7 @@ class Room(models.Model):
|
|||
|
||||
def floorplan_path(instance, filename):
|
||||
root, ext = os.path.splitext(filename)
|
||||
return u"%s/floorplan-%s-%s%s" % (settings.FLOORPLAN_MEDIA_DIR, instance.meeting.number, slugify(instance.name), ext)
|
||||
return u"%s/floorplan-%s-%s%s" % (settings.FLOORPLAN_MEDIA_DIR, instance.meeting.number, xslugify(instance.name), ext)
|
||||
|
||||
class FloorPlan(models.Model):
|
||||
name = models.CharField(max_length=255)
|
||||
|
|
|
@ -24,6 +24,7 @@ from ietf.meeting.test_data import make_meeting_test_data, make_interim_meeting
|
|||
from ietf.name.models import SessionStatusName
|
||||
from ietf.utils.test_utils import TestCase, login_testing_unauthorized, unicontent
|
||||
from ietf.utils.mail import outbox
|
||||
from ietf.utils.text import xslugify
|
||||
|
||||
from ietf.person.factories import PersonFactory
|
||||
from ietf.group.factories import GroupFactory
|
||||
|
@ -1111,7 +1112,7 @@ class FloorPlanTests(TestCase):
|
|||
r = self.client.get(url)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
|
||||
url = urlreverse('ietf.meeting.views.floor_plan', kwargs={'floor': slugify(floorplan.name)} )
|
||||
url = urlreverse('ietf.meeting.views.floor_plan', kwargs={'floor': xslugify(floorplan.name)} )
|
||||
r = self.client.get(url)
|
||||
self.assertEqual(r.status_code, 200)
|
||||
|
||||
|
|
|
@ -51,6 +51,7 @@ from ietf.meeting.helpers import send_interim_approval_request
|
|||
from ietf.utils.mail import send_mail_message
|
||||
from ietf.utils.pipe import pipe
|
||||
from ietf.utils.pdf import pdf_pages
|
||||
from ietf.utils.text import xslugify
|
||||
|
||||
from .forms import (InterimMeetingModelForm, InterimAnnounceForm, InterimSessionModelForm,
|
||||
InterimCancelForm)
|
||||
|
@ -1432,7 +1433,7 @@ def floor_plan(request, num=None, floor=None, ):
|
|||
schedule = meeting.agenda
|
||||
floors = FloorPlan.objects.filter(meeting=meeting).order_by('order')
|
||||
if floor:
|
||||
floors = [ f for f in floors if slugify(f.name) == floor ]
|
||||
floors = [ f for f in floors if xslugify(f.name) == floor ]
|
||||
return render(request, 'meeting/floor-plan.html', {
|
||||
"schedule": schedule,
|
||||
"number": num,
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
{% load origin %}
|
||||
|
||||
{% load ietf_filters %}
|
||||
{% load textfilters %}
|
||||
|
||||
{% block title %}
|
||||
IETF {{ schedule.meeting.number }} meeting agenda
|
||||
|
@ -194,9 +195,9 @@
|
|||
<td colspan="3">
|
||||
{% if item.timeslot.show_location and item.timeslot.get_location %}
|
||||
{% if schedule.meeting.number|add:"0" < 96 %}
|
||||
<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>
|
||||
<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>
|
||||
{% else %}
|
||||
<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>
|
||||
<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>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</td>
|
||||
|
@ -220,9 +221,9 @@
|
|||
<td colspan="3">
|
||||
{% if item.timeslot.show_location and item.timeslot.get_location %}
|
||||
{% if schedule.meeting.number|add:"0" < 96 %}
|
||||
<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>
|
||||
<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>
|
||||
{% else %}
|
||||
<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>
|
||||
<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>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</td>
|
||||
|
@ -233,9 +234,9 @@
|
|||
<td>
|
||||
{% if item.timeslot.show_location and item.timeslot.get_location %}
|
||||
{% if schedule.meeting.number|add:"0" < 96 %}
|
||||
<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>
|
||||
<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>
|
||||
{% else %}
|
||||
<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>
|
||||
<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>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
</td>
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
{% load origin %}
|
||||
|
||||
{% load ietf_filters %}
|
||||
{% load textfilters %}
|
||||
{% load staticfiles %}
|
||||
|
||||
{% block title %}
|
||||
|
@ -48,27 +49,27 @@ hr.slim {
|
|||
<div class="row">
|
||||
<div class="col-md-12">
|
||||
{% for floor in floors %}
|
||||
<div class="anchor-target" id="{{floor.name|slugify}}"></div>
|
||||
<div class="anchor-target" id="{{floor.name|xslugify}}"></div>
|
||||
<h3>{{ floor.name }}</h3>
|
||||
<div class="floor-plan">
|
||||
<img id="{{floor.name|slugify}}-image" class="col-md-12 col-sm-12 col-xs-12" src="{{ floor.image.url }}" >
|
||||
<img id="{{floor.name|xslugify}}-image" class="col-md-12 col-sm-12 col-xs-12" src="{{ floor.image.url }}" >
|
||||
<!-- We need as many of these as we can have individual rooms combining into one -->
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
<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>
|
||||
</div>
|
||||
<div class="rooms small">
|
||||
{% for f in floors %}
|
||||
{% for room in f.room_set.all %}
|
||||
<a href="javascript: setarrow('{{room.name|slugify}}')">{{ room.name|nbsp }}</a> 
|
||||
<a href="javascript: setarrow('{{room.name|xslugify}}')">{{ room.name|nbsp }}</a> 
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
<hr class="slim">
|
||||
{% for f in floors %}
|
||||
{% for room in f.room_set.all %}
|
||||
{% if room.functional_display_name %}
|
||||
<a href="javascript: setarrow('{{room.name|slugify}}')">{{ room.functional_display_name|nbsp }}</a> 
|
||||
<a href="javascript: setarrow('{{room.name|xslugify}}')">{{ room.functional_display_name|nbsp }}</a> 
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
|
@ -85,7 +86,7 @@ hr.slim {
|
|||
<script>
|
||||
// These must match the 'arrowdiv' divs above
|
||||
var arrowsuffixlist = [ '0', '1', '2', '3' ];
|
||||
var floorlist = [{% for floor in floors %}{% if not forloop.first %}, {%endif%}'{{floor.name|slugify}}'{% endfor %}];
|
||||
var floorlist = [{% for floor in floors %}{% if not forloop.first %}, {%endif%}'{{floor.name|xslugify}}'{% endfor %}];
|
||||
|
||||
function roommap(nm)
|
||||
{
|
||||
|
@ -102,10 +103,10 @@ hr.slim {
|
|||
|
||||
if (0) { }
|
||||
{% for room in meeting.room_set.all %}
|
||||
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 %}
|
||||
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 %}
|
||||
|
||||
{% for room in meeting.room_set.all %}{% if room.functional_display_name %}
|
||||
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 %}
|
||||
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 %}
|
||||
|
||||
else return null;
|
||||
|
||||
|
|
Loading…
Reference in a new issue