def form_valid(self, form): contacto = form.save(commit=False) contacto.datos = form.get_datos_json() contacto.es_originario = False contacto.save() # TODO: OML-1016 Tener en cuenta esto al hacer esta card. if self.campana.type == Campana.TYPE_PREVIEW: self.campana.adicionar_agente_en_contacto(contacto) if self.accion == 'calificar': return HttpResponseRedirect( reverse('calificacion_formulario_update_or_create', kwargs={ "pk_campana": self.kwargs['pk_campana'], "pk_contacto": contacto.pk })) else: agente = self.request.user.get_agente_profile() click2call_type = 'contactos' if self.telefono: telefono = self.telefono originator = Click2CallOriginator() originator.call_originate(agente, self.campana.id, str(self.campana.type), contacto.id, telefono, click2call_type) message = _( "Contacto creado satisfactoriamente. Efectuando llamada.") messages.success(self.request, message) return super(FormularioNuevoContactoFormView, self).form_valid(form)
def post(self, request): self.sistema_externo = None if 'idExternalSystem' in request.data: try: id_external_system = request.data['idExternalSystem'] self.sistema_externo = SistemaExterno.objects.get( id=id_external_system) except SistemaExterno.DoesNotExist: return Response( data={ 'status': 'ERROR', 'message': _('Hubo errores en los datos recibidos'), 'errors': { 'idExternalSystem': [_('Sistema externo inexistente.')] } }) form = Click2CallExternalSiteParametersForm( sistema_externo=self.sistema_externo, data=request.data) else: form = Click2CallOMLParametersForm(request.data) if form.is_valid(): # TODO: Verificar que el agente que dispara la llamada es el mismo de la autenticación agente = form.get_agente() campana = form.get_campana() contacto_id = form.get_contacto_id() telefono = form.cleaned_data.get('phone') click2call_type = 'contactos' # TODO: Consultar con Fabian originator = Click2CallOriginator() error = originator.call_originate(agente, campana.id, str(campana.type), contacto_id, telefono, click2call_type) if error is None: return Response(data={ 'status': 'OK', }) else: return Response( data={ 'status': 'ERROR', 'message': _('Error al ejecutar la llamada'), 'errors': [error] }) return Response(data={ 'status': 'OK', }) else: return Response( data={ 'status': 'ERROR', 'message': _('Hubo errores en los datos recibidos'), 'errors': form.errors })
def post(self, request, *args, **kwargs): # TODO: Analizar bien el caso de que se este agregando un contacto agente = AgenteProfile.objects.get(pk=request.POST['pk_agente']) click2call_type = request.POST.get('click2call_type', 'false') tipo_campana = request.POST.get('tipo_campana') campana_id = request.POST.get('pk_campana') telefono = request.POST.get('telefono', '') # Si el pk es 0 es porque no se quiere identificar al contacto. # El tipo de click2call no será "preview". contacto_id = request.POST['pk_contacto'] if not contacto_id == '-1': contacto = Contacto.objects.get(pk=contacto_id) if not telefono: telefono = contacto.telefono if campana_id == '': calificacion_cliente = CalificacionCliente.objects.filter( contacto=contacto, agente=agente).order_by('-fecha') if calificacion_cliente.exists(): campana = calificacion_cliente[0].campana campana_id = str(campana.pk) tipo_campana = str(campana.type) elif click2call_type == 'preview': asignado = AgenteEnContacto.asignar_contacto( contacto.id, campana_id, agente) if not asignado: message = _(u'No es posible llamar al contacto.' ' Para poder llamar un contacto debe obtenerlo' ' desde el menu de Campañas Preview.' ' Asegurese de no haber perdido la reserva') messages.warning(self.request, message) return HttpResponseRedirect( reverse('campana_preview_activas_miembro')) originator = Click2CallOriginator() originator.call_originate(agente, campana_id, tipo_campana, contacto_id, telefono, click2call_type) return HttpResponseRedirect(reverse('view_blanco'))
def post(self, request, *args, **kwargs): agente = self.request.user.get_agente_profile() tipo_destino = request.POST.get('tipo_destino') destino = request.POST.get('destino', '') originator = Click2CallOriginator() if tipo_destino == Click2CallOriginator.AGENT: try: agente_destino = AgenteProfile.objects.get(id=destino) except AgenteProfile.DoesNotExist: # TODO: Deberia devolver json con error de agente incorrecto? pass else: originator.call_agent(agente, agente_destino) elif tipo_destino == Click2CallOriginator.EXTERNAL: # TODO: Validar destino como un numero valido? originator.call_external(agente, destino) else: # TODO: Devolver Json con error de tipo destino incorrecto? pass return HttpResponseRedirect(reverse('view_blanco'))
def form_valid(self, form): contacto = form.save(commit=False) contacto.datos = form.get_datos_json() contacto.es_originario = False contacto.save() agente = self.request.user.get_agente_profile() # TODO: OML-1016 - Ver si hay que agregar el contacto en Wombat. if self.campana.type == Campana.TYPE_PREVIEW: # Se crea el agente en contacto únicamente para esta campaña, asignado a este agente. self.campana.adicionar_agente_en_contacto(contacto, agente_id=agente.id, es_originario=False) if self.accion == 'calificar': return HttpResponseRedirect( reverse('calificacion_formulario_update_or_create', kwargs={ "pk_campana": self.kwargs['pk_campana'], "pk_contacto": contacto.pk })) else: click2call_type = 'contactos' if self.telefono: telefono = self.telefono originator = Click2CallOriginator() transaction.on_commit(lambda: originator.call_originate( agente, self.campana.id, str(self.campana.type), contacto.id, telefono, click2call_type)) message = _( "Contacto creado satisfactoriamente. Efectuando llamada.") messages.success(self.request, message) return super(FormularioNuevoContactoFormView, self).form_valid(form)
def post(self, request, *args, **kwargs): # TODO: Analizar bien el caso de que se este agregando un contacto # TODO: DEJAR DE MANDAR pk_agente # TODO: DEJAR DE MANDAR tipo_campana agente = self.request.user.get_agente_profile() click2call_type = request.POST.get('click2call_type', 'false') campana_id = request.POST.get('pk_campana') telefono = request.POST.get('telefono', '') # Patch: Para deectar que hubo un error cuando se le pega por AJAX... self.no_redirect = request.POST.get('404_on_error') # Si el pk es 0 es porque no se quiere identificar al contacto. # El tipo de click2call no será "preview". contacto_id = request.POST['pk_contacto'] if not contacto_id == '-1': try: contacto = Contacto.objects.get(pk=contacto_id) except Contacto.DoesNotExist: message = _( u'No es posible llamar al contacto. No se pudo identificar al contacto.' ) return self.error_return_value('view_blanco', message) if not telefono: if not contacto: message = _( u'No es posible llamar al contacto. No se pudo identificar un teléfono.' ) return self.error_return_value('view_blanco', message) telefono = contacto.telefono if campana_id == '': calificacion_cliente = CalificacionCliente.objects.filter( contacto=contacto, agente=agente).order_by('-fecha') if calificacion_cliente.exists(): campana = calificacion_cliente[0].campana campana_id = str(campana.pk) tipo_campana = str(campana.type) else: try: campana = Campana.objects.obtener_actuales().get(id=campana_id) except Campana.DoesNotExist: message = _( u'No es posible llamar al contacto.' ' La campaña no se encuentra activa o no existe en el sistema.' ) return self.error_return_value('view_blanco', message) campana_id = str(campana.pk) tipo_campana = str(campana.type) if click2call_type == 'preview': asignado = AgenteEnContacto.asignar_contacto( contacto.id, campana.pk, agente) if not asignado: message = _(u'No es posible llamar al contacto.' ' Para poder llamar un contacto debe obtenerlo' ' desde el menu de Campañas Preview.' ' Asegurese de no haber perdido la reserva') return self.error_return_value( 'campana_preview_activas_miembro', message) originator = Click2CallOriginator() originator.call_originate(agente, campana_id, tipo_campana, contacto_id, telefono, click2call_type) return HttpResponseRedirect(reverse('view_blanco'))