Changeset 93d134b in observatorio
- Timestamp:
- Jul 22, 2014, 11:17:31 AM (10 years ago)
- Branches:
- master
- Children:
- 43b5dcf
- Parents:
- b010f23
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
procesos/install.py
r0f479cb r93d134b 1 # !/usr/bin/python1 # !/usr/bin/python 2 2 # -*- coding:utf-8 -*- 3 3 ## @mainpage Documentación del proceso de instalación del Observatorio del Sistema Productivo Venezolano … … 44 44 45 45 ## Muestra el autor del script de instalación 46 """ 46 47 __author__ = 'Ing. Roldan D. Vargas G. (rvargas@cenditel.gob.ve)' 48 """ 47 49 ## Muestra una descripción breve del script 50 """ 48 51 __doc__ = 'Este script permite la creación de las bases de datos que interoperan con el Observatorio del Sistema ' \ 49 52 'Productivo Venezolano, así como la estructura de datos geoespaciales necesaria para la representación ' \ 50 53 'geográfica de las cadenas de producción. Permite, de igual forma, la inicialización de datos básicos del ' \ 51 54 'sistema' 55 """ 52 56 53 57 ## @namespace install … … 60 64 # @date 20-05-2014 61 65 # @version 1.0.1 62 import settings 66 63 67 import os 64 68 import sys 65 import psycopg266 69 67 70 … … 71 74 72 75 if formato == 'reset': 73 return codigo +"0;39m"76 return codigo + "0;39m" 74 77 75 78 letter = {0: 'normal', 1: 'negrita', 2: 'diluir', 3: 'cursiva', 4: 'subrayado', 5: 'parpadeo lento', … … 81 84 for i in range(8): 82 85 if formato == letter[i]: 83 f = str(i) +";"86 f = str(i) + ";" 84 87 if color == color_c[i]: 85 88 if not fondo: 86 c = "3" +str(i)+"m"89 c = "3" + str(i) + "m" 87 90 else: 88 c = "4" +str(i)+"m"91 c = "4" + str(i) + "m" 89 92 elif color == color_n[i]: 90 93 if not fondo: 91 c = "9" +str(i)+"m"94 c = "9" + str(i) + "m" 92 95 else: 93 c = "10"+str(i)+"m" 94 95 return codigo+f+c 96 c = "10" + str(i) + "m" 97 98 return codigo + f + c 99 96 100 97 101 def borrar_pantalla(): … … 111 115 112 116 117 def check_sudo(): 118 """! 119 Función que permite verificar si el usuario que esta ejecutando el script de instalación tiene los privilegios 120 necesarios para hacerlo 121 122 @author Ing. Roldan D. Vargas G. rvargas@cenditel.gob.ve 123 @author Centro Nacional de Desarrollo e Investigación en Tecnologías Libres (CENDITEL) Nodo Mérida 124 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 125 @date 09-06-2014 126 @version 1.0.1 127 """ 128 import grp 129 import getpass 130 groups = grp.getgrall() 131 permisos = False 132 tp_usuario = "root" 133 134 try: 135 if os.environ['VIRTUAL_ENV']: 136 permisos = True 137 except KeyError: 138 tp_usuario = "sudo" 139 140 for group in groups: 141 for user in groups[3]: 142 if user == getpass.getuser() and (group[0] == "sudo" or getpass.getuser() == "root"): 143 permisos = True 144 if getpass.getuser() == "root": 145 tp_usuario = "root" 146 147 if not permisos: 148 print "\n%sUsted no posee privilegios para instalar la aplicación. Debe ser usuario administrador del " \ 149 "sistema o pertenecer al grupo sudo.%s\n" % (color_print('normal', 'Red'), color_print('reset')) 150 sys.exit(1) 151 152 else: 153 return tp_usuario 154 155 156 def install_dependencias(): 157 """! 158 Función que permite instalar las dependencias del sistema antes de ser ejecutado 159 160 @author Ing. Roldan D. Vargas G. rvargas@cenditel.gob.ve 161 @author Centro Nacional de Desarrollo e Investigación en Tecnologías Libres (CENDITEL) Nodo Mérida 162 @copyright <a href='http://www.gnu.org/licenses/gpl-2.0.html'>GNU Public License versión 2 (GPLv2)</a> 163 @date 09-06-2014 164 @version 1.0.1 165 """ 166 usuario = "" 167 if check_sudo() == "sudo": 168 usuario = "sudo" 169 170 print "\n%sComenzando el proceso de instalación de los requerimientos del sistema...%s\n" \ 171 % (color_print('normal', 'Yellow'), color_print('reset')) 172 173 file_req = open("requerimientos/comun.txt", "r") 174 for line in file_req.readlines(): 175 dependencias = os.system("%s easy_install %s" % (usuario, line)) 176 177 if dependencias == 0: 178 print "\n%sLos requerimientos previos fueron instalados correctamente%s\n" \ 179 % (color_print('normal', 'Green'), color_print('reset')) 180 181 113 182 def install_database(): 114 183 """! … … 122 191 @version 1.0.1 123 192 """ 193 try: 194 import settings 195 import psycopg2 196 except ImportError: 197 return 124 198 125 199 conn = None 126 200 201 ## Base de Datos por defecto del Observatorio del Sistema Productivo Venezolano 127 202 database_default = settings.DATABASES['default']['NAME'] 128 203 host_default = settings.DATABASES['default']['HOST'] … … 131 206 port_default = settings.DATABASES['default']['PORT'] 132 207 208 ## Base de Datos del Sistema de Gestión para la Industria y Comercio (SIGESIC) 133 209 database_sigesic = settings.DATABASES['sigesic']['NAME'] 134 210 host_sigesic = settings.DATABASES['sigesic']['HOST'] … … 137 213 port_sigesic = settings.DATABASES['sigesic']['PORT'] 138 214 215 ## Base de Datos del Sistema de Información Geográfico (GeoCadena) 139 216 database_geo = settings.DATABASES['geocadena_db']['NAME'] 140 217 host_geo = settings.DATABASES['geocadena_db']['HOST'] … … 160 237 161 238 if resp.upper() == 'Y': 162 print "\nCreando base de datos %s\n" % database_default 239 print "\n%sCreando base de datos %s%s\n" % (color_print('normal', "Blue"), database_default, 240 color_print('reset')) 163 241 164 242 crear_bd = os.system("createdb -h %s -U %s -O %s -E UTF8 %s" % (host_default, user_default, user_default, … … 166 244 167 245 if crear_bd == 0: 168 print "\nBase de Datos '%s' creada satisfactoriamente.\n" % database_default 246 print "\n%sBase de Datos '%s' creada satisfactoriamente.%s\n" % (color_print('normal', 'Green'), 247 database_default, 248 color_print('reset')) 169 249 else: 170 250 # Abortando acciones en la creación de la Base de Datos 171 print " Para proceder a la creación de la base de datos %s, recuerde modificar el rol del usuario " \172 "'%s' con privilegios de superusuario en el servidor '%s'. " % (database_default, user_default,173 host_default)251 print "%sPara proceder a la creación de la base de datos %s, recuerde modificar el rol del usuario " \ 252 "'%s' con privilegios de superusuario en el servidor '%s'.%s" % \ 253 (color_print('normal', 'Red'), database_default, user_default, host_default, color_print('reset')) 174 254 sys.exit(1) 175 255 … … 185 265 186 266 if host_default == host_sigesic and resp is None: 187 resp = raw_input("Antes de continuar tenga en cuenta que el usuario '%s' debe tener el rol de SUPERUSER " 188 "para poder crear la Base de Datos '%s' en el servidor '%s'.\n¿Desea continuar y/n? " % 189 (user_sigesic, database_sigesic, host_sigesic)) 267 resp = raw_input("%sAntes de continuar tenga en cuenta que el usuario '%s' debe tener el rol de SUPERUSER " 268 "para poder crear la Base de Datos '%s' en el servidor '%s'.\n¿Desea continuar y/n? %s" % 269 (color_print('normal', 'Light Yellow'), user_sigesic, database_sigesic, host_sigesic, 270 color_print('reset'))) 190 271 191 272 if resp.upper() == 'Y': 192 print "\nCreando base de datos %s\n" % database_sigesic 273 print "\n%sCreando base de datos %s%s\n" % (color_print('normal', 'Blue'), database_sigesic, 274 color_print('reset')) 193 275 194 276 crear_bd = os.system("createdb -h %s -U %s -O %s -E UTF8 %s" % (host_sigesic, user_sigesic, user_sigesic, … … 196 278 197 279 if crear_bd == 0: 198 print "\nBase de Datos '%s' creada satisfactoriamente.\n" % database_sigesic 280 print "\n%sBase de Datos '%s' creada satisfactoriamente.%s\n" % (color_print('normal', 'Green'), 281 database_sigesic, 282 color_print('reset')) 199 283 else: 200 284 # Abortando acciones en la creación de la Base de Datos 201 print " Para proceder a la creación de la base de datos %s, recuerde modificar el rol del usuario " \202 "'%s' con privilegios de superusuario en el servidor '%s'. " % (database_sigesic, user_sigesic,203 host_sigesic)285 print "%sPara proceder a la creación de la base de datos %s, recuerde modificar el rol del usuario " \ 286 "'%s' con privilegios de superusuario en el servidor '%s'.%s" % \ 287 (color_print('normal', 'Red'), database_sigesic, user_sigesic, host_sigesic, color_print('reset')) 204 288 sys.exit(1) 205 289 … … 213 297 except psycopg2.DatabaseError: 214 298 if host_default == host_geo and resp is None: 215 resp = raw_input("Antes de continuar tenga en cuenta que el usuario '%s' debe tener el rol de SUPERUSER " 216 "para poder crear la Base de Datos '%s' en el servidor '%s'.\n¿Desea continuar y/n? " % 217 (user_geo, database_geo, host_geo)) 299 resp = raw_input("%sAntes de continuar tenga en cuenta que el usuario '%s' debe tener el rol de SUPERUSER " 300 "para poder crear la Base de Datos '%s' en el servidor '%s'.\n¿Desea continuar y/n? %s" % 301 (color_print('normal', 'Light Yellow'), user_geo, database_geo, host_geo, 302 color_print('reset'))) 218 303 219 304 if resp.upper() == 'Y': 220 print "\nCreando base de datos %s\n" % database_geo 305 print "\n%sCreando base de datos %s%s\n" % (color_print('normal', 'Blue'), database_geo, 306 color_print('reset')) 221 307 222 308 crear_bd = os.system("createdb -h %s -U %s -O %s -E UTF8 %s" % (host_geo, user_geo, user_geo, database_geo)) 223 309 224 310 if crear_bd == 0: 225 print "\nBase de Datos '%s' creada satisfactoriamente.\n" % database_geo 226 227 print "\nCreando extensiones de Datos Geoespaciales.\n" 228 229 extensiones = [] 230 231 for ext in ['postgis', 'postgis_topology', 'fuzzystrmatch', 'postgis_tiger_geocoder']: 232 extensiones.append("psql -h %s -U %s -d %s -c 'CREATE EXTENSION %s;'" % (host_geo, user_geo, 233 database_geo, ext)) 234 235 crear_extension = os.system("%s && %s && %s && %s" % (extensiones[0], extensiones[1], extensiones[2], 236 extensiones[3])) 237 238 if crear_extension == 0: 239 print "\nExtensiones de Datos Geoespaciales creadas satisfactoriamente...\n" 311 print "\n%sBase de Datos '%s' creada satisfactoriamente.%s\n" % (color_print('normal', 'Green'), 312 database_geo, color_print('reset')) 313 314 print "\n%sCreando extensiones de Datos Geoespaciales.%s\n" % (color_print('normal', 'Blue'), 315 color_print('reset')) 316 try: 317 extensiones = [] 318 319 for ext in ['postgis', 'postgis_topology', 'fuzzystrmatch', 'postgis_tiger_geocoder']: 320 extensiones.append("psql -h %s -U %s -d %s -c 'CREATE EXTENSION %s;'" % (host_geo, user_geo, 321 database_geo, ext)) 322 323 crear_extension = os.system("%s && %s && %s && %s" % (extensiones[0], extensiones[1], extensiones[2], 324 extensiones[3])) 325 326 if crear_extension == 0: 327 print "\n%sExtensiones de Datos Geoespaciales creadas satisfactoriamente...%s\n" % \ 328 (color_print('normal', 'Green'), color_print('reset')) 329 except Exception, e: 330 print "%s %s %s" % (color_print('normal', 'Blue'), e, color_print('reset')) 331 240 332 else: 241 333 # Abortando acciones en la creación de la Base de Datos 242 print "Para proceder a la creación de la base de datos %s, recuerde modificar el rol del usuario " \ 243 "'%s' con privilegios de superusuario en el servidor '%s'." % (database_geo, user_geo, host_geo) 334 print "%sPara proceder a la creación de la base de datos %s, recuerde modificar el rol del usuario " \ 335 "'%s' con privilegios de superusuario en el servidor '%s'.%s" % \ 336 (color_print('normal', 'Red'), database_geo, user_geo, host_geo, color_print('reset')) 244 337 sys.exit(1) 245 338 246 339 247 340 # Sincronización de las Bases de Datos del Observatorio del Sistema Productivo Venezolano 248 print "\nSe procede a la sincronización de las Bases de Datos del Sistema...\n" 249 250 print "\nSincronizando Base de Datos por defecto, por favor espere...\n" 341 print "\n%sSe procede a la sincronización de las Bases de Datos del Sistema...%s\n" % \ 342 (color_print('normal', 'Blue'), color_print('reset')) 343 344 print "\n%sSincronizando Base de Datos por defecto, por favor espere...%s\n" % \ 345 (color_print('normal', 'Blue'), color_print('reset')) 251 346 252 347 syncdb_default = os.system("python manage.py syncdb --no-initial-data") 253 348 254 349 if syncdb_default == 0: 255 print "\nBase de datos sincronizada correctamente...\n" 256 257 print "\nSincronizando Base de Datos del SIGESIC, por favor espere...\n" 350 print "\n%sBase de datos sincronizada correctamente...%s\n" % (color_print('normal', 'Green'), 351 color_print('reset')) 352 353 print "\n%sSincronizando Base de Datos del SIGESIC, por favor espere...%s\n" % (color_print('normal', 'Blue'), 354 color_print('reset')) 258 355 259 356 syncdb_sigesic = os.system("python manage.py syncdb --database=sigesic --no-initial-data") 260 357 261 358 if syncdb_sigesic == 0: 262 print "\nBase de datos sincronizada correctamente...\n" 263 264 print "\nSincronizando Base de Datos del Sistema de Información Geográfico, por favor espere...\n" 359 print "\n%sBase de datos sincronizada correctamente...%s\n" % (color_print('normal', 'Green'), 360 color_print('reset')) 361 362 print "\n%sSincronizando Base de Datos del Sistema de Información Geográfico, por favor espere...%s\n" % \ 363 (color_print('normal', 'Blue'), color_print('reset')) 265 364 266 365 syncdb_geocadena = os.system("python manage.py syncdb --database=geocadena_db --no-initial-data") 267 366 268 367 if syncdb_geocadena == 0: 269 print "\nBase de Datos sincronizada correctamente...\n" 368 print "\n%sBase de Datos sincronizada correctamente...%s\n" % (color_print('normal', 'Green'), 369 color_print('reset')) 270 370 271 371 if conn: … … 275 375 if __name__ == '__main__': 276 376 borrar_pantalla() 377 check_sudo() 378 install_dependencias() 277 379 install_database()
Note: See TracChangeset
for help on using the changeset viewer.