From 5ee98aefe430e9e388b500fba0b72a542ca220ee Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Wed, 31 Aug 2016 14:44:03 +0200 Subject: [PATCH] Fix ordering of period_availabilities to please PostgreSQL (over SQLite) --- common/urls.py | 8 ++++---- scripts/fabfile.py | 2 +- stages/tests.py | 16 ++++++++++++---- stages/views.py | 2 +- 4 files changed, 18 insertions(+), 10 deletions(-) diff --git a/common/urls.py b/common/urls.py index fb54f0f..dd587c7 100644 --- a/common/urls.py +++ b/common/urls.py @@ -19,10 +19,10 @@ urlpatterns = [ url(r'^classes/(?P\d+)/$', views.KlassView.as_view(), name='class'), # AJAX/JSON urls - url(r'^section/(?P\d+)/periods/', views.section_periods), - url(r'^section/(?P\d+)/classes/', views.section_classes), - url(r'^period/(?P\d+)/students/', views.period_students), - url(r'^period/(?P\d+)/corporations/', views.period_availabilities), + url(r'^section/(?P\d+)/periods/', views.section_periods, name='section_periods'), + url(r'^section/(?P\d+)/classes/', views.section_classes, name='section_classes'), + url(r'^period/(?P\d+)/students/', views.period_students, name='period_students'), + url(r'^period/(?P\d+)/corporations/', views.period_availabilities, name='period_availabilities'), # Training params in POST: url(r'^training/new/', views.new_training, name="new_training"), url(r'^training/del/', views.del_training, name="del_training"), diff --git a/scripts/fabfile.py b/scripts/fabfile.py index ebf4e26..f2ca699 100644 --- a/scripts/fabfile.py +++ b/scripts/fabfile.py @@ -7,7 +7,7 @@ from fabric.utils import abort env.hosts = ['stages.pierre-coullery.ch'] APP_DIR = '/var/www/epcstages' -VIRTUALENV_DIR = '/var/venvs/stages3/bin/activate' +VIRTUALENV_DIR = '/var/www/virtualenvs/stages3/bin/activate' def clone_remote_db(dbtype='sqlite'): diff --git a/stages/tests.py b/stages/tests.py index 27713ab..b053ad0 100644 --- a/stages/tests.py +++ b/stages/tests.py @@ -1,3 +1,4 @@ +import json from datetime import date from django.contrib.auth.models import User @@ -44,7 +45,7 @@ class StagesTest(TestCase): corporation=corp, title="Monsieur", first_name="Jean", last_name="Horner", is_main=True, role="Responsable formation", ) - p1 = Period.objects.create( + cls.p1 = Period.objects.create( title="Stage de pré-sensibilisation", start_date="2012-11-26", end_date="2012-12-07", section=sect_ase, level=lev1, ) @@ -53,12 +54,12 @@ class StagesTest(TestCase): section=sect_ase, level=lev2, ) av1 = Availability.objects.create( - corporation=corp, domain=dom_hand, period=p1, contact=contact, + corporation=corp, domain=dom_hand, period=cls.p1, contact=contact, comment="Dispo pour pré-sensibilisation", ) Availability.objects.create( - corporation=corp, domain=dom_pe, period=p1, contact=contact, - comment="", + corporation=corp, domain=dom_pe, period=cls.p1, contact=contact, + comment="Dispo prioritaire", priority=True, ) av3 = Availability.objects.create( corporation=corp, domain=dom_pe, period=p2, @@ -112,6 +113,13 @@ class StagesTest(TestCase): st.save() self.assertEqual(st.archived_text, "") + def test_period_availabilities(self): + # Testing here because PeriodTest does not have all data at hand. + response = self.client.get(reverse('period_availabilities', args=[self.p1.pk])) + decoded = json.loads(response.content.decode('utf-8')) + self.assertEqual(len(decoded), 2) + self.assertEqual([item['priority'] for item in decoded], [True, False]) + class PeriodTest(TestCase): def setUp(self): diff --git a/stages/views.py b/stages/views.py index 9db1e15..212e434 100644 --- a/stages/views.py +++ b/stages/views.py @@ -248,7 +248,7 @@ def period_availabilities(request, pk): corps = [{'id': av.id, 'id_corp': av.corporation.id, 'corp_name': av.corporation.name, 'domain': av.domain.name, 'free': av.free, 'priority': av.priority} for av in period.availability_set.select_related('corporation').all( - ).order_by('priority', 'corporation__name')] + ).order_by('-priority', 'corporation__name')] return HttpResponse(json.dumps(corps), content_type="application/json") def new_training(request):