From 4a785d80ef4b2fe9812e990d034f525fdce7ec0e Mon Sep 17 00:00:00 2001 From: mrmn2 <188248364+mrmn2@users.noreply.github.com> Date: Sun, 18 Jan 2026 17:13:04 +0100 Subject: [PATCH 1/3] refactor: Remove nagging --- pdfding/e2e/test_pdf_overview_e2e.py | 29 ------------ .../includes/pdf_overview/nagging.html | 46 ------------------- pdfding/pdf/templates/pdf_overview.html | 7 +-- .../pdf/tests/test_views/test_pdf_views.py | 35 +------------- pdfding/pdf/views/pdf_views.py | 10 ---- .../migrations/0021_add_a_little_nagging.py | 3 +- .../users/migrations/0026_remove_nagging.py | 17 +++++++ pdfding/users/models.py | 20 -------- pdfding/users/tests/test_models.py | 23 ---------- 9 files changed, 21 insertions(+), 169 deletions(-) delete mode 100644 pdfding/pdf/templates/includes/pdf_overview/nagging.html create mode 100644 pdfding/users/migrations/0026_remove_nagging.py diff --git a/pdfding/e2e/test_pdf_overview_e2e.py b/pdfding/e2e/test_pdf_overview_e2e.py index 1514775f..360bb92d 100644 --- a/pdfding/e2e/test_pdf_overview_e2e.py +++ b/pdfding/e2e/test_pdf_overview_e2e.py @@ -1,4 +1,3 @@ -from datetime import datetime, timedelta, timezone from pathlib import Path from unittest.mock import patch @@ -592,31 +591,3 @@ def test_progress_bar_off_settings(self): with sync_playwright() as p: self.open(reverse('pdf_overview'), p) expect(self.page.locator("#progressbar-1")).not_to_be_visible() - - @override_settings(SUPPORTER_EDITION=False) - def test_nagging_modal_needs_nagging(self): - self.user.profile.last_time_nagged = datetime.now(tz=timezone.utc) - timedelta(weeks=9) - self.user.profile.save() - - self.assertTrue(self.user.profile.needs_nagging) - - with sync_playwright() as p: - self.open(reverse('pdf_overview'), p) - expect(self.page.locator("#nagging")).to_be_visible() - - self.page.get_by_role("button", name="Leave me alone").click() - expect(self.page.locator("#nagging")).not_to_be_visible() - - changed_user = User.objects.get(id=self.user.id) - self.assertFalse(changed_user.profile.needs_nagging) - - with sync_playwright() as p: - # test opening again - self.open(reverse('pdf_overview'), p) - expect(self.page.locator("#nagging")).not_to_be_visible() - - @override_settings(SUPPORTER_EDITION=True) - def test_nagging_modal_not_needs_nagging(self): - with sync_playwright() as p: - self.open(reverse('pdf_overview'), p) - expect(self.page.locator("#nagging")).not_to_be_visible() diff --git a/pdfding/pdf/templates/includes/pdf_overview/nagging.html b/pdfding/pdf/templates/includes/pdf_overview/nagging.html deleted file mode 100644 index 89d64ab6..00000000 --- a/pdfding/pdf/templates/includes/pdf_overview/nagging.html +++ /dev/null @@ -1,46 +0,0 @@ -
-
-
Hello there
-
- I am Marcel, the developer of PdfDing. Pardon my nagging but developing software, - this app is no exception, requires a lot of time. Sponsoring enables me to spend - more time on making PdfDing even better. And you will probably make my day ... -
- -
-
- - - - - - - -
- Tip: The supporter tiers hide everything Sponsorship related forever. -
-
- -
-
-
diff --git a/pdfding/pdf/templates/pdf_overview.html b/pdfding/pdf/templates/pdf_overview.html index c985bf34..8d9fe4b3 100644 --- a/pdfding/pdf/templates/pdf_overview.html +++ b/pdfding/pdf/templates/pdf_overview.html @@ -2,10 +2,10 @@ {% block content %}
+ :class="{ 'opacity-15': show_tag_name_modal || show_preview_modal || show_delete_pdf_modal }">
{% include 'includes/sidebar.html' %}
@@ -57,9 +57,6 @@ class="fixed inset-x-0 top-40 mx-auto my-auto w-80! lg:w-[28rem]! z-20">
- {% if needs_nagging %} - {% include 'includes/pdf_overview/nagging.html' %} - {% endif %}
{% endblock %} diff --git a/pdfding/pdf/tests/test_views/test_pdf_views.py b/pdfding/pdf/tests/test_views/test_pdf_views.py index ff0aaf35..4fcd7034 100644 --- a/pdfding/pdf/tests/test_views/test_pdf_views.py +++ b/pdfding/pdf/tests/test_views/test_pdf_views.py @@ -1,4 +1,4 @@ -from datetime import datetime, timedelta, timezone +from datetime import datetime, timezone from pathlib import Path from unittest import mock from unittest.mock import patch @@ -415,7 +415,6 @@ def test_get_extra_context(self, mock_get_tag_info_dict): 'special_pdf_selection': '', 'page': 'pdf_overview', 'layout': 'Compact', - 'needs_nagging': False, 'current_collection_id': str(self.user.id), 'current_collection_name': 'Default', } @@ -435,7 +434,6 @@ def test_get_extra_context_selection(self, mock_get_tag_info_dict): 'special_pdf_selection': 'starred', 'page': 'pdf_overview_starred', 'layout': 'Compact', - 'needs_nagging': False, 'current_collection_id': str(self.user.id), 'current_collection_name': 'Default', } @@ -455,7 +453,6 @@ def test_get_extra_context_selection_invalid(self, mock_get_tag_info_dict): 'special_pdf_selection': '', 'page': 'pdf_overview', 'layout': 'Compact', - 'needs_nagging': False, 'current_collection_id': str(self.user.id), 'current_collection_name': 'Default', } @@ -475,42 +472,12 @@ def test_get_extra_context_empty_queries(self, mock_get_tag_info_dict): 'special_pdf_selection': '', 'page': 'pdf_overview', 'layout': 'Compact', - 'needs_nagging': False, 'current_collection_id': str(self.user.id), 'current_collection_name': 'Default', } self.assertEqual(generated_extra_context, expected_extra_context) - @override_settings(SUPPORTER_EDITION=False) - def test_do_extra_action_reset(self): - self.user.profile.last_time_nagged = datetime.now(tz=timezone.utc) - timedelta(weeks=9) - self.user.profile.save() - - self.assertTrue(self.user.profile.needs_nagging) - - self.client.get(reverse('pdf_overview')) - - changed_user = User.objects.get(id=self.user.id) - - self.assertFalse(changed_user.profile.needs_nagging) - self.assertTrue((changed_user.profile.last_time_nagged - datetime.now(tz=timezone.utc)) < timedelta(minutes=1)) - - @override_settings(SUPPORTER_EDITION=False) - def test_do_extra_action_no_reset(self): - current_datetime = datetime.now(tz=timezone.utc) - timedelta(weeks=6) - self.user.profile.last_time_nagged = current_datetime - self.user.profile.save() - - self.assertFalse(self.user.profile.needs_nagging) - - self.client.get(reverse('pdf_overview')) - - changed_user = User.objects.get(id=self.user.id) - - self.assertFalse(changed_user.profile.needs_nagging) - self.assertEqual(changed_user.profile.last_time_nagged, current_datetime) - class TestPdfMixin(TestCase): username = 'user' diff --git a/pdfding/pdf/views/pdf_views.py b/pdfding/pdf/views/pdf_views.py index 5019815f..fedc6ee6 100644 --- a/pdfding/pdf/views/pdf_views.py +++ b/pdfding/pdf/views/pdf_views.py @@ -216,7 +216,6 @@ def get_extra_context(request: HttpRequest) -> dict: extra_context = { 'layout': request.user.profile.layout, - 'needs_nagging': request.user.profile.needs_nagging, 'page': page, 'search_query': request.GET.get('search', ''), 'special_pdf_selection': special_pdf_selection, @@ -576,15 +575,6 @@ class Overview(OverviewMixin, base_views.BaseOverview): paginating the PDFs. """ - def do_extra_action(self, request: HttpRequest): - """When nagging modal is shown, set last time nagged to current datetime""" - - profile = request.user.profile - - if profile.needs_nagging: - profile.last_time_nagged = datetime.now(tz=timezone.utc) - profile.save() - class OverviewQuery(BasePdfMixin, base_views.BaseOverviewQuery): """View for performing searches and sorting on the PDF overview page.""" diff --git a/pdfding/users/migrations/0021_add_a_little_nagging.py b/pdfding/users/migrations/0021_add_a_little_nagging.py index 0d4c93f1..bc07730a 100644 --- a/pdfding/users/migrations/0021_add_a_little_nagging.py +++ b/pdfding/users/migrations/0021_add_a_little_nagging.py @@ -1,6 +1,5 @@ # Generated by Django 5.2.7 on 2025-11-06 17:50 -import users.models from django.db import migrations, models @@ -14,6 +13,6 @@ class Migration(migrations.Migration): migrations.AddField( model_name='profile', name='last_time_nagged', - field=models.DateTimeField(default=users.models.get_last_time_nagged_initial), + field=models.DateTimeField(auto_now_add=True), ), ] diff --git a/pdfding/users/migrations/0026_remove_nagging.py b/pdfding/users/migrations/0026_remove_nagging.py new file mode 100644 index 00000000..17da8ff2 --- /dev/null +++ b/pdfding/users/migrations/0026_remove_nagging.py @@ -0,0 +1,17 @@ +# Generated by Django 5.2.8 on 2026-01-18 16:19 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('users', '0025_remove_unneeded_null_true'), + ] + + operations = [ + migrations.RemoveField( + model_name='profile', + name='last_time_nagged', + ), + ] diff --git a/pdfding/users/models.py b/pdfding/users/models.py index ae27d7f3..6fd3ac65 100644 --- a/pdfding/users/models.py +++ b/pdfding/users/models.py @@ -1,6 +1,3 @@ -from datetime import datetime, timedelta, timezone - -from django.conf import settings from django.contrib.auth.models import User from django.db import models from django.db.models import QuerySet @@ -10,10 +7,6 @@ from pdf.models.workspace_models import Workspace -def get_last_time_nagged_initial(): # pragma: no cover - return datetime.now(tz=timezone.utc) - timedelta(weeks=5) - - class Profile(models.Model): """The user profile model of PdfDing""" @@ -84,7 +77,6 @@ class LayoutChoice(models.TextChoices): custom_theme_color_secondary = models.CharField(max_length=7, default='#cc826a') dark_mode = models.CharField(choices=DarkMode.choices, max_length=6, default=DarkMode.DARK) layout = models.CharField(choices=LayoutChoice.choices, max_length=7, default=LayoutChoice.COMPACT) - last_time_nagged = models.DateTimeField(default=get_last_time_nagged_initial) number_of_pdfs = models.IntegerField(default=0) pdf_inverted_mode = models.CharField(choices=EnabledChoice.choices, max_length=8, default=EnabledChoice.DISABLED) pdf_keep_screen_awake = models.CharField( @@ -112,18 +104,6 @@ def dark_mode_str(self) -> str: # pragma: no cover return str.lower(str(self.dark_mode)) - @property - def needs_nagging(self): - """ - Check if a user needs to be nagged to sponsor the project. Only nags once every 8 weeks. Users - of the Supporter Edition will never be nagged. - """ - - if not settings.SUPPORTER_EDITION and (datetime.now(tz=timezone.utc) - self.last_time_nagged).days > 7 * 8: - return True - else: - return False - @property def pdfs_total_size_with_unit(self): """Return the size of all PDFs with the units KB, MB, GB depending on the size.""" diff --git a/pdfding/users/tests/test_models.py b/pdfding/users/tests/test_models.py index c3a226d6..c67b173c 100644 --- a/pdfding/users/tests/test_models.py +++ b/pdfding/users/tests/test_models.py @@ -1,5 +1,3 @@ -from datetime import datetime, timedelta, timezone - from django.contrib.auth.models import User from django.test import TestCase, override_settings from pdf.models.collection_models import Collection @@ -27,27 +25,6 @@ def test_dark_mode_str(self): self.assertEqual(self.user.profile.dark_mode_str, 'dark') - @override_settings(SUPPORTER_EDITION=True) - def test_needs_nagging_supporter_edition(self): - self.user.profile.last_time_nagged = datetime.now(tz=timezone.utc) - timedelta(weeks=9) - self.user.profile.save() - - self.assertEqual(self.user.profile.needs_nagging, False) - - @override_settings(SUPPORTER_EDITION=False) - def test_needs_nagging_needed_non_supporter(self): - self.user.profile.last_time_nagged = datetime.now(tz=timezone.utc) - timedelta(weeks=9) - self.user.profile.save() - - self.assertEqual(self.user.profile.needs_nagging, True) - - @override_settings(SUPPORTER_EDITION=False) - def test_needs_nagging_not_needed_non_supporter(self): - self.user.profile.last_time_nagged = datetime.now(tz=timezone.utc) - timedelta(days=40) - self.user.profile.save() - - self.assertEqual(self.user.profile.needs_nagging, False) - def test_pdfs_total_size_with_unit(self): profile = self.user.profile profile.pdfs_total_size = 10000 From 505bdc1c1cdd36d37c4fc4245a95c0a3f44cda23 Mon Sep 17 00:00:00 2001 From: mrmn2 <188248364+mrmn2@users.noreply.github.com> Date: Sun, 18 Jan 2026 17:31:03 +0100 Subject: [PATCH 2/3] refactor: Remove supporter edition --- pdfding/core/context_processors.py | 1 - pdfding/core/settings/dev.py | 2 -- pdfding/core/settings/prod.py | 11 ---------- pdfding/e2e/test_users_e2e.py | 18 ----------------- .../pdf/tests/test_views/test_pdf_views.py | 4 ---- pdfding/templates/layouts/base_sidebar.html | 20 +------------------ 6 files changed, 1 insertion(+), 55 deletions(-) diff --git a/pdfding/core/context_processors.py b/pdfding/core/context_processors.py index d59f6b8e..7e405138 100644 --- a/pdfding/core/context_processors.py +++ b/pdfding/core/context_processors.py @@ -10,5 +10,4 @@ def pdfding_context(request: HttpRequest): # pragma: no cover 'DEMO_MODE': settings.DEMO_MODE, 'VERSION': settings.VERSION, 'ALLOW_PDF_SUB_DIRECTORIES': settings.ALLOW_PDF_SUB_DIRECTORIES, - 'SUPPORTER_EDITION': settings.SUPPORTER_EDITION, } diff --git a/pdfding/core/settings/dev.py b/pdfding/core/settings/dev.py index cdc77dfb..c6d78647 100644 --- a/pdfding/core/settings/dev.py +++ b/pdfding/core/settings/dev.py @@ -32,8 +32,6 @@ # SECURITY WARNING: keep the secret key used in production secret! SECRET_KEY = 'some_key' # nosec B105 -SUPPORTER_EDITION = True - ACCOUNT_EMAIL_VERIFICATION = 'optional' DEFAULT_FROM_EMAIL = 'info@localhost' diff --git a/pdfding/core/settings/prod.py b/pdfding/core/settings/prod.py index 08ae9671..5af6499c 100644 --- a/pdfding/core/settings/prod.py +++ b/pdfding/core/settings/prod.py @@ -1,7 +1,5 @@ from os import environ -from django.contrib.auth.hashers import check_password - from .base import * # noqa: F401 F403 try: @@ -195,15 +193,6 @@ else: ALLOW_PDF_SUB_DIRECTORIES = False -# supporter edition settings -SUPPORTER_KEY_HASH = 'pbkdf2_sha256$1000000$supporter$ZHnPv0AcYm6ZV5Pcyw8ULh3C1Dd5EGD2XG49gWpeTns=' -SUPPORTER_KEY = environ.get('SUPPORTER_KEY', '') - -if check_password(SUPPORTER_KEY, SUPPORTER_KEY_HASH): - SUPPORTER_EDITION = True -else: - SUPPORTER_EDITION = False - # demo mode if environ.get('DEMO_MODE', 'FALSE') == 'TRUE': DEMO_MODE = True diff --git a/pdfding/e2e/test_users_e2e.py b/pdfding/e2e/test_users_e2e.py index 0eaa5bd6..6cf71be9 100644 --- a/pdfding/e2e/test_users_e2e.py +++ b/pdfding/e2e/test_users_e2e.py @@ -308,26 +308,8 @@ def test_login_demo_mode(self, mock_uuid4, mock_create_demo_user): class EditionE2ETestCase(PdfDingE2ETestCase): - @override_settings(SUPPORTER_EDITION=True) - def test_supporter_edition_sidebar(self): - with sync_playwright() as p: - self.open(reverse('home'), p) - expect(self.page.locator("#sponsor")).not_to_be_visible() - expect(self.page.locator("#demo_mode")).not_to_be_visible() - expect(self.page.locator("#supporter")).to_be_visible() - - @override_settings(SUPPORTER_EDITION=False, DEMO_MODE=False) - def test_not_supporter_edition_sidebar(self): - with sync_playwright() as p: - self.open(reverse('home'), p) - expect(self.page.locator("#sponsor")).to_be_visible() - expect(self.page.locator("#demo_mode")).not_to_be_visible() - expect(self.page.locator("#supporter")).not_to_be_visible() - @override_settings(SUPPORTER_EDITION=False, DEMO_MODE=True) def test_demo_mode_sidebar(self): with sync_playwright() as p: self.open(reverse('home'), p) - expect(self.page.locator("#sponsor")).not_to_be_visible() expect(self.page.locator("#demo_mode")).to_be_visible() - expect(self.page.locator("#supporter")).not_to_be_visible() diff --git a/pdfding/pdf/tests/test_views/test_pdf_views.py b/pdfding/pdf/tests/test_views/test_pdf_views.py index 4fcd7034..88306acf 100644 --- a/pdfding/pdf/tests/test_views/test_pdf_views.py +++ b/pdfding/pdf/tests/test_views/test_pdf_views.py @@ -402,7 +402,6 @@ def test_fuzzy_filter_pdfs(self): filtered_pdfs = pdf_views.OverviewMixin.fuzzy_filter_pdfs(Pdf.objects.all(), 'self hosted') self.assertEqual(sorted(list(filtered_pdfs), key=lambda a: a.name), [pdf_self_hosting, pdf_self_hosted]) - @override_settings(SUPPORTER_EDITION=True) @patch('pdf.services.tag_services.TagServices.get_tag_info_dict', return_value='tag_info_dict') def test_get_extra_context(self, mock_get_tag_info_dict): response = self.client.get(f'{reverse('pdf_overview')}?search=searching&tags=tagging') @@ -421,7 +420,6 @@ def test_get_extra_context(self, mock_get_tag_info_dict): self.assertEqual(generated_extra_context, expected_extra_context) - @override_settings(SUPPORTER_EDITION=True) @patch('pdf.services.tag_services.TagServices.get_tag_info_dict', return_value='tag_info_dict') def test_get_extra_context_selection(self, mock_get_tag_info_dict): response = self.client.get(f'{reverse('pdf_overview')}?selection=starred') @@ -440,7 +438,6 @@ def test_get_extra_context_selection(self, mock_get_tag_info_dict): self.assertEqual(generated_extra_context, expected_extra_context) - @override_settings(SUPPORTER_EDITION=True) @patch('pdf.services.tag_services.TagServices.get_tag_info_dict', return_value='tag_info_dict') def test_get_extra_context_selection_invalid(self, mock_get_tag_info_dict): response = self.client.get(f'{reverse('pdf_overview')}?selection=invalid') @@ -459,7 +456,6 @@ def test_get_extra_context_selection_invalid(self, mock_get_tag_info_dict): self.assertEqual(generated_extra_context, expected_extra_context) - @override_settings(SUPPORTER_EDITION=True) @patch('pdf.services.tag_services.TagServices.get_tag_info_dict', return_value='tag_info_dict') def test_get_extra_context_empty_queries(self, mock_get_tag_info_dict): response = self.client.get(reverse('pdf_overview')) diff --git a/pdfding/templates/layouts/base_sidebar.html b/pdfding/templates/layouts/base_sidebar.html index 2dc25115..242cfbcc 100644 --- a/pdfding/templates/layouts/base_sidebar.html +++ b/pdfding/templates/layouts/base_sidebar.html @@ -12,28 +12,10 @@ PdfDing {{ VERSION }} - {% if SUPPORTER_EDITION %} -
- Supporter Edition -
- {% elif DEMO_MODE %} + {% if DEMO_MODE %}
Demo Mode
- {% else %} - {% endif %} From 369d747af305a3258f39a0e70214f5617a8d54d3 Mon Sep 17 00:00:00 2001 From: mrmn2 <188248364+mrmn2@users.noreply.github.com> Date: Sun, 18 Jan 2026 17:36:40 +0100 Subject: [PATCH 3/3] refactor: Remove latest version information from admin --- pdfding/admin/service.py | 15 ----------- pdfding/admin/templates/information.html | 12 --------- pdfding/admin/tests/test_service.py | 15 ----------- pdfding/admin/tests/test_views.py | 12 +++------ pdfding/admin/views.py | 3 --- pdfding/e2e/test_admin_e2e.py | 33 ------------------------ 6 files changed, 3 insertions(+), 87 deletions(-) delete mode 100644 pdfding/admin/service.py delete mode 100644 pdfding/admin/tests/test_service.py diff --git a/pdfding/admin/service.py b/pdfding/admin/service.py deleted file mode 100644 index 8ba73ddf..00000000 --- a/pdfding/admin/service.py +++ /dev/null @@ -1,15 +0,0 @@ -import requests - - -def get_latest_version() -> str: # pragma: no cover - """ - Gets the tag of the latest release of pdfding via the github rest api. - """ - - try: - latest_release = requests.get('https://api.github.com/repos/mrmn2/PdfDing/releases/latest', timeout=1) - latest_release_json = latest_release.json() - - return latest_release_json['tag_name'] - except Exception: # pragma: no cover - return '' diff --git a/pdfding/admin/templates/information.html b/pdfding/admin/templates/information.html index e8d5107c..f2a054b7 100644 --- a/pdfding/admin/templates/information.html +++ b/pdfding/admin/templates/information.html @@ -26,18 +26,6 @@ {{ current_version }} - {% if latest_version and current_version != 'UNKNOWN' and current_version != latest_version %} - -
- New Version Available! - {{ latest_version }} - -
- {% endif %} diff --git a/pdfding/admin/tests/test_service.py b/pdfding/admin/tests/test_service.py deleted file mode 100644 index 29912db1..00000000 --- a/pdfding/admin/tests/test_service.py +++ /dev/null @@ -1,15 +0,0 @@ -from unittest.mock import Mock, patch - -from admin.service import get_latest_version -from django.test import TestCase - - -class TestService(TestCase): - mock_response = Mock() - mock_response.json = lambda: {'tag_name': '0.0.0'} - - @patch('admin.service.requests.get', return_value=mock_response) - def test_get_latest_version(self, mock_get): - generated_tag = get_latest_version() - - self.assertEqual(generated_tag, '0.0.0') diff --git a/pdfding/admin/tests/test_views.py b/pdfding/admin/tests/test_views.py index 98ff1ccf..61a269f2 100644 --- a/pdfding/admin/tests/test_views.py +++ b/pdfding/admin/tests/test_views.py @@ -1,5 +1,3 @@ -from unittest.mock import patch - from admin.views import AdminMixin, OverviewMixin from django.contrib.auth.models import User from django.test import Client, TestCase @@ -41,8 +39,7 @@ def test_filter_objects(self): self.assertEqual(user_emails, expected_result) - @patch('admin.views.get_latest_version', return_value='0.0.0') - def test_get_extra_context(self, mock_get_latest_version): + def test_get_extra_context(self): response = self.client.get(f'{reverse('user_overview')}?search=@a&tags=admin') generated_extra_context = OverviewMixin.get_extra_context(response.wsgi_request) @@ -50,8 +47,7 @@ def test_get_extra_context(self, mock_get_latest_version): self.assertEqual(generated_extra_context, expected_extra_context) - @patch('admin.views.get_latest_version', return_value='0.0.0') - def test_get_extra_context_empty_queries(self, mock_get_latest_version): + def test_get_extra_context_empty_queries(self): response = self.client.get(reverse('user_overview')) generated_extra_context = OverviewMixin.get_extra_context(response.wsgi_request) @@ -99,8 +95,7 @@ def test_adjust_admin_rights_no_htmx(self): response = self.client.post(reverse('admin_adjust_rights', kwargs={'identifier': self.user.id})) self.assertRedirects(response, reverse('user_overview'), status_code=302) - @patch('admin.views.get_latest_version', return_value='0.0.0') - def test_get_information(self, mock_get_latest_version): + def test_get_information(self): for i in range(1, 4): User.objects.create_user(username=f'user_{i}', password='12345', email=f'{i}_b@a.com') @@ -109,4 +104,3 @@ def test_get_information(self, mock_get_latest_version): self.assertEqual(response.context['number_of_users'], 4) self.assertEqual(response.context['number_of_pdfs'], 0) self.assertEqual(response.context['current_version'], 'DEV') - self.assertEqual(response.context['latest_version'], '0.0.0') diff --git a/pdfding/admin/views.py b/pdfding/admin/views.py index efeff937..ee894d8c 100644 --- a/pdfding/admin/views.py +++ b/pdfding/admin/views.py @@ -1,4 +1,3 @@ -from admin.service import get_latest_version from base import base_views from django.conf import settings from django.contrib.auth.mixins import UserPassesTestMixin @@ -136,13 +135,11 @@ def get(self, request: HttpRequest): number_of_users = User.objects.all().count() number_of_pdfs = Pdf.objects.all().count() - latest_version = get_latest_version() context = { 'number_of_users': number_of_users, 'number_of_pdfs': number_of_pdfs, 'current_version': settings.VERSION, - 'latest_version': latest_version, } return render(request, 'information.html', context=context) diff --git a/pdfding/e2e/test_admin_e2e.py b/pdfding/e2e/test_admin_e2e.py index 82df1d27..843582d6 100644 --- a/pdfding/e2e/test_admin_e2e.py +++ b/pdfding/e2e/test_admin_e2e.py @@ -1,7 +1,4 @@ -from unittest.mock import patch - from django.contrib.auth.models import User -from django.test import override_settings from django.urls import reverse from helpers import PdfDingE2ETestCase from pdf.models.pdf_models import Pdf @@ -81,36 +78,6 @@ def test_load_next_page(self): expect(self.page.locator("#user-13")).to_contain_text('12@a.com') expect(self.page.locator("#next_page_2_toggle")).not_to_be_visible() - @patch('admin.views.get_latest_version', return_value='0.0.0') - def test_new_version_available(self, mock_get_latest_version): - with sync_playwright() as p: - self.open(reverse("instance_info"), p) - - expect(self.page.locator("body")).to_contain_text("New Version Available!") - expect(self.page.locator("#new_version")).to_contain_text("0.0.0") - - @patch('admin.views.get_latest_version', return_value='DEV') - def test_new_version_same(self, mock_get_latest_version): - with sync_playwright() as p: - self.open(reverse("instance_info"), p) - - expect(self.page.locator("body")).not_to_contain_text("New Version Available!") - - @patch('admin.views.get_latest_version', return_value='0.0.0') - @override_settings(VERSION='UNKNOWN') - def test_new_version_unknown(self, mock_get_latest_version): - with sync_playwright() as p: - self.open(reverse("instance_info"), p) - - expect(self.page.locator("body")).not_to_contain_text("New Version Available!") - - @patch('admin.views.get_latest_version', return_value='') - def test_new_version_empty(self, mock_get_latest_version): - with sync_playwright() as p: - self.open(reverse("instance_info"), p) - - expect(self.page.locator("body")).not_to_contain_text("New Version Available!") - def test_search_admin(self): with sync_playwright() as p: self.open(f"{reverse('user_overview')}?tags=admin", p)