Skip to content

Commit 24ff103

Browse files
add database model for maintenance mode info (#192)
Co-authored-by: akochari <arnold.kochari@scilifelab.se>
1 parent 50b2829 commit 24ff103

File tree

12 files changed

+88
-7
lines changed

12 files changed

+88
-7
lines changed

common/admin.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
from django.contrib.auth.admin import UserAdmin as DefaultUserAdmin
33
from django.contrib.auth.models import User
44

5-
from .models import EmailVerificationTable, UserProfile
5+
from .models import EmailVerificationTable, MaintenanceMode, UserProfile
66

77

88
class UserProfileInline(admin.StackedInline):
@@ -32,5 +32,6 @@ def get_affiliation(self, instance):
3232

3333
admin.site.unregister(User)
3434
admin.site.register(User, UserAdmin)
35+
admin.site.register(MaintenanceMode)
3536

3637
# Register your models here.

common/context_processors.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from .models import MaintenanceMode
2+
3+
4+
def maintenance_mode(request):
5+
data = MaintenanceMode.objects.all()
6+
return {"maintenance_mode": data}
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
# Generated by Django 4.2.7 on 2024-04-15 07:48
2+
3+
from django.db import migrations, models
4+
5+
6+
class Migration(migrations.Migration):
7+
dependencies = [
8+
("common", "0004_userprofile_deleted_on"),
9+
]
10+
11+
operations = [
12+
migrations.CreateModel(
13+
name="MaintenanceMode",
14+
fields=[
15+
("id", models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name="ID")),
16+
("login_and_signup_disabled", models.BooleanField(default=False)),
17+
("message_in_header", models.TextField(blank=True, max_length=1000)),
18+
("message_in_footer", models.TextField(blank=True, max_length=1000)),
19+
],
20+
),
21+
]

common/models.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,9 @@ class FixtureVersion(models.Model):
3939

4040
def __str__(self):
4141
return f"{self.filename} - {self.hash}"
42+
43+
44+
class MaintenanceMode(models.Model):
45+
login_and_signup_disabled = models.BooleanField(default=False)
46+
message_in_header = models.TextField(max_length=1000, blank=True)
47+
message_in_footer = models.TextField(max_length=1000, blank=True)
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
from django import template
2+
3+
register = template.Library()
4+
5+
6+
@register.filter(name="is_login_signup_disabled")
7+
def is_login_signup_disabled(queryset):
8+
return queryset.filter(login_and_signup_disabled=True).exists()

portal/tests.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ def test_home_view_class():
4444
assert "<title>Home | SciLifeLab Serve (beta)</title>" in response.content.decode()
4545

4646

47+
@pytest.mark.django_db
4748
def test_about_view():
4849
# Get correct request
4950
request = RequestFactory().get(reverse("portal:about"))
@@ -54,6 +55,7 @@ def test_about_view():
5455
assert "<title>About | SciLifeLab Serve (beta)</title>" in response.content.decode()
5556

5657

58+
@pytest.mark.django_db
5759
def test_teaching_view():
5860
# Get correct request
5961
request = RequestFactory().get(reverse("portal:teaching"))
@@ -64,6 +66,7 @@ def test_teaching_view():
6466
assert "<title>Teaching | SciLifeLab Serve (beta)</title>" in response.content.decode()
6567

6668

69+
@pytest.mark.django_db
6770
def test_privacy_view():
6871
# Get correct request
6972
request = RequestFactory().get(reverse("portal:privacy"))

