From 3683f943a67a304fcd82693de42f2649f2ef1db6 Mon Sep 17 00:00:00 2001 From: Dominic Date: Fri, 28 Mar 2025 21:45:27 -0400 Subject: [PATCH] api --- api/__init__.py | 0 api/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 139 bytes api/__pycache__/admin.cpython-312.pyc | Bin 0 -> 183 bytes api/__pycache__/apps.cpython-312.pyc | Bin 0 -> 439 bytes api/__pycache__/models.cpython-312.pyc | Bin 0 -> 180 bytes api/admin.py | 3 + api/apps.py | 6 + api/migrations/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 150 bytes api/models.py | 3 + .../__pycache__/event.cpython-312.pyc | Bin 0 -> 675 bytes api/serializers/event.py | 10 ++ api/views/__pycache__/event.cpython-312.pyc | Bin 0 -> 5310 bytes api/views/event.py | 112 ++++++++++++++++++ .../build_response.cpython-312.pyc | Bin 0 -> 1173 bytes common/build_response.py | 30 +++++ db.sqlite3 | Bin 147456 -> 208896 bytes korabo/settings.py | 4 +- korabo/urls.py | 5 + requests/event_post.py | 21 ++++ requests/event_put.py | 20 ++++ requirements.txt | 6 + web/admin.py | 17 ++- web/migrations/0001_initial.py | 78 +++++++++++- .../0002_alter_availability_user.py | 21 ---- ...nt_chosen_date_alter_event_participants.py | 23 ++++ .../0003_alter_event_participants.py | 18 +++ .../__pycache__/0001_initial.cpython-312.pyc | Bin 2163 -> 6456 bytes ...02_alter_availability_user.cpython-312.pyc | Bin 1107 -> 1097 bytes ...e_alter_event_participants.cpython-312.pyc | Bin 0 -> 914 bytes ...3_alter_event_participants.cpython-312.pyc | Bin 0 -> 782 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 160 -> 150 bytes web/models.py | 38 ------ web/models/__init__.py | 7 ++ .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 599 bytes .../__pycache__/availability.cpython-312.pyc | Bin 0 -> 1109 bytes web/models/__pycache__/base.cpython-312.pyc | Bin 0 -> 880 bytes web/models/__pycache__/event.cpython-312.pyc | Bin 0 -> 1797 bytes .../__pycache__/event_comment.cpython-312.pyc | Bin 0 -> 1426 bytes .../event_comment_reaction.cpython-312.pyc | Bin 0 -> 1516 bytes .../event_division.cpython-312.pyc | Bin 0 -> 1001 bytes .../__pycache__/shared_event.cpython-312.pyc | Bin 0 -> 1454 bytes web/models/availability.py | 15 +++ web/models/base.py | 10 ++ web/models/event.py | 25 ++++ web/models/event_comment.py | 20 ++++ web/models/event_comment_reaction.py | 20 ++++ web/models/event_division.py | 14 +++ web/models/shared_event.py | 20 ++++ 49 files changed, 481 insertions(+), 65 deletions(-) create mode 100644 api/__init__.py create mode 100644 api/__pycache__/__init__.cpython-312.pyc create mode 100644 api/__pycache__/admin.cpython-312.pyc create mode 100644 api/__pycache__/apps.cpython-312.pyc create mode 100644 api/__pycache__/models.cpython-312.pyc create mode 100644 api/admin.py create mode 100644 api/apps.py create mode 100644 api/migrations/__init__.py create mode 100644 api/migrations/__pycache__/__init__.cpython-312.pyc create mode 100644 api/models.py create mode 100644 api/serializers/__pycache__/event.cpython-312.pyc create mode 100644 api/serializers/event.py create mode 100644 api/views/__pycache__/event.cpython-312.pyc create mode 100644 api/views/event.py create mode 100644 common/__pycache__/build_response.cpython-312.pyc create mode 100644 common/build_response.py create mode 100644 requests/event_post.py create mode 100644 requests/event_put.py delete mode 100644 web/migrations/0002_alter_availability_user.py create mode 100644 web/migrations/0002_alter_event_chosen_date_alter_event_participants.py create mode 100644 web/migrations/0003_alter_event_participants.py create mode 100644 web/migrations/__pycache__/0002_alter_event_chosen_date_alter_event_participants.cpython-312.pyc create mode 100644 web/migrations/__pycache__/0003_alter_event_participants.cpython-312.pyc delete mode 100644 web/models.py create mode 100644 web/models/__init__.py create mode 100644 web/models/__pycache__/__init__.cpython-312.pyc create mode 100644 web/models/__pycache__/availability.cpython-312.pyc create mode 100644 web/models/__pycache__/base.cpython-312.pyc create mode 100644 web/models/__pycache__/event.cpython-312.pyc create mode 100644 web/models/__pycache__/event_comment.cpython-312.pyc create mode 100644 web/models/__pycache__/event_comment_reaction.cpython-312.pyc create mode 100644 web/models/__pycache__/event_division.cpython-312.pyc create mode 100644 web/models/__pycache__/shared_event.cpython-312.pyc create mode 100644 web/models/availability.py create mode 100644 web/models/base.py create mode 100644 web/models/event.py create mode 100644 web/models/event_comment.py create mode 100644 web/models/event_comment_reaction.py create mode 100644 web/models/event_division.py create mode 100644 web/models/shared_event.py diff --git a/api/__init__.py b/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/__pycache__/__init__.cpython-312.pyc b/api/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c75ff36e5f7cb6c888b21e9b2d595edfc5ba3494 GIT binary patch literal 139 zcmX@j%ge<81nRq=ri19mAOanHW&w&!XQ*V*Wb|9fP{ah}eFmxdrKO*dpPQ4m}#sl@w(r6)^)9tYr8MQuj+;KO;XkRX-&ks5UcMzbLgJ zzgRyzzbG*&Uq7)RQy*-IUP0wA4x8Nkl+v73yCM#tK1Lue1~EP`Gcq#XV^An!19AYP CXDqD% literal 0 HcmV?d00001 diff --git a/api/__pycache__/apps.cpython-312.pyc b/api/__pycache__/apps.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..623323c7ed869543d38ee8c2523679c6f320ef0e GIT binary patch literal 439 zcmXv~Jx{|h5Ix5U>Q_)f2#JA#r6^0XG9aV^f~`Lwi{;i%FeGtEnxSk+otW7A8xTK% zpTNRcMPfn>Y)FNr6Lu0#^4)uW_vG`v+I9z29KL*p52}7>@*h?MRs#hVz<{9$V&o$P z23!I&=D;vV&$#aMjhX3KUz#|mY!B1)OeTQ{C$(H>)R5JV0t?{aBL=>~kdK++n=|Z~ z+A3=6-9EdfNhn=5c4NtSl)I-Q92Qe~A$Y_}Oj9v(tg=N&LSs%y*&#$V7Lmq1LT(Eh zHOe;Q0WG2_p~_Bz%5Q4z308Wj^}xH5G545^MIt6%##5PlH!`DR>8W?rNpm-yWqK`D zG8M>emFBSAJ9;yBm)-vTd8ThFedOS>+k8NqGrg$V-qWaR+*D}YIkr21Y}^0< literal 0 HcmV?d00001 diff --git a/api/__pycache__/models.cpython-312.pyc b/api/__pycache__/models.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..37417505b47196c51fcb5dfa61ada4eee65b3a04 GIT binary patch literal 180 zcmX@j%ge<81nRq=rdtB(#~=<2FhLog1%Qm{3@HpLj5!Rsj8Tk?43$ip%r8OGnvA#D za`RJCbBg^mnQn2WWF_XM=j){;6)^)PS2BDCsrjX$pOK%Ns-Kddo0*rHtY4H`kYB8y yonMrgl&_yykf{$bK(CSHuC-$Oy#6AjSt~Mn=Ya3^GM*Kn?)&f-7qP literal 0 HcmV?d00001 diff --git a/api/admin.py b/api/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/api/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/api/apps.py b/api/apps.py new file mode 100644 index 0000000..66656fd --- /dev/null +++ b/api/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class ApiConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'api' diff --git a/api/migrations/__init__.py b/api/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/api/migrations/__pycache__/__init__.cpython-312.pyc b/api/migrations/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9b6bd143d98041cb2b5d14ba16ea939e5ed638fb GIT binary patch literal 150 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 delta 5590 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', EventView.as_view(), name='event'), path("accounts/", include("django.contrib.auth.urls")), path('admin/', admin.site.urls), path("", views.index, name="index"), diff --git a/requests/event_post.py b/requests/event_post.py new file mode 100644 index 0000000..d6e832d --- /dev/null +++ b/requests/event_post.py @@ -0,0 +1,21 @@ +import requests + + +url = 'http://127.0.0.1:8000/api/event/' + +data = { + 'name': 'this is a test', + 'description': 'Some long ass description', + 'start_date': '2025-03-28T23:30:00Z', + 'end_date': '2025-04-04T23:30:00Z', + 'submit_by_date': '2025-04-03T23:30:00Z', + 'created_by': 'me@domdit.com', + 'division': 1 + +} + + +resp = requests.post(url, data=data) +print(resp.status_code) +print('------------') +print(resp.json()) diff --git a/requests/event_put.py b/requests/event_put.py new file mode 100644 index 0000000..3541688 --- /dev/null +++ b/requests/event_put.py @@ -0,0 +1,20 @@ +import requests + + +url = "http://127.0.0.1:8000/api/event/3" + +data = { + "name": "this is a test and a change", + # 'description': 'Some long ass description', + # 'start_date': '2025-03-28T23:30:00Z', + "end_date": "2025-04-07T23:30:00Z", + # 'submit_by_date': '2025-04-03T23:30:00Z', + # 'created_by': 'me@domdit.com', + "division": 2, +} + + +resp = requests.put(url, data=data) +print(resp.status_code) +print("------------") +print(resp.json()) diff --git a/requirements.txt b/requirements.txt index 10f55cf..2bb3ece 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,8 +1,14 @@ asgiref==3.8.1 beautifulsoup4==4.12.3 +certifi==2025.1.31 +charset-normalizer==3.4.1 Django==4.2.16 django-bootstrap-v5==1.0.11 +djangorestframework==3.15.2 gunicorn==23.0.0 +idna==3.10 packaging==24.1 +requests==2.32.3 soupsieve==2.6 sqlparse==0.5.1 +urllib3==2.3.0 diff --git a/web/admin.py b/web/admin.py index 9c6efc5..e56974e 100644 --- a/web/admin.py +++ b/web/admin.py @@ -1,6 +1,21 @@ from django.contrib import admin -from web.models import Event, EventAdmin, Availability +from web.models import ( + Event, + EventAdmin, + Availability, + EventComment, + EventCommentReaction, + EventCommentReactionAdmin, + EventDivision, + EventDivisionAdmin, + SharedEvent, + SharedEventAdmin +) admin.site.register(Event, EventAdmin) admin.site.register(Availability) +admin.site.register(EventComment) +admin.site.register(EventCommentReaction, EventCommentReactionAdmin) +admin.site.register(EventDivision, EventDivisionAdmin) +admin.site.register(SharedEvent, SharedEventAdmin) diff --git a/web/migrations/0001_initial.py b/web/migrations/0001_initial.py index 5107a35..4506b7d 100644 --- a/web/migrations/0001_initial.py +++ b/web/migrations/0001_initial.py @@ -1,7 +1,8 @@ -# Generated by Django 5.1.2 on 2024-10-22 20:31 +# Generated by Django 4.2.16 on 2025-03-29 00:40 -import django.db.models.deletion +from django.conf import settings from django.db import migrations, models +import django.db.models.deletion class Migration(migrations.Migration): @@ -9,6 +10,7 @@ class Migration(migrations.Migration): initial = True dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ @@ -20,14 +22,82 @@ class Migration(migrations.Migration): ('active', models.BooleanField(default=True)), ('id', models.AutoField(primary_key=True, serialize=False)), ('name', models.TextField()), + ('description', models.TextField()), ('start_date', models.DateTimeField()), ('end_date', models.DateTimeField()), + ('submit_by_date', models.DateTimeField()), + ('chosen_date', models.DateTimeField()), ('participants', models.IntegerField()), + ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], options={ 'db_table': 'events', }, ), + migrations.CreateModel( + name='EventComment', + fields=[ + ('created_at', models.DateTimeField(auto_now_add=True, null=True)), + ('updated_at', models.DateTimeField(auto_now=True, null=True)), + ('active', models.BooleanField(default=True)), + ('id', models.AutoField(primary_key=True, serialize=False)), + ('content', models.TextField()), + ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.event')), + ('submitted_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'db_table': 'events_comments', + }, + ), + migrations.CreateModel( + name='EventDivision', + fields=[ + ('created_at', models.DateTimeField(auto_now_add=True, null=True)), + ('updated_at', models.DateTimeField(auto_now=True, null=True)), + ('active', models.BooleanField(default=True)), + ('id', models.AutoField(primary_key=True, serialize=False)), + ('name', models.CharField(blank=True, max_length=255, null=True)), + ('description', models.TextField(blank=True, null=True)), + ], + options={ + 'abstract': False, + }, + ), + migrations.CreateModel( + name='SharedEvent', + fields=[ + ('created_at', models.DateTimeField(auto_now_add=True, null=True)), + ('updated_at', models.DateTimeField(auto_now=True, null=True)), + ('active', models.BooleanField(default=True)), + ('id', models.AutoField(primary_key=True, serialize=False)), + ('event', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.event')), + ('shared_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='shared_by', to=settings.AUTH_USER_MODEL)), + ('shared_to', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='shared_to', to=settings.AUTH_USER_MODEL)), + ], + options={ + 'db_table': 'shared_event', + }, + ), + migrations.CreateModel( + name='EventCommentReaction', + fields=[ + ('created_at', models.DateTimeField(auto_now_add=True, null=True)), + ('updated_at', models.DateTimeField(auto_now=True, null=True)), + ('active', models.BooleanField(default=True)), + ('id', models.AutoField(primary_key=True, serialize=False)), + ('reaction', models.CharField(blank=True, default=None, max_length=8)), + ('event_comment', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.eventcomment')), + ('submitted_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + options={ + 'db_table': 'event_comment_reactions', + }, + ), + migrations.AddField( + model_name='event', + name='division', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.eventdivision'), + ), migrations.CreateModel( name='Availability', fields=[ @@ -35,12 +105,12 @@ class Migration(migrations.Migration): ('updated_at', models.DateTimeField(auto_now=True, null=True)), ('active', models.BooleanField(default=True)), ('id', models.AutoField(primary_key=True, serialize=False)), - ('user', models.TextField()), ('time_table', models.JSONField()), ('event_id', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='web.event')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], options={ - 'db_table': 'availabilities', + 'db_table': 'availability', }, ), ] diff --git a/web/migrations/0002_alter_availability_user.py b/web/migrations/0002_alter_availability_user.py deleted file mode 100644 index 4fdf65b..0000000 --- a/web/migrations/0002_alter_availability_user.py +++ /dev/null @@ -1,21 +0,0 @@ -# Generated by Django 4.2.16 on 2024-10-24 17:59 - -from django.conf import settings -from django.db import migrations, models -import django.db.models.deletion - - -class Migration(migrations.Migration): - - dependencies = [ - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ('web', '0001_initial'), - ] - - operations = [ - migrations.AlterField( - model_name='availability', - name='user', - field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), - ), - ] diff --git a/web/migrations/0002_alter_event_chosen_date_alter_event_participants.py b/web/migrations/0002_alter_event_chosen_date_alter_event_participants.py new file mode 100644 index 0000000..0ae7ae9 --- /dev/null +++ b/web/migrations/0002_alter_event_chosen_date_alter_event_participants.py @@ -0,0 +1,23 @@ +# Generated by Django 4.2.16 on 2025-03-29 01:20 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('web', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='event', + name='chosen_date', + field=models.DateTimeField(blank=True, null=True), + ), + migrations.AlterField( + model_name='event', + name='participants', + field=models.IntegerField(default=1), + ), + ] diff --git a/web/migrations/0003_alter_event_participants.py b/web/migrations/0003_alter_event_participants.py new file mode 100644 index 0000000..a951367 --- /dev/null +++ b/web/migrations/0003_alter_event_participants.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.16 on 2025-03-29 01:23 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('web', '0002_alter_event_chosen_date_alter_event_participants'), + ] + + operations = [ + migrations.AlterField( + model_name='event', + name='participants', + field=models.IntegerField(blank=True, default=1), + ), + ] diff --git a/web/migrations/__pycache__/0001_initial.cpython-312.pyc b/web/migrations/__pycache__/0001_initial.cpython-312.pyc index f6f6b17830c1f712c2c697efb10daf0f1f726d7f..9e8d1d04d038dcd98c68001808a5220dce4278f5 100644 GIT binary patch literal 6456 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 diff --git a/web/migrations/__pycache__/0002_alter_availability_user.cpython-312.pyc b/web/migrations/__pycache__/0002_alter_availability_user.cpython-312.pyc index 70e69e8f9695c6bd35bb285bdea75009ff7547ae..26c7dd3e1194827a3f4cf3269680e093c3c914f0 100644 GIT binary patch delta 51 zcmcc2agu}kG%qg~0}$-FdUYfBNhV=W{fzwFRQ;6v+|0bpWc{Mlg8a=NnUonBe@zx; Gu>%0RZV_$( delta 61 zcmX@fahZerG%qg~0}wpxlG@09l1VmLKO;XkRX-&^H#09YSwEmMIU}(sH=rm#D>b=f P^K&L;M#fu{xmoN0UwRa0 diff --git a/web/migrations/__pycache__/0002_alter_event_chosen_date_alter_event_participants.cpython-312.pyc b/web/migrations/__pycache__/0002_alter_event_chosen_date_alter_event_participants.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b5c4d33c15c145900eb6aecd5393cf7fa9d800c0 GIT binary patch literal 914 zcmaJ<&ubGw6rR~%+1(_PE`kS5s?Y@X(v6&CK-=Vy~t~^j|^;$T##LUq5Qk?s7 zlrb%g2@SIDItKuK>C8tQTmTAONPsI5=s{PO09ATL!<#99w?V|6*1LB%E-#Ra^h5RVr%L78#qC=p$nY7m;-(PjZccX_uMtel;5(RQ^aitkQ0`pCUiVA)yM2a7cMfSoO%K0b!K{r@7zt6CCB) zwP?eJtVHM$?g#mSZ89AdSqL!`Azq~)P>w4Io%V4cDhZF!ghqr$U7u#DSP?T{202Y% zi#Jk51gft@XMRYF7^}REa_TJ^%#0JdT;NwQ7h2qQoZ~p84v9lPY1c_<5@*gyoZ?RG za21^O${nu9Gla!^s1O5fXmKaLIqPmRNW~9U7y&Ymn=>%efbn=HOZT-;?`9@28ehzb zULWiA>4U~}t1-1&=dFp=8e6T)!*9x!_2Q4E?8*K|} R=jNogGp_CY2HYvK{{qh&LD{ReSQZmtm5brkn20uDcs02SK3+ zkG=I@P+IT)51s--!(2T`Z-G>Vo}Aevq&+x?+3$Pv-rMheGe4G=JW%Vy%irB^2;i3{ z^JUM#WK)47V8Boe2?|kSga!fwUH~%=fSDZi@Vsd8JvOH}GzXS%pK0P7(o3RlPRl42 zg~Un9cwBTAH2}_xOxg+@0f!JV2n~k1C^QY=R<9C#xdfC9rq6Ki+SRyb%wqNlJ~pN& zC$+gO)z29?zAN3=b45y?`JT7s<5sKnkkGi~IpOcPC`o58Ew~_zmi$UQqj?#1qKt~N zkam?T>z9LX&XlWqZo3^*u`g?k@6vu;`lfP1Pfr9*xU{O>-i>(7c9bTERB=M2M~KSn z$6Vn$A#eLM*14K7o^ipr=tR88wb{~psx?2?U2;nY>RY1Z-C0O_X~t*Xe}#!QJsi338sLMX;adw4DaZiePbDfimUMe}`Ys2DyF%)uuu5L~RE!#^7$Dv1#1E zA770y1s^z@N7B+w+z? zz9n7OqoSLxvvxIYHR1H9w{%*Sdq<%QXJcyFW`0*ueF23AV-q3t7X$LoaUJ19?{s-> MxV-iU6sfBJ0am`sdjJ3c literal 0 HcmV?d00001 diff --git a/web/migrations/__pycache__/__init__.cpython-312.pyc b/web/migrations/__pycache__/__init__.cpython-312.pyc index b45851f23b0b953c2b1e294758dbff40cf3a1b35..aa99198275724f6239fe649deb7655944c94dbe3 100644 GIT binary patch delta 47 zcmZ3$IE|6}G%qg~0}$-FdUYbVv9PIrMt*LpeoB6BW?p8peo<;c{={fy#$OZb6#-N- B54r#V delta 57 zcmbQnxPX!SG%qg~0}!m`keJAAENicyk)NBYpOT-OnU|TYA5fW`kyw-)P?VpQnp`q5 LP?_=8#8O27!&VXY diff --git a/web/models.py b/web/models.py deleted file mode 100644 index f303552..0000000 --- a/web/models.py +++ /dev/null @@ -1,38 +0,0 @@ -from django.contrib import admin -from django.db import models -from django.contrib.auth.models import User - - - -class BaseModel(models.Model): - created_at = models.DateTimeField(blank=True, null=True, auto_now_add=True) - updated_at = models.DateTimeField(blank=True, null=True, auto_now=True) - active = models.BooleanField(default=True) - - class Meta: - abstract = True - - -class Event(BaseModel): - id = models.AutoField(primary_key=True) - name = models.TextField(blank=False, null=False) - start_date = models.DateTimeField(blank=False, null=False) - end_date = models.DateTimeField(blank=False, null=False) - participants = models.IntegerField(blank=False) - - class Meta: - db_table = 'events' - - -class EventAdmin(admin.ModelAdmin): - list_display = ('name', 'start_date', 'end_date', 'active') - - -class Availability(BaseModel): - id = models.AutoField(primary_key=True) - event_id = models.ForeignKey(Event, on_delete=models.CASCADE) - user = models.ForeignKey(User, on_delete=models.CASCADE) - time_table = models.JSONField() - - class Meta: - db_table = 'availabilities' diff --git a/web/models/__init__.py b/web/models/__init__.py new file mode 100644 index 0000000..46b6566 --- /dev/null +++ b/web/models/__init__.py @@ -0,0 +1,7 @@ +from .availability import Availability +from .event import Event, EventAdmin +from .event_comment import EventComment, EventCommentAdmin +from .event_comment_reaction import EventCommentReaction, EventCommentReactionAdmin +from .event_division import EventDivision, EventDivisionAdmin +from .shared_event import SharedEvent, SharedEventAdmin + diff --git a/web/models/__pycache__/__init__.cpython-312.pyc b/web/models/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..681a0dd82f0d44d81f50862b0d74fea5117977b1 GIT binary patch literal 599 zcmZuuJ5R$f5I!eOnzl(Fh=*WCNLh%ODj`5rz{=2WUP9Vf)WU8mClvLU@EiCoEXFWCu4rsBi`&@dRb17$!W>@1HD1ScjV;#TE_S(xJ&kSFOuvb?UhUd-u4lCDNK3Fk`dY@*V#yGiy*G|Ff)$q)Zy%Ojo^ zZ|RJt%Db}#OH*Sojs%IdmbW*6Hr)H2+>JIS5T+a}w}=`-RAeqJMR=MBN2>{ht%Rx) z_P2yktQ!}Oa@3TgxpKtoHih~@(NKz;>ej+lF<0@P3~#WI5te7cIN>CS6ZwX86bLd+ z(%>l((J%>K$S~kZOjsI(p_H>QJe|&$&V?kO8MzV%@&@%o>5&Y-CPL^FP6{|K;JkoA O0ha}IKcFl2r2Gfg^0Ed1 literal 0 HcmV?d00001 diff --git a/web/models/__pycache__/availability.cpython-312.pyc b/web/models/__pycache__/availability.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5bfa28bf1892f5896f382919c7ce64363ca705a2 GIT binary patch literal 1109 zcmah|&1(}u6rb6T>~4}ajkU!}geIb}6gDRXp(yE>QfWN2de}pk-OkW%yB~G3sq8I> z9_p>PdhF4Xf_l+E!c(x2uuu?0#G4pJ=*gMgRZ~P9*f+oTX5YN|{pQWvp`k3G!@u)s z{WS#O19N^2F$Mia3Jw4Q2s*%pI)n^!4(IYZA7kDTTu~QeEI1ig(j^Eua2FtP7oZFl z+kCQ@E{BpTe`byfqm1h#>@+A69yTzcvod2g@DhtsN1WfmUa*#ACRRwD{(A}z00ufl zK<7As`As=p8<-G0=Gv4N8@d?(l~24uizS*pG8jqlG2iAAq$~f-&Hgtx7w2C3d;fMC z(uZQH1S*yIyW((|QKcwf+c9m&v~0%?!WF7XZkyPyNkU@_hfFWuGpJZNz~^L2DT6*^ z^+zTIbw1=&{;W8-t+s>%Gs>F-mFlVx$%f&XE;fuPYZ&yRnhwKx!+6{@opeP;mJyhi zgO5O;kvY3j-SAypMZRl$_F9$TZNE|7@`-8r)hF1hCKp~Etfg&-k-&~X*wqZvuOU&h z3wopFr!pC(n2b?VR||x#k^(b~7-3BnDYa(cFWA^Y5oe<)yWkUSuY31#NHT0)nyoF* z*5>9T8MAgWY(!WWMM9IdT%;^6Kd2|!*}$fBV>)p`a)H%|>tAGu^;c{dXsl90&!|l7 zjdzuajxuqGPL!$EOs_Dxx6>_5b_$b+V=u42(OzjMg<9)gFIU>T+0B(Yxze+h=Z{{j z9<83_rdxBpVtIeOTP$~q<#)xat;HV#6f0i=HA!h!tgb4Nf;LTW-Pe$n(7v4dYrYo{ z+tSQtu%RXLCj1Ii?=+xU^i>h|oTHI}XskypQo`*#-!pkSx%JzmLNi%QHLg(eg@+KH ag3>9N`UtL_g37my1S|Wuz5_bNXZ{Hb(Eq&v literal 0 HcmV?d00001 diff --git a/web/models/__pycache__/base.cpython-312.pyc b/web/models/__pycache__/base.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..32ba4e7ab8c0e196707d5dc330dbc13b93312e1b GIT binary patch literal 880 zcmah{zi-n(6u$GXIFVg2tsp~(3}o;?EHNU)P*p)HYFQ$NEY>-9l%$Rw&NfxH4jo`C zQzZU^qIBR-U_nA+suZc{Bqqebh6o5L6YuQ&pa_Yx{QTYXd-uKXz58I>6$GpK?#upd zjL>JfSuA}Hrgs305JeP+sE^wiBL&?@R5?aeWw@s;5?0@_THv-i)Li|m+_+d6{g|>a z>8#=qT9Uj1?+7u}#uT*`1u?Z}{ux+cisf^rED7}gM5@b3BadAB*O_P97{trfHgjn@ zNHfOD+*cl!TvL>{NWyldf|jcaJqSs3Ahak8Lt&9Djr}M-^a-V|$_+^5B{0HV`~mqT z${v#}OfTu5^P=fh2w&-^7+R;e>TGSv+Sp|&Y3;e1FnvEFedhb3;``9kER@*t{ihiT z=YLERBq=AI^fj7F8M9m7leo`38uzkXNj7dl zW*Oc@iaACf*KfQq`8B|N1I(UV;kMk!rt&M&$hix9o20DO?XzZ=g;Z2JoPmS-Bo&ox zKo{8BisO)xsE9J4*6uTwAIu$jR?f37k-Q|ikykC*0Ry!-^^@xtPW{}epKiZN-`|`# z507^K^1h`L=K*-_+Ve*jcJ17*oo-C*#!>T^hV|-q1g4;o46?Ol+9T0^+@L`rMb8Ib r6mYqynR&Np{XM=3$#RZK70fpkWBdti{xA$&JuybsOY0{BnDhJwK{dsP literal 0 HcmV?d00001 diff --git a/web/models/__pycache__/event.cpython-312.pyc b/web/models/__pycache__/event.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c3af78d2e3072fe1bed71cef6562ae041f3c8db3 GIT binary patch literal 1797 zcmb7EO>E;t6duQRVkc>{PB(>a3+kpygtby4M70-|O6|6V-KF6`mxC{slNq&c{ZqzH zA-5pyq1<}o+8aTwP&rXf+_-Rx6e-b2Jt2g+t!NQaPrR|SZMH0;jO6F{o*S-~Hog`S`h^=WmONC>+Ms-eFv5a^T)_|ot|y#?D;i>?i;m>Vh8*dVlXO!? zD$->~aaBVVPy)S=aPk?#DUv#befTockyin)N`$S+*gGmOk=a&S&-~6m=>n52?AjhE z($j!Ycqd&S6DI&oU9tkQ#w{?$R(6ROF5A0yVEbNUG_W)@&b}3RWds=lMn)omh`6PU z0%IKuM~Oo~@@2>oDjQp)5{pDqTsq2T6KqfgUuq>~6o_YNFfsk5LOB)a>mX`+foj~~jinP@ z@T1Dq#b)TQ+Qh*uVPmGQlh4E0lz4h9gGtb!_D%@Lfu&b{O6(2q329Nj3rjs*{P^MG z@(NS%@W`;SWh*4>woBqD=>Sp-O$<(^5D&-Nc+jl7c4*dHv7Kpb`T>E)1B~*6#?lQ+ zz`y{B@}~u!a#YT1TvJ~Nt^_}UfRfdzy~(~h)m5hsa8JG0UK(Vk_wM&I)7{MUL8(J} znfdneAYa@s_w&VWzSt=oKken;Z9f_0X7_gcx!G=R_TY_^@{g4tD!tsJ_6Gy4v_IL` zN?ongSviq=+CuyBAUDUcbKTrrr*uquxd(tN==-1a3wpPpAIm2zy~0wvHprLxKILw{ z+*v=7dinQYAFasa6}wvTVE*|2_Y2=G^t7e+5TCvU`ZmPmr#YAh@mv%H;S|lDqI;)k=2uiYMem#^ fv%<{YqjLnW^EU;dChQmb+TE^p_fN#FsPex7QW}`u literal 0 HcmV?d00001 diff --git a/web/models/__pycache__/event_comment.cpython-312.pyc b/web/models/__pycache__/event_comment.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d087c2927e65857fb3044a46420fcb055290ef27 GIT binary patch literal 1426 zcmb7EOKTKC5bmDG&dz4CQP)QzCW<8BD(r#>A0R@Ei3c?oqsSZ_X3}k(WFE0+R-KEi z;33|;=`lwo0rljM@U#%v(2$cTcv4J6$jPprP25C8Y?$h=x~r?IzpCjEy}czQ#>cOp zW^OBD24!pL9kAXM-~}Rx-~ff##u%^?D4}Yr603n0>b5Si78F9mHYC=AVrbeXMhd!u zNZ~0W1~rz{+^=1dt3|PDQapRG6Rm67wzRTRwdV`$R590G68ez<+RcPAF&Dy^&>#`W zyyPbII%r@w{(wg5beBJ*b(Hnb0=z&J*_a?(Q4m#Ui`|AfCU{v{!a25eX=VLsMGbL! z&!6kd>XKj-hHc8T`*W>Z5{+of`nFxqUt?JRjM4j><86QCtXMUwYLOeyQmEmVa2K~nR zg_x}NvAv+|15p71ozKnDMjB7}G$35@2`^2=jQTUtRhlvI!;P`g8)KuF$GI-Ua&wA4 zN^^T-I*w9ta|R8^t)$_FewtF^c$o~z4nP!{!688AmH?1=LWnHQfrW!@bD(7oERq%T zRP)lRHMlU*wgy|);7j`I!JEggAFo&!o8znHp@qBc@=&Whw0QIFftB*v<`r?r=V#iL z;Z|jMaq8`@_jlgiS*cuZUi+zGedIe5A`cG%|EJ1)N0mqApQy4y$p0vaV?u~3?;@02 zfuE!f@ss($&351ZI2;54+;7+D?2~JGim)?T?d4@M>qawi4Y*~#$KV;^hj%X4+(vq@ zmUlx=zS%J#US8Ec(Jmc>nkQZhRsc79x>jX1Wr<~7cu77e@~Se+UFmNYFXUZ(k)0H- z;4eu|3-L|G7_XsYYv|M(I`RpPtfAu@1p|*fKfi&*w6P!Kb1(IF|A|)ri62NP^18nO Dy0}Nr literal 0 HcmV?d00001 diff --git a/web/models/__pycache__/event_comment_reaction.cpython-312.pyc b/web/models/__pycache__/event_comment_reaction.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6179b18b97c3bd9c725e1706958b5349b47ab30d GIT binary patch literal 1516 zcmb7EO>7fK6rR~1@2+FxA{&BHMbaucSb$9>goK2kCLth|L~2QU*h5yko*~&}f701C zus0*+KyTdWF}H$}13k4pl{+U(ksOVbQ&qLx5J^=jr_S4TTqmTe7-`>pGxO&CeDCeN zE*A4hjC}Kt#UCVueuKrqQ2SuFBfv965Wybuv57HY$&-B9lv6Bwim#e#iWM*CYo?ZB z)zf{$G%%9TZA5Zwh-g&XkTbhxKHb&Du0iqg>Att2X`oq1^0kpSa8kouwTbTr0w`Zc zl!-a#hlF~OK*miwqO-6Pi^8o3G>E4{-xpJB$SfKp_NUl=hA1*IL8c@jDlhB9iWw$& zQ`*28Hq}(CaEz8rFi|$uLC{*N`O*8D)DV6u@9%HsHbeT7peEk!tdO^|%n~voyB(D1~}it*l@c>&F+()fBE< zR$%+ovUuLIM7i4@;DTj++qS*_iB23VwjGbYK)XQV{*A^`=+g!XMZ37I2BWKC)L03b z?Szeo)M;dG(>UI3eKp|<#KleuTP5*Dnh1Vr9TkPj(6fbQd?8 z?KqrqsYkfv5^hW_*(_V?2Z{0gOvtFa7<@q!2DZ62)x0;=oW8}2hhkz192TOsk*(nzX+i~|86B0`90jp~!rJ)_z+s_SISIN!OsT^f7xpjR5}md2hdFQ;F9 zxmCK|xwBoFd^*#sOm-`i>)y}ze+_;Kwkoro+3oVg(<{C5M7KP#KL7HYpB8>x*eXwV z?*6S{_2N4uL>2(J{E$ZA$2LMU{j+8E31o5(#HT`t1~|eoFL-VgTf~i4Jv%wd!vtIe z0fiY|G`rel9EX{8DqGafEO68aHeT&J zKk?&e5rQ|{%nv=5x+^q2`3Gc6<$5FVq7|-1-5}t_&|7l@8ZC8Nmcm3|m7;u)R`+CS z79|EIh__`E5podUs~*QT(Sr^B>Z_{v>b>{9SM_#a zpi1CdXuX?#q!IEDPQH9b59}-hcuW{!G$avqDMhS>TBN(W!g^SW4A)S&6qX~?H5E3( zN@TefB^tR(Sor~ACO230{9L!HRx7Y-aXLTL^Hv!8ns!!oYVUE!q0;bK6m$TT?j&5m zSdL=G!vv6Z$xrxAoT1+267Qrlh4V;1qffB>5hT zKB&b_u&y6mU(;8CQT$x%hql%4+p^M{(a*m2)7IsJwXIk-f#pg+o`KAAsgt*1=zH}-0F9eG^`+f&#IbbKPDxfg<-zl0)$^dv-H-#eJ?~!E579TwDy;3L zemmsP$qv%J_e*mwj(C&B&?mu6Q}D$&X)eUVZ^z9)c)OYROS9;!v6#sch9EH3L+~di zhzDfr$oStCF$`FYfS7g$#bKNrL2(oXHkGtm-87yGc*vv{Fj<|71rKIB*Lf!J9BE!| z-MZYmGARv}nkb(8Y1zUN>Gf-u$^yzq@?x$2%WO z)R_36fXKr@$3Ih0SuAKv-BP`fVd(&{O&c3#9o&>TI5MjKud zQO0BHh1I-xSW#6TSyhjXN>xR