diff --git a/Makefile b/Makefile index 7f55a31c2..71ce1699d 100644 --- a/Makefile +++ b/Makefile @@ -15,7 +15,7 @@ NVMSH := $(shell [ -f "$(HOME)/.nvm/nvm.sh" ] && echo "$(HOME)/.nvm/nvm.sh" || e .PHONY: bootstrap bootstrap: generate-version-file ## Set up everything to run the app - poetry install + poetry install --sync poetry run playwright install --with-deps source $(NVMSH) --no-use && nvm install && npm ci --no-audit source $(NVMSH) && npm run build @@ -95,6 +95,14 @@ fix-imports: ## Fix imports using isort .PHONY: py-lock py-lock: ## Syncs dependencies and updates lock file without performing recursive internal updates poetry lock --no-update + poetry install --sync + +.PHONY: update-utils +update-utils: ## Forces Poetry to pull the latest changes from the notifications-utils repo; requires that you commit the changes to poetry.lock! + poetry update notifications-utils + @echo + @echo !!! PLEASE MAKE SURE TO COMMIT AND PUSH THE UPDATED poetry.lock FILE !!! + @echo .PHONY: freeze-requirements freeze-requirements: ## create static requirements.txt @@ -105,7 +113,7 @@ pip-audit: poetry requirements > requirements.txt poetry requirements --dev > requirements_for_test.txt poetry run pip-audit -r requirements.txt - -poetry run pip-audit -r requirements_for_test.txt + poetry run pip-audit -r requirements_for_test.txt .PHONY: audit audit: npm-audit pip-audit diff --git a/README.md b/README.md index fb7f805a1..e8a94416c 100644 --- a/README.md +++ b/README.md @@ -102,6 +102,23 @@ In either situation, once you are finished and have verified the dependency changes are working, please be sure to commit both the `pyproject.toml` and `poetry.lock` files. +### Keeping the notification-utils dependency up-to-date + +The `notifications-utils` dependency references the other repository we have at +https://github.com/GSA/notifications-utils - this dependency requires a bit of +extra legwork to ensure it stays up-to-date. + +Whenever a PR is merged in the `notifications-utils` repository, we need to make +sure the changes are pulled in here and committed to this repository as well. +You can do this by going through these steps: + +- Make sure your local `main` branch is up-to-date +- Create a new branch to work in +- Run `make update-utils` +- Commit the updated `poetry.lock` file and push the changes +- Make a new PR with the change +- Have the PR get reviewed and merged + ## To test the application From a terminal within the running devcontainer: diff --git a/app/__init__.py b/app/__init__.py index e73da2046..1694fe018 100644 --- a/app/__init__.py +++ b/app/__init__.py @@ -285,11 +285,22 @@ def init_app(application): @application.context_processor def _attach_current_global_daily_messages(): remaining_global_messages = 0 - if current_app: - global_limit = current_app.config["GLOBAL_SERVICE_MESSAGE_LIMIT"] - global_messages_count = service_api_client.get_global_notification_count() - remaining_global_messages = global_limit - global_messages_count + if request.view_args: + service_id = request.view_args.get( + "service_id", session.get("service_id") + ) + else: + service_id = session.get("service_id") + + if service_id: + global_limit = current_app.config["GLOBAL_SERVICE_MESSAGE_LIMIT"] + global_messages_count = ( + service_api_client.get_global_notification_count(service_id) + ) + remaining_global_messages = global_limit - global_messages_count.get( + "count" + ) return {"daily_global_messages_remaining": remaining_global_messages} @application.before_request diff --git a/app/main/views/index.py b/app/main/views/index.py index 9ad92a285..30818db99 100644 --- a/app/main/views/index.py +++ b/app/main/views/index.py @@ -227,7 +227,7 @@ def terms(): ) -@main.route("/features/using-notify") +@main.route("/features/using_notify") @user_is_logged_in def using_notify(): return ( diff --git a/app/navigation.py b/app/navigation.py index 8fb06f7f5..b96750dc9 100644 --- a/app/navigation.py +++ b/app/navigation.py @@ -61,6 +61,82 @@ class HeaderNavigation(Navigation): "message_status", "guidance_index", }, + "accounts-or-dashboard": { + "conversation", + "inbox", + "monthly", + "service_dashboard", + "template_usage", + "view_notification", + "view_notifications", + "action_blocked", + "add_service_template", + "check_messages", + "check_notification", + "choose_template", + "choose_template_to_copy", + "confirm_redact_template", + "conversation_reply", + "copy_template", + "delete_service_template", + "edit_service_template", + "manage_template_folder", + "send_messages", + "send_one_off", + "send_one_off_step", + "send_one_off_to_myself", + "set_sender", + "set_template_sender", + "view_template", + "view_template_version", + "view_template_versions", + "uploads", + "view_job", + "view_jobs", + "confirm_edit_user_email", + "confirm_edit_user_mobile_number", + "edit_user_email", + "edit_user_mobile_number", + "edit_user_permissions", + "invite_user", + "manage_users", + "remove_user_from_service", + "usage", + "email_branding_govuk", + "email_branding_govuk_and_org", + "email_branding_organization", + "email_branding_request", + "email_branding_something_else", + "estimate_usage", + "link_service_to_organization", + "request_to_go_live", + "service_add_email_reply_to", + "service_add_sms_sender", + "service_confirm_delete_email_reply_to", + "service_confirm_delete_sms_sender", + "service_edit_email_reply_to", + "service_edit_sms_sender", + "service_email_reply_to", + "service_name_change", + "service_preview_email_branding", + "service_set_auth_type", + "service_set_channel", + "send_files_by_email_contact_details", + "service_set_email_branding", + "service_set_inbound_number", + "service_set_inbound_sms", + "service_set_international_sms", + "service_set_reply_to_email", + "service_set_sms_prefix", + "service_verify_reply_to_address", + "service_verify_reply_to_address_updates", + "service_settings", + "service_sms_senders", + "set_free_sms_allowance", + "set_message_limit", + "set_rate_limit", + "submit_request_to_go_live", + }, "pricing": { "how_to_pay", "billing_details", diff --git a/app/notify_client/service_api_client.py b/app/notify_client/service_api_client.py index 6f7b765ec..1ff711f08 100644 --- a/app/notify_client/service_api_client.py +++ b/app/notify_client/service_api_client.py @@ -3,8 +3,6 @@ from datetime import datetime from app.extensions import redis_client from app.notify_client import NotifyAdminAPIClient, _attach_current_user, cache -# from notifications_utils.clients.redis import daily_total_cache_key - class ServiceAPIClient(NotifyAdminAPIClient): @cache.delete("user-{user_id}") @@ -497,13 +495,8 @@ class ServiceAPIClient(NotifyAdminAPIClient): return int(count) - def get_global_notification_count(self): - # if cache is not set, or not enabled, return 0 - # TODO FIX - # count = redis_client.get(daily_total_cache_key()) or 0 - - # return int(count) - return 0 + def get_global_notification_count(self, service_id): + return self.get("/service/{}/notification-count".format(service_id)) -service_api_client = ServiceAPIClient() +service_api_client = ServiceAPIClient() \ No newline at end of file diff --git a/app/templates/admin_template.html b/app/templates/admin_template.html index b4433dafb..86482f829 100644 --- a/app/templates/admin_template.html +++ b/app/templates/admin_template.html @@ -43,6 +43,11 @@ {% if current_user.is_authenticated %} {% if current_user.platform_admin %} {% set navigation = [ + { + "href": url_for("main.show_accounts_or_dashboard"), + "text": "Current service", + "active": header_navigation.is_selected('accounts-or-dashboard') + }, { "href": url_for('main.get_started'), "text": "Using Notify", @@ -75,6 +80,11 @@ ] %} {% else %} {% set navigation = [ + { + "href": url_for("main.show_accounts_or_dashboard"), + "text": "Current service", + "active": header_navigation.is_selected('accounts-or-dashboard') + }, { "href": url_for('main.get_started'), "text": "Using Notify", @@ -92,7 +102,7 @@ }, { "href": url_for('main.user_profile'), - "text": current_user.name, + "text": "User profile", "active": header_navigation.is_selected('user-profile') }, { diff --git a/app/templates/error/500.html b/app/templates/error/500.html index 49645e00a..af86388d7 100644 --- a/app/templates/error/500.html +++ b/app/templates/error/500.html @@ -4,16 +4,10 @@
- Try again later. -
- -- To report a problem, please email notify-support@gsa.gov. + Please try again later or email us for more information.