source: seiven/seiven/settings.py

Last change on this file was ab4c9ba, checked in by Ing. Roldan D. Vargas G <rvargas@…>, 6 años ago

correcciones en implementación de api_client

  • Propiedad mode establecida a 100644
File size: 11.2 KB
Línea 
1"""
2Sistema Estadístico Integral de Venezuela - (SEIVEN)
3
4Copyleft (@) 2015 CENDITEL nodo Mérida - https://mpv.cenditel.gob.ve/seiven
5"""
6## @package seiven.settings
7#
8# Configuración de funcionalidades y parámetros del sistema
9# @author Generated by 'django-admin startproject' using Django 1.9.7
10# @author Ing. Roldan Vargas (rvargas at cenditel.gob.ve)
11# @author <a href='http://www.cenditel.gob.ve'>Centro Nacional de Desarrollo e Investigación en Tecnologías Libres
12# (CENDITEL) nodo Mérida - Venezuela</a>
13# @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a>
14# @version 1.0.0
15from __future__ import unicode_literals
16
17from .database_config import DATABASES_CONFIG
18
19import os
20
21## Directorio base desde donde se encuentra ejecutando la aplicación
22BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
23
24## Número de versión de la aplicación
25VERSION = '1.0.0'
26
27# SECURITY WARNING: keep the secret key used in production secret!
28SECRET_KEY = '$#iabgq1k!v$$-a*3$tp)l)c!jr-bnyk(2-q!isylwtpnksbsv'
29
30## Identifica si el sistema se encuentra en modo de desarrollo (True) o en modo producción (False)
31DEBUG = True
32
33## Identifica a los servidores permitidos que atienden las peticiones del sistema
34ALLOWED_HOSTS = ['localhost']
35
36## Identifica el host permitido para consumir las APIs del Sistema de Estadísticas Económico Productivas
37SIDEPRO_ALLOWED_HOST = ['localhost']
38
39## Identifica a los administradores del sistema
40ADMINS = [
41    ('Ing. Roldan Vargas', 'rvargas@cenditel.gob.ve'),
42]
43
44## Listado de aplicaciones base del sistema
45PREREQ_APPS = [
46    'django.contrib.admin',
47    'django.contrib.auth',
48    'django.contrib.contenttypes',
49    'django.contrib.sessions',
50    'django.contrib.messages',
51    'django.contrib.staticfiles',
52    'captcha',
53]
54
55if DEBUG:
56    ## Aplicaciones requeridas para entornos de desarrollo
57    PREREQ_APPS += [
58        'django_extensions',
59        'debug_toolbar',
60        'sslserver', # Aplicación para ejecutar un servidor de desarrollo bajo el protocolo https
61    ]
62
63    ## Configuracion de parametros de django-debug-toolbar
64    JQUERY_URL = ''
65
66## Listado de aplicaciones del projecto
67PROJECT_APPS = [
68    'base',
69    'usuario',
70    'economico',
71    'api_client',
72    'productivo',
73    'gestion_informacion',
74]
75
76## Listado de aplicaciones cargadas por el sistema
77INSTALLED_APPS = PREREQ_APPS + PROJECT_APPS
78
79
80MIDDLEWARE_CLASSES = [
81    'django.middleware.security.SecurityMiddleware',
82    'django.contrib.sessions.middleware.SessionMiddleware',
83    'django.middleware.locale.LocaleMiddleware',
84    'django.middleware.common.CommonMiddleware',
85    'django.middleware.csrf.CsrfViewMiddleware',
86    'django.contrib.auth.middleware.AuthenticationMiddleware',
87    'django.contrib.auth.middleware.SessionAuthenticationMiddleware',
88    'django.contrib.messages.middleware.MessageMiddleware',
89    'django.middleware.clickjacking.XFrameOptionsMiddleware',
90]
91
92if DEBUG:
93    MIDDLEWARE_CLASSES += [
94        'debug_toolbar.middleware.DebugToolbarMiddleware',
95    ]
96
97## Configuración de las URL del sistema
98ROOT_URLCONF = 'seiven.urls'
99
100## Directorio en donde se encuentran las plantillas en el root de la aplicación
101ROOT_TEMPLATES = os.path.join(BASE_DIR, "templates")
102
103## Directorio en donde se encuentran las plantillas del módulo base
104BASE_TEMPLATES = os.path.join(BASE_DIR, "base/templates")
105
106## Directorio en donde se encuentran las plantillas del módulo económico
107ECONOMICO_TEMPLATES = os.path.join(BASE_DIR, "economico/templates","consulta")
108
109## Directorio en donde se encuentran las plantillas del módulo económico
110PRODUCTIVO_TEMPLATES = os.path.join(BASE_DIR, "productivo/templates")
111
112## Directorio en donde se encuentran las plantillas del módulo de usuarios
113USUARIO_TEMPLATES = os.path.join(BASE_DIR, "usuario/templates")
114
115## Directorio en donde se encuentran las plantillas de gestión de información
116GESTION_INFORMACION_TEMPLATES = os.path.join(BASE_DIR, "gestion_informacion/templates")
117
118TEMPLATES = [
119    {
120        'BACKEND': 'django.template.backends.django.DjangoTemplates',
121        'DIRS': [
122            ROOT_TEMPLATES, BASE_TEMPLATES, ECONOMICO_TEMPLATES, PRODUCTIVO_TEMPLATES, USUARIO_TEMPLATES,
123            GESTION_INFORMACION_TEMPLATES
124        ],
125        'APP_DIRS': True,
126        'OPTIONS': {
127            'context_processors': [
128                'django.template.context_processors.debug',
129                'django.template.context_processors.request',
130                'django.contrib.auth.context_processors.auth',
131                'django.contrib.messages.context_processors.messages',
132                'django.template.context_processors.i18n',
133                "django.template.context_processors.tz",
134            ],
135            'libraries': { # Carga los paquetes de bibliotecas para los templatetags, etc...
136                'productivo_filtros': 'productivo.templatetags.productivo_filtros',
137            },
138        },
139    },
140]
141
142## Configuración para el wsgi de la aplicación
143WSGI_APPLICATION = 'seiven.wsgi.application'
144
145## Configuración de la(s) base(s) de dato(s) del sistema
146DATABASES = DATABASES_CONFIG
147
148## Configuración para las validaciones de contraseñas
149AUTH_PASSWORD_VALIDATORS = [
150    {
151        'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
152    },
153    {
154        'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
155        'OPTIONS': {
156            'min_length': 8,
157        }
158    },
159    {
160        'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
161    },
162    {
163        'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
164    },
165]
166
167
168## Configuración del código del lenguaje a utilizar por defecto
169LANGUAGE_CODE = 'es-ve'
170
171## Configuración para el nombre de localización por defecto
172LOCALE_NAME = 'es'
173
174## Configuración para la zona horaria por defecto
175TIME_ZONE = 'America/Caracas'
176
177## Determina si se emplea la internacionalización I18N
178USE_I18N = True
179
180## Determina si se emplea la internacionalización L10N
181USE_L10N = True
182
183## Determina si se emplea la zona horaria
184USE_TZ = False
185
186## Configuración de la raíz donde se encuentran los archivos estaticos del sistema (para entornos en producción)
187STATIC_ROOT = ''
188
189## Configuración de la url que atenderá las peticiones de los archivos estáticos del sistema
190STATIC_URL = '/static/'
191
192## Configuración de los directorios en donde se encuentran los archivos estáticos
193STATICFILES_DIRS = (
194    os.path.join(BASE_DIR, 'static/'),
195)
196
197## URL de acceso al sistema
198LOGIN_URL = "/login"
199
200## URL de salida del sistema
201LOGOUT_URL = "/logout"
202
203## configuración que permite obtener la ruta en donde se encuentran las traducciones de la aplicación a otros lenguajes
204LOCALE_PATHS = [
205    #os.path.join(BASE_DIR, 'locale'),
206]
207
208## Registro de mensajes al usuario
209MESSAGE_STORAGE = 'django.contrib.messages.storage.cookie.CookieStorage'
210
211# Configuración de variables para el envío de correo electrónico
212## Nombre del Servidor de correo SMTP
213EMAIL_HOST = 'localhost'
214## Puerto del Servidor de correo SMTP
215EMAIL_PORT = 25
216## Dirección de correo electrónico de quien envía
217EMAIL_FROM = 'seiven@cenditel.gob.ve'
218
219## Registro de vitácoras de errores (logs)
220LOGS_PATH = ''
221
222## Ruta en la que se guardan los archivos para la gestión de información
223GESTION_INFORMACION_FILES = os.path.join(BASE_DIR, "static/files")
224
225## Configuración de los niveles de vitácoras (logs) a registrar
226LOGGING = dict(version=1, disable_existing_loggers=True, formatters={
227    'std': {
228        'format': '%(asctime)s %(levelname)-8s [modulo: %(module)s, funcion: %(funcName)s, linea: %(lineno)d]. %(message)s',
229    }
230}, handlers={
231    'null': {
232        'level': 'DEBUG',
233        'class': 'logging.NullHandler'
234    },
235    'base': {
236        'class': 'logging.handlers.TimedRotatingFileHandler',
237        'level': 'DEBUG',
238        'formatter': 'std',
239        'filename': os.path.join(LOGS_PATH, 'base.log'),
240        'when': 'w6',
241        'interval': 1,
242        'backupCount': 52
243    },
244    'economico': {
245        'class': 'logging.handlers.TimedRotatingFileHandler',
246        'level': 'DEBUG',
247        'formatter': 'std',
248        'filename': os.path.join(LOGS_PATH, 'economico.log'),
249        'when': 'w6',
250        'interval': 1,
251        'backupCount': 52
252    },
253    'productivo': {
254        'class': 'logging.handlers.TimedRotatingFileHandler',
255        'level': 'DEBUG',
256        'formatter': 'std',
257        'filename': os.path.join(LOGS_PATH, 'productivo.log'),
258        'when': 'w6',
259        'interval': 1,
260        'backupCount': 52
261    },
262    'usuario': {
263        'class': 'logging.handlers.TimedRotatingFileHandler',
264        'level': 'DEBUG',
265        'formatter': 'std',
266        'filename': os.path.join(LOGS_PATH, 'usuario.log'),
267        'when': 'w6',
268        'interval': 1,
269        'backupCount': 52
270    },
271    'carga_masiva': {
272        'class': 'logging.handlers.TimedRotatingFileHandler',
273        'level': 'DEBUG',
274        'formatter': 'std',
275        'filename': os.path.join(LOGS_PATH, 'carga_masiva.log'),
276        'when': 'w6',
277        'interval': 1,
278        'backupCount': 52
279    },
280}, loggers={
281    'root': {
282        'level': 'DEBUG',
283        'handlers': ['usuario']
284    },
285    'base': {
286        'level': 'DEBUG',
287        'handlers': ['base'],
288        'qualname': 'base'
289    },
290    'economico': {
291        'level': 'DEBUG',
292        'handlers': ['economico'],
293        'qualname': 'economico'
294    },
295    'productivo': {
296        'level': 'DEBUG',
297        'handlers': ['productivo'],
298        'qualname': 'productivo'
299    },
300    'usuario': {
301        'level': 'DEBUG',
302        'handlers': ['usuario'],
303        'qualname': 'usuario'
304    },
305    'carga_masiva': {
306        'level': 'DEBUG',
307        'handlers': ['carga_masiva'],
308        'qualname': 'carga_masiva'
309    },
310    'django.request': {
311        'handlers': ['null'],
312        'level': 'ERROR',
313        'propagate': False,
314    }
315})
316
317# Configuración del CAPTCHA
318## Ruta en donde se encuentra el diccionario de palabras a utilizar en la generación del captcha
319CAPTCHA_WORDS_DICTIONARY = os.path.join(BASE_DIR, "static/dictionaries/captcha-es.txt")
320## Establece el tipo de captcha a generar. Se establece a la extraccion de palabras a partir de un diccionario
321CAPTCHA_CHALLENGE_FUNCT = 'captcha.helpers.word_challenge'
322## Longitud de carácteres a mostrar en la imagen del captcha
323CAPTCHA_LENGTH = 6
324## Longitud de carácteres máxima permitida para extraer del diccionario
325CAPTCHA_DICTIONARY_MAX_LENGTH = 6
326## Longitud de carácteres mínima permitida para extraer del diccionario
327CAPTCHA_DICTIONARY_MIN_LENGTH = 4
328## Color de fondo para la imagen del captcha
329CAPTCHA_BACKGROUND_COLOR = '#337AB7'
330## Color de la fuente para la imagen del captcha
331CAPTCHA_FOREGROUND_COLOR = '#FFF'
332
333if DEBUG:
334    ## Si se encuentra en modo de desarrollo, la imagen de captcha no es requerida
335    CAPTCHA_TEST_MODE = True
336
337    ## Elimina la imagen de ruido en el fondo del captcha cuando la aplicacion se encuentra en modo desarrollo
338    CAPTCHA_NOISE_FUNCTIONS = ('captcha.helpers.noise_null',)
339
340    ## Tiempo de expiración del captcha en entornos de desarrollo, representado en minutos
341    CAPTCHA_TIMEOUT = 1440 # 24 horas
342
343    ## Configura el backend para el envío de correo electrónico para mostrarlo en consola, solo en entorno de desarrollo
344    EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'
Nota: Vea TracBrowser para ayuda de uso del navegador del repositorio.