96 Commits

Author SHA1 Message Date
b87a2847a2 Fix height of blog in mobile view 2024-02-05 21:16:23 +01:00
ad03132c05 Make links in competition lists a bit larger fr better accessibility 2024-02-05 21:08:33 +01:00
ac4a27cd79 Update list of persons 2024-02-05 21:08:31 +01:00
cbc59e4303 Add preprocessing images for person lists 2024-02-05 21:04:26 +01:00
c2aeb42a85 Update "Anmeldeformular" to same version as on hoomepage 2024-02-05 21:04:26 +01:00
edfe36905d Put names of couples in overview list 2024-02-05 21:04:26 +01:00
6a8ece286f Fix image styling in news and teaser image 2024-02-05 20:54:16 +01:00
eb374366a9 Create new news entry 2024-02-05 20:53:13 +01:00
297e955423 Make all entries the same size in blog 2024-02-05 20:12:40 +01:00
39984fe27c Added entry for new succ. course 2024-02-05 17:10:20 +01:00
7576160edd Fix date of announcement 2024-02-05 17:10:04 +01:00
631589a01b Fix styling of announcements 2024-02-05 15:23:29 +01:00
30ea1c07fe Fix announcement date 2024-02-05 15:23:08 +01:00
1b2acc0d87 Insert public SSH keys to allow passwordless access 2024-02-05 15:16:07 +01:00
anvo42
73ed70131f Trainer entfernt issue #36 2024-02-03 16:55:54 +01:00
anvo42
c746301a48 neue News TangoArgentino 2024-02-03 16:54:30 +01:00
b719cf4412 News EIntrag Jahresauftakt 2024-01-30 10:27:08 +01:00
d4b179d6f1 Fix some CSS issues 2024-01-24 16:36:41 +01:00
0b60eab738 Fixed some persons 2024-01-24 16:06:19 +01:00
44b2a9053c Switch to yearly list 2024-01-22 19:53:39 +01:00
4fdad40931 Fix file names in news to avoid spaces in the image name 2024-01-22 19:43:06 +01:00
9da360f668 Inserted new competition announcements 2024-01-22 19:16:59 +01:00
49ca4b2604 Fix typos in raumbelegung 2024-01-22 18:38:24 +01:00
11c1da94e3 Fix page beitrag 2024-01-22 18:35:17 +01:00
016ab5a484 Merge information from discussions related to room reservations 2024-01-19 17:15:01 +01:00
1b9f5c49ac Make persons headless 2024-01-18 21:39:04 +01:00
fece9025fe Add robots.txt and fix sitemap 2024-01-18 21:31:52 +01:00
d420fab3bf Fix some DevOps issues 2024-01-18 20:14:54 +01:00
6acc84aaaf Change type of calendar to list 2024-01-18 19:59:24 +01:00
1da7270844 Added missing trainer to list 2024-01-18 19:59:09 +01:00
86874577a9 Corrections of time tables from current homepage 2024-01-18 19:58:34 +01:00
6450b724e9 Trainerliste angepasst
- Tine Grassel
+ Anja & Frank Westerhoff
+ Angi & David Dahm
2024-01-18 19:32:13 +01:00
5fd8a8ccd7 Make file name of section turniermeldung more ascii-stable. 2024-01-18 15:52:11 +01:00
anvo42
37f71ff01f typo korrektur in raumbelegung 2024-01-18 15:34:30 +01:00
anvo42
60c95ca55a issue #2 - Raumbelegung mit Regeln ergänzt 2024-01-16 18:17:07 +01:00
anvo42
cdf4ba468c typo Korrektur im Title "Trainingsräume" 2024-01-16 17:39:11 +01:00
2598f77156 Merge pull request 'Turniermeldunen Struktur anlegen' (#32) from feat/turniermeldungen into develop
Reviewed-on: #32
2024-01-14 19:46:53 +00:00
533caad295 Create automatically generated data 2024-01-14 20:43:30 +01:00
55e3efb3a8 Create a basic code snippet to parse mails automatically
Start of #27
2024-01-14 20:41:17 +01:00
05285d29d4 Fix some arhetypes (side-effect) 2024-01-14 12:00:14 +01:00
e5b3a1babb Fix archetype 2024-01-14 11:58:05 +01:00
a33273d8ba Add some test data 2024-01-14 11:55:07 +01:00
a793d2da87 Create basic structure to show turniermeldungen 2024-01-14 11:54:58 +01:00
c63dac6e7f Enable menus in new taxonomy pages 2024-01-14 09:47:56 +01:00
ffb4353273 Create some dumy data 2024-01-13 22:51:18 +01:00
644156e1d8 Create basic structure for list of Turniermeldungen 2024-01-13 22:51:08 +01:00
5b8cb1031e Make stylelint happy 2024-01-13 20:32:38 +01:00
77a6636bb0 Make time tables responsive again
This was unfortunately forgotten to restore the desktop view again.
2024-01-13 20:31:22 +01:00
a2a55bf3a7 Make the calendar using pure HTML in Hugo 2024-01-13 20:30:30 +01:00
30bf4dab28 Merge branch 'stylelint' into develop 2024-01-12 22:20:16 +01:00
7b4e8bcc30 Disable ascending specificity in SCSS 2024-01-12 22:19:42 +01:00
55cdfc619f First fixes in SCSS file to fix some issues 2024-01-12 22:01:10 +01:00
5c4175b01a Create configuration for stylelint 2024-01-12 21:47:33 +01:00
ae74427295 Enable hyphenation 2024-01-10 11:05:53 +01:00
fdd417da72 Open Facebook in ots own tab
Closes #24
2024-01-09 21:53:43 +01:00
75995e2128 Add NPM-based installation routines 2024-01-09 21:32:03 +01:00
25b0477c05 Create different variants for calendar integrations 2024-01-09 13:55:06 +01:00
29e94c2dd3 Use all 6 calendars in homepage 2024-01-08 21:17:12 +01:00
def36aa1fc Avoid logging of debug messages in slider 2024-01-08 21:16:49 +01:00
8da576c7be Merge branch 'feat/mobile-view' into develop 2024-01-07 16:54:58 +01:00
f63e1f951f Enable animation correctly and randomly 2024-01-07 16:53:53 +01:00
c2ef20b985 Make time tables responsive 2024-01-07 15:55:19 +01:00
3a4f208914 Fix type in CSS 2024-01-07 15:54:47 +01:00
164d114bfb Style iframe using normal SCSS 2024-01-07 15:53:59 +01:00
8d41136787 Make the list of rooms mobile aware 2024-01-07 14:18:17 +01:00
46aa612ed5 MAke officials mobile aware 2024-01-07 14:17:52 +01:00
19d939edd2 Clean up archive layout 2024-01-07 13:00:47 +01:00
6710562ea7 Reduce amount of blog entries not in the archive 2024-01-07 12:52:08 +01:00
f66e4aa190 Create mobile firndly archive
Closes #22
2024-01-07 12:51:52 +01:00
7642b6ac29 Handle video content for mobile views 2024-01-07 11:53:54 +01:00
b3c46080af Handle galleries view in news in mobile 2024-01-07 11:53:26 +01:00
08513e79d3 Clean some comments from SCSS 2024-01-07 11:39:19 +01:00
60c76c5e78 Fix with of images in news (single images) 2024-01-07 10:54:37 +01:00
2af99042cd Prevent aligned content in headings 2024-01-07 10:54:15 +01:00
85527b4467 Create styles for mobile menu 2024-01-07 10:44:26 +01:00
02d17099a4 Extract horizontal line color in variable 2024-01-07 10:42:50 +01:00
f477fa5450 Create basic structure for mobile menu in HTML DOM 2024-01-07 10:42:21 +01:00
1ab1a7b084 By default publish the server result locally in the network for testing with real devices 2024-01-07 10:41:22 +01:00
a0e42dd7cc Removed background from blog layout 2024-01-07 00:07:18 +01:00
c74eb9699c Basic styling for mobile view on blog fixed 2024-01-07 00:07:03 +01:00
314261bba5 Correct indentation 2024-01-05 20:11:13 +01:00
460abc3509 Add facebook to footer
Closes #17
2024-01-05 12:30:52 +01:00
83d8e44e31 Mail Link konsistent zu Impressum in Seite "Info" 2024-01-05 12:14:03 +01:00
anvo42
799585e6b2 Raumbelegung textanpassung 2024-01-05 12:09:03 +01:00
anvo42
34f4aa2886 issue #2 - Raumbelegung how to Erklärungstexte eingebaut, Reihenfolge verändert 2024-01-04 22:24:14 +01:00
anvo42
4af5283171 Impressum Vereinheitlichung e-mail 2024-01-04 21:40:15 +01:00
anvo42
c540ced152 impressum finetuning und typo Korrektur in der Adressse 2024-01-04 21:39:16 +01:00
anvo42
7aa3efa54b Bug #11 - typo in footer "TSC im VfL Sindelfingen" 2024-01-04 21:30:16 +01:00
1a5a525077 Add announcements to left side bar 2024-01-04 17:41:21 +01:00
04c9f04146 Create structure to create list of annoucnements 2024-01-04 17:18:46 +01:00
28e9d32e2c Show correct side menu in news entries 2024-01-04 15:57:23 +01:00
a0cf3bef07 Add legend to calendar iframe 2024-01-04 14:10:13 +01:00
ea20a8c546 Temporäres deaktivieren der Turniermeldungen 2024-01-04 13:40:45 +01:00
2a6b4e56e5 Disabled corona page and enabled a few other pages 2024-01-04 13:26:57 +01:00
b808cbfe38 Remove section Pressestimmen from menu for now 2024-01-04 13:26:57 +01:00
d26511f766 Merge branch 'news-parsing' into develop 2024-01-04 13:26:35 +01:00
129 changed files with 7644 additions and 303 deletions

1
.gitignore vendored
View File

@@ -2,3 +2,4 @@
/public/
/.hugo_build.lock
/resources/_gen/
/node_modules/

10
.stylelintrc.json Normal file
View File

@@ -0,0 +1,10 @@
{
"extends": [
"stylelint-config-standard-scss"
],
"rules": {
"media-feature-range-notation": "prefix",
"color-function-notation": "legacy",
"no-descending-specificity": null
}
}

24
.vscode/launch.json vendored Normal file
View File

@@ -0,0 +1,24 @@
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"name": "Python: Remote Attach",
"type": "python",
"request": "attach",
"connect": {
"host": "localhost",
"port": 5678
},
"pathMappings": [
// {
// "localRoot": "${workspaceFolder}",
// "remoteRoot": "."
// }
],
"justMyCode": true
}
]
}

