Make url/url_code methods safe

This commit is contained in:
Claude Paroz 2018-05-28 10:32:35 +02:00
parent 5dc29dd907
commit eb200de278
6 changed files with 52 additions and 53 deletions

View file

@ -5,6 +5,7 @@ Created on 17 nov. 2012
"""
from django.db import models
from django.utils.html import format_html
from tinymce import models as tinymce_models
@ -53,7 +54,7 @@ class Domaine(models.Model):
return '{0} - {1}'.format(self.code, self.nom)
def url(self):
return "<a href='/domaine/{0}/'>{1}</a>".format(self.pk, self.__str__())
return format_html('<a href="/domaine/{0}/">{1}</a>', self.pk, str(self))
class Processus(models.Model):
@ -70,7 +71,7 @@ class Processus(models.Model):
return '{0} - {1}'.format(self.code, self.nom)
def url(self):
return "<a href='/processus/{0}'>{1}</a>".format(self.pk, self.__str__())
return format_html('<a href="/processus/{0}/">{1}</a>', self.pk, str(self))
class Module(models.Model):
@ -103,10 +104,10 @@ class Module(models.Model):
return '{0} - {1}'.format(self.code, self.nom)
def url(self):
return "<a href='/module/{0}/'>{1}</a>".format(self.pk, self.__str__())
return format_html('<a href="/module/{0}/">{1}</a>', self.pk, str(self))
def url_code(self):
return "<a href='/module/{0}/' title=\"{2}\">{1}</a>".format(self.pk, self.code, self.nom)
return format_html('<a href="/module/{0}/" title="{2}">{1}</a>', self.pk, self.code, self.nom)
@property
def total_presentiel(self):

View file

@ -8,7 +8,7 @@ from django.core import mail
from django.test import TestCase, Client
from django.urls import reverse
# Create your tests here.
from cms.models import Domaine, Processus, Module
@ -17,11 +17,9 @@ class PdfTestCase(TestCase):
@classmethod
def setUpTestData(cls):
User.objects.create_superuser('me', 'me@example.org', 'mepassword')
def setUp(self):
self.client = Client()
self.client.login(username='me', password='mepassword')
def test_index(self):

View file

@ -6,7 +6,7 @@
<div id="content-main">
<h1>Domaine: {{ object }}</h1>
{% for p in object.processus_set.all %}
<div class="processus"><h2>Processus: {{ p.url|safe }}</h2></div>
<div class="processus"><h2>Processus: {{ p.url }}</h2></div>
{% for m in p.module_set.all %}
<div class="module">Module: <a href="{% url 'module-detail' m.id %}">{{ m }}</a></div>
<div class="competence">Compétences visées</div>

View file

@ -17,9 +17,9 @@
<th width="180px" style="text-align:center;">Sem6</th>
</tr>
<tr>
<td rowspan="4" class="l1 d">{{ D1.url|safe }}</td>
<td rowspan="2" class="l1 p">{{ P01.url|safe }}</td>
<td class="l1 m">{{ M01.url_code|safe }}</td>
<td rowspan="4" class="l1 d">{{ D1.url }}</td>
<td rowspan="2" class="l1 p">{{ P01.url }}</td>
<td class="l1 m">{{ M01.url_code }}</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
@ -27,7 +27,7 @@
<td>&nbsp;</td>
</tr>
<tr>
<td class="l1 m" >{{ M02.url_code|safe }}</td>
<td class="l1 m" >{{ M02.url_code }}</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
@ -35,18 +35,18 @@
<td>&nbsp;</td>
</tr>
<tr>
<td rowspan="2" class="l1 p">{{ P02.url|safe }}</td>
<td rowspan="2" class="l1 p">{{ P02.url }}</td>
<td></td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td class="l1 m">{{ M03.url_code|safe }}</td>
<td class="l1 m">{{ M03.url_code }}</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td></td>
<td class="l1 m">{{ M04.url_code|safe }}</td>
<td class="l1 m">{{ M04.url_code }}</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
@ -54,92 +54,92 @@
</tr>
<!-- Ligne 2 -->
<tr>
<td rowspan="3" class="l2 d">{{ D2.url|safe }}</td>
<td class="l2 p">{{ P03.url|safe }}</td>
<td class="l2 m">{{ M05.url_code|safe }}</td>
<td rowspan="3" class="l2 d">{{ D2.url }}</td>
<td class="l2 p">{{ P03.url }}</td>
<td class="l2 m">{{ M05.url_code }}</td>
<td>&nbsp;</td>
<td class="l2 m">{{ M06.url_code|safe }}</td>
<td class="l2 m">{{ M06.url_code }}</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<tr>
<td rowspan="2" class="l2 p">{{ P04.url|safe }}</td>
<td rowspan="2" class="l2 p">{{ P04.url }}</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td class="l2 m">{{ M07.url_code|safe }}</td>
<td class="l2 m">{{ M09.url_code|safe }}</td>
<td class="l2 m">{{ M07.url_code }}</td>
<td class="l2 m">{{ M09.url_code }}</td>
</tr>
<tr>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td class="l2 m">{{ M08.url_code|safe }}</td
<td class="l2 m">{{ M08.url_code }}</td
><td>&nbsp;</td>
</tr>
<!-- Ligne 3 -->
<tr>
<td rowspan="2" class="l3 d">{{ D3.url|safe }}</td>
<td class="l3 p">{{ P05.url|safe }}</td>
<td rowspan="2" class="l3 d">{{ D3.url }}</td>
<td class="l3 p">{{ P05.url }}</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td colspan="2" class="l3 m">{{ M10.url_code|safe }}</td>
<td class="l3 m">{{ M12.url_code|safe }}</td>
<td colspan="2" class="l3 m">{{ M10.url_code }}</td>
<td class="l3 m">{{ M12.url_code }}</td>
<td>&nbsp;</td>
</tr>
<tr>
<td class="l3 p">{{ P06.url|safe }}</td>
<td class="l3 p">{{ P06.url }}</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td colspan="2" class="l3 m">{{ M11.url_code|safe }}</td>
<td colspan="2" class="l3 m">{{ M11.url_code }}</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
</tr>
<!-- Ligne 4 -->
<tr>
<td class="l4 d">{{ D4.url|safe }}</td>
<td class="l4 p">{{ P07.url|safe }}</td>
<td class="l4 d">{{ D4.url }}</td>
<td class="l4 p">{{ P07.url }}</td>
<td>&nbsp;</td>
<td>&nbsp;</td>
<td class="l4 m">{{ M13.url_code|safe }}</td>
<td class="l4 m">{{ M13.url_code }}</td>
<td>&nbsp;</td>
<td class="l4 m">{{ M14.url_code|safe }}</td>
<td class="l4 m">{{ M14.url_code }}</td>
<td>&nbsp;</td>
</tr>
<!-- Ligne 5 -->
<tr>
<td class="l5 d">{{ D5.url|safe }}</td>
<td class="l5 p">{{ P08.url|safe }}</td>
<td colspan="6" class="l5 m">{{ M15.url_code|safe }}</td>
<td class="l5 d">{{ D5.url }}</td>
<td class="l5 p">{{ P08.url }}</td>
<td colspan="6" class="l5 m">{{ M15.url_code }}</td>
</tr>
<!-- Ligne 6 -->
<tr>
<td class="l6 d">{{ D6.url|safe }}</td>
<td class="l6 p">{{ P09.url|safe }}</td>
<td colspan="2" class="l6 m">{{ M16_1a.url_code|safe }} / {{ M16_1b.url_code|safe }} / {{ M16_1c.url_code|safe }} / {{ M16_1d.url_code|safe }} / {{ M16_1e.url_code|safe }}</td>
<td colspan="2" class="l6 m">{{ M16_2a.url_code|safe }} / {{ M16_2b.url_code|safe }} </td>
<td colspan="2" class="l6 m">{{ M16_3a.url_code|safe }} / {{ M16_3b.url_code|safe }} / {{ M16_3c.url_code|safe }}</td>
<td class="l6 d">{{ D6.url }}</td>
<td class="l6 p">{{ P09.url }}</td>
<td colspan="2" class="l6 m">{{ M16_1a.url_code }} / {{ M16_1b.url_code }} / {{ M16_1c.url_code }} / {{ M16_1d.url_code }} / {{ M16_1e.url_code }}</td>
<td colspan="2" class="l6 m">{{ M16_2a.url_code }} / {{ M16_2b.url_code }} </td>
<td colspan="2" class="l6 m">{{ M16_3a.url_code }} / {{ M16_3b.url_code }} / {{ M16_3c.url_code }}</td>
</tr>
<!-- Ligne 7 -->
<tr>
<td class="l7 d">{{ D7.url|safe }}</td>
<td class="l7 p">{{ P10.url|safe} }</td>
<td colspan="2" class="l7 m">{{ M17_1.url_code|safe }}</td>
<td colspan="2" class="l7 m">{{ M17_2.url_code|safe }}</td>
<td colspan="2" class="l7 m">{{ M17_3.url_code|safe }}</td>
<td class="l7 d">{{ D7.url }}</td>
<td class="l7 p">{{ P10.url }}</td>
<td colspan="2" class="l7 m">{{ M17_1.url_code }}</td>
<td colspan="2" class="l7 m">{{ M17_2.url_code }}</td>
<td colspan="2" class="l7 m">{{ M17_3.url_code }}</td>
</tr>
<!-- Ligne 8 -->
<tr>
<td class="l8 d">{{ D8.url|safe }}</td>
<td class="l8 p">{{ P11.url|safe }}</td>
<td colspan="6" class="l8 m">{{ MACC.url_code|safe }}</td>
<td class="l8 d">{{ D8.url }}</td>
<td class="l8 p">{{ P11.url }}</td>
<td colspan="6" class="l8 m">{{ MACC.url_code }}</td>
</tr>
</table>
<br>

View file

@ -7,11 +7,11 @@
<table>
<tr>
<th width="100px">Domaine</th>
<td>{{ object.processus.domaine.url|safe }}</td>
<td>{{ object.processus.domaine.url }}</td>
</tr>
<tr>
<th>Processus</th>
<td>{{ object.processus.url|safe }}</td>
<td>{{ object.processus.url }}</td>
</tr>
<tr>
<th>Situation emblématique</th>

View file

@ -22,7 +22,7 @@
</tr>
<tr>
<th>Domaine</th>
<td>{{ object.domaine.url|safe }}</td>
<td>{{ object.domaine.url }}</td>
</tr>
<tr>
<th>Responsable</th>
@ -32,7 +32,7 @@
<th>Modules concernés</th>
<td>
{% for m in object.module_set.all %}
{{ m.url|safe }}<br>
{{ m.url }}<br>
{% endfor %}
</td>
</tr>