示例#1
0
 def post(self, id, accion):
     n = NotificacionTemplateModel.find_by_id(id)
     if not n:
         return {"message": "No se encontro la notificación"}, 404
     response_envio = NotificacionTemplateModel.send_to_participantes(n)
     if response_envio["status"] == 404:
         return {"message": "No se pudo crear o enviar la notificacion."}, 404
     if accion == 'ninguna':
             return {"message": "Notificacion reenviada con éxito.",
                 "Número de destinatarios:": response_envio["total"]}
     elif accion == 'premio':
         p = PremioModel.find_by_id(n.link)
         if not p:
             return {"message": "No se encontro el premio"}, 404
         response_envio = PremioModel.send_to_participantes(n)
         if response_envio["status"] == 404:
             return {"message": "No se pudo crear o enviar la notificacion."}, 404
         return {"message": "Notificacion reenviada con éxito.",
             "Número de destinatarios:": response_envio["total"]}
     elif accion == 'encuesta':
         n = NotificacionTemplateModel.find_by_id(id)
         pprint(n)
         if not n:
             return {"message": "No se encontro la notificacion"}, 404
         en = EncuestaModel.find_by_id(n.link)
         if not en:
             return {"message": "No se encontro la encuesta"}, 404
         response_envio = EncuestaModel.send_to_participantes(n)
         if response_envio["status"] == 404:
             return {"message": "No se pudo crear o enviar la notificacion."}, 404
         return {"message": "Notificacion reenviada con éxito.",
             "Número de destinatarios:": response_envio["total"]}
示例#2
0
 def patch(self, id):
     p = PremioModel.find_by_id(id)
     if not p:
         return {"message": "No se encontro el premio"}, 404
     p_req = request.get_json()
     premio = premio_schema.load(p_req["premio"])
     try:
         if "nombre" in premio:
             p.nombre = premio["nombre"]
         if "puntos" in premio:
             p.puntos = premio["puntos"]
         if "codigo_barras" in premio:
             p.codigo_barras = premio["codigo_barras"]
         if "codigo_qr" in premio:
             p.codigo_qr = premio["codigo_qr"]
         if "imagen_icon" in premio:
             p.imagen_icon = premio["imagen_icon"]
         if "imagen_display" in premio:
             p.imagen_display = premio["imagen_display"]
         if "fecha_creacion" in premio:
             p.fecha_creacion = premio["fecha_creacion"]
         if "fecha_vencimiento" in premio:
             p.fecha_vencimiento = premio["fecha_vencimiento"]
         if "vidas" in premio:
             p.vidas = premio["vidas"]
         # if "fechas_redencion" in premio:
         #     p.fecha_redencion = premio["fecha_redencion"]
         p.save()
     except ValidationError as exc:
         print(exc.message)
         return {"message": "No se pudo actualizar el premio."}, 400
     return {p}, 200
示例#3
0
 def patch(self, id):
     p = PremioParticipanteModel.find_by_id(id)
     if not p:
         return {"message": "No se encontro el premio_participante"}, 404
     p_req = request.get_json()
     try:
         # Checar si puede quemar el premio el participante
         ptemplate = PremioModel.find_by_id(p.id_premio)
         if ptemplate and ptemplate.vidas:
             # Es vigente el premio ?
             if ptemplate.fecha_vigencia:
                 if dt.datetime.now() > ptemplate.fecha_vigencia:
                     return {
                         "message":
                         "No se pudo quemar el premio, este premio ya no esta vigente, fecha_vigencia: {}"
                         .format(ptemplate.fecha_vigencia)
                     }, 400
             # Tiene se puede canjear?, es decir tiene vidas?
             if len(p.fechas_redencion) > ptemplate.vidas:
                 return {
                     "message":
                     "No se pudo quemar el premio, el participante ha quemado este premio el número máximo de veces disponibles"
                 }, 400
         else:
             return {"No se encontró las vidas en el template del premio"
                     }, 404
         vidas_restantes = ptemplate.vidas - len(p.fechas_redencion)
         # Quemar premios
         # ojo con Request_body: fecha_redencion y Model: fechaS_rendencion
         if not "fecha_redencion" in p_req:
             p.fechas_redencion.append(dt.datetime.now())
             # p.vidas -= 1
             p.save()
             return {
                 "message":
                 "Quemado automático: Campo fecha_redencion faltante, por lo que se utizará la fecha y hora del servidor cuando se realizó esta transacción",
                 "vidas_restantes": vidas_restantes
             }, 202
         date = dateutil.parser.parse(p_req["fecha_redencion"])
         p.fechas_redencion.append(date)
         # p.vidas -= 1
         p.save()
     except ValidationError as exc:
         print(exc.message)
         return {
             "message": "No se pudo actualizar el premio_participante."
         }, 400
     return {
         "message":
         "fecha_redencion:{} registrada".format(p_req["fecha_redencion"]),
         "vidas_restantes":
         vidas_restantes
     }, 200
示例#4
0
 def delete(self, id, accion):
     if accion == 'ninguna':
         n = NotificacionTemplateModel.find_by_id(id)
         if not n:
             return {"message": "No se encontro la notificación"}, 404
         try:
             for p in NotificacionModel.objects.raw({"id_notificacion": n._id}):
                 p.delete()
             n.delete()
         except:
             return {"message": "No se pudo efectuar esta operación"},404 
         return {"message": "Notificacion eliminada"}, 200
     elif accion == 'premio':
         n = NotificacionTemplateModel.find_by_id(id)
         pprint(n)
         if not n:
             return {"message": "No se encontro la notificacion"}, 404
         if n.link != "null" and n.link:
             p = PremioModel.find_by_id(n.link)
             if not p:
                 return {"message": "No se encontro el premio"}, 404
         else: 
             p = None
         try:
             for np in NotificacionModel.objects.raw({"id_notificacion": n._id}):
                 np.delete()
             if n.link != "null" and n.link:
                 for pp in PremioParticipanteModel.objects.raw({"id_premio": p._id}):
                     pp.delete()
                 p.delete()
             n.delete()
         except:
             return {"message": "No se pudo efectuar esta operación"},404 
         return {"message": "Notificación y premio eliminados"}, 200               
     elif accion == 'encuesta':
         n = NotificacionTemplateModel.find_by_id(id)
         pprint(n)
         if not n:
             return {"message": "No se encontro la notificacion"}, 404
         en = EncuestaModel.find_by_id(n.link)
         if not en:
             return {"message": "No se encontro la encuesta"}, 404
         try:
             for np in NotificacionModel.objects.raw({"id_notificacion": n._id}):
                 np.delete()
             for ep in ParticipantesEncuestaModel.objects.raw({"id_encuesta": en._id}):
                 ep.delete()
             n.delete()
             en.delete()
         except:
             return {"message": "No se pudo efectuar esta operación"},404 
         return {"message": "Notificación y encuesta eliminados"}, 200   
示例#5
0
 def get(self, id):
     p = PremioModel.find_by_id(id)
     if not p:
         return {"message": "No se encontro el premio"}, 404
     return PremioSchema(only=(
         "_id",
         "nombre",
         "puntos",
         "codigo_barras",
         "codigo_qr",
         "imagen_icon",
         "imagen_display",
         "fecha_creacion",
         "fecha_vigencia",
         "vidas",
         # "fechas_redencion",
         # "id_producto",
         # "id_participante"
     )).dump(p)
示例#6
0
 def post(self, id, accion):
     if accion == 'ninguna':
         n = NotificacionTemplateModel.find_by_id(id)
         if not n:
             return {"message": "No se encontro la notificación"}, 404
         try:
             filtersObids=[]
             if not "filtros" in n:
                 return {"message": "Error: Sin destinatarios, debe haber al menos un participante a quien enviarle esta acción"}
             for fil in n["filtros"]:
                 filtersObids.append(ObjectId(fil))
             # Enviar a todos los participantes
             for p in ParticipanteModel.objects.raw({"_id": { "$in": filtersObids}}):
                 # part_id = ObjectId(id)
                 notif = NotificacionModel(
                 id_participante=p._id,
                 id_notificacion=n._id,
                 estado=0,
                 # Estado puede servir para actualizar tambien OJO! ahora esta fijo, pero podrías ser variable
                 ).save()            
                 # PYMODM no tiene soporte transaccional, en un futuro migrar a PYMONGO, que sí tiene soporte
         # return {"message": "Notificacion guardada con éxito."}
         except ValidationError as exc:
             print(exc.message)
             return {"message": "No se pudo crear o enviar la notificacion."}, 404
         return {"message": "Notificacion reenviada con éxito.",
                 "Número de destinatarios:": len(filtersObids)}
     elif accion == 'premio':
         n = NotificacionTemplateModel.find_by_id(id)
         pprint(n)
         if not n:
             return {"message": "No se encontro el premio"}, 404
         p = PremioModel.find_by_id(n.link)
         if not p:
             return {"message": "No se encontro el premio"}, 404
         try:
             filtersObids=[]
             if not "filtros" in n:
                 return {"message": "Error: Sin destinatarios, debe haber al menos un participante a quien enviarle esta acción"}
             for fil in n["filtros"]:
                 filtersObids.append(ObjectId(fil))
             # Enviar a todos los participantes
             for par in ParticipanteModel.objects.raw({"_id": { "$in": filtersObids}}):
                 # part_id = ObjectId(id)
                 notif = PremioParticipanteModel(
                 id_participante=par._id,
                 # id_notificacion=n._id,
                 fecha_creacion=dt.datetime.now(),
                 estado=0,
                 # Estado puede servir para actualizar tambien OJO! ahora esta fijo, pero podrías ser variable
                 ).save()        
             filtersObids=[]
             if not "filtros" in n:
                 return {"message": "Error: Sin destinatarios, debe haber al menos un participante a quien enviarle esta acción"}
             for fil in n["filtros"]:
                 filtersObids.append(ObjectId(fil))
             # Enviar a todos los participantes
             for p in ParticipanteModel.objects.raw({"_id": { "$in": filtersObids}}):
                 # part_id = ObjectId(id)
                 notif = NotificacionModel(
                 id_participante=p._id,
                 id_notificacion=n._id,
                 estado=0,
                 # Estado puede servir para actualizar tambien OJO! ahora esta fijo, pero podrías ser variable
             ).save()            
             # PYMODM no tiene soporte transaccional, en un futuro migrar a PYMONGO, que sí tiene soporte
     # return {"message": "Notificacion guardada con éxito."}
         except ValidationError as exc:
             print(exc.message)
             return {"message": "No se pudo crear o enviar la notificacion."}, 404
         return {"message": "Notificacion reenviada con éxito.",
                 "Número de destinatarios:": len(filtersObids)}               
     elif accion == 'encuesta':
         n = NotificacionTemplateModel.find_by_id(id)
         pprint(n)
         if not n:
             return {"message": "No se encontro la notificacion"}, 404
         en = EncuestaModel.find_by_id(n.link)
         if not en:
             return {"message": "No se encontro la encuesta"}, 404
         try:
              filtersObids=[]
             if not "filtros" in n:
                 return {"message": "Error: Sin destinatarios, debe haber al menos un participante a quien enviarle esta acción"}
             for fil in n["filtros"]:
                 filtersObids.append(ObjectId(fil))
             # Enviar a todos los participantes
             for par in ParticipanteModel.objects.raw({"_id": { "$in": filtersObids}}):
                 # part_id = ObjectId(id)
                 notif = PremioParticipanteModel(
                 id_participante=par._id,
                 # id_notificacion=n._id,
                 fecha_creacion=dt.datetime.now(),
                 estado=0,
                 # Estado puede servir para actualizar tambien OJO! ahora esta fijo, pero podrías ser variable
                 ).save()        
             filtersObids=[]
             if not "filtros" in n:
                 return {"message": "Error: Sin destinatarios, debe haber al menos un participante a quien enviarle esta acción"}
             for fil in n["filtros"]:
                 filtersObids.append(ObjectId(fil))
             # Enviar a todos los participantes
             for p in ParticipanteModel.objects.raw({"_id": { "$in": filtersObids}}):
                 # part_id = ObjectId(id)
                 notif = NotificacionModel(
                 id_participante=p._id,
                 id_notificacion=n._id,
                 estado=0,
                 # Estado puede servir para actualizar tambien OJO! ahora esta fijo, pero podrías ser variable
             ).save()         
            
         except:
示例#7
0
 def put(self, id, accion):
     if accion == 'ninguna':
         n = NotificacionTemplateModel.find_by_id(id)
         if not n:
             return {"message": "No se encontro la notificación!"}, 404
         noti_json = request.get_json()
         # pprint(noti_json["notificacion"])
         noti = not_schema_template.load(noti_json["notificacion"])
         try:
             if "tipo_notificacion" in noti:
                 n.tipo_notificacion=noti["tipo_notificacion"]
             if "imagenIcon" in noti:
                 n.imagenIcon=noti["imagenIcon"]
             if "titulo" in noti:
                 n.titulo=noti["titulo"]
             if "fecha" in noti:
                 n.fecha=noti["fecha"]
             if "bar_text" in noti:
                 n.bar_text=noti["bar_text"]
             if "mensaje" in noti:
                 n.mensaje=noti["mensaje"]
             if "link" in noti:
                 n.link=noti["link"]
             n.save()
         except ValidationError as exc:
             print(exc.message)
             return {"message": "No se pudo actualizar la notificación."}, 404
         return {"notificacion": NotificacionTemplateSchema(
             only=(
             "_id",
             "titulo",
             "mensaje",
             "fecha",
             "imagenIcon",
             "bar_text",
             "tipo_notificacion",
             "link",
             )).dump(n)}, 200
         # /admin/notificaciones/<string:id> patch! ya existe!
     elif accion == 'premio':
         n = NotificacionTemplateModel.find_by_id(id)
         pprint(n)
         if not n:
             return {"message": "No se encontro la notificacion"}, 404
         noti_json = request.get_json()
         # pprint(noti_json["notificacion"])
         noti = not_schema_template.load(noti_json["notificacion"])
         # pprint(noti)
         try:
             if "tipo_notificacion" in noti:
                 n.tipo_notificacion=noti["tipo_notificacion"]
             if "imagenIcon" in noti:
                 n.imagenIcon=noti["imagenIcon"]
             if "titulo" in noti:
                 n.titulo=noti["titulo"]
             if "fecha" in noti:
                 n.fecha=noti["fecha"]
             if "bar_text" in noti:
                 n.bar_text=noti["bar_text"]
             if "mensaje" in noti:
                 n.mensaje=noti["mensaje"]
             if "link" in noti:
                 n.link=noti["link"] # link no se debe actualizar, pero bueno! jaja
             n.save()
         except ValidationError as exc:
             print(exc.message)
             return {"message": "No se pudo actualizar la notificación."}, 404
         p = PremioModel.find_by_id(n.link)
         if not p:
             return {"message": "No se encontro el premio"}, 404
         # p_req = request.get_json()
         # pprint(p_req)
         premio = premio_schema.load(noti_json["premio"])
         # pprint(p_req["premio"])
         pprint(premio)
         try:
             if "nombre" in premio:
                 p.nombre = premio["nombre"] 
             if "puntos" in premio:
                 p.puntos = premio["puntos"] 
             if "codigo_barras" in premio:
                 p.codigo_barras = premio["codigo_barras"] 
             if "codigo_qr" in premio:
                 p.codigo_barras = premio["codigo_barras"] 
             if "imagen_icon" in premio:
                 p.imagen_icon = premio["imagen_icon"] 
             if "imagen_display" in premio:
                 p.imagen_icon = premio["imagen_icon"] 
             if "fecha_creacion" in premio:
                 p.imagen_icon = premio["imagen_icon"] 
             if "fecha_vigencia" in premio:
                 p.fecha_vigencia = premio["fecha_vigencia"] 
             if "fecha_redencion" in premio:
                 p.fecha_redencion = premio["fecha_redencion"] 
             p.save()
         except ValidationError as exc:
             print(exc.message)
             return {"message": "No se pudo actualizar el premio."}, 400
         return {"notificacion": NotificacionTemplateSchema(
             only=(
             "_id",
             "titulo",
             "mensaje",
             "fecha",
             "imagenIcon",
             "bar_text",
             "tipo_notificacion",
             "link",
             )).dump(n),
          "premio":  PremioSchema(
                 only=(
                     "_id",
                     "nombre", 
                     "puntos", 
                     "codigo_barras", 
                     "codigo_qr",
                     "imagen_icon",
                     "imagen_display",
                     "fecha_creacion", 
                     "fecha_vigencia", 
                     # "fecha_redencion",
                     # "id_producto",
                     "id_participante"
                 )).dump(p)
         }, 200               
     elif accion == 'encuesta':
         n = NotificacionTemplateModel.find_by_id(id)
         if not n:
             return {"message": "No se encontro la notificación!"}, 404
         e = EncuestaModel.find_by_id(n.link)
         if not e:
             return {"message": "No se encontro la encuesta"}, 404
         noti_json = request.get_json()
         noti = not_schema_template.load(noti_json["notificacion"])
         # encuesta_json = request.get_json()
         encuesta = EncuestaSchema().load(noti_json["encuesta"])
         try:
             if "tipo_notificacion" in noti:
                 n.tipo_notificacion=noti["tipo_notificacion"]
             if "imagenIcon" in noti:
                 n.imagenIcon=noti["imagenIcon"]
             if "titulo" in noti:
                 n.titulo=noti["titulo"]
             if "fecha" in noti:
                 n.fecha=noti["fecha"]
             if "bar_text" in noti:
                 n.bar_text=noti["bar_text"]
             if "mensaje" in noti:
                 n.mensaje=noti["mensaje"]
             if "link" in noti:
                 n.link=noti["link"]
             # Encuesta
             if "titulo" in encuesta:
                 e.titulo=encuesta["titulo"]
             if "categoria" in encuesta:
                 e.categoria=encuesta["categoria"]
             e.fecha_creacion=dt.datetime.now()
             if "metrica" in encuesta:
                 e.metrica=encuesta["metrica"]
             if "puntos" in encuesta:
                 e.puntos=encuesta["puntos"]
             if "paginas" in encuesta:
                 e.paginas=encuesta["paginas"]
                 pprint(e.paginas)
                 # for pagina in e.paginas:
                 #     print(1)
             e.save()
             n.save()
         except ValidationError as exc:
             print(exc.message)
             return {"message": "No se pudo actualizar la notificación."}, 404
         return {
             "notificacion": NotificacionTemplateSchema(
                 only=(
                 "_id",
                 "titulo",
                 "mensaje",
                 "fecha",
                 "imagenIcon",
                 "bar_text",
                 "tipo_notificacion",
                 "link"
                 )).dump(n),
             "encuesta": EncuestaSchema(
                     only=(
                         "_id",
                         "titulo",
                         "categoria",
                         "fecha_creacion",
                         "fecha_respuesta",
                         "metrica",
                         "puntos",
                         "paginas",
                     )).dump(e)
         }, 200
示例#8
0
 def get(self, id, accion):
     if accion == 'ninguna':
         n = NotificacionTemplateModel.find_by_id(id)
         if not n:
             return {"message": "No se encontro la notificación"}, 404
         return {"notificacion": NotificacionTemplateSchema(
             only=(
             "_id",
             "titulo",
             "mensaje",
             "fecha",
             "imagenIcon",
             "bar_text",
             "tipo_notificacion",
             "link",
             "filtros"
             )).dump(n)}, 200
     elif accion == 'premio':
         n = NotificacionTemplateModel.find_by_id(id)
         pprint(n)
         if not n:
             return {"message": "No se encontro el premio"}, 404
         p = PremioModel.find_by_id(n.link)
         if not p:
             return {"message": "No se encontro el premio"}, 404
         return {"notificacion": NotificacionTemplateSchema(
             only=(
             "_id",
             "titulo",
             "mensaje",
             "fecha",
             "imagenIcon",
             "bar_text",
             "tipo_notificacion",
             "link",
             "filtros"
             )).dump(n),
          "premio":  PremioSchema(
                 only=(
                     "_id",
                     "nombre", 
                     "puntos", 
                     "codigo_barras", 
                     "codigo_qr",
                     "imagen_icon",
                     "imagen_display",
                     "fecha_creacion", 
                     "fecha_vigencia", 
                     # "fecha_redencion",
                     # "id_producto",
                     "id_participante"
                 )).dump(p)
         }, 200               
     elif accion == 'encuesta':
         n = NotificacionTemplateModel.find_by_id(id)
         pprint(n)
         if not n:
             return {"message": "No se encontro la notificacion"}, 404
         en = EncuestaModel.find_by_id(n.link)
         if not en:
             return {"message": "No se encontro la encuesta"}, 404
         return {
             "notificacion": NotificacionTemplateSchema(
                 only=(
                 "_id",
                 "titulo",
                 "mensaje",
                 "fecha",
                 "imagenIcon",
                 "bar_text",
                 "tipo_notificacion",
                 "link",
                 "filtros"
                 )).dump(n),
             "encuesta": EncuestaSchema(
                     only=(
                         "_id",
                         "titulo",
                         "categoria",
                         "fecha_creacion",
                         "fecha_respuesta",
                         "metrica",
                         "puntos",
                         "paginas",
                     )).dump(en)
         }, 200
示例#9
0
 def get(self, id):
     # Obtener los ids de los templates de los premios que poseé un participante
     participante_premios = PremioParticipanteModel.find_by_id_participante_vigentes(
         id)
     premios_no_quemados = []
     # INTEGRACION DE PREMIO DE NIVEL CERO(0) O NIVEL DE BIENVENIDA
     # participante = ParticipanteModel.find_by_id(id)
     # puntos = participante.saldo
     # if puntos == 0:
     #     level0 = TarjetaPuntosTemplateModel.get_level(0)
     #     if level0:
     #         # Lev is id notificacion
     #         for level_id in level0:
     #             notif0 = TarjetaPuntosTemplateModel.find_by_id(level_id)
     #             # if lev.link and lev.link != "null":
     #             notif0 = NotificacionTemplateModel.find_by_id(notif0.id_notificacion)
     #             if notif0:
     #                 premio0 = None
     #                 if notif0.tipo_notificacion == "premio":
     #                     if notif0:
     #                         notif = NotificacionModel(id_participante=id, id_notificacion=str(notif0._id), estado=0)
     #                     if notif0.link:
     #                         premio0 = PremioParticipanteModel(id_participante=id, id_premio=notif0.link, estado=0).save()
     #                 if notif0.tipo_notificacion == "encuesta":
     #                     pass
     #                 if notif0.tipo_notificacion == "ninguna":
     #                     pass
     #                 if premio0:
     #                     premios_no_quemados.append(notif0)
     # # INTEGRACION del sistema de premios: Se debe verificar si tiene premios por
     # # nivel aunque no tenga premios que no son de nivel
     # #   1. Buscar al participante
     # participante = ParticipanteModel.find_by_id(id)
     # #   2. Obtener los puntos del participante
     # puntos = participante.saldo
     # #   3. Obtener los niveles del participante
     # niveles = None
     # if puntos:
     #     niveles = TarjetaPuntosTemplateModel.get_level_vigentes(puntos)
     #     if niveles:
     #         for nivl in niveles:
     # #   4. Obtener los Notificacion -> premios de los niveles
     #             if nivl.id_notificacion:
     #                 notif = NotificacionTemplateModel.find_by_id(nivl.id_notificacion)
     #                 if notif and notif.link and notif.link != "null" and notif.tipo_notificacion == 'premio':
     #                     # 5. Obtener los premios de los niveles
     #                     premio_nivel = find_by_id(notif.link)
     #                     if premio_nivel:
     # if not participante_premios and not niveles_premios:
     if not participante_premios:
         return {
             'message':
             f"El participante con el id: { id }, no posee ningún premio"
         }, 404
     # Filtrar los premios que ya han sido quemados, es decir, agotaron sus vidas (fechas_redencion)
     for pp in participante_premios:
         # Old method: Por estado {0,1}
         # if not len(pp.fechas_redencion) > 0:
         #     premios_no_quemados.append(pp)
         #- Verificar los premios con vidas con los que dispone el participante
         ptemplate = PremioModel.find_by_id(pp.id_premio)
         if ptemplate and ptemplate.vidas:
             if not len(pp.fechas_redencion) > ptemplate.vidas:
                 premios_no_quemados.append(pp)
         #-
         # try:
         #     pp.delete()
         # except (e):
         #     print("No se pudo filtrar los premio quemados, Error: {}".format(e))
     if len(premios_no_quemados) == 0:
         return {
             'message':
             f"El participante con el id: { id }, no posee ningún premio"
         }, 404
     premios = []
     for premio in premios_no_quemados:
         # Obtener el template de cada premio
         if premio.id_premio and premio.id_premio != 'null':
             premio_template = PremioModel.find_by_id(premio.id_premio)
             if premio_template:
                 premios.append(premio_template)
                 premio_template._id = premio._id
     # # Obtener los premios del participante por el sistema de puntos Niveles
     # #   Obtener el participante
     # p = ParticipanteModel.find_by_id(id)
     # if not p:
     #     return {"message": "No se encontro el participante buscado"}, 404
     # premios_nivel = TarjetaPuntosTemplateModel.get_level(p.saldo)
     # for nivel_id in premios_nivel:
     # #   Obtener el template de cada premio
     #     nivel = TarjetaPuntosTemplateModel.find_by_id(nivel_id)
     #     if nivel:
     #         print(nivel_id)
     #         print(len(premios_nivel))
     #         notif = NotificacionTemplateModel.find_by_id(nivel.id_notificacion)
     #         if notif:
     #             if notif.link and notif.link != "null":
     #                 # print(type(notif.link))
     #                 premio_template = PremioModel.find_by_id(notif.link)
     #                 if premio_template:
     #                     premios.append(premio_template)
     return {
         "Premios":
         PremioSchema(
             only=(
                 "_id",
                 "nombre",
                 "puntos",
                 "codigo_barras",
                 "codigo_qr",
                 "imagen_icon",
                 "imagen_display",
                 "fecha_creacion",
                 # "fecha_vigencia",
                 # "id_producto",
                 "id_participante",
                 "vidas"),
             many=True).dump(premios),
     }, 200
示例#10
0
    def post(self):
        premio_json = request.get_json()
        # print(premio_json)
        premio = premio_schema.load(premio_json)
        try:
            p = PremioModel()
            if "nombre" in premio:
                p.nombre = premio["nombre"]
            if "puntos" in premio:
                p.puntos = premio["puntos"]
            if "codigo_barras" in premio:
                p.codigo_barras = premio["codigo_barras"]
            if "codigo_qr" in premio:
                p.codigo_qr = premio["codigo_qr"]
            if "imagen_icon" in premio:
                p.imagen_icon = premio["imagen_icon"]
            if "imagen_display" in premio:
                p.imagen_display = premio["imagen_display"]
            if "vidas" in premio:
                p.vidas = premio["vidas"]
            if "fecha_creacion" in premio:
                p.fecha_creacion = premio["fecha_creacion"]
            else:
                p.fecha_creacion = dt.datetime.now()
            if "fecha_vencimiento" in premio:
                p.fecha_vencimiento = premio["fecha_vencimiento"]
            # if "fecha_redencion" in premio:
            #     p.fecha_redencion=premio["fecha_redencion"]
            # if "id_participante" in premio:
            #     p.id_participante=premio["id_participante"]
            p.save()
            # Enviar a todos los participantes
            for participante in ParticipanteModel.objects.all():
                premio = PremioParticipanteModel(
                    id_premio=p._id,
                    id_participante=participante._id,
                    fecha_creacion=p.fecha_creacion,
                    # fechas_redencion = [],
                    estado=0).save()

        except ValidationError as exc:
            p.delete()
            print(exc.message)
            return {
                "message":
                "No se pudo crear el nuevo premio o enviar a los participantes solicitados."
            }
        return {
            'message': "Premio creado",
            'ObjectId': PremioSchema(only=("_id", )).dump(p)
        }, 200