Mhdeusi commited on
Commit
2a84d05
·
verified ·
1 Parent(s): 0fc9aa4

Create database/models.py

Browse files
Files changed (1) hide show
  1. 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
+ }