Create database/models.py
Browse files- database/models.py +102 -0
database/models.py
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
from datetime import datetime
|
| 2 |
+
import json
|
| 3 |
+
|
| 4 |
+
class User:
|
| 5 |
+
def __init__(self, user_data):
|
| 6 |
+
self.user_id = user_data.get('user_id')
|
| 7 |
+
self.username = user_data.get('username')
|
| 8 |
+
self.email = user_data.get('email')
|
| 9 |
+
self.password = user_data.get('password')
|
| 10 |
+
self.role = user_data.get('role', 'student')
|
| 11 |
+
self.created_at = user_data.get('created_at', datetime.now().isoformat())
|
| 12 |
+
self.last_login = user_data.get('last_login')
|
| 13 |
+
self.profile = user_data.get('profile', {})
|
| 14 |
+
self.progress = user_data.get('progress', {})
|
| 15 |
+
self.is_active = user_data.get('is_active', True)
|
| 16 |
+
|
| 17 |
+
def to_dict(self):
|
| 18 |
+
"""تبدیل به دیکشنری"""
|
| 19 |
+
return {
|
| 20 |
+
'user_id': self.user_id,
|
| 21 |
+
'username': self.username,
|
| 22 |
+
'email': self.email,
|
| 23 |
+
'role': self.role,
|
| 24 |
+
'created_at': self.created_at,
|
| 25 |
+
'last_login': self.last_login,
|
| 26 |
+
'profile': self.profile,
|
| 27 |
+
'progress': self.progress,
|
| 28 |
+
'is_active': self.is_active
|
| 29 |
+
}
|
| 30 |
+
|
| 31 |
+
def update_progress(self, score=0, completed_lesson=None, current_lesson=None):
|
| 32 |
+
"""بهروزرسانی پیشرفت کاربر"""
|
| 33 |
+
if score > 0:
|
| 34 |
+
self.progress['total_score'] = self.progress.get('total_score', 0) + score
|
| 35 |
+
|
| 36 |
+
if completed_lesson and completed_lesson not in self.progress.get('completed_lessons', []):
|
| 37 |
+
if 'completed_lessons' not in self.progress:
|
| 38 |
+
self.progress['completed_lessons'] = []
|
| 39 |
+
self.progress['completed_lessons'].append(completed_lesson)
|
| 40 |
+
|
| 41 |
+
if current_lesson:
|
| 42 |
+
self.progress['current_lesson'] = current_lesson
|
| 43 |
+
|
| 44 |
+
class Lesson:
|
| 45 |
+
def __init__(self, lesson_data):
|
| 46 |
+
self.lesson_id = lesson_data.get('lesson_id')
|
| 47 |
+
self.day = lesson_data.get('day')
|
| 48 |
+
self.title = lesson_data.get('title')
|
| 49 |
+
self.sections = lesson_data.get('sections', [])
|
| 50 |
+
self.is_active = lesson_data.get('is_active', True)
|
| 51 |
+
self.created_at = lesson_data.get('created_at', datetime.now().isoformat())
|
| 52 |
+
self.updated_at = lesson_data.get('updated_at', datetime.now().isoformat())
|
| 53 |
+
|
| 54 |
+
def to_dict(self):
|
| 55 |
+
"""تبدیل به دیکشنری"""
|
| 56 |
+
return {
|
| 57 |
+
'lesson_id': self.lesson_id,
|
| 58 |
+
'day': self.day,
|
| 59 |
+
'title': self.title,
|
| 60 |
+
'sections': self.sections,
|
| 61 |
+
'is_active': self.is_active,
|
| 62 |
+
'created_at': self.created_at,
|
| 63 |
+
'updated_at': self.updated_at
|
| 64 |
+
}
|
| 65 |
+
|
| 66 |
+
class Quiz:
|
| 67 |
+
def __init__(self, quiz_data):
|
| 68 |
+
self.quiz_id = quiz_data.get('quiz_id')
|
| 69 |
+
self.day = quiz_data.get('day')
|
| 70 |
+
self.questions = quiz_data.get('questions', [])
|
| 71 |
+
self.is_active = quiz_data.get('is_active', True)
|
| 72 |
+
self.created_at = quiz_data.get('created_at', datetime.now().isoformat())
|
| 73 |
+
|
| 74 |
+
def to_dict(self):
|
| 75 |
+
"""تبدیل به دیکشنری"""
|
| 76 |
+
return {
|
| 77 |
+
'quiz_id': self.quiz_id,
|
| 78 |
+
'day': self.day,
|
| 79 |
+
'questions': self.questions,
|
| 80 |
+
'is_active': self.is_active,
|
| 81 |
+
'created_at': self.created_at
|
| 82 |
+
}
|
| 83 |
+
|
| 84 |
+
class UserProgress:
|
| 85 |
+
def __init__(self, progress_data):
|
| 86 |
+
self.user_id = progress_data.get('user_id')
|
| 87 |
+
self.lesson_scores = progress_data.get('lesson_scores', {})
|
| 88 |
+
self.quiz_scores = progress_data.get('quiz_scores', {})
|
| 89 |
+
self.exercise_scores = progress_data.get('exercise_scores', {})
|
| 90 |
+
self.total_score = progress_data.get('total_score', 0)
|
| 91 |
+
self.last_activity = progress_data.get('last_activity', datetime.now().isoformat())
|
| 92 |
+
|
| 93 |
+
def to_dict(self):
|
| 94 |
+
"""تبدیل به دیکشنری"""
|
| 95 |
+
return {
|
| 96 |
+
'user_id': self.user_id,
|
| 97 |
+
'lesson_scores': self.lesson_scores,
|
| 98 |
+
'quiz_scores': self.quiz_scores,
|
| 99 |
+
'exercise_scores': self.exercise_scores,
|
| 100 |
+
'total_score': self.total_score,
|
| 101 |
+
'last_activity': self.last_activity
|
| 102 |
+
}
|