environment: add slug & legacy url on home (#64924)
gitea/hobo/pipeline/head This commit looks good Details

This commit is contained in:
Yann Weber 2024-02-01 12:08:52 +01:00
parent f7529918e1
commit 69325cd127
4 changed files with 47 additions and 14 deletions

View File

@ -37,7 +37,7 @@ urlpatterns = [
views.operational_check_view,
name='operational-check',
),
path('select_create_service', views.ServiceSelectCreateView.as_view(), name='environment-create-service'),
path('select_create_service', views.ServiceSelectCreateView.as_view(), name='select-create-service'),
re_path(r'^new-(?P<service>\w+)$', views.ServiceCreateView.as_view(), name='create-service'),
re_path(
r'^save-(?P<service>\w+)/(?P<slug>[\w-]+)$', views.ServiceUpdateView.as_view(), name='save-service'

View File

@ -6,7 +6,7 @@
<span class="actions">
<a class="extra-actions-menu-opener"></a>
<ul class="extra-actions-menu">
<li><a rel="popup" href="{% url 'environment-create-service' %}">{% trans 'Add new service' %}</a></li>
<li><a rel="popup" href="{% url 'select-create-service' %}">{% trans 'Add new service' %}</a></li>
<li><a rel="popup" href="{% url 'environment-import' %}">{% trans 'Import' %}</a></li>
<li><a href="{% url 'environment-export' %}">{% trans 'Export' %}</a></li>
</ul>
@ -21,7 +21,7 @@
<div class="service-link" data-service-slug="{{ service.slug }}">
<a href="{{ service.base_url }}" data-service-slug="{{ service.slug }}">
<div class="service" data-service-slug="{{ service.slug }}">
<h3 class="service-title">{{ service.title }} <span class="service-url">{{ service.base_url }}</span></h3>
<h3 class="service-title">{{ service.title }} <span class="slug">[{{service.slug}}, <span class="service-url">{{ service.base_url }}</span>]</span></h3>
<p class="service-status-items">
<span class="checking">{% trans "checking..." %}</span>
{% if not service.is_operational and service.wants_frequent_checks %}
@ -34,6 +34,20 @@
</p>
</div>
</a>
{% if service.legacy_urls %}
<h4>
{% blocktrans trimmed count counter=service.legacy_urls|length %}
Legacy URL
{% plural %}
Legacy URLS
{% endblocktrans %}
</h4>
<ul>
{% for legacy_url in service.legacy_urls %}
<li>{{ legacy_url.base_url }} {% if legacy_url.datetime %}({% trans 'until' %} {{ legacy_url.datetime }}){% endif %}</li>
{% endfor %}
</ul>
{% endif %}
<div class="menu-opener">
<span class="actions">
<a class="extra-actions-menu-opener"></a>
@ -132,7 +146,6 @@
<a class="button button-paragraph" href="{% url 'sms-home' %}">{% trans 'SMS' %}</a>
<a class="button button-paragraph" href="{% url 'matomo-home' %}">{% trans 'User tracking' %}</a>
<a class="button button-paragraph" href="{% url 'seo-home' %}">{% trans 'Indexing' %}</a>
<a class="button button-paragraph" href="{% url 'environment-home' %}">{% trans 'Services' %}</a>
<a class="button button-paragraph" href="{% url 'environment-variables' %}">{% trans 'Variables' %}</a>
<a class="button button-paragraph" href="{% url 'debug-home' %}">{% trans 'Debugging' %}</a>
{% if show_maintenance_menu %}<a class="button button-paragraph" href="{% url 'maintenance-home' %}">{% trans 'Maintenance' %}</a>{% endif %}

View File

@ -1,3 +1,4 @@
import datetime
import json
from django.conf import settings
@ -33,6 +34,14 @@ class Home(TemplateView):
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['services'] = [x for x in get_installed_services() if not x.secondary]
for service in context['services']:
for legacy_url in service.legacy_urls:
try:
legacy_url['datetime'] = datetime.datetime.strptime(
legacy_url['timestamp'], '%Y-%m-%d %H:%M:%S'
)
except ValueError:
pass
context['has_authentic'] = bool(Authentic.objects.filter(secondary=False))
context['has_global_title'] = Variable.objects.filter(name='global_title').exists()
context['has_default_from_email'] = Variable.objects.filter(name='default_from_email').exists()

View File

@ -196,12 +196,9 @@ def test_service_creation_url_validation(app, admin_user, monkeypatch, service_n
assert service_cls.objects.exists()
def test_home_view(app, admin_user, settings):
def test_service_creation_selection(app, admin_user, settings):
app = login(app)
combo = Combo.objects.create(
base_url='https://combo.agglo.love', template_name='...portal-user...', slug='portal'
)
response = app.get('/sites').follow()
response = app.get(reverse('select-create-service'))
assert 'Add new service:' in response.text
for service in AVAILABLE_SERVICES:
if service.is_enabled():
@ -215,7 +212,6 @@ def test_home_view(app, admin_user, settings):
'passerelle',
'wcs',
}
assert response.html.find('span', {'class': 'slug'}).a.text == 'https://combo.agglo.love/'
# check HOBO_SERVICES_ENABLED works
settings.HOBO_SERVICES_ENABLED = ['lingo']
@ -231,18 +227,33 @@ def test_home_view(app, admin_user, settings):
'lingo',
}
def test_home_view(app, admin_user):
app = login(app)
combo = Combo.objects.create(
base_url='https://combo.agglo.love', template_name='...portal-user...', slug='portal'
)
response = app.get(reverse('home'))
assert response.html.find('div', {'class': 'service-link'}).a.attrs['href'] == 'https://combo.agglo.love/'
assert response.html.find('span', {'class': 'service-url'}).text == 'https://combo.agglo.love/'
# add legacy urls
combo.change_base_url('https://combo1.agglo.love')
combo.save()
response = app.get('/sites').follow()
assert response.html.find('span', {'class': 'slug'}).a.text == 'https://combo1.agglo.love/'
response = app.get(reverse('home'))
assert (
response.html.find('div', {'class': 'service-link'}).a.attrs['href'] == 'https://combo1.agglo.love/'
)
assert response.html.find('span', {'class': 'service-url'}).text == 'https://combo1.agglo.love/'
h4 = response.html.find_all('h4')[-1]
assert h4.text.strip() == 'Legacy URL'
combo.change_base_url('https://combo2.agglo.love')
combo.save()
response = app.get('/sites').follow()
assert response.html.find('span', {'class': 'slug'}).a.text == 'https://combo2.agglo.love/'
response = app.get(reverse('home'))
assert (
response.html.find('div', {'class': 'service-link'}).a.attrs['href'] == 'https://combo2.agglo.love/'
)
assert response.html.find('span', {'class': 'service-url'}).text == 'https://combo2.agglo.love/'
h4 = response.html.find_all('h4')[-1]
assert h4.text.strip() == 'Legacy URLS'