AIdeaText commited on
Commit
2538c23
·
verified ·
1 Parent(s): 97bc8ca

Update modules/database/morphosyntax_iterative_mongo_db.py

Browse files
modules/database/morphosyntax_iterative_mongo_db.py CHANGED
@@ -59,4 +59,90 @@ def store_student_morphosyntax_iteration(username, base_id, original_text, itera
59
 
60
  except Exception as e:
61
  logger.error(f"Error almacenando iteración: {str(e)}")
62
- return None
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
59
 
60
  except Exception as e:
61
  logger.error(f"Error almacenando iteración: {str(e)}")
62
+ return None
63
+
64
+ def get_student_morphosyntax_analysis(username, limit=10):
65
+ """
66
+ Obtiene los análisis base y sus iteraciones
67
+ Returns: Lista de análisis con sus iteraciones
68
+ """
69
+ try:
70
+ # Obtener análisis base
71
+ base_collection = get_collection(BASE_COLLECTION)
72
+ base_query = {
73
+ "username": username,
74
+ "analysis_type": "morphosyntax_base"
75
+ }
76
+ base_analyses = list(base_collection.find(base_query).sort("timestamp", -1).limit(limit))
77
+
78
+ # Para cada análisis base, obtener sus iteraciones
79
+ iteration_collection = get_collection(ITERATION_COLLECTION)
80
+ for analysis in base_analyses:
81
+ base_id = analysis['_id']
82
+ iterations = list(iteration_collection.find({"base_id": base_id}).sort("timestamp", -1))
83
+ analysis['iterations'] = iterations
84
+
85
+ return base_analyses
86
+
87
+ except Exception as e:
88
+ logger.error(f"Error obteniendo análisis: {str(e)}")
89
+ return []
90
+
91
+ def update_student_morphosyntax_analysis(analysis_id, is_base, update_data):
92
+ """
93
+ Actualiza un análisis base o iteración
94
+ """
95
+ try:
96
+ collection_name = BASE_COLLECTION if is_base else ITERATION_COLLECTION
97
+ collection = get_collection(collection_name)
98
+
99
+ query = {"_id": analysis_id}
100
+ update = {"$set": update_data}
101
+
102
+ result = update_document(collection_name, query, update)
103
+ return result
104
+
105
+ except Exception as e:
106
+ logger.error(f"Error actualizando análisis: {str(e)}")
107
+ return False
108
+
109
+ def delete_student_morphosyntax_analysis(analysis_id, is_base):
110
+ """
111
+ Elimina un análisis base o iteración
112
+ Si es base, también elimina todas sus iteraciones
113
+ """
114
+ try:
115
+ if is_base:
116
+ # Primero eliminar todas las iteraciones
117
+ iteration_collection = get_collection(ITERATION_COLLECTION)
118
+ iteration_collection.delete_many({"base_id": analysis_id})
119
+
120
+ # Luego eliminar el análisis base
121
+ collection = get_collection(BASE_COLLECTION)
122
+ else:
123
+ collection = get_collection(ITERATION_COLLECTION)
124
+
125
+ query = {"_id": analysis_id}
126
+ result = delete_document(collection.name, query)
127
+ return result
128
+
129
+ except Exception as e:
130
+ logger.error(f"Error eliminando análisis: {str(e)}")
131
+ return False
132
+
133
+ def get_student_morphosyntax_data(username):
134
+ """
135
+ Obtiene todos los datos de análisis morfosintáctico de un estudiante
136
+ Returns: Diccionario con todos los análisis y sus iteraciones
137
+ """
138
+ try:
139
+ analyses = get_student_morphosyntax_analysis(username, limit=None)
140
+ return {
141
+ 'entries': analyses,
142
+ 'total_analyses': len(analyses),
143
+ 'has_iterations': any(a.get('has_iterations', False) for a in analyses)
144
+ }
145
+
146
+ except Exception as e:
147
+ logger.error(f"Error obteniendo datos del estudiante: {str(e)}")
148
+ return {'entries': [], 'total_analyses': 0, 'has_iterations': False}