diff --git a/src/servala/core/models/organization.py b/src/servala/core/models/organization.py index 57cd660..855e4f0 100644 --- a/src/servala/core/models/organization.py +++ b/src/servala/core/models/organization.py @@ -3,8 +3,8 @@ import urlman from django.conf import settings from django.db import models, transaction from django.utils.functional import cached_property -from django.utils.text import slugify from django.utils.safestring import mark_safe +from django.utils.text import slugify from django.utils.translation import gettext_lazy as _ from django_scopes import ScopedManager, scopes_disabled diff --git a/src/servala/core/models/service.py b/src/servala/core/models/service.py index ba1871d..a06db4e 100644 --- a/src/servala/core/models/service.py +++ b/src/servala/core/models/service.py @@ -71,9 +71,14 @@ class Service(ServalaModelMixin, models.Model): logo = models.ImageField( upload_to="public/services", blank=True, null=True, verbose_name=_("Logo") ) - # TODO schema external_links = models.JSONField( - null=True, blank=True, verbose_name=_("External links") + null=True, + blank=True, + verbose_name=_("External links"), + help_text=( + 'JSON array of link objects: {"url": "…", "title": "…", "featured": false}. ' + "Featured links will be shown on the service list page, all other links will only show on the service and offering detail pages." + ), ) class Meta: @@ -83,6 +88,13 @@ class Service(ServalaModelMixin, models.Model): def __str__(self): return self.name + @property + def featured_links(self): + """Return external links marked as featured.""" + if not self.external_links: + return [] + return [link for link in self.external_links if link.get("featured")] + def validate_dict(data, required_fields=None, allow_empty=True): if not data: @@ -263,7 +275,10 @@ class CloudProvider(ServalaModelMixin, models.Model): verbose_name=_("Logo"), ) external_links = models.JSONField( - null=True, blank=True, verbose_name=_("External links") + null=True, + blank=True, + verbose_name=_("External links"), + help_text=('JSON array of link objects: {"url": "…", "title": "…"}. '), ) class Meta: diff --git a/src/servala/frontend/templates/account/login.html b/src/servala/frontend/templates/account/login.html index 233118b..58cd49b 100644 --- a/src/servala/frontend/templates/account/login.html +++ b/src/servala/frontend/templates/account/login.html @@ -1,21 +1,22 @@ {% extends "frontend/base.html" %} {% load static i18n %} {% load allauth account socialaccount %} - {% block html_title %} {% translate "Sign in" %} {% endblock html_title %} - {% block page_title %} {% translate "Welcome to Servala" %} {% endblock page_title %} - {% block card_header %} -
{% translate "Sign in to access your managed service instances and the Servala service catalog" %}
++ {% translate "Sign in to access your managed service instances and the Servala service catalog" %} +
{{ service.description|default:"No description available."|urlize }}
{{ offering.description|urlize }}
+{% translate "We currently cannot offer this service, sorry!" %}
{% else %} @@ -49,6 +56,24 @@ {{ select_form }} {% endif %} + {% if service.external_links %} +{{ service.description|urlize }}
{% endif %}