diff --git a/lingo/agendas/models.py b/lingo/agendas/models.py index a4b01b3..98b03c9 100644 --- a/lingo/agendas/models.py +++ b/lingo/agendas/models.py @@ -16,6 +16,7 @@ import copy +from django.conf import settings from django.db import models from django.utils.text import slugify from django.utils.translation import ugettext_lazy as _ @@ -85,6 +86,13 @@ class Agenda(models.Model): return False, agenda + def get_chrono_url(self): + if not settings.KNOWN_SERVICES.get('chrono'): + return + chrono = list(settings.KNOWN_SERVICES['chrono'].values())[0] + chrono_url = chrono.get('url') or '' + return '%smanage/agendas/%s/settings/' % (chrono_url, self.slug) + class CheckTypeGroup(models.Model): slug = models.SlugField(_('Identifier'), max_length=160, unique=True) diff --git a/lingo/pricing/templates/lingo/pricing/manager_agenda_detail.html b/lingo/pricing/templates/lingo/pricing/manager_agenda_detail.html index 06563a0..364baca 100644 --- a/lingo/pricing/templates/lingo/pricing/manager_agenda_detail.html +++ b/lingo/pricing/templates/lingo/pricing/manager_agenda_detail.html @@ -11,6 +11,7 @@ [{% trans "identifier:" %} {{ agenda.slug }}] + {% with chrono_url=object.get_chrono_url %}{% if chrono_url %}{% trans "Agenda options" %}{% endif %}{% endwith %} {% trans 'Export' %} {% trans 'New pricing' %} diff --git a/lingo/pricing/templates/lingo/pricing/manager_agenda_list.html b/lingo/pricing/templates/lingo/pricing/manager_agenda_list.html index d9bd72d..9d8f9fd 100644 --- a/lingo/pricing/templates/lingo/pricing/manager_agenda_list.html +++ b/lingo/pricing/templates/lingo/pricing/manager_agenda_list.html @@ -24,6 +24,7 @@ {% for object in group.list %}
  • {{ object.label }} [{% trans "identifier:" %} {{ object.slug }}] + {% with chrono_url=object.get_chrono_url %}{% if chrono_url %}{% trans "voir" %}{% endif %}{% endwith %}
  • {% endfor %} diff --git a/tests/pricing/manager/test_agenda.py b/tests/pricing/manager/test_agenda.py index 115fbf3..fef416d 100644 --- a/tests/pricing/manager/test_agenda.py +++ b/tests/pricing/manager/test_agenda.py @@ -22,6 +22,25 @@ def test_refresh_agendas(mock_refresh, app, admin_user): assert mock_refresh.call_args_list == [mock.call()] +def test_agenda_chrono_link(settings, app, admin_user): + settings.KNOWN_SERVICES = {} + agenda = Agenda.objects.create(label='Foo bar') + + app = login(app) + resp = app.get('/manage/pricing/agendas/') + assert '/manage/agendas/%s/settings/' % agenda.slug not in resp + resp = app.get('/manage/pricing/agenda/%s/' % agenda.pk) + assert 'Agenda options' not in resp + assert '/manage/agendas/%s/settings/' % agenda.slug not in resp + + settings.KNOWN_SERVICES['chrono'] = {'default': {'url': 'https://chrono.dev/'}} + resp = app.get('/manage/pricing/agendas/') + assert 'https://chrono.dev/manage/agendas/%s/settings/' % agenda.slug in resp + resp = app.get('/manage/pricing/agenda/%s/' % agenda.pk) + assert 'Agenda options' in resp + assert 'https://chrono.dev/manage/agendas/%s/settings/' % agenda.slug in resp + + def test_add_agenda_pricing(app, admin_user): agenda = Agenda.objects.create(label='Foo Bar') pricing = Pricing.objects.create(label='Model')