diff --git a/membershipworks/tasks/scrape.py b/membershipworks/tasks/scrape.py index 119c4b0..7c2b0cd 100644 --- a/membershipworks/tasks/scrape.py +++ b/membershipworks/tasks/scrape.py @@ -4,7 +4,6 @@ from datetime import datetime, timedelta from django.conf import settings from django.db import transaction -from django.db.models import QuerySet from cmsmanage.django_q2_helper import q_task_group from membershipworks.membershipworks_api import FieldType, MembershipWorks @@ -125,13 +124,13 @@ def scrape_membershipworks(*args, **options): scrape_transactions(membershipworks) -def scrape_event_details(queryset: QuerySet[EventExt]): +def scrape_event_details(events: Iterable[EventExt]): membershipworks = MembershipWorks() membershipworks.login( settings.MEMBERSHIPWORKS_USERNAME, settings.MEMBERSHIPWORKS_PASSWORD ) - for event in queryset: + for event in events: event.details = membershipworks.get_event_by_eid(event.eid) event.registrations = membershipworks.get_event_registrations(event.eid) event.save() diff --git a/membershipworks/templates/membershipworks/event_registrations.dj.html b/membershipworks/templates/membershipworks/event_registrations.dj.html index 4c0af38..8d3bd91 100644 --- a/membershipworks/templates/membershipworks/event_registrations.dj.html +++ b/membershipworks/templates/membershipworks/event_registrations.dj.html @@ -22,6 +22,18 @@ {% bootstrap_button extra_classes="btn-sm" href=email_link target="_blank" content="Email all attendees" %}
{% include "cmsmanage/components/download_table.dj.html" %}
+
+ +
+ Loading... +
+ Refresh Data +
+

Registrations for {{ event.details.ttl|nh3 }}

{% render_table table %} diff --git a/membershipworks/views.py b/membershipworks/views.py index 8c3d87d..571a166 100644 --- a/membershipworks/views.py +++ b/membershipworks/views.py @@ -41,6 +41,7 @@ from django_weasyprint import WeasyTemplateResponseMixin from django_weasyprint.utils import django_url_fetcher from membershipworks.membershipworks_api import MembershipWorks +from membershipworks.tasks.scrape import scrape_event_details from .forms import EventInvoiceForm from .invoice_email import make_invoice_emails @@ -453,6 +454,9 @@ class EventRegistrationsView(ExportMixin, SingleTableMixin, AccessMixin, DetailV def render_to_response( self, context: dict[str, Any], **response_kwargs: Any ) -> HttpResponse: + if "refresh" in self.request.GET: + scrape_event_details([self.object]) + if self.request.user.has_perm( self.permission_required ) or self.object.user_is_instructor(self.request.user):