Skip to content
Extraits de code Groupes Projets
Valider 5c02872a rédigé par Brieuc Dubois's avatar Brieuc Dubois
Parcourir les fichiers

Implement #88

parent 868a92fe
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -179,6 +179,18 @@ def get_messages(db: Session, session_id: int, skip: int = 0):
)
def get_all_messages(db: Session, skip: int = 0):
return db.query(models.Message).offset(skip).all()
def get_all_metadata(db: Session, skip: int = 0):
return db.query(models.MessageMetadata).offset(skip).all()
def get_all_feedbacks(db: Session, skip: int = 0):
return db.query(models.MessageFeedback).offset(skip).all()
def create_message(
db: Session,
message: schemas.MessageCreate,
......
......@@ -543,6 +543,79 @@ def download_session(
)
@sessionsRouter.get("/download/messages")
def download_sessions_messages(
db: Session = Depends(get_db),
current_user: schemas.User = Depends(get_jwt_user),
):
if not check_user_level(current_user, models.UserType.ADMIN):
raise HTTPException(
status_code=401,
detail="You do not have permission to download messages",
)
data = crud.get_all_messages(db)
output = StringIO()
writer = csv.writer(output)
writer.writerow(models.Message.__table__.columns.keys())
for row in data:
writer.writerow(row.raw())
output.seek(0)
return StreamingResponse(
output,
media_type="text/csv",
headers={"Content-Disposition": f"attachment; filename=messages.csv"},
)
@sessionsRouter.get("/download/metadata")
def download_sessions_metadata(
db: Session = Depends(get_db),
current_user: schemas.User = Depends(get_jwt_user),
):
if not check_user_level(current_user, models.UserType.ADMIN):
raise HTTPException(
status_code=401,
detail="You do not have permission to download metadata",
)
data = crud.get_all_metadata(db)
output = StringIO()
writer = csv.writer(output)
writer.writerow(models.MessageMetadata.__table__.columns.keys())
for row in data:
writer.writerow(row.raw())
output.seek(0)
return StreamingResponse(
output,
media_type="text/csv",
headers={"Content-Disposition": f"attachment; filename=metadata.csv"},
)
@sessionsRouter.get("/download/feedbacks")
def download_sessions_feedbacks(
db: Session = Depends(get_db),
current_user: schemas.User = Depends(get_jwt_user),
):
if not check_user_level(current_user, models.UserType.ADMIN):
raise HTTPException(
status_code=401,
detail="You do not have permission to download feedbacks",
)
data = crud.get_all_feedbacks(db)
output = StringIO()
writer = csv.writer(output)
writer.writerow(models.MessageFeedback.__table__.columns.keys())
for row in data:
writer.writerow(row.raw())
output.seek(0)
return StreamingResponse(
output,
media_type="text/csv",
headers={"Content-Disposition": f"attachment; filename=feedbacks.csv"},
)
@sessionsRouter.post(
"/{session_id}/users/{user_id}", status_code=status.HTTP_201_CREATED
)
......
......@@ -151,6 +151,9 @@ class MessageMetadata(Base):
message = Column(String)
date = Column(Integer)
def raw(self):
return [self.id, self.message_id, self.message, self.date]
class MessageFeedback(Base):
__tablename__ = "message_feedbacks"
......@@ -162,6 +165,9 @@ class MessageFeedback(Base):
content = Column(String, default="")
date = Column(DateTime, default=datetime_aware)
def raw(self):
return [self.id, self.message_id, self.start, self.end, self.content, self.date]
class TestTyping(Base):
__tablename__ = "test_typing"
......
......@@ -250,7 +250,10 @@
},
"success": "Questionnaire envoyé, merci !"
}
}
},
"downloadAllMessages": "Télécharger toutes les conversations",
"downloadAllMetadata": "Télécharger toutes les métadonnées",
"downloadAllFeedbacks": "Télécharger tous les feedbacks"
},
"button": {
"create": "Créer",
......
......@@ -14,6 +14,32 @@
});
</script>
<h1 class="text-xl font-bold m-5 text-center">{$t('header.admin.sessions')}</h1>
<div class="my-4 mx-auto">
<a
class="btn btn-primary btn-sm"
title="Download"
href={`${config.API_URL}/sessions/download/messages`}
>
{$t('session.downloadAllMessages')}
</a>
<a
class="btn btn-primary btn-sm"
title="Download"
href={`${config.API_URL}/sessions/download/metadata`}
>
{$t('session.downloadAllMetadata')}
</a>
<a
class="btn btn-primary btn-sm"
title="Download"
href={`${config.API_URL}/sessions/download/feedbacks`}
>
{$t('session.downloadAllFeedbacks')}
</a>
</div>
<table class="table">
<thead>
<tr>
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter