diff --git a/django_app/redbox_app/jinja2.py b/django_app/redbox_app/jinja2.py index 8dc01004a..4b73a6f0b 100644 --- a/django_app/redbox_app/jinja2.py +++ b/django_app/redbox_app/jinja2.py @@ -3,12 +3,12 @@ import humanize import jinja2 import pytz +import waffle from django.conf import settings from django.templatetags.static import static from django.urls import reverse from django.utils.timezone import template_localtime from markdown_it import MarkdownIt -import waffle # `js-default` setting required to sanitize inputs # https://markdown-it-py.readthedocs.io/en/latest/security.html @@ -98,7 +98,6 @@ def environment(**options): "environment": settings.ENVIRONMENT.value, "security": settings.MAX_SECURITY_CLASSIFICATION.value, "waffle_flag": waffle.flag_is_active, - } ) return env diff --git a/django_app/redbox_app/redbox_core/migrations/0047_user_accessibility_categories_and_more.py b/django_app/redbox_app/redbox_core/migrations/0048_user_accessibility_categories_and_more.py similarity index 99% rename from django_app/redbox_app/redbox_core/migrations/0047_user_accessibility_categories_and_more.py rename to django_app/redbox_app/redbox_core/migrations/0048_user_accessibility_categories_and_more.py index 7c87e8b5b..be5ccaba2 100644 --- a/django_app/redbox_app/redbox_core/migrations/0047_user_accessibility_categories_and_more.py +++ b/django_app/redbox_app/redbox_core/migrations/0048_user_accessibility_categories_and_more.py @@ -1,4 +1,4 @@ -# Generated by Django 5.1.1 on 2024-10-10 08:34 +# Generated by Django 5.1.1 on 2024-10-10 14:33 from django.db import migrations, models @@ -6,7 +6,7 @@ class Migration(migrations.Migration): dependencies = [ - ('redbox_core', '0046_chat_archived'), + ('redbox_core', '0047_aisettings_agentic_give_up_question_prompt_and_more'), ] operations = [ diff --git a/django_app/redbox_app/redbox_core/views/info_views.py b/django_app/redbox_app/redbox_core/views/info_views.py index f7de4311b..df4741474 100644 --- a/django_app/redbox_app/redbox_core/views/info_views.py +++ b/django_app/redbox_app/redbox_core/views/info_views.py @@ -3,15 +3,21 @@ These shouldn't contain sensitive data and don't require login. """ +import waffle from django.conf import settings from django.shortcuts import render from django.views.decorators.http import require_http_methods -import waffle @require_http_methods(["GET"]) def privacy_notice_view(request): - return render(request, "privacy-notice.html", {"waffle_flag": waffle.flag_is_active,}) + return render( + request, + "privacy-notice.html", + { + "waffle_flag": waffle.flag_is_active, + }, + ) @require_http_methods(["GET"]) @@ -23,4 +29,11 @@ def support_view(request): @require_http_methods(["GET"]) def accessibility_statement_view(request): - return render(request, "accessibility-statement.html", {"contact_email": settings.CONTACT_EMAIL, "waffle_flag": waffle.flag_is_active,}) + return render( + request, + "accessibility-statement.html", + { + "contact_email": settings.CONTACT_EMAIL, + "waffle_flag": waffle.flag_is_active, + }, + ) diff --git a/django_app/redbox_app/redbox_core/views/misc_views.py b/django_app/redbox_app/redbox_core/views/misc_views.py index 931850375..54b07b458 100644 --- a/django_app/redbox_app/redbox_core/views/misc_views.py +++ b/django_app/redbox_app/redbox_core/views/misc_views.py @@ -1,5 +1,4 @@ import logging -import os from http import HTTPStatus from django.conf import settings @@ -7,12 +6,9 @@ from django.shortcuts import render from django.views.decorators.http import require_http_methods from django.views.generic.base import RedirectView -from dotenv import load_dotenv from redbox_app.redbox_core.models import Chat -load_dotenv() - logger = logging.getLogger(__name__) @@ -21,7 +17,7 @@ def homepage_view(request): return render( request, template_name="homepage.html", - context={"request": request, "allow_sign_ups": os.getenv("ALLOW_SIGN_UPS") == "True"}, + context={"request": request, "allow_sign_ups": settings.ALLOW_SIGN_UPS}, ) diff --git a/django_app/redbox_app/redbox_core/views/signup_views.py b/django_app/redbox_app/redbox_core/views/signup_views.py index a251fa094..d31552164 100644 --- a/django_app/redbox_app/redbox_core/views/signup_views.py +++ b/django_app/redbox_app/redbox_core/views/signup_views.py @@ -1,16 +1,13 @@ import logging -import os +from django.conf import settings from django.contrib.auth import get_user_model from django.http import HttpRequest, HttpResponse, QueryDict from django.shortcuts import redirect, render from django.views import View -from dotenv import load_dotenv from redbox_app.redbox_core.forms import SignUpForm -load_dotenv() - User = get_user_model() logger = logging.getLogger(__name__) @@ -18,13 +15,13 @@ class Signup1(View): def get(self, request: HttpRequest) -> HttpResponse: - if os.getenv("ALLOW_SIGN_UPS") != "True": + if settings.ALLOW_SIGN_UPS: return redirect("homepage") form = SignUpForm() return render(request, "sign-up-page-1.html", {"form": form}) def post(self, request: HttpRequest) -> HttpResponse: - if os.getenv("ALLOW_SIGN_UPS") != "True": + if settings.ALLOW_SIGN_UPS: return redirect("homepage") form = SignUpForm(request.POST) @@ -42,13 +39,13 @@ def post(self, request: HttpRequest) -> HttpResponse: class Signup2(View): def get(self, request: HttpRequest) -> HttpResponse: - if os.getenv("ALLOW_SIGN_UPS") != "True": + if settings.ALLOW_SIGN_UPS: return redirect("homepage") form = SignUpForm() return render(request, "sign-up-page-2.html", {"form": form}) def post(self, request: HttpRequest) -> HttpResponse: - if os.getenv("ALLOW_SIGN_UPS") != "True": + if settings.ALLOW_SIGN_UPS: return redirect("homepage") combined_data = {**request.session.get("sign_up_data", {}), **request.POST.dict()} query_dict = QueryDict("", mutable=True) @@ -64,13 +61,13 @@ def post(self, request: HttpRequest) -> HttpResponse: class Signup3(View): def get(self, request: HttpRequest) -> HttpResponse: - if os.getenv("ALLOW_SIGN_UPS") != "True": + if settings.ALLOW_SIGN_UPS: return redirect("homepage") form = SignUpForm() return render(request, "sign-up-page-3.html", {"form": form}) def post(self, request: HttpRequest) -> HttpResponse: - if os.getenv("ALLOW_SIGN_UPS") != "True": + if settings.ALLOW_SIGN_UPS: return redirect("homepage") combined_data = {**request.session.get("sign_up_data", {}), **request.POST.dict()} query_dict = QueryDict("", mutable=True) @@ -86,13 +83,13 @@ def post(self, request: HttpRequest) -> HttpResponse: class Signup4(View): def get(self, request: HttpRequest) -> HttpResponse: - if os.getenv("ALLOW_SIGN_UPS") != "True": + if settings.ALLOW_SIGN_UPS: return redirect("homepage") form = SignUpForm() return render(request, "sign-up-page-4.html", {"form": form}) def post(self, request: HttpRequest) -> HttpResponse: - if os.getenv("ALLOW_SIGN_UPS") != "True": + if settings.ALLOW_SIGN_UPS: return redirect("homepage") combined_data = {**request.session.get("sign_up_data", {}), **request.POST.dict()} query_dict = QueryDict("", mutable=True) @@ -108,13 +105,13 @@ def post(self, request: HttpRequest) -> HttpResponse: class Signup5(View): def get(self, request: HttpRequest) -> HttpResponse: - if os.getenv("ALLOW_SIGN_UPS") != "True": + if settings.ALLOW_SIGN_UPS: return redirect("homepage") form = SignUpForm() return render(request, "sign-up-page-5.html", {"form": form}) def post(self, request: HttpRequest) -> HttpResponse: - if os.getenv("ALLOW_SIGN_UPS") != "True": + if settings.ALLOW_SIGN_UPS: return redirect("homepage") combined_data = {**request.session.get("sign_up_data", {}), **request.POST.dict()} query_dict = QueryDict("", mutable=True) @@ -130,13 +127,13 @@ def post(self, request: HttpRequest) -> HttpResponse: class Signup6(View): def get(self, request: HttpRequest) -> HttpResponse: - if os.getenv("ALLOW_SIGN_UPS") != "True": + if settings.ALLOW_SIGN_UPS: return redirect("homepage") form = SignUpForm() return render(request, "sign-up-page-6.html", {"form": form}) def post(self, request: HttpRequest) -> HttpResponse: - if os.getenv("ALLOW_SIGN_UPS") != "True": + if settings.ALLOW_SIGN_UPS: return redirect("homepage") combined_data = {**request.session.get("sign_up_data", {}), **request.POST.dict()} query_dict = QueryDict("", mutable=True) @@ -167,6 +164,6 @@ def post(self, request: HttpRequest) -> HttpResponse: class Signup7(View): def get(self, request: HttpRequest) -> HttpResponse: - if os.getenv("ALLOW_SIGN_UPS") != "True": + if settings.ALLOW_SIGN_UPS: return redirect("homepage") return render(request, "sign-up-page-7.html") diff --git a/django_app/redbox_app/settings.py b/django_app/redbox_app/settings.py index bbf35877a..8547fda2e 100644 --- a/django_app/redbox_app/settings.py +++ b/django_app/redbox_app/settings.py @@ -18,6 +18,8 @@ env = environ.Env() +ALLOW_SIGN_UPS = env.bool("ALLOW_SIGN_UPS") + SECRET_KEY = env.str("DJANGO_SECRET_KEY") ENVIRONMENT = Environment[env.str("ENVIRONMENT").upper()] WEBSOCKET_SCHEME = "ws" if ENVIRONMENT.is_test else "wss" diff --git a/django_app/redbox_app/templates/homepage.html b/django_app/redbox_app/templates/homepage.html index ae2b45f10..70c569f8e 100644 --- a/django_app/redbox_app/templates/homepage.html +++ b/django_app/redbox_app/templates/homepage.html @@ -11,25 +11,35 @@ {% if waffle_flag(request, 'uktrade') %}

Use Artificial Intelligence (AI) to interact with {{ security }} level documents from your own document set

You may summarise documents, ask questions related to one or more documents, and chat directly with the AI to assist you in your work. You can use up to, and including, Official documents.

+ {% else %}

Ask any question of documents in your Redbox

Use Artificial Intelligence (AI) to get insights from your personal document set. You can use up to, and including, {{ security }} documents.

- {% endif %} - - {% if not allow_sign_ups %} -

We are not currently allowing new users to sign up. Please check back soon.

{% endif %} + diff --git a/tests/.env.integration b/tests/.env.integration index 51004ed44..3db7398fd 100644 --- a/tests/.env.integration +++ b/tests/.env.integration @@ -43,6 +43,7 @@ POSTGRES_DB=redbox-core POSTGRES_PASSWORD=insecure CONTACT_EMAIL=redbox-support@cabinetoffice.gov.uk POSTGRES_HOST=db +ALLOW_SIGN_UPS=True EMAIL_BACKEND_TYPE=CONSOLE GOV_NOTIFY_API_KEY=f4k3_k3y diff --git a/tests/.env.test b/tests/.env.test index c34fe86ec..92367786c 100644 --- a/tests/.env.test +++ b/tests/.env.test @@ -64,6 +64,7 @@ GOVUK_NOTIFY_PLAIN_EMAIL_TEMPLATE_ID=example-id EMAIL_FILE_PATH='/app/mail' AWS_REGION=eu-west-2 FILE_EXPIRY_IN_DAYS=30 +ALLOW_SIGN_UPS=True # === Playwright Tests ===