Exemple #1
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()