settings.py.example 12.9 KB
Newer Older
1 2
#!/usr/bin/env python
# -*- encoding: utf-8 -*-
3 4
# Django settings for Django_Client project.

5
import socket
6
import platform
7
import os.path
8 9 10

#: Est-on sur la note de dev ?
DEV = (socket.gethostname() == "bde-test")
11
#: Est-on sur la note de prod ?
12
PROD = (socket.gethostname() in ["bde2", "bde2-virt",])
13

14 15 16 17
# Sur quel système la note tourne-t-elle ?
SYSTEM, NODE_NAME, KERNEL, KERNEL_VERSION, _, _ = platform.uname()

if SYSTEM == 'Linux':
18
    DISTRIBUTION, DIST_VERSION, _ = platform.linux_distribution()
19
else:
20
    DISTRIBUTION, DIST_VERSION = None, None
21

Vincent Le gallic's avatar
Vincent Le gallic committed
22
#: Charset par défaut
Vincent Le gallic's avatar
Vincent Le gallic committed
23
DEFAULT_CHARSET = "utf-8"
Vincent Le gallic's avatar
Vincent Le gallic committed
24
#: Mode de debug
25
DEBUG = True
Vincent Le gallic's avatar
Vincent Le gallic committed
26
#: Debug aussi quand on plante dans le rendering d'un template
27 28
TEMPLATE_DEBUG = DEBUG

29

Vincent Le gallic's avatar
Vincent Le gallic committed
30
#: Adresse mail à qui envoyer des problèmes durant l'exécution
Vincent Le gallic's avatar
Vincent Le gallic committed
31 32
REPORT_BUGS_EMAIL = 'notekfet2015@crans.org'

Vincent Le gallic's avatar
Vincent Le gallic committed
33
#: Liste des administrateurs et de leur mails
34
ADMINS = (
Vincent Le gallic's avatar
Vincent Le gallic committed
35
      ('Report bugs to', REPORT_BUGS_EMAIL)
36 37
)

Vincent Le gallic's avatar
Vincent Le gallic committed
38
#: Url racine
39
NOTE_ROOT_URL = r'/note/'
Vincent Le gallic's avatar
Vincent Le gallic committed
40
#: Url de la page de login
41
NOTE_LOGIN_URL = NOTE_ROOT_URL
42

43 44 45 46
#: Chemin absolu du répertoire racine du client django
#: (Le ``os.path.join`` est là pour assurer la présence du trailing slash)
ROOT_PATH = os.path.join(os.path.dirname(os.path.realpath(__file__)), "")
print ROOT_PATH
47

Vincent Le gallic's avatar
Vincent Le gallic committed
48
#: From des messages d'erreur
49
SERVER_EMAIL = "notekfet2015@crans.org"
Vincent Le gallic's avatar
Vincent Le gallic committed
50
#: A tuple in the same format as ADMINS that specifies who should get broken link notifications when BrokenLinkEmailsMiddleware is enabled.
51 52
MANAGERS = ADMINS

Vincent Le gallic's avatar
Vincent Le gallic committed
53 54 55
#: Base de données pour stocker les data django.
#: Dans le cas de la NoteKfet2015, elle n'est utilisé que pour stocker les sessions
#: puisque tout est fait dans le backend.
56 57 58 59 60 61 62
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'django_client',                      # Or path to database file if using sqlite3.
        'USER': 'note',                      # Not used with sqlite3.
        'PASSWORD': '',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
Vincent Le gallic's avatar
Vincent Le gallic committed
63
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
64 65 66
    }
}

Vincent Le gallic's avatar
Vincent Le gallic committed
67 68 69 70 71 72 73
#: Local time zone for this installation. Choices can be found here:
#: http://en.wikipedia.org/wiki/List_of_tz_zones_by_name
#: although not all choices may be available on all operating systems.
#: On Unix systems, a value of None will cause Django to use the same
#: timezone as the operating system.
#: If running in a Windows environment this must be set to the same as your
#: system time zone.
74 75
TIME_ZONE = 'Europe/Paris'

Vincent Le gallic's avatar
Vincent Le gallic committed
76 77
#: Language code for this installation. All choices can be found here:
#: http://www.i18nguy.com/unicode/language-identifiers.html
78 79
LANGUAGE_CODE = 'fr-FR'

Vincent Le gallic's avatar
Vincent Le gallic committed
80 81 82
#: The ID, as an integer, of the current site in the django_site database table.
#: This is used so that application data can hook into specific sites
#: and a single database can manage content for multiple sites.
83 84
SITE_ID = 1

Vincent Le gallic's avatar
Vincent Le gallic committed
85 86
#: If you set this to False, Django will make some optimizations so as not
#: to load the internationalization machinery.
87 88
USE_I18N = True

Vincent Le gallic's avatar
Vincent Le gallic committed
89 90
#: If you set this to False, Django will not format dates, numbers and
#: calendars according to the current locale.
91 92
USE_L10N = True

Vincent Le gallic's avatar
Vincent Le gallic committed
93
#: If you set this to False, Django will not use timezone-aware datetimes.
94 95
USE_TZ = True

Vincent Le gallic's avatar
Vincent Le gallic committed
96 97
#: Absolute filesystem path to the directory that will hold user-uploaded files.
#: Example: "/home/media/media.lawrence.com/media/"
98
MEDIA_ROOT = ROOT_PATH + 'media/'
99

Vincent Le gallic's avatar
Vincent Le gallic committed
100 101 102
#: URL that handles the media served from MEDIA_ROOT. Make sure to use a
#: trailing slash.
#: Examples: "http://media.lawrence.com/media/", "http://example.com/media/"
103
MEDIA_URL = NOTE_ROOT_URL + 'media/'
104

Vincent Le gallic's avatar
Vincent Le gallic committed
105 106 107 108
#: Absolute path to the directory static files should be collected to.
#: Don't put anything in this directory yourself; store your static files
#: in apps' "static/" subdirectories and in STATICFILES_DIRS.
#: Example: "/home/media/media.lawrence.com/static/"
109
#STATIC_ROOT = ROOT_PATH + 'static/'
110

Vincent Le gallic's avatar
Vincent Le gallic committed
111 112
#: URL prefix for static files.
#: Example: "http://media.lawrence.com/static/"
113 114
STATIC_URL = '/static/'

Vincent Le gallic's avatar
Vincent Le gallic committed
115
#: Additional locations of static files
116
STATICFILES_DIRS = (
117
    ROOT_PATH + "static/",
118 119 120 121 122
    # Put strings here, like "/home/html/static" or "C:/www/django/static".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
)

Vincent Le gallic's avatar
Vincent Le gallic committed
123 124
#: List of finder classes that know how to find static files in
#: various locations.
125 126 127 128 129 130
STATICFILES_FINDERS = (
    'django.contrib.staticfiles.finders.FileSystemFinder',
    'django.contrib.staticfiles.finders.AppDirectoriesFinder',
#    'django.contrib.staticfiles.finders.DefaultStorageFinder',
)

131
from secrets import SECRET_KEY
132

Vincent Le gallic's avatar
Vincent Le gallic committed
133
#: List of callables that know how to import templates from various sources.
134 135 136 137 138 139
TEMPLATE_LOADERS = (
    'django.template.loaders.filesystem.Loader',
    'django.template.loaders.app_directories.Loader',
#     'django.template.loaders.eggs.Loader',
)

Vincent Le gallic's avatar
Vincent Le gallic committed
140 141 142
#: A tuple of callables that are used to populate the context in RequestContext.
#: These callables take a request object as their argument
#: and return a dictionary of items to be merged into the context.
143 144 145 146 147 148 149 150 151 152
TEMPLATE_CONTEXT_PROCESSORS = (
    "django.contrib.auth.context_processors.auth",
    "django.core.context_processors.debug",
    "django.core.context_processors.i18n",
    "django.core.context_processors.media",
    "django.core.context_processors.static",
    "django.core.context_processors.request",
    "django.contrib.messages.context_processors.messages"
    )

Vincent Le gallic's avatar
Vincent Le gallic committed
153
#: A tuple of middleware classes to use. See `Middleware <https://docs.djangoproject.com/en/dev/topics/http/middleware/>`_.
154 155 156 157 158 159 160 161 162 163
MIDDLEWARE_CLASSES = (
    'django.middleware.common.CommonMiddleware',
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    # Uncomment the next line for simple clickjacking protection:
    # 'django.middleware.clickjacking.XFrameOptionsMiddleware',
)

Vincent Le gallic's avatar
Vincent Le gallic committed
164 165 166 167
#: A string representing the full Python import path to your root URLconf.
#: For example: "mydjangoapps.urls".
#: Can be overridden on a per-request basis by setting the attribute
#: urlconf on the incoming HttpRequest object.
168
ROOT_URLCONF = 'urls'
169

Vincent Le gallic's avatar
Vincent Le gallic committed
170
#: Python dotted path to the WSGI application used by Django's runserver.
171
WSGI_APPLICATION = 'wsgi.application'
172

Vincent Le gallic's avatar
Vincent Le gallic committed
173
#: List of locations of the template source files searched by django.template.loaders.filesystem.Loader, in search order.
174
TEMPLATE_DIRS = (
175
    ROOT_PATH + "templates/",
176 177 178 179 180
    # Put strings here, like "/home/html/django_templates" or "C:/www/django/templates".
    # Always use forward slashes, even on Windows.
    # Don't forget to use absolute paths, not relative paths.
)

Vincent Le gallic's avatar
Vincent Le gallic committed
181 182 183
#: A tuple of strings designating all applications that are enabled in this Django installation.
#: Each string should be a full Python path to a Python package that contains a Django application,
#: as created by ``django-admin.py startapp``.
184 185 186 187 188 189 190 191 192 193 194 195 196 197
INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # Uncomment the next line to enable the admin:
    'django.contrib.admin',
    # Uncomment the next line to enable admin documentation:
    # 'django.contrib.admindocs',
    'note',
)

Vincent Le gallic's avatar
Vincent Le gallic committed
198 199 200 201 202
#: A sample logging configuration. The only tangible logging
#: performed by this configuration is to send an email to
#: the site admins on every HTTP 500 error when DEBUG=False.
#: See http://docs.djangoproject.com/en/dev/topics/logging for
#: more details on how to customize your logging configuration.
203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226
LOGGING = {
    'version': 1,
    'disable_existing_loggers': False,
    'filters': {
        'require_debug_false': {
            '()': 'django.utils.log.RequireDebugFalse'
        }
    },
    'handlers': {
        'mail_admins': {
            'level': 'ERROR',
            'filters': ['require_debug_false'],
            'class': 'django.utils.log.AdminEmailHandler'
        }
    },
    'loggers': {
        'django.request': {
            'handlers': ['mail_admins'],
            'level': 'ERROR',
            'propagate': True,
        },
    }
}

Vincent Le gallic's avatar
Vincent Le gallic committed
227
#: ttl des cookies Django en secondes
228
SESSION_COOKIE_AGE = 60*100 # 100 minutes
229

Vincent Le gallic's avatar
Vincent Le gallic committed
230 231
### Photos
#: Taille max autorisée pour les photos
232
MAX_PHOTO_SIZE = 870000 # en bytes (850KB)
Vincent Le gallic's avatar
Vincent Le gallic committed
233
#: Dossier où sont stockées les photos temporairement
234
PHOTOS_PATH = MEDIA_ROOT + "photos/"
Vincent Le gallic's avatar
Vincent Le gallic committed
235
#: URL par laquelle on accède aux photos
236
PHOTOS_URL = MEDIA_URL + "photos/"
Vincent Le gallic's avatar
Vincent Le gallic committed
237 238 239
#: Temps avant de supprimer un fichier de photo temporaire
#: Pendant cet intervalle de temps,
#: la photo pourra être affichée sans être redemandée au serveur NK2015
240 241
TIME_BEFORE_PHOTO_DELETE=60*5 # secondes

Vincent Le gallic's avatar
Vincent Le gallic committed
242
### Network
243
#: IP où joindre le serveur NK2015
244
NK2015_IP = "127.0.0.1"
245
#: Port d'écoute du serveur NK2015
246 247 248
NK2015_PORT = 4242

### Paramètres d'affichage
249
## Dates
Vincent Le gallic's avatar
Vincent Le gallic committed
250
#: Format avec lequel les dates arrivent du serveur NK2015
251
DATETIME_INPUT_FORMAT = u"%Y-%m-%d %H:%M:%S"
Vincent Le gallic's avatar
Vincent Le gallic committed
252
#: Format d'affichage des dates
253
DATETIME_RENDERING_FORMAT = "Le %d/%m/%Y à %H:%M:%S" # C'est volontaire si ce n'est pas une chaîne unicode !
Vincent Le gallic's avatar
Vincent Le gallic committed
254
#: Année jusqu'à laquelle les dates sont en 20nn
255 256 257 258
YEAR_1900s_OVER = 69

## Messages d'erreur
ERRMSG_NK2015_DOWN = u"Le Serveur NK2015 est down."
259
ERRMSG_NK2015_NOT_RESPONDING = u"La connexion avec le serveur NK2015 ne répond pas. Essaye de te reconnecter."
260
ERRMSG_HELLO_FAILED = u"La version du site utilisée n'est pas supportée par le serveur NK2015."
261
ERRMSG_UNKOWNERROR = u"Une fucking erreur inconnue s'est produite :"
262 263 264 265 266 267 268 269

ERRMSG_IDBDE_INVALID = u'''"%s" n'est pas un identifiant de compte valide.'''
ERRMSG_IDBDE_FAIL = u"Le compte n°%s n'existe pas."
ERRMSG_IDACT_INVALID = u'''"%s" n'est pas un identifiant d'activité valide.'''
ERRMSG_IDACT_FAIL = u"L'activité n°%s n'existe pas."
ERRMSG_IDALIAS_INVALID = u'''"%s" n'est pas un identifiant d'alias valide.'''
ERRMSG_IDINV_INVALID = u'''"%s" n'est pas un identifiant d'invité valide.'''
ERRMSG_IDINV_FAIL = u"L'invité n°%s n'existe pas."
270 271
ERRMSG_IDBUTTON_INVALID = u'''"%s" n'est pas un identifiant de bouton valide.'''
ERRMSG_IDBUTTON_FAIL = u"Le bouton n°%s n'existe pas."
272 273
ERRMSG_PREID_INVALID = u'''"%s" n'est pas un identifiant de préinscription valide.'''
ERRMSG_PREID_FAIL = u"La préinscription n°%s n'existe pas."
274 275 276
ERRMSG_IDTRANSACTION_INVALID = u'''"%s" n'est pas un identifiant de transaction valide.'''
ERRMSG_IDTRANSACTION_FAIL = u"La transaction n°%s n'existe pas."

277

278
ERRMSG_DJANGO_SESSION_EXPIRED = u"Ta session Django a expiré, reconnecte-toi."
279 280
ERRMSG_NOSOCKET = u"La connexion avec le serveur NK2015 a été perdue, reconnecte-toi."
ERRMSG_NK2015_SESSION_EXPIRED = u"Ta session NK2015 est invalide ou a expiré, reconnecte-toi."
281 282

ERRMSG_PASSWORD_NEGATIVE_IDBDE = u"Mais oui bien sûr…"
Vincent Le gallic's avatar
Vincent Le gallic committed
283
ERRMSG_NO_ACL_CHGPASS = u"Tu n'as pas le droit de changer le mot de passe d'un autre compte que le tien."
284 285

## Messages de succès
286 287 288
SUCCMSG_CHGACT = u"Activité modifiée avec succès."
SUCCMSG_DELACT = u"Activité supprimée avec succès."
SUCCMSG_ADDACT = u"Activité ajoutée avec succès."
289 290
SUCCMSG_VALIDACT = u"Activité validée avec succès."
SUCCMSG_DEVALIDACT = u"Activité dévalidée avec succès."
291 292 293
SUCCMSG_DELINV = u"Invité supprimé avec succès."
SUCCMSG_ADDINV = u"Invité ajouté avec succès."
SUCCMSG_ACCOUNT_CHANGED = u"Compte modifié avec succès."
294
SUCCMSG_ACCOUNT_ADDED = u"Compte ajouté avec succès."
Vincent Le gallic's avatar
Vincent Le gallic committed
295
SUCCMSG_ACCOUNT_DELETED = u"Compte supprimé avec succès."
296
SUCCMSG_ALIAS_ADDED = u"Alias ajouté avec succès."
297 298
SUCCMSG_ALIAS_DELETED = u"Alias supprimé avec succès."
SUCCMSG_ALIAS_ALLDELETED = u"Tous les alias supprimés avec succès."
299
SUCCMSG_PASSWORD_CHANGED = u"Mot de passe modifié avec succès."
300
SUCCMSG_LOGOUT = u"Tu t'es déconnecté."
301
SUCCMSG_ADDBUTTON = u"Bouton ajouté avec succès."
302
SUCCMSG_CHGBUTTON = u"Bouton modifié avec succès."
303
SUCCMSG_DELBUTTON = u"Bouton supprimé avec succès."
304
SUCCMSG_PREINSCRIPTION_ADDED = u"Préinscription ajoutée avec succès."
305
SUCCMSG_PREINSCRIPTION_DELETED = u"Préinscription supprimée avec succès."
Vincent Le gallic's avatar
Vincent Le gallic committed
306
SUCCMSG_READHESION = u"Réadhésion effectuée avec succès."
307
SUCCMSG_PHOTO_UPDATED = u"Photo modifiée avec succès."
308 309
SUCCMSG_VALIDATE_TRANSACTION = u"Transaction validée avec succès."
SUCCMSG_DEVALIDATE_TRANSACTION = u"Transaction dévalidée avec succès."
310
SUCCMSG_RESETPSWD = u"Un mail vous a été envoyé."
311 312 313

### Masques de droits
#: Droits qu'on n'a pas en se connectant en "restricted"
314
_acl_restricted = ["myself", "wei", "overforced", "transactions_admin", "chgpass", "comptes", "boutons", "admin", "digicode"]
315 316

#: Dico recensant les masques de droits : ``keyword`` -> ``("nom à afficher", <masque>)``
317
#: ils seront proposés dans l'ordre des keywords
318
ACL_MASKS = {
319
    '0_all': (u"Tous mes droits", [[], [], False]),
320
    '1_note': (u"Droits note seulement", [_acl_restricted, _acl_restricted, True]),
321
    }
322 323
_acl_masks_keys = ACL_MASKS.keys()
_acl_masks_keys.sort()