View File

@@ -1,5 +1,6 @@
HUGO_PARAMS =
DEV_PARAMS = -D
SERVER_PARAMS = --bind 0.0.0.0
all:
@@ -10,16 +11,18 @@ dev:
hugo ${HUGO_PARAMS} ${DEV_PARAMS}
server:
hugo server ${HUGO_PARAMS}
hugo server ${HUGO_PARAMS} ${SERVER_PARAMS}
dev-server:
hugo server ${HUGO_PARAMS} ${DEV_PARAMS}
hugo server ${HUGO_PARAMS} ${SERVER_PARAMS} ${DEV_PARAMS}
tarball: build
tar czf page.tar.gz -C public .
.PHONY: tarball build
trigger-sync-to-stage:
ssh tsc-homepage@hh.wolf-stuttgart.net
sync-to-stage:
rsync -ahPv --delete --delete-delay --info=progress2 public/ christian@hh.wolf-stuttgart.net:/srv/http/tsc/hugo/
sync-to-stage-manual:
rsync -ahPv --delete --delete-delay --info=progress2 --chown tsc-homepage:tsc-homepage public/ root@hh.wolf-stuttgart.net:/srv/http/tsc/hugo/

View File

@@ -1,6 +0,0 @@
---
title: "{{ replace .Name "-" " " | title }}"
date: {{ .Date }}
draft: true
---

View File

@@ -1,9 +1,12 @@
baseURL: http://example.org/
baseURL: https://tanzsportclub.vfl-sindelfingen.de/
languageCode: de
title: TSC im VfL Sindelfingen e.V.
theme: tsc_vfl
relativeUrls: true
sitemap:
changeFreq: daily
build:
writeStats: true

View File

@@ -11,6 +11,6 @@ Am letzten Wochenende tanzten zwei Paare ihre jeweils ersten Turniere für den T
Das zweite neue Paar, Diane Mongellaz und Stefan Isenecker, ging in Karlsfeld in Bayern an den Start. Das Turnier der Startklasse Senioren II-S Standard war hochklassig besetzt. Diane und Stefan überzeugten durch gute Leistung und erreichten ebenfalls die Endrunde. Die Wertungen lagen sehr dicht beieinander. Am Ende verpassten die Beiden ganz knapp den dritten Platz und wurden Vierte.
![files/vfl/2014/201401/cris u caro.jpg](cris u caro.jpg)
![files/vfl/2014/201401/cris u caro.jpg](cris-u-caro.jpg)

View File

Before

Width:  |  Height:  |  Size: 97 KiB

After

Width:  |  Height:  |  Size: 97 KiB

View File

@@ -9,6 +9,6 @@ image: thumbnail.jpg
Anja und Frank Westerhoff können erneut auf ein erfolgreiches Turnierwochenende zurück blicken. Sie gingen an beiden Tagen an den Start. Am Samstag, 18.1. ging es nach Achern. Hier waren sie in den Startklasse Senioren I- und II-D Standard am Start. Bei den jüngeren Senioren verpassten sie mit dem 7. Platz knapp die Endrunde, aber in der Startklasse Senioren II-D lief es dann richtig gut. Mit ihrem technisch sauberen und schwungvollen Tanzen erreichten Anja und Frank sicher das Finale. Sie konnten hier sogar einige Paare hinter sich lassen, die in I-D Standard noch vor ihnen gelegen hatten. Für ihre gute Leistung wurden sie mit dem zweiten Platz belohnt. Am Sonntag ging es ins Kurhaus nach Baden-Baden zu einem Turnier der Senioren II-D Standard. Auch hier tanzten die Beiden in die Endrunde und konnten mit einem dritten Platz das Wochenende beschließen.
![files/vfl/2014/201401/Anja und Frank.jpg](Anja und Frank.jpg)
![files/vfl/2014/201401/Anja und Frank.jpg](anja-und-frank.jpg)

View File

@@ -9,6 +9,6 @@ image: thumbnail.jpg
Am 8. März machten sich Anja und Frank Westerhoff auf den Weg nach Weinstadt-Endersbach zu ihrer allerersten Landesmeisterschaft der Startklasse Senioren II-D Standard. Auf dieses Turnier ihr insgesamt erst sechstes hatten die Beiden sich gut vorbereitet. Im Feld der 15 gestarteten Paare machten sie von Anfang an es gutes Bild. Über Vorrunde, Semifinale und bis ins Finale zeigten Anja und Frank musikalisches und technisch sauberes Tanzen. Im Finale bewerteten die sieben Wertungsrichter die Leistungen der sechs Paare sehr unterschiedlich, so dass es zu einem ganz engen Ergebnis kam. Bis zum letzten Tanz war nicht eindeutig zu erkennen, welches Paar die Plätze drei bis fünf belegen würde. Anja und Frank lagen am Ende mit gleicher Punktzahl auf einem geteilten vierten Platz. Da bei einer Landesmeisterschaft am Ende jedes Paar einem Platz zugeordnet werden muss, musste das Ergebnis weiter heruntergebrochen werden. Eine Platzziffer machte letztendlich den Unterschied und Anja und Frank wurden Fünfte. Anzumerken ist noch, dass das Paar auf dem dritten Platz nur einen einzigen Punkt vor dem eigentlich geteilten vierten und fünften Platz lag. Anja und Frank Westerhoff konnten aber auf jeden Fall mit ihrer Leistung und dem Erreichen der Endrunde zufrieden sein.
![files/vfl/2014/201403/LM 2014 - Anja und Frank Westerhoff_670.jpg](LM 2014 - Anja und Frank Westerhoff_670.jpg)
![files/vfl/2014/201403/LM 2014 - Anja und Frank Westerhoff_670.jpg](LM2014-anja-u-frank-westerhoff_670.jpg)

View File

@@ -9,6 +9,6 @@ image: thumbnail.jpg
Anja und Frank Westerhoff haben den Aufstieg in die Startklasse Senioren C Standard geschafft. Und das innerhalb nur eines halben Jahres. In dieser Zeit tanzten die beiden insgesamt zehn Turniere der Startklassen Senioren I- und II-D. Bei neun dieser zehn Turniere erreichten sie die Endrunden und belegten somit immer vordere Plätze. Ihre letzten vier Turniere tanzten Anja und Frank Westerhoff am letzten Wochenende im Rahmen der TBW-Trophy in Tübingen. Am ersten Tag belegten Sie sowohl in der Startklasse Senioren I-D als auch in II-D ganz souverän jeweils den ersten Platz. Der zweite Tag begann in der Senioren I-D Klasse mit einer kleinen Enttäuschung, denn sie erreichten im Finale „nur“ den vierten Platz. Das zweite Turnier in Senioren II-D lief dann wieder absolut rund. Schon mit dem Erreichen des Semifinales stand fest, dass Anja und Frank den Aufstieg in die C-Klasse in der Tasche hatten. Die Belohnung für die guten Leistungen war dann auch wieder der erste Platz.
![files/vfl/2014/201403/Anja&Frank Mrz_hoch.jpg](Anja&Frank Mrz_hoch.jpg)
![files/vfl/2014/201403/Anja&Frank Mrz_hoch.jpg](Anja&Frank-Mrz_hoch.jpg)

View File

@@ -7,6 +7,8 @@ summary: |-
draft: false
# Die nächste Zeile anpassen, wenn das Thumbnail eingerichtet ist
image: thumbnail.jpg
announcement:
date: 2024-01-27
---
Hi ihr Lieben,

View File

@@ -7,6 +7,9 @@ summary: |-
draft: false
# Die nächste Zeile anpassen, wenn das Thumbnail eingerichtet ist
image: thumbnail.png
announcement:
date: 2024-01-10
name: "Neuer Anfängerkurs"
---
**Anmeldungen: Bitte schicken Sie eine Email an kontakt@tanzsportclub.vfl-sindelfingen.de**

Binary file not shown.

After

Width:  |  Height:  |  Size: 30 KiB

View File

@@ -0,0 +1,31 @@
---
title: "Erfolgreicher Start ins neue Turnierjahr"
date: 2024-01-24T17:21:11+01:00
summary: |-
Die Paare des Vereins starten wieder an den ersten Turnieren des Jahres.
draft: false
# Die nächste Zeile anpassen, wenn das Thumbnail eingerichtet ist
image: thumbnail.jpg
# Wenn ein Blog-beitrag auch eine Terminankündigung sein soll, hier eintragen:
# announcement:
# date: 2023-11-11
# # Optional kann man in der Terminerinnerung noch einen Kurztitel vergeben.
# name: ""
---
Das neue Jahr war noch keine zwei Wochen alt, da starteten Anja und Frank Westerhoff in das neue Turnierjahr.
Bei winterlichem Wetter ging es nach Wuppertal zum Grün Gold Casino für Anja und Franks erstes Turnier in der neuen Altersklasse Masters III S.
Bei schöner Turnieratmosphäre mit zahlreichen Zuschauern schafften die beiden den Sprung ins Finale und belegten dort den 5. Platz.
Für die Beiden ein gelungener Auftakt.
{{< tsc/news/inline-float src="Grün_Gold_Casino_Wuppertal.jpg" alt="Siegerpokal" width="800" height="801" caption="Frank und Anja Westerhoff" alt="Frank und Anja Westehoff beim Tanzen in Wuppertal" >}}
Petra und Jürgen Kohler nahmen zu Beginn des Jahres am Turnier um die „Goldene Schuhbürste“ in Frankfurt teil, um weitere Turniererfahrung und Punkte zu sammeln.
In einem kleinen, ausgewogenen Starterfeld mit fünf Paaren ertanzten sie zweite Plätze im Langsamen Walzer und Tango und dritte Plätze im Wiener Walzer, Slow Foxtrott und Quick Step und landeten in der Endabrechnung auf Platz drei.
Viele Punkte fehlen nicht mehr für den Aufstieg in die Masters III A.
{{< tsc/news/inline-float src="kohlers.jpg" alt="Jürgen und Petra Kohler" width="800" >}}
<!-- Das ist ein einzelnes Bild: -->
<!-- {{< tsc/news/inline-float src="pokal.jpg" alt="Siegerpokal" width="800" height="801" >}} -->

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 331 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

