From fb8118f20fa2b13aee1f4bba4c8f5a077e5894ea Mon Sep 17 00:00:00 2001 From: Neeraj Kumar <88818077+Neeraj-book@users.noreply.github.com> Date: Sun, 4 Dec 2022 11:21:37 +0530 Subject: [PATCH] Add files via upload --- myclass/myproject/db.sqlite3 | Bin 0 -> 180224 bytes myclass/myproject/manage.py | 22 +++ myclass/myproject/myapp/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 131 bytes .../myapp/__pycache__/admin.cpython-310.pyc | Bin 0 -> 304 bytes .../myapp/__pycache__/apps.cpython-310.pyc | Bin 0 -> 408 bytes .../myapp/__pycache__/forms.cpython-310.pyc | Bin 0 -> 600 bytes .../myapp/__pycache__/models.cpython-310.pyc | Bin 0 -> 1909 bytes .../myapp/__pycache__/urls.cpython-310.pyc | Bin 0 -> 695 bytes .../myapp/__pycache__/views.cpython-310.pyc | Bin 0 -> 4077 bytes myclass/myproject/myapp/admin.py | 8 + myclass/myproject/myapp/apps.py | 6 + myclass/myproject/myapp/forms.py | 8 + .../myapp/migrations/0001_initial.py | 24 +++ ...host_alter_room_name_message_room_topic.py | 49 ++++++ .../migrations/0003_room_participants.py | 20 +++ ...s_rename_desc_room_description_and_more.py | 27 +++ .../0005_rename_description_room_desc.py | 18 ++ .../myproject/myapp/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-310.pyc | Bin 0 -> 778 bytes ...om_name_message_room_topic.cpython-310.pyc | Bin 0 -> 1374 bytes .../0003_room_participants.cpython-310.pyc | Bin 0 -> 735 bytes ..._room_description_and_more.cpython-310.pyc | Bin 0 -> 700 bytes ...name_description_room_desc.cpython-310.pyc | Bin 0 -> 586 bytes .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 142 bytes myclass/myproject/myapp/models.py | 42 +++++ .../templates/base/activity_component.html | 14 ++ .../myapp/templates/base/delete.html | 13 ++ .../myapp/templates/base/feed_component.html | 16 ++ .../myproject/myapp/templates/base/home.html | 34 ++++ .../myapp/templates/base/login_register.html | 35 ++++ .../myapp/templates/base/profile.html | 6 + .../myproject/myapp/templates/base/room.html | 59 +++++++ .../myapp/templates/base/room_form.html | 14 ++ .../templates/base/topics_component.html | 11 ++ myclass/myproject/myapp/tests.py | 3 + myclass/myproject/myapp/urls.py | 21 +++ myclass/myproject/myapp/views.py | 161 ++++++++++++++++++ myclass/myproject/myproject/__init__.py | 0 .../__pycache__/__init__.cpython-310.pyc | Bin 0 -> 135 bytes .../__pycache__/settings.cpython-310.pyc | Bin 0 -> 2367 bytes .../__pycache__/urls.cpython-310.pyc | Bin 0 -> 960 bytes .../__pycache__/wsgi.cpython-310.pyc | Bin 0 -> 542 bytes myclass/myproject/myproject/asgi.py | 16 ++ myclass/myproject/myproject/settings.py | 127 ++++++++++++++ myclass/myproject/myproject/urls.py | 22 +++ myclass/myproject/myproject/wsgi.py | 16 ++ myclass/myproject/templates/main.html | 33 ++++ myclass/myproject/templates/navbar.html | 14 ++ myclass/static/styles/main.css | 3 + 50 files changed, 842 insertions(+) create mode 100644 myclass/myproject/db.sqlite3 create mode 100644 myclass/myproject/manage.py create mode 100644 myclass/myproject/myapp/__init__.py create mode 100644 myclass/myproject/myapp/__pycache__/__init__.cpython-310.pyc create mode 100644 myclass/myproject/myapp/__pycache__/admin.cpython-310.pyc create mode 100644 myclass/myproject/myapp/__pycache__/apps.cpython-310.pyc create mode 100644 myclass/myproject/myapp/__pycache__/forms.cpython-310.pyc create mode 100644 myclass/myproject/myapp/__pycache__/models.cpython-310.pyc create mode 100644 myclass/myproject/myapp/__pycache__/urls.cpython-310.pyc create mode 100644 myclass/myproject/myapp/__pycache__/views.cpython-310.pyc create mode 100644 myclass/myproject/myapp/admin.py create mode 100644 myclass/myproject/myapp/apps.py create mode 100644 myclass/myproject/myapp/forms.py create mode 100644 myclass/myproject/myapp/migrations/0001_initial.py create mode 100644 myclass/myproject/myapp/migrations/0002_topic_room_host_alter_room_name_message_room_topic.py create mode 100644 myclass/myproject/myapp/migrations/0003_room_participants.py create mode 100644 myclass/myproject/myapp/migrations/0004_alter_room_options_rename_desc_room_description_and_more.py create mode 100644 myclass/myproject/myapp/migrations/0005_rename_description_room_desc.py create mode 100644 myclass/myproject/myapp/migrations/__init__.py create mode 100644 myclass/myproject/myapp/migrations/__pycache__/0001_initial.cpython-310.pyc create mode 100644 myclass/myproject/myapp/migrations/__pycache__/0002_topic_room_host_alter_room_name_message_room_topic.cpython-310.pyc create mode 100644 myclass/myproject/myapp/migrations/__pycache__/0003_room_participants.cpython-310.pyc create mode 100644 myclass/myproject/myapp/migrations/__pycache__/0004_alter_room_options_rename_desc_room_description_and_more.cpython-310.pyc create mode 100644 myclass/myproject/myapp/migrations/__pycache__/0005_rename_description_room_desc.cpython-310.pyc create mode 100644 myclass/myproject/myapp/migrations/__pycache__/__init__.cpython-310.pyc create mode 100644 myclass/myproject/myapp/models.py create mode 100644 myclass/myproject/myapp/templates/base/activity_component.html create mode 100644 myclass/myproject/myapp/templates/base/delete.html create mode 100644 myclass/myproject/myapp/templates/base/feed_component.html create mode 100644 myclass/myproject/myapp/templates/base/home.html create mode 100644 myclass/myproject/myapp/templates/base/login_register.html create mode 100644 myclass/myproject/myapp/templates/base/profile.html create mode 100644 myclass/myproject/myapp/templates/base/room.html create mode 100644 myclass/myproject/myapp/templates/base/room_form.html create mode 100644 myclass/myproject/myapp/templates/base/topics_component.html create mode 100644 myclass/myproject/myapp/tests.py create mode 100644 myclass/myproject/myapp/urls.py create mode 100644 myclass/myproject/myapp/views.py create mode 100644 myclass/myproject/myproject/__init__.py create mode 100644 myclass/myproject/myproject/__pycache__/__init__.cpython-310.pyc create mode 100644 myclass/myproject/myproject/__pycache__/settings.cpython-310.pyc create mode 100644 myclass/myproject/myproject/__pycache__/urls.cpython-310.pyc create mode 100644 myclass/myproject/myproject/__pycache__/wsgi.cpython-310.pyc create mode 100644 myclass/myproject/myproject/asgi.py create mode 100644 myclass/myproject/myproject/settings.py create mode 100644 myclass/myproject/myproject/urls.py create mode 100644 myclass/myproject/myproject/wsgi.py create mode 100644 myclass/myproject/templates/main.html create mode 100644 myclass/myproject/templates/navbar.html create mode 100644 myclass/static/styles/main.css diff --git a/myclass/myproject/db.sqlite3 b/myclass/myproject/db.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..0a8c1dba142c988bf48da380a97752c97932f635 GIT binary patch literal 180224 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 XjO+#IfvJ7Bo9+q-VBAg`GXDPnEtl8U literal 0 HcmV?d00001 diff --git a/myclass/myproject/manage.py b/myclass/myproject/manage.py new file mode 100644 index 0000000..6a0e408 --- /dev/null +++ b/myclass/myproject/manage.py @@ -0,0 +1,22 @@ +#!/usr/bin/env python +"""Django's command-line utility for administrative tasks.""" +import os +import sys + + +def main(): + """Run administrative tasks.""" + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings') + try: + from django.core.management import execute_from_command_line + except ImportError as exc: + raise ImportError( + "Couldn't import Django. Are you sure it's installed and " + "available on your PYTHONPATH environment variable? Did you " + "forget to activate a virtual environment?" + ) from exc + execute_from_command_line(sys.argv) + + +if __name__ == '__main__': + main() diff --git a/myclass/myproject/myapp/__init__.py b/myclass/myproject/myapp/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/myclass/myproject/myapp/__pycache__/__init__.cpython-310.pyc b/myclass/myproject/myapp/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ce84166d1a1a7e82c655c01af3ecd2e077e2959d GIT binary patch literal 131 zcmd1j<>g`k0*Mct$sqbMh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o2DF-6|%xGC3!) xxEM$m6y;~7CYJzNi3J5Q@$s2?nI-Y@dIgoYIBatBQ%ZAE?LhjAnScZf0|1Cy8;Ae^ literal 0 HcmV?d00001 diff --git a/myclass/myproject/myapp/__pycache__/admin.cpython-310.pyc b/myclass/myproject/myapp/__pycache__/admin.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d830d28e87c23fb21534dea4c078ef470aa8b24e GIT binary patch literal 304 zcmYjMJ5B>J5VhC#W)(Jwf*Vk6lLMd#(SeYl04ghuu}3Sf?DfiCinN>rN>0H&+*0KV zRE(n(8EM|UH$TmU)oMx5J|52W560gjPK}|sMNjt#h8XIIr;<`)D#KjmnPi?z?u8VT z03GVj1+XuyA2~naqHx1sNGJBVjdU~%WxO5tv?!MOa|k|**DzU~7mtvV>fxztS3frd*ZEa7!*(Teb9p{sX`wNVot1 literal 0 HcmV?d00001 diff --git a/myclass/myproject/myapp/__pycache__/apps.cpython-310.pyc b/myclass/myproject/myapp/__pycache__/apps.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b337daa318c46b7cc50942b75fad9d72bf955f8b GIT binary patch literal 408 zcmYjNy-veG4EE(xl=Npo9axYMTb4WkLZ}6aPIO_5DxHq_Qnk7?A=eCHg-75ec%@sJ z*qE8H+ahYopY8K^pDkCTQ6I?8zT^Cz;wKl!7E&=GcNYW*C@hpB69Q&{0m?T(X~e6{ z0t_D^>3tCk65-=%UEfukVztcq<=6xj6LL2uFpvoZ`YkevK^CGUmCz3!I{hc`a*k`g zSym}NrDcW2y7YFnoVMHQeq}6Xy^^`}q~{~0Ho7!Q`My#_Z7t_RrJh@D51msqg>LOu zX%bKcEBKImAJD|K&<=hsXIG1|%dK{fV%=10lW!@bK?`!1)?Fis&DU`!1QCQH61%r~ hBK_d7GIN`NWtsgyV4v~jeRRFw^oH-^Sa1kq`3qkGVH^Me literal 0 HcmV?d00001 diff --git a/myclass/myproject/myapp/__pycache__/forms.cpython-310.pyc b/myclass/myproject/myapp/__pycache__/forms.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..73c1cb8d262a87b252d6ce614127ea0c7b0dbdcb GIT binary patch literal 600 zcmZuuy-p)B5cc107PL7|5fv@fHmMOpr&Lgp0y-;_Wik#5vhiYvBDCCtTzgN!d$^_I z6{wim=yZ|pM)LR@kLUZw<2W84GPGa*`|=IDl^SCRNB>Doi?G>ebqL$iG<{)2ju9(hU35dJM@hb zR7%}s`niTp_;51sMrE=NeM}p_zMBRV0=uzE;3eI{gMGY@)1i?>6EF4flsvp^Ao!nF UX)bo-_(2oS)M3k7-tuGd1@}6At^fc4 literal 0 HcmV?d00001 diff --git a/myclass/myproject/myapp/__pycache__/models.cpython-310.pyc b/myclass/myproject/myapp/__pycache__/models.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..81444f68808814b4dca1c0b71161beab1558266f GIT binary patch literal 1909 zcmZ{lNsk*v6vwN2ad+G8Wt;^P5F|iAM#Km%NC=^coaI2q2gbRyB3f-%#p6l4+f=tj zJmQvsI4}|)0gm&P>dGnSx#fWPzw$DMnQ5t>U%lGj|5xR_UavBIzkl`X=pTo%zp1kQ zA;xx5iXUJE6Fg;89&t{-m0D9fvW;)2&eV-u&K@!02=^5euCxy;FYU-fq#`^-yj8?U z#1{b~!737n>OSk#USkc`;o9rn+wa}G{{U`fnhTj0@SG=wR3qxK{n@DOq7=7aB#XFU zk%d_u!G(3qBUjkMdBviNaIr!~yMuf-8BIRpjGb^@ohC2hRA%GyV1&r#BcDnS<+K9x zGdpDa7}3WdCrhT1ehZmCJ7KDU_BS6r`ugc~F-nu7!0$}uhjLWHOJ=jD%OiAW3+=^m zQK~qu(YzK+g&)<;j=HOse#g^(9MckUtgCU1!Sj^-FphtmC+V_9(YbZdJ4n>SiA;r} z8C8o6ZD-3gsp`V`CbOfCe}mahr!;b!q(V|ku=Gj1RfL4BQmT>i z8vGD(F5F`)s-xDBE)d|tJGP@H>Mi&_dhV?J0Dc=#R7DL?)LvTA6%mR$WV}fyL+-sv^Sp# zTJ4R0ccdhF{S!yEF;-n6L$hcMg7}Q18O3_b%Gpnlg0@ ztsp8~4K+|H%8vQ~rmsFE_e|UkH6~{tQ=>5#0%N1Ohf>fede{i#U#uH=;5v3+(YyEh zOPCIxxM409my*<>NodOre$-s=bc55*ML4NX(A{vPXrOlHc+`zh+EKVY>Qid}g3Mhq z=Ez<0=qQ)N@HtxFM=6MKpS6I2e+B}z_DPBI`6Mf`pjkT*heMAu9$nsc+m-7({{n;ke4_vW literal 0 HcmV?d00001 diff --git a/myclass/myproject/myapp/__pycache__/urls.cpython-310.pyc b/myclass/myproject/myapp/__pycache__/urls.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6b63d79b1a3dbdd7da7c5f7666e19ce8579c01e9 GIT binary patch literal 695 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 W4AuiTxE3q~t5C%nehc_Dn&Q8e#(bp! literal 0 HcmV?d00001 diff --git a/myclass/myproject/myapp/admin.py b/myclass/myproject/myapp/admin.py new file mode 100644 index 0000000..45c4af1 --- /dev/null +++ b/myclass/myproject/myapp/admin.py @@ -0,0 +1,8 @@ +from django.contrib import admin + +# Register your models here. +from .models import Room,Topic,Message + +admin.site.register(Room) +admin.site.register(Topic) +admin.site.register(Message) \ No newline at end of file diff --git a/myclass/myproject/myapp/apps.py b/myclass/myproject/myapp/apps.py new file mode 100644 index 0000000..af1106d --- /dev/null +++ b/myclass/myproject/myapp/apps.py @@ -0,0 +1,6 @@ +from django.apps import AppConfig + + +class MyappConfig(AppConfig): + default_auto_field = 'django.db.models.BigAutoField' + name = 'myapp' diff --git a/myclass/myproject/myapp/forms.py b/myclass/myproject/myapp/forms.py new file mode 100644 index 0000000..9af50be --- /dev/null +++ b/myclass/myproject/myapp/forms.py @@ -0,0 +1,8 @@ +from importlib.metadata import files +from django.forms import ModelForm +from .models import Room + +class RoomForm(ModelForm): + class Meta: + model=Room + fields='__all__' \ No newline at end of file diff --git a/myclass/myproject/myapp/migrations/0001_initial.py b/myclass/myproject/myapp/migrations/0001_initial.py new file mode 100644 index 0000000..29662da --- /dev/null +++ b/myclass/myproject/myapp/migrations/0001_initial.py @@ -0,0 +1,24 @@ +# Generated by Django 4.0.6 on 2022-08-27 17:36 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + initial = True + + dependencies = [ + ] + + operations = [ + migrations.CreateModel( + name='Room', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=40)), + ('desc', models.TextField(blank=True, null=True)), + ('update', models.DateTimeField(auto_now=True)), + ('created', models.DateTimeField(auto_now_add=True)), + ], + ), + ] diff --git a/myclass/myproject/myapp/migrations/0002_topic_room_host_alter_room_name_message_room_topic.py b/myclass/myproject/myapp/migrations/0002_topic_room_host_alter_room_name_message_room_topic.py new file mode 100644 index 0000000..ec35dcf --- /dev/null +++ b/myclass/myproject/myapp/migrations/0002_topic_room_host_alter_room_name_message_room_topic.py @@ -0,0 +1,49 @@ +# Generated by Django 4.0.6 on 2022-08-28 11:10 + +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), + ('myapp', '0001_initial'), + ] + + operations = [ + migrations.CreateModel( + name='Topic', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=300)), + ], + ), + migrations.AddField( + model_name='room', + name='host', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to=settings.AUTH_USER_MODEL), + ), + migrations.AlterField( + model_name='room', + name='name', + field=models.CharField(max_length=400), + ), + migrations.CreateModel( + name='Message', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('body', models.TextField()), + ('updated', models.DateTimeField(auto_now=True)), + ('created', models.DateTimeField(auto_now_add=True)), + ('room', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='myapp.room')), + ('user', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ], + ), + migrations.AddField( + model_name='room', + name='topic', + field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='myapp.topic'), + ), + ] diff --git a/myclass/myproject/myapp/migrations/0003_room_participants.py b/myclass/myproject/myapp/migrations/0003_room_participants.py new file mode 100644 index 0000000..66a125f --- /dev/null +++ b/myclass/myproject/myapp/migrations/0003_room_participants.py @@ -0,0 +1,20 @@ +# Generated by Django 4.0.6 on 2022-11-29 15:21 + +from django.conf import settings +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), + ('myapp', '0002_topic_room_host_alter_room_name_message_room_topic'), + ] + + operations = [ + migrations.AddField( + model_name='room', + name='participants', + field=models.ManyToManyField(blank=True, related_name='participants', to=settings.AUTH_USER_MODEL), + ), + ] diff --git a/myclass/myproject/myapp/migrations/0004_alter_room_options_rename_desc_room_description_and_more.py b/myclass/myproject/myapp/migrations/0004_alter_room_options_rename_desc_room_description_and_more.py new file mode 100644 index 0000000..640ac46 --- /dev/null +++ b/myclass/myproject/myapp/migrations/0004_alter_room_options_rename_desc_room_description_and_more.py @@ -0,0 +1,27 @@ +# Generated by Django 4.0.6 on 2022-11-29 15:35 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('myapp', '0003_room_participants'), + ] + + operations = [ + migrations.AlterModelOptions( + name='room', + options={'ordering': ['updated', '-created']}, + ), + migrations.RenameField( + model_name='room', + old_name='desc', + new_name='description', + ), + migrations.RenameField( + model_name='room', + old_name='update', + new_name='updated', + ), + ] diff --git a/myclass/myproject/myapp/migrations/0005_rename_description_room_desc.py b/myclass/myproject/myapp/migrations/0005_rename_description_room_desc.py new file mode 100644 index 0000000..18a72f2 --- /dev/null +++ b/myclass/myproject/myapp/migrations/0005_rename_description_room_desc.py @@ -0,0 +1,18 @@ +# Generated by Django 4.0.6 on 2022-11-29 15:45 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('myapp', '0004_alter_room_options_rename_desc_room_description_and_more'), + ] + + operations = [ + migrations.RenameField( + model_name='room', + old_name='description', + new_name='desc', + ), + ] diff --git a/myclass/myproject/myapp/migrations/__init__.py b/myclass/myproject/myapp/migrations/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/myclass/myproject/myapp/migrations/__pycache__/0001_initial.cpython-310.pyc b/myclass/myproject/myapp/migrations/__pycache__/0001_initial.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1198a88031cdacef708a53ecbddddcff1c4d15d6 GIT binary patch literal 778 zcmYjP&2G~`5Z+xoj_o)hAjE+a0tt~z6%M^1gbJ-%acB<^aj+t-HlC^L)PJlUXt=^P z55k-94149&R{#l^b%NSm?RdV~(R|=E`)R@Lx^u40z58 z9`i!Pg0m9_0-SFQ9OO&qs}nomzGsu(HRZC2Fkz9UTD4hKHpVL|z`RN9)$L{J59lL5iv{r5Nm=Y-Z|PYI>@R)bv|Z?dw{gz}^eGmA55a~L3JHZ>#$Y1|M}!B2hu!UH zhwfOE_F%jbDUTz#OJeVt;Pk)BnQ`A$RbfO1$40z8nz$xXtG1GfM%5yiL9Mew>9xGX zwFw&3naZ;-XrfQ37gd9@R0SH>+UsZ3&xF$(s4JOcnYI_k1#A*}m);^*`W;tUeK!3aAqBSrC@2-cMCgdh8t**A9GbJq(DBm&1Gr#svUd)SilB=enZ>_5(CM|iYuID%Z#(X-RK9@U$RJ PKGQ31DJ<7mJaGO2*(%r+ literal 0 HcmV?d00001 diff --git a/myclass/myproject/myapp/migrations/__pycache__/0002_topic_room_host_alter_room_name_message_room_topic.cpython-310.pyc b/myclass/myproject/myapp/migrations/__pycache__/0002_topic_room_host_alter_room_name_message_room_topic.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..512140ea1d267ab2b92a8738af0eaf6b0facf3ef GIT binary patch literal 1374 zcmZuxOK;mo5aupP@gd4~5?OK5_R^bxKyVARhaf1TSawp>a)DaD5C*oCW=)gjD_p9H zd`+$b@)MF{|I%J_>R$-ZptDQaae=O|tC`t(eEZEV%U;hna7?D%#ie5yAC+=@Sg1V3 zDIVhj29V6iNl1v2X-0E1G;=Gov~Fg0*m-V%1@>D5Y;LB`8#8pkJT-=$zcJnz66p%w zG)WPQA(eif#C6mpWg%oIFM(&`WTE_Sk8M<*;uPN!!{A0pzz8Wf-&@>HJ0A#;n1&A4 za)E-$z0}A0hyXg^tgQ)hqu`+FY@tauOe_7Ov0RfOG*Hqct2YTi`bh5N9#rs(zH zzjlp8@5G&3h#xAi+lb+-YrL@?4&ZBK`Wxv@uW3b&?R*tgl??Xx_rGIFku*t^NqbgS z$wJZuW=E3#JQ-Rth?Y&s7B!C=4zgR-NgmZJ_6J`{Pw*O}k}EEQKY2Yb1!qN+b7`qH zd4zqz#`<~mnq|C*o68}sRo7(aBH-+d4XVhv}s=5X4c}z&X8d*2 zrsz$OyIGR+R&@@>rw8N7q4dj&Z=T~{M*RZ<(#xmcpFcj&SBoqX0{^SJO!=Zg36FjL zC}CwBVbRSf8y9C4IU@=x3B2 zN+{VQ)<2f5B!46IsZX}>w?`fl`U(BIYIlIU?nj+<=*n)((r8f@7j0j>jRoeqg)R3F rZj7V$Q#86}w0@+hP#C|E(n>#~O}bCo>+us_R70p^1aybEWMKXan?{PO literal 0 HcmV?d00001 diff --git a/myclass/myproject/myapp/migrations/__pycache__/0003_room_participants.cpython-310.pyc b/myclass/myproject/myapp/migrations/__pycache__/0003_room_participants.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4162927da7b66c6bcafd28349c2a922c2d233aea GIT binary patch literal 735 zcmYjO&2H2{44%JavuUdKP$9vUQ!dr29FR~2twbpYwn%gnXQ z>pQ@aSDGs)UIB?8Cnwt1D=n7OdbvqrVKsjTx$ z1G=zjPur9LgCkUXh(?oy0!f(WUxfD7{#Ob#W61&ypi+Q&re>t=szRZ z)&<7^FZy~-zf89?S5>z#y&X^&np)p(;~Q!2BWEx_pPfEgmR(vXYw@fbv({;g9=5T( zTi_Ds_-LHZ=1BJIuJQ1x398*g6OfQIDt-%}QAT&E_!aya7-zBXwqUKQ%-AT|zD_JHpL|G-Vak4^73!=M* zzo6%9+*0ua6iC30lSQ|VJehf!nU^=VIXcQ1t?!S&lwSp7KSFT0Bn9WR`%^N&fH$n= z1?TLNfq>{Ug9!OXe2NMI@(s)5pOnXP?z6V8oE~b^^<{t#S3JiH$ zl4$@NHD;!!fxXw^hsm2wjj!|6r)q?h@|jXpwr!C7rBd&=x(N+J1Zc4X?8+K@M+d_E zgICRf?kdpS?Ehr(8bkg?jScwBSlkc#8*>k-WHi6uT|Qs8yRy-JPjBnY2Frmw8q50r zY}PcOXG#Z(X-s>y%8e8%sGU9>=vKM|QsD5+?p#ESGur(lGAR?0{3m0buH;f2M|UsN#^eA1 literal 0 HcmV?d00001 diff --git a/myclass/myproject/myapp/migrations/__pycache__/0005_rename_description_room_desc.cpython-310.pyc b/myclass/myproject/myapp/migrations/__pycache__/0005_rename_description_room_desc.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5e40ca84307b7f464aeec2de501236e2b2c2a7c6 GIT binary patch literal 586 zcmYjPu};G<5Vd2cq=7CV@d1b>3+ez10>nfmBs#!WRkA|vR3%E{U>BjzAU1x2jbHN0 z#4jMBa&|%OMR$33XFuPwtOtXXksW8R#XD#0(I#UuiG$Flf~*0GGcv?*sMpO?C|g)ePdOvxp=J*0qa!hz9tKI0RCvWh)1NQmDA zReI1P+AY_=`RB_b7dMN%>)iQpI6PK)Jx8OA){W9#I8YgE^9B{5EmjSWOc}Z=Z$UNM zpp$-&+urCo>61**^ct{Mp2a1)hCkHeQ$S-HC{Y0_B*xsyqC4Fx-V#a?~x1Al4qa_4Emggj~uv;{KCA$ujiEB)Jb&-p=$9+=oF!eLd0&?Gc4b S&Q@wK=)ExOAIMI$FMa{OETg&r literal 0 HcmV?d00001 diff --git a/myclass/myproject/myapp/migrations/__pycache__/__init__.cpython-310.pyc b/myclass/myproject/myapp/migrations/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..24d5fc4181a482262e27e5e1550448dbd3bc390c GIT binary patch literal 142 zcmd1j<>g`k0*Mct$sqbMh(HF6K#l_t7qb9~6oz01O-8?!3`HPe1o6wz-6|%xGC3!) zxEM$m6y;~7CYJzNi3J5QxtZxji6xo&dBrjD@tJvfa I0SOic017D}EC2ui literal 0 HcmV?d00001 diff --git a/myclass/myproject/myapp/models.py b/myclass/myproject/myapp/models.py new file mode 100644 index 0000000..8fb7605 --- /dev/null +++ b/myclass/myproject/myapp/models.py @@ -0,0 +1,42 @@ +from tkinter import CASCADE +from django.db import models +from django.contrib.auth.models import User +# from django.db.models.deletion import CASCADE + +# Create your models here. + +class Topic(models.Model): + name=models.CharField(max_length=300) + + def __str__(self): + return self.name + +class Room(models.Model): + host=models.ForeignKey(User,on_delete=models.SET_NULL,null=True) + topic=models.ForeignKey(Topic,on_delete=models.SET_NULL,null=True) + + name=models.CharField(max_length=400) + desc=models.TextField(null=True,blank=True) + participants=models.ManyToManyField(User,related_name='participants',blank=True) + updated=models.DateTimeField(auto_now=True) + created=models.DateTimeField(auto_now_add=True) + + class Meta: + ordering=['updated','-created'] + + def __str__(self): + return self.name + + +class Message(models.Model): + user=models.ForeignKey(User,on_delete=models.CASCADE) + room=models.ForeignKey(Room,on_delete=models.CASCADE) + body=models.TextField() + updated=models.DateTimeField(auto_now=True) + created=models.DateTimeField(auto_now_add=True) + + class Meta: + ordering=['updated','-created'] + + def __str__(self): + return self.body[0:50] \ No newline at end of file diff --git a/myclass/myproject/myapp/templates/base/activity_component.html b/myclass/myproject/myapp/templates/base/activity_component.html new file mode 100644 index 0000000..1a33ed5 --- /dev/null +++ b/myclass/myproject/myapp/templates/base/activity_component.html @@ -0,0 +1,14 @@ +

Recent Activity

+
+{% for message in room_messages %} +
+ @{{message.user}} {{message.created|timesince}} + replied to "{{message.room}}" + +

{{message}}

+ {% if request.user == message.user %} + Delete + {% endif %} +
+
+{% endfor %} \ No newline at end of file diff --git a/myclass/myproject/myapp/templates/base/delete.html b/myclass/myproject/myapp/templates/base/delete.html new file mode 100644 index 0000000..b508503 --- /dev/null +++ b/myclass/myproject/myapp/templates/base/delete.html @@ -0,0 +1,13 @@ +{% extends 'main.html' %} + +{% block contant %} + +
+ {% csrf_token %} +

Are you sure you want to delete "{{obj}}"?

+ Go Back + +
+ + +{% endblock contant %} \ No newline at end of file diff --git a/myclass/myproject/myapp/templates/base/feed_component.html b/myclass/myproject/myapp/templates/base/feed_component.html new file mode 100644 index 0000000..96e4eaf --- /dev/null +++ b/myclass/myproject/myapp/templates/base/feed_component.html @@ -0,0 +1,16 @@ +
+ {% for room in rooms %} +
+ {% if request.user == room.host %} + Edit + delete + {% endif %} + + @{{room.host.username}} + +

{{room.id}} -- {{room.name}}

+ {{room.topic.name}} +
+
+ {% endfor %} +
\ No newline at end of file diff --git a/myclass/myproject/myapp/templates/base/home.html b/myclass/myproject/myapp/templates/base/home.html new file mode 100644 index 0000000..da93c0e --- /dev/null +++ b/myclass/myproject/myapp/templates/base/home.html @@ -0,0 +1,34 @@ +{% extends 'main.html' %} + + +{% block contant %} + + + + + + +
+
+ {% include 'base/topics_component.html' %} +
+
+
{{room_count}} rooms available
+ Create Room + + {% include 'base/feed_component.html' %} +
+ +
+ {% include 'base/activity_component.html' %} +
+ +
+ + +{% endblock %} \ No newline at end of file diff --git a/myclass/myproject/myapp/templates/base/login_register.html b/myclass/myproject/myapp/templates/base/login_register.html new file mode 100644 index 0000000..4e2ca5f --- /dev/null +++ b/myclass/myproject/myapp/templates/base/login_register.html @@ -0,0 +1,35 @@ +{% extends 'main.html' %} + +{% block contant %} + +{% if '"page"=="login"' %} +
+ +
+ {% csrf_token %} + + + + + + + + +
+

haven't signed up yet?

+ Sign Up +
+ +{% else %} +
+
+ {% csrf_token %} + {{form.as_p}} + + +
+

Already signed up?

+login +
+{% endif %} +{% endblock contant %} \ No newline at end of file diff --git a/myclass/myproject/myapp/templates/base/profile.html b/myclass/myproject/myapp/templates/base/profile.html new file mode 100644 index 0000000..9036c0b --- /dev/null +++ b/myclass/myproject/myapp/templates/base/profile.html @@ -0,0 +1,6 @@ + \ No newline at end of file diff --git a/myclass/myproject/myapp/templates/base/room.html b/myclass/myproject/myapp/templates/base/room.html new file mode 100644 index 0000000..eddd702 --- /dev/null +++ b/myclass/myproject/myapp/templates/base/room.html @@ -0,0 +1,59 @@ +{% extends 'main.html' %} + + +{% block contant %} + + + + +
+
+

{{room.name}}

+

{{room.description}}

+ +
+

Conversation

+
+ + {% for message in room_messages %} +
+ {% if request.user == message.user %} + Delete + {% endif %} + @{{message.user}} {{message.created|timesince}} ago +

{{message.body}}

+
+
+ {% endfor %} +
+ + {% if request.user.is_authenticated %} +
+
+ {% csrf_token %} + +
+ +
+ {% endif %} +
+
+

participants

+
+ + {% for user in participants %} + +
+

@{{user.username}}

+
+ {% endfor %} + +
+
+{% endblock %} \ No newline at end of file diff --git a/myclass/myproject/myapp/templates/base/room_form.html b/myclass/myproject/myapp/templates/base/room_form.html new file mode 100644 index 0000000..ceec884 --- /dev/null +++ b/myclass/myproject/myapp/templates/base/room_form.html @@ -0,0 +1,14 @@ +{% extends 'main.html' %} + +{% block contant %} +
+
+ {% csrf_token %} + {{form.as_p}} + +
+
+ +{% endblock contant %} + + diff --git a/myclass/myproject/myapp/templates/base/topics_component.html b/myclass/myproject/myapp/templates/base/topics_component.html new file mode 100644 index 0000000..aa8227f --- /dev/null +++ b/myclass/myproject/myapp/templates/base/topics_component.html @@ -0,0 +1,11 @@ +

Browse Topic

+
+
+ All +
+{% for topic in topics %} + + +{% endfor %} \ No newline at end of file diff --git a/myclass/myproject/myapp/tests.py b/myclass/myproject/myapp/tests.py new file mode 100644 index 0000000..de8bdc0 --- /dev/null +++ b/myclass/myproject/myapp/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/myclass/myproject/myapp/urls.py b/myclass/myproject/myapp/urls.py new file mode 100644 index 0000000..19593ff --- /dev/null +++ b/myclass/myproject/myapp/urls.py @@ -0,0 +1,21 @@ + + +from django.urls import path +from myapp import views + +urlpatterns = [ + + path('login/',views.loginpage,name='login'), + path('logout/',views.logoutUser,name='logout'), + path('register/',views.registerpage,name='register'), + + path('',views.home,name="home"), + path('room//',views.room,name="room"), + # path('profile//',views.userProfile,name='user-Profile'), + + path('create-Room/',views.createRoom,name="create-Room"), + path('update-Room//',views.updateRoom,name="update-Room"), + path('delete-Room//',views.deleteRoom,name="delete-Room"), + path('delete-message//',views.deleteMessage,name="delete-message") + +] diff --git a/myclass/myproject/myapp/views.py b/myclass/myproject/myapp/views.py new file mode 100644 index 0000000..6c8ed3b --- /dev/null +++ b/myclass/myproject/myapp/views.py @@ -0,0 +1,161 @@ +from email import message +# from http.client import HTTPResponse +from django.http import HttpResponse +from multiprocessing import context +from django.shortcuts import render, redirect +from .models import Room,Topic,Message +from .forms import RoomForm +from django.db.models import Q #used for incapsulation or wrap the parameters +from django.contrib.auth import authenticate,login,logout +from django.contrib.auth.models import User +from django.contrib import messages +from django.contrib.auth.decorators import login_required +from django.contrib.auth.forms import UserCreationForm +# Create your views here. + +# rooms=[ +# {'id':1,'name':'frontent developer'}, +# {'id':2,'name':'lets learn python!'}, +# {'id':3,'name':'design with me'}, +# ] + + +def loginpage(request): + page='login' + if request.user.is_authenticated: + return redirect('home') + if request.method=="POST": + username=request.POST.get('username').lower() + password=request.POST.get('password') + + try: + user=User.objects.get(username=username) + + except: + messages.error(request,'user does not exist') + + user= authenticate(request,username=username,password=password) + + + if user is not None: + login(request,user) + return redirect('home') + else: + messages.error(request,'Username or password does not Exist!') + + context={'page':page} + return render(request,'base/login_register.html',context) + +def logoutUser(request): + logout(request) + return redirect('home') + +def registerpage(request): + form=UserCreationForm() + + if request.method == 'POST': + form = UserCreationForm(request.POST) + if form.is_valid(): + user = form.save(commit=False) + user.username = user.username.lower() + user.save() + login(request,user) + return redirect('home') + else: + message.error(request,'A error occured during registeration') + return render(request,'base/login_register.html',{'form' : form}) + + + +def home(request): + q=request.GET.get('q') if request.GET.get('q') != None else '' + rooms = Room.objects.filter( + Q(topic__name__icontains=q) | + Q(name__icontains=q) | + Q(desc__icontains=q) + ) + topics=Topic.objects.all() + room_count=rooms.count() + room_messages=Message.objects.filter(Q(room__topic__name__icontains=q)) + + context = {'rooms': rooms,'topics':topics, 'room_count':room_count,'room_messages':room_messages} + return render(request, 'base/home.html', context) + + +def room(request, pk): + room = Room.objects.get(id=pk) + room_messages=room.message_set.all() + participants=room.participants.all() + if request.method == 'POST': + message =Message.objects.create( + user=request.user, + room=room, + body= request.POST.get('body') + ) + room.participants.add(request.user) + return redirect('room',pk=room.id) + + + context = {'room': room, 'room_messages':room_messages, 'participants':participants} + return render(request, 'base/room.html', context) + + +# def userProfile(request,pk): +# user=User.objects.get(id=pk) +# context={'user':user} +# return render(request,'base/profile.html',context) + + +@login_required(login_url='login') +def createRoom(request): + form = RoomForm() + if request.method == 'POST': + form = RoomForm(request.POST) + if form.is_valid(): + form.save() + return redirect('home') + + context = {'form': form} + return render(request, 'base/room_form.html', context) + +@login_required(login_url='login') +def updateRoom(request, pk): + room = Room.objects.get(id=pk) + form = RoomForm(instance=room) + + if request.user != room.host: + return HttpResponse('you are not allowed here!') + + if request.method == 'POST': + form = RoomForm(request.POST, instance=room) + if form.is_valid(): + form.save() + return redirect('home') + context = {'form': form} + return render(request, 'base/room_form.html', context) + +@login_required(login_url='login') +def deleteRoom(request,pk): + room = Room.objects.get(id=pk) + + if request.user != room.host: + return HttpResponse('you are not allowed here!') + + if request.method=='POST': + room.delete() + return redirect('home') + return render(request,'base/delete.html',{'obj':room}) + + + +@login_required(login_url='login') +def deleteMessage(request,pk): + message = Message.objects.get(id=pk) + + if request.user != message.user: + return HttpResponse('you are not allowed here!') + + if request.method=='POST': + message.delete() + return redirect('home') + return render(request,'base/delete.html',{'obj':message}) \ No newline at end of file diff --git a/myclass/myproject/myproject/__init__.py b/myclass/myproject/myproject/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/myclass/myproject/myproject/__pycache__/__init__.cpython-310.pyc b/myclass/myproject/myproject/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0a5953cdec83074885e74853bf8b5e59bea8a827 GIT binary patch literal 135 zcmd1j<>g`kf>-Z3lR@-j5P=LBfgA@QE@lA|DGb33nv8xc8Hzx{2;!HPyH!kXWpYkp taWRlCD9X=DO)f!V#m8snWtPOp>lIYq;;_lhPbtkwwF8+^%mgG@7yx)R9uoin literal 0 HcmV?d00001 diff --git a/myclass/myproject/myproject/__pycache__/settings.cpython-310.pyc b/myclass/myproject/myproject/__pycache__/settings.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cdc857539caefa937d87d767bd50d49fa08cb55f GIT binary patch literal 2367 zcmb7F&2HO95GE;Fl4Z+r?EKmdzyhrkB{h}CMiK;V8d{QX7<~eWmqg01o%DP{KfsL zCE!J zPp}F-0cAgk)*Q?^nCDU6Dxz6b=!s|sCEEE9A`wyXt=to>1+-vYLYL4Y&Y{bz0$O@2 z5z$&i%jgQ&ETgOGcr6{T6R{^-m(dMt3Ei}oA>I{uuA&v|8qOSEe|G~gR^Ln3P4t%AQY;HPS6V#iWwt8k1E|TQv6{*3JTnIFCM&J zd)Rq)6n5?VZyveb`2GP6(eQX}gWlU5-0hg9Tzq8&qqeP+DODo7<5Sw@?9T$ z`2-;kA3G6N)BO`RRE>lP5E`dz@#b`paa!txzcJEHc$LlvffDe;K&_7%J!93XWv4-MXdPvWK(I^j6Ii4zJZof{)sC%hhhViO*5j}9I82)ac5emin} z-0COoKqvebPCHN?L>`UHV;qM4z6VXHb^rhe=%h*1YTA$Hc$xCq6HCgM(i(ZgZ0IBx zG7KYHlH)tmi07?Tggb*?eD?yD5q<@I#o~Ko+XO7FW&ASblP8&k%olzzhDWUVCg z+?G~(p*O2suGaPpp4WDF?NrLOcFkI=X~ZjM>>bk{NlF+YR~D zUwMS#jko~Hv0RdPR&VaqnmU)8T0@WK;0B1FPo{M=D^1hanB>n z;9z|~d8Tbv;v9SnpnJ+zb|l2N#_+(XA0q5gb&K?%%ffAfJycrdIopQY-nMzJ4|l3Z zI*|knb19@eZ`;XLl&nRVhTdz;vwgU20%qm6G(%60ofizfvZtH&3;hQ^Q`NWHJG`jX z>#cpgYCmrorok6#O~V8gD4DAXk#;TuwI6<-?E!d~U2yQsYZieOqhSO&dbC z?CqLful_1TYd}#t{B?Kd$&dcf_267#9)Bz+q?3=N+8^@#H*f?44?l(PzCfEW$in=5 zUR;#qoSc!R{7imME=aO0N@8A;KFWW~ALT_UCy7~6{s-hD=;Vp#PkC9E(!cCNCNKXB DQ*ACO literal 0 HcmV?d00001 diff --git a/myclass/myproject/myproject/__pycache__/urls.cpython-310.pyc b/myclass/myproject/myproject/__pycache__/urls.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d2680565f576c75c9d3fb3a525d85de46bfd8db4 GIT binary patch literal 960 zcma)5O^?$s5OvaI+fBQ`Pw2z{e#*%DS=Jri$&zc7X1+zlOgQ zapS~|GY5nxO{EA4X)VQ>jOOFLHxqew79e}R|2i$sM+p6ZkKys{$8-B=xG2gHb*Ni8 z+|67E>`^u1UgmK>^Bu%I>M?hFvK{YTYx~TnCwph_uH9@x$L~=zA<9LF?`kEttT6cF zyEphkidDI86fva~LGWS2@O7iAni#{B(AT&swZTd@hG|I9*hu`jWM6cQFQvj0PSOJfnLU43-!zc=V+T}%&)B1$+Qbca+f#U7BkG?tS{7H*$0=@&;0MOg$v>oTU zU7I}5?(|44L8HngtTAe*1Nh4RJxF=r_H=1j>p_inIvDgfq^1xA*YEqU(ocL>z*z0O kU&w(4*>SyVCr`MfO~sx$HcQX!<)PW#d(Lb$b0&ZO0$VjHe*gdg literal 0 HcmV?d00001 diff --git a/myclass/myproject/myproject/__pycache__/wsgi.cpython-310.pyc b/myclass/myproject/myproject/__pycache__/wsgi.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fc20d02afbb81008c42f5f79746cd9c80a469a4b GIT binary patch literal 542 zcmYjO!A=`75cN8Nz_uWSD$YJ3MWVYLdO{UyrO+sdhC`^3BBYJGo@^X>J*%}znq2!C zT;Rwj;cHKD;m!$fLQzKYjK`yS?~MnywnF0V>3K7~2?+UDC978V$v1z@p?8Axi3kK$ zK|k=Zrf6R4*8&2;xPH4P>SFDV`mFYs^w$OLk>>jRA-wFhJ1j*#lo=ah$?{oI;uuoP z-eMGn9n0WPfd&k-BVfxGt`z^RfN{e(%TZh__^e<8icNSa7bVSe5Nt5uMWJNMtwcQ- zc)TAK50=2B_LTXez)*W|Y1mLIIA8`K99dhKqc|3rnn;Yf&hWpc6!RE#{3SY!M>w?@ z3n&!Ma?m!OnoP#wqyG@nZ3gaB1~#eQk`)Zx1<^hB1ZUFaJH4EeRP?!yY_Jt?bY tF5Jt0`{*j4rHUKltti|Bi*JUeFbMRsht1- literal 0 HcmV?d00001 diff --git a/myclass/myproject/myproject/asgi.py b/myclass/myproject/myproject/asgi.py new file mode 100644 index 0000000..8d061fd --- /dev/null +++ b/myclass/myproject/myproject/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for myproject project. + +It exposes the ASGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/4.0/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings') + +application = get_asgi_application() diff --git a/myclass/myproject/myproject/settings.py b/myclass/myproject/myproject/settings.py new file mode 100644 index 0000000..0d5f527 --- /dev/null +++ b/myclass/myproject/myproject/settings.py @@ -0,0 +1,127 @@ +""" +Django settings for myproject project. + +Generated by 'django-admin startproject' using Django 4.0.6. + +For more information on this file, see +https://docs.djangoproject.com/en/4.0/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/4.0/ref/settings/ +""" + +from pathlib import Path +import os +# Build paths inside the project like this: BASE_DIR / 'subdir'. +BASE_DIR = Path(__file__).resolve().parent.parent + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/4.0/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = 'django-insecure-tkk%z&(y!lt2=2op3b$2v&6b@kof_0x7cfz0hsodyw&3s+4u*b' + +# SECURITY WARNING: don't run with debug turned on in production! +DEBUG = True + +ALLOWED_HOSTS = [] + + +# Application definition + +INSTALLED_APPS = [ + 'django.contrib.admin', + 'django.contrib.auth', + 'django.contrib.contenttypes', + 'django.contrib.sessions', + 'django.contrib.messages', + 'django.contrib.staticfiles', + 'myapp.apps.MyappConfig', + +] + +MIDDLEWARE = [ + 'django.middleware.security.SecurityMiddleware', + 'django.contrib.sessions.middleware.SessionMiddleware', + 'django.middleware.common.CommonMiddleware', + 'django.middleware.csrf.CsrfViewMiddleware', + 'django.contrib.auth.middleware.AuthenticationMiddleware', + 'django.contrib.messages.middleware.MessageMiddleware', + 'django.middleware.clickjacking.XFrameOptionsMiddleware', +] + +ROOT_URLCONF = 'myproject.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': ['templates'], + 'APP_DIRS': True, + 'OPTIONS': { + 'context_processors': [ + 'django.template.context_processors.debug', + 'django.template.context_processors.request', + 'django.contrib.auth.context_processors.auth', + 'django.contrib.messages.context_processors.messages', + ], + }, + }, +] + +WSGI_APPLICATION = 'myproject.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/4.0/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': BASE_DIR / 'db.sqlite3', + } +} + + +# Password validation +# https://docs.djangoproject.com/en/4.0/ref/settings/#auth-password-validators + +AUTH_PASSWORD_VALIDATORS = [ + { + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', + }, + { + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', + }, +] + + +# Internationalization +# https://docs.djangoproject.com/en/4.0/topics/i18n/ + +LANGUAGE_CODE = 'en-us' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/4.0/howto/static-files/ + +STATIC_URL = 'static/' + + +STATIC_ROOT=os.path.join(BASE_DIR,'static') +# Default primary key field type +# https://docs.djangoproject.com/en/4.0/ref/settings/#default-auto-field + +DEFAULT_AUTO_FIELD = 'django.db.models.BigAutoField' diff --git a/myclass/myproject/myproject/urls.py b/myclass/myproject/myproject/urls.py new file mode 100644 index 0000000..8076f92 --- /dev/null +++ b/myclass/myproject/myproject/urls.py @@ -0,0 +1,22 @@ +"""myproject URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/4.0/topics/http/urls/ +Examples: +Function views + 1. Add an import: from my_app import views + 2. Add a URL to urlpatterns: path('', views.home, name='home') +Class-based views + 1. Add an import: from other_app.views import Home + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home') +Including another URLconf + 1. Import the include() function: from django.urls import include, path + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls')) +""" +from django.contrib import admin +from django.urls import path,include + +urlpatterns = [ + path('admin/', admin.site.urls), + path('',include('myapp.urls')) +] diff --git a/myclass/myproject/myproject/wsgi.py b/myclass/myproject/myproject/wsgi.py new file mode 100644 index 0000000..dd25891 --- /dev/null +++ b/myclass/myproject/myproject/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for myproject project. + +It exposes the WSGI callable as a module-level variable named ``application``. + +For more information on this file, see +https://docs.djangoproject.com/en/4.0/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'myproject.settings') + +application = get_wsgi_application() diff --git a/myclass/myproject/templates/main.html b/myclass/myproject/templates/main.html new file mode 100644 index 0000000..ccd753e --- /dev/null +++ b/myclass/myproject/templates/main.html @@ -0,0 +1,33 @@ + + + + + + + {% load static %} + + + + + classBudy + + + + + +{% include 'navbar.html' %} + +{% if messages %} +
    + {% for message in messages %} +
  • {{ message }}
  • + {% endfor %} +
+{% endif %} + +{% block contant %} + +{% endblock %} + + + \ No newline at end of file diff --git a/myclass/myproject/templates/navbar.html b/myclass/myproject/templates/navbar.html new file mode 100644 index 0000000..5899e12 --- /dev/null +++ b/myclass/myproject/templates/navbar.html @@ -0,0 +1,14 @@ + +

UniHelp

+ +
+ +
+ +{% if request.user.is_authenticated %} +

Hello {{request.user}}

+Logout +{% else %} +Login +{% endif %} +
\ No newline at end of file diff --git a/myclass/static/styles/main.css b/myclass/static/styles/main.css new file mode 100644 index 0000000..ec7395a --- /dev/null +++ b/myclass/static/styles/main.css @@ -0,0 +1,3 @@ +body{ + background-color:rgb(88, 147, 128) ; +} \ No newline at end of file