From 69de89db5d6021d3be9bac3c268ebb456d7e03e8 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Sun, 21 Jul 2024 08:26:48 +0000 Subject: [PATCH 1/5] Bump sentry-sdk from 1.14.0 to 2.8.0 Bumps [sentry-sdk](https://github.com/getsentry/sentry-python) from 1.14.0 to 2.8.0. - [Release notes](https://github.com/getsentry/sentry-python/releases) - [Changelog](https://github.com/getsentry/sentry-python/blob/master/CHANGELOG.md) - [Commits](https://github.com/getsentry/sentry-python/compare/1.14.0...2.8.0) --- updated-dependencies: - dependency-name: sentry-sdk dependency-type: direct:production ... Signed-off-by: dependabot[bot] --- poetry.lock | 28 ++++++++++++++++++++-------- pyproject.toml | 2 +- 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/poetry.lock b/poetry.lock index 3e3d9466..cffad07b 100644 --- a/poetry.lock +++ b/poetry.lock @@ -950,31 +950,43 @@ urllib3 = {version = ">=1.26,<2.0", extras = ["socks"]} [[package]] name = "sentry-sdk" -version = "1.14.0" +version = "2.8.0" description = "Python client for Sentry (https://sentry.io)" optional = false -python-versions = "*" +python-versions = ">=3.6" files = [ - {file = "sentry-sdk-1.14.0.tar.gz", hash = "sha256:273fe05adf052b40fd19f6d4b9a5556316807246bd817e5e3482930730726bb0"}, - {file = "sentry_sdk-1.14.0-py2.py3-none-any.whl", hash = "sha256:72c00322217d813cf493fe76590b23a757e063ff62fec59299f4af7201dd4448"}, + {file = "sentry_sdk-2.8.0-py2.py3-none-any.whl", hash = "sha256:6051562d2cfa8087bb8b4b8b79dc44690f8a054762a29c07e22588b1f619bfb5"}, + {file = "sentry_sdk-2.8.0.tar.gz", hash = "sha256:aa4314f877d9cd9add5a0c9ba18e3f27f99f7de835ce36bd150e48a41c7c646f"}, ] [package.dependencies] certifi = "*" -urllib3 = {version = ">=1.26.11", markers = "python_version >= \"3.6\""} +urllib3 = ">=1.26.11" [package.extras] aiohttp = ["aiohttp (>=3.5)"] +anthropic = ["anthropic (>=0.16)"] +arq = ["arq (>=0.23)"] +asyncpg = ["asyncpg (>=0.23)"] beam = ["apache-beam (>=2.12)"] bottle = ["bottle (>=0.12.13)"] celery = ["celery (>=3)"] +celery-redbeat = ["celery-redbeat (>=2)"] chalice = ["chalice (>=1.16.0)"] +clickhouse-driver = ["clickhouse-driver (>=0.2.0)"] django = ["django (>=1.8)"] falcon = ["falcon (>=1.4)"] fastapi = ["fastapi (>=0.79.0)"] -flask = ["blinker (>=1.1)", "flask (>=0.11)"] +flask = ["blinker (>=1.1)", "flask (>=0.11)", "markupsafe"] +grpcio = ["grpcio (>=1.21.1)", "protobuf (>=3.8.0)"] httpx = ["httpx (>=0.16.0)"] +huey = ["huey (>=2)"] +huggingface-hub = ["huggingface-hub (>=0.22)"] +langchain = ["langchain (>=0.0.210)"] +loguru = ["loguru (>=0.5)"] +openai = ["openai (>=1.0.0)", "tiktoken (>=0.3.0)"] opentelemetry = ["opentelemetry-distro (>=0.35b0)"] +opentelemetry-experimental = ["opentelemetry-instrumentation-aio-pika (==0.46b0)", "opentelemetry-instrumentation-aiohttp-client (==0.46b0)", "opentelemetry-instrumentation-aiopg (==0.46b0)", "opentelemetry-instrumentation-asgi (==0.46b0)", "opentelemetry-instrumentation-asyncio (==0.46b0)", "opentelemetry-instrumentation-asyncpg (==0.46b0)", "opentelemetry-instrumentation-aws-lambda (==0.46b0)", "opentelemetry-instrumentation-boto (==0.46b0)", "opentelemetry-instrumentation-boto3sqs (==0.46b0)", "opentelemetry-instrumentation-botocore (==0.46b0)", "opentelemetry-instrumentation-cassandra (==0.46b0)", "opentelemetry-instrumentation-celery (==0.46b0)", "opentelemetry-instrumentation-confluent-kafka (==0.46b0)", "opentelemetry-instrumentation-dbapi (==0.46b0)", "opentelemetry-instrumentation-django (==0.46b0)", "opentelemetry-instrumentation-elasticsearch (==0.46b0)", "opentelemetry-instrumentation-falcon (==0.46b0)", "opentelemetry-instrumentation-fastapi (==0.46b0)", "opentelemetry-instrumentation-flask (==0.46b0)", "opentelemetry-instrumentation-grpc (==0.46b0)", "opentelemetry-instrumentation-httpx (==0.46b0)", "opentelemetry-instrumentation-jinja2 (==0.46b0)", "opentelemetry-instrumentation-kafka-python (==0.46b0)", "opentelemetry-instrumentation-logging (==0.46b0)", "opentelemetry-instrumentation-mysql (==0.46b0)", "opentelemetry-instrumentation-mysqlclient (==0.46b0)", "opentelemetry-instrumentation-pika (==0.46b0)", "opentelemetry-instrumentation-psycopg (==0.46b0)", "opentelemetry-instrumentation-psycopg2 (==0.46b0)", "opentelemetry-instrumentation-pymemcache (==0.46b0)", "opentelemetry-instrumentation-pymongo (==0.46b0)", "opentelemetry-instrumentation-pymysql (==0.46b0)", "opentelemetry-instrumentation-pyramid (==0.46b0)", "opentelemetry-instrumentation-redis (==0.46b0)", "opentelemetry-instrumentation-remoulade (==0.46b0)", "opentelemetry-instrumentation-requests (==0.46b0)", "opentelemetry-instrumentation-sklearn (==0.46b0)", "opentelemetry-instrumentation-sqlalchemy (==0.46b0)", "opentelemetry-instrumentation-sqlite3 (==0.46b0)", "opentelemetry-instrumentation-starlette (==0.46b0)", "opentelemetry-instrumentation-system-metrics (==0.46b0)", "opentelemetry-instrumentation-threading (==0.46b0)", "opentelemetry-instrumentation-tornado (==0.46b0)", "opentelemetry-instrumentation-tortoiseorm (==0.46b0)", "opentelemetry-instrumentation-urllib (==0.46b0)", "opentelemetry-instrumentation-urllib3 (==0.46b0)", "opentelemetry-instrumentation-wsgi (==0.46b0)"] pure-eval = ["asttokens", "executing", "pure-eval"] pymongo = ["pymongo (>=3.1)"] pyspark = ["pyspark (>=2.4.4)"] @@ -984,7 +996,7 @@ sanic = ["sanic (>=0.8)"] sqlalchemy = ["sqlalchemy (>=1.2)"] starlette = ["starlette (>=0.19.1)"] starlite = ["starlite (>=1.48)"] -tornado = ["tornado (>=5)"] +tornado = ["tornado (>=6)"] [[package]] name = "six" @@ -1195,4 +1207,4 @@ h11 = ">=0.9.0,<1" [metadata] lock-version = "2.0" python-versions = "^3.10" -content-hash = "6341c970730be47b8d4c325e1a6f3dcdc619e185f233015af9602d24112afc76" +content-hash = "2b911fe21977d3ec74a1c9bd7709c985be298d554f3daa2866509d31ee48a642" diff --git a/pyproject.toml b/pyproject.toml index 9fcb85b0..eedb79ac 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -30,7 +30,7 @@ graphene_django = "3.0.0" gunicorn = "22.0.0" psycopg2 = "2.9.5" quickpay-api-client = "2.0.1" -sentry-sdk = "1.14" +sentry-sdk = "2.8.0" tqdm = "4.66.3" whitenoise = "5.2.0" pydotplus = "2.0.2" From 96f0117c7fb2e2446088cb71949ec94e24f5419c Mon Sep 17 00:00:00 2001 From: Rasmus Selsmark Date: Sun, 21 Jul 2024 10:52:39 +0200 Subject: [PATCH 2/5] Verify that activity end_date has been set, before validating it --- members/models/activity.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/members/models/activity.py b/members/models/activity.py index 876f75a5..f615c14b 100644 --- a/members/models/activity.py +++ b/members/models/activity.py @@ -120,7 +120,8 @@ def get_min_amount(self, activitytype): min_amount = self.NO_MINIMUM_AMOUNT # Issue 1058: If activity is in the past then skip this check - if self.end_date > timezone.now().date(): + # During activity creation, the end_date could have been left empty + if self.end_date and self.end_date > timezone.now().date(): if activitytype == "FORENINGSMEDLEMSKAB": min_amount = self.MEMBERSHIP_MIN_AMOUNT From bb419cb247de269ce749e65b2d4288cb4f4b7f72 Mon Sep 17 00:00:00 2001 From: mhewel <58829786+mhewel@users.noreply.github.com> Date: Sun, 21 Jul 2024 14:48:58 +0200 Subject: [PATCH 3/5] =?UTF-8?q?Tilf=C3=B8jede=20Postnummer=20og=20Kommune?= =?UTF-8?q?=20til=20venteliste?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Desuden ændrede kolonneoverskrift fra "Nummer på venteliste" til "Ventelistenummer" --- members/admin/waitinglist_admin.py | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/members/admin/waitinglist_admin.py b/members/admin/waitinglist_admin.py index 3592e429..42dc72a9 100644 --- a/members/admin/waitinglist_admin.py +++ b/members/admin/waitinglist_admin.py @@ -84,6 +84,8 @@ def get_form(self, request, obj=None, change=False, **kwargs): "person_link", "person_age_years", "person_gender_text", + "zipcode", + "municipality", "user_waiting_list_number", "user_created", "user_added_waiting_list", @@ -99,6 +101,7 @@ def get_form(self, request, obj=None, change=False, **kwargs): "department__name", "department__union__name", "person__name", + "zipcode", ] search_help_text = mark_safe( """Du kan søge på forening, afdeling eller person.
@@ -328,5 +331,17 @@ def user_added_waiting_list(self, item): def user_waiting_list_number(self, item): return item.number_on_waiting_list() - user_waiting_list_number.short_description = "Nummer på venteliste" + user_waiting_list_number.short_description = "Ventelistenummer" user_waiting_list_number.admin_order_field = "on_waiting_list_since" + + def zipcode(self, item): + return item.person.zipcode + + zipcode.short_description = "Post nr" + zipcode.admin_order_field = "person__zipcode" + + def municipality(self, item): + return item.person.municipality + + municipality.short_description = "Kommune" + municipality.admin_order_field = "person__municipality" From b891d0495e00f3cec2abaaae4815e67833e094bb Mon Sep 17 00:00:00 2001 From: mhewel <58829786+mhewel@users.noreply.github.com> Date: Sun, 21 Jul 2024 15:23:15 +0200 Subject: [PATCH 4/5] Admin > Invtationer: Sortering af Alder, PostNummer og Deltager kolonnerne --- members/admin/activityinvite_admin.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/members/admin/activityinvite_admin.py b/members/admin/activityinvite_admin.py index 251c576b..261f6e18 100644 --- a/members/admin/activityinvite_admin.py +++ b/members/admin/activityinvite_admin.py @@ -7,10 +7,12 @@ from django.utils import timezone from django.utils.safestring import mark_safe from django.utils.html import escape +from django.db.models import Exists, OuterRef from members.models import ( Activity, ActivityInvite, + ActivityParticipant, AdminUserInformation, Department, Person, @@ -165,7 +167,15 @@ class Meta: # Only show invitation to own activities def get_queryset(self, request): - qs = super(ActivityInviteAdmin, self).get_queryset(request) + queryset = super().get_queryset(request) + qs = queryset.annotate( + is_participating=Exists( + ActivityParticipant.objects.filter( + person=OuterRef("person"), activity=OuterRef("activity") + ) + ) + ) + if request.user.is_superuser or request.user.has_perm( "members.view_all_departments" ): @@ -211,11 +221,13 @@ def person_age_years(self, item): return item.person.age_years() person_age_years.short_description = "Alder" + person_age_years.admin_order_field = "person__birthday" def person_zipcode(self, item): return item.person.zipcode person_zipcode.short_description = "Postnummer" + person_zipcode.admin_order_field = "person__zipcode" def activity_department_union_link(self, item): url = reverse( @@ -259,12 +271,11 @@ def person_link(self, item): person_link.admin_order_field = "person__name" def participating(self, item): - return item.person.activityparticipant_set.filter( - activity=item.activity - ).exists() + return item.is_participating participating.short_description = "Deltager" participating.boolean = True + participating.admin_order_field = "is_participating" def export_csv_invitation_info(self, request, queryset): result_string = """"Forening"; "Afdeling"; "Aktivitet"; "Deltager";\ From 0436be2b9e6bdee3441e0a0041b7b4a22b7c4239 Mon Sep 17 00:00:00 2001 From: mhewel <58829786+mhewel@users.noreply.github.com> Date: Sun, 21 Jul 2024 16:41:46 +0200 Subject: [PATCH 5/5] =?UTF-8?q?Admin=20>=20Afdeling:=20Flyt=20Foreningskol?= =?UTF-8?q?onne,=20og=20sorter=20p=C3=A5=20Venteliste=20antal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fjernede også ID kolonne (den havde link til det samme som Afdelingskolonne) --- members/admin/department_admin.py | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/members/admin/department_admin.py b/members/admin/department_admin.py index 0d581797..ea681b3a 100644 --- a/members/admin/department_admin.py +++ b/members/admin/department_admin.py @@ -12,6 +12,7 @@ ) from django.utils.html import escape from django.http import HttpResponse +from django.db.models import Count class AdminUserDepartmentInline(admin.TabularInline): @@ -97,8 +98,6 @@ def queryset(self, request, queryset): class DepartmentAdmin(admin.ModelAdmin): inlines = [AdminUserDepartmentInline] list_display = ( - "id", - "department_union_link", "department_link", "address", "isVisible", @@ -107,6 +106,7 @@ class DepartmentAdmin(admin.ModelAdmin): "created", "closed_dtm", "waitinglist_count_link", + "department_union_link", ) list_filter = ( "address__region", @@ -149,7 +149,9 @@ def formfield_for_manytomany(self, db_field, request, **kwargs): return super().formfield_for_manytomany(db_field, request, **kwargs) def get_queryset(self, request): - qs = super(DepartmentAdmin, self).get_queryset(request) + queryset = super().get_queryset(request) + qs = queryset.annotate(waitinglist_count=Count("waitinglist")) + if request.user.is_superuser or request.user.has_perm( "members.view_all_departments" ): @@ -210,11 +212,12 @@ def waitinglist_count_link(self, item): link = f""" - {item.waitinglist_set.count()} + {item.waitinglist_count} """ return mark_safe(link) waitinglist_count_link.short_description = "Venteliste" + waitinglist_count_link.admin_order_field = "waitinglist_count" def export_department_info_csv(self, request, queryset): result_string = """"Forening"; "Afdeling"; "Afdeling-Startdato"; "Afdeling-lukkedato";\