View File

@@ -0,0 +1,82 @@
---
title: "Ein bunter und abwechslungsreicher TSC-Jahresauftakt 2024"
date: 2024-01-29T10:10:34+01:00
summary: |-
Am 27. Januar waren alle drei Säle des TSC voll ausgelastet.
Während im vorderen Saal die DS-Gruppen mit Waffeln und Kakao begrüßten, schwangen die Mitglieger das Tanzbein.
draft: false
# Die nächste Zeile anpassen, wenn das Thumbnail eingerichtet ist
image: thumbnail.png
# Wenn ein Blog-beitrag auch eine Terminankündigung sein soll, hier eintragen:
# announcement:
# date: 2023-11-11
# # Optional kann man in der Terminerinnerung noch einen Kurztitel vergeben.
# name: ""
---
Am 27. Januar waren alle drei Säle des TSC voll ausgelastet.
Während im vorderen Saal die DS-Gruppen das neue Jahr mit Waffeln und Kakao begrüßten, trafen sich im mittleren und neuen Saal die Paare aus unseren Tanzkreisen und die Turnierpaare, um bei Kaffee und vielen Leckereien das Tanzbein zu schwingen und das neue Jahr zu begrüßen.
Doch der Reihe nach:
Von 14 bis 17 Uhr fand das Dance-Styles-Winterfest statt.
Bei leckeren Waffeln, Kakao und Kaffee sowie anderen kleinen Naschereien saßen Tänzerinnen, Trainerinnen und Eltern gemütlich zusammen und ließen das vergangene Tanzjahr Revue passieren.
Ab etwa 15 Uhr wurden die Tänze der Vergangenheit dann auch visualisiert:
Mit Hilfe eines Beamers projizierten die Trainerinnen alte Show-Aufnahmen aus der Stadthalle auf die weiße Trennwand des Saals und weckten damit wunderschöne Erinnerungen.
Die Idee zum gemeinsamen Anschauen alter Show-DVD's lieferte Aileen Wustrack, die für die Organisation des Festes zuständig war:
"Da viele neue Tänzerinnen die Shows gar nicht kennen und zum Celebrieren der Show 2024, die immer näher auf uns zukommt".
Am 19. und 20. Oktober diesen Jahres findet nach 5-jähriger Pause nämlich endlich wieder eine DS-Show statt, für die derzeit voller Vorfreude Tänze einstudiert werden. 
Zwei Stunden und unzählige Waffeln, Tanzvideos und unterhaltsame Gespräche später, neigte sich das DS-Winterfest dann langsam dem Ende zu.
Danke an alle, die dabei waren und diesen schönen Nachmittag mit uns verbracht haben ☺️
{{< tsc/news/gallery columns="2" >}}
{{< tsc/news/gallery-image src="IMG-20240129-WA0000.jpg" >}}
{{< tsc/news/gallery-image src="IMG-20240129-WA0001.jpg" >}}
{{</tsc/news/gallery >}}
Ab 16 Uhr starteten dann die Paartänzer durch.
Die Büffettische bogen sich von all den mitgebrachten Kuchen, Muffins, Gebäckstücken.
Auch hier war das Waffeleisen in vollem Einsatz.
Nachdem unsere Clubleiterin Anja Westerhoff ein paar kurze Begrüßungsworte gesprochen und allen Anwesenden ein gesundes und vor allem friedliches neues Jahr gewünscht hatte, ging es auch schon los mit den Tanzrunden auf dem Parkett.
Zwischen den kulinarischen Genüssen, lockeren Gesprächen wurde immer wieder getanzt, egal ob lateinamerikanische oder Standardtänze.
Ein paar besondere Programmpunkte und Überraschungen hielt der Nachmittag für die Gäste bereit:
Unter großem Applaus tanzte unser Juniorenpaar Philipp Baal und Letizia Lis einen Cha Cha.
Die Zuschauer wollten sich natürlich nicht mit nur einem Lateintanz zufrieden geben, und so zeigten die Beiden gleich noch mit einer Rumba, wie gut sie auf die anstehende Latein-LM in ihrer neuen Altersklasse vorbereitet sind.
Für den Tango erschienen die Beiden dann in neuem Outfit, Letizia mit einem feuerroten Rock.
Als Zugabe tanzten die Beiden dann noch einen Langsamen Walzer.
Später am Nachmittag war dann unser S-Paar Frank und Anja Westerhoff an der Reihe.
Sie entführten die Zuschauer in die Standardtänze und begeisterten das Publikum mit ihren abwechslungsreichen und sehr elegant getanzten Choreografien.
Anjas Kleid verzückte den einen oder anderen Zuschauer.
4 Tänze hatten Anja und Frank schon gezeigt, doch die Zuschauer wollten sie ohne den Wiener Walzer nicht vom Parkett ziehen lassen.
Also folgte auf den Quick Step noch der Wiener Walzer als Zugabe.
Die letzte tänzerische Darbietung zeigten Alexander Kieper und Carolin Hehl, die sich in dieser Kombination am nächsten Wochenende das erste Mal den Wertungsrichtern stellen wollen.
So war der Auftritt beim Jahresauftakt eine willkommene Generalprobe, die das Paar hervorragend nutzte.
Die lautstarke Reaktion der Zuschauer bestätigte eindrücklich, dass die Beiden für ihr erstes gemeinsames Turnier gut gerüstet sind.
Ohne Zugabe ging es auch hier nicht, so dass Alex und Caro auch erst nach 5 Tänzen die Fläche verlassen durften.
{{< tsc/news/gallery columns="2" >}}
{{< tsc/news/gallery-image src="philipp-letizia.jpg" >}}
{{< tsc/news/gallery-image src="frank-anja.png" >}}
{{< tsc/news/gallery-image src="alex-caro.jpg" >}}
{{</tsc/news/gallery >}}
Neben den vielen Showeinlagen, bei denen es für die Anwesenden nur ums Zuschauen ging, mussten sie beim Quiz „rund ums Tanzen“ dann selbst noch einmal ran.
Mit zehn bunt gemischten Fragen wurde der Quizmaster des Abends gekürt.
Die TSClerinnen zeigten sich topfit, denn es gab gleich zwei erste Plätze an zwei Damen:
Carolin und Roswitha kannten sich am besten aus und konnten ihre Preise mit nach Hause nehmen.
Am Ende waren sich alle einig:
Das war ein beschwingter und fröhlicher Jahresauftakt.
Vielen lieben Dank an alle Beteiligten, an alle Helferinnen und Helfer, alle Tänzerinnen und Tänzer für die Showeinlagen und einfach an alle, die da waren und den Tag zu einer schönen Veranstaltung gemacht haben.
<!-- Das ist ein einzelnes Bild: -->
<!-- {{< tsc/news/inline-float src="pokal.jpg" alt="Siegerpokal" width="800" height="801" >}} -->

Binary file not shown.

After

Width:  |  Height:  |  Size: 781 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 399 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 580 KiB

View File

@@ -0,0 +1,33 @@
---
title: "Neuer Fortgeschrittenen-Tanzkurs im April 2024"
date: 2024-01-31T16:55:53+01:00
summary: |-
Im April bieten wir wiede reinen neuen Fortgeschrittenen Kurs an.
draft: false
# Die nächste Zeile anpassen, wenn das Thumbnail eingerichtet ist
image: thumbnail.png
# Wenn ein Blog-beitrag auch eine Terminankündigung sein soll, hier eintragen:
announcement:
date: 2024-04-10
# # Optional kann man in der Terminerinnerung noch einen Kurztitel vergeben.
name: "Neuer F-Kurs im April"
---
Neuer Tanzkurs für Fortgeschrittene
- Beginn: 10.04.2024
- wann: Mittwochs von 19:00 Uhr bis 20:30 Uhr
- 10 Termine (10.01. / 17.04. / 24.04. / 08.05. / 15.05. / 05.06. / 12.06. / 19.06. / 26.06. / 03.07.)
- wo: Vereinsheim des Tanzsportclub im VfL Sindelfingen - Nähe Glaspalast - Rudolf Harbig Straße 6
Preis pro Paar: 140 Euro
**Anmeldungen oder auch Fragen: Bitte schicken Sie eine Email an kontakt@tanzsportclub.vfl-sindelfingen.de**
<!-- Das ist ein einzelnes Bild: -->
{{< tsc/news/inline-float src="F-Tanzkurs-april-2024.png" alt="Flyer" width="800" height="801" >}}
<!-- Das ist ein einzelnes Bild: -->
<!-- {{< tsc/news/inline-float src="pokal.jpg" alt="Siegerpokal" width="800" height="801" >}} -->

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

View File

@@ -0,0 +1,28 @@
---
title: "Tango Argentino Workshop 2024"
date: 2024-02-03T00:00:00+01:00
summary: |-
Im März findet zum zweiten Mal ein Tango Argentino Workshop statt.
draft: false
# Die nächste Zeile anpassen, wenn das Thumbnail eingerichtet ist
image: thumbnail.png
# Wenn ein Blog-beitrag auch eine Terminankündigung sein soll, hier eintragen:
announcement:
date: 2024-03-23
# # Optional kann man in der Terminerinnerung noch einen Kurztitel vergeben.
# name: ""
---
Nach der großen Resonanz auf den ersten Workshop im November 2023 freuen wir uns sehr, auch dieses Jahr einen Tango Argentino Workshop anzubieten.
An zwei Tagen wird in jeweils ca. 3 Stunden (+ Pause) zunächst die Basis erläutert und passend für die Teilnehmer verfeinert. Darauf aufbauend werden die Varianten Vals und Milonga erarbeitet.
Frank und Marina leiten den Kurs mit viel Leidenschaft für den Tanz und Feingefühl für die Teilnehmer. Der Kurs bietet Einsteigern einen wunderbaren Einblick in die Welt des Tango Argentino. Erfahrenere Tanzpaare können an Techniken feilen und ganz individuelle Impulse mitnehmen.
Preis pro Paar: 15 Euro (nicht-Mitglieder 30€)
**Anmeldungen oder auch Fragen: Bitte schicken Sie eine Email an breitensportwart@tanzsportclub.vfl-sindelfingen.de**
<!-- Das ist ein einzelnes Bild: -->
{{< tsc/news/inline-float src="2024_TangoArgentino_webseite.png" alt="Flyer" width="800" height="801" >}}

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

View File

@@ -3,6 +3,7 @@ title: "Archiv"
date: 2023-01-20T16:27:40+01:00
draft: false
# type: home
layout: archive
menu:
main:
weight: 4

View File

@@ -1,7 +1,7 @@
---
title: "Pressestimmen"
date: 2023-01-20T16:27:40+01:00
draft: false
draft: true
# type: home
menu:
main:

View File

@@ -2,7 +2,7 @@
title: "Termine"
date: 2023-01-20T16:27:40+01:00
draft: false
# type: home
layout: announcements
menu:
main:
weight: 1

View File

@@ -1,6 +1,7 @@
---
title: "Turniermeldungen"
date: 2023-01-20T16:27:40+01:00
layout: turniermeldungen
draft: false
# type: home
menu:
@@ -9,3 +10,17 @@ menu:
parent: aktuell
---
## Linkliste
- {{< tsc/link-external url="https://www.tbw.de/" >}}TBW{{< /tsc/link-external >}}
- {{< tsc/link-external url="http://www.tanzsport.de/" >}}Deutscher Tanzsportverband e.V. (DTV){{< /tsc/link-external >}}
- {{< tsc/link-external url="http://appsrv.tanzsport.de/dtv-webdbs/turnier/suche.spf" >}}Turnierdatenbank des DTV{{< /tsc/link-external >}}
- {{< tsc/link-external url="https://ev.tanzsport-portal.de/" >}}für Aktive: ESV-Anmeldung{{< /tsc/link-external >}}
- {{< tsc/link-external url="http://de.dancesportinfo.net/SearchCouples.aspx" >}}de.dancesportinfo.net{{< /tsc/link-external >}}

View File

@@ -12,9 +12,9 @@ Mit unserer Breitensportgruppe sprechen wie diejenigen an, die zwar (noch) keine
 
## Trainingszeit Breitensport
| Breitensport Standard | Tag | Zeit | Ort |
|-----------------------|-------------|----------------|----------|
| Breitensport Standard | Mittwoch | 20:00 - 21:30 | VH Neu |
| Breitensport Standard | Tag | Zeit | Ort |
|-----------------------|-------------|----------------|-----------|
| Breitensport Standard | Mittwoch | 20:00 - 21:30 | VH Hinten |
{{% tsc/link-offers %}}

View File

@@ -20,30 +20,34 @@ Und wann bist Du dabei?
## Trainingszeiten Dance-Styles Adults
|Dance Styles | Alter | Tag | Zeit | Ort |
|---|---|---|---|---|
|D-S Adults 0 | ab 18 | Mittwoch | 19:00 - 20:00 | VH Neu |
|D-S Adults 1 | ab 18 | Dienstag | 18:45 - 19:45 | VH Mitte |
|D-S Adults 3 | ab 18 | Donnerstag | 19:15 - 20:15 | VH Vorn |
|D-S Adults 5 | ab 18 | Montag | 18:15 - 19:15 | VH Neu |
|D-S Contest Gruppe | Anfrage | Montag | 19:15 - 20:45 | VH Vorn |
|Dance Styles | Alter | Tag | Zeit | Ort |
|--------------------|---------|------------|---------------|-----------|
| D-S Adults 0 | ab 18 | Mittwoch | 19:00 - 20:00 | VH Hinten |
| D-S Adults 1 | ab 18 | Dienstag | 18:45 - 19:45 | VH Mitte |
| D-S Adults 3 | ab 18 | Donnerstag | 19:30 - 20:30 | VH Vorn |
| D-S Adults 5 | ab 18 | Montag | 18:00 - 19:00 | VH Vorn |
| D-S Contest Gruppe | Anfrage | Montag | 19:15 - 20:45 | VH Vorn |
## Trainingszeiten Dance-Styles Teens
|Dance-Styles Teens | Jahrgang | Tag | Zeit | Ort |
|---|---|---|---|---|
|D-S Teens 0 | 2008 - 09 | Mittwoch | 18:00 - 19:00 | VH Mitte |
|D-S Teens 1 | 2004 - 07 | Mittwoch | 18:00 - 19:00 | VH Neu |
|-------------------|-----------|----------|---------------|------------|
| D-S Teens 0 | 2008 - 10 | Mittwoch | 18:00 - 19:00 | VH Vorn |
| D-S Teens 1 | 2004 - 07 | Mittwoch | 18:00 - 19:00 | VH Hinten |
| D-S Teens 2 | 2006 - 09 | Montag | 17:30 - 18:30 | VH Mitte |
## Trainingszeiten Dance-Styles Kids
|Dance-Styles Kids | Jahrgang | Tag | Zeit | Ort |
|---|---|---|---|---|
|D-S Kids 1 | 2012 - 14 | Donnerstag | 18:15 - 19:15 | VH Vorn |
|D-S Kids 2 | 2010 - 11 | Mittwoch | 17:00 - 18:00 | VH Mitte |
|D-S Kids 3 | 2015 - 16 | Mittwoch | 17:00 - 18:00 | VH Neu |
|D-S Kids 5 | 2009 - 12 | Donnerstag | 17:00 - 18:00 | VH Vorn |
|D-S Kids 7 (HipHop) | 2008 - 13 | Mittwoch | 18:00 - 19:00 | VH Vorn |
|Dance-Styles Kids | Jahrgang | Tag | Zeit | Ort |
|---------------------|-----------|------------|---------------|-----------|
| D-S Minis | 2019 - 20 | Freitag | 16:30 - 17:30 | VH Vorn |
| D-S Kids 0 | 2011 - 13 | Montag | 17:00 - 18:00 | VH Vorn |
| D-S Kids 1 | 2012 - 14 | Donnerstag | 18:30 - 19:30 | VH Vorn |
| D-S Kids 2 | 2010 - 12 | Mittwoch | 17:00 - 18:00 | VH Mitte |
| D-S Kids 3 | 2014 - 16 | Mittwoch | 16:45 - 17:45 | VH Hinten |
| D-S-Kids 4 | 2015 - 17 | Dienstag | 16:30 - 17:30 | VH Vorn |
| D-S Kids 5 | 2010 - 13 | Donnerstag | 17:00 - 18:00 | VH Vorn |
| D-S Kids 7 (HipHop) | 2012 - 15 | Mittwoch | 18:00 - 19:00 | VH Mitte |
{{% tsc/link-offers %}}

View File

@@ -19,15 +19,15 @@ Für manchen ist es bereits eine gute Erfahrung, um später in einer der größe
## Trainingszeiten Kinder- / Jugendgruppen, Standard und Latein
| Kinder | Jahrgang | Tag | Zeit | Ort |
|---------------------------------|-----------|------------|---------------|------------|
| Kindertanz 4 | 2017 - 18 | Mittwoch | 14:30 - 15:30 | VH Vorn |
| Kindertanz 5 | 2015 - 16 | Mittwoch | 15:30 - 16:30 | VH Vorn |
| Turnieraufbau inkl. Basic (KT6) | 2009 - 15 | Mittwoch | 16:30 - 18:00 | VH Vorn |
| Turnieraufbau Inkl. Basic (KT8) | | Donnerstag | 18:00 - 19:30 | VH Neu |
| Kindertanz 7 | 2015 - 17 | Freitag | 15:00 - 16:00 | VH Neu |
| Turnieraufbau inkl. Basic (KT2) | | Freitag | 16:00 - 17:30 | VH Neu |
| Kinder | Jahrgang | Tag | Zeit | Ort |
|----------------------------------------|-----------|------------|---------------|------------|
| Kindertanz 0 | 2018 - 20 | Freitag | 14:30 - 15:30 | VH Hinten |
| Kindertanz 2 Turnieraufbau Kinder | | Freitag | 16:30 - 18:00 | VH Hinten |
| Kindertanz 4 Tänzerische Früherziehung | 2019 - 20 | Mittwoch | 14:30 - 15:30 | VH Vorn |
| Kindertanz 5 Turnieraufbau Kinder | | Mittwoch | 15:30 - 16:30 | VH Vorn |
| Kindertanz 6 Turnieraufbau Kinder Std | | Mittwoch | 16:30 - 18:00 | VH Vorn |
| Kindertanz 7 | 2016 - 18 | Freitag | 15:30 - 16:30 | VH Hinten |
| Kindertanz 8 Turnieraufb. Latein Ki/Ju | | Donnerstag | 18:00 - 19:30 | VH Hinten |
<!-- ### Unsere Turnierpaare -->

View File

@@ -19,11 +19,13 @@ Interessiert? Na, dann schauen Sie doch einfach einmal vorbei!
| Tanzkreise | Tag | Zeit | Ort |
|-------------|-------------|---------------|----------|
| Tanzkreis 0 | Freitag | 19:00 - 20:30 | VH Mitte |
| Tanzkreis 1 | Montag | 20:00 - 21:30 | VH Mitte |
| Tanzkreis 2 | Dienstag | 20:00 - 22:00 | VH Mitte |
| Tanzkreis 3 | Mittwoch | 19:00 - 20:30 | VH Mitte |
| Tanzkreis 4 | Mittwoch | 20:30 - 22:00 | VH Mitte |
| Tanzkreis 5 | Donnerstag | 19:30 - 21:00 | VH Mitte |
| Tanzkreis 6 | Freitag | 19:00 - 20:30 | VH Vorn |
| Tanzkreis 0 | Freitag | 19:00 - 20:30 | VH Mitte |
| Tanzkreis 9 | Freitag | 20:30 - 22:00 | VH Mitte |
{{% tsc/link-offers %}}

View File

@@ -9,14 +9,11 @@ menu:
| Name | Standard | Latein |
|---|---|---|
| Lutz und Sylvia Benedix | MAS III S |   |
| Stefan Isenecker und Diane Mongellaz | MAS III S |   |
| Frank und Dr. Anja Westerhoff | MAS II S |   |
| Alexander und Maren Mühlschein | HGr D | HGr II A |
| Trudl und Pasquale D'Alessandro | MAS IV A |   |
| Frank und Dr. Anja Westerhoff | MAS III S |   |
| Alexander und Maren Mühlschein | HGr D | MAS I A |
| David Baal und Valeriia Ralko | Jug A | |
| Alexander Kieper und Carolin Hehl | MAS II A | |
| Philipp Baal und Letizia Lis | Jun II B | Jun II B |
| Christopher Lehmann und Silvia Broschell | MAS III B | MAS I C |
| Bernd und Ingrid Peter | MAS IV B |   |
| Jürgen und Petra Kohler | MAS III C |   |
| Jürgen und Petra Kohler | MAS III B | MAS III D  |
| Dr. Rolf Nothhelfer-Richter und Eva Maria Rott | MAS III D | MAS III D |
| Hanns Georg und Petra Pipping | MAS III D |   |
| Philip Rödl und Sanja Bleiziffer | KIN I D | KIN I D |

View File

@@ -10,7 +10,9 @@ menu:
Der Beitrag setzt sich zusammen aus dem Beitrag für den Hauptverein und dem Abteilungsbeitrag.
Der Abteilungsbeitrag des Tanzsportclubs in voller Höhe (15 Euro) gilt für das gesamte Angebot. So kann man für einen Beitrag an mehreren Disziplinen wie z.B. am Jazztanz, Standard/Latein teilnehmen. Kinder und Jugendliche, die nur an einem Trainingstermin pro Woche teilnehmen, zahlen lediglich 9 Euro.
Der Abteilungsbeitrag des Tanzsportclubs ist gestaffelt und kann der untenstehenden Tabelle entnommen werden.
Er gilt für das gesamte Angebot.
So kann man für einen Beitrag an mehreren Disziplinen wie z.B. am Jazztanz, Standard/Latein teilnehmen.
## Gebühren
@@ -20,17 +22,17 @@ Rücküberweisungen werden mit 5 € Gebühr berechnet.
| Abteilungsbeitrag | Erwachsene | Kinder und Jugend |
|-------------------|------------|-------------------|
| TSC-Monatsbeitrag aktiv | 15 € | 9 € |
| TSC-Monatsbeitrag Wettkämpfer | 18 € | 16 € |
| TSC-Monatsbeitrag aktiv | 15 € | 9 € * |
| aktiv ermäßigt | 10 € | - |
| Fördermitglieder | 3 € | 3 € |
Weitere Angaben zu Beitrag und Gebühr siehe Abteilungs- und Beitragsordnung
zur Abteilungs- und Beitragsordnung Stand Juli 2022
\* Für Kinder und Jugendliche, die an mehrere Gruppen teilnehmen, gilt der jeweilige Erwachsenenbeitrag.
Angaben zu Beitrag und Gebühr siehe Abteilungs- und Beitragsordnung
## Formulare der Tanzsportabteilung
{{<dld url="Anmeldeformular.pdf" wrap="1">}}Beitrittserklärung als PDF-File neu ab Okt 2022{{< /dld >}}
{{<dld url="Anmeldeformular.pdf" wrap="1">}}Beitrittserklärung als PDF-File neu ab Mär 2023{{< /dld >}}
{{<dld url="Abteilungs-Beitragsordnung-2022-05-03.pdf" wrap="1">}}Abteilungs- und Beitragsordnung als PDF-File{{</dld>}}

View File

@@ -23,9 +23,9 @@ E-Mail: info@vfl-sindelfingen.de
Internet: https://vfl-sindelfingen.de/
Inhaltlich Verantwortlicher für Seiten des Tanzsportclubs: Dr. Anja Westerhoff
Inhaltlich Verantwortliche für Seiten des Tanzsportclubs: Dr. Anja Westerhoff
Inhaltlich Verantwortlicher für Seiten des VfL: Anne Köhler, Geschäftsführerin
Inhaltlich Verantwortliche für Seiten des VfL: Anne Köhler, Geschäftsführerin
Registergericht: Amtsgericht Böblingen (Registernummer: VR 407)
@@ -34,13 +34,13 @@ Umsatzsteuer-Identifikationsnummer: DE 145045785
## Tanzsportabteilung
Briefanschrift Tanzsportclub im VfL Sindelfingen:
Briefanschrift **Tanzsportclub im VfL Sindelfingen**:
TSC im VfL Sindelfingen
Rudolf-Harbig-Strasse 6,
Rudolf-Harbig-Strasse 6
D-71063 Sindelfingen
E-Mail an: kontakt@tanzsportclub.vfl-sindelfingen.de
E-Mail: kontakt@tanzsportclub.vfl-sindelfingen.de
Hinweise zum Datenschutz finden Sie hier:

View File

@@ -1,5 +1,5 @@
---
title: "Trainiengsraeume"
title: "Trainingsräume"
date: 2023-01-15T16:33:38+01:00
draft: false
menu:
@@ -10,10 +10,14 @@ menu:
## Vereinsheim vorne und mitte
{{< tsc/rooms/room >}}
{{< tsc/rooms/image image="vereinsheim.png" >}}
{{% tsc/rooms/address %}}
Rudolf-Harbig-Str. 6
71063 Sindelfingen
![Verinsheim vorne](vereinsheim.png)
{{% /tsc/rooms/address %}}
{{< /tsc/rooms/room >}}
Das Bild zeigt unsere zwei Trainingsräume im Vereinsheim mit geöffneter Trennwand.
@@ -21,7 +25,11 @@ Abgeteilt in zwei Räume&nbsp; "VH Mitte" und "VH Vorn"
## Neuer Saal "VH" neu"
{{< tsc/rooms/room >}}
{{< tsc/rooms/image image="VH_Neu.jpg" >}}
{{% tsc/rooms/address %}}
Rudolf-Harbig-Str. 6
71063 Sindelfingen
![Vereinsheim neu](VH_Neu.jpg)
{{% /tsc/rooms/address %}}
{{< /tsc/rooms/room >}}

View File

@@ -39,13 +39,21 @@ menu:
{{< tsc/person-list >}}
{{< tsc/trainer
name="suzana-koester-manojlovic" >}}
name="angelika-dahm" >}}
{{< tsc/trainer
name="tina-grassl" >}}
name="anja-westerhoff" >}}
{{< tsc/trainer
name="david-dahm" >}}
{{< tsc/trainer
name="domenico-franzo" >}}
{{< tsc/trainer
name="frank-westerhoff" >}}
{{< tsc/trainer
name="raimund-rieger" >}}
{{< tsc/trainer
name="stefan-dietl" >}}
{{< tsc/trainer
name="suzana-koester-manojlovic" >}}
{{< /tsc/person-list >}}
## Discofox
@@ -58,8 +66,6 @@ menu:
## Dance-Styles
{{< tsc/person-list >}}
{{< tsc/trainer
name="maren-spengler" >}}
{{< tsc/trainer
name="kim-wustrack" >}}
{{< tsc/trainer
@@ -78,6 +84,14 @@ menu:
name="leonie-weinhardt" >}}
{{< tsc/trainer
name="maike-leditzky" >}}
{{< tsc/trainer
name="aileen-wustrack" >}}
{{< tsc/trainer
name="lena-frohnmueller" >}}
{{< tsc/trainer
name="franziska-mack" >}}
{{< tsc/trainer
name="jasmina-hein" >}}
{{< /tsc/person-list >}}
## Kindertanz

View File

@@ -99,34 +99,19 @@ Ein jeder Club benötigt einen Vorstand, der die Vereinsführung übernimmt und
{{< /tsc/person-list >}}
{{< tsc/person-list >}}
{{< tsc/vorstand
name="diane-mongellaz"
role="Presse"
mail="presse@tanzsportclub.vfl-sindelfingen.de"
>}}
{{< tsc/vorstand
name="katharina-pfaffenrot"
role="Presse"
mail="presse@tanzsportclub.vfl-sindelfingen.de"
>}}
{{< tsc/vorstand
name="nelly-fuchs"
name="victoria-mack"
role="Presse"
mail="presse@tanzsportclub.vfl-sindelfingen.de"
>}}
{{< /tsc/person-list >}}
{{< tsc/person-list >}}
{{< tsc/vorstand
name="maren-spengler"
role="Dancestyles"
mail="dance-styles@tanzsportclub.vfl-sindelfingen.de"
>}}
{{< tsc/vorstand
name="britta-sigmund"
role="Stellv. Dancestyles"
mail="dance-styles@tanzsportclub.vfl-sindelfingen.de"
>}}
{{< tsc/vorstand
name="kim-wustrack"
role="Stellv. Dancestyles"
@@ -136,17 +121,17 @@ Ein jeder Club benötigt einen Vorstand, der die Vereinsführung übernimmt und
name="franziska-bader"
role="Stellv. Dancestyles"
>}}
{{< tsc/vorstand
name="britta-sigmund"
role="Stellv. Dancestyles"
mail="dance-styles@tanzsportclub.vfl-sindelfingen.de"
>}}
{{< /tsc/person-list >}}
{{< tsc/person-list >}}
{{< tsc/vorstand
name="bernd-peter"
role="Webmaster"
mail="vflwebmaster@bptr.de"
>}}
{{< tsc/vorstand
name="christian-wolf"
role="Stellv. Webmaster"
role="Webmaster"
mail="vizesportwart@tsc-vfl.de"
>}}
{{< /tsc/person-list >}}

View File

@@ -15,5 +15,5 @@ TSC im VfL Sindelfingen
Rudolf-Harbig-Str. 6
71063 Sindelfingen
E-Mail an:
E-Mail:
[kontakt@tanzsportclub.vfl-sindelfingen.de](mailto:kontakt@tanzsportclub.vfl-sindelfingen.de)

View File

@@ -1,7 +1,7 @@
---
title: "Informationen zu Corona-Maßnahmen"
date: 2023-01-21T18:52:29+01:00
draft: false
draft: true
menu:
main:
parent: info

View File

@@ -1,28 +1,62 @@
---
title: "Raumbelegung"
date: 2023-01-21T18:20:35+01:00
draft: true
draft: false
menu:
main:
parent: info
weight: 1
---
Hier finden Sie die Übersicht zur aktuellen Belegung unserer Tanzsäle.
Bitte beachten Sie unsere Informationen zu den [Corona-Maßnahmen]({{< relref "corona" >}}).
Die vollständige Anzeige der Raumplanung kann {{<tsc/link-external url="https://cloud.tsc-vfl.de/index.php/apps/calendar/p/d5KikZAZJfJxMHyK-ExbbqNPQMe5idxZj-RyoP44ym84oa5NFm-MATxHY9KfQjPH8ws-8DBYtgZwmkDsdemr-Rtc8n6iMi7oq5Jmw/timeGridWeek/now">}}über unseren Kalender{{</tsc/link-external>}} eingesehen werden.
## Raumbelegung außerplanmäßig
## Raumbelegung - außerplanmäßig
{{< tsc/iframe >}}https://cloud.tsc-vfl.de/index.php/apps/calendar/embed/PXB8rgsH5DFJJima-djcBar4g37LRg7dt/timeGridWeek/now{{< /tsc/iframe >}}
Außerhalb der Trainings- und Kurszeiten können die Räume für spezielle (Gruppen-) Trainings gebucht werden.
Aktuell sind keine Termine vorhanden.
Um die Verfügbarkeit für alle Mitglieder transparent zu halten und Überschneidungen zu vermeiden, sollte jede außerplanmäßige Belegung eines Saals frühzeitig eingetragen werden.
## Raumbelegung
{{< tsc/iframe >}}https://cloud.tsc-vfl.de/index.php/apps/calendar/embed/d5KikZAZJfJxMHyK-RyoP44ym84oa5NFm-8DBYtgZwmkDsdemr/listYear/now{{< /tsc/iframe >}}
Stand 02.12.2022
Die komplette {{< dld src="plan/2022-12-02/Belegung.pdf" >}}Saalbelegung als PDF{{< /dld >}} herunter laden.
{{<tsc/calendar-color-table>}}
![](plan/2022-12-02/Saalbelegung_A.jpg)
## Raumbelegung - planmäßig
![](plan/2022-12-02/Saalbelegung_B.jpg)
{{< tsc/show-calendar 10 23 "Mo" "Di" "Mi" >}}
{{< tsc/show-calendar 14 23 "Do" "Fr" >}}
### Regeln für die Belegung der Tanzsäle
**Die Nutzung der Säle ist ausschließlich zum Zwecke des Tanztrainings erlaubt.**
Es gelten die folgenden Regeln für die außerplanmäßige Belegung eines Saals:
+ Die Raumreservierung muss mindestens zwei Tage vor dem geplanten Termin eingetragen werden
+ Anzugeben sind Saal, Uhrzeit, Dauer und verantwortliche Person
+ Die Säle "vorne" und "mitte" stehen für die Reservierung zur Verfügung. Der Neue Saal ist nur in Ausnahmefällen zu buchen
+ In Ausnahmefällen kann der Neue Saal nach Genehmigung durch die Abteilungsleitung (clubleiter@tanzsportclub.vfl-sindelfingen.de) oder den Sportwart (sportwart@tanzsportclub.vfl-sindelfingen.de) reserviert werden
#### Außerhalb der Schulferien:
1. Die reguläre Raumbelegung hat immer Vorrang.
2. Es muss immer ein Saal für das freie Training verfügbar bleiben.
Ausnahme: größere Clubveranstaltung, wie z.B. Jahresauftakt
#### Sonderbedingungen während der Schulferien:
1. Die reguläre Raumbelegung ist aufgehoben, Ausnahme: Ballettzeiten
2. Gruppenunterrichte zu den "üblichen Zeiten" müssen als außerordentliche Raumbelegung reserviert werden
3. Für sonstige außerordentliche Raumbelegungen gelten die obigen Regeln
### Wer kann einen Saal buchen?
Die außerplanmäßige Raumreservierung kann von folgenden Personenn vorgenommen werden:
+ Abteilungsleiter, Sportwart, Kassenwart, Dancestyles-Trainerinnen, Homepage-Team, Veranstaltungswart, Gebäudewart
Um einen Saal buchen zu können, ist ein Account in unserer Vereinsplattform "TSC Cloud Kalender" notwendig.
Um diesen Account zu erhalten, wende dich bitte per E-Mail an die Abteilungsleitung mit folgenden Angaben:
- vollständiger Name
- die gewünschte E-Mailadresse für den Account
- sowie das Stichwort "Registrierung Raumbuchung"
Du erhältst alle nötigen Informationen direkt per E-Mail.

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

View File

@@ -0,0 +1,7 @@
---
title: "Aileen Wustrack"
draft: false
image: "AileenWustrackTSC.jpg"
sex: female
headless: true
---

View File

@@ -0,0 +1,7 @@
---
title: "Angelika Dahm"
draft: false
image: ""
sex: female
headless: true
---

View File

@@ -3,5 +3,6 @@ title: "Chaska Huamán-Bursztyn"
date: 2023-01-20T16:03:15+01:00
draft: false
image: "Chaska-Huaman-Bursztyn.jpg"
headless: true
---

View File

@@ -4,5 +4,6 @@ date: 2023-01-20T16:03:14+01:00
draft: false
image: "Christine_Melcher.jpg"
sex: female
headless: true
---

View File

@@ -0,0 +1,7 @@
---
title: "David Dahm"
draft: false
image: ""
sex: male
headless: true
---

View File

@@ -4,5 +4,6 @@ date: 2023-01-20T16:03:14+01:00
draft: false
image: "Domenico_Franzo.jpg"
sex: male
headless: true
---

View File

@@ -0,0 +1,7 @@
---
title: "Franziska Mack"
draft: false
image: ""
sex: female
headless: true
---

Binary file not shown.

After

Width:  |  Height:  |  Size: 100 KiB

View File

@@ -0,0 +1,7 @@
---
title: "Jasmina Hein"
draft: false
image: "Selbstportrait.jpg"
sex: female
headless: true
---

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

View File

@@ -0,0 +1,7 @@
---
title: "Lena Frohnmueller"
draft: false
image: "LenaFrohnmueller.jpeg"
sex: female
headless: true
---

View File

@@ -4,5 +4,6 @@ date: 2023-01-20T16:03:15+01:00
draft: false
image: Leonie_Weinhardt.jpg
sex: female
headless: true
---

View File

@@ -4,5 +4,6 @@ date: 2023-01-20T16:03:15+01:00
draft: false
image: Linda_Klauss.jpg
sex: female
headless: true
---

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

After

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -4,5 +4,6 @@ date: 2023-01-20T16:03:16+01:00
draft: false
image: Maike_Leditzky.jpg
sex: female
headless: true
---

View File

@@ -4,5 +4,6 @@ date: 2023-01-20T16:03:15+01:00
draft: false
image: "raimund.jpg"
sex: male
headless: true
---

Binary file not shown.

Before

Width:  |  Height:  |  Size: 16 KiB

View File

@@ -1,8 +0,0 @@
---
title: "Tina Grassl"
date: 2023-01-20T16:03:15+01:00
draft: false
image: "Tina_Grassl.jpg"
sex: female
---

View File

@@ -0,0 +1,7 @@
---
title: "Victoria Mack"
draft: false
# image: ""
sex: female
headless: true
---

View File

@@ -0,0 +1,13 @@
---
dateCompetition: 2024-01-13
partner: "Westerhoff, Frank"
partnerin: "Westerhoff, Anja Dr."
verein: "GGC Clubheim"
ort: "Wuppertal"
telefon: "0202 712476"
gruppe: "Mas III"
klasse: "S"
sektion: "Std"
titel: "GGC Seniorentag Standard"
nummer: 113904
---

View File

@@ -0,0 +1,13 @@
---
dateCompetition: 2024-01-21
partner: "Kohler, Jürgen"
partnerin: "Kohler, Petra"
verein: "Saalbau Haus Nidda"
ort: "Frankfurt a.M."
telefon: "0176 61745268"
gruppe: "Mas III"
klasse: "B"
sektion: "Std"
titel: "Die Goldene Schuhbürste 2024"
nummer: 115126
---

View File

@@ -0,0 +1,13 @@
---
dateCompetition: 2024-02-03
partner: "Kieper, Alexander"
partnerin: "Hehl, Carolin"
verein: "Turnhalle Botnang"
ort: "Botnang"
telefon: "0170 8631320"
gruppe: "Mas II"
klasse: "A"
sektion: "Std"
titel: "Sportveranstaltung 2024"
nummer: 113800
---

View File

@@ -0,0 +1,13 @@
---
dateCompetition: 2024-02-03
partner: "Baal, Philipp"
partnerin: "Lis, Letizia"
verein: "Stadthalle"
ort: "Remseck"
telefon: "0173 3015671"
gruppe: "Jun II"
klasse: "B"
sektion: "Lat"
titel: "Landesmeisterschaft TBW Latein"
nummer: 115314
---

View File

@@ -0,0 +1,13 @@
---
dateCompetition: 2024-02-04
partner: "Mühlschein, Alexander"
partnerin: "Mühlschein, Maren"
verein: "Stadthalle"
ort: "Remseck"
telefon: "0173 3015671"
gruppe: "Hgr II"
klasse: "A"
sektion: "Lat"
titel: "Landesmeisterschaft TBW Latein"
nummer: 115316
---

View File

@@ -0,0 +1,13 @@
---
dateCompetition: 2024-02-17
partner: "Mühlschein, Alexander"
partnerin: "Mühlschein, Maren"
verein: "Stadthalle Holzgerlingen"
ort: "Holzgerlingen"
telefon: "0162 8202156"
gruppe: "Mas I"
klasse: "A"
sektion: "Lat"
titel: "Landesmeisterschaft TBW Latein der Mas I-III D-S"
nummer: 114741
---

View File

@@ -0,0 +1,13 @@
---
dateCompetition: 2024-02-24
partner: "Kohler, Jürgen"
partnerin: "Kohler, Petra"
verein: "Schlossfeldhalle"
ort: "Achern-Grooßweier"
telefon: "0157 35720521"
gruppe: "Mas III"
klasse: "B"
sektion: "Std"
titel: "ATaTa 2024"
nummer: 114270
---

View File

@@ -0,0 +1,13 @@
---
dateCompetition: 2024-02-25
partner: "Kohler, Jürgen"
partnerin: "Kohler, Petra"
verein: "Tanz Sport Zentrum Sinsheim"
ort: "Sinsheim"
telefon: "0160 97701166"
gruppe: "Mas III"
klasse: "B"
sektion: "Std"
titel: "Sinsheimer Tanzsporttage 2024"
nummer: 115291
---

View File

@@ -0,0 +1,13 @@
---
dateCompetition: 2024-02-25
partner: "Lehmann, Christopher"
partnerin: "Broschell, Silvia"
verein: "Tanz Sport Zentrum Sinsheim"
ort: "Sinsheim"
telefon: "0160 97701166"
gruppe: "Mas III"
klasse: "B"
sektion: "Std"
titel: "Sinsheimer Tanzsporttage 2024"
nummer: 115291
---

View File

@@ -0,0 +1,13 @@
---
dateCompetition: 2024-03-02
partner: "Kohler, Jürgen"
partnerin: "Kohler, Petra"
verein: "Sport- und Festhalle Mergelstetten"
ort: "Heidenheim-Mergelstetten"
telefon: "0162 6845232"
gruppe: "Mas III"
klasse: "B"
sektion: "Std"
titel: "Mergelpokal 2024"
nummer: 115204
---

View File

@@ -0,0 +1,13 @@
---
dateCompetition: 2024-03-09
partner: "Lehmann, Christopher"
partnerin: "Broschell, Silvia"
verein: "TTC Rot-Gold Tübingen Clubheim"
ort: "Tübingen"
telefon: "0151 67315911"
gruppe: "Mas III"
klasse: "B"
sektion: "Std"
titel: "NeckarAlbTanzFestival - Tübingen"
nummer: 116384
---

View File

@@ -0,0 +1,13 @@
---
dateCompetition: 2024-03-10
partner: "Lehmann, Christopher"
partnerin: "Broschell, Silvia"
verein: "Tanzsportcentrum TC Schwarz-Weiß Reutlingen"
ort: "Reutlingen"
telefon: "01573 7983357"
gruppe: "Mas III"
klasse: "B"
sektion: "Std"
titel: "NeckarAlbTanzFestival - Reutlingen"
nummer: 115218
---

145
data/calendar.yaml Normal file
View File

@@ -0,0 +1,145 @@
calendar:
vorne:
Mo:
"17:00":
title: DS Kids 0
slots: 4
"18:15":
title: DS Adults 5
slots: 4
"19:15":
title: DS Contest Gruppe
slots: 8
Di:
"16:30":
title: DS Kids 4
slots: 4
Mi:
"14:30":
title: Kindertanz 4
slots: 4
"15:30":
title: Kindertanz 5
slots: 4
"16:30":
title: Kindertanz 6
slots: 6
"18:00":
title: DS Teens 0
slots: 4
"19:00":
title: Turnieraufbau Std
slots: 6
Do:
"17:00":
title: DS Kids 5
slots: 4
"18:15":
title: DS Kids 1
slots: 4
"19:30":
title: DS Adults 3
slots: 6
Fr:
"16:30":
title: DS Minis
slots: 4
"19:00":
title: Tanzkreis 6
slots: 6
"20:30":
title: Discofox
slots: 4
# Sa: {}
# So: {}
mitte:
Mo:
"17:30":
title: DS Teens 2
slots: 4
"18:30":
title: Ballet
slots: 6
"20:00":
title: Tanzkreis 1
slots: 6
Di:
"18:45":
title: DS Adults 1
slots: 4
"20:00":
title: Tanzkreis 2
slots: 8
Mi:
"17:00":
title: DS Kids 2
slots: 4
"18:00":
title: DS Kids 7
slots: 4
"19:00":
title: Tanzkreis 3
slots: 6
"20:30":
title: Tanzkreis 4
slots: 6
Do:
"19:30":
title: Tanzkreis 5
slots: 6
Fr:
"19:00":
title: Tanzkreis 0
slots: 6
"20:30":
title: Tanzkreis 9
slots: 6
Sa: {}
So: {}
hinten:
Mo:
"15:45":
title: Ballet
slots: 6
# "18:15":
# title: DS Adults 5
# slots: 4
Di:
"19:00":
title: Turnier Latein
slots: 4
"20:00":
title: Turnier Standard
slots: 8
Mi:
"10:30":
title: Ballet
slots: 6
"17:00":
title: DS Kids 3
slots: 4
"18:00":
title: DS Teens 1
slots: 4
"19:00":
title: DS Adults 0
slots: 4
"20:00":
title: Breitensport
slots: 6
Do:
"18:00":
title: Kindertanz 8 (Turnieraufbau)
slots: 6
Fr:
"14:30":
title: Kindertanz 0
slots: 4
"15:30":
title: Kindertanz 7
slots: 4
"16:30":
title: Kindertanz 2 (Turnieraufbau)
slots: 6
Sa: {}
So: {}

5464
package-lock.json generated Normal file

File diff suppressed because it is too large Load Diff

25
package.json Normal file
View File

@@ -0,0 +1,25 @@
{
"name": "hugo-page",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"server": "hugo-extended server --bind 0.0.0.0",
"build": "hugo-extended --minify",
"stylelint:check": "stylelint \"**/*.scss\"",
"stylelint:fix": "stylelint --fix \"**/*.scss\"",
"deploy": "ssh tsc-homepage@hh.wolf-stuttgart.net"
},
"repository": {
"type": "git",
"url": "ssh://git@git.christian-wolf.click:26/tsc-vfl/hugo-page.git"
},
"author": "Christian Wolf",
"license": "ISC",
"devDependencies": {
"hugo-extended": "^0.121.2",
"stylelint": "^16.1.0",
"stylelint-config-standard": "^36.0.0",
"stylelint-config-standard-scss": "^13.0.0"
}
}

View File

@@ -0,0 +1 @@
__pycache__/

View File

@@ -0,0 +1,50 @@
from . import cli
from . import mail
from . import headerExtractor
from . import mailParser
from . import competitionParser
from . import mboxReader
import logging
import debugpy
import os
def main():
args = cli.getArgs()
logging.basicConfig()
logger = logging.getLogger(__name__)
verbosityMap = {
0: logging.WARNING,
1: logging.INFO,
}
rootLogger = logging.getLogger()
rootLogger.setLevel(verbosityMap.get(args.verbose, logging.DEBUG))
if args.debug:
debugpy.listen(5678)
debugpy.wait_for_client()
mp = mailParser.MailParser()
cp = competitionParser.CompetitionParser()
if args.read_mbox is not None:
if args.output_folder is None:
logger.error('Cannot use batch mode without explicit output folder.')
exit(1)
reader = mboxReader.MBocReader()
mails = reader.parseMBoxFile(args.read_mbox[0])
for mail in mails:
body = mp.parseMail(mail)
cp.parseMail(body)
filename = cp.getFilename(args.output_folder[0])
logger.info('Using file %s to generate the output.', filename)
folder = os.path.dirname(filename)
os.makedirs(folder, exist_ok=True)
with open(filename, 'w') as fp:
fp.write(cp.getContent())
else:
raise Exception('Not yet implemented')

View File

@@ -0,0 +1,3 @@
import competitionNotificationReader
competitionNotificationReader.main()

View File

@@ -0,0 +1,11 @@
import argparse
def getArgs():
parser = argparse.ArgumentParser()
parser.add_argument('--read-mbox', nargs=1, help='Read mails from mbox file instead of stdin')
parser.add_argument('-o', '--output-folder', nargs=1, help='Set the output folder of the generated files.')
parser.add_argument('-v', '--verbose', action='count', default=0, help='Increase the verbosity')
parser.add_argument('--debug', action='store_true', help='Enable python debugger')
return parser.parse_args()

View File

@@ -0,0 +1,135 @@
import bs4
import logging
import re
import os
import jinja2
class ParsingFailedEception(Exception):
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
class CompetitionParser:
def __init__(self):
self._l = logging.getLogger(__name__)
self._partner = ''
self._partnerin = ''
self._date = ''
self._title = ''
self._number = ''
self._group = ''
self._class = ''
self._section = ''
self._ort = ''
self._verein = ''
self._telefon = ''
self._reName = re.compile('Neue Meldung für (.*) / (.*)!')
self._reDate = re.compile('([0-9]+)\.([0-9]+)\.([0-9]+)')
self._reNumber = re.compile('Turnier: ([0-9]+)')
self._rePhone = re.compile('Telefon: ([0-9 /]+)')
self._rePlace = re.compile('Ort: (.*), (.*)')
self._reCompetition = re.compile('(.*) ([A-ES]) ((?:Std)|(?:Lat)|(?:Kombi))')
self._reCleaningString = re.compile('[^a-z0-9-]')
self._reDashes = re.compile('-+')
def parseMail(self, body: str):
parser = bs4.BeautifulSoup(body, 'html.parser')
self._getNames(parser.h2)
self._parseTable(parser.table)
def _getNames(self, h2):
matcher = self._reName.match(h2.string)
if matcher is None:
self._l.error('Parsing of header "%s" failed.', h2)
raise ParsingFailedEception('Header could not be successfully parsed')
self._partner = matcher.group(1)
self._partnerin = matcher.group(2)
def _parseTable(self, table):
def parseDate(date):
match = self._reDate.fullmatch(date)
if match is None:
raise ParsingFailedEception('Cannot parse date %s in mail' % date)
self._date = f'{match.group(3)}-{match.group(2)}-{match.group(1)}'
def parseNumber(content):
match = self._reNumber.fullmatch(content)
if match is None:
raise ParsingFailedEception(f'Cannot parse the turnier number in field {content}')
self._number = match.group(1)
def parseCompetition(competition):
match = self._reCompetition.fullmatch(competition)
if match is None:
raise ParsingFailedEception(f'Cannot parse the competition line {competition}')
self._group = match.group(1)
self._class = match.group(2)
self._section = match.group(3)
def parsePlace(place):
match = self._rePlace.fullmatch(place)
if match is None:
raise ParsingFailedEception(f'Cannot parse the place entry {place}')
self._verein = match.group(1)
self._ort = match.group(2)
def parsePhone(phone):
match = self._rePhone.fullmatch(phone)
if match is None:
raise ParsingFailedEception(f'Cannot parse the phone line {phone}')
self._telefon = match.group(1)
tds = table('td')
parseDate(tds[0].string.strip())
self._title = tds[1].string.strip()
parseNumber(tds[2].string.strip())
parseCompetition(tds[3].string.strip())
parsePlace(tds[4].string.strip())
parsePhone(tds[5].string.strip())
def _cleanName(self, name: str) -> str:
cleanedName = name.lower()
cleanedName = re.sub('ä', 'ae', cleanedName)
cleanedName = re.sub('ö', 'oe', cleanedName)
cleanedName = re.sub('ü', 'ue', cleanedName)
cleanedName = re.sub('ß', 'ss', cleanedName)
cleanedName = re.sub(self._reCleaningString, '-', cleanedName)
cleanedName = re.sub(self._reDashes, '-', cleanedName)
return cleanedName.lower()
def getFilename(self, prefix: str) -> str:
namePartner = self._cleanName(self._partner)
namePartnerin = self._cleanName(self._partnerin)
competition = f'{self._group} {self._class} {self._section}'
competitionName = self._cleanName(competition)
ort = self._cleanName(self._ort)
filename = f'{self._date}-{ort}-{namePartner}-{namePartnerin}-{competitionName}.md'
return os.path.join(
prefix,
self._date[0:4],
re.sub(self._reDashes, '-', filename)
)
def getContent(self) -> str:
with open(os.path.join(os.path.dirname(__file__), 'contenttemplate.md.tmpl')) as fp:
tpl = fp.read()
j2 = jinja2.Template(tpl)
vars = {
'date': self._date,
'partner': self._partner,
'partnerin': self._partnerin,
'verein': self._verein,
'ort': self._ort,
'telefon': self._telefon,
'group': self._group,
'class': self._class,
'section': self._section,
'title': self._title,
'number': self._number,
}
return j2.render(**vars)

View File

@@ -0,0 +1,13 @@
---
dateCompetition: {{ date }}
partner: "{{ partner }}"
partnerin: "{{ partnerin }}"
verein: "{{ verein }}"
ort: "{{ ort }}"
telefon: "{{ telefon }}"
gruppe: "{{ group }}"
klasse: "{{ class }}"
sektion: "{{ section }}"
titel: "{{ title }}"
nummer: {{ number }}
---

View File

@@ -0,0 +1,30 @@
import competitionNotificationReader as cnr
import logging
def splitHeaders(lines: list[str]) -> cnr.mail.Mail:
l = logging.getLogger(__name__)
l.debug('Separating headers of an email')
def _getHeaders(lines: list[str]):
headerLines = []
for idx,l in enumerate(lines):
if l == '':
remainingLines = lines[idx+1:]
for j,rl in enumerate(remainingLines):
if rl.strip() != '':
return headerLines, remainingLines[j:]
return headerLines, []
if l.startswith('\t') or l.startswith(' '):
lastLine = headerLines.pop()
newLine = f'{lastLine[1]} {l.strip()}'
headerLines.append(tuple([lastLine[0], newLine]))
else:
parts = l.split(':', 1)
headerLines.append(tuple([parts[0].strip(), parts[1].strip()]))
headerLines, bodyLines = _getHeaders(lines)
mail = cnr.mail.Mail(headerLines, bodyLines)
return mail

View File

@@ -0,0 +1,11 @@
import dataclasses
HeaderName_t = str
HeaderValue_t = str
HeaderEntry_t = tuple[HeaderName_t, HeaderValue_t]
@dataclasses.dataclass
class Mail:
headers: list[HeaderEntry_t]
body: list[str]

View File

@@ -0,0 +1,113 @@
import competitionNotificationReader as cnr
import logging
import re
class MailParser:
def __init__(self):
self._l = logging.getLogger(__name__)
def parseMail(self, rawMail: cnr.mail.Mail):
# Look for the correct Mail encoding
contentType, boundary = self._getContentType(rawMail)
subMails = self._splitMultipartBody(rawMail.body, boundary)
def isCorrectContentType(mail):
for header in mail.headers:
if header[0].lower() != 'content-type':
continue
return header[1].startswith('text/html')
return False
subMails = list(filter(isCorrectContentType, subMails))
def isCorrectContentEncoding(mail):
for header in mail.headers:
if header[0].lower() != 'content-transfer-encoding':
continue
return header[1] == 'quoted-printable'
return False
subMails = list(filter(isCorrectContentEncoding, subMails))
if len(subMails) != 1:
raise Exception('Not implemented')
body = self._mapQuotedrintable(subMails[0].body)
return body
def _getContentType(self, rawMail: cnr.mail.Mail) -> str:
ctHeaders = list(filter(lambda x: x[0].lower() == 'content-type', rawMail.headers))
if len(ctHeaders) != 1:
self._l.error('No unique content type of the mail was found.')
exit(1)
ct = ctHeaders[0][1]
if not ct.startswith('multipart/alternative'):
raise Exception('Not yet implemented')
parser = re.compile('.*boundary="([^"]+)"')
matcher = parser.match(ct)
if matcher is None:
self._l.error('Cannot extract boundary from mail header.')
exit(1)
boundary = matcher.group(1)
return 'multipart/alternative', boundary
def _splitMultipartBody(self, bodyLines: list[str], boundary: str):
parts = []
subBody = []
for line in bodyLines:
if line.startswith(f'--{boundary}'):
if len(subBody) > 0:
parts.append(subBody)
subBody = []
else:
subBody.append(line)
return list(map(lambda x: cnr.headerExtractor.splitHeaders(x), parts))
def _mapQuotedrintable(self, lines: list[str]):
def mergeLines():
# Drop terminating newlines
ret = [l for l in lines]
r = list(range(len(ret)))
r.reverse()
for i in r:
currentLine = ret[i]
if currentLine.endswith('='):
currentLine = currentLine[:-1] + ret.pop(i+1)
ret[i] = currentLine
return ret
mergedLines = mergeLines()
def mapUnicodeChars():
ret = []
for line in mergedLines:
i = 0
chars = []
while i < len(line):
if line[i] != '=':
chars.extend(list(line[i].encode()))
else:
hexChars = line[i+1:i+3]
value = int(hexChars, 16)
# print(f'{hexChars} -> {value}')
chars.append(value)
i += 2
i += 1
ret.append(chars)
return ret
mappedLines = mapUnicodeChars()
def decodeLine(l):
bytes = [x.to_bytes(1, 'big') for x in l]
decodedLine = b''.join(bytes).decode()
return decodedLine
decodedLines = list(map(decodeLine, mappedLines))
return ''.join(decodedLines)

View File

@@ -0,0 +1,49 @@
import logging
import re
import io
import competitionNotificationReader as cnr
class MBocReader:
def __init__(self):
self._l = logging.getLogger(__name__)
def parseMBoxFile(self, filename: str) -> list[cnr.mail.Mail]:
self._l.debug('Reading MBox file "%s"', filename)
mails = []
with open(filename) as fp:
return self._parseMails(fp)
def _isNewMailLine(self, line: str):
return line.startswith('From ')
def _fixSingleLine(self, line: str) -> str:
regex = re.compile('^>+From ')
matcher = regex.match(line)
if matcher is None:
return line
return line[1:]
def _parseMails(self, fp: io.FileIO) -> list[cnr.mail.Mail]:
lines = []
mails = []
while True:
line = fp.readline()
if line == '':
if len(lines) > 0:
mails.append(self._parseSingleMail(lines))
return mails
if self._isNewMailLine(line):
if len(lines) > 0:
mails.append(self._parseSingleMail(lines))
lines = []
else:
lines.append(self._fixSingleLine(line[0:-1]))
def _parseSingleMail(self, lines: list[str]) -> cnr.mail.Mail:
return cnr.headerExtractor.splitHeaders(lines)

View File

@@ -0,0 +1,5 @@
beautifulsoup4==4.12.2
debugpy==1.8.0
Jinja2==3.1.3
MarkupSafe==2.1.3
soupsieve==2.5

View File

@@ -0,0 +1,4 @@
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIG41pTY4B83cy6450MSXe86wyUmq3IUzWvdOgkAGXHPM christian@fj-q920-work
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIM1IjT0jFGLfAYJSrr2SNpoIvejwg3KBtkBD+/7MTj8H christian@server-hh
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIB7PodShNDs0HqwrHek5PHhKjma+91SToYYp0GdC4oYm tsc-homepage@server-hh

Some files were not shown because too many files have changed in this diff Show More