From 8da569728c832dcfdcde9da6a3c064e2cfcb9aef Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fr=C3=A9d=C3=A9ric=20P=C3=A9ters?= Date: Tue, 17 May 2022 22:52:47 +0200 Subject: [PATCH] general: add support for lingo (#65372) --- debian/agent/settings.py | 1 + hobo/agent/worker/services.py | 7 +++ hobo/agent/worker/settings.py | 3 ++ hobo/environment/forms.py | 8 +++- hobo/environment/management/commands/cook.py | 4 ++ hobo/environment/migrations/0026_lingo.py | 49 ++++++++++++++++++++ hobo/environment/models.py | 23 ++++++++- tests/test_cook.py | 5 +- 8 files changed, 97 insertions(+), 3 deletions(-) create mode 100644 hobo/environment/migrations/0026_lingo.py diff --git a/debian/agent/settings.py b/debian/agent/settings.py index 4e430e6..2f7c466 100644 --- a/debian/agent/settings.py +++ b/debian/agent/settings.py @@ -24,6 +24,7 @@ PASSERELLE_MANAGE_COMMAND = 'sudo -u passerelle /usr/bin/passerelle-manage' FARGO_MANAGE_COMMAND = 'sudo -u fargo /usr/bin/fargo-manage' WELCO_MANAGE_COMMAND = 'sudo -u welco /usr/bin/welco-manage' CHRONO_MANAGE_COMMAND = 'sudo -u chrono /usr/bin/chrono-manage' +LINGO_MANAGE_COMMAND = 'sudo -u lingo /usr/bin/lingo-manage' BIJOE_MANAGE_COMMAND = 'sudo -u bijoe /usr/bin/bijoe-manage' HOBO_MANAGE_COMMAND = 'sudo -u hobo /usr/bin/hobo-manage' diff --git a/hobo/agent/worker/services.py b/hobo/agent/worker/services.py index 2ca500b..c4a1e0a 100644 --- a/hobo/agent/worker/services.py +++ b/hobo/agent/worker/services.py @@ -165,6 +165,13 @@ class Hobo(BaseService): tenants_dirs = [settings.HOBO_TENANTS_DIRECTORY] +class Lingo(BaseService): + service_id = 'lingo' + service_manage_cmd = settings.LINGO_MANAGE_COMMAND + service_manage_try_cmd = settings.LINGO_MANAGE_TRY_COMMAND + tenants_dirs = [settings.LINGO_TENANTS_DIRECTORY] + + class Welco(BaseService): service_id = 'welco' service_manage_cmd = settings.WELCO_MANAGE_COMMAND diff --git a/hobo/agent/worker/settings.py b/hobo/agent/worker/settings.py index 5ff57ba..27a9216 100644 --- a/hobo/agent/worker/settings.py +++ b/hobo/agent/worker/settings.py @@ -24,6 +24,7 @@ PASSERELLE_MANAGE_COMMAND = '/usr/lib/passerelle/manage.py' FARGO_MANAGE_COMMAND = '/usr/bin/fargo-manage' WELCO_MANAGE_COMMAND = '/usr/bin/welco-manage' CHRONO_MANAGE_COMMAND = '/usr/bin/chrono-manage' +LINGO_MANAGE_COMMAND = '/usr/bin/lingo-manage' HOBO_MANAGE_COMMAND = '/usr/bin/hobo-manage' BIJOE_MANAGE_COMMAND = '/usr/bin/bijoe-manage' @@ -33,6 +34,7 @@ COMBO_MANAGE_TRY_COMMAND = COMBO_MANAGE_COMMAND PASSERELLE_MANAGE_TRY_COMMAND = PASSERELLE_MANAGE_COMMAND FARGO_MANAGE_TRY_COMMAND = FARGO_MANAGE_COMMAND CHRONO_MANAGE_TRY_COMMAND = CHRONO_MANAGE_COMMAND +LINGO_MANAGE_TRY_COMMAND = LINGO_MANAGE_COMMAND WELCO_MANAGE_TRY_COMMAND = WELCO_MANAGE_COMMAND HOBO_MANAGE_TRY_COMMAND = HOBO_MANAGE_COMMAND BIJOE_MANAGE_TRY_COMMAND = BIJOE_MANAGE_COMMAND @@ -43,6 +45,7 @@ AUTHENTIC_TENANTS_DIRECTORY = '/var/lib/authentic2-multitenant/tenants' CHRONO_TENANTS_DIRECTORY = '/var/lib/chrono/tenants' COMBO_TENANTS_DIRECTORY = '/var/lib/combo/tenants' FARGO_TENANTS_DIRECTORY = '/var/lib/fargo/tenants' +LINGO_TENANTS_DIRECTORY = '/var/lib/lingo/tenants' WELCO_TENANTS_DIRECTORY = '/var/lib/welco/tenants' BIJOE_TENANTS_DIRECTORY = '/var/lib/bijoe/tenants' HOBO_TENANTS_DIRECTORY = '/var/lib/hobo/tenants' diff --git a/hobo/environment/forms.py b/hobo/environment/forms.py index 7b8efd0..44b1582 100644 --- a/hobo/environment/forms.py +++ b/hobo/environment/forms.py @@ -21,7 +21,7 @@ from django.http import HttpResponseRedirect from django.template.defaultfilters import slugify from django.utils.translation import ugettext_lazy as _ -from .models import Authentic, BiJoe, Chrono, Combo, Fargo, Hobo, Passerelle, Variable, Wcs, Welco +from .models import Authentic, BiJoe, Chrono, Combo, Fargo, Hobo, Lingo, Passerelle, Variable, Wcs, Welco from .utils import get_variable from .validators import validate_service_url @@ -141,6 +141,12 @@ class ChronoForm(BaseForm): exclude = EXCLUDED_FIELDS +class LingoForm(BaseForm): + class Meta: + model = Lingo + exclude = EXCLUDED_FIELDS + + class BiJoeForm(BaseForm): class Meta: model = BiJoe diff --git a/hobo/environment/management/commands/cook.py b/hobo/environment/management/commands/cook.py index bf279ad..b5235a1 100644 --- a/hobo/environment/management/commands/cook.py +++ b/hobo/environment/management/commands/cook.py @@ -42,6 +42,7 @@ from hobo.environment.models import ( Combo, Fargo, Hobo, + Lingo, Passerelle, Variable, Wcs, @@ -236,6 +237,9 @@ class Command(BaseCommand): def create_chrono(self, url, title, slug=None, template_name='', variables=None, **kwargs): return self.create_site(Chrono, url, title, slug, template_name, variables) + def create_lingo(self, url, title, slug=None, template_name='', variables=None, **kwargs): + return self.create_site(Lingo, url, title, slug, template_name, variables) + def create_bijoe(self, url, title, slug=None, template_name='', variables=None, **kwargs): return self.create_site(BiJoe, url, title, slug, template_name, variables) diff --git a/hobo/environment/migrations/0026_lingo.py b/hobo/environment/migrations/0026_lingo.py new file mode 100644 index 0000000..b6fe3fe --- /dev/null +++ b/hobo/environment/migrations/0026_lingo.py @@ -0,0 +1,49 @@ +# Generated by Django 3.2.13 on 2022-05-17 21:02 + +import django.contrib.postgres.fields.jsonb +import django.core.validators +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('environment', '0025_legacy_urls'), + ] + + operations = [ + migrations.CreateModel( + name='Lingo', + fields=[ + ( + 'id', + models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID'), + ), + ('title', models.CharField(max_length=50, verbose_name='Title')), + ('slug', models.SlugField(verbose_name='Slug')), + ( + 'base_url', + models.CharField( + max_length=200, + validators=[django.core.validators.URLValidator()], + verbose_name='Base URL', + ), + ), + ( + 'legacy_urls', + django.contrib.postgres.fields.jsonb.JSONField(blank=True, default=list, null=True), + ), + ('secret_key', models.CharField(max_length=60, verbose_name='Secret Key')), + ('template_name', models.CharField(blank=True, max_length=60, verbose_name='Template')), + ('secondary', models.BooleanField(default=False, verbose_name='Secondary Service')), + ('last_operational_check_timestamp', models.DateTimeField(null=True)), + ('last_operational_success_timestamp', models.DateTimeField(null=True)), + ('last_update_timestamp', models.DateTimeField(auto_now=True, null=True)), + ], + options={ + 'verbose_name': 'Lingo Billing and Payment', + 'verbose_name_plural': 'Lingo Billing and Payment', + 'ordering': ['title'], + }, + ), + ] diff --git a/hobo/environment/models.py b/hobo/environment/models.py index d992d16..c2c65d5 100644 --- a/hobo/environment/models.py +++ b/hobo/environment/models.py @@ -523,4 +523,25 @@ class BiJoe(ServiceBase): return self.get_base_url_path() + 'manage/menu.json' -AVAILABLE_SERVICES = [Authentic, Wcs, Passerelle, Combo, Fargo, Welco, Chrono, BiJoe, Hobo] +class Lingo(ServiceBase): + class Meta: + verbose_name = _('Lingo Billing and Payment') + verbose_name_plural = _('Lingo Billing and Payment') + ordering = ['title'] + + class Extra: + service_id = 'lingo' + service_label = _('Lingo') + service_default_slug = 'payment' + + def get_admin_zones(self): + return [Zone(self.title, 'bankcard', self.get_base_url_path())] + + def get_saml_sp_metadata_url(self): + return self.get_base_url_path() + 'accounts/mellon/metadata/' + + def get_backoffice_menu_url(self): + return self.get_base_url_path() + 'manage/menu.json' + + +AVAILABLE_SERVICES = [Authentic, Wcs, Passerelle, Combo, Fargo, Welco, Chrono, BiJoe, Hobo, Lingo] diff --git a/tests/test_cook.py b/tests/test_cook.py index 8578b95..c2ba220 100644 --- a/tests/test_cook.py +++ b/tests/test_cook.py @@ -16,6 +16,7 @@ from hobo.environment.models import ( Combo, Fargo, Hobo, + Lingo, Passerelle, ServiceBase, Variable, @@ -374,8 +375,9 @@ def test_create_services(): command.create_welco('url', 'title') command.create_chrono('url', 'title') command.create_bijoe('url', 'title') + command.create_lingo('url', 'title') - assert len(command.create_site.mock_calls) == 8 + assert len(command.create_site.mock_calls) == 9 assert command.create_site.mock_calls == [ call(Authentic, 'url', 'title', None, '', None), call(Combo, 'url', 'title', None, '', None), @@ -385,6 +387,7 @@ def test_create_services(): call(Welco, 'url', 'title', None, '', None), call(Chrono, 'url', 'title', None, '', None), call(BiJoe, 'url', 'title', None, '', None), + call(Lingo, 'url', 'title', None, '', None), ]