async def listado_notificaciones_admin( admin: Administrador = Depends(get_current_admin), ): listado = await db.motor.find(NotificacionAdmin, NotificacionAdmin.responsable == admin.id) # listado = list(map(lambda x: NotificacionAdminRet(**x.dict()),listado)) res = sorted(listado, key=lambda x: x.fecha) res = list(reversed(res)) ids = {ObjectId(g.gerente) for g in res} gecoll = db.motor.get_collection(Gerente) docs = await gecoll.find({"_id": {"$in": list(ids)}}).to_list(length=None) gerentes = {} for g in docs: gerentes[str(g["_id"])] = ResGerenteBM(id=str(g["_id"]), **g) res = [ NotificacionAdminRet( gerente=gerentes.get(b.gerente), tipo=b.tipo, contenido=b.contenido, fecha=b.fecha, ) for b in res ] return res
async def get(self, id: str, engine: Optional[AIOEngine] = None) -> Optional[Model]: query = self.model.id == ObjectId(id) return await (engine.find_one(self.model, query) if engine is not None else self.engine.find_one(self.model, query))
def get(): return {"id": ObjectId(id_get_str)}
async def desasigna_dispositivo(dispositivo_id: ObjectId, gerente: Gerente = Depends(get_current_gerente)): disp = await db.motor.find_one(DispositivoDB, DispositivoDB.id == dispositivo_id) if disp is None: raise HTTPException( status_code=status.HTTP_404_NOT_FOUND, detail="Dispositivo no existe") if disp is None or disp.establecimiento is None: return BasicReturn(done=False) establecimiento = await db.motor.find_one(EstablecimientoDB, EstablecimientoDB.id == ObjectId(disp.establecimiento)) valida(establecimiento, gerente_id=gerente.id) disp.establecimiento = None await db.motor.save(disp) return BasicReturn()
async def connect_dispositivo(dispositivo_id: str, _=Depends(get_current_gerente)): disp = await db.motor.find_one(DispositivoDB, DispositivoDB.id == ObjectId(dispositivo_id)) disp.conectado = not disp.conectado await db.motor.save(disp) return disp
async def activate_dispositivo(dispositivo_id: str, activado: bool, _=Depends(get_current_gerente)): disp = await db.motor.find_one(DispositivoDB, DispositivoDB.id == ObjectId(dispositivo_id)) disp.activado = activado await db.motor.save(disp) return disp
async def retrieve_dispositivo(dispositivo_id: str, _=Depends(get_current_gerente)): disp = await db.motor.find_one(DispositivoDB, DispositivoDB.id == ObjectId(dispositivo_id)) return disp
async def add_dispositivo(dispositivo: DispositivoCreate): disp = DispositivoDB(id = ObjectId(),**dispositivo.dict()) await db.motor.save(disp) return {"id":str(disp.id)}