@@ -186,6 +186,55 @@ class Meta:
186186 ]
187187
188188
189+ class DocumentReport (models .Model ):
190+ class ProblemType (models .TextChoices ):
191+ WRONG_MODULE = "wrong_module" , "Ce document est dans le mauvais cours"
192+ WRONG_TITLE = "wrong_title" , "Le titre ou la description est erroné"
193+ LOW_QUALITY = "low_quality" , "Contenu de mauvaise qualité ou inutile"
194+ READABILITY = "readability" , "Problème de lisibilité"
195+ OUTDATED = "outdated" , "Document obsolète"
196+ OTHER = "other" , "Autre raison"
197+
198+ @classmethod
199+ def get_description (cls , value : str ) -> str :
200+ """Get the detailed description for a problem type."""
201+ descriptions = {
202+ cls .WRONG_MODULE .value : "Ce document appartient à un autre cours" ,
203+ cls .WRONG_TITLE .value : "Le contenu du document n'est pas correctement décrit" ,
204+ cls .LOW_QUALITY .value : "Le contenu peut être non pertinent, contenir uniquement le plan du cours, avoir de nombreuses fautes ou être (presque) vide" ,
205+ cls .READABILITY .value : "Le document est difficile à lire en raison d'une mauvaise écriture ou d'une photo de mauvaise qualité" ,
206+ cls .OUTDATED .value : "Le document est dépassé ou ne correspond plus au contenu actuel du cours" ,
207+ cls .OTHER .value : "Une autre raison non listée ci-dessus" ,
208+ }
209+ return descriptions .get (value , "" )
210+
211+ user = models .ForeignKey (
212+ settings .AUTH_USER_MODEL ,
213+ on_delete = models .CASCADE ,
214+ verbose_name = "Utilisateur" ,
215+ )
216+ document = models .ForeignKey (
217+ Document ,
218+ on_delete = models .CASCADE ,
219+ related_name = "reports" ,
220+ verbose_name = "Document" ,
221+ )
222+ problem_type = models .CharField (
223+ max_length = 20 ,
224+ choices = ProblemType .choices ,
225+ verbose_name = "Type de problème" ,
226+ )
227+ description = models .TextField (
228+ blank = True ,
229+ default = "" ,
230+ verbose_name = "Description" ,
231+ )
232+ created = models .DateTimeField (auto_now_add = True )
233+
234+ def __str__ (self ) -> str :
235+ return f"Report on { self .document .name } by { self .user } "
236+
237+
189238class DocumentError (models .Model ):
190239 document = models .ForeignKey (Document , on_delete = models .CASCADE )
191240 task_id = models .CharField (max_length = 255 )
0 commit comments