From 11a009330dc255bd541900d8a2dc978b692b0fa7 Mon Sep 17 00:00:00 2001 From: Ol86 <51297375+Ol86@users.noreply.github.com> Date: Thu, 28 Mar 2024 23:04:21 +0100 Subject: [PATCH] Init Django backend --- .gitignore | 1 + Server/api/__init__.py | 0 .../api/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 171 bytes Server/api/__pycache__/admin.cpython-312.pyc | Bin 0 -> 592 bytes Server/api/__pycache__/apps.cpython-312.pyc | Bin 0 -> 471 bytes Server/api/__pycache__/models.cpython-312.pyc | Bin 0 -> 4028 bytes Server/api/__pycache__/urls.cpython-312.pyc | Bin 0 -> 657 bytes Server/api/__pycache__/views.cpython-312.pyc | Bin 0 -> 2437 bytes Server/api/admin.py | 7 + Server/api/apps.py | 6 + Server/api/migrations/0001_initial.py | 51 +++++++ Server/api/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-312.pyc | Bin 0 -> 2564 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 182 bytes Server/api/models.py | 49 +++++++ Server/api/tests.py | 3 + Server/api/urls.py | 9 ++ Server/api/views.py | 44 ++++++ Server/core/__init__.py | 0 .../core/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 172 bytes .../core/__pycache__/settings.cpython-312.pyc | Bin 0 -> 2588 bytes Server/core/__pycache__/urls.cpython-312.pyc | Bin 0 -> 1179 bytes Server/core/__pycache__/wsgi.cpython-312.pyc | Bin 0 -> 653 bytes Server/core/asgi.py | 16 +++ Server/core/settings.py | 130 ++++++++++++++++++ Server/core/urls.py | 24 ++++ Server/core/wsgi.py | 16 +++ Server/db.sqlite3 | Bin 0 -> 163840 bytes Server/manage.py | 22 +++ Server/userinterface/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 181 bytes .../__pycache__/admin.cpython-312.pyc | Bin 0 -> 225 bytes .../__pycache__/apps.cpython-312.pyc | Bin 0 -> 501 bytes .../__pycache__/models.cpython-312.pyc | Bin 0 -> 222 bytes .../__pycache__/urls.cpython-312.pyc | Bin 0 -> 367 bytes .../__pycache__/views.cpython-312.pyc | Bin 0 -> 425 bytes Server/userinterface/admin.py | 3 + Server/userinterface/apps.py | 6 + Server/userinterface/migrations/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 192 bytes Server/userinterface/models.py | 3 + Server/userinterface/tests.py | 3 + Server/userinterface/urls.py | 6 + Server/userinterface/views.py | 5 + requirements.txt | Bin 402 -> 492 bytes 45 files changed, 404 insertions(+) create mode 100644 Server/api/__init__.py create mode 100644 Server/api/__pycache__/__init__.cpython-312.pyc create mode 100644 Server/api/__pycache__/admin.cpython-312.pyc create mode 100644 Server/api/__pycache__/apps.cpython-312.pyc create mode 100644 Server/api/__pycache__/models.cpython-312.pyc create mode 100644 Server/api/__pycache__/urls.cpython-312.pyc create mode 100644 Server/api/__pycache__/views.cpython-312.pyc create mode 100644 Server/api/admin.py create mode 100644 Server/api/apps.py create mode 100644 Server/api/migrations/0001_initial.py create mode 100644 Server/api/migrations/__init__.py create mode 100644 Server/api/migrations/__pycache__/0001_initial.cpython-312.pyc create mode 100644 Server/api/migrations/__pycache__/__init__.cpython-312.pyc create mode 100644 Server/api/models.py create mode 100644 Server/api/tests.py create mode 100644 Server/api/urls.py create mode 100644 Server/api/views.py create mode 100644 Server/core/__init__.py create mode 100644 Server/core/__pycache__/__init__.cpython-312.pyc create mode 100644 Server/core/__pycache__/settings.cpython-312.pyc create mode 100644 Server/core/__pycache__/urls.cpython-312.pyc create mode 100644 Server/core/__pycache__/wsgi.cpython-312.pyc create mode 100644 Server/core/asgi.py create mode 100644 Server/core/settings.py create mode 100644 Server/core/urls.py create mode 100644 Server/core/wsgi.py create mode 100644 Server/db.sqlite3 create mode 100644 Server/manage.py create mode 100644 Server/userinterface/__init__.py create mode 100644 Server/userinterface/__pycache__/__init__.cpython-312.pyc create mode 100644 Server/userinterface/__pycache__/admin.cpython-312.pyc create mode 100644 Server/userinterface/__pycache__/apps.cpython-312.pyc create mode 100644 Server/userinterface/__pycache__/models.cpython-312.pyc create mode 100644 Server/userinterface/__pycache__/urls.cpython-312.pyc create mode 100644 Server/userinterface/__pycache__/views.cpython-312.pyc create mode 100644 Server/userinterface/admin.py create mode 100644 Server/userinterface/apps.py create mode 100644 Server/userinterface/migrations/__init__.py create mode 100644 Server/userinterface/migrations/__pycache__/__init__.cpython-312.pyc create mode 100644 Server/userinterface/models.py create mode 100644 Server/userinterface/tests.py create mode 100644 Server/userinterface/urls.py create mode 100644 Server/userinterface/views.py diff --git a/.gitignore b/.gitignore index bae90c5..4416a9c 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ SQLHandler/config.json .vscode/arduino.json .gitignore .vscode/c_cpp_properties.json +venv/ \ No newline at end of file diff --git a/Server/api/__init__.py b/Server/api/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Server/api/__pycache__/__init__.cpython-312.pyc b/Server/api/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..92444b2fa791c119c1081df358aaa05ae6ef3cbf GIT binary patch literal 171 zcmX@j%ge<81OZ1`(?IlN5P=Rpvj9b=GgLBYGWxA#C}INgK7-W!@^ZF{2`x@7Dvt5b zNzF}-ami0E%}vcKDUJy!$}CGPiSf%!&W{PmNz5w=PR%RMFLDgRD7VQSTQY71Obb7rpHzpk0%GfoJ3f&4Sfzk+k__S{Fv-9zqT bvkwbT6P4XQdzeOR2V>^#7d%9^>~6488f literal 0 HcmV?d00001 diff --git a/Server/api/__pycache__/apps.cpython-312.pyc b/Server/api/__pycache__/apps.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e9005375e20705e13cec5e472f0fb0b5b219fb3d GIT binary patch literal 471 zcmXv~Jxc>Y5Z%4INIpeH1Pcor;hL*OM2HCyn|Kgxj)i5-?uC=R4|neZu@mwG(&aaZ zzr)JLG8|Z0*$L4mmAiN6z|OqcHxFjsTc^_mD%{tazfkp4H~&$q!1_diC7^&p4npWb z2n=uqs4)lBWbnl-=R9L(*|jg-*f4K&lcX0%elQuAbeUn*toIdI0tP%tfoD+Ynbh#C znQ2>E8kEwniRx%;c4QC-k{dk;(EJ`JEMKC2P8V2JS zxtv7lh($6MUH2M|n3ytw)E??3(n)4Q+g2n?0ohS$4pxV!@7BSpwe!>$`lsNBwwbr8 v1GQLaBTIQ(qhfGdp-ug~JnBO1s8)L@wSV6xgzy6#|7;m>chUF-suZd}wcdF@ literal 0 HcmV?d00001 diff --git a/Server/api/__pycache__/models.cpython-312.pyc b/Server/api/__pycache__/models.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..394a79caecb0fd64aaa7e68dd489b81a9ef91509 GIT binary patch literal 4028 zcmd^?O>7fK6o6;_zjl(1O_~xK8rS(ju1G)yAw+4xI8FH}CTdbD8N+Im9TKN&JIt;_ zor1`L1Dpt_P@xu%i4v*d1X3?mPgFhBRw5-@si*eBt(DVO%Bkgnn29=vHDd`{*F6PGdd^c#(k*d0GH26WqL`EtR1|f$C_=2$3ij(n@mg9^%o$gT$&|&D zBXcB=POqO1AB%mWQl`c(C^SK1y{X}J0(?|s{VYBqX|YIrI2G$xq@*@LlWK~E`p?7$ zD4U=xCXL5qg){9L&*(O^g<**C;PO0(+hnzA_w?k(jI2aldPPC84JwRNdJfAEBgSMvqsh}$NZC4f44tqWnNgTyGB#0hQZL? z=5dLV28Ur&sd80C$_u7<_d3 z%gYZg%pRK6zPUAbE8BA-E1b-_P8yy^f^}>cEMZM3UPFOy>wE~(rY}wvxnLY09+g<( zxee#*dm*0&;|W?A^W#DcB5OzSItnAOXfQ*R41rs#5fBi5zU5By3g43BTOP~Lnx5O2 z`N-6%RiW+9#EQ_C6WShY&#cSB@u}0R-p=Xf6>n$G+qrmn*?V;A>|Zv{zUOxWBJber zA+GQ$e9JI=O07ijpD5Fp}#H)ToV|6Q(dh@(PH57dhDqFrw#G4PbN* zkf1HX-h`Pn-VWa{hW%1f_D|Y6kxg46{XJSahyZFj5r=y;!~C#-y#=BIPlJHTU6m0s z`9!zXLm;a7T-n>5+uNOO?U@~2)Sljaa&s~D-Qe?%pAP(RAbTd76)t66mrPi_wP0nP zXohizxciipq!pMvfTIUN=@gE|G-5;2mSA6onO6vVjY3U%KpF4Ps#bxr$3PhqpsH;^xxNO<4F<}BfwJp- zDy~*=%-)9GcEWFcaif=l_b9vtlbme0%Ld*`McnN5ZpdJbgpE?9$Q)q+$LK4UcfhD11 z=a3XDBEIy02Z{Sr_-4XBq7zgx%iWGK5z1S=6euSk-dO4WE1m35smtJ5}2v3D^xArw1A={;PF0&UwG zC2t4TmyVpbW69fvb!BJuCT!Lld}$=;)OmSKN{*y@YrC!tYpWKZxI~9LN1kTGwnm7vk<*ycfG0TO-(CYxZz4Zn|q`|NZ@I k1p8}y+^92g@5bF5YXtjiyWL!vn{J+Iz2Eu=jF{&B4P)8rCIA2c literal 0 HcmV?d00001 diff --git a/Server/api/__pycache__/urls.cpython-312.pyc b/Server/api/__pycache__/urls.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..49d85a00b8b523c846f9719a57ef506b30368702 GIT binary patch literal 657 zcmZvaze^)Q6vt<>vvD_@=rw@^&#R4ah65`(ydVAmL1I8`!Zb_vowqW(8)h~Umus#| zsZ~;5d7`C%fW1uu0l9@#+FYmDSvg}|62&QY-uJ!FydN`rnagF6T<16Xj}45_wGzoP zo{jqpX>^c-9L$i1YZxm##ZsPD(=bXQz>Wsme!?f`Aj*c|HGtb;lS4V0QN)BNGQGeRqgYnO5*b+sb_kq73s^atR-v(@QZi%9*|+_@ zV6n-W;Oc&2O+uU~D?REVwk9gYMv^+tj5EcSJTIq_rF?OM?$v+~8>`E7R{$4un}G*( zEvPp=IiR3b?zZfZR@{0(tIYPp9q>iKzg0Ks4)7LmDtn-+rNzeKgYnr5oF;=6{!XTq z{{|8@`MK3F#zXXei1K%7q?_&H(Ryd=cxeIJlj<(fT$ kj(_a`T^W#NrRTc(RbjqgnD3Rp49M48Q=duwwzzu7N1h+AMgRZ+ literal 0 HcmV?d00001 diff --git a/Server/api/__pycache__/views.cpython-312.pyc b/Server/api/__pycache__/views.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4934d370dcbbc3fe1ad37753799f9e836b9c86fe GIT binary patch literal 2437 zcmd^A&u<$=6rR~#uh+jqQoC)^1mp@3xC#N%ss|Jym83vKaHA#&$+Bd*-f3#H>kTvG zL_rA(QYFF(cl2Cb%;xIl%lUWnycq@foi?SwQ%(}_MyjK+r{o;JNuux`;;L}UKF@0lZwsg2&wNyAAf+w=S z2BuDA8(St7O+|DWn+`y~p#^(hq06)q>IzYv;2bEC;Q*CZ;8hemL9g{~=t0gIk}QCwi$L>yP)_r5YpL*QO`)GmOLU@^GkmJXA3#q;34}DW< z_GJ!qEpDz(?3yGL`Ev4$$-5tH$CBS&eKa`Q92|WZyL{icybtq87df~kMGgU4fE)}^ z?IdbWq5(+6vpLd^lPDuW$SE^)r2Q1kP#A55HV;c{MO)S?$k~zBA&Nu*$)3Qg^akG3 zZ^P^mML63MLL6{EhFmfZlIIMxQgh38SuSOCejZTXk0H?#XGO{E!mXv2cp`qdB_832 zy;~JllET;LnB=$yKQ{X`BYzIFv}MI{X&XB4!%^g!p8+FqyXkbACvimm7Y$AoB`~0Y zMC$9pSA|E3bTg6u{*@nxH->-uta<63`-${}#Q5sF+p%+7slocx`qaJWo2l13^|F;5 zI0zf@C`cxHx@7oS_)nK)+V%VkApZf$(1x*jc#o`TvMmaUB&t?v3m_PQ`z6#tyV*&* z<$7fyd5u9`w|wBAqX1hJTl@n0gJ_1(C~B<_aTZ2)Q_5d}kZu|;;v_VfLS(`G6B?68 zsSD{??FSZ#r@D*$f5%vK5o(Y-Y=Jo$jlYD)`z*SmALEoMobqhKR7Nx}{~N;2ZY3|& z$JWR0#hc03u-5*buxuvb_u7?Wb*fLSaaCh zd>9~jCW!bP%&tx;-61dTkc&HHc!!K^lm6dmWbNwOs}E>$PYcm2`#RB5yXfup5G~q< ZtTqJR-nmZ5Y(wDfojD2G(*RQI`wNtz$UFc5 literal 0 HcmV?d00001 diff --git a/Server/api/admin.py b/Server/api/admin.py new file mode 100644 index 0000000..7384f36 --- /dev/null +++ b/Server/api/admin.py @@ -0,0 +1,7 @@ +from django.contrib import admin +from api.models import * + +admin.site.register(Client) +admin.site.register(Temperature) +admin.site.register(Moisture) +admin.site.register(WaterLevel) diff --git a/Server/api/apps.py b/Server/api/apps.py new file mode 100644 index 0000000..66656fd --- /dev/null +++ b/Server/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/Server/api/migrations/0001_initial.py b/Server/api/migrations/0001_initial.py new file mode 100644 index 0000000..52151f3 --- /dev/null +++ b/Server/api/migrations/0001_initial.py @@ -0,0 +1,51 @@ +# Generated by Django 5.0.3 on 2024-03-28 20:45 + +import django.db.models.deletion +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Clients', + fields=[ + ('id', models.AutoField(auto_created=True, editable=False, primary_key=True, serialize=False)), + ('hostname', models.CharField(max_length=100, unique=True)), + ('created_at', models.DateTimeField(auto_now_add=True)), + ], + ), + migrations.CreateModel( + name='Moisture', + fields=[ + ('id', models.AutoField(auto_created=True, editable=False, primary_key=True, serialize=False)), + ('moisture', models.IntegerField()), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.clients')), + ], + ), + migrations.CreateModel( + name='Temperature', + fields=[ + ('id', models.AutoField(auto_created=True, editable=False, primary_key=True, serialize=False)), + ('temperature', models.FloatField()), + ('humidity', models.FloatField()), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.clients')), + ], + ), + migrations.CreateModel( + name='WaterLevel', + fields=[ + ('id', models.AutoField(auto_created=True, editable=False, primary_key=True, serialize=False)), + ('waterlevel', models.IntegerField()), + ('created_at', models.DateTimeField(auto_now_add=True)), + ('created_by', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='api.clients')), + ], + ), + ] diff --git a/Server/api/migrations/__init__.py b/Server/api/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Server/api/migrations/__pycache__/0001_initial.cpython-312.pyc b/Server/api/migrations/__pycache__/0001_initial.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..18ea62973c59bba1a7b7b2afbab274ebf7d6f619 GIT binary patch literal 2564 zcmds3J#5=X6ecN(A}QIWWhHK#%5sVnu8LZq?4*FJqJV2hM&j5tV6{P20tBr)%T)QJ zkd#wpN`VX=vo&Ma!X7%NQ@wW~VW%=~X@E}I1UOkT^^TMh8BP%y2vDE|czo~f-Fx5r z?(QA`7#R^M{5<+IzE$KY>Tja-pLkC=E@R;*3Q&MHs49)WjKP?(YRqJ-EKM=gG6iDy zD8Ry4BlOmH5Pf%J(YG3J)A{%lqO9c^B$|5N(LCL@T*R3+fQDO(45N0mryR>Hi4Mca zRR+-2Se>e}3DEe3F*bvn`qTaW2>( zeb`b6Ei;2Qk&NxcUAk{qkL@MWnBy!r13e$KLIA4UZ3uhQ8iD?F)`H-aFmf z=&!`UP-AjH>4}Z0(|zErJ*m&d7E@=3U}o%$%%sC?-aj3CfSK_jY=&Ij|B$`-5bR~n z$lkgC+rFx^)pYxOegX-r{rXZtiA6()mggcy2jx7AQd-Ni)tUn}4+6wPpnKY;0a3E) z=%(hh)$d>%2`+SW&Cu^a#BbZKXK5yU0`NWyi9<-Ci9LU+=H=;L z2+O{$Y5?FFESZkDEgc%bMf|F*yI#w|uFbymV*Y0PPEu>?g<1p}PZn%T#RU?25HX&O zk`-t+AugW8LDCyg`0bXd<80bUyoqyjZonOAAn`Vl4I;1Q#}Tip1dOU8QB`r}Z5c#P zsp_qkX7ol9x}|$Kdz1pO2`vDvnhsrulya0@42fGMHQOPD6bTEM&oW6335(mB6Nw{B zIBZ2XVWg(6Sstvz-k?~v9jMo>70fgT8k$wN5d$_6ALfZ~1-xhr8;c7|SCLpYY|V?D zh<2Dbxix;Fj>(~a{>|d2%2#-;T;)pxnowD?Yb}$kwzBT%JDR7g=`~wfH#E!JfR<}J z3+vaE4e0DZN5M2JFYh5mmgS<_%e>HRI~?{OHVG`aU*N0Y9`$%MeRsLb(i!gVjV@0K zxgW(2KN;|oM`Q0k9y{kxOyA$>OiTw8)4x{sulhH?_3Osrgy~Dx(bxq)JM-Y{PIe~9 z&O997uN-Et`_jtMSk}+YJ=p2w=7QYZe&#S&_NC=+g3XLRjVA=LE1igPVTdR)i6RGC z`5-&%OLMP|5cbL>t{mj#hoAgD|J!`0v=Wq7I;Bcbs&q<9P*Qx&I?UO=)a(jz0*J?e z(kB2-z7Ei&KUMsh>r54csp7%ZoG)DtsVESTg&B^e{^pdst57OKZ*PUX2Q{_4IPPFq2V6zbY0u}n(-}wleA>qY% zc=W>47VS!zcnMw2V(B^mS#*#;cdlTS{EN6b+;n3!O&@a8QGGgjEsy$%s>_Z D)g3V5 literal 0 HcmV?d00001 diff --git a/Server/api/models.py b/Server/api/models.py new file mode 100644 index 0000000..baee685 --- /dev/null +++ b/Server/api/models.py @@ -0,0 +1,49 @@ +from django.db import models + +class Client(models.Model): + id = models.AutoField(primary_key=True, auto_created=True, editable=False) + hostname = models.CharField(unique=True, max_length=100) + created_at = models.DateTimeField(auto_now_add=True) + + class Meta: + ordering = ['id'] + + def __str__(self): + return f'{self.id}: {self.hostname} - {self.created_at}' + +class Temperature(models.Model): + id = models.AutoField(primary_key=True, auto_created=True, editable=False) + temperature = models.FloatField() + humidity = models.FloatField() + created_by = models.ForeignKey(Client, on_delete=models.CASCADE) + created_at = models.DateTimeField(auto_now_add=True) + + class Meta: + ordering = ['id'] + + def __str__(self): + return f'{self.id}: {self.temperature}°C and {self.humidity}% - {self.created_at}' + +class Moisture(models.Model): + id = models.AutoField(primary_key=True, auto_created=True, editable=False) + moisture = models.IntegerField() + created_by = models.ForeignKey(Client, on_delete=models.CASCADE) + created_at = models.DateTimeField(auto_now_add=True) + + class Meta: + ordering = ['id'] + + def __str__(self): + return f'{self.id}: {self.moisture} - {self.created_at}' + +class WaterLevel(models.Model): + id = models.AutoField(primary_key=True, auto_created=True, editable=False) + waterlevel = models.IntegerField() + created_by = models.ForeignKey(Client, on_delete=models.CASCADE) + created_at = models.DateTimeField(auto_now_add=True) + + class Meta: + ordering = ['id'] + + def __str__(self): + return f'{self.id}: {self.waterlevel} - {self.created_at}' diff --git a/Server/api/tests.py b/Server/api/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/Server/api/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/Server/api/urls.py b/Server/api/urls.py new file mode 100644 index 0000000..4d0f0f2 --- /dev/null +++ b/Server/api/urls.py @@ -0,0 +1,9 @@ +from django.urls import path +from api import views + +urlpatterns = [ + path('client/', views.client, name='api-client'), + path('temperature/', views.temperature, name='api-temperature'), + path('moisture/', views.moisture, name='api-moisture'), + path('waterlevel/', views.waterlevel, name='api-waterlevel'), +] \ No newline at end of file diff --git a/Server/api/views.py b/Server/api/views.py new file mode 100644 index 0000000..83620f5 --- /dev/null +++ b/Server/api/views.py @@ -0,0 +1,44 @@ +from django.shortcuts import render +from rest_framework import status +from rest_framework.response import Response +from rest_framework.decorators import api_view +from api.models import * + +@api_view(['POST']) +def client(request): + temp = Client( + hostname=request.data['hostname'] + ) + temp.save() + return Response(status=status.HTTP_201_CREATED) + +@api_view(['POST']) +def temperature(request): + client = Clients.objects.get(hostname=request.data['hostname']) + temp = Temperature( + temperature=request.data["temperature"], + humidity=request.data["humidity"], + created_by=client + ) + temp.save() + return Response(status=status.HTTP_201_CREATED) + + +@api_view(['POST']) +def moisture(request): + client = Clients.objects.get(hostname=request.data['hostname']) + temp = Moisture( + moisture=request.data['moistrue'], + created_by=client + ) + return Response(status=status.HTTP_201_CREATED) + + +@api_view(['POST']) +def waterlevel(request): + client = Clients.objects.get(hostname=request.data['hostname']) + temp = WaterLevel( + waterlevel=request.data['waterlevel'], + created_by=client + ) + return Response(status=status.HTTP_201_CREATED) \ No newline at end of file diff --git a/Server/core/__init__.py b/Server/core/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Server/core/__pycache__/__init__.cpython-312.pyc b/Server/core/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6cbfe373717920de83fbdd259cb8e53dfdcb7284 GIT binary patch literal 172 zcmX@j%ge<81YSp2(?IlN5P=Rpvj9b=GgLBYGWxA#C}INgK7-W!@^-e02`x@7Dvt5b zNzF}-ami0E%}vcKDUJy!$}CGPiSf%!&W{PmNz5w=PR%RMFLDgJmtkIamWj77{q767GNET#Ye literal 0 HcmV?d00001 diff --git a/Server/core/__pycache__/settings.cpython-312.pyc b/Server/core/__pycache__/settings.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ae0a0759865de8ed84759540ae8a88083c9c69eb GIT binary patch literal 2588 zcmb7GOK;mo5GM70TUMOJc@$8Priq-Is^P|IgCH#}(T)&VQbj3g2_XcnUCHb4p^z&l z=1KQndTS3kIxjQ@a&G6g#mij%Jj4|*T zIKfUm$uNJqlgTGE9=!h>20t^1kr>1xpUP@J$;UE22K%u8H+JN;8=Zt5-+vnqcfB0P zc6W4|O$s5u6h;9lf`VOEigpLIN^>ZK&VW}2EqK?n-t`<|y8$VU&P(%XQOZEZGw@qL7o@Z3qI7Qm zQtq;ng9nQhcNM*BWGzf7(Ysc*W0={tVd8AhGDah~5A|%>^VnU~38`hMt8l-64>TsQ7b8j$=EN_N+Vk zJTlrAH_9=oplxV*tmgqRPmLaFTlq<~`4K$b!P!nR;dbA|%Qx0`thHsbzx!Ny z{A9ap-dedv`?tUDo7#$Ms;eu;-nF$`4ToLIMeT(V64y3#YLacvO8W_DhWmcQrMlX4#bHgwMO`U!eN(mU{1}2_t*3$-xowEWI-013D|*6gjF&AZ zD;GylTh5I3DMGPDrS1mMVf1sPJ2YIS10W@6S~2bxcpOED#8i;dmj) zOUE@qB|LS-+^1M18c`Kj2oFadhH2mXSfnkY6Roe6vEHRS$MN5MZ2U+dwQ-Hd0N;Kr zK&7vN;@c+?f>>YfTaLfkDA-|m34l=Y_9tUlU{W&>RxNIwbU{eQ2Ei(-%1tq+w8kZ@&n-qCs-8L zo10FOFPE#2gra=EDmFwXRjP;$Fo6MjLv&(WrDCxxJmTwulc-m#4Y^q_7pj#FC)yCU zYGuA5h)(*ExLI=j%cTPEwviJp@(tciD>{pOvvFUp@uK*sS})2E`Em&stI&PPGGEzj z@|%KOs1^kPENuz0RE3s_G@;=W z^WJ^8e0Wf}({g*qYE@ON;a1UT1N}O+S~ZjGDYR7~ZKG9F6`hJ$2RZY#QcJ|<9yVKU zuvdAinfEzH$&>8AOIDCRJw#v0;dbCI>;d1tUYhZ{9aZzDp%CzCr5UFb9@kcz3QLiZyjD00g8cLuBTBKsFp{dfYL=~(zbZj&XRnZir2RhQa7fOKhZ+GI{F0Dgt zVC8v+n2liMP#ySw+pFe#wLkaTl}2r6)H2~a0c38xTme3bTVXq;kcT7&EkcEdB9Kth zMLxGp^Hm3d&6Gw7j1 zLaqtK=y0Ae*Kq>kGdt+QxJ}A(KEV!(ojLoS!$}hQ%#p#4D9;@8>05{e7IV#|H1>18 zdD$HFz6}RR}*udnkl`hlpz|%;wrYF zk8v!?&1|AjAcS)oZc*_-m27NC7S)A^8q%$^kfThOVzaTK3-DPv72C?$ zvqjh25apQnB0?B>Pl%sl6m#aS(Qq4bZ#DFZw-&*eucMd|y0EtFts}aPs3%{MCz0)B z=dAV+lOT=IV|r2G%J<4v#B^LyRrN%hRP~=gQEz-xrcXu`V|4f0r@4K1&)uKjoA2v4 rzv{K!D|=TDuJg&^TIrZW7m&;av{B~czb6nLYwfAFG{w;n10m5B* literal 0 HcmV?d00001 diff --git a/Server/core/__pycache__/wsgi.cpython-312.pyc b/Server/core/__pycache__/wsgi.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a80735fe9275cc09e68d7954dbd76829405d3f8b GIT binary patch literal 653 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 BFlhh) literal 0 HcmV?d00001 diff --git a/Server/userinterface/__pycache__/admin.cpython-312.pyc b/Server/userinterface/__pycache__/admin.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..41ef6532054e893251da28b72e2e47b35d6ccc03 GIT binary patch literal 225 zcmX@j%ge<81lGq`)0}|xV-N=hn4pZ$0zk%eh7^Vr#vF!R#wbQchDs()=9eI8O~zZS zi7C06d48HqxA;=B67$mY^^)`RN{TX*ikN{4Rx*4Bsrwb^Y!wq)oLW>ISDatu7~mNboLW?tS`PO4oI2havaAT9nycIFK;@5L~hK)l0e-Fp!EU6S9Y*I>3Mzywf0VE{tt zKnN6Y2B$#G%$`x z$S^LN7z;@rNW6scO-_QkvPzjp@*u-R48mSHNt3llFq4bU?al#`+ob3sU?D@@*v&&0 zWht_`KO`CI`EHEtfJ9lJMQP02_BrY^K4cvI+X#^)Nv&kWrKx4m1V{}L#$dX+|Eg_F zTU&QsE`Q2;&s2+6eY6yFX>%oClBjH47HHl$s?Iy+D}qXgQ|a!f3L$(0yI%_m+`c!z Ifk>t52jVk^MF0Q* literal 0 HcmV?d00001 diff --git a/Server/userinterface/__pycache__/models.cpython-312.pyc b/Server/userinterface/__pycache__/models.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9dc1a4aca6ff7e53cd78d23e82d50fd6de860641 GIT binary patch literal 222 zcmX@j%ge<81lGq`(`dVY4Ni9lCOiqn~ nSfy7``HRB_$S%!EwJYKPTEPg!#URE9W=2NFdkiu~Y(NeGN0U4E literal 0 HcmV?d00001 diff --git a/Server/userinterface/__pycache__/urls.cpython-312.pyc b/Server/userinterface/__pycache__/urls.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2279755097690ffc17526e8e4c2f729ece3b8abf GIT binary patch literal 367 zcmY*Tu};G<5VhkZ6hc5^Mq+`XOFsZ1Bm@I2B~sNT@)9MNHdX9Yb`n%Ev6YDtegVOs zz{nJ-6BAoex3X{+REU%8_ujqdJHPn;2EqDzb<%6ZcOzEi{F22vl6#VngyuxhkW#~~ z+!8Eglvo64!hnrhtA~G>*w4-r`_Tg$Iup0O_F-h3Hug9whloy{!If@EV-E`f#*mSK zZrg3VWE9Ck(Wz9fm6_7`l?Ii`5>y(+pls|Z*BBmVa2^^`KavHu$TB!R|21koZkF&ab&+Z=ZjbFz0EXZIqpvas?6;wuCn zMG(R6FqM^^aM+}BH=GXaH{Z<8e8bF3wYo~Q{k*#UN9{jN@Ml&*@-0m!BqSl_B&Iz| z4Y#-z+dW%z`+@YFvE#X4rop4x5<(IJPH9$YDK$I?ITVS6fEI$r*~QB@G?@_f{}(l9UW$0AHQ b9N?M`%_g#@;oGK^&dBzR?BoumyNixrnA>R- literal 0 HcmV?d00001 diff --git a/Server/userinterface/admin.py b/Server/userinterface/admin.py new file mode 100644 index 0000000..8c38f3f --- /dev/null +++ b/Server/userinterface/admin.py @@ -0,0 +1,3 @@ +from django.contrib import admin + +# Register your models here. diff --git a/Server/userinterface/apps.py b/Server/userinterface/apps.py new file mode 100644 index 0000000..aa3c1fc --- /dev/null +++ b/Server/userinterface/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class UserinterfaceConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'userinterface' diff --git a/Server/userinterface/migrations/__init__.py b/Server/userinterface/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/Server/userinterface/migrations/__pycache__/__init__.cpython-312.pyc b/Server/userinterface/migrations/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d39f0039058604430f00eb47b39ba77d1996e326 GIT binary patch literal 192 zcmX@j%ge<81lGq`(?IlN5P=Rpvj9b=GgLBYGWxA#C}INgK7-W!ig&h(2`x@7Dvt5b zNzF}-ami0E%}vcKDUJy!$}CGPiSf%!&W{PmNz5w=PR%RMFLDgDn05!YrgjyVKj{KT2scXC#L3@_Xaw^Yk97MHw8_W@mGDSXph$+&;@8R za{GoliIp0Bi*~$S*y;5ZdseLE?ab#?Eu0q4`X48mR`1|+aP~Tf#;rjW8EVa=Lx)NU zXZ!7MjEFx24_T`-o`u^}GfK2AH<6~lCfmdKHKi4zjCROna{i@K!a zjAcs)B`)lAh6X>VlpA)0}TK^gadTQV3*R#D!DkjWY+t1@{ z&-~0+Y16udb`3_4HJNp#kh{q3Y1EKc-?pf2L-9rQk{T}5jXb*O!S0ab!GHJR_`cd3 DNt8Q=