studio/settings.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -136,6 +136,7 @@
136136
"django.template.context_processors.request",
137137
"django.contrib.auth.context_processors.auth",
138138
"django.contrib.messages.context_processors.messages",
139+
"common.context_processors.maintenance_mode",
139140
]
140141
+ DJANGO_WIKI_CONTEXT_PROCESSOR,
141142
"libraries": {

templates/common/footer.html

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,18 @@
66
{% get_setting "DEBUG" as debug_mode %}
77

88
<div class="footer border-top bg-light text-muted small pt-4 mt-auto">
9+
910
<div class="container">
11+
12+
{# In case we want to display a maintenance message or similar#}
13+
{% for obj in maintenance_mode %}
14+
{% if obj.message_in_footer %}
15+
<div class="alert alert-warning small" role="alert">
16+
{{ obj.message_in_footer }}
17+
</div>
18+
{% endif %}
19+
{% endfor %}
20+
1021
<div class="row pb-2">
1122
<div class="col-lg-2">
1223
<ul class="list-unstyled">

templates/common/navbar.html

Lines changed: 18 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
{% load static %}
2-
2+
{% load is_login_signup_disabled %}
33
<nav class="bg-light shadow-sm mb-3 py-2">
44
<div class="container">
55
<div class="row">
@@ -53,10 +53,10 @@
5353
{% else %}
5454

5555
<li class="nav-item flex-wrap">
56-
<a class="btn btn-profile order-lg-2 order-1 mx-2" href="{% url 'common:signup' %}">
56+
<a class="btn btn-profile order-lg-2 order-1 mx-2 {% if maintenance_mode|is_login_signup_disabled %}disabled{% endif %}" href="{% url 'common:signup' %}">
5757
<i class="bi bi-person-plus"></i> Register
5858
</a>
59-
<a class="btn btn-profile order-lg-1 order-2 mx-2" href="{% url 'login' %}">
59+
<a class="btn btn-profile order-lg-1 order-2 mx-2 {% if maintenance_mode|is_login_signup_disabled %}disabled{% endif %}" href="{% url 'login' %}">
6060
<i class="bi bi-box-arrow-in-right"></i> Log in
6161
</a>
6262
</li>
@@ -67,3 +67,18 @@
6767
</div>
6868
</div>
6969
</nav>
70+
71+
{% for obj in maintenance_mode %}
72+
{% if obj.message_in_header %}
73+
<div class="container">
74+
<div class="row d-flex justify-content-center">
75+
<div class="col-12 col-md-8 text-center">
76+
<div class="alert alert-warning border" role="alert">
77+
<p class="mb-0 fs-5"><i class="bi-exclamation-triangle"></i></p>
78+
<p>{{ obj.message_in_header | safe }}</p>
79+
</div>
80+
</div>
81+
</div>
82+
</div>
83+
{% endif %}
84+
{% endfor %}

templates/portal/home.html

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -143,6 +143,7 @@ <h5 class="">{{ model.name|truncatechars:30 }}</h5>
143143
</div>
144144
</div>
145145

146+
{% if news_objects %}
146147
<div class="row text-center mt-5">
147148
<div class="col-12 text-center">
148149
<h3>News
@@ -175,6 +176,7 @@ <h5 class="text-grape">{{ news.title }}</h5>
175176
</div>
176177
{% endif %}
177178
</div>
179+
{% endif %}
178180

179181
{% if collection_objects %}
180182
<div class="row text-center mt-5 align-items-center" id="collections">

templates/registration/login.html

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,21 @@
11
{% extends 'base.html' %}
22
{% load static %}
3-
3+
{% load is_login_signup_disabled %}
44
{% block title %}Login{% endblock %}
55

66
{% block content %}
77

88
<div class="container">
99
<!-- Outer Row -->
10+
{% if not maintenance_mode|is_login_signup_disabled %}
1011
<div class="row justify-content-center">
1112
<div class="col-12 col-md-9">
1213
{% include 'common/flash_messages.html' %}
1314
<div class="card border-0 shadow-lg my-5 py-5">
1415
<div class="card-body">
1516
<!-- Nested Row within Card Body -->
1617
<div class="col-lg-6 offset-lg-3">
18+
1719
<div class="col text-center">
1820
<h2 class="text-dark mb-4">Log in</h2>
1921
</div>
@@ -36,6 +38,8 @@ <h2 class="text-dark mb-4">Log in</h2>
3638
</div>
3739
{% endif %}
3840

41+
42+
3943
<div class="py-4 d-flex justify-content-center">
4044

4145
<div class="w-100">
@@ -61,11 +65,13 @@ <h2 class="text-dark mb-4">Log in</h2>
6165
<div class="text-center">
6266
<a href="{% url 'common:signup' %}">Don't have an account? Sign up here</a>
6367
</div>
68+
6469
</div>
6570
</div>
6671
</div>
6772
</div>
6873
</div>
74+
{% endif %}
6975
</div>
7076

7177

templates/registration/signup.html

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,15 @@
33
{% block title %}Register{% endblock %}
44

55
{% load static %}
6-
6+
{% load is_login_signup_disabled %}
77
{% block extra_scripts %}
88
<script src="{% static 'js/form-helpers.js' %}"></script>
99
{% endblock %}
1010

1111

1212
{% block content %}
1313
<div class="container">
14+
{% if not maintenance_mode|is_login_signup_disabled %}
1415
<div class="card border-0 shadow-lg my-5">
1516
<div class="card-body p-0">
1617
<!-- Nested Row within Card Body -->
@@ -180,6 +181,6 @@ <h2 class="text-dark mb-4 text-center">Register</h2>
180181
</div>
181182
</div>
182183
</div>
183-
</div>
184+
{% endif %}
184185
</div>
185186
{% endblock %}

0 commit comments

Comments
 (0)