diff --git a/base/fixtures/sites.json b/base/fixtures/sites.json index 6bcbcc91..877324a0 100644 --- a/base/fixtures/sites.json +++ b/base/fixtures/sites.json @@ -1,25 +1,22 @@ [ { - "model": "sites.site", + "model": "base.Site", "pk": 0, "fields": { - "domain": "seminar.strom.sk", "name": "STROM" } }, { - "model": "sites.site", + "model": "base.Site", "pk": 1, "fields": { - "domain": "matik.strom.sk", "name": "Matik" } }, { - "model": "sites.site", + "model": "base.Site", "pk": 2, "fields": { - "domain": "malynar.strom.sk", "name": "Malyn\u00e1r" } } diff --git a/cms/migrations/0004_fileupload.py b/base/migrations/0001_initial.py similarity index 63% rename from cms/migrations/0004_fileupload.py rename to base/migrations/0001_initial.py index 20449d1e..da60ce61 100644 --- a/cms/migrations/0004_fileupload.py +++ b/base/migrations/0001_initial.py @@ -1,20 +1,21 @@ -# Generated by Django 4.2.16 on 2024-11-23 22:54 +# Generated by Django 4.2.16 on 2024-11-24 11:59 from django.db import migrations, models class Migration(migrations.Migration): + initial = True + dependencies = [ - ('cms', '0003_alter_menuitem_url'), ] operations = [ migrations.CreateModel( - name='FileUpload', + name='Site', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('file', models.FileField(upload_to='uploads/')), + ('name', models.CharField(max_length=10, unique=True)), ], ), ] diff --git a/base/models.py b/base/models.py index 531d52c7..5c6db87e 100644 --- a/base/models.py +++ b/base/models.py @@ -25,3 +25,7 @@ def clean(self, *args, **kwargs): 'Nepovolený typ súboru') return file + + +class Site(models.Model): + name = models.CharField(max_length=10, unique=True) diff --git a/base/permissions.py b/base/permissions.py new file mode 100644 index 00000000..ea6c35df --- /dev/null +++ b/base/permissions.py @@ -0,0 +1,10 @@ +from rest_framework.permissions import SAFE_METHODS, BasePermission + + +class IsAdminOrReadOnly(BasePermission): + def has_permission(self, request, view): + return bool( + request.method in SAFE_METHODS or + request.user and + request.user.is_staff + ) diff --git a/base/serializers.py b/base/serializers.py deleted file mode 100644 index 8f71ec7f..00000000 --- a/base/serializers.py +++ /dev/null @@ -1,10 +0,0 @@ -from django.contrib.flatpages.models import FlatPage -from django_typomatic import ts_interface -from rest_framework import serializers - - -@ts_interface(context='base') -class FlatPageSerializer(serializers.ModelSerializer): - class Meta: - model = FlatPage - fields = '__all__' diff --git a/base/urls.py b/base/urls.py index b32aa1b7..1c1caf9e 100644 --- a/base/urls.py +++ b/base/urls.py @@ -1,17 +1,9 @@ from django.urls import path -from rest_framework.routers import DefaultRouter from base import views app_name = 'base' -# Create a router and register our viewsets with it. -router = DefaultRouter() -router.register(r'flat-page', views.FlatPageViewSet) - - urlpatterns = [ - path(r'api-docs/', views.SwaggerSchemaView.as_view(), name='api-docs') + path(r'api-docs/', views.SwaggerSchemaView.as_view(), name='api-docs'), ] - -urlpatterns += router.urls diff --git a/base/views.py b/base/views.py index 1c4b1570..a8b1e7e3 100644 --- a/base/views.py +++ b/base/views.py @@ -1,33 +1,9 @@ -from django.contrib.flatpages.models import FlatPage -from rest_framework import status, viewsets -from rest_framework.decorators import action -from rest_framework.permissions import (DjangoModelPermissionsOrAnonReadOnly, - IsAdminUser) +from rest_framework.permissions import IsAdminUser from rest_framework.response import Response from rest_framework.schemas import SchemaGenerator from rest_framework.views import APIView from rest_framework_swagger import renderers -from base.serializers import FlatPageSerializer - -# Create your views here. - - -class FlatPageViewSet(viewsets.ModelViewSet): - """ - Statické stránky - """ - queryset = FlatPage.objects.all() - serializer_class = FlatPageSerializer - permission_classes = [DjangoModelPermissionsOrAnonReadOnly, ] - - @action(methods=['get'], detail=False, url_path=r'by-url/(?P.+)') - def by_url(self, request, page_url): - """Vráti statickú stránku podľa jej url""" - page = FlatPage.objects.filter(url=page_url).first() - serializer = FlatPageSerializer(page) - return Response(serializer.data, status=status.HTTP_200_OK) - class SwaggerSchemaView(APIView): """Prehľad API pointov""" diff --git a/base/fixtures/flatpages.json b/cms/fixtures/flatpages.json similarity index 95% rename from base/fixtures/flatpages.json rename to cms/fixtures/flatpages.json index e9d9da92..1281f8d7 100644 --- a/base/fixtures/flatpages.json +++ b/cms/fixtures/flatpages.json @@ -1,86 +1,47 @@ [ { - "model": "flatpages.flatpage", + "model": "cms.FlatPage", "pk": 1, "fields": { "url": "gdpr", "title": "Ochrana osobných údajov", - "content": "# Osobné údaje\n\nPri organizovaní našich aktivít prichádza Združenie STROM, so sídlom na Jesennej 5, 041 54 Košice, IČO: 31982336, DIČ: 2021661037, (ďalej len „organizátor\" alebo „OZ STROM\") do styku s vašimi osobnými údajmi. Na týchto stránkach sa dozviete, ako a prečo vaše osobné údaje spracovávame, aké práva nám aj vám z toho vyplývajú a kam sa obrátiť v prípade otázok.\n\nCieľom tohto dokumentu je poskytnúť vám informácie o tom, aké osobné údaje spracovávame, ako ich používame a aké sú vaše práva v oblasti ochrany údajov. Keďže dôvody a postupy sú pri našich aktivitách rôzne, rozdelili sme tieto informácie do sekcií podľa aktivity, ktorej sa spracovanie osobných údajov týka.\n\n## Webová stránka\n\nV súvislosti s registráciou na webových stránkach [strom.sk](http://strom.sk/) spracúva OZ STROM osobné údaje registrovaných používateľov.\n\n### Aké osobné údaje OZ STROM spracúva?\n\nV súvislosti s registráciou na webových stránkach [strom.sk](http://strom.sk/) spracovávame tieto osobné údaje riešiteľov: meno, priezvisko, adresa, e-mailová adresa, telefónne číslo na riešiteľa a rodiča, škola a ročník, do ktorého žiak chodí. Telefonický kontakt nie je povinným údajom. Tieto údaje nám poskytuje používateľ pri registrácii. O riešiteľoch taktiež evidujeme ich dosiahnuté výsledky v seminári -- tieto údaje vytvárame my na základe hodnotenia riešení. \n\n### Prečo potrebujeme vaše osobné údaje?\n\nPrávnym základom na spracúvanie osobných údajov je realizácia zmluvného vzťahu. Poskytnutie údajov vo vyššie uvedenom rozsahu je povinné, z dôvodov overenia identity používateľa a zabezpečenia možnosti registrácie do seminárov.\n\n### Na aké účely sa osobné údaje používajú?\n\nOsobné údaje riešiteľov sú používané na identifikáciu riešiteľa a kontakt s ním (zasielanie ohodnotených riešení, nových zadaní úloh, diplomov a pozvánok na sústredenie najlepších riešiteľov atď.). Údaj o škole a triede nám slúžia na posúdenie predpokladaných vedomostí žiakov pri hodnotení riešení a posudzovanie riešiteľov podozrivých z odpisovania. Na základe hodnotenia je zostavovaný rebríček riešiteľov. Tento je v primeranej forme zverejnený a na jeho základe sú najúspešnejší riešitelia ocenení a pozvaní na sústredenie. Osobné údaje nie sú použité na automatické profilovanie.\n\n### Komu poskytneme vaše osobné údaje?\n\nÚdaje neposkytujeme tretím stranám.\n\n### Ako dlho spracovávame vaše osobné údaje?\n\nOsobné údaje o používateľoch spracovávame po dobu, kým sú registrovaní na našej stránke. Účet je možné zrušiť napísaním žiadosti o vymazanie na adresu [info@strom.sk](mailto:info@strom.sk). Výsledkové listiny (rebríček úspešnosti) sú v primeranej forme zverejnené na neobmedzený čas.\n\n### Aké sú vaše práva v súvislosti s vašimi osobnými údajmi?\n\n- Máte právo na informáciu, aké údaje o vás spracovávame, môžete požiadať o nahliadnutie do údajov a o ich opravu.\n\n- Máte právo na výmaz osobných údajov, keď prestane byť potrebné ich spracovanie.\n\n- Máte právo namietať voči spracovaniu osobných údajov, ktoré spracovávame. Každú podanú námietku vyhodnotíme a o výsledku vás budeme informovať.\n\n- Máte právo na obmedzenie spracovania osobných údajov -- v priebehu rozhodovania o námietke môžete požiadať o obmedzenie spracovania. Až do vyhodnotenia námietky nebudú vaše údaje používané (t.j. nebudeme sa s Vami kontaktovať).\n\n- Ak sa nám nepodarilo uspokojivo vyriešiť vaše otázky alebo námietky v oblasti ochrany osobných údajov, môžete podať návrh na začatie konania na Úrad na ochranu osobných údajov SR, Hraničná 12, 820 07 Bratislava 7, [www.dataprotection.gov.sk](http://www.dataprotection.gov.sk/).\n\n## Semináre STROM, Matik a Malynár\n\nV súvislosti s organizovaním korešpondenčných seminárov STROM, Matik a Malynár spracúva OZ STROM osobné údaje žiakov zapojených do seminára (riešiteľov).\n\n### Aké osobné údaje OZ STROM spracúva?\n\nV súvislosti so seminármi STROM, Matik a Malynár spracovávame tieto osobné údaje riešiteľov: meno, priezvisko, adresa, e-mailová adresa, telefónne číslo na riešiteľa a rodiča, škola a ročník, do ktorého žiak chodí. Telefonický kontakt nie je povinným údajom. Tieto údaje nám poskytuje riešiteľ pri prihlásení do seminára (elektronickou registráciou na našom webe). O riešiteľoch taktiež evidujeme ich dosiahnuté výsledky v seminári -- tieto údaje vytvárame my na základe hodnotenia riešení.\n\n### Prečo potrebujeme vaše osobné údaje?\n\nPrávnym základom na spracúvanie osobných údajov je realizácia zmluvného vzťahu -- údaje potrebujeme na zabezpečenie chodu seminárov, do ktorých sa riešiteľ prihlási. Poskytnutie údajov vo vyššie uvedenom rozsahu je povinné, pretože inak by sme s riešiteľmi nevedeli komunikovať a hodnotiť ich riešenia.\n\n### Na aké účely sa osobné údaje používajú?\n\nOsobné údaje riešiteľov sú používané na identifikáciu riešiteľa a kontakt s ním (zasielanie ohodnotených riešení, nových zadaní úloh, diplomov a pozvánok na sústredenie najlepších riešiteľov atď.). Údaj o škole a triede nám slúžia na posúdenie predpokladaných vedomostí žiakov pri hodnotení riešení a posudzovanie riešiteľov podozrivých z odpisovania. Na základe hodnotenia je zostavovaný rebríček riešiteľov. Tento je v primeranej forme zverejnený a na jeho základe sú najúspešnejší riešitelia ocenení a pozvaní na sústredenie. Osobné údaje nie sú použité na automatické profilovanie.\n\nRiešenia môžeme použiť na demonštračné účely (tréning nových opravovateľov, ukážka našej činnosti). V takomto prípade z riešenia vopred odstránime hlavičku obsahujúcu akékoľvek osobné údaje.\n\n### Komu poskytneme vaše osobné údaje?\n\nÚdaje neposkytujeme tretím stranám. Osobné údaje skladujeme prostredníctvom služby GSuite (https://gsuite.google.com/terms/dpa_terms.html) a pri spracovaní môže dochádzať k prenosu osobných údajov do krajín mimo EÚ. Tento prenos spĺňa požiadavky normy PrivacyShield.\n\n### Ako dlho spracovávame vaše osobné údaje?\n\nOsobné údaje o riešiteľoch spracovávame po dobu, kým sú registrovaní na našej stránke. Účet je možné zrušiť napísaním žiadosti o vymazanie na adresu [info@strom.sk](mailto:info@strom.sk). Výsledkové listiny (rebríček úspešnosti) sú v primeranej forme zverejnené na neobmedzený čas.\n\n### Aké sú vaše práva v súvislosti s vašimi osobnými údajmi?\n\n- Máte právo na informáciu, aké údaje o vás spracovávame, môžete požiadať o nahliadnutie do údajov a o ich opravu.\n\n- Máte právo na výmaz osobných údajov, keď prestane byť potrebné ich spracovanie.\n\n- Máte právo namietať voči spracovaniu osobných údajov, ktoré spracovávame. Každú podanú námietku vyhodnotíme a o výsledku vás budeme informovať.\n\n- Máte právo na obmedzenie spracovania osobných údajov -- v priebehu rozhodovania o námietke môžete požiadať o obmedzenie spracovania. Až do vyhodnotenia námietky nebudú vaše údaje používané (t.j. nebudeme sa s Vami kontaktovať).\n\n- Ak sa nám nepodarilo uspokojivo vyriešiť vaše otázky alebo námietky v oblasti ochrany osobných údajov, môžete podať návrh na začatie konania na Úrad na ochranu osobných údajov SR, Hraničná 12, 820 07 Bratislava 7, [www.dataprotection.gov.sk](http://www.dataprotection.gov.sk/).\n\n## Pobytové akcie (TMM, TSM a sústredenia seminárov STROM, Matik a Malynár )\n\nV súvislosti s organizovaním pobytových akcií (táborov a sústredení) spracúva OZ STROM osobné údaje účastníkov a ich zákonných zástupcov.\n\n### Aké osobné údaje OZ STROM spracúva?\n\nNa účely zabezpečenia sústredení získavame a spracovávame osobné údaje účastníka a jeho rodiča (resp. zákonného zástupcu) v rozsahu potrebnom na komunikáciu s účastníkom (resp. zákonným zástupcom), identifikáciu platby a na zabezpečenie úrazového poistenia, ubytovania, stravy a programu na sústredení. Na pobytových akciách vyhotovujeme fotografie účastníkov pri organizovaných aktivitách a vo voľnom čase.\n\n### Prečo potrebujeme vaše osobné údaje?\n\nPrávnym základom na spracovanie osobných údajov je realizácia zmluvného vzťahu -- údaje potrebujeme na organizačné zabezpečenie pobytovej akcie. Poskytnutie údajov vo vyššie uvedenom rozsahu je povinné, pretože inak by sme s účastníkmi pobytovej akcie nevedeli komunikovať a zabezpečiť im ubytovanie a/alebo úrazové poistenie.\n\n### Na aké účely sa osobné údaje použijú?\n\nPrávnym základom na spracovávanie osobných údajov účastníkov pobytových akcií a ich rodičov je realizácia zmluvného vzťahu - organizácia pobytovej akcie.\n\nOsobné údaje získané z prihlášky na Pobytovú akciu budú použité na zabezpečenie úrazového poistenia, zabezpečenie pobytovej akcie, na komunikáciu v súvislosti s pobytovou akciou a na účtovnú evidenciu. Keďže pobytové akcie dotujeme aj z prostriedkov z 2 % dane, môže byť rodičom zaslaný aj e-mail so žiadosťou o podporu touto formou. Výber fotografií bude zverejnený na webových stránkach organizátora, prípadne iných materiáloch dokumentujúcich činnosť organizátora (výročná správa, atď.). Údaje o zdravotnom stave budú použité len na účely daného sústredenia (objednanie adekvátnej stravy, prispôsobenie programu zdravotným obmedzeniam účastníkov). Osobné údaje nebudú použité na automatizované profilovanie.\n\n### Komu poskytneme vaše osobné údaje?\n\nOsobné údaje neposkytujeme tretím stranám okrem poisťovne Colonnade Insurance S.A. a ubytovacieho zariadenia, v ktorom sa pobytová akcia koná, ak si vyžiadajú zoznam ubytovaných. Osobné údaje skladujeme prostredníctvom služby GSuite (https://gsuite.google.com/terms/dpa_terms.html) a pri spracovaní môže dochádzať k prenosu osobných údajov do krajín mimo EÚ. Tento prenos spĺňa požiadavky normy PrivacyShield.\n\n### Ako dlho spracovávame vaše osobné údaje?\n\nOsobné údaje spracovávame do 1 rok od ukončenia pobytovej akcie. Za účelom evidencie, kto sa zúčastnil pobytových akcií organizovaných OZ STROM, bude zoznam účastníkov (meno a priezvisko) archivovaný po dobu 10 rokov. Údaje identifikujúce platbu, prípadne fakturačné údaje, budú spracovávané nevyhnutnú dobu na základe ďalších predpisov (Zákona o účtovníctve). Výber fotografií je archivovaný 10 rokov.\n\nAké sú vaše práva v súvislosti s vašimi osobnými údajmi?\n\n- Máte právo na prístup k údajom, ktoré o vás spracovávame, máte právo na ich prenos, môžete požiadať o ich opravu.\n\n- Máte právo na výmaz osobných údajov, keď ich už nebudeme potrebovať pre účely plnenia zmluvy.\n\n- Počas doby vyhodnotenia námietky máte právo na obmedzenie spracúvania -- s vašimi údajmi nebudeme nakladať inak, než ich uchovávať.\n\n- Ak sa nám nepodarilo uspokojivo vyriešiť vaše otázky alebo námietky v oblasti ochrany osobných údajov, môžete podať návrh na začatie konania na Úrad na ochranu osobných údajov SR, Hraničná 12, 820 07 Bratislava 7, [www.dataprotection.gov.sk](http://www.dataprotection.gov.sk/).\n\n## Matboj, Lomihlav, Mamut, Kôš\n\nV súvislosti s organizovaním súťaží Matboj, Lomihlav, Mamut a Kôš spracúva OZ STROM osobné údaje súťažiacich.\n\n### Aké osobné údaje OZ STROM spracúva?\n\nV súvislosti so súťažami Matboj, Lomihlav a Mamut spracúvame tieto osobné údaje súťažiacich: meno, priezvisko, škola a ročník, ktoré žiak navštevuje. V súvislosti so súťažou Kôš sa jedná iba o meno a priezvisko súťažiaceho.\n\nPri kontaktnej osobe registrujúcej tím do súťaže (učiteľ alebo vedúci tímu) spracovávame údaje v rozsahu: meno, priezvisko, kontakt (e-mail, telefón).\n\nTieto údaje nám poskytuje registrujúca osoba pri prihlásení do súťaže.\n\n### Prečo potrebujeme vaše osobné údaje?\n\nPrávnym základom na spracovanie osobných údajov je realizácia zmluvného vzťahu. Poskytnutie údajov vo vyššie uvedenom rozsahu je povinné, pretože údaje potrebujeme na organizačné zabezpečenie súťaže.\n\n### Na aké účely sa osobné údaje používajú?\n\nÚdaje registrujúcej osoby používame na komunikáciu s tímom (resp. tímami z jednej školy) -- komunikujeme organizačné pokyny a pod.\n\nMená členov jednotlivých tímov použijeme na vypísanie diplomov. Vo výsledkovej listine je zverejnený identifikátor tímu (názov, škola) a mená členov.\n\n### Komu poskytneme vaše osobné údaje?\n\nÚdaje neposkytujeme tretím stranám. Osobné údaje skladujeme prostredníctvom služby GSuite(https://gsuite.google.com/terms/dpa_terms.html) a pri spracovaní môže dochádzať k prenosu osobných údajov do krajín mimo EÚ. Tento prenos spĺňa požiadavky normy PrivacyShield.\n\n### Ako dlho spracovávame vaše osobné údaje?\n\nÚdaje o členoch tímu uchovávame po obdobie 3 rokov pre ich zapojenie do ďalších ročníkov.\n\nÚdaje kontaktnej osoby spracovávame 2 roky kvôli zasielaniu informácií o nasledujúcom ročníku súťaže.\n\n### Aké sú vaše práva v súvislosti s vašimi osobnými údajmi?\n\n- Máte právo na informáciu, aké údaje o vás spracovávame, máte právo na ich prenos, môžete požiadať o nahliadnutie do údajov a o ich opravu.\n\n- Máte právo na výmaz osobných údajov, keď prestane byť potrebné ich spracovanie.\n\n- Máte právo namietať voči spracovaniu osobných údajov, ktoré spracúvame. Každú podanú námietku vyhodnotíme a o výsledku vás budeme informovať.\n\n- Máte právo na obmedzenie spracovania osobných údajov -- v priebehu rozhodovania o námietke môžete požiadať o obmedzenie spracovania. Až do vyhodnotenia námietky nebudú vaše údaje používané (t.j. nebudeme sa s vami kontaktovať).\n\n- Ak sa nám nepodarilo uspokojivo vyriešiť vaše otázky alebo námietky v oblasti ochrany osobných údajov, môžete podať návrh na začatie konania na Úrad na ochranu osobných údajov SR, Hraničná 12, 820 07 Bratislava 7, [www.dataprotection.gov.sk](http://www.dataprotection.gov.sk/).\n\n## Minisústredenia\n\nV súvislosti s organizovaním minisústredení spracúva OZ STROM osobné údaje žiakov (účastníkov) zapojených do minisústredenia.\n\n### Aké osobné údaje OZ STROM spracúva?\n\nV súvislosti s minisústredeniami spracúvame tieto osobné údaje účastníkov: meno, priezvisko, pohlavie, škola a trieda, ktoré žiak navštevuje. Tieto údaje nám poskytuje učiteľ, ktorý si u nás Minisústredenie objednáva prostredníctvom e-mailu. Ďalej spracovávame tieto osobné údaje osoby (spravidla učiteľa), ktorý minisústredenie objednáva: meno, priezvisko, e-mail a telefónne číslo.\n\n### Prečo potrebujeme vaše osobné údaje?\n\nPrávnym základom na spracovanie osobných údajov je realizácia zmluvného vzťahu -- údaje potrebujeme na zabezpečenie minisústredenia. Poskytnutie údajov vo vyššie uvedenom rozsahu je povinné, pretože inak by sme s účastníkmi a učiteľom nevedeli komunikovať a prispôsobiť program vekovému profilu účastníkov.\n\n### Na aké účely sa osobné údaje používajú?\n\nOsobné údaje riešiteľov sú používané na identifikáciu účastníka počas minisústredenia a na kontakt s objednávateľom. Údaj o škole a triede nám slúžia na posúdenie predpokladaných vedomostí žiakov pri zostavovaní programu.\n\n### Komu poskytneme vaše osobné údaje?\n\nÚdaje neposkytujeme tretím stranám. Osobné údaje skladujeme prostredníctvom služby GSuite(https://gsuite.google.com/terms/dpa_terms.html) a pri spracovaní môže dochádzať k prenosu osobných údajov do krajín mimo EÚ. Tento prenos spĺňa požiadavky normy PrivacyShield.\n\n### Ako dlho spracovávame vaše osobné údaje?\n\nOsobné údaje o účastníkoch spracovávame iba po dobu trvania minisústredenia. Kontakt na objednávateľa archivujeme po dobu najviac 2 rokov pre prípad ďalšej spolupráce.\n\n### Aké sú vaše práva v súvislosti s vašimi osobnými údajmi?\n\n- Máte právo na informáciu, aké údaje o vás spracovávame, máte právo na ich prenos, môžete požiadať o nahliadnutie do údajov a o ich opravu.\n\n- Máte právo na výmaz osobných údajov, keď prestane byť potrebné ich spracovanie.\n\n- Máte právo namietať voči spracovaniu osobných údajov, ktoré spracúvame. Každú podanú námietku vyhodnotíme a o výsledku vás budeme informovať.\n\n- Máte právo na obmedzenie spracovania osobných údajov -- v priebehu rozhodovania o námietke môžete požiadať o obmedzenie spracovania. Až do vyhodnotenia námietky nebudú vaše údaje používané (t.j. nebudeme sa s vami kontaktovať).\n\n- Ak sa nám nepodarilo uspokojivo vyriešiť vaše otázky alebo námietky v oblasti ochrany osobných údajov, môžete podať návrh na začatie konania na Úrad na ochranu osobných údajov SR, Hraničná 12, 820 07 Bratislava 7, [www.dataprotection.gov.sk](http://www.dataprotection.gov.sk/).\n\n## Online súťaže a aktivity pre jednotlivcov\n\nV súvislosti s organizovaním online súťaží a aktivít pre jednotlivcov spracúva OZ STROM osobné údaje účastníkov a ich zákonných zástupcov.\n\n### Aké osobné údaje OZ STROM spracúva?\n\nV súvislosti s online súťažou a aktivitami pre jednotlivcov spracúvame tieto osobné údaje účastníkov: meno, priezvisko, škola a ročník, ktoré žiak navštevuje, a e-mail. Ďalej spracúvame tieto osobné údaje rodiča (resp. zákonného zástupcu) účastníka: meno, priezvisko a e-mail. Tieto údaje nám poskytuje registrujúca osoba pri prihlásení do súťaže.\n\n### Prečo potrebujeme vaše osobné údaje?\n\nPrávnym základom na spracovanie osobných údajov je realizácia zmluvného vzťahu. Poskytnutie údajov vo vyššie uvedenom rozsahu je povinné, pretože údaje potrebujeme na organizačné zabezpečenie súťaže alebo aktivity.\n\n### Na aké účely sa osobné údaje používajú?\n\nÚdaje účastníka (a prípadne aj zákonného zástupcu) potrebujeme na komunikáciu s účastníkom pre účely distribúcie organizačných pokynov a zaslania ocenení. Meno, priezvisko, školu a ročník použijeme na zaradenie v rámci súťaže alebo aktivity, vypísanie diplomov a na zverejnenie výsledkovej listiny.\n\n### Komu poskytneme vaše osobné údaje?\n\nÚdaje neposkytujeme tretím stranám. Osobné údaje skladujeme prostredníctvom služby GSuite (https://gsuite.google.com/terms/dpa_terms.html) a pri spracovaní môže dochádzať k prenosu osobných údajov do krajín mimo EÚ. Tento prenos spĺňa požiadavky normy PrivacyShield.\n\n### Ako dlho spracovávame vaše osobné údaje?\n\nÚdaje o účastníkoch uchovávame po obdobie 2 rokov pre ich možné zapojenie do ďalších ročníkov. Údaje vo výsledkovej listine sú zverejnené na neobmedzený čas.\n\n### Aké sú vaše práva v súvislosti s vašimi osobnými údajmi?\n\n- Máte právo na informáciu, aké údaje o vás spracovávame, máte právo na ich prenos, môžete požiadať o nahliadnutie do údajov a o ich opravu.\n\n- Máte právo na výmaz osobných údajov, keď prestane byť potrebné ich spracovanie.\n\n- Máte právo namietať voči spracovaniu osobných údajov, ktoré spracúvame. Každú podanú námietku vyhodnotíme a o výsledku vás budeme informovať.\n\n- Máte právo na obmedzenie spracovania osobných údajov -- v priebehu rozhodovania o námietke môžete požiadať o obmedzenie spracovania. Až do vyhodnotenia námietky nebudú vaše údaje používané (t.j. nebudeme sa s vami kontaktovať).\n\n- Ak sa nám nepodarilo uspokojivo vyriešiť vaše otázky alebo námietky v oblasti ochrany osobných údajov, môžete podať návrh na začatie konania na Úrad na ochranu osobných údajov SR, Hraničná 12, 820 07 Bratislava 7, [www.dataprotection.gov.sk](http://www.dataprotection.gov.sk/).\n\n## Newsletter\n\nV súvislosti s informovaním o svojich aktivitách prostredníctvom newslettra spracúva OZ STROM osobné údaje účastníkov akcií, ktoré organizuje, ich zákonných zástupcov a učiteľov.\n\n### Aké osobné údaje OZ STROM spracúva?\n\nV súvislosti s využívaním newslettra spracúvame tieto osobné údaje: meno, priezvisko, škola, e-mail a postavenie osoby voči OZ STROM. Tieto údaje nám poskytuje registrujúca osoba pri prihlásení k odberu newslettra.\n\n### Prečo potrebujeme vaše osobné údaje?\n\nPrávnym základom na spracovanie osobných údajov je realizácia zmluvného vzťahu. Poskytnutie údajov vo vyššie uvedenom rozsahu je povinné, pretože údaje potrebujeme na cielené rozosielanie informácií o našich aktivitách.\n\n### Na aké účely sa osobné údaje používajú?\n\nÚdaje potrebujeme na komunikáciu s osobou, ktorá nám ich poskytla. Meno a priezvisko využívame na personalizáciu e-mail a vyhodnocovanie účelnosti emailu.\n\n### Komu poskytneme vaše osobné údaje?\n\nOsobné údaje skladujeme prostredníctvom služby Mailchimp. Táto služba spĺňa podmienky spracovania osobných údajov podľa platných regulácií EÚ (https://mailchimp.com/legal/data-processing-addendum/#Annex_C_-_Standard_Contractual_Clauses).\n\n### Ako dlho spracovávame vaše osobné údaje?\n\nOsobné údaje o používateľoch spracovávame po dobu, kým sú registrovaní v newslettri.\n\n### Aké sú vaše práva v súvislosti s vašimi osobnými údajmi?\n\n- Máte právo na informáciu, aké údaje o vás spracovávame, máte právo na ich prenos, môžete požiadať o nahliadnutie do údajov a o ich opravu.\n\n- Máte právo na výmaz osobných údajov, keď prestane byť potrebné ich spracovanie.\n\n- Máte právo namietať voči spracovaniu osobných údajov, ktoré spracúvame. Každú podanú námietku vyhodnotíme a o výsledku vás budeme informovať.\n\n- Máte právo na obmedzenie spracovania osobných údajov -- v priebehu rozhodovania o námietke môžete požiadať o obmedzenie spracovania. Až do vyhodnotenia námietky nebudú vaše údaje používané (t.j. nebudeme sa s vami kontaktovať).\n\n- Ak sa nám nepodarilo uspokojivo vyriešiť vaše otázky alebo námietky v oblasti ochrany osobných údajov, môžete podať návrh na začatie konania na Úrad na ochranu osobných údajov SR, Hraničná 12, 820 07 Bratislava 7, [www.dataprotection.gov.sk](http://www.dataprotection.gov.sk/).\n\n## Členstvo v združení\n\nV súvislosti s evidenciou členov združenia STROM spracúva OZ STROM osobné údaje členov.\n\n### Aké osobné údaje OZ STROM spracúva?\n\nV súvislosti s evidenciou členov spracúvame tieto osobné údaje: meno, priezvisko, e-mail, telefónne číslo, login na stránke [strom.sk](http://strom.sk/) a dátum narodenia. V prípade, že člen združenia nedovŕšil 18 rokov spracuvávame aj meno jeho zákonného zástupcu.\n\n### Prečo potrebujeme vaše osobné údaje?\n\nPrávnym základom na spracovanie osobných údajov je realizácia zmluvného vzťahu. Poskytnutie údajov vo vyššie uvedenom rozsahu je povinné, pretože údaje slúžia k evidencii členov združenia.\n\n### Na aké účely sa osobné údaje používajú?\n\nÚdaje členov používame na komunikáciu vnútri združenia a na prideľovanie prístupov do interných aplikácií. Dátum narodenia spracovávame z dôvodu identifikácie osôb s volebným právom na valnom zhromaždení. Údaje evidujeme iba interne a zverejňujeme iba údaje vyšších funkcionárov v združení (členovia rady združenia a predseda združenia).\n\n### Komu poskytneme vaše osobné údaje?\n\nÚdaje s výnimkou štatutárnych zástupcov a členov rady združenia neposkytujeme tretím stranám. V prípade členov rady združenia a štatutárnych zástupcov združenia poskytujeme údaje príslušným štátnym orgánom, bankovému ústavu, v ktorom má združenie vedený účet a iným inštitúciám, s ktorými združenie komunikuje.\n\nOsobné údaje skladujeme prostredníctvom služby GSuite (https://gsuite.google.com/terms/dpa_terms.html) a pri spracovaní môže dochádzať k prenosu osobných údajov do krajín mimo EÚ. Tento prenos spĺňa požiadavky normy PrivacyShield.\n\n### Ako dlho spracovávame vaše osobné údaje?\n\nÚdaje členov združenia uchovávame počas celej doby členstva v združení a rok po ukončení členstva.\n\n### Aké sú vaše práva v súvislosti s vašimi osobnými údajmi?\n\n- Máte právo na informáciu, aké údaje o vás spracovávame, máte právo na ich prenos, môžete požiadať o nahliadnutie do údajov a o ich opravu.\n\n- Máte právo na výmaz osobných údajov, keď prestane byť potrebné ich spracovanie.\n\n- Máte právo namietať voči spracovaniu osobných údajov, ktoré spracúvame. Každú podanú námietku vyhodnotíme a o výsledku vás budeme informovať.\n\n- Máte právo na obmedzenie spracovania osobných údajov -- v priebehu rozhodovania o námietke môžete požiadať o obmedzenie spracovania. Až do vyhodnotenia námietky nebudú vaše údaje používané (t.j. nebudeme sa s vami kontaktovať).\n\n- Ak sa nám nepodarilo uspokojivo vyriešiť vaše otázky alebo námietky v oblasti ochrany osobných údajov, môžete podať návrh na začatie konania na Úrad na ochranu osobných údajov SR, Hraničná 12, 820 07 Bratislava 7, [www.dataprotection.gov.sk](http://www.dataprotection.gov.sk/).\n\nV prípade akýchkoľvek otázok alebo námietok voči spracovávaniu osobných údajov nás kontaktujte na [info@strom.sk](mailto:info@strom.sk).\n\nPosledná úprava: 29.9.2021", - "enable_comments": false, - "template_name": "", - "registration_required": false, - "sites": [ - 0, - 1, - 2 - ] + "content": "# Osobné údaje\n\nPri organizovaní našich aktivít prichádza Združenie STROM, so sídlom na Jesennej 5, 041 54 Košice, IČO: 31982336, DIČ: 2021661037, (ďalej len „organizátor\" alebo „OZ STROM\") do styku s vašimi osobnými údajmi. Na týchto stránkach sa dozviete, ako a prečo vaše osobné údaje spracovávame, aké práva nám aj vám z toho vyplývajú a kam sa obrátiť v prípade otázok.\n\nCieľom tohto dokumentu je poskytnúť vám informácie o tom, aké osobné údaje spracovávame, ako ich používame a aké sú vaše práva v oblasti ochrany údajov. Keďže dôvody a postupy sú pri našich aktivitách rôzne, rozdelili sme tieto informácie do sekcií podľa aktivity, ktorej sa spracovanie osobných údajov týka.\n\n## Webová stránka\n\nV súvislosti s registráciou na webových stránkach [strom.sk](http://strom.sk/) spracúva OZ STROM osobné údaje registrovaných používateľov.\n\n### Aké osobné údaje OZ STROM spracúva?\n\nV súvislosti s registráciou na webových stránkach [strom.sk](http://strom.sk/) spracovávame tieto osobné údaje riešiteľov: meno, priezvisko, adresa, e-mailová adresa, telefónne číslo na riešiteľa a rodiča, škola a ročník, do ktorého žiak chodí. Telefonický kontakt nie je povinným údajom. Tieto údaje nám poskytuje používateľ pri registrácii. O riešiteľoch taktiež evidujeme ich dosiahnuté výsledky v seminári -- tieto údaje vytvárame my na základe hodnotenia riešení. \n\n### Prečo potrebujeme vaše osobné údaje?\n\nPrávnym základom na spracúvanie osobných údajov je realizácia zmluvného vzťahu. Poskytnutie údajov vo vyššie uvedenom rozsahu je povinné, z dôvodov overenia identity používateľa a zabezpečenia možnosti registrácie do seminárov.\n\n### Na aké účely sa osobné údaje používajú?\n\nOsobné údaje riešiteľov sú používané na identifikáciu riešiteľa a kontakt s ním (zasielanie ohodnotených riešení, nových zadaní úloh, diplomov a pozvánok na sústredenie najlepších riešiteľov atď.). Údaj o škole a triede nám slúžia na posúdenie predpokladaných vedomostí žiakov pri hodnotení riešení a posudzovanie riešiteľov podozrivých z odpisovania. Na základe hodnotenia je zostavovaný rebríček riešiteľov. Tento je v primeranej forme zverejnený a na jeho základe sú najúspešnejší riešitelia ocenení a pozvaní na sústredenie. Osobné údaje nie sú použité na automatické profilovanie.\n\n### Komu poskytneme vaše osobné údaje?\n\nÚdaje neposkytujeme tretím stranám.\n\n### Ako dlho spracovávame vaše osobné údaje?\n\nOsobné údaje o používateľoch spracovávame po dobu, kým sú registrovaní na našej stránke. Účet je možné zrušiť napísaním žiadosti o vymazanie na adresu [info@strom.sk](mailto:info@strom.sk). Výsledkové listiny (rebríček úspešnosti) sú v primeranej forme zverejnené na neobmedzený čas.\n\n### Aké sú vaše práva v súvislosti s vašimi osobnými údajmi?\n\n- Máte právo na informáciu, aké údaje o vás spracovávame, môžete požiadať o nahliadnutie do údajov a o ich opravu.\n\n- Máte právo na výmaz osobných údajov, keď prestane byť potrebné ich spracovanie.\n\n- Máte právo namietať voči spracovaniu osobných údajov, ktoré spracovávame. Každú podanú námietku vyhodnotíme a o výsledku vás budeme informovať.\n\n- Máte právo na obmedzenie spracovania osobných údajov -- v priebehu rozhodovania o námietke môžete požiadať o obmedzenie spracovania. Až do vyhodnotenia námietky nebudú vaše údaje používané (t.j. nebudeme sa s Vami kontaktovať).\n\n- Ak sa nám nepodarilo uspokojivo vyriešiť vaše otázky alebo námietky v oblasti ochrany osobných údajov, môžete podať návrh na začatie konania na Úrad na ochranu osobných údajov SR, Hraničná 12, 820 07 Bratislava 7, [www.dataprotection.gov.sk](http://www.dataprotection.gov.sk/).\n\n## Semináre STROM, Matik a Malynár\n\nV súvislosti s organizovaním korešpondenčných seminárov STROM, Matik a Malynár spracúva OZ STROM osobné údaje žiakov zapojených do seminára (riešiteľov).\n\n### Aké osobné údaje OZ STROM spracúva?\n\nV súvislosti so seminármi STROM, Matik a Malynár spracovávame tieto osobné údaje riešiteľov: meno, priezvisko, adresa, e-mailová adresa, telefónne číslo na riešiteľa a rodiča, škola a ročník, do ktorého žiak chodí. Telefonický kontakt nie je povinným údajom. Tieto údaje nám poskytuje riešiteľ pri prihlásení do seminára (elektronickou registráciou na našom webe). O riešiteľoch taktiež evidujeme ich dosiahnuté výsledky v seminári -- tieto údaje vytvárame my na základe hodnotenia riešení.\n\n### Prečo potrebujeme vaše osobné údaje?\n\nPrávnym základom na spracúvanie osobných údajov je realizácia zmluvného vzťahu -- údaje potrebujeme na zabezpečenie chodu seminárov, do ktorých sa riešiteľ prihlási. Poskytnutie údajov vo vyššie uvedenom rozsahu je povinné, pretože inak by sme s riešiteľmi nevedeli komunikovať a hodnotiť ich riešenia.\n\n### Na aké účely sa osobné údaje používajú?\n\nOsobné údaje riešiteľov sú používané na identifikáciu riešiteľa a kontakt s ním (zasielanie ohodnotených riešení, nových zadaní úloh, diplomov a pozvánok na sústredenie najlepších riešiteľov atď.). Údaj o škole a triede nám slúžia na posúdenie predpokladaných vedomostí žiakov pri hodnotení riešení a posudzovanie riešiteľov podozrivých z odpisovania. Na základe hodnotenia je zostavovaný rebríček riešiteľov. Tento je v primeranej forme zverejnený a na jeho základe sú najúspešnejší riešitelia ocenení a pozvaní na sústredenie. Osobné údaje nie sú použité na automatické profilovanie.\n\nRiešenia môžeme použiť na demonštračné účely (tréning nových opravovateľov, ukážka našej činnosti). V takomto prípade z riešenia vopred odstránime hlavičku obsahujúcu akékoľvek osobné údaje.\n\n### Komu poskytneme vaše osobné údaje?\n\nÚdaje neposkytujeme tretím stranám. Osobné údaje skladujeme prostredníctvom služby GSuite (https://gsuite.google.com/terms/dpa_terms.html) a pri spracovaní môže dochádzať k prenosu osobných údajov do krajín mimo EÚ. Tento prenos spĺňa požiadavky normy PrivacyShield.\n\n### Ako dlho spracovávame vaše osobné údaje?\n\nOsobné údaje o riešiteľoch spracovávame po dobu, kým sú registrovaní na našej stránke. Účet je možné zrušiť napísaním žiadosti o vymazanie na adresu [info@strom.sk](mailto:info@strom.sk). Výsledkové listiny (rebríček úspešnosti) sú v primeranej forme zverejnené na neobmedzený čas.\n\n### Aké sú vaše práva v súvislosti s vašimi osobnými údajmi?\n\n- Máte právo na informáciu, aké údaje o vás spracovávame, môžete požiadať o nahliadnutie do údajov a o ich opravu.\n\n- Máte právo na výmaz osobných údajov, keď prestane byť potrebné ich spracovanie.\n\n- Máte právo namietať voči spracovaniu osobných údajov, ktoré spracovávame. Každú podanú námietku vyhodnotíme a o výsledku vás budeme informovať.\n\n- Máte právo na obmedzenie spracovania osobných údajov -- v priebehu rozhodovania o námietke môžete požiadať o obmedzenie spracovania. Až do vyhodnotenia námietky nebudú vaše údaje používané (t.j. nebudeme sa s Vami kontaktovať).\n\n- Ak sa nám nepodarilo uspokojivo vyriešiť vaše otázky alebo námietky v oblasti ochrany osobných údajov, môžete podať návrh na začatie konania na Úrad na ochranu osobných údajov SR, Hraničná 12, 820 07 Bratislava 7, [www.dataprotection.gov.sk](http://www.dataprotection.gov.sk/).\n\n## Pobytové akcie (TMM, TSM a sústredenia seminárov STROM, Matik a Malynár )\n\nV súvislosti s organizovaním pobytových akcií (táborov a sústredení) spracúva OZ STROM osobné údaje účastníkov a ich zákonných zástupcov.\n\n### Aké osobné údaje OZ STROM spracúva?\n\nNa účely zabezpečenia sústredení získavame a spracovávame osobné údaje účastníka a jeho rodiča (resp. zákonného zástupcu) v rozsahu potrebnom na komunikáciu s účastníkom (resp. zákonným zástupcom), identifikáciu platby a na zabezpečenie úrazového poistenia, ubytovania, stravy a programu na sústredení. Na pobytových akciách vyhotovujeme fotografie účastníkov pri organizovaných aktivitách a vo voľnom čase.\n\n### Prečo potrebujeme vaše osobné údaje?\n\nPrávnym základom na spracovanie osobných údajov je realizácia zmluvného vzťahu -- údaje potrebujeme na organizačné zabezpečenie pobytovej akcie. Poskytnutie údajov vo vyššie uvedenom rozsahu je povinné, pretože inak by sme s účastníkmi pobytovej akcie nevedeli komunikovať a zabezpečiť im ubytovanie a/alebo úrazové poistenie.\n\n### Na aké účely sa osobné údaje použijú?\n\nPrávnym základom na spracovávanie osobných údajov účastníkov pobytových akcií a ich rodičov je realizácia zmluvného vzťahu - organizácia pobytovej akcie.\n\nOsobné údaje získané z prihlášky na Pobytovú akciu budú použité na zabezpečenie úrazového poistenia, zabezpečenie pobytovej akcie, na komunikáciu v súvislosti s pobytovou akciou a na účtovnú evidenciu. Keďže pobytové akcie dotujeme aj z prostriedkov z 2 % dane, môže byť rodičom zaslaný aj e-mail so žiadosťou o podporu touto formou. Výber fotografií bude zverejnený na webových stránkach organizátora, prípadne iných materiáloch dokumentujúcich činnosť organizátora (výročná správa, atď.). Údaje o zdravotnom stave budú použité len na účely daného sústredenia (objednanie adekvátnej stravy, prispôsobenie programu zdravotným obmedzeniam účastníkov). Osobné údaje nebudú použité na automatizované profilovanie.\n\n### Komu poskytneme vaše osobné údaje?\n\nOsobné údaje neposkytujeme tretím stranám okrem poisťovne Colonnade Insurance S.A. a ubytovacieho zariadenia, v ktorom sa pobytová akcia koná, ak si vyžiadajú zoznam ubytovaných. Osobné údaje skladujeme prostredníctvom služby GSuite (https://gsuite.google.com/terms/dpa_terms.html) a pri spracovaní môže dochádzať k prenosu osobných údajov do krajín mimo EÚ. Tento prenos spĺňa požiadavky normy PrivacyShield.\n\n### Ako dlho spracovávame vaše osobné údaje?\n\nOsobné údaje spracovávame do 1 rok od ukončenia pobytovej akcie. Za účelom evidencie, kto sa zúčastnil pobytových akcií organizovaných OZ STROM, bude zoznam účastníkov (meno a priezvisko) archivovaný po dobu 10 rokov. Údaje identifikujúce platbu, prípadne fakturačné údaje, budú spracovávané nevyhnutnú dobu na základe ďalších predpisov (Zákona o účtovníctve). Výber fotografií je archivovaný 10 rokov.\n\nAké sú vaše práva v súvislosti s vašimi osobnými údajmi?\n\n- Máte právo na prístup k údajom, ktoré o vás spracovávame, máte právo na ich prenos, môžete požiadať o ich opravu.\n\n- Máte právo na výmaz osobných údajov, keď ich už nebudeme potrebovať pre účely plnenia zmluvy.\n\n- Počas doby vyhodnotenia námietky máte právo na obmedzenie spracúvania -- s vašimi údajmi nebudeme nakladať inak, než ich uchovávať.\n\n- Ak sa nám nepodarilo uspokojivo vyriešiť vaše otázky alebo námietky v oblasti ochrany osobných údajov, môžete podať návrh na začatie konania na Úrad na ochranu osobných údajov SR, Hraničná 12, 820 07 Bratislava 7, [www.dataprotection.gov.sk](http://www.dataprotection.gov.sk/).\n\n## Matboj, Lomihlav, Mamut, Kôš\n\nV súvislosti s organizovaním súťaží Matboj, Lomihlav, Mamut a Kôš spracúva OZ STROM osobné údaje súťažiacich.\n\n### Aké osobné údaje OZ STROM spracúva?\n\nV súvislosti so súťažami Matboj, Lomihlav a Mamut spracúvame tieto osobné údaje súťažiacich: meno, priezvisko, škola a ročník, ktoré žiak navštevuje. V súvislosti so súťažou Kôš sa jedná iba o meno a priezvisko súťažiaceho.\n\nPri kontaktnej osobe registrujúcej tím do súťaže (učiteľ alebo vedúci tímu) spracovávame údaje v rozsahu: meno, priezvisko, kontakt (e-mail, telefón).\n\nTieto údaje nám poskytuje registrujúca osoba pri prihlásení do súťaže.\n\n### Prečo potrebujeme vaše osobné údaje?\n\nPrávnym základom na spracovanie osobných údajov je realizácia zmluvného vzťahu. Poskytnutie údajov vo vyššie uvedenom rozsahu je povinné, pretože údaje potrebujeme na organizačné zabezpečenie súťaže.\n\n### Na aké účely sa osobné údaje používajú?\n\nÚdaje registrujúcej osoby používame na komunikáciu s tímom (resp. tímami z jednej školy) -- komunikujeme organizačné pokyny a pod.\n\nMená členov jednotlivých tímov použijeme na vypísanie diplomov. Vo výsledkovej listine je zverejnený identifikátor tímu (názov, škola) a mená členov.\n\n### Komu poskytneme vaše osobné údaje?\n\nÚdaje neposkytujeme tretím stranám. Osobné údaje skladujeme prostredníctvom služby GSuite(https://gsuite.google.com/terms/dpa_terms.html) a pri spracovaní môže dochádzať k prenosu osobných údajov do krajín mimo EÚ. Tento prenos spĺňa požiadavky normy PrivacyShield.\n\n### Ako dlho spracovávame vaše osobné údaje?\n\nÚdaje o členoch tímu uchovávame po obdobie 3 rokov pre ich zapojenie do ďalších ročníkov.\n\nÚdaje kontaktnej osoby spracovávame 2 roky kvôli zasielaniu informácií o nasledujúcom ročníku súťaže.\n\n### Aké sú vaše práva v súvislosti s vašimi osobnými údajmi?\n\n- Máte právo na informáciu, aké údaje o vás spracovávame, máte právo na ich prenos, môžete požiadať o nahliadnutie do údajov a o ich opravu.\n\n- Máte právo na výmaz osobných údajov, keď prestane byť potrebné ich spracovanie.\n\n- Máte právo namietať voči spracovaniu osobných údajov, ktoré spracúvame. Každú podanú námietku vyhodnotíme a o výsledku vás budeme informovať.\n\n- Máte právo na obmedzenie spracovania osobných údajov -- v priebehu rozhodovania o námietke môžete požiadať o obmedzenie spracovania. Až do vyhodnotenia námietky nebudú vaše údaje používané (t.j. nebudeme sa s vami kontaktovať).\n\n- Ak sa nám nepodarilo uspokojivo vyriešiť vaše otázky alebo námietky v oblasti ochrany osobných údajov, môžete podať návrh na začatie konania na Úrad na ochranu osobných údajov SR, Hraničná 12, 820 07 Bratislava 7, [www.dataprotection.gov.sk](http://www.dataprotection.gov.sk/).\n\n## Minisústredenia\n\nV súvislosti s organizovaním minisústredení spracúva OZ STROM osobné údaje žiakov (účastníkov) zapojených do minisústredenia.\n\n### Aké osobné údaje OZ STROM spracúva?\n\nV súvislosti s minisústredeniami spracúvame tieto osobné údaje účastníkov: meno, priezvisko, pohlavie, škola a trieda, ktoré žiak navštevuje. Tieto údaje nám poskytuje učiteľ, ktorý si u nás Minisústredenie objednáva prostredníctvom e-mailu. Ďalej spracovávame tieto osobné údaje osoby (spravidla učiteľa), ktorý minisústredenie objednáva: meno, priezvisko, e-mail a telefónne číslo.\n\n### Prečo potrebujeme vaše osobné údaje?\n\nPrávnym základom na spracovanie osobných údajov je realizácia zmluvného vzťahu -- údaje potrebujeme na zabezpečenie minisústredenia. Poskytnutie údajov vo vyššie uvedenom rozsahu je povinné, pretože inak by sme s účastníkmi a učiteľom nevedeli komunikovať a prispôsobiť program vekovému profilu účastníkov.\n\n### Na aké účely sa osobné údaje používajú?\n\nOsobné údaje riešiteľov sú používané na identifikáciu účastníka počas minisústredenia a na kontakt s objednávateľom. Údaj o škole a triede nám slúžia na posúdenie predpokladaných vedomostí žiakov pri zostavovaní programu.\n\n### Komu poskytneme vaše osobné údaje?\n\nÚdaje neposkytujeme tretím stranám. Osobné údaje skladujeme prostredníctvom služby GSuite(https://gsuite.google.com/terms/dpa_terms.html) a pri spracovaní môže dochádzať k prenosu osobných údajov do krajín mimo EÚ. Tento prenos spĺňa požiadavky normy PrivacyShield.\n\n### Ako dlho spracovávame vaše osobné údaje?\n\nOsobné údaje o účastníkoch spracovávame iba po dobu trvania minisústredenia. Kontakt na objednávateľa archivujeme po dobu najviac 2 rokov pre prípad ďalšej spolupráce.\n\n### Aké sú vaše práva v súvislosti s vašimi osobnými údajmi?\n\n- Máte právo na informáciu, aké údaje o vás spracovávame, máte právo na ich prenos, môžete požiadať o nahliadnutie do údajov a o ich opravu.\n\n- Máte právo na výmaz osobných údajov, keď prestane byť potrebné ich spracovanie.\n\n- Máte právo namietať voči spracovaniu osobných údajov, ktoré spracúvame. Každú podanú námietku vyhodnotíme a o výsledku vás budeme informovať.\n\n- Máte právo na obmedzenie spracovania osobných údajov -- v priebehu rozhodovania o námietke môžete požiadať o obmedzenie spracovania. Až do vyhodnotenia námietky nebudú vaše údaje používané (t.j. nebudeme sa s vami kontaktovať).\n\n- Ak sa nám nepodarilo uspokojivo vyriešiť vaše otázky alebo námietky v oblasti ochrany osobných údajov, môžete podať návrh na začatie konania na Úrad na ochranu osobných údajov SR, Hraničná 12, 820 07 Bratislava 7, [www.dataprotection.gov.sk](http://www.dataprotection.gov.sk/).\n\n## Online súťaže a aktivity pre jednotlivcov\n\nV súvislosti s organizovaním online súťaží a aktivít pre jednotlivcov spracúva OZ STROM osobné údaje účastníkov a ich zákonných zástupcov.\n\n### Aké osobné údaje OZ STROM spracúva?\n\nV súvislosti s online súťažou a aktivitami pre jednotlivcov spracúvame tieto osobné údaje účastníkov: meno, priezvisko, škola a ročník, ktoré žiak navštevuje, a e-mail. Ďalej spracúvame tieto osobné údaje rodiča (resp. zákonného zástupcu) účastníka: meno, priezvisko a e-mail. Tieto údaje nám poskytuje registrujúca osoba pri prihlásení do súťaže.\n\n### Prečo potrebujeme vaše osobné údaje?\n\nPrávnym základom na spracovanie osobných údajov je realizácia zmluvného vzťahu. Poskytnutie údajov vo vyššie uvedenom rozsahu je povinné, pretože údaje potrebujeme na organizačné zabezpečenie súťaže alebo aktivity.\n\n### Na aké účely sa osobné údaje používajú?\n\nÚdaje účastníka (a prípadne aj zákonného zástupcu) potrebujeme na komunikáciu s účastníkom pre účely distribúcie organizačných pokynov a zaslania ocenení. Meno, priezvisko, školu a ročník použijeme na zaradenie v rámci súťaže alebo aktivity, vypísanie diplomov a na zverejnenie výsledkovej listiny.\n\n### Komu poskytneme vaše osobné údaje?\n\nÚdaje neposkytujeme tretím stranám. Osobné údaje skladujeme prostredníctvom služby GSuite (https://gsuite.google.com/terms/dpa_terms.html) a pri spracovaní môže dochádzať k prenosu osobných údajov do krajín mimo EÚ. Tento prenos spĺňa požiadavky normy PrivacyShield.\n\n### Ako dlho spracovávame vaše osobné údaje?\n\nÚdaje o účastníkoch uchovávame po obdobie 2 rokov pre ich možné zapojenie do ďalších ročníkov. Údaje vo výsledkovej listine sú zverejnené na neobmedzený čas.\n\n### Aké sú vaše práva v súvislosti s vašimi osobnými údajmi?\n\n- Máte právo na informáciu, aké údaje o vás spracovávame, máte právo na ich prenos, môžete požiadať o nahliadnutie do údajov a o ich opravu.\n\n- Máte právo na výmaz osobných údajov, keď prestane byť potrebné ich spracovanie.\n\n- Máte právo namietať voči spracovaniu osobných údajov, ktoré spracúvame. Každú podanú námietku vyhodnotíme a o výsledku vás budeme informovať.\n\n- Máte právo na obmedzenie spracovania osobných údajov -- v priebehu rozhodovania o námietke môžete požiadať o obmedzenie spracovania. Až do vyhodnotenia námietky nebudú vaše údaje používané (t.j. nebudeme sa s vami kontaktovať).\n\n- Ak sa nám nepodarilo uspokojivo vyriešiť vaše otázky alebo námietky v oblasti ochrany osobných údajov, môžete podať návrh na začatie konania na Úrad na ochranu osobných údajov SR, Hraničná 12, 820 07 Bratislava 7, [www.dataprotection.gov.sk](http://www.dataprotection.gov.sk/).\n\n## Newsletter\n\nV súvislosti s informovaním o svojich aktivitách prostredníctvom newslettra spracúva OZ STROM osobné údaje účastníkov akcií, ktoré organizuje, ich zákonných zástupcov a učiteľov.\n\n### Aké osobné údaje OZ STROM spracúva?\n\nV súvislosti s využívaním newslettra spracúvame tieto osobné údaje: meno, priezvisko, škola, e-mail a postavenie osoby voči OZ STROM. Tieto údaje nám poskytuje registrujúca osoba pri prihlásení k odberu newslettra.\n\n### Prečo potrebujeme vaše osobné údaje?\n\nPrávnym základom na spracovanie osobných údajov je realizácia zmluvného vzťahu. Poskytnutie údajov vo vyššie uvedenom rozsahu je povinné, pretože údaje potrebujeme na cielené rozosielanie informácií o našich aktivitách.\n\n### Na aké účely sa osobné údaje používajú?\n\nÚdaje potrebujeme na komunikáciu s osobou, ktorá nám ich poskytla. Meno a priezvisko využívame na personalizáciu e-mail a vyhodnocovanie účelnosti emailu.\n\n### Komu poskytneme vaše osobné údaje?\n\nOsobné údaje skladujeme prostredníctvom služby Mailchimp. Táto služba spĺňa podmienky spracovania osobných údajov podľa platných regulácií EÚ (https://mailchimp.com/legal/data-processing-addendum/#Annex_C_-_Standard_Contractual_Clauses).\n\n### Ako dlho spracovávame vaše osobné údaje?\n\nOsobné údaje o používateľoch spracovávame po dobu, kým sú registrovaní v newslettri.\n\n### Aké sú vaše práva v súvislosti s vašimi osobnými údajmi?\n\n- Máte právo na informáciu, aké údaje o vás spracovávame, máte právo na ich prenos, môžete požiadať o nahliadnutie do údajov a o ich opravu.\n\n- Máte právo na výmaz osobných údajov, keď prestane byť potrebné ich spracovanie.\n\n- Máte právo namietať voči spracovaniu osobných údajov, ktoré spracúvame. Každú podanú námietku vyhodnotíme a o výsledku vás budeme informovať.\n\n- Máte právo na obmedzenie spracovania osobných údajov -- v priebehu rozhodovania o námietke môžete požiadať o obmedzenie spracovania. Až do vyhodnotenia námietky nebudú vaše údaje používané (t.j. nebudeme sa s vami kontaktovať).\n\n- Ak sa nám nepodarilo uspokojivo vyriešiť vaše otázky alebo námietky v oblasti ochrany osobných údajov, môžete podať návrh na začatie konania na Úrad na ochranu osobných údajov SR, Hraničná 12, 820 07 Bratislava 7, [www.dataprotection.gov.sk](http://www.dataprotection.gov.sk/).\n\n## Členstvo v združení\n\nV súvislosti s evidenciou členov združenia STROM spracúva OZ STROM osobné údaje členov.\n\n### Aké osobné údaje OZ STROM spracúva?\n\nV súvislosti s evidenciou členov spracúvame tieto osobné údaje: meno, priezvisko, e-mail, telefónne číslo, login na stránke [strom.sk](http://strom.sk/) a dátum narodenia. V prípade, že člen združenia nedovŕšil 18 rokov spracuvávame aj meno jeho zákonného zástupcu.\n\n### Prečo potrebujeme vaše osobné údaje?\n\nPrávnym základom na spracovanie osobných údajov je realizácia zmluvného vzťahu. Poskytnutie údajov vo vyššie uvedenom rozsahu je povinné, pretože údaje slúžia k evidencii členov združenia.\n\n### Na aké účely sa osobné údaje používajú?\n\nÚdaje členov používame na komunikáciu vnútri združenia a na prideľovanie prístupov do interných aplikácií. Dátum narodenia spracovávame z dôvodu identifikácie osôb s volebným právom na valnom zhromaždení. Údaje evidujeme iba interne a zverejňujeme iba údaje vyšších funkcionárov v združení (členovia rady združenia a predseda združenia).\n\n### Komu poskytneme vaše osobné údaje?\n\nÚdaje s výnimkou štatutárnych zástupcov a členov rady združenia neposkytujeme tretím stranám. V prípade členov rady združenia a štatutárnych zástupcov združenia poskytujeme údaje príslušným štátnym orgánom, bankovému ústavu, v ktorom má združenie vedený účet a iným inštitúciám, s ktorými združenie komunikuje.\n\nOsobné údaje skladujeme prostredníctvom služby GSuite (https://gsuite.google.com/terms/dpa_terms.html) a pri spracovaní môže dochádzať k prenosu osobných údajov do krajín mimo EÚ. Tento prenos spĺňa požiadavky normy PrivacyShield.\n\n### Ako dlho spracovávame vaše osobné údaje?\n\nÚdaje členov združenia uchovávame počas celej doby členstva v združení a rok po ukončení členstva.\n\n### Aké sú vaše práva v súvislosti s vašimi osobnými údajmi?\n\n- Máte právo na informáciu, aké údaje o vás spracovávame, máte právo na ich prenos, môžete požiadať o nahliadnutie do údajov a o ich opravu.\n\n- Máte právo na výmaz osobných údajov, keď prestane byť potrebné ich spracovanie.\n\n- Máte právo namietať voči spracovaniu osobných údajov, ktoré spracúvame. Každú podanú námietku vyhodnotíme a o výsledku vás budeme informovať.\n\n- Máte právo na obmedzenie spracovania osobných údajov -- v priebehu rozhodovania o námietke môžete požiadať o obmedzenie spracovania. Až do vyhodnotenia námietky nebudú vaše údaje používané (t.j. nebudeme sa s vami kontaktovať).\n\n- Ak sa nám nepodarilo uspokojivo vyriešiť vaše otázky alebo námietky v oblasti ochrany osobných údajov, môžete podať návrh na začatie konania na Úrad na ochranu osobných údajov SR, Hraničná 12, 820 07 Bratislava 7, [www.dataprotection.gov.sk](http://www.dataprotection.gov.sk/).\n\nV prípade akýchkoľvek otázok alebo námietok voči spracovávaniu osobných údajov nás kontaktujte na [info@strom.sk](mailto:info@strom.sk).\n\nPosledná úprava: 29.9.2021" } }, { - "model": "flatpages.flatpage", + "model": "cms.FlatPage", "pk": 2, "fields": { "url": "minisustredenia", "title": "Minisústredenia", - "content": "Združenie Strom už poznáte vďaka dlhoročnej tradícií matematických súťaží, akými sú Mamut, Lomihlav alebo Matboj. Okrem nich Strom organizuje aj mnoho iných aktivít zameraných na popularizáciu matematiky a prípravu talentovaných žiakov na Matematické olympiády. Z našich aktivít majú výrazne najväčší vplyv na žiakov matematické sústredenia, na ktoré sú za odmenu pozývaní najúspešnejší riešitelia našich súťaží. Naším cieľom je zaujať krásou matematiky čo najviac žiakov, avšak máme pocit, že obchádzame veľkú skupinu žiakov, ktorí neriešia naše semináre. Preto by sme radi niektoré zážitkové a vzdelávacie aktivity, ktoré robíme, priniesli trošku bližšie aj k tejto skupine žiakov, v podobe krátkeho matematického sústredenia priamo na Školách.\n\nV spolupráci so školami organizujeme 1 alebo 2-dňové matematické sústredenia pre 20 až 40 žiakov 6. - 9. ročníka. Sústredenia prebiehajú priamo v priestoroch školy počas vyučovania približne od 8:00 do 15:00 hod. \nProgram zahŕňa rôzne aktivity, ktoré sú hravou formou zamerané na matematiku, rozvíjanie logického myslenia a tímovú prácu. Podrobný program nájdete nižšie. Cena za sústredenie pre jedného účastníka je 6,00€ za dvojdňové sústredenie, 4,00€ za jednodňové (dvojdňové však preferujeme). Ak máte záujem o takéto sústredenie na vašej škole, kontaktujte nás prosím na [minisustredenia@strom.sk](mailto:minisustredenia@strom.sk)\n\n### Program sústredenia\n\nKaždý deň sústredenia bude má nasledovný priebeh:\n\n|**čas**|**program**|\n|:--:|:--:|\n|**8:00 - 10:00**|**prednášky**|\n|**10:00 - 11:00**|**matboj**|\n|**11:00 - 12:00**|**športy**|\n|**12:00 - 12:30**|**obed**|\n|**12:30 - 14:30**|**náboj/hra**|\n\n\nČasy sú orientačné a medzi aktivitami budú krátke prestávky.\n\n### Podrobnejší popis jednotlivých aktivít\n\n- **Prednášky:** Úlohou prednášok je uviesť žiakov do nových častí matematiky. Cieľom tohto programu je ukázať žiakom niečo pekné a zaujímavé v matematike a nechať ich danú problematiku skúmať a objavovať. Na každý deň sústredenia máme prichystané 2 témy, to znamená, že za dvojdňové sústredenie deťom ukážeme 4 rôzne témy, ktoré sa so školskými rokmi obmieňajú. Tieto témy sú podávané deťom vhodnou formou vzhľadom na ich vedomosti.\n- **Matboj:** Ide o logickú hru, ktorej pravidlá sú účastníkom vysvetlené pred začiatkom. Následne prebieha v tejto logickej hre súťaž jednotlivcov. Matboj je veľmi populárnou aktivitou, pretože účastníkom prináša nový druh zábavy, ktorým si často krátia aj svoj voľný čas a navyše, šancu vyhrať má každý, keďže všetci začínajú na rovnakej úrovni. Ten, ktorému sa bude v súťaži dariť najviac, neostane bez odmeny.\n- **Športy:** Aby si žiaci oddýchli od matematiky, zahrajú si netradičné športy, v ktorých je treba využívať okrem fyzickej sily a šikovnosti aj strategické či logické myslenie.\n- **Obed:** Tento program nie je nič špeciálne, no ak je to možné, radi by sme obedovali spolu so žiakmi v školskej jedálni. Detaily ako počet obedov a čas obedu by sme si potom dohodli pri ďalšej komunikácii - budeme vďační, ak nám obedy zabezpečíte.\n- **Náboj:** Náboj je matematická súťaž, v ktorej tímy riešia pripravenú sadu príkladov. Tradične má táto súťaž pridaný rozmer, ktorý tvorí motiváciu pre riešenie príkladov, a je v podstate paralelne prebiehajúcou hrou, v ktorej správne vyriešené príklady predstavujú kľúč k úspechu (napr. body za vyriešené príklady budú predstavovať platidlo). Tímový duch a charakteristický zážitkový rozmer tejto osvedčenej hry rok čo rok presviedča deti, že aj riešenie príkladov môže byť nezvyčajnou zábavou.\n- **Hra:** Poobedná hra prináša účastníkom možnosť sa angažovať v tímoch využívajúc svoje poznatky a vedomosti. Vzájomné súperenie medzi skupinkami účastníkov sa nikdy nezaobíde bez zábavy a strategického premýšľania, predsa zvíťaziť chce každý.\n\n### Naše požiadavky\n\nK tomu, aby sme mohli minisústredenie zorganizovať na vašej škole, potrebujeme nasledovné:\n\n- aspoň 2 voľné triedy alebo iné adekvátne miestnosti, ktoré budú k dispozícii počas celých dní minisústredenia\n- prístup k ihrisku alebo inej adekvátnej vonkajšej ploche\n- miestnosť menších rozmerov na uskladnenie našich vecí sa zíde, avšak nie je nevyhnutnosťou\n- radi by sme každý deň vyplnili úplným programom, neradi skracujeme niektoré z jeho častí, program tak prichádza o kvalitu\n- budeme vďační za obedy pre organizátorov", - "enable_comments": false, - "template_name": "", - "registration_required": false, - "sites": [ - 1, - 2 - ] + "content": "Združenie Strom už poznáte vďaka dlhoročnej tradícií matematických súťaží, akými sú Mamut, Lomihlav alebo Matboj. Okrem nich Strom organizuje aj mnoho iných aktivít zameraných na popularizáciu matematiky a prípravu talentovaných žiakov na Matematické olympiády. Z našich aktivít majú výrazne najväčší vplyv na žiakov matematické sústredenia, na ktoré sú za odmenu pozývaní najúspešnejší riešitelia našich súťaží. Naším cieľom je zaujať krásou matematiky čo najviac žiakov, avšak máme pocit, že obchádzame veľkú skupinu žiakov, ktorí neriešia naše semináre. Preto by sme radi niektoré zážitkové a vzdelávacie aktivity, ktoré robíme, priniesli trošku bližšie aj k tejto skupine žiakov, v podobe krátkeho matematického sústredenia priamo na Školách.\n\nV spolupráci so školami organizujeme 1 alebo 2-dňové matematické sústredenia pre 20 až 40 žiakov 6. - 9. ročníka. Sústredenia prebiehajú priamo v priestoroch školy počas vyučovania približne od 8:00 do 15:00 hod. \nProgram zahŕňa rôzne aktivity, ktoré sú hravou formou zamerané na matematiku, rozvíjanie logického myslenia a tímovú prácu. Podrobný program nájdete nižšie. Cena za sústredenie pre jedného účastníka je 6,00€ za dvojdňové sústredenie, 4,00€ za jednodňové (dvojdňové však preferujeme). Ak máte záujem o takéto sústredenie na vašej škole, kontaktujte nás prosím na [minisustredenia@strom.sk](mailto:minisustredenia@strom.sk)\n\n### Program sústredenia\n\nKaždý deň sústredenia bude má nasledovný priebeh:\n\n|**čas**|**program**|\n|:--:|:--:|\n|**8:00 - 10:00**|**prednášky**|\n|**10:00 - 11:00**|**matboj**|\n|**11:00 - 12:00**|**športy**|\n|**12:00 - 12:30**|**obed**|\n|**12:30 - 14:30**|**náboj/hra**|\n\n\nČasy sú orientačné a medzi aktivitami budú krátke prestávky.\n\n### Podrobnejší popis jednotlivých aktivít\n\n- **Prednášky:** Úlohou prednášok je uviesť žiakov do nových častí matematiky. Cieľom tohto programu je ukázať žiakom niečo pekné a zaujímavé v matematike a nechať ich danú problematiku skúmať a objavovať. Na každý deň sústredenia máme prichystané 2 témy, to znamená, že za dvojdňové sústredenie deťom ukážeme 4 rôzne témy, ktoré sa so školskými rokmi obmieňajú. Tieto témy sú podávané deťom vhodnou formou vzhľadom na ich vedomosti.\n- **Matboj:** Ide o logickú hru, ktorej pravidlá sú účastníkom vysvetlené pred začiatkom. Následne prebieha v tejto logickej hre súťaž jednotlivcov. Matboj je veľmi populárnou aktivitou, pretože účastníkom prináša nový druh zábavy, ktorým si často krátia aj svoj voľný čas a navyše, šancu vyhrať má každý, keďže všetci začínajú na rovnakej úrovni. Ten, ktorému sa bude v súťaži dariť najviac, neostane bez odmeny.\n- **Športy:** Aby si žiaci oddýchli od matematiky, zahrajú si netradičné športy, v ktorých je treba využívať okrem fyzickej sily a šikovnosti aj strategické či logické myslenie.\n- **Obed:** Tento program nie je nič špeciálne, no ak je to možné, radi by sme obedovali spolu so žiakmi v školskej jedálni. Detaily ako počet obedov a čas obedu by sme si potom dohodli pri ďalšej komunikácii - budeme vďační, ak nám obedy zabezpečíte.\n- **Náboj:** Náboj je matematická súťaž, v ktorej tímy riešia pripravenú sadu príkladov. Tradične má táto súťaž pridaný rozmer, ktorý tvorí motiváciu pre riešenie príkladov, a je v podstate paralelne prebiehajúcou hrou, v ktorej správne vyriešené príklady predstavujú kľúč k úspechu (napr. body za vyriešené príklady budú predstavovať platidlo). Tímový duch a charakteristický zážitkový rozmer tejto osvedčenej hry rok čo rok presviedča deti, že aj riešenie príkladov môže byť nezvyčajnou zábavou.\n- **Hra:** Poobedná hra prináša účastníkom možnosť sa angažovať v tímoch využívajúc svoje poznatky a vedomosti. Vzájomné súperenie medzi skupinkami účastníkov sa nikdy nezaobíde bez zábavy a strategického premýšľania, predsa zvíťaziť chce každý.\n\n### Naše požiadavky\n\nK tomu, aby sme mohli minisústredenie zorganizovať na vašej škole, potrebujeme nasledovné:\n\n- aspoň 2 voľné triedy alebo iné adekvátne miestnosti, ktoré budú k dispozícii počas celých dní minisústredenia\n- prístup k ihrisku alebo inej adekvátnej vonkajšej ploche\n- miestnosť menších rozmerov na uskladnenie našich vecí sa zíde, avšak nie je nevyhnutnosťou\n- radi by sme každý deň vyplnili úplným programom, neradi skracujeme niektoré z jeho častí, program tak prichádza o kvalitu\n- budeme vďační za obedy pre organizátorov" } }, { - "model": "flatpages.flatpage", + "model": "cms.FlatPage", "pk": 3, "fields": { "url": "podporte-nas", "title": "Podporte nás", - "content": "Dajte nám peniažky pls", - "enable_comments": false, - "template_name": "", - "registration_required": false, - "sites": [ - 0, - 1, - 2 - ] + "content": "Dajte nám peniažky pls" } }, { - "model": "flatpages.flatpage", + "model": "cms.FlatPage", "pk": 4, "fields": { "url": "kontakty", "title": "Kontakty", - "content": "Nas mail je info@strom.sk", - "enable_comments": false, - "template_name": "", - "registration_required": false, - "sites": [ - 0, - 1, - 2 - ] + "content": "Nas mail je info@strom.sk" } }, { - "model": "flatpages.flatpage", + "model": "cms.FlatPage", "pk": 5, "fields": { "url": "ako-riesit", "title": "Ako získať 9 bodov", - "content": "Tu pribudnú tipy, ako riešiť a získať 9 bodov.", - "enable_comments": false, - "template_name": "", - "registration_required": false, - "sites": [ - 0, - 1, - 2 - ] + "content": "Tu pribudnú tipy, ako riešiť a získať 9 bodov." } } ] \ No newline at end of file diff --git a/cms/migrations/0001_initial.py b/cms/migrations/0001_initial.py index 98a0ea83..3c8ab8be 100644 --- a/cms/migrations/0001_initial.py +++ b/cms/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 4.2.13 on 2024-06-10 20:10 +# Generated by Django 4.2.16 on 2024-11-24 11:59 import base.models from django.db import migrations, models @@ -10,10 +10,26 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ('sites', '0002_alter_domain_unique'), + ('base', '0001_initial'), ] operations = [ + migrations.CreateModel( + name='FileUpload', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('file', models.FileField(upload_to='uploads/')), + ], + ), + migrations.CreateModel( + name='FlatPage', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('url', models.SlugField(max_length=100, unique=True, verbose_name='url')), + ('title', models.CharField(max_length=200, verbose_name='title')), + ('content', models.TextField(blank=True, verbose_name='content')), + ], + ), migrations.CreateModel( name='InfoBanner', fields=[ @@ -64,7 +80,7 @@ class Migration(migrations.Migration): ('short_text', models.CharField(help_text='Krátky 1-2 vetový popis.', max_length=200, verbose_name='krátky text')), ('details', models.TextField(blank=True, help_text='Dlhší text, ktorý sa zobrazí po rozkliknutí.', verbose_name='podrobnosti k príspevku')), ('added_at', models.DateTimeField(auto_now_add=True, verbose_name='pridané')), - ('sites', models.ManyToManyField(to='sites.site')), + ('sites', models.ManyToManyField(to='base.site')), ], options={ 'verbose_name': 'príspevok', @@ -90,11 +106,11 @@ class Migration(migrations.Migration): fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('caption', models.CharField(help_text='Nápis, ktorý sa zobrazí v menu. Maximálne 2 slová.', max_length=25, verbose_name='názov')), - ('url', models.CharField(help_text='URL stránky kam má preklik viesť', max_length=100, verbose_name='URL')), + ('url', models.TextField(help_text='URL stránky kam má preklik viesť', verbose_name='URL')), ('priority', models.SmallIntegerField(help_text='Priorita, čím väčšie, tým vyššie v menu.', verbose_name='priorita')), ('in_footer', models.BooleanField(default=False, verbose_name='Je v pätičke')), ('in_menu', models.BooleanField(default=True, verbose_name='Je v menu')), - ('sites', models.ManyToManyField(to='sites.site')), + ('sites', models.ManyToManyField(to='base.site')), ], options={ 'verbose_name': 'položka v menu', diff --git a/cms/migrations/0002_initial.py b/cms/migrations/0002_initial.py index 22145826..a7e81ee2 100644 --- a/cms/migrations/0002_initial.py +++ b/cms/migrations/0002_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 4.2.13 on 2024-06-10 20:10 +# Generated by Django 4.2.16 on 2024-11-24 11:59 from django.db import migrations, models import django.db.models.deletion @@ -9,7 +9,6 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ('flatpages', '0001_initial'), ('competition', '0001_initial'), ('cms', '0001_initial'), ] @@ -28,7 +27,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name='infobanner', name='page', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='flatpages.flatpage'), + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='cms.flatpage'), ), migrations.AddField( model_name='infobanner', diff --git a/cms/migrations/0003_alter_menuitem_url.py b/cms/migrations/0003_alter_menuitem_url.py deleted file mode 100644 index 94c99753..00000000 --- a/cms/migrations/0003_alter_menuitem_url.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 4.2.15 on 2024-11-23 19:43 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('cms', '0002_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='menuitem', - name='url', - field=models.TextField(help_text='URL stránky kam má preklik viesť', verbose_name='URL'), - ), - ] diff --git a/cms/models.py b/cms/models.py index 65d6e410..eb33bd1e 100644 --- a/cms/models.py +++ b/cms/models.py @@ -1,10 +1,8 @@ -from django.contrib.flatpages.models import FlatPage -from django.contrib.sites.models import Site from django.core.exceptions import ValidationError from django.db import models from django.utils.timezone import now -from base.models import RestrictedFileField +from base.models import RestrictedFileField, Site from competition.models import Event, Series from .querysets import VisibilityQuerySet @@ -25,6 +23,17 @@ class Meta: abstract = True +class FlatPage(models.Model): + """Statická stránka""" + + url = models.SlugField("url", max_length=100, unique=True) + title = models.CharField("title", max_length=200) + content = models.TextField("content", blank=True) + + def __str__(self): + return f"{self.url} - {self.title}" + + class MessageTemplate(models.Model): class Meta: verbose_name = 'Generické správy pre banner a posty' diff --git a/cms/serializers.py b/cms/serializers.py index 41a0aa8e..24dc6425 100644 --- a/cms/serializers.py +++ b/cms/serializers.py @@ -4,7 +4,7 @@ from cms import models -from .models import FileUpload +from .models import FileUpload, FlatPage @ts_interface(context='cms') @@ -57,3 +57,9 @@ class FileUploadSerializer(serializers.ModelSerializer): class Meta: model = FileUpload fields = ('id', 'file') + + +class FlatPageSerializer(serializers.ModelSerializer): + class Meta: + model = FlatPage + fields = ('id', 'url', 'title', 'content') diff --git a/cms/urls.py b/cms/urls.py index 6a7270de..683f20a7 100644 --- a/cms/urls.py +++ b/cms/urls.py @@ -1,7 +1,8 @@ from rest_framework.routers import DefaultRouter -from .views import (FileUploadViewSet, InfoBannerViewSet, LogoViewSet, - MenuItemViewSet, MessageTemplateViewSet, PostViewSet) +from .views import (FileUploadViewSet, FlatPageViewSet, InfoBannerViewSet, + LogoViewSet, MenuItemViewSet, MessageTemplateViewSet, + PostViewSet) router = DefaultRouter() @@ -11,6 +12,8 @@ router.register('message-template', MessageTemplateViewSet) router.register('logo', LogoViewSet) router.register('uploads', FileUploadViewSet) +router.register('flat-page', FlatPageViewSet) app_name = 'cms' + urlpatterns = router.urls diff --git a/cms/views.py b/cms/views.py index af9bf26d..71eeed85 100644 --- a/cms/views.py +++ b/cms/views.py @@ -5,14 +5,17 @@ from django.utils.timezone import now from rest_framework import viewsets from rest_framework.decorators import action +from rest_framework.exceptions import NotFound from rest_framework.request import Request from rest_framework.response import Response -from cms.models import (FileUpload, InfoBanner, Logo, MenuItem, +from base.permissions import IsAdminOrReadOnly +from cms.models import (FileUpload, FlatPage, InfoBanner, Logo, MenuItem, MessageTemplate, Post) from cms.permissions import PostPermission -from cms.serializers import (FileUploadSerializer, InfoBannerSerializer, - LogoSerializer, MenuItemShortSerializer, +from cms.serializers import (FileUploadSerializer, FlatPageSerializer, + InfoBannerSerializer, LogoSerializer, + MenuItemShortSerializer, MessageTemplateSerializer, PostSerializer) from competition.models import Competition, Event, Series @@ -137,3 +140,19 @@ class MessageTemplateViewSet(viewsets.ModelViewSet): class FileUploadViewSet(viewsets.ModelViewSet): serializer_class = FileUploadSerializer queryset = FileUpload.objects.all() + + +class FlatPageViewSet(viewsets.ModelViewSet): + serializer_class = FlatPageSerializer + queryset = FlatPage.objects.all() + permission_classes = (IsAdminOrReadOnly,) + + @action(detail=False, methods=['get'], url_path='by-url/(?P.+)') + def by_url(self, request, slug): + try: + page = self.queryset.get(url=slug) + + return Response(FlatPageSerializer(page).data) + + except FlatPage.DoesNotExist as exc: + raise NotFound from exc diff --git a/competition/migrations/0001_initial.py b/competition/migrations/0001_initial.py index 2c58a262..014067b3 100644 --- a/competition/migrations/0001_initial.py +++ b/competition/migrations/0001_initial.py @@ -1,8 +1,9 @@ -# Generated by Django 4.2.13 on 2024-06-10 20:10 +# Generated by Django 4.2.16 on 2024-11-24 11:59 import base.models import base.validators import competition.models +import competition.utils.validations import django.core.files.storage import django.core.validators from django.db import migrations, models @@ -194,7 +195,7 @@ class Migration(migrations.Migration): ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('solution', base.models.RestrictedFileField(blank=True, storage=django.core.files.storage.FileSystemStorage(base_url='/protected/', location='/home/mihal/Documents/STROM/webstrom/webstrom-backend/protected_media/'), upload_to=competition.models.get_solution_path, verbose_name='účastnícke riešenie')), ('corrected_solution', base.models.RestrictedFileField(blank=True, storage=django.core.files.storage.FileSystemStorage(base_url='/protected/', location='/home/mihal/Documents/STROM/webstrom/webstrom-backend/protected_media/'), upload_to=competition.models.get_corrected_solution_path, verbose_name='opravené riešenie')), - ('score', models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='body')), + ('score', models.PositiveSmallIntegerField(blank=True, null=True, validators=[competition.utils.validations.validate_points], verbose_name='body')), ('vote', models.IntegerField(choices=[(-1, 'negatívny'), (0, 'žiaden'), (1, 'pozitívny')], default=0)), ('uploaded_at', models.DateTimeField(auto_now_add=True, verbose_name='dátum pridania')), ('is_online', models.BooleanField(default=False, verbose_name='internetové riešenie')), @@ -231,8 +232,8 @@ class Migration(migrations.Migration): ('best_solution', models.ManyToManyField(to='competition.solution', verbose_name='najkrajšie riešenia')), ], options={ - 'verbose_name': 'opravenie úlohy', - 'verbose_name_plural': 'opravene ulohy', + 'verbose_name': 'Opravenie úlohy', + 'verbose_name_plural': 'Opravené úlohy', }, ), ] diff --git a/competition/migrations/0002_initial.py b/competition/migrations/0002_initial.py index ba03d52b..329470de 100644 --- a/competition/migrations/0002_initial.py +++ b/competition/migrations/0002_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 4.2.13 on 2024-06-10 20:10 +# Generated by Django 4.2.16 on 2024-11-24 11:59 from django.conf import settings from django.db import migrations, models @@ -10,11 +10,11 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ('personal', '0002_initial'), ('competition', '0001_initial'), - ('sites', '0002_alter_domain_unique'), - ('auth', '0012_alter_user_first_name_max_length'), + ('base', '0001_initial'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('auth', '0012_alter_user_first_name_max_length'), + ('personal', '0002_initial'), ] operations = [ @@ -76,7 +76,7 @@ class Migration(migrations.Migration): migrations.AddField( model_name='competition', name='sites', - field=models.ManyToManyField(to='sites.site'), + field=models.ManyToManyField(to='base.site'), ), migrations.AddField( model_name='comment', diff --git a/competition/migrations/0003_alter_solution_corrected_solution_and_more.py b/competition/migrations/0003_alter_solution_corrected_solution_and_more.py deleted file mode 100644 index ff1fe788..00000000 --- a/competition/migrations/0003_alter_solution_corrected_solution_and_more.py +++ /dev/null @@ -1,29 +0,0 @@ -# Generated by Django 4.2.15 on 2024-11-23 19:43 - -import django.core.files.storage -from django.db import migrations - -import base.models -import competition.models - - -class Migration(migrations.Migration): - - dependencies = [ - ('competition', '0002_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='solution', - name='corrected_solution', - field=base.models.RestrictedFileField(blank=True, storage=django.core.files.storage.FileSystemStorage( - base_url='/protected/', location='C:\\Users\\petko\\Documents\\GitHub\\webstrom\\webstrom-backend\\protected_media/'), upload_to=competition.models.get_corrected_solution_path, verbose_name='opravené riešenie'), - ), - migrations.AlterField( - model_name='solution', - name='solution', - field=base.models.RestrictedFileField(blank=True, storage=django.core.files.storage.FileSystemStorage( - base_url='/protected/', location='C:\\Users\\petko\\Documents\\GitHub\\webstrom\\webstrom-backend\\protected_media/'), upload_to=competition.models.get_solution_path, verbose_name='účastnícke riešenie'), - ), - ] diff --git a/competition/migrations/0004_alter_problemcorrection_options_and_more.py b/competition/migrations/0004_alter_problemcorrection_options_and_more.py deleted file mode 100644 index 9ca62e2b..00000000 --- a/competition/migrations/0004_alter_problemcorrection_options_and_more.py +++ /dev/null @@ -1,30 +0,0 @@ -# Generated by Django 4.2.16 on 2024-11-23 22:54 - -import base.models -import competition.models -import django.core.files.storage -from django.db import migrations - - -class Migration(migrations.Migration): - - dependencies = [ - ('competition', '0003_alter_solution_corrected_solution_and_more'), - ] - - operations = [ - migrations.AlterModelOptions( - name='problemcorrection', - options={'verbose_name': 'Opravenie úlohy', 'verbose_name_plural': 'Opravené úlohy'}, - ), - migrations.AlterField( - model_name='solution', - name='corrected_solution', - field=base.models.RestrictedFileField(blank=True, storage=django.core.files.storage.FileSystemStorage(base_url='/protected/', location='/home/mihal/Documents/STROM/webstrom/webstrom-backend/protected_media/'), upload_to=competition.models.get_corrected_solution_path, verbose_name='opravené riešenie'), - ), - migrations.AlterField( - model_name='solution', - name='solution', - field=base.models.RestrictedFileField(blank=True, storage=django.core.files.storage.FileSystemStorage(base_url='/protected/', location='/home/mihal/Documents/STROM/webstrom/webstrom-backend/protected_media/'), upload_to=competition.models.get_solution_path, verbose_name='účastnícke riešenie'), - ), - ] diff --git a/competition/models.py b/competition/models.py index feebec44..d09ad79d 100644 --- a/competition/models.py +++ b/competition/models.py @@ -2,7 +2,6 @@ from typing import Optional from django.conf import settings -from django.contrib.sites.models import Site from django.core.exceptions import ValidationError from django.core.files.storage import FileSystemStorage from django.core.validators import validate_slug @@ -16,7 +15,7 @@ from unidecode import unidecode from base.managers import UnspecifiedValueManager -from base.models import RestrictedFileField +from base.models import RestrictedFileField, Site from base.validators import school_year_validator from competition.querysets import ActiveQuerySet from competition.utils.school_year_manipulation import \ @@ -103,10 +102,6 @@ def semester_set(self): def get_seminar_by_site(cls, site): return get_object_or_404(cls, sites=site, competition_type=0) - @classmethod - def get_seminar_by_current_site(cls): - return cls.get_seminar_by_site(Site.objects.get_current()) - def can_user_modify(self, user: User): return len(set(self.permission_group.all()).intersection(set(user.groups.all()))) > 0 diff --git a/personal/migrations/0001_initial.py b/personal/migrations/0001_initial.py index 66ae2f7b..a8d87221 100644 --- a/personal/migrations/0001_initial.py +++ b/personal/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 4.2.13 on 2024-06-10 20:10 +# Generated by Django 4.2.16 on 2024-11-24 11:59 import django.core.validators from django.db import migrations, models @@ -60,8 +60,8 @@ class Migration(migrations.Migration): ('first_name', models.CharField(max_length=150, verbose_name='krstné meno')), ('last_name', models.CharField(max_length=150, verbose_name='priezvisko')), ('year_of_graduation', models.PositiveSmallIntegerField(verbose_name='rok maturity')), - ('phone', models.CharField(blank=True, help_text='Telefonné číslo v medzinárodnom formáte (napr. +421 123 456 789).', max_length=32, validators=[django.core.validators.RegexValidator(message='Zadaj telefónne číslo vo formáte +421 123 456 789 alebo 0912 345 678.', regex='^(\\+\\d{1,3}\\d{9})$')], verbose_name='telefónne číslo')), - ('parent_phone', models.CharField(blank=True, help_text='Telefonné číslo v medzinárodnom formáte (napr. +421 123 456 789).', max_length=32, validators=[django.core.validators.RegexValidator(message='Zadaj telefónne číslo vo formáte +421 123 456 789 alebo 0912 345 678.', regex='^(\\+\\d{1,3}\\d{9})$')], verbose_name='telefónne číslo na rodiča')), + ('phone', models.CharField(blank=True, help_text='Telefonné číslo v medzinárodnom formáte (napr. +421 123 456 789).', max_length=32, null=True, validators=[django.core.validators.RegexValidator(message='Zadaj telefónne číslo vo formáte +421 123 456 789 alebo 0912 345 678.', regex='^(\\+\\d{1,3}\\d{9})$')], verbose_name='telefónne číslo')), + ('parent_phone', models.CharField(blank=True, help_text='Telefonné číslo v medzinárodnom formáte (napr. +421 123 456 789).', max_length=32, null=True, validators=[django.core.validators.RegexValidator(message='Zadaj telefónne číslo vo formáte +421 123 456 789 alebo 0912 345 678.', regex='^(\\+\\d{1,3}\\d{9})$')], verbose_name='telefónne číslo na rodiča')), ('school', models.ForeignKey(on_delete=models.SET(personal.models.unspecified_school), to='personal.school', verbose_name='škola')), ], options={ diff --git a/personal/migrations/0002_initial.py b/personal/migrations/0002_initial.py index 8778794b..0f513abc 100644 --- a/personal/migrations/0002_initial.py +++ b/personal/migrations/0002_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 4.2.13 on 2024-06-10 20:10 +# Generated by Django 4.2.16 on 2024-11-24 11:59 from django.conf import settings from django.db import migrations, models @@ -11,8 +11,8 @@ class Migration(migrations.Migration): initial = True dependencies = [ - ('personal', '0001_initial'), migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('personal', '0001_initial'), ] operations = [ diff --git a/personal/migrations/0003_alter_profile_parent_phone_alter_profile_phone.py b/personal/migrations/0003_alter_profile_parent_phone_alter_profile_phone.py deleted file mode 100644 index 6c734c9c..00000000 --- a/personal/migrations/0003_alter_profile_parent_phone_alter_profile_phone.py +++ /dev/null @@ -1,24 +0,0 @@ -# Generated by Django 4.2.15 on 2024-11-23 23:11 - -import django.core.validators -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('personal', '0002_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='profile', - name='parent_phone', - field=models.CharField(blank=True, help_text='Telefonné číslo v medzinárodnom formáte (napr. +421 123 456 789).', max_length=32, null=True, validators=[django.core.validators.RegexValidator(message='Zadaj telefónne číslo vo formáte +421 123 456 789 alebo 0912 345 678.', regex='^(\\+\\d{1,3}\\d{9})$')], verbose_name='telefónne číslo na rodiča'), - ), - migrations.AlterField( - model_name='profile', - name='phone', - field=models.CharField(blank=True, help_text='Telefonné číslo v medzinárodnom formáte (napr. +421 123 456 789).', max_length=32, null=True, validators=[django.core.validators.RegexValidator(message='Zadaj telefónne číslo vo formáte +421 123 456 789 alebo 0912 345 678.', regex='^(\\+\\d{1,3}\\d{9})$')], verbose_name='telefónne číslo'), - ), - ] diff --git a/problem_database/migrations/0001_initial.py b/problem_database/migrations/0001_initial.py deleted file mode 100644 index 186e8e6e..00000000 --- a/problem_database/migrations/0001_initial.py +++ /dev/null @@ -1,153 +0,0 @@ -# Generated by Django 4.2.11 on 2024-04-14 09:24 - -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - initial = True - - dependencies = [ - ] - - operations = [ - migrations.CreateModel( - name='Activity', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('date', models.DateField(verbose_name='dátum')), - ('description', models.TextField(verbose_name='popis')), - ('soft_deleted', models.BooleanField(default=False)), - ], - options={ - 'verbose_name': 'aktivita', - 'verbose_name_plural': 'aktivity', - }, - ), - migrations.CreateModel( - name='ActivityType', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=64, verbose_name='názov')), - ], - options={ - 'verbose_name': 'typ aktivity', - 'verbose_name_plural': 'typy aktivít', - }, - ), - migrations.CreateModel( - name='Difficulty', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=128, verbose_name='názov')), - ('activity_type', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='problem_database.activitytype', verbose_name='typ aktivity')), - ], - options={ - 'verbose_name': 'náročnosť', - 'verbose_name_plural': 'náročnosti', - }, - ), - migrations.CreateModel( - name='Problem', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('problem', models.TextField(verbose_name='príklad')), - ('result', models.CharField(max_length=128, verbose_name='výsledok')), - ('solution', models.TextField(verbose_name='riešenie')), - ('soft_deleted', models.BooleanField(default=False)), - ], - options={ - 'verbose_name': 'príklad', - 'verbose_name_plural': 'príklady', - }, - ), - migrations.CreateModel( - name='Seminar', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=32, verbose_name='názov seminára')), - ], - options={ - 'verbose_name': 'seminár', - 'verbose_name_plural': 'semináre', - }, - ), - migrations.CreateModel( - name='Tag', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=64, verbose_name='názov tagu')), - ], - options={ - 'verbose_name': 'tag', - 'verbose_name_plural': 'tagy', - }, - ), - migrations.CreateModel( - name='ProblemType', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('name', models.CharField(max_length=64, verbose_name='názov')), - ('description', models.TextField(verbose_name='popis')), - ('seminar', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='problem_database.seminar', verbose_name='seminár')), - ], - options={ - 'verbose_name': 'typ príkladu', - 'verbose_name_plural': 'typy príkladov', - }, - ), - migrations.CreateModel( - name='ProblemTag', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('problem', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='problem_database.problem', verbose_name='príklad')), - ('tag', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='problem_database.tag', verbose_name='aktivita')), - ], - options={ - 'verbose_name': 'priradenie príkladu k tagu', - 'verbose_name_plural': 'priradenia príkladov k tagom', - }, - ), - migrations.CreateModel( - name='ProblemActivity', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('activity', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='problem_database.activity', verbose_name='aktivita')), - ('difficulty', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='problem_database.difficulty', verbose_name='náročnosť')), - ('problem', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='problem_database.problem', verbose_name='príklad')), - ], - options={ - 'verbose_name': 'priradenie problému k aktivite/obtiežnosti', - 'verbose_name_plural': 'priradenie problémov k aktivitám/obtiažnostiam', - }, - ), - migrations.AddField( - model_name='problem', - name='problem_type', - field=models.ManyToManyField(to='problem_database.problemtype'), - ), - migrations.CreateModel( - name='Media', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('data', models.ImageField(upload_to='', verbose_name='priložené súbory')), - ('soft_deleted', models.BooleanField(default=False)), - ('problem', models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='problem_database.problem', verbose_name='príklad')), - ], - options={ - 'verbose_name': 'súbor', - 'verbose_name_plural': 'súbory', - }, - ), - migrations.AddField( - model_name='activitytype', - name='seminar', - field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='problem_database.seminar', verbose_name='seminár'), - ), - migrations.AddField( - model_name='activity', - name='activity_type', - field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, to='problem_database.activitytype', verbose_name='typ aktivity'), - ), - ] diff --git a/user/migrations/0001_initial.py b/user/migrations/0001_initial.py index 34e75912..b27bac12 100644 --- a/user/migrations/0001_initial.py +++ b/user/migrations/0001_initial.py @@ -1,4 +1,4 @@ -# Generated by Django 4.2.13 on 2024-06-10 20:10 +# Generated by Django 4.2.16 on 2024-11-24 11:59 import django.contrib.auth.models from django.db import migrations, models diff --git a/webstrom/settings.py b/webstrom/settings.py index 1811890f..d5618325 100644 --- a/webstrom/settings.py +++ b/webstrom/settings.py @@ -19,8 +19,6 @@ 'https://localhost:3000' ] -SITE_ID = 1 - # Application definition DJANGO_APPS = [ @@ -30,8 +28,6 @@ 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', - 'django.contrib.sites', - 'django.contrib.flatpages', ] THIRD_PARTY_APPS = [ @@ -55,7 +51,6 @@ INSTALLED_APPS = DJANGO_APPS + THIRD_PARTY_APPS + LOCAL_APPS -SITE_ID = 1 MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', @@ -64,7 +59,6 @@ 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', - 'django.contrib.sites.middleware.CurrentSiteMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'allauth.account.middleware.AccountMiddleware', ]