def handle(self,*args,**options): agencias_creadas_en_estado_creacion_inicial=Agencia.objects.filter(estado_creacion=Agencia.CREACION_INICIADA) for agencia in agencias_creadas_en_estado_creacion_inicial: try: try: agencia=Agencia.objects.get(pk=agencia.id,estado_creacion=Agencia.CREACION_INICIADA) except AgenciaNotFound: continue # @todo Modificar por: # hacer pull de iamcast # crear el archivo ambiente.py a partir de template y datos de la agencia. # ejecutar ./install.sh agencia.crear_servicio() except Exception as e: if hasattr(e,'output'): output=e.output else: output='' logger = logging.getLogger(__name__) logger.error('Excepcion ocurrida al intentar crear agencia con id "%s": %s' % (agencia.id,e)) logger.error('Salida registrada: %s'%output) logger.error('Detalle de la excepción: %s' % traceback.format_exc()) cuerpo='%s\n\nsalida:\n%s'%(traceback.format_exc(),output) msg = MailIamSoft(u'Error en la creación',cuerpo,[email for _,email in settings.ADMINS]) msg.send()
def handle(self,*args,**options): id=options['id'] if id: agencia=Agencia.objects.get(pk=id) else: raise Exception(_(u'Debe pasar un id de agencia como parámetro')) try: agencia.borrar_servicio() """ if not suprimir_mail: asunto = _(u'La Creación de su Agencia Finalizó Exitosamente') template = loader.get_template('iamcast/mail/exito_creacion_agencia.html') context = RequestContext(request,{'agencia':agencia, 'password':password}) text_content = template.render(context) msg = MailIamSoft(asunto,text_content,[user.email]) msg.send() """ except Exception as e: msg = MailIamSoft(u'Error en borrado de agencia %s'%agencia.id,'%s\n\n%s'%(traceback.format_exc(),array_llamada),[email for _,email in settings.ADMINS]) msg.send() """ logger = logging.getLogger(__name__) logger.error('Excepción ocurrida al intentar crear agencia con id "%s": %s' % (id,e)) """ agencia.estado_creacion = Agencia.BORRADA_CON_ERRORES agencia.save() raise e # @todo enviar mail con el resultado de la creación self.stdout.write('El estado de borrado de la agencia %s fue: %s\n'%(agencia.nombre,Agencia.DICT_ESTADO_CREACION[agencia.estado_creacion]))
def handle(self,*args,**options): id=options['id'] nombre=options['nombre'] saltar_verif_estado=options['saltar_verif_estado'] suprimir_mail=options['suprimir_mail'] if id: agencia=Agencia.objects.get(pk=id) elif nombre: agencia=Agencia.objects.get(nombre=nombre) else: raise Exception(ugettext(u'Debe pasar un id o nombre de agencia como parámetro')) try: agencia.crear_servicio() except Exception as e: if hasattr(e,'output'): output=e.output else: output='' cuerpo='%s\n\n%s\n\nsalida:\n%s'%(traceback.format_exc(),array_llamada,output) msg = MailIamSoft(u'Error en la creación',cuerpo,[email for _,email in settings.ADMINS]) msg.send() """ logger = logging.getLogger(__name__) logger.error('Excepción ocurrida al intentar crear agencia con id "%s": %s' % (id,e)) """ agencia.estado_creacion = Agencia.FINALIZADA_CON_ERRORES agencia.save() raise e
def crear_servicio(self): if self.estado_creacion != Agencia.CREACION_INICIADA: raise Exception('Se ha intentado crear servicio para agencia %s pero su estado de creación %s es distinto de %s.'%( self.id, Agencia.DICT_ESTADO_CREACION[self.estado_creacion], Agencia.DICT_ESTADO_CREACION[Agencia.CREACION_INICIADA] )) self.estado_creacion=Agencia.CREACION_EN_PROCESO self.save() password = User.objects.make_random_password() os.makedirs(self.get_ruta_instalacion()) os.chdir(self.get_ruta_instalacion()) self.__callScript(['git', 'init']) self.__callScript(['git', 'pull', settings.AMBIENTE.iamcast.agencia_git_url]) os.environ['DJANGO_SETTINGS_MODULE'] = "alternativa.settings" template = loader.get_template('iamcast/servicio/ambiente.py') context = Context({ 'agencia':self, 'password':password, 'admins': settings.AMBIENTE.admins, 'root_password': settings.AMBIENTE.db.root.password, }) ambiente_content = template.render(context) ambiente_file = open(self.get_ambiente_file_path(),'w') ambiente_file.write(ambiente_content) ambiente_file.close() self.__callScript(['./install.sh']) array_llamada=[ self.get_manage_script(), 'crear_super_usuario', '--username=%s'%self.user.username, '--first_name=%s'%self.user.first_name, '--last_name=%s'%self.user.last_name, '--email=%s'%self.user.email, '--password=%s'%self.user.password, ] self.__callScript(array_llamada) del os.environ['DJANGO_SETTINGS_MODULE'] asunto = ugettext(u'La Creación de su Agencia Finalizó Exitosamente') template = loader.get_template('iamcast/mail/exito_creacion_agencia.html') context = Context({'agencia':self, 'password':password, 'ambiente': settings.AMBIENTE}) html_content = template.render(context) msg = MailIamSoft(asunto,ugettext(u'El contenido de este email debe ser visualizado en formato HTML'),[self.user.email]) msg.set_html_body(html_content) msg.send() self.estado_creacion = Agencia.FINALIZADA_CON_EXITO self.activa = True self.save()