Beispiel #1
0
def denunciar_cita(request):
    reputacion_necesaria = 10
    if request.is_ajax:
        cita_id = request.GET.get('frase_id', '')
        cita_denunciada = get_object_or_404(Cita, id=cita_id)
        perfil_usuario = Perfiles.objects.get(usuario=request.user)
        ya_denuncio = False
        ya_denuncio = Cdenunciadas.objects.filter(
            cita=cita_denunciada, perfil=perfil_usuario).exists()
        if ya_denuncio:
            return HttpResponse("cita ya denunciada")
        else:
            # marcar la cita como denunciada si el usuario tiene la reputacion necesaria
            if perfil_usuario.votos_recibidos > reputacion_necesaria:
                cdenunciada_obj = Cdenunciadas(cita=cita_denunciada,
                                               perfil=perfil_usuario)
                cita_denunciada.denunciada += 1
                if cita_denunciada.denunciada > 3:
                    # Notificacion imagen eliminada para quien subio la imagen.
                    notificacion_denuncia = Notificacion(
                        target=cita_denunciada.perfil,
                        objeto_id=cita_denunciada.id,
                        tipo_objeto="cita",
                        tipo_notificacion="denuncia")
                    notificacion_denuncia.save()

                    cita_denunciada.eliminada = True
                cita_denunciada.save()
                cdenunciada_obj.save()
        return HttpResponse("cita denunciada")
Beispiel #2
0
def denunciar(request):
    if request.is_ajax():
        reputacion_necesaria = 10
        imagen_id = request.GET.get('imagen_id')
        imagen = get_object_or_404(Imagen, pk=imagen_id)
        perfil_usuario = Perfiles.objects.get(usuario=request.user)
        ya_denuncio = False
        ya_denuncio = Idenunciadas.objects.filter(
            imagen=imagen, perfil=perfil_usuario).exists()
        if ya_denuncio:
            return HttpResponse('imagen ya denunciada')
        else:
            if perfil_usuario.votos_recibidos > reputacion_necesaria:
                # crea un idenunciada object si el usuario tiene la reputación
                idenunciada_object = Idenunciadas(
                    imagen=imagen, perfil=perfil_usuario)
                imagen.denunciada += 1
                idenunciada_object.save()
                if imagen.denunciada > 3:
                    imagen.eliminada = True

                    #Notificacion imagen eliminada al que subio la imagen
                    notificacion_denuncia = Notificacion(target=imagen.perfil,
                                                         objeto_id=imagen.id, tipo_objeto="imagen",
                                                         tipo_notificacion="denuncia")
                    notificacion_denuncia.save()

                imagen.save()
        return HttpResponse('imagen denunciada')
Beispiel #3
0
def denunciar(request):
    if request.is_ajax():
        reputacion_necesaria = 10
        imagen_id = request.GET.get('imagen_id')
        imagen = get_object_or_404(Imagen, pk=imagen_id)
        perfil_usuario = Perfiles.objects.get(usuario=request.user)
        ya_denuncio = False
        ya_denuncio = Idenunciadas.objects.filter(
            imagen=imagen, perfil=perfil_usuario).exists()
        if ya_denuncio:
            return HttpResponse('imagen ya denunciada')
        else:
            if perfil_usuario.votos_recibidos > reputacion_necesaria:
                # crea un idenunciada object si el usuario tiene la reputación
                idenunciada_object = Idenunciadas(imagen=imagen,
                                                  perfil=perfil_usuario)
                imagen.denunciada += 1
                idenunciada_object.save()
                if imagen.denunciada > 3:
                    imagen.eliminada = True

                    #Notificacion imagen eliminada al que subio la imagen
                    notificacion_denuncia = Notificacion(
                        target=imagen.perfil,
                        objeto_id=imagen.id,
                        tipo_objeto="imagen",
                        tipo_notificacion="denuncia")
                    notificacion_denuncia.save()

                imagen.save()
        return HttpResponse('imagen denunciada')
Beispiel #4
0
def sumar_post_video(request, slug, video_id):
    # procesa un nuevo post en el video.
    tema = get_object_or_404(Temas, slug=slug)
    video_padre = get_object_or_404(Videos, id=video_id)
    if request.method == "POST":
        form = FormNuevoPost(request.POST)
        if form.is_valid():
            texto = form.cleaned_data.get('texto')
            perfil_usuario = Perfiles.objects.get(usuario=request.user)
            post_video = Posts(texto=texto, creador=perfil_usuario,
                               tema=tema, video=video_padre)
            post_video.save()

            perfil_usuario.numero_de_posts = perfil_usuario.numero_de_posts + 1
            perfil_usuario.save()

            # Notificacion respuesta
            if perfil_usuario != video_padre.perfil:
                notificacion_respuesta = Notificacion(actor=perfil_usuario, target=video_padre.perfil,
                                                      objeto_id=video_padre.id, tipo_objeto="video",
                                                      tipo_notificacion="comment")
                notificacion_respuesta.save()

            # calcular nivel actividad y de popularidad del Tema
            popularidad_actividad_tema(tema, "positivo")

            return HttpResponseRedirect(reverse('videos:video',
                                                kwargs={'video_id': video_padre.id, 'slug': tema.slug, 'queryset': u'recientes'}))
        else:
            pass
    else:
        return HttpResponseRedirect(reverse('videos:video',
                                            kwargs={'video_id': video_padre.id, 'slug': tema.slug, 'queryset': u'recientes'}))
Beispiel #5
0
 def post(self, request, *args, **kwargs):
     self.object = self.get_object()
     noti = Notificacion(
     asunto = "Solicitud rechazada",
     descripcion = self.object.titulo,
     usuario = self.object.solicitante,
     prioridad = self.object.prioridad
     )
     noti.save()
     return super().post(request, *args, **kwargs)
Beispiel #6
0
    def form_valid(self, form, solicitud):
        tareas_creation = form.save(commit=False)
        #tareas_creation.titulo = form.titulo
        tareas_creation.supervisor = self.user
        tareas_creation.area_destino = solicitud.area_destino
        respon = get_object_or_404(User, pk=form['responsable'].value())
        tareas_creation.responsable = respon
        
        tareas_creation.save()

        noti = Notificacion(
        asunto = "Tarea asignada",
        descripcion = form['titulo'].value(),
        usuario = respon,
        prioridad = form['prioridad'].value()
        )
        noti.save()

        solicitud.estado_solicitud = 4

        noti_2 = Notificacion(
        asunto = "Solicitud aprobada",
        descripcion = solicitud.titulo,
        usuario = solicitud.solicitante,
        prioridad = solicitud.prioridad
        )
        noti_2.save()
        
        solicitud.save()

        return redirect(self.success_url)
Beispiel #7
0
    def form_valid(self, form):
        permisos_form = form.save(commit=False)
        permisos_form.usuario = self.request.user

        noti = Notificacion(
            asunto = "Solicitud de permiso",
            descripcion = form['titulo'].value(),
            usuario = self.request.user.profile.cargo_user.area.boss_user,
            prioridad = 2
        )
        noti.save()

        permisos_form.save()
        return redirect(self.success_url)
Beispiel #8
0
def sumar_post_video(request, slug, video_id):
    # procesa un nuevo post en el video.
    tema = get_object_or_404(Temas, slug=slug)
    video_padre = get_object_or_404(Videos, id=video_id)
    if request.method == "POST":
        form = FormNuevoPost(request.POST)
        if form.is_valid():
            texto = form.cleaned_data.get('texto')
            perfil_usuario = Perfiles.objects.get(usuario=request.user)
            post_video = Posts(texto=texto,
                               creador=perfil_usuario,
                               tema=tema,
                               video=video_padre)
            post_video.save()

            perfil_usuario.numero_de_posts = perfil_usuario.numero_de_posts + 1
            perfil_usuario.save()

            # Notificacion respuesta
            if perfil_usuario != video_padre.perfil:
                notificacion_respuesta = Notificacion(
                    actor=perfil_usuario,
                    target=video_padre.perfil,
                    objeto_id=video_padre.id,
                    tipo_objeto="video",
                    tipo_notificacion="comment")
                notificacion_respuesta.save()

            # calcular nivel actividad y de popularidad del Tema
            popularidad_actividad_tema(tema, "positivo")

            return HttpResponseRedirect(
                reverse('videos:video',
                        kwargs={
                            'video_id': video_padre.id,
                            'slug': tema.slug,
                            'queryset': u'recientes'
                        }))
        else:
            pass
    else:
        return HttpResponseRedirect(
            reverse('videos:video',
                    kwargs={
                        'video_id': video_padre.id,
                        'slug': tema.slug,
                        'queryset': u'recientes'
                    }))
Beispiel #9
0
    def get(self, request, *args, **kwargs):
        self.object = self.get_object()
        if request.user.profile.type_user < 3:
            if self.object.estado_solicitud == 1:
                self.object.estado_solicitud = 2
                self.object.save()

                noti = Notificacion(
                    asunto = "Solicitud de tarea en revision",
                    descripcion = self.object.titulo,
                    usuario = self.object.solicitante,
                    prioridad = self.object.prioridad
                    )
                noti.save()
        context = self.get_context_data(object=self.object)
        return self.render_to_response(context)
Beispiel #10
0
def respuesta(request, slug, post_id):
    # Maneja la respuesta del usuario a un post. Cualquier post, sea respuesta o en video.
    tema = Temas.objects.get(slug=slug)
    if request.method == "POST":
        form = FormNuevoPost(request.POST)
        if form.is_valid():
            texto = form.cleaned_data.get('texto')
            perfil_usuario = Perfiles.objects.get(usuario=request.user)
            post_padre = Posts.objects.get(id=post_id)
            # Si es una respuesta a un post en un video
            if post_padre.video is not None:
                post_respuesta = Posts(texto=texto, es_respuesta=True,
                                       creador=perfil_usuario, tema=tema, video=post_padre.video)
            else:
                post_respuesta = Posts(texto=texto, es_respuesta=True,
                                       creador=perfil_usuario, tema=tema)

            post_respuesta.save()

            # Respuesta object
            respuesta_db = Respuestas(post_respuesta=post_respuesta,
                                      post_padre=post_padre)
            respuesta_db.save()

            #Notificacion respuesta
            if perfil_usuario != post_padre.creador:
                notificacion_respuesta = Notificacion(actor=perfil_usuario, target=post_padre.creador,
                                                      objeto_id=post_padre.id, tipo_objeto="post",
                                                      tipo_notificacion="comment")
                notificacion_respuesta.save()

            # Redirige a la pagina del post_video si pertenece a un video
            if post_padre.video is not None:
                return HttpResponseRedirect(reverse('videos:post_video',
                                                    kwargs={
                                                        'video_id': post_padre.video.id, 'slug': tema.slug,
                                                        'post_id': post_id,
                                                        'queryset': u'recientes'}))
            # Redirige a la pagina del post.
            else:
                return HttpResponseRedirect(reverse('temas:post',
                                                    kwargs={'slug': tema.slug, 'post_id': post_id,
                                                            'queryset': u'recientes'}))
    else:
        return HttpResponseRedirect(reverse('temas:post',
                                            kwargs={'slug': tema.slug, 'post_id': post_id,
                                                    'queryset': u'recientes'}))
Beispiel #11
0
def marcar_favorito(request):
    # AJAX marca una cita como favorita
    if request.is_ajax():
        cita_id = request.GET.get('frase_id', '')
        cita = get_object_or_404(Cita, pk=cita_id)
        perfil_usuario = Perfiles.objects.get(usuario=request.user)
        # revisa si ya marco como favorita a esa cita
        fue_eliminada = False
        registro_existe = Cfavoritas.objects.filter(
            cita=cita, perfil=perfil_usuario).exists()

        if registro_existe:
            registro_favorito = Cfavoritas.objects.get(cita=cita,
                                                       perfil=perfil_usuario)
            fue_eliminada = registro_favorito.eliminado
            # marca la cita como favorita
            if fue_eliminada is True:
                cita.favoritos_recibidos += 1
                registro_favorito.eliminado = False
                registro_favorito.fecha = datetime.today()
                cita.save()
                registro_favorito.save()
                return HttpResponse('nueva frase favorita')
            # desmarca la cita como favorita
            else:
                cita.favoritos_recibidos -= 1
                registro_favorito.eliminado = True
                cita.save()
                registro_favorito.save()
                return HttpResponse('frase favorita removida')
        else:
            # suma la cita como nueva favorita
            cita.favoritos_recibidos += 1
            registro_favorito = Cfavoritas(cita=cita, perfil=perfil_usuario)
            registro_favorito.save()
            cita.save()

            #Notificaciones de cita
            if perfil_usuario != cita.creador:
                notificacion_cita_fav = Notificacion(
                    actor=perfil_usuario,
                    target=cita.creador,
                    objeto_id=cita.id,
                    tipo_objeto="cita",
                    tipo_notificacion="fav_voteup")
                notificacion_cita_fav.save()

            if cita.favoritos_recibidos == 100 or cita.favoritos_recibidos == 1000:
                notificacion_cita_num = Notificacion(target=cita.creador,
                                                     objeto_id=cita.id,
                                                     tipo_objeto="cita",
                                                     tipo_notificacion="num")
                notificacion_cita_num.save()

            return HttpResponse('nueva frase favorita')
    else:
        return HttpResponse("ajax error fav cita")
Beispiel #12
0
    def form_valid(self, form):
        solicitud_creation = form.save(commit = False)
        solicitud_creation.solicitante = self.user
        solicitud_creation.estado_solicitud = 1
        solicitud_creation.save()
        
        area_soli = get_object_or_404(Area, pk=form['area_destino'].value())
        
        noti = Notificacion(
        asunto = "Solicitud de tarea pendiente",
        descripcion = form['titulo'].value(),
        usuario = area_soli.boss_user,
        prioridad = form['prioridad'].value()
        )
        noti.save()

        return redirect(self.success_url)
Beispiel #13
0
def marcar_favorito(request):
    if request.is_ajax():
        imagen_id = request.GET.get('imagen_id', '')
        imagen = get_object_or_404(Imagen, pk=imagen_id)
        perfil_usuario = Perfiles.objects.get(usuario=request.user)
        # revisa si ya marco como favorito a esa imagen
        fue_eliminado = False
        registro_existe = Ifavoritas.objects.filter(
            imagen=imagen, perfil=perfil_usuario).exists()
        if registro_existe:
            registro_favorito = Ifavoritas.objects.get(imagen=imagen,
                                                       perfil=perfil_usuario)
            fue_eliminado = registro_favorito.eliminado
            if fue_eliminado:
                # el usuario había desmarcado esa imagen como favorita
                imagen.favoritos_recibidos += 1
                registro_favorito.eliminado = False
                imagen.save()
                registro_favorito.save()
                return HttpResponse("favorito marcado")
            else:
                # significa que le esta eliminando de sus favoritos
                imagen.favoritos_recibidos -= 1
                registro_favorito.eliminado = True
                # Asegurarse de que no van a haber 2 portadas.
                registro_favorito.portada = False
                imagen.save()
                registro_favorito.save()
                return HttpResponse("favorito eliminado")
        else:
            imagen.favoritos_recibidos += 1
            registro_favorito = Ifavoritas(imagen=imagen,
                                           perfil=perfil_usuario)
            registro_favorito.save()
            imagen.save()

            #Notificaciones de imagen
            if perfil_usuario != imagen.perfil:
                # para que no le lleguen notificaciones al usuario de sus propias acciones
                notificacion_imagen_fav = Notificacion(
                    actor=perfil_usuario,
                    target=imagen.perfil,
                    objeto_id=imagen.id,
                    tipo_objeto="imagen",
                    tipo_notificacion="fav_voteup")
                notificacion_imagen_fav.save()

            if imagen.favoritos_recibidos == 100 or imagen.favoritos_recibidos == 1000:
                notificacion_imagen_num = Notificacion(target=imagen.perfil,
                                                       objeto_id=imagen.id,
                                                       tipo_objeto="imagen",
                                                       tipo_notificacion="num")
                notificacion_imagen_num.save()

        return HttpResponse("favorito marcado")
    def handle(self, *args, **options):
        import datetime
        hoy = datetime.date.today()
        manana = hoy + datetime.timedelta(days=1)
        sesiones = Sesion.objects.filter(dia__gte=hoy, dia__lte=manana)
        for ses in sesiones:
            print ses.grupo.nombre + " " + str(ses.dia) + " a las " + str(
                ses.grupo.hora_inicio)

            # comprobar que el estado sea normal o cambiado_no_permanente para notificar
            # cambiar colores de estados de sesion en la app (solo poner en texto y color de texto)
            # cambiar contraseña sin salir de la app
            # leyenda de colores en la web
            # numero de asistentes al grupo (negros+verdes) - (azules + rojos)       Asisten: X
            # contactar por whatsapp en vez de llamar en las sesiones que tenemos
            if ses.estado == "":
                pass

            if not ses.notificacion_dia_antes:
                print "se notifica para mañana"

                ses.notificacion_dia_antes = True
                ses.save()
                asunto = 'Recuerdatorio de tus sesiones'
                mensaje = str(ses.grupo.nombre
                              ) + ' ' + ses.grupo.dia_semana + ' a las ' + str(
                                  ses.grupo.hora_inicio)
                notificacion = Notificacion(usuario=ses.usuario,
                                            asunto=asunto,
                                            mensaje=mensaje)
                notificacion.save()
            elif not ses.notificacion_horas_antes:

                ahora = datetime.datetime.now()

                comparar = datetime.datetime.combine(ses.dia,
                                                     ses.grupo.hora_inicio)

                if (comparar - ahora) < datetime.timedelta(hours=2):
                    print "usuario " + ses.usuario.username
                    ses.notificacion_dia_antes = True
                    ses.save()
                    asunto = 'Recuerdatorio de tus sesiones'
                    mensaje = str(
                        ses.grupo.nombre
                    ) + ' ' + ses.grupo.dia_semana + ' a las ' + str(
                        ses.grupo.hora_inicio)
                    notificacion = Notificacion(usuario=ses.usuario,
                                                asunto=asunto,
                                                mensaje=mensaje)
                    notificacion.save()
Beispiel #15
0
def marcar_favorito(request):
    # Marca un video como favorito del usuario
    if request.is_ajax():
        print "llego ajax marcar favorito"
        video_id = request.GET.get('video_id', '')
        video = get_object_or_404(Videos, id=video_id)
        perfil_usuario = Perfiles.objects.get(usuario=request.user)
        # reveisa si ya marco como favorito ese video
        fue_eliminado = False
        registro_existe = VFavoritos.objects.filter(
            video=video, perfil=perfil_usuario).exists()
        if registro_existe:
            print "registro_existe"
            registro_favorito = VFavoritos.objects.get(
                video=video, perfil=perfil_usuario)
            fue_eliminado = registro_favorito.eliminado
            if fue_eliminado:
                print "fue_eliminado"
                video.favoritos_recibidos += 1
                registro_favorito.eliminado = False
                video.save()
                registro_favorito.save()
                return HttpResponse("favorito marcado")

            else:
                print "no fue eliminado"
                # le esta eliminando de sus favoritos
                video.favoritos_recibidos -= 1
                registro_favorito.eliminado = True
                video.save()
                registro_favorito.save()
                return HttpResponse("favorito eliminado")
        else:
            print "registro no existe"
            # Crea un nuevo registro de video favorito
            video.favoritos_recibidos += 1
            registro_favorito = VFavoritos(video=video, perfil=perfil_usuario)
            video.save()
            registro_favorito.save()

            # calcular nivel actividad y de popularidad del Tema
            popularidad_actividad_tema(video.tema, "positivo")

            #Notificaciones video
            if perfil_usuario != video.perfil:
                notificacion_video_fav = Notificacion(actor=perfil_usuario, target=video.perfil,
                                                      objeto_id=video.id, tipo_objeto="video",
                                                      tipo_notificacion="fav_voteup")
                notificacion_video_fav.save()

            # Notificación por num de favoritos
            if video.favoritos_recibidos == 100 or video.favoritos_recibidos == 1000:
                notificacion_video_num = Notificacion(target=video.perfil,
                                                      objeto_id=video.id, tipo_objeto="video",
                                                      tipo_notificacion="num")
                notificacion_video_num.save()

        return HttpResponse("nuevo favorito marcado")
    else:
        raise Http404
Beispiel #16
0
def marcar_favorito(request):
    if request.is_ajax():
        imagen_id = request.GET.get('imagen_id', '')
        imagen = get_object_or_404(Imagen, pk=imagen_id)
        perfil_usuario = Perfiles.objects.get(usuario=request.user)
        # revisa si ya marco como favorito a esa imagen
        fue_eliminado = False
        registro_existe = Ifavoritas.objects.filter(
            imagen=imagen, perfil=perfil_usuario).exists()
        if registro_existe:
            registro_favorito = Ifavoritas.objects.get(
                imagen=imagen, perfil=perfil_usuario)
            fue_eliminado = registro_favorito.eliminado
            if fue_eliminado:
                # el usuario había desmarcado esa imagen como favorita
                imagen.favoritos_recibidos += 1
                registro_favorito.eliminado = False
                imagen.save()
                registro_favorito.save()
                return HttpResponse("favorito marcado")
            else:
                # significa que le esta eliminando de sus favoritos
                imagen.favoritos_recibidos -= 1
                registro_favorito.eliminado = True
                # Asegurarse de que no van a haber 2 portadas.
                registro_favorito.portada = False
                imagen.save()
                registro_favorito.save()
                return HttpResponse("favorito eliminado")
        else:
            imagen.favoritos_recibidos += 1
            registro_favorito = Ifavoritas(
                imagen=imagen, perfil=perfil_usuario)
            registro_favorito.save()
            imagen.save()

        #Notificaciones de imagen
            if perfil_usuario != imagen.perfil:
                # para que no le lleguen notificaciones al usuario de sus propias acciones
                notificacion_imagen_fav = Notificacion(actor=perfil_usuario, target=imagen.perfil,
                                                       objeto_id=imagen.id, tipo_objeto="imagen",
                                                       tipo_notificacion="fav_voteup")
                notificacion_imagen_fav.save()

            if imagen.favoritos_recibidos == 100 or imagen.favoritos_recibidos == 1000:
                notificacion_imagen_num = Notificacion(target=imagen.perfil,
                                                       objeto_id=imagen.id, tipo_objeto="imagen",
                                                       tipo_notificacion="num")
                notificacion_imagen_num.save()

        return HttpResponse("favorito marcado")
Beispiel #17
0
def marcar_favorito(request):
    # Marca un video como favorito del usuario
    if request.is_ajax():
        print "llego ajax marcar favorito"
        video_id = request.GET.get('video_id', '')
        video = get_object_or_404(Videos, id=video_id)
        perfil_usuario = Perfiles.objects.get(usuario=request.user)
        # reveisa si ya marco como favorito ese video
        fue_eliminado = False
        registro_existe = VFavoritos.objects.filter(
            video=video, perfil=perfil_usuario).exists()
        if registro_existe:
            print "registro_existe"
            registro_favorito = VFavoritos.objects.get(video=video,
                                                       perfil=perfil_usuario)
            fue_eliminado = registro_favorito.eliminado
            if fue_eliminado:
                print "fue_eliminado"
                video.favoritos_recibidos += 1
                registro_favorito.eliminado = False
                video.save()
                registro_favorito.save()
                return HttpResponse("favorito marcado")

            else:
                print "no fue eliminado"
                # le esta eliminando de sus favoritos
                video.favoritos_recibidos -= 1
                registro_favorito.eliminado = True
                video.save()
                registro_favorito.save()
                return HttpResponse("favorito eliminado")
        else:
            print "registro no existe"
            # Crea un nuevo registro de video favorito
            video.favoritos_recibidos += 1
            registro_favorito = VFavoritos(video=video, perfil=perfil_usuario)
            video.save()
            registro_favorito.save()

            # calcular nivel actividad y de popularidad del Tema
            popularidad_actividad_tema(video.tema, "positivo")

            #Notificaciones video
            if perfil_usuario != video.perfil:
                notificacion_video_fav = Notificacion(
                    actor=perfil_usuario,
                    target=video.perfil,
                    objeto_id=video.id,
                    tipo_objeto="video",
                    tipo_notificacion="fav_voteup")
                notificacion_video_fav.save()

            # Notificación por num de favoritos
            if video.favoritos_recibidos == 100 or video.favoritos_recibidos == 1000:
                notificacion_video_num = Notificacion(target=video.perfil,
                                                      objeto_id=video.id,
                                                      tipo_objeto="video",
                                                      tipo_notificacion="num")
                notificacion_video_num.save()

        return HttpResponse("nuevo favorito marcado")
    else:
        raise Http404
Beispiel #18
0
def vote_up_ajax(request):
    # Maneja con ajax el voto positivo de un usuario sobre un post.
    if request.is_ajax():
        post_id = request.GET.get('post_id', '')
        # encuentra el Post object, el Perfil del votante y del votado.
        # revisa si ya voto el usuario en ese post. Boolean, variable "ya_voto".
        post_votado = get_object_or_404(Posts, id=post_id)
        autor_post = post_votado.creador
        usuario_votado = Perfiles.objects.get(usuario=autor_post.usuario)
        usuario_votante = Perfiles.objects.get(usuario=request.user)

        if usuario_votado == usuario_votante and post_votado.es_respuesta is True:
            return HttpResponse('no puedes votar tus propios post')
        else:
            ya_voto = Votos.objects.filter(post_votado=post_votado,
                                          usuario_votante=usuario_votante).exists()

            # calcular nivel actividad y de popularidad del Tema
            tema = post_votado.tema
            popularidad_actividad_tema(tema, "positivo")

            if ya_voto:
                # si ya voto, obtiene el objecto Voto.
                voto_actual = Votos.objects.get(post_votado=post_votado,
                                                usuario_votante=usuario_votante)

                if voto_actual.tipo == -1:
                    # si el voto actual es negativo cambia el voto a positivo
                    voto_actual.tipo = 1
                    voto_actual.save()
                    # resta 1 a los negativos y suma 1 a los positivos del objeto Post
                    # el objeto Post lleva cuenta aparte para simplificar
                    # querys
                    post_votado.votos_negativos -= 1
                    post_votado.votos_positivos += 1
                    post_votado.save()

                    # suma 2 a la cantidad de votos positivos que ha recibido el usuario.
                    usuario_votado.votos_recibidos += 2  # uno por borrar el negativo, otro por el positivo.
                    usuario_votado.save()

                elif voto_actual.tipo == 0:
                    voto_actual.tipo = 1
                    post_votado.votos_positivos += 1
                    if usuario_votado == usuario_votante:
                        pass
                    else:
                        usuario_votado.votos_recibidos += 1
                        usuario_votado.save()
                    voto_actual.save()
                    post_votado.save()

            else:
                # Si no existe un voto del usuario en ese post
                # crea un voto Positivo de ese usario en ese post.
                voto = Votos(usuario_votado=usuario_votado,
                             usuario_votante=usuario_votante,
                             post_votado=post_votado, tema=post_votado.tema, tipo=1)
                # 1 positivo. -1 negativo
                voto.save()

                # suma 1 a los votos_positivos del objeto post
                post_votado.votos_positivos += 1
                post_votado.save()

                # suma 1 a los votos recibidos del usuario_votado.
                if usuario_votado == usuario_votante:
                    pass
                else:
                    usuario_votado.votos_recibidos += 1
                    usuario_votado.save()

                # Notificacion post numero de votos altos
                if post_votado.votos_total == 100 or post_votado.votos_total == 1000:
                    notificacion_num = Notificacion(target=usuario_votado, objeto_id=post_votado.id,
                                                    tipo_objeto="post", tipo_notificacion="num")
                    notificacion_num.save()

                # Notificacion voteup
                if usuario_votante != usuario_votado:
                    notificacion_voteup = Notificacion(actor=usuario_votante, target=usuario_votado,
                                                       objeto_id=post_votado.id, tipo_objeto="post",
                                                       tipo_notificacion="fav_voteup")
                    notificacion_voteup.save()

            return HttpResponse('vote-up ajax procesado')
    else:
        return HttpResponse('error_no_ajax')
Beispiel #19
0
    def form_valid(self, form):
        estado_solicitud = form.save(commit=False)
        if self.estado == '4':
            tipo_permiso = self.object.tipo_permiso
            
            if TurnoUsuario.objects.filter(usuario=self.user).exists():
                turno = get_object_or_404(TurnoUsuario, usuario=self.user)
                horario = HorarioUsuario.objects.filter(turno_usuario=turno)
                horario = horario.get(dia_semana=self.inicio)

                dia_inicio = horario.dia_semana
                if tipo_permiso < 2:
                    # Ausencia o permiso administrativo
                    fin_permiso = dia_inicio + timedelta(days=self.dias)
                    i = 0
                    dia = 0
                    while i in range((fin_permiso - dia_inicio).days):
                        dia_ciclo = dia_inicio + timedelta(days=dia)
                        permiso_dia_ciclo = HorarioUsuario.objects.filter(turno_usuario=turno)
                        permiso_dia_ciclo = permiso_dia_ciclo.get(dia_semana=dia_ciclo)
                        if permiso_dia_ciclo.hora_inicio:
                            permiso_dia_ciclo.trabajado = tipo_permiso
                            permiso_dia_ciclo.save()
                            i += 1
                        
                        dia += 1
                elif tipo_permiso == 2:
                    # Vacaciones:
                    pass
                elif tipo_permiso == 3:
                    # Licencia
                    fin_permiso = dia_inicio + timedelta(days=self.dias)
                    for i in range((fin_permiso - dia_inicio).days):
                        dia_ciclo = dia_inicio + timedelta(days=i)
                        permiso_dia_ciclo = HorarioUsuario.objects.filter(turno_usuario=turno)
                        permiso_dia_ciclo = permiso_dia_ciclo.get(dia_semana=dia_ciclo)
                        permiso_dia_ciclo.trabajado = tipo_permiso
                        permiso_dia_ciclo.save()
                else:
                    permiso_dia = HorarioUsuario.objects.filter(turno_usuario=turno)
                    permiso_dia = permiso_dia.get(dia_semana=dia_inicio)
                    permiso_dia.trabajado = tipo_permiso
                    permiso_dia.save()
                

            noti = Notificacion(
                    asunto = "Permiso aprobado",
                    descripcion = self.object.titulo,
                    usuario = self.object.usuario,
                    prioridad = 3
                    )
            noti.save()
        elif self.estado == '3':
            noti = Notificacion(
                    asunto = "Permiso rechazado",
                    descripcion = self.object.titulo,
                    usuario = self.object.usuario,
                    prioridad = 3
                    )
            noti.save()
        estado_solicitud.save()
        return redirect(self.success_url)