commit
7d4b079595
17 changed files with 508 additions and 0 deletions
@ -0,0 +1,128 @@ |
|||||
|
|
||||
|
# Created by https://www.gitignore.io/api/vim,django,python |
||||
|
|
||||
|
### Django ### |
||||
|
*.log |
||||
|
*.pot |
||||
|
*.pyc |
||||
|
__pycache__/ |
||||
|
local_settings.py |
||||
|
db.sqlite3 |
||||
|
media |
||||
|
|
||||
|
# If your build process includes running collectstatic, then you probably don't need or want to include staticfiles/ |
||||
|
# in your Git repository. Update and uncomment the following line accordingly. |
||||
|
# <django-project-name>/staticfiles/ |
||||
|
|
||||
|
### Python ### |
||||
|
# Byte-compiled / optimized / DLL files |
||||
|
*.py[cod] |
||||
|
*$py.class |
||||
|
|
||||
|
# C extensions |
||||
|
*.so |
||||
|
|
||||
|
# Distribution / packaging |
||||
|
.Python |
||||
|
build/ |
||||
|
develop-eggs/ |
||||
|
dist/ |
||||
|
downloads/ |
||||
|
eggs/ |
||||
|
.eggs/ |
||||
|
lib/ |
||||
|
lib64/ |
||||
|
parts/ |
||||
|
sdist/ |
||||
|
var/ |
||||
|
wheels/ |
||||
|
*.egg-info/ |
||||
|
.installed.cfg |
||||
|
*.egg |
||||
|
|
||||
|
# PyInstaller |
||||
|
# Usually these files are written by a python script from a template |
||||
|
# before PyInstaller builds the exe, so as to inject date/other infos into it. |
||||
|
*.manifest |
||||
|
*.spec |
||||
|
|
||||
|
# Installer logs |
||||
|
pip-log.txt |
||||
|
pip-delete-this-directory.txt |
||||
|
|
||||
|
# Unit test / coverage reports |
||||
|
htmlcov/ |
||||
|
.tox/ |
||||
|
.coverage |
||||
|
.coverage.* |
||||
|
.cache |
||||
|
.pytest_cache/ |
||||
|
nosetests.xml |
||||
|
coverage.xml |
||||
|
*.cover |
||||
|
.hypothesis/ |
||||
|
|
||||
|
# Translations |
||||
|
*.mo |
||||
|
|
||||
|
# Flask stuff: |
||||
|
instance/ |
||||
|
.webassets-cache |
||||
|
|
||||
|
# Scrapy stuff: |
||||
|
.scrapy |
||||
|
|
||||
|
# Sphinx documentation |
||||
|
docs/_build/ |
||||
|
|
||||
|
# PyBuilder |
||||
|
target/ |
||||
|
|
||||
|
# Jupyter Notebook |
||||
|
.ipynb_checkpoints |
||||
|
|
||||
|
# pyenv |
||||
|
.python-version |
||||
|
|
||||
|
# celery beat schedule file |
||||
|
celerybeat-schedule.* |
||||
|
|
||||
|
# SageMath parsed files |
||||
|
*.sage.py |
||||
|
|
||||
|
# Environments |
||||
|
.env |
||||
|
.venv |
||||
|
env/ |
||||
|
venv/ |
||||
|
ENV/ |
||||
|
env.bak/ |
||||
|
venv.bak/ |
||||
|
|
||||
|
# Spyder project settings |
||||
|
.spyderproject |
||||
|
.spyproject |
||||
|
|
||||
|
# Rope project settings |
||||
|
.ropeproject |
||||
|
|
||||
|
# mkdocs documentation |
||||
|
/site |
||||
|
|
||||
|
# mypy |
||||
|
.mypy_cache/ |
||||
|
|
||||
|
### Vim ### |
||||
|
# swap |
||||
|
.sw[a-p] |
||||
|
.*.sw[a-p] |
||||
|
# session |
||||
|
Session.vim |
||||
|
# temporary |
||||
|
.netrwhist |
||||
|
*~ |
||||
|
# auto-generated tag files |
||||
|
tags |
||||
|
|
||||
|
|
||||
|
# End of https://www.gitignore.io/api/vim,django,python |
||||
@ -0,0 +1,84 @@ |
|||||
|
#! /bin/bash |
||||
|
|
||||
|
PYTHON_INTERPRETER = "/usr/bin/python3" |
||||
|
|
||||
|
printf "\033[0;32m > Installation de MySQL \033[0m\n" |
||||
|
apt-get -y install mysql-client mysql-server |
||||
|
printf "\033[0;32m > Installation de Apache \033[0m\n" |
||||
|
apt-get -y install apache2 libapache2-mod-wsgi-py3 |
||||
|
a2enmod ssl |
||||
|
a2enmod wsgi |
||||
|
printf "\033[0;32m > Installation de Python3 et pip \033[0m\n" |
||||
|
apt-get -y install python3 python3-pip |
||||
|
pip3 install virtualenv |
||||
|
|
||||
|
printf "\033[0;32m > Création du virtualenv \033[0m\n" |
||||
|
virtualenv env_site -p "$PYTHON_INTERPRETER" |
||||
|
source env_site/bin/activate |
||||
|
|
||||
|
sudo apt install libmysqlclient-dev |
||||
|
pip3 install mysqlclient |
||||
|
|
||||
|
printf "\033[0;32m > Installation des dépendances \033[0m\n" |
||||
|
pip3 install -r requirements.txt |
||||
|
|
||||
|
printf "\033[0;32m > Génération de la secret_key \033[0m\n" |
||||
|
|
||||
|
django_secret_key=$(python -c "import random; print(''.join([random.SystemRandom().choice('abcdefghijklmnopqrstuvwxyz0123456789%=+') for i in range(50)]))") |
||||
|
|
||||
|
cp site_tps/settings_local.example.py site_tps/settings_local.py |
||||
|
sed -i 's/SUPER_SECRET_KEY/'"$django_secret_key"'/g' site_tps/settings_local.py |
||||
|
|
||||
|
printf "\033[0;32m > Configuration de MySQL \033[0m\n" |
||||
|
sql_name="festart" |
||||
|
sql_login="festart" |
||||
|
sql_host="localhost" |
||||
|
sql_password=$(python -c "import random; print(''.join([random.SystemRandom().choice('abcdefghijklmnopqrstuvwxyz0123456789%=+') for i in range(10)]))") |
||||
|
|
||||
|
mysql_command="CREATE DATABASE $sql_name collate='utf8_general_ci'; |
||||
|
CREATE USER '$sql_login'@'localhost' IDENTIFIED BY '$sql_password'; |
||||
|
GRANT ALL PRIVILEGES ON $sql_name.* TO '$sql_login'@'localhost'; |
||||
|
FLUSH PRIVILEGES;" |
||||
|
|
||||
|
echo "$mysql_command" |
||||
|
|
||||
|
mysql -u root --execute="$mysql_command" -p |
||||
|
|
||||
|
|
||||
|
sed -i 's/db_engine/django.db.backends.mysql/g' site_tps/settings_local.py |
||||
|
sed -i 's/db_name/'"$sql_name"'/g' site_tps/settings_local.py |
||||
|
sed -i 's/db_user/'"$sql_login"'/g' site_tps/settings_local.py |
||||
|
sed -i 's/db_pass/'"$sql_password"'/g' site_tps/settings_local.py |
||||
|
sed -i 's/db_host/'"$sql_host"'/g' site_tps/settings_local.py |
||||
|
|
||||
|
#printf "\033[0;32m > Configuration des mails \033[0m\n" |
||||
|
|
||||
|
#read -p "Domaine d'envoi des mails > " domain_name |
||||
|
#read -p "Mail de l'administrateur > " admin_mail |
||||
|
|
||||
|
printf "\033[0;32m > Domaine\033[0m\n" |
||||
|
read -p "Domaine autorisé > " url_server |
||||
|
sed -i 's,URL_SERVER,'"$url_server"',g' site_tps/settings_local.py |
||||
|
|
||||
|
printf "\033[0;32m > settings_local.py créé \033[0m\n" |
||||
|
|
||||
|
printf "\033[0;32m > Export du wsgi.py de production \033[0m\n" |
||||
|
cp wsgi_prod.py site_tps/wsgi.py |
||||
|
current_path=$(pwd) |
||||
|
sed -i 's,INSTALL_PATH,'"$current_path"',g' site_tps/wsgi.py |
||||
|
|
||||
|
printf "\033[0;32m > Configuration de Apache \033[0m\n" |
||||
|
cp site_tps.conf /etc/apache2/sites-available |
||||
|
sed -i 's,URL_SERVER,'"$url_server"',g' /etc/apache2/sites-available/site_tps.conf |
||||
|
sed -i 's,INSTALL_PATH,'"$current_path"',g' /etc/apache2/sites-available/site_tps.conf |
||||
|
a2ensite site_tps |
||||
|
rm /etc/apache2/sites-enabled/000-default.conf |
||||
|
service apache2 reload |
||||
|
|
||||
|
|
||||
|
printf "\033[0;32m > Application des migrations \033[0m\n" |
||||
|
python manage.py migrate |
||||
|
printf "\033[0;32m > Collecte des statiques \033[0m\n" |
||||
|
python manage.py collectstatic |
||||
|
printf "\033[0;32m > Création d'un super utilisateur\033[0m\n" |
||||
|
python manage.py createsuperuser |
||||
@ -0,0 +1,114 @@ |
|||||
|
""" |
||||
|
Django settings for site_tps project. |
||||
|
|
||||
|
Generated by 'django-admin startproject' using Django 2.0.1. |
||||
|
|
||||
|
For more information on this file, see |
||||
|
https://docs.djangoproject.com/en/2.0/topics/settings/ |
||||
|
|
||||
|
For the full list of settings and their values, see |
||||
|
https://docs.djangoproject.com/en/2.0/ref/settings/ |
||||
|
""" |
||||
|
|
||||
|
import os |
||||
|
from .settings_local import * |
||||
|
|
||||
|
# 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/2.0/howto/deployment/checklist/ |
||||
|
|
||||
|
# Application definition |
||||
|
|
||||
|
INSTALLED_APPS = [ |
||||
|
'django.contrib.admin', |
||||
|
'django.contrib.auth', |
||||
|
'django.contrib.contenttypes', |
||||
|
'django.contrib.sessions', |
||||
|
'django.contrib.messages', |
||||
|
'django.contrib.staticfiles', |
||||
|
'bootstrap4', |
||||
|
'player', |
||||
|
] |
||||
|
|
||||
|
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 = 'live_share_youtube.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 = 'live_share_youtube.wsgi.application' |
||||
|
|
||||
|
|
||||
|
# Database |
||||
|
# https://docs.djangoproject.com/en/2.0/ref/settings/#databases |
||||
|
|
||||
|
|
||||
|
|
||||
|
# Password validation |
||||
|
# https://docs.djangoproject.com/en/2.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/2.0/topics/i18n/ |
||||
|
|
||||
|
LANGUAGE_CODE = 'fr-fr' |
||||
|
|
||||
|
TIME_ZONE = 'Europe/Paris' |
||||
|
|
||||
|
USE_I18N = True |
||||
|
|
||||
|
USE_L10N = True |
||||
|
|
||||
|
USE_TZ = True |
||||
|
|
||||
|
|
||||
|
# Static files (CSS, JavaScript, Images) |
||||
|
# https://docs.djangoproject.com/en/2.0/howto/static-files/ |
||||
|
|
||||
|
STATIC_URL = '/static/' |
||||
|
STATIC_ROOT = os.path.join(BASE_DIR, 'static') |
||||
|
MEDIA_URL = '/media/' |
||||
|
MEDIA_ROOT = os.path.join(BASE_DIR, 'static', 'media') |
||||
|
|
||||
|
LOGIN_REDIRECT_URL = "/" |
||||
|
LOGOUT_REDIRECT_URL = "/" |
||||
@ -0,0 +1,48 @@ |
|||||
|
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__))) |
||||
|
|
||||
|
SECRET_KEY = 'SUPER_SECRET_KEY' |
||||
|
|
||||
|
DB_PASSWORD = 'db_pass' |
||||
|
|
||||
|
# SECURITY WARNING: don't run with debug turned on in production! |
||||
|
DEBUG = False |
||||
|
|
||||
|
# ADMINS = [('My Beloved Administrator', 'admin_mail')] |
||||
|
|
||||
|
# SERVER_EMAIL = 'no-reply@example.org' |
||||
|
|
||||
|
# Obligatoire, liste des host autorisés |
||||
|
ALLOWED_HOSTS = ['URL_SERVER'] |
||||
|
|
||||
|
if not DEBUG: |
||||
|
DATABASES = { |
||||
|
'default': { |
||||
|
'ENGINE': 'db_engine', |
||||
|
'NAME': 'db_name', |
||||
|
'USER': 'db_user', |
||||
|
'PASSWORD': DB_PASSWORD, |
||||
|
'HOST': 'db_host', |
||||
|
}, |
||||
|
} |
||||
|
else: |
||||
|
DATABASES = { |
||||
|
'default': { |
||||
|
'ENGINE': 'django.db.backends.sqlite3', |
||||
|
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
# Security settings, à activer une fois https en place |
||||
|
SECURE_CONTENT_TYPE_NOSNIFF = False |
||||
|
SECURE_BROWSER_XSS_FILTER = False |
||||
|
SESSION_COOKIE_SECURE = False |
||||
|
CSRF_COOKIE_SECURE = False |
||||
|
CSRF_COOKIE_HTTPONLY = False |
||||
|
X_FRAME_OPTIONS = 'DENY' |
||||
|
SESSION_COOKIE_AGE = 60 * 60 * 3 |
||||
|
|
||||
|
# EMAIL_HOST = 'MY_EMAIL_HOST' |
||||
|
# EMAIL_PORT = MY_EMAIL_PORT |
||||
@ -0,0 +1,48 @@ |
|||||
|
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__))) |
||||
|
|
||||
|
SECRET_KEY = 'zcnwv22hbhfxnzg25n+w7e9a4o98jwj284r9uq5j9y88u9yy74' |
||||
|
|
||||
|
DB_PASSWORD = '' |
||||
|
|
||||
|
# SECURITY WARNING: don't run with debug turned on in production! |
||||
|
DEBUG = True |
||||
|
|
||||
|
# ADMINS = [('My Beloved Administrator', 'admin_mail')] |
||||
|
|
||||
|
# SERVER_EMAIL = 'no-reply@example.org' |
||||
|
|
||||
|
# Obligatoire, liste des host autorisés |
||||
|
ALLOWED_HOSTS = ['*'] |
||||
|
|
||||
|
if not DEBUG: |
||||
|
DATABASES = { |
||||
|
'default': { |
||||
|
'ENGINE': 'django.db.backends.mysql', |
||||
|
'NAME': 'live_share_youtube', |
||||
|
'USER': 'live_share_youtube', |
||||
|
'PASSWORD': DB_PASSWORD, |
||||
|
'HOST': 'localhost', |
||||
|
}, |
||||
|
} |
||||
|
else: |
||||
|
DATABASES = { |
||||
|
'default': { |
||||
|
'ENGINE': 'django.db.backends.sqlite3', |
||||
|
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), |
||||
|
} |
||||
|
} |
||||
|
|
||||
|
# Security settings, à activer une fois https en place |
||||
|
SECURE_CONTENT_TYPE_NOSNIFF = False |
||||
|
SECURE_BROWSER_XSS_FILTER = False |
||||
|
SESSION_COOKIE_SECURE = False |
||||
|
CSRF_COOKIE_SECURE = False |
||||
|
CSRF_COOKIE_HTTPONLY = False |
||||
|
X_FRAME_OPTIONS = 'DENY' |
||||
|
SESSION_COOKIE_AGE = 60 * 60 * 3 |
||||
|
|
||||
|
# EMAIL_HOST = 'MY_EMAIL_HOST' |
||||
|
# EMAIL_PORT = MY_EMAIL_PORT |
||||
@ -0,0 +1,21 @@ |
|||||
|
"""live_share_youtube URL Configuration |
||||
|
|
||||
|
The `urlpatterns` list routes URLs to views. For more information please see: |
||||
|
https://docs.djangoproject.com/en/2.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 |
||||
|
|
||||
|
urlpatterns = [ |
||||
|
path('admin/', admin.site.urls), |
||||
|
] |
||||
@ -0,0 +1,16 @@ |
|||||
|
""" |
||||
|
WSGI config for live_share_youtube 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/2.0/howto/deployment/wsgi/ |
||||
|
""" |
||||
|
|
||||
|
import os |
||||
|
|
||||
|
from django.core.wsgi import get_wsgi_application |
||||
|
|
||||
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "live_share_youtube.settings") |
||||
|
|
||||
|
application = get_wsgi_application() |
||||
@ -0,0 +1,15 @@ |
|||||
|
#!/usr/bin/env python |
||||
|
import os |
||||
|
import sys |
||||
|
|
||||
|
if __name__ == "__main__": |
||||
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "live_share_youtube.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) |
||||
@ -0,0 +1,3 @@ |
|||||
|
from django.contrib import admin |
||||
|
|
||||
|
# Register your models here. |
||||
@ -0,0 +1,5 @@ |
|||||
|
from django.apps import AppConfig |
||||
|
|
||||
|
|
||||
|
class PlayerConfig(AppConfig): |
||||
|
name = 'player' |
||||
@ -0,0 +1,3 @@ |
|||||
|
from django.db import models |
||||
|
|
||||
|
# Create your models here. |
||||
@ -0,0 +1,3 @@ |
|||||
|
from django.test import TestCase |
||||
|
|
||||
|
# Create your tests here. |
||||
@ -0,0 +1,3 @@ |
|||||
|
from django.shortcuts import render |
||||
|
|
||||
|
# Create your views here. |
||||
@ -0,0 +1,17 @@ |
|||||
|
import os |
||||
|
import sys |
||||
|
|
||||
|
|
||||
|
# Activation de l'environnement virtuel |
||||
|
activate_env=os.path.join('INSTALL_PATH/env_site', 'bin/activate_this.py') |
||||
|
exec(compile(open(activate_env, "rb").read(), activate_env, 'exec'), {'__file__':activate_env}) |
||||
|
|
||||
|
# Ajout du répertoire du site au PATH |
||||
|
sys.path.append('INSTALL_PATH') |
||||
|
sys.path.append('INSTALL_PATH/site_tps') |
||||
|
|
||||
|
# Les trucs par défaut de Django |
||||
|
from django.core.wsgi import get_wsgi_application |
||||
|
|
||||
|
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "site_tps.settings") |
||||
|
application = get_wsgi_application() |
||||
Loading…
Reference in new issue