Commit 3fe87816 authored by Daniel Stan's avatar Daniel Stan

abolition du settings_local.py (RFC)

parent 565aa5c7
......@@ -3,4 +3,5 @@ var/*
*.pyc
*~
*.sqlite
settings_local.py
CRANS_SCRIPTS_ROOT
testing.sh
......@@ -28,21 +28,33 @@ d'ailleurs mentionné dans le `sys.path`.
En cas d'utilisation du CAS crans pour le login, le module `django_cas_ng`
doit être installé via `pip`.
## Configuration d'une copie de test (obsolète !)
Pour faire marcher l'intranet sur vo :
* copier settings_local.py.example en settings_local.py
* Dans settings_local.py :
* passer DEBUG à True
* changer LOCATION (par exemple localhome)
* changer BASE_LDAP_TEST à True
* changer le ROOT_URL (par exemple "https://vo.crans.org:8080")
* exécuter si besoin (quand on utilise la base de test ça ne sert à rien) : `./manage.py syncdb`
## Vieille installation de test
Si vous installez une copie toute propre, vous pouvez sauter cette partie.
Si vous venez de mettre à jour, il vous faut :
* Effacer `settings_local.py`
* Effacer tous les pyc résiduels, à l'aide de `find -regex ".*\.pyc$" -delete`
* Reconfigurer une copie de test à l'aide de la nouvelle méthode (ci-dessous)
## Configuration d'une copie de test
Pour faire marcher l'intranet :
* Créer un fichier `CRANS_SCRIPTS_ROOT` à la racine
* Copier un fichier `testing.sh` depuis `/usr/scripts` et modifier
* rajouter une ligne `export CPATH=/usr/scripts` pour indiquer où se trouve
le dépôt `usr-scripts` du Crans
* Mettre à jour `DBG_INTRANET` pour l'adresse de l'intranet (par exemple
"http://vo.crans.org:8080")
* Modifier le reste des variables à votre goût (voir ci-dessous)
* exécuter si besoin : `./manage.py syncdb` et `./manage.py migrate`
* Pour le lancer : `./manage.py runserver <ROOT_URL>`
Ex : `./manage.py runserver vo.crans.org:8080`
Une copie du dépôt est présente sur vo avec une configuration très proche de
celle de la prod afin de pouvoir réaliser des tests réalistes. La seule
différence réside dans la base pgsql qui est locale (`DBG_DJANGO_DB`).
## Fonctionnement en prod
Le serveur habituel de production est `o2.crans.org`, qui sert les pages webs
......@@ -67,15 +79,6 @@ mot de passe. Certains services ont également besoin d'accéder aux données
des modèles django, et lorsque cela est possible, on leur autorise un accès
en lecture seule à l'aide de l'utilisateur `crans_ro`.
## Fonctionnement en dev sur vo
Une copie du dépôt est présente sur vo avec une configuration très proche de
celle de la prod afin de pouvoir réaliser des tests réalistes. La seule
différence réside dans la base pgsql qui est locale.
La modification du `settings.py` assure également que l'on utilise la base
de test.
## Développer pour l'intranet
Si vous souhaitez contribuer à l'intranet veuillez lire le [guide de développeur](doc/dev_guide.md)
......
......@@ -11,7 +11,8 @@ from django.views.generic.edit import FormView
from forms import LinkAccount, CreateAccount, Form
from intranet import settings
if settings.LOCATION != 'perso':
if settings.DEBUG:
from models_ldap import WikiName
else:
from models_test import WikiName
......
......@@ -3,6 +3,7 @@
import os
import sys
import socket
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
......@@ -18,31 +19,33 @@ import conn_pool
""" Liste d'applications désactivées """
DISABLED_APPS = ['dummy', ]
# TODO Section d'insultes pour obsolescence
try:
# On récupère les settings du dépot dans lequel on est…
from settings_local import *
import settings_local
raise Exception("Présence d'un settings_local, merci de relire le README "
"(section testing)")
except ImportError:
# …ou on fallback sur une conf par défaut
# Si on teste l'intranet, il vaut mieux changer les valeurs dans settings_local.py
DEBUG = False
LOCATION = "o2"
# Explication :
# Les paramètres ne sont pas les mêmes si :
# - "o2" : on est en prod sur o2
# - "vo" : on est en test sur vo
# - "localhome" : on est en dev dans son localhome perso
# Utiliser la base LDAP de test ?
BASE_LDAP_TEST = False
pass
if not os.getenv('DBG_INTRANET'):
if socket.gethostname() != 'o2':
raise Exception("DBG_INTRANET absent et nous ne sommes par en prod "
"sur o2. Qu'est-ce que ça veut dire ?")
# L'url de l'intranet
ROOT_URL = "https://intranet.crans.org/"
DEBUG = False
BASE_LDAP_TEST = False
else:
ROOT_URL = os.getenv('DBG_INTRANET')
DEBUG = True
# TODO Virer mention de la base de test
BASE_LDAP_TEST = True
# À qui faut-il envoyer les mails de câblage
CABLAGE_MAIL_DEST = ['respbats@crans.org', ]
# Faut-il utiliser le CAS pour s'authentifier
CAS_ENABLED = os.getenv('DBG_CAS') not in [None, '', '0']
# Faut-il utiliser le CAS pour s'authentifier
CAS_ENABLED = True
# À qui faut-il envoyer les mails de câblage
CABLAGE_MAIL_DEST = ['respbats@crans.org', ]
if not DEBUG:
SECURE_PROXY_SSL_HEADER = ('HTTP_X_FORWARDED_PROTO', 'https')
......@@ -78,12 +81,8 @@ MANAGERS = ADMINS
FIXTURE_DIRS=(os.path.join(BASE_DIR, 'fixtures/'),)
DB_HOST = os.getenv('DBG_DJANGO_DB', None)
if not DB_HOST:
if LOCATION == 'o2':
DB_HOST = 'pgsql.v4.adm.crans.org'
elif LOCATION in ['vo', 'localhome']:
DB_HOST = 'localhost'
DB_HOST = os.getenv('DBG_DJANGO_DB', 'pgsql.v4.adm.crans.org')
# NB: DBG_DJANGO_DB peut être défini mais vide (base SQLite)
if DB_HOST:
DATABASES = {
'default': {
......@@ -136,7 +135,7 @@ MEDIA_ROOT = BASE_DIR
MEDIA_URL = ROOT_URL + 'media/'
# Make this unique, and don't share it with anybody.
if LOCATION != 'o2':
if DEBUG:
SECRET_KEY = "sYjlDBZUBSMnk"
else: # Ne marchera que sur o2
SECRET_KEY = secrets.get('django_secret_key')
......
# -*- coding: utf-8 -*-
# Settings locaux
#  Les variables à modifier pour développer/tester/… sont à placer ici
DEBUG = False
LOCATION = "o2"
# Explication :
# Les paramètres ne sont pas les mêmes si :
# - "o2" : on est en prod sur o2
# - "vo" : on est en test sur vo
# - "localhome" : on est en dev dans son localhome perso (penser à changer le ROOT_PATH)
# Est-ce qu'on doit servir les fichiers statiques
DEV = True
# Utiliser la base LDAP de test ?
BASE_LDAP_TEST = False
# L'url de l'intranet
ROOT_URL = "https://intranet.crans.org/"
# À qui faut-il envoyer les mails de câblage
CABLAGE_MAIL_DEST = ['respbats@crans.org', 'daniel.pernelle@crous-creteil.fr']
# Faut-il utiliser le CAS pour s'authentifier
CAS_ENABLED = LOCATION not in ["perso", "localhome"]
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment