From dc1ea062d014b8c80855c045c377abd06c694361 Mon Sep 17 00:00:00 2001 From: MickSlash Date: Thu, 7 May 2020 15:12:49 +0200 Subject: [PATCH] Fist Commit --- BoxTitoli/__init__.py | 0 BoxTitoli/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 154 bytes BoxTitoli/__pycache__/settings.cpython-38.pyc | Bin 0 -> 2454 bytes BoxTitoli/__pycache__/urls.cpython-38.pyc | Bin 0 -> 1113 bytes BoxTitoli/__pycache__/wsgi.cpython-38.pyc | Bin 0 -> 561 bytes BoxTitoli/asgi.py | 16 +++ BoxTitoli/settings.py | 128 ++++++++++++++++++ BoxTitoli/urls.py | 23 ++++ BoxTitoli/wsgi.py | 16 +++ db.sqlite3 | Bin 0 -> 135168 bytes manage.py | 21 +++ random_id/__init__.py | 0 random_id/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 154 bytes random_id/__pycache__/utils.cpython-38.pyc | Bin 0 -> 631 bytes random_id/utils.py | 8 ++ templates/Homepage.html | 20 +++ templates/base.html | 25 ++++ templates/crea_titolo.html | 16 +++ templates/streaming.html | 29 ++++ titoli/__init__.py | 1 + titoli/__pycache__/__init__.cpython-38.pyc | Bin 0 -> 198 bytes titoli/__pycache__/admin.cpython-38.pyc | Bin 0 -> 264 bytes titoli/__pycache__/apps.cpython-38.pyc | Bin 0 -> 520 bytes titoli/__pycache__/forms.cpython-38.pyc | Bin 0 -> 577 bytes titoli/__pycache__/models.cpython-38.pyc | Bin 0 -> 1056 bytes titoli/__pycache__/signals.cpython-38.pyc | Bin 0 -> 570 bytes titoli/__pycache__/urls.cpython-38.pyc | Bin 0 -> 421 bytes titoli/__pycache__/views.cpython-38.pyc | Bin 0 -> 1079 bytes titoli/admin.py | 6 + titoli/apps.py | 8 ++ titoli/forms.py | 9 ++ titoli/migrations/0001_initial.py | 28 ++++ titoli/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-38.pyc | Bin 0 -> 800 bytes .../__pycache__/__init__.cpython-38.pyc | Bin 0 -> 162 bytes titoli/models.py | 20 +++ titoli/signals.py | 11 ++ titoli/tests.py | 3 + titoli/urls.py | 8 ++ titoli/views.py | 28 ++++ 40 files changed, 424 insertions(+) create mode 100644 BoxTitoli/__init__.py create mode 100644 BoxTitoli/__pycache__/__init__.cpython-38.pyc create mode 100644 BoxTitoli/__pycache__/settings.cpython-38.pyc create mode 100644 BoxTitoli/__pycache__/urls.cpython-38.pyc create mode 100644 BoxTitoli/__pycache__/wsgi.cpython-38.pyc create mode 100644 BoxTitoli/asgi.py create mode 100644 BoxTitoli/settings.py create mode 100644 BoxTitoli/urls.py create mode 100644 BoxTitoli/wsgi.py create mode 100644 db.sqlite3 create mode 100644 manage.py create mode 100644 random_id/__init__.py create mode 100644 random_id/__pycache__/__init__.cpython-38.pyc create mode 100644 random_id/__pycache__/utils.cpython-38.pyc create mode 100644 random_id/utils.py create mode 100644 templates/Homepage.html create mode 100644 templates/base.html create mode 100644 templates/crea_titolo.html create mode 100644 templates/streaming.html create mode 100644 titoli/__init__.py create mode 100644 titoli/__pycache__/__init__.cpython-38.pyc create mode 100644 titoli/__pycache__/admin.cpython-38.pyc create mode 100644 titoli/__pycache__/apps.cpython-38.pyc create mode 100644 titoli/__pycache__/forms.cpython-38.pyc create mode 100644 titoli/__pycache__/models.cpython-38.pyc create mode 100644 titoli/__pycache__/signals.cpython-38.pyc create mode 100644 titoli/__pycache__/urls.cpython-38.pyc create mode 100644 titoli/__pycache__/views.cpython-38.pyc create mode 100644 titoli/admin.py create mode 100644 titoli/apps.py create mode 100644 titoli/forms.py create mode 100644 titoli/migrations/0001_initial.py create mode 100644 titoli/migrations/__init__.py create mode 100644 titoli/migrations/__pycache__/0001_initial.cpython-38.pyc create mode 100644 titoli/migrations/__pycache__/__init__.cpython-38.pyc create mode 100644 titoli/models.py create mode 100644 titoli/signals.py create mode 100644 titoli/tests.py create mode 100644 titoli/urls.py create mode 100644 titoli/views.py diff --git a/BoxTitoli/__init__.py b/BoxTitoli/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/BoxTitoli/__pycache__/__init__.cpython-38.pyc b/BoxTitoli/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..45fbc68be6f38ecf5ce5ff6ebbceed24294c889a GIT binary patch literal 154 zcmWIL<>g`kf-5N-<3RLd5P=LBfgA@QE@lA|DGb33nv8xc8Hzx{2;!H$vsFxJacWU< zjBjRgMq+ACj7w^9c1eCgjB|cUW^!tbQ+`EAW=VcdCK4+?J~J<~BtBlRpz;=nO>TZl OX-=vg$l%XF%m4rsj3x#E literal 0 HcmV?d00001 diff --git a/BoxTitoli/__pycache__/settings.cpython-38.pyc b/BoxTitoli/__pycache__/settings.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d69e247f9d57c45687d039bb7928c4fdababea7d GIT binary patch literal 2454 zcmb7F-E-4M5VsX!J0=c+gs(tbQJ|0ja?(JdOb1YGC3x^hCbCJ~=*|t% zL;n(H+C28L|Bhb!)Ym>RZHFmc$saKeGfgFHeYdy2-|p@0N{w7Do4~95)2}bra*4!m z(PZ?>;N%HD><<)>&=ZgZ!Aj~$lH3)3o*0oLIdPDTZaoDPdKyGM11H)^eG*cTh73$X z7EZzxN9W^uA${sxE{-|VtIom+oFCNZt7=XL7&Cg=I}X- z&pBAs&kuQS9SHgbxUFA=JNi5bT4F&qb|K{?pjpx ze0P_$xSY+d6NmUFCm=QVr5g~V?wDXxM`GOcdEfGe)Mdyc^=Vh+CHWqr*O1kAeIii@ z9oQzPt|Q@(cPP4~7P*ZPkZgx@k3G!i!EG_Q=VK5-%eC{w$s=K&yB=+^{2=6fkDhmk zw9~aL$)b!)?#|(sOb5^rp}zEkX>|$vKfZjjGverXER{qx`1%^ZVy}2N?dI-MaK-gK zlU}88pD(>$@t%D9a=CMld-u(y=JK1x2lmUAU2DOrhsniYuD2z*)-QJc3q~c&4X#eAfC@%csoSH=+Y# z!JR(BrT`Y%Gkqd6((3w@@5@?$P#LZTcgG#{Ly|}ET2D8ES~%(i&)Iezxe)*Thbi-S z z{hDvuq~=96&qi?5!#0zUycFhGJEzsQx52dGK^B^tgyTld(P52LoRu6k>OBgArfh zQ9pM%(Wp%=Gis9OJqy{(@8-X>fZ|=g!keH faYjr>x~YF~oD&kL6_3bw;;e}3_)dw!G>-lScSSmM literal 0 HcmV?d00001 diff --git a/BoxTitoli/__pycache__/urls.cpython-38.pyc b/BoxTitoli/__pycache__/urls.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0f6eaf85eaca33ae397da851ec5764bde05723bb GIT binary patch literal 1113 zcma)5%Wl*#6m>G0M>EsMu3PV>kxIg2H#|g{wxSZHQfW8Qh%}8oGoHqAWINDy+cm#| z#FF317B>6>5{TVA!E%%=DKHdiZ2S8=CRgP zX6gc`Old4dp{X(#6xIU2WAwf9@u85I3rR7{rb6-x0_Q1>6~&6uk&9u>wa(Qj2#83O zPZn`D6S))%nrJ@}JfKa`&fTp{`ERzDsh9;|;HuKl98|bN&vU;) zb0g0x+cDuR^X#%)=ar7J9u9hnY7Jsk*-;w$D7o!axj~6;`?~7Z3eB^il|@o;n(0Ui zp>*Rq=Y|+qytO1{U>)?LHoG%X$D zPPuk`uz$1{fybr03{Ou^&dPqHkv<{0Y3`ck`{VIwa;~UUlVg_5W13F(sk(wLpNs`z r37!1@g^kEm^7EUr_k;^lr1Y5uP-+VnXLDd}SzE1vHTY?_Hh%m9%5GT_ literal 0 HcmV?d00001 diff --git a/BoxTitoli/__pycache__/wsgi.cpython-38.pyc b/BoxTitoli/__pycache__/wsgi.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..98c48cf47bae0a8b4922305b8218cd83fc4696f9 GIT binary patch literal 561 zcmYjPO>Yx15cN7~6P6YsggE;e33e-SD+mEiiBi$@kVHt)ijBLTY@B*MtF@bcT=^MX z+GCIW7cTh9sehp-yosnXlAk>u&Ac~bk9T)N;_bKi_5Ei+$lu!8w5E4H`epV!2r?le z5L5+|!0!!3i^il85C|5{n=R24TesAEjUQyPE$EPRwy*z$--f+D%TUi`&SqG#&v-eK z7L{aWg$u}R6o!4v;Ic#mhS@o=bqZICpDJM7FwP1T=L+5^Sb}0pUddHR^8y5$PI*}> znQ<#oPp7`#7td2*1x#vBS*!vKwJ$CWn@I()nE?pr)|O^Jjs<2W5(}<#{I4m)A_g75 zjrQU>URaC;lnSp3&^Ep>xs1bmKM*qL1ny-HHm&c{4H@oL_vq80cajbdN2C6rH%yOD zy5p~h*DoIXj|^BVb#6K>*Gf|_B267dy86=N7HcmBJR9?CE`}Mp(_%A_B N+e7n7o9@tO^dHc_u!{fy literal 0 HcmV?d00001 diff --git a/BoxTitoli/asgi.py b/BoxTitoli/asgi.py new file mode 100644 index 0000000..7a53412 --- /dev/null +++ b/BoxTitoli/asgi.py @@ -0,0 +1,16 @@ +""" +ASGI config for BoxTitoli 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/3.0/howto/deployment/asgi/ +""" + +import os + +from django.core.asgi import get_asgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'BoxTitoli.settings') + +application = get_asgi_application() diff --git a/BoxTitoli/settings.py b/BoxTitoli/settings.py new file mode 100644 index 0000000..3a0058a --- /dev/null +++ b/BoxTitoli/settings.py @@ -0,0 +1,128 @@ +""" +Django settings for BoxTitoli project. + +Generated by 'django-admin startproject' using Django 3.0.5. + +For more information on this file, see +https://docs.djangoproject.com/en/3.0/topics/settings/ + +For the full list of settings and their values, see +https://docs.djangoproject.com/en/3.0/ref/settings/ +""" + +import os + +# Build paths inside the project like this: os.path.join(BASE_DIR, ...) +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) + + +# Quick-start development settings - unsuitable for production +# See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/ + +# SECURITY WARNING: keep the secret key used in production secret! +SECRET_KEY = '$t!m3p(mbj0z!orpai#id7t0q3p@9^1h5tp7a0b1x*8m^3jl)l' + +# 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', + 'titoli', + 'crispy_forms' +] + +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 = 'BoxTitoli.urls' + +TEMPLATES = [ + { + 'BACKEND': 'django.template.backends.django.DjangoTemplates', + 'DIRS': [os.path.join(BASE_DIR, '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 = 'BoxTitoli.wsgi.application' + + +# Database +# https://docs.djangoproject.com/en/3.0/ref/settings/#databases + +DATABASES = { + 'default': { + 'ENGINE': 'django.db.backends.sqlite3', + 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), + } +} + + +# Password validation +# https://docs.djangoproject.com/en/3.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/3.0/topics/i18n/ + +LANGUAGE_CODE = 'it' + +TIME_ZONE = 'UTC' + +USE_I18N = True + +USE_L10N = True + +USE_TZ = True + + +# Static files (CSS, JavaScript, Images) +# https://docs.djangoproject.com/en/3.0/howto/static-files/ + +STATIC_URL = '/static/' + +MEDIA_ROOT = (os.path.join(BASE_DIR, 'file')) + +MEDIA_URL = '/media/' + +CRISPY_TEMPLATE_PACK = 'bootstrap4' \ No newline at end of file diff --git a/BoxTitoli/urls.py b/BoxTitoli/urls.py new file mode 100644 index 0000000..00697f2 --- /dev/null +++ b/BoxTitoli/urls.py @@ -0,0 +1,23 @@ +"""BoxTitoli URL Configuration + +The `urlpatterns` list routes URLs to views. For more information please see: + https://docs.djangoproject.com/en/3.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 include,path +from django.conf.urls.static import settings,static + +urlpatterns = [ + path('admin/', admin.site.urls), + path("",include('titoli.urls')) +] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT) diff --git a/BoxTitoli/wsgi.py b/BoxTitoli/wsgi.py new file mode 100644 index 0000000..6d5fb22 --- /dev/null +++ b/BoxTitoli/wsgi.py @@ -0,0 +1,16 @@ +""" +WSGI config for BoxTitoli 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/3.0/howto/deployment/wsgi/ +""" + +import os + +from django.core.wsgi import get_wsgi_application + +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'BoxTitoli.settings') + +application = get_wsgi_application() diff --git a/db.sqlite3 b/db.sqlite3 new file mode 100644 index 0000000000000000000000000000000000000000..c1f11b60f290e098aacdebeb52600a3119fe7f3e GIT binary patch literal 135168 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 Xub}c4hfQvNN@-529mwF%K+FIDq&Ou@ literal 0 HcmV?d00001 diff --git a/random_id/__pycache__/utils.cpython-38.pyc b/random_id/__pycache__/utils.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1cf9a3803dd071461a888c989e431dc193942f20 GIT binary patch literal 631 zcmZuuO>fgc5S`iBt_zB&dLSGS_go?*E(k>tX<9XvS_|cagJrNR@7CGk+Gf{LTU1W1 z1b=~Bd+d?FvsX_23!IpBLdAiR=I!k4zBf<1^LG0YP`vo@^J51Ae%Z~x(W1>;O8uIE z1IHY~)ruhsJYkfr4iGvW2wl!XPq@N6X1v9nYYaCyPND1G6B~m2$Al@f^*U_rQra>4 zIRVET_y)(wN#NSA@e;3a7q0Nu$~b|6lw3Z9r8|_bDD^XfOZc$$6>GS`?{JIn0pT;_ zKvWF6%y=p(czJ5PbWzGwP>1zi8jSDIxalHM`VM~gM{lCJ7D`7)l6oSKc7^^_msK<> zIgz5B@_Z)iGMCXxEtWi5)-u<<>cVXHGf{~1N)3E#$$E2u!I!RWtE3k3nxtzbi>%kr z%QVULp!dKdQ_e{#3**wwj6AAM5;0ybimYBJ`&-ItEBlt_>Hl>%=u9{7jB1POuCJ^W zxRc=CTksT4-emshr#@4Z*nk-N8{mS8n&mi$w9Cm kAMOSFvvD(E<*PB*Kx5ADpO$=?i-G+zZB6^=vu$+PAAzo!asU7T literal 0 HcmV?d00001 diff --git a/random_id/utils.py b/random_id/utils.py new file mode 100644 index 0000000..595a248 --- /dev/null +++ b/random_id/utils.py @@ -0,0 +1,8 @@ +import random +import string + +ALPHANUMERIC_CHARS = string.ascii_lowercase + string.ascii_uppercase + string.digits +STRING_LENGTH = 11 + +def generate_random_string(chars=ALPHANUMERIC_CHARS,length=STRING_LENGTH): + return "".join(random.choice(chars) for _ in range(length)) \ No newline at end of file diff --git a/templates/Homepage.html b/templates/Homepage.html new file mode 100644 index 0000000..08e5694 --- /dev/null +++ b/templates/Homepage.html @@ -0,0 +1,20 @@ +{% extends "base.html" %} +{% block title %} LORDCHANNEL - LISTA TITOLI {% endblock title %} + + +{% block content %} + +

Boxtitoli :

+
+ + {% for lista_titoli in titoli %} + +
+
+ +{% endfor %} +{% endblock content %} \ No newline at end of file diff --git a/templates/base.html b/templates/base.html new file mode 100644 index 0000000..c8a3148 --- /dev/null +++ b/templates/base.html @@ -0,0 +1,25 @@ + + + + + + + + + {% block css %} {% endblock css %} + {% block title %} {% endblock title %} + + +
+ {% block content %} + + {% endblock content %} +
+ + + + + + + + \ No newline at end of file diff --git a/templates/crea_titolo.html b/templates/crea_titolo.html new file mode 100644 index 0000000..5346064 --- /dev/null +++ b/templates/crea_titolo.html @@ -0,0 +1,16 @@ +{% extends "base.html" %} +{% load crispy_forms_tags %} +{% block title %} LORDCHANNEL - CREA TITOLO {% endblock title %} + + +{% block content %} + +

Crea Titolo :

+
+
+ {% csrf_token %} +{{ form|crispy }} + +
+
+{% endblock content %} \ No newline at end of file diff --git a/templates/streaming.html b/templates/streaming.html new file mode 100644 index 0000000..eea5efd --- /dev/null +++ b/templates/streaming.html @@ -0,0 +1,29 @@ +{% extends "base.html" %} +{% block title %} GUARDA IN STREAMING {{ streaming.titolo }} {% endblock title %} +{% block css %} + + {% endblock css %} + {% block content %} + + +
+ +
+ + + {% endblock content %} \ No newline at end of file diff --git a/titoli/__init__.py b/titoli/__init__.py new file mode 100644 index 0000000..285bcc5 --- /dev/null +++ b/titoli/__init__.py @@ -0,0 +1 @@ +default_app_config = "titoli.apps.TitoliConfig" \ No newline at end of file diff --git a/titoli/__pycache__/__init__.cpython-38.pyc b/titoli/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cbd72534cc2866c850ac9b62fdb3e26b7836db23 GIT binary patch literal 198 zcmWIL<>g`kg0s0BG47@$s2?nI-Y@dIgoYIBatBQ%ZAE?Lcn( H48#loe8M;I literal 0 HcmV?d00001 diff --git a/titoli/__pycache__/admin.cpython-38.pyc b/titoli/__pycache__/admin.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8566ee20f7571707846879e9de6045c2ae173cd9 GIT binary patch literal 264 zcmYjLu};G<6!eRoD5_e%gDl-aRfQ;PS)fZ~RSNM_dBuq<+m%5442+EYPFAM=0u#?+ z=}GUN?sU@KW;UA$#-jh;zVrV{;vAC24PUrqGQxlr9n=8AWJcPoleGkauvZ^B%FpDh z2T|oGPKyeLyfGd1C-_&zBSmN3eO1&KX5aKXH*Z}ZJw5r16GPECgEn}TgbEaKC_U~d zMD$<6mu!#pd$qdOn}9y(HMP$TT78G%CAx!NIYTY#TlYG4k&da7^tfYwcpJ(EmmDoF L)25J`rZ821Pwhi) literal 0 HcmV?d00001 diff --git a/titoli/__pycache__/apps.cpython-38.pyc b/titoli/__pycache__/apps.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..26b8dae9ba3a853c09c3b1e933b7d94f97b37cbf GIT binary patch literal 520 zcmYjNu};G<5Ve!Egpx8aF|uaKj1WSFATf~zxAbw&pv;dMBxH$megi}cxno~+H2=}=EO1LlR zi=TTuxFYfB8@fnL?e=NcrK(-j%L;FX=0P$8H~RpB* zau$zl$XHu8f-yT`tWkU|@f;df=b cR0*omsH3k8=JAypNo;uRmY?AF^qM387cLxgasU7T literal 0 HcmV?d00001 diff --git a/titoli/__pycache__/forms.cpython-38.pyc b/titoli/__pycache__/forms.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4e5d1e8ca32543eb3d3f55c9932ab5273694aee4 GIT binary patch literal 577 zcmZ`#Jx{|h5cNmWrd0|X0~2c`)E$Hnq6nsTfi6*m74=LBI5otr1gz!Hz{cP4%GAHW z#GN~|1Dtd(cki5cALCxH%g_#%U$>w5{ibBwB23QE-5~-n;D*&a=bV86X+$k^$=MZy z2;z4JvF1yeN6@-vS$lZDRK!Cr6b=ZxqnosNl@9_QqeRPpYl8gfeP|%ccaiB>Urtg&Mc;?f>GA;iBhw& z)=K%VQniJJp*U6Qc~P2mrJ>9C7>nBYwtktI1?Ugfq(}$&IT{=nW2YNe46Dg~sZDXA z-Q(Oo6$1;^L>K4wC9F^tbGk=W+~HEL|Mco3ny8IRj=Cf~;>`{QqbzEOZ4!bG0nwYD z>!?Ruj6m)LLLx#w%HlkQhjKQx{m`qSqHl#IT-YeQ`%BO#C+kC;(tX2RDNp4ud{KL9 literal 0 HcmV?d00001 diff --git a/titoli/__pycache__/models.cpython-38.pyc b/titoli/__pycache__/models.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..20a1fc3e48eade2098bf75801a361fd2ecec1a09 GIT binary patch literal 1056 zcmZuw&2AGh5VrRx*(AHAP^3OXB$Nxc3ZaT1xX>J+;b28rn~b~N#K{(W7fQvgz4jg8 z*dwpwE2q8!CuW=!MYLXdJY$b%zHi1m&ay7UkzM@y^gLkfHyPU_LgNsp9iRXPT(cz? zoRc2tU>S;#v$qUFh^`n!iqE6VP{a^_VExuD-eG<2TFVNQwy3p@`l5_gGdkHGF&c+B z?MD=f2@XsIDx62aA-Luu_Bv+4FTM^%ONBq$Kbc52YX@4;zG9*a33PDnA*L?$5L53m z5GkaHCv&aivaWPhKI0x&cbT6{tyV>SdfUUi$NkU{5Erc)tzA6T`D!sk-+zO2nnRqn zh2lG#GYri~M6>qMZ@7!B(kC~}r0DVIV0bVYTVy>sDrcv;(v#Q9F6!!RGOVDSsmZJA z+~X=IK0rBHmuqnL&9$YpwULqnS?mvHzt~xm7;KL2;iHy$d{0oRv1Je-N?vjZuLHyy zjl^!z2?cM%Y14p-PB4p zMw90q$o&n-|9$Q?o~n6B7oVcIYdmlfLLedt3GYR36YNOUxgmOD-Nqgor!FrtK1MN3H&9&xje%BY_i z+BJJ52)CiuxX$o2H*ZR%!E|Vo>fw^{`*(g%WV&1}q*_iDfC3SnRCQ%`$nh}=iu@1? zPne#XCEtXne3vIY36d}g{n@DBavhlGtD+jfbPc7qv9T-Gx6#E%^bh(A4`p%5i*@Z@ LQbRo7l&8^OF|F;} literal 0 HcmV?d00001 diff --git a/titoli/__pycache__/signals.cpython-38.pyc b/titoli/__pycache__/signals.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5d7d5947200e1204d71a4792b8ccd92bf38e85a8 GIT binary patch literal 570 zcmY*XJ8s-C5asCah1c#DL2jUC50C_bVW&uAr*PZ|LIg$}$h0YO!QuJ?tgB7w93*9~ zqc)YVkSarY4LBok<_$G`dXLb>d_EH#*8cwX2txb`&Fe_GIpRg1IVqvQh#o3{fFl$2 zaTQNEHc6jWDdR+?ChPMm2Z1pH<|_LcsazF5#1^VT?VXEq_QY(Wgt1sTY)IZ7jdKiQ!oGReNh}K!k%r*G7SG7b(}!f8j-MIc>l#HgF|q z;bAKtl1;LKh8?gHI4h$uC$sJvtz2+hrY`3)7J48rhZe^~x{k)|`Zm;R{-2^>!tL|) z-}fi)>I*_g^{H+zC7SvZ(zUm%`ot>TVts7yCega~LA$O=cY`#vT-}ccQmJOr;4RC@ zn22aL|jz3Pp+l0#>g>ie>{3i<4g!v(kF;md1HE9u)y7xQj)xRa~Za_zOD l$>W$k6S(k|iGOnOD$N69@qx$I20w;tr|_ff!}LV6=pS}LkRbp7 literal 0 HcmV?d00001 diff --git a/titoli/__pycache__/urls.cpython-38.pyc b/titoli/__pycache__/urls.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e1c9000167a22881c04fef16ee041f2aeba0a848 GIT binary patch literal 421 zcmZ8eJx{|h5Vh;14NWRBFtIUaX;*}*3Q-0IV1X`CL}m3(sUeOdJK<|&=Z7$|@msty z^)DbHVMiS*&hqJ<@A=)6y%>###KqU!=iLz{uAH+vd_GAV5nZX+|l59_1xJPdFMgoe$=>rvC&j2XiJ>=cQF1>5_-TA H>elZcqCjdKLumRgkG_0vZ9zo(TZeU!#_K)<68%KUzHB8^78=l-jhqKx$U4qlTYI5NOtsC zDwE8Ob_Y6*AVbMTri-guLJ;k;wYBv}WB5^uEb#_84P4+m>Ny>qgy9~9n`dGl|0sfgc5ZzsG65B~ifu4~-0x1%z$`v70NL7TOJwSW0ELLu2>Ta_38rwk)SGeXM zaDXF6{?1-G^%o$41dN?j?W|@rZ$D<=yxrsBFl1y~=EuAH9%DZnaNQ(aWoNdtbwEjOK@z zS=ymG8*t-`fX$_s@~96tiRvvE99(ida@`|cTVtKju}*pU;USOXJ_Y;TGQMv7G?7hyX4g!3cip+O38)T;u|zV9{v%&;Nq|RCI7X159#p& km?n8@x8bC1t?i~=ydt^E?omzWKUt~uv}w9(wAl3i1BKk-wEzGB literal 0 HcmV?d00001 diff --git a/titoli/migrations/__pycache__/__init__.cpython-38.pyc b/titoli/migrations/__pycache__/__init__.cpython-38.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f5d171ccd2bc819e8bbb8391476bb3f70555a1cd GIT binary patch literal 162 zcmWIL<>g`kg8L~O<3RLd5P=LBfgA@QE@lA|DGb33nv8xc8Hzx{2;!H!vsFxJacWU< zjBjRgMq+ACj7w^9c1eCgjB|cUW^!tbQ+`EAW=VcdW=si$%FRqKN-W9D&nu3JkI&4@ bEQycTE2zB1VUwGmQks)$2eRNZ5HkP(gB2;M literal 0 HcmV?d00001 diff --git a/titoli/models.py b/titoli/models.py new file mode 100644 index 0000000..9bfd55d --- /dev/null +++ b/titoli/models.py @@ -0,0 +1,20 @@ +from django.db import models +from django.urls import reverse +# Create your models here. + + +class Titolo(models.Model): + titolo = models.CharField(max_length=300) + slug_id = models.CharField(max_length=11,null=True,blank=True) + link_embedded = models.URLField() + foto = models.URLField() + + def __str__(self): + return self.titolo + + def get_absolute_url(self): + return reverse('guarda_streaming',kwargs={"slug_id":self.slug_id}) + + class Meta: + verbose_name = "Titolo" + verbose_name_plural = "Titoli" \ No newline at end of file diff --git a/titoli/signals.py b/titoli/signals.py new file mode 100644 index 0000000..9a16fef --- /dev/null +++ b/titoli/signals.py @@ -0,0 +1,11 @@ +from django.db.models.signals import pre_save +from django.dispatch import receiver +from random_id.utils import generate_random_string +from .models import Titolo + +@receiver(pre_save, sender=Titolo) + +def add_slug_to_id(sender, instance, *args, **kwargs): + if instance and not instance.slug_id: + random_string = generate_random_string() + instance.slug_id = random_string diff --git a/titoli/tests.py b/titoli/tests.py new file mode 100644 index 0000000..7ce503c --- /dev/null +++ b/titoli/tests.py @@ -0,0 +1,3 @@ +from django.test import TestCase + +# Create your tests here. diff --git a/titoli/urls.py b/titoli/urls.py new file mode 100644 index 0000000..dc3068c --- /dev/null +++ b/titoli/urls.py @@ -0,0 +1,8 @@ +from django.urls import path +from .views import homepage,guarda_streaming,CreateTitolo + +urlpatterns = [ + path("",homepage,name="Homepage"), + path("guarda_streaming/",guarda_streaming,name="guarda_streaming"), + path("crea_titolo/",CreateTitolo,name="crea_titolo") +] \ No newline at end of file diff --git a/titoli/views.py b/titoli/views.py new file mode 100644 index 0000000..8aa75e2 --- /dev/null +++ b/titoli/views.py @@ -0,0 +1,28 @@ +from django.shortcuts import render,get_object_or_404 +from .models import Titolo +from .forms import FormTitolo +from django.http import HttpResponse + +# Create your views here. + +def homepage(request): + titoli = Titolo.objects.all() + context = {"titoli":titoli} + return render(request,"Homepage.html",context) + + +def guarda_streaming(request,slug_id): + streaming = get_object_or_404(Titolo,slug_id=slug_id) + context = {"streaming":streaming} + return render(request,"streaming.html",context) + +def CreateTitolo(request): + if request.method == "POST": + form = FormTitolo(request.POST) + if form.is_valid(): + new_title = form.save() + return HttpResponse("

Post Creato con Successo!

") + else: + form = FormTitolo() + context = {"form":form} + return render(request,"crea_titolo.html",context)