From b7385a3c68789d3b77eb4a03868c9185fd1d4e8e Mon Sep 17 00:00:00 2001
From: Dominic DiTaranto <domdit@gmail.com>
Date: Sun, 17 Nov 2024 17:15:18 -0500
Subject: [PATCH] auto handle events

---
 scripts/bp_create.py     | 35 +++++++++++++++++++++++++++++++++++
 scripts/bp_deactivate.py | 15 +++++++++++++++
 web/views.py             |  6 +++---
 3 files changed, 53 insertions(+), 3 deletions(-)
 create mode 100644 scripts/bp_create.py
 create mode 100644 scripts/bp_deactivate.py

diff --git a/scripts/bp_create.py b/scripts/bp_create.py
new file mode 100644
index 0000000..41d53b6
--- /dev/null
+++ b/scripts/bp_create.py
@@ -0,0 +1,35 @@
+import datetime
+from django.utils import timezone
+
+from web.models import Event
+
+
+start_date = timezone.now()  # This should always be the first of a month or the day after the last event's end date
+end_date = None
+event_duration = 7
+events_to_create = 100
+participants = 5
+
+current_month = start_date.strftime('%B')
+current_month_count = 1  # change this to +1 of whatever the last band practice is
+
+for i in range(events_to_create):
+    if start_date.strftime('%B') != current_month:
+        current_month = start_date.strftime('%B')
+        current_month_count = 1
+
+    end_date = start_date + datetime.timedelta(days=event_duration)
+    name = f'[BP] {current_month} {current_month_count}'
+
+    e = Event(
+        start_date=start_date,
+        end_date=end_date,
+        name=name,
+        participants=participants
+    )
+
+    e.save()
+    start_date = end_date + datetime.timedelta(days=1)
+    current_month_count += 1
+
+
diff --git a/scripts/bp_deactivate.py b/scripts/bp_deactivate.py
new file mode 100644
index 0000000..1a125d5
--- /dev/null
+++ b/scripts/bp_deactivate.py
@@ -0,0 +1,15 @@
+from django.utils import timezone
+
+from web.models import Event
+
+
+def deactivate():
+    today = timezone.now()
+
+    active_events = Event.objects.filter(active=True).all()
+    for event in active_events:
+        if 'BP' in event.name:
+            if event.end_date < today:
+                event.active = False
+                event.save()
+
diff --git a/web/views.py b/web/views.py
index 7331b4d..e35396c 100644
--- a/web/views.py
+++ b/web/views.py
@@ -2,17 +2,17 @@ from datetime import timedelta
 from django.contrib.auth import update_session_auth_hash
 from django.contrib.auth.decorators import login_required
 from django.contrib.auth.forms import PasswordChangeForm
-from django.contrib.auth.views import PasswordChangeView
 from django.shortcuts import get_object_or_404, redirect, render
-from django.urls import reverse_lazy
+from scripts.bp_deactivate import deactivate
 from web.models import Event, Availability
 
 
 @login_required()
 def index(request):
+    deactivate()
     parsed_events = []
 
-    for active_event in Event.objects.filter(active=True).order_by('start_date'):
+    for active_event in Event.objects.filter(active=True).order_by('start_date')[:10]:
         data = {
             'id': active_event.id,
             'name': active_event.name,