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)