From fb8eb83cac929da944f61845c0a626f32e0b9be0 Mon Sep 17 00:00:00 2001
From: tvluke <tvluke@chaotikum.org>
Date: Tue, 1 Oct 2024 17:59:52 +0200
Subject: [PATCH] update 2025

---
 README.md               | 41 ++++++++++++++++++++++++++++++++++++++++-
 eventgenutils.py        |  9 +++++++++
 main.py                 | 35 ++++++++++++++++++++++++++++++-----
 openspacevideosetup.txt | 17 +++++++++++++++++
 4 files changed, 96 insertions(+), 6 deletions(-)
 create mode 100644 openspacevideosetup.txt

diff --git a/README.md b/README.md
index d8fcb36..4314cf0 100644
--- a/README.md
+++ b/README.md
@@ -2,4 +2,43 @@
 
 Kleines Helper-Tool. Im Grunde erstellt es Regeltermine, für den Chaotikum-Kalender.
 
-Das sind Makrdown Dateien, das ist ohne Skript einfach anstrengend.
\ No newline at end of file
+Das sind Makrdown Dateien, das ist ohne Skript einfach anstrengend.
+
+## Open Space
+Jeden Mittwoch 19:00 to 23:59:59 aber nicht zwischen oder am 24.12 und 1.1
+
+## Plenum 
+Zweiter Donnerstag des Monats, außer November, da dritter.
+
+## OSM
+Vierter donnerstag in ungeraden monaten
+
+## Bits und Bäume
+Jeden zweiten Dienstag im Monat um 18:31...
+
+## FFHL-Orga
+Quartalsweise am 3. Donnerstag im zweiten Monat des Quartals, also Februar, Mai, ...
+
+## NooK
+Zweiter freitag im November (und der darauf folgende Samstag)
+
+## Fünf Minuten Termine
+Zweiter Mittwoch im Januar, April, September und Dezember
+
+## Somerfest
+Der erste Samstag nach dem 10. Mai. 15:00 bis 23:59
+
+## Tag des offenen Hackspaces
+https://wiki.hackerspaces.org/International_Open_Hackerspace_Day
+The International Open Hackerspace Day is happening every last Saturday of March.
+
+## Congress
+27.12 bis 30.12
+
+## NooK-Orga
+Dritter Montag jeden zweiten Monat von januar bis Mai, dann monatlich von Juni bis September
+Oktober jeden Montag
+
+## CTF
+Jeden zweiten Dienstag. Am 02.07.2024 war ein CTF, wir rechnen also von dort.
+Wenn der Termin zwischen den 23.12 und 01.01 (jeweils inklusive fällt) gibt es keinen Termin
\ No newline at end of file
diff --git a/eventgenutils.py b/eventgenutils.py
index 81cd214..ae5dde7 100644
--- a/eventgenutils.py
+++ b/eventgenutils.py
@@ -46,6 +46,13 @@ def is_wednesday(_date_candidate):
 def is_nth_monday_of_month(_date_candidate, _n):
     return is_nth_xday_of_month(_date_candidate, _date_candidate.year, _date_candidate.month, _n, MON)
 
+def is_monday(_date_candidate):
+    wd = _date_candidate.weekday()
+    return wd == MON;
+
+def is_wednesday(_date_candidate):
+    wd = _date_candidate.weekday()
+    return wd == WED
 
 def is_nth_tuesday_of_month(_date_candidate, _n):
     return is_nth_xday_of_month(_date_candidate, _date_candidate.year, _date_candidate.month, _n, TUE)
@@ -126,6 +133,8 @@ def is_equal_month(_date_candidate):
 def is_january(_date_candidate):
     return _date_candidate.month == 1
 
+def is_february(_date_candidate):
+    return _date_candidate.month == 3
 
 def is_march(_date_candidate):
     return _date_candidate.month == 3
diff --git a/main.py b/main.py
index 3d83304..b9e73c8 100644
--- a/main.py
+++ b/main.py
@@ -23,13 +23,14 @@ BITSUNDBAEUME = True
 # jeden zweiten Dienstag im Monat um 18:31...
 
 FFHLORGA = True
-# jeden dritten Donnerstag im Monat 19:00 bis 22:00 Uhr
+# quartalsweise am 3. Donnerstag im zweiten Monat des Quartals, also Februar, Mai, ...
 
 NOOK = True
 # zweiter freitag im November (und der darauf folgende Samstag)
 
+# FÃœNF MINUTEN TERMINE
+# Zweiter Mittwoch im januar, April, september und dezember
 FUENF_MIN_TERMINE = True
-# Ãœblicherweise Zweiter Mittwoch im ersten Monat des Quartals
 
 SOMMERFEST = True
 # Ãœblicherweise der erste Samstag nach dem 10 Mai. 15:00 bis 23:59
@@ -51,6 +52,7 @@ GETTING_SPACE_CLEAN = False
 
 # NOOK ORGA
 # Dritter Montag jeden zweiten Monat von januar bis Mai, dann monatlich von Juni bis September
+# Oktober jeden Montag
 NOOK_ORGA = True
 
 # CTF
@@ -58,6 +60,10 @@ NOOK_ORGA = True
 # Wenn der Termin zwischen den 23.12 und 01.01 (jeweils inklusive fällt) gibt es keinen Termin
 CTF = True
 
+# Video Setup Intro
+# unklar
+WED_VIDEO_SETUP = False
+
 #################################################
 # Year to create events for
 #################################################
@@ -103,7 +109,9 @@ def is_bits_und_baeume(_date_candidate):
 
 
 def is_ffhl(_date_candidate):
-    if utils.is_nth_thursday_of_month(_date_candidate, 3):
+    if utils.is_nth_thursday_of_month(_date_candidate, 3) and (
+            utils.is_february(_date_candidate) or utils.is_may(_date_candidate) or utils.is_august(
+            _date_candidate) or utils.is_november(_date_candidate)):
         return True
     return False
 
@@ -113,12 +121,20 @@ def is_nook(_date_candidate):
 
 
 def is_fuenf_min(_date_candidate):
-    if utils.is_april(_date_candidate) or utils.is_july(_date_candidate) or utils.is_october(_date_candidate):
+    if utils.is_january(_date_candidate) or utils.is_april(_date_candidate) or utils.is_september(
+            _date_candidate) or utils.is_december(_date_candidate):
         if utils.is_nth_wednesday_of_month(_date_candidate, 2):
             return True
     return False
 
 
+def is_wed_video_setup(_date_candidate):
+    if utils.is_april(_date_candidate) or utils.is_july(_date_candidate) or utils.is_october(_date_candidate):
+        if utils.is_nth_wednesday_of_month(_date_candidate, 1):
+            return True
+    return False
+
+
 def is_sommerfest(_date_candidate):
     return utils.first_saturday_after_may_10th(_date_candidate)
 
@@ -142,7 +158,8 @@ def is_getting_space_clean(_date_candidate):
 
 
 def is_nook_orga(_date_candidate):
-    return utils.is_third_monday_of_month_and_uneven_month_before_june_or_before_september(_date_candidate)
+    return utils.is_third_monday_of_month_and_uneven_month_before_june_or_before_september(_date_candidate) or (
+                utils.is_monday(_date_candidate) and utils.is_october(_date_candidate))
 
 
 def is_ctf(_date_candidate):
@@ -183,6 +200,10 @@ def create_fuenf_min(_date):
     utils.create_event("5min", _date, start_hour=20, end_hour=21)
 
 
+def create_wed_video_setup(_date):
+    utils.create_event("openspacevideosetup", _date, start_hour=19, end_hour=20)
+
+
 def create_sommerfest(_date):
     utils.create_event("sommerfest", _date, start_hour=15)
 
@@ -273,5 +294,9 @@ while date_to_check <= datetime.datetime.strptime(str(YEAR) + "-12-31", utils.da
         result = is_ctf(date_to_check)
         if result:
             create_ctf(date_to_check)
+    if WED_VIDEO_SETUP:
+        result = is_wed_video_setup(date_to_check)
+        if result:
+            create_wed_video_setup(date_to_check)
 
     date_to_check += datetime.timedelta(days=1)
diff --git a/openspacevideosetup.txt b/openspacevideosetup.txt
new file mode 100644
index 0000000..dba3ab7
--- /dev/null
+++ b/openspacevideosetup.txt
@@ -0,0 +1,17 @@
+---
+layout: [eventcal]
+title: "Geräte-Intro: Das Video-Setup"
+eventdate: <EVENTSTART>
+eventend: <EVENTEND>
+#https://www.uuidgenerator.net/
+uid: <UUID>
+contact: info@chaotikum.org
+locations:
+ - Augenprüfraum
+ - Wartezimmer
+ - Lager
+ - Confy Zone
+sets:
+ - video
+short: "Einmal im Quartal könnt ihr euch beim Open-Space das Video-Setup erklären lassen. Ansonsten auf nachfrage."
+---
-- 
GitLab