Esempio n. 1
0
    def save(self, request, formset_telefonos, formset_areas):
        """
        Guarda al nuevo cliente con sus preferencias y crea un usuario
        ademas envia los mails que correspondan al usuario y a los 
        administradores correspondientes
        """
        # TODO: No está mandando todos los mails, se debe mandar un solo mail al registrrse
        newcli = False
        if request.user.is_authenticated():
            cliente = Cliente.objects.get(usuario=request.user)
        else:
            try:
                cliente = Cliente.objects.get(usuario__username=self.cleaned_data['email'])
            except Cliente.DoesNotExist:
                newcli = True
                usuario = User.objects.create_user(
                    username=self.cleaned_data['email'],
                    email=self.cleaned_data['email'],
                    password="******"
                )
                usuario.first_name = self.cleaned_data['nombre']
                usuario.last_name = self.cleaned_data['apellido']
                usuario.is_active = False
                usuario.save()
                cliente = Cliente(usuario=usuario)
                cliente.save()

        cliente.recibir_email = self.cleaned_data['recibir_email']
        cliente.rastrear_proyectos = self.cleaned_data['rastrear_proyectos']
        for rubro in self.cleaned_data['rubros_interes']:
            cliente.rubros.add(rubro)
        for form_telefono in formset_telefonos.forms:
            telefono = form_telefono.save()
            cliente.set_telefono(telefono)
#        proyectos = []
        for form_area in formset_areas.forms:
            area_interes = form_area.save()
            # proyectos += Proyecto.accepted.filter(
            #     latitud__lte=area_interes.high_latitud,
            #     latitud__gte=area_interes.low_latitud,
            #     longitud__lte=area_interes.high_longitud,
            #     longitud__gte=area_interes.low_longitud,
            # )
            cliente.areas_interes.add(area_interes)
        cliente.save()

        #si es un nuevo cliente envia el mail para confirmar el registro y 
        #envia los mails de bienvenida de cada rubro que selecciono el usuario
        if newcli:
            send_html_mail(settings.DEFAULT_FROM_EMAIL,
                           u"Registro en Quimera Inmobiliaria",
                           "confirmar_registro_contacto.html",
                           {"cliente": cliente,
                            "sitio": Site.objects.get_current(),
                            "STATIC_URL": settings.STATIC_URL,
                            "inmobiliaria":Inmobiliaria.objects.get(id=1)
                            },
                           cliente.usuario.email)

            for rubro in cliente.rubros.all():
                #se envia un correo de bienvenida por rubro
                send_html_mail(settings.DEFAULT_FROM_EMAIL,
                               u"Bienvenido al rubro '%s' de Quimera \
Inmobiliaria" % rubro,
                               "contacto_cliente_rubro.html",
                               {"rubro": rubro,
                                "sitio": Site.objects.get_current(),
                                "STATIC_URL": settings.STATIC_URL,
                                "inmobiliaria":Inmobiliaria.objects.get(id=1)
                                },
                               cliente.usuario.email)

        #mail de mensaje recibido
        send_html_mail(settings.DEFAULT_FROM_EMAIL,
                       u"Mensaje Recibido",
                       "contacto_cliente.html",
                       {"sitio": Site.objects.get_current(),
                        "STATIC_URL": settings.STATIC_URL,
                        "inmobiliaria":Inmobiliaria.objects.get(id=1)
                        },
                       cliente.usuario.email)        
        
        project_message = self.cleaned_data.get("proyecto")
        mensaje = MensajeFormularioContacto(
            cliente = cliente,
            mensaje = self.cleaned_data["mensaje"],
            fecha = datetime.now(),
            proyecto = project_message)
        mensaje.save()

        #se envia un correo a los administradores comerciales del proyecto
        #si no hay admin comerciales asociados al proyecto se envia al
        #DEFAULT_FROM_MAIL
        #si el mensaje no esta asociado a un proyecto se envia un mensaje
        #al DEFAULT_FROM_MAIL
        if project_message:
            queryset = project_message.usuarios.all()
            if queryset:
                for user in queryset:
                    if user.email:
                        send_html_mail( 
                            settings.DEFAULT_FROM_EMAIL,
                            u"%s : Hay un nuevo mensaje!" % project_message,
                            "contacto_admin.html",
                            {"cliente": cliente,
                             "mensaje": self.cleaned_data["mensaje"],
                             "proyecto": project_message,
                             "sitio": Site.objects.get_current(),
                             "STATIC_URL": settings.STATIC_URL,
                             "inmobiliaria":Inmobiliaria.objects.get(id=1)},
                            user.email)
            else:
                send_html_mail( 
                    settings.DEFAULT_FROM_EMAIL,
                    u"%s : Hay un nuevo mensaje!" % project_message,
                    "contacto_admin.html",
                    {"noAdminsAssociated": True,
                     "cliente": cliente,
                     "mensaje": self.cleaned_data["mensaje"],
                     "proyecto": project_message,
                     "sitio": Site.objects.get_current(),
                     "STATIC_URL": settings.STATIC_URL,
                     "inmobiliaria":Inmobiliaria.objects.get(id=1)},
                    settings.DEFAULT_FROM_EMAIL)
        else:
            sitio = Site.objects.get_current()
            send_html_mail( 
                settings.DEFAULT_FROM_EMAIL,
                u"%s : Hay un nuevo mensaje!" % sitio.name,
                "contacto_admin_no_project.html",
                {"cliente": cliente,
                 "mensaje": self.cleaned_data["mensaje"],
                 "sitio": sitio,
                 "STATIC_URL": settings.STATIC_URL,
                 "inmobiliaria":Inmobiliaria.objects.get(id=1)},
                settings.DEFAULT_FROM_EMAIL)