Compare commits
4 Commits
renovate/v
...
main
Author | SHA1 | Date | |
---|---|---|---|
71d2227854 | |||
d9ae263da0 | |||
1e09ebf24b | |||
7108f9418d |
@ -149,7 +149,12 @@ def sync_members(access_client: AccessClient):
|
||||
|
||||
if access_user := access_users_by_employee_number.get(member.uid):
|
||||
expected_user["status"] = (
|
||||
UserStatus.ACTIVE if member.is_active else UserStatus.DEACTIVATED
|
||||
UserStatus.ACTIVE
|
||||
if (
|
||||
member.is_active
|
||||
or member.flags.filter(name="Misc. Access", type="folder").exists()
|
||||
)
|
||||
else UserStatus.DEACTIVATED
|
||||
)
|
||||
changes = {
|
||||
k: v for k, v in expected_user.items() if getattr(access_user, k) != v
|
||||
|
@ -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()
|
||||
|
@ -0,0 +1,10 @@
|
||||
<a class="btn btn-sm btn-primary"
|
||||
hx-boost="true"
|
||||
hx-push-url="false"
|
||||
hx-indicator=".htmx-indicator"
|
||||
href="{% querystring refresh=1 %}">
|
||||
<div class="spinner-border spinner-border-sm htmx-indicator" role="status">
|
||||
<span class="visually-hidden">Loading...</span>
|
||||
</div>
|
||||
Refresh Data
|
||||
</a>
|
@ -13,10 +13,16 @@
|
||||
{% endblock %}
|
||||
{% block content %}
|
||||
<div class="container">
|
||||
<div class="row justify-content-center d-print-none">
|
||||
<div class="col-auto">
|
||||
{% if event.registrations is not None %}
|
||||
{% url 'membershipworks:event-registrations' event.pk as registrations_url %}
|
||||
{% bootstrap_button href=registrations_url content="Show Registrations" %}
|
||||
{% bootstrap_button extra_classes="btn-sm" href=registrations_url content="Show Registrations" %}
|
||||
{% endif %}
|
||||
</div>
|
||||
<div class="col-auto">{% include "membershipworks/components/refresh_data_button.dj.html" %}</div>
|
||||
</div>
|
||||
|
||||
{% include "membershipworks/event_invoice.dj.html" %}
|
||||
|
||||
<div class="card w-auto mt-5">
|
||||
|
@ -22,6 +22,7 @@
|
||||
{% bootstrap_button extra_classes="btn-sm" href=email_link target="_blank" content="Email all attendees" %}
|
||||
</div>
|
||||
<div class="col-auto">{% include "cmsmanage/components/download_table.dj.html" %}</div>
|
||||
<div class="col-auto">{% include "membershipworks/components/refresh_data_button.dj.html" %}</div>
|
||||
</div>
|
||||
<h2 class="d-none d-print-block">Registrations for {{ event.details.ttl|nh3 }}</h2>
|
||||
{% render_table table %}
|
||||
|
@ -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, scrape_events
|
||||
|
||||
from .forms import EventInvoiceForm
|
||||
from .invoice_email import make_invoice_emails
|
||||
@ -310,6 +311,10 @@ class EventDetailView(
|
||||
if self.request.user.has_perm(
|
||||
self.permission_required
|
||||
) or self.object.user_is_instructor(self.request.user):
|
||||
if "refresh" in self.request.GET:
|
||||
scrape_events()
|
||||
scrape_event_details([self.object])
|
||||
|
||||
return super().render_to_response(context, **response_kwargs)
|
||||
else:
|
||||
return self.handle_no_permission()
|
||||
@ -453,6 +458,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):
|
||||
|
Loading…
Reference in New Issue
Block a user