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()
Esempio n. 2
0
  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]))
Esempio n. 3
0
  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
Esempio n. 4
0
  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()