-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathadd_classes_direct.py
170 lines (157 loc) · 10.7 KB
/
add_classes_direct.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
import os
import sys
import django
from pathlib import Path
from datetime import datetime, timedelta
import random
# تنظیم محیط جنگو
BASE_DIR = Path(__file__).resolve().parent
sys.path.append(str(BASE_DIR))
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'config.settings')
django.setup()
# وارد کردن مدلها پس از تنظیم محیط
from classes.models import Category, Class
def create_categories():
categories = [
{"name": "برنامهنویسی", "description": "دورههای آموزش برنامهنویسی و توسعه نرمافزار"},
{"name": "هوش مصنوعی", "description": "دورههای یادگیری ماشین و هوش مصنوعی"},
{"name": "طراحی وب", "description": "آموزش طراحی سایت و فرانتاند"},
{"name": "مهارتهای نرم", "description": "توسعه مهارتهای ارتباطی و مدیریتی"},
{"name": "تحلیل داده", "description": "دورههای آموزش تحلیل داده و علم داده"}
]
created_categories = []
for category_data in categories:
category, created = Category.objects.get_or_create(
name=category_data["name"]
)
created_categories.append(category)
status = "ایجاد شد" if created else "قبلاً وجود داشت"
print(f"دستهبندی '{category.name}': {status}")
return created_categories
def create_classes():
# اطمینان از وجود دستهبندیها
categories = create_categories()
if not categories:
print("هیچ دستهبندی یافت نشد!")
return
# نگاشت نام دستهبندی به آبجکت دستهبندی
category_map = {cat.name: cat for cat in Category.objects.all()}
# تاریخهای شروع و پایان برای وضعیتهای مختلف
today = datetime.now().date()
# دیتای کلاسها
classes_data = [
{
'title': 'دوره پیشرفته هوش مصنوعی',
'category': category_map.get('هوش مصنوعی'),
'description': 'این دوره پیشرفته به بررسی عمیق تکنیکهای یادگیری عمیق و کاربردهای عملی آن در صنعت میپردازد. دانشجویان با الگوریتمهای پیشرفته شبکههای عصبی، پردازش زبان طبیعی و بینایی ماشین آشنا میشوند.',
'instructor': 'دکتر فاطمه حسینی',
'instructor_bio': 'دکتر حسینی فارغالتحصیل دانشگاه شریف و دارای تجربه ۱۰ ساله در حوزه هوش مصنوعی و یادگیری ماشین است. ایشان سابقه همکاری با شرکتهای بزرگ فناوری را در کارنامه دارند.',
'schedule': 'دوشنبهها و چهارشنبهها، ساعت ۱۴ تا ۱۶',
'location': 'دانشکده مهندسی کامپیوتر، کلاس ۳۰۱',
'capacity': 25,
'price': 1800000,
'status': 'upcoming',
'prerequisites': 'آشنایی با پایتون و مفاهیم پایه یادگیری ماشین',
'start_date': today + timedelta(days=15),
'end_date': today + timedelta(days=75)
},
{
'title': 'طراحی وب با React و Tailwind',
'category': category_map.get('طراحی وب'),
'description': 'در این دوره با استفاده از کتابخانه React و فریمورک Tailwind CSS، طراحی رابطهای کاربری مدرن و واکنشگرا را میآموزید. از پایه تا پیشرفته با مفاهیم کامپوننتمحور در توسعه فرانتاند آشنا میشوید.',
'instructor': 'مهندس علی احمدی',
'instructor_bio': 'مهندس احمدی برنامهنویس ارشد فرانتاند و دارای بیش از ۸ سال تجربه در توسعه وب است. ایشان مدرس چندین دوره آنلاین و حضوری در زمینه تکنولوژیهای جاوااسکریپت بودهاند.',
'schedule': 'شنبهها و دوشنبهها، ساعت ۱۶ تا ۱۸',
'location': 'دانشکده فنی و مهندسی، کلاس کارگاه کامپیوتر',
'capacity': 30,
'price': 1500000,
'status': 'ongoing',
'prerequisites': 'آشنایی با HTML، CSS و JavaScript',
'start_date': today - timedelta(days=10),
'end_date': today + timedelta(days=35)
},
{
'title': 'تحلیل داده مقدماتی',
'category': category_map.get('تحلیل داده'),
'description': 'این دوره مقدماتی به آموزش ابزارهای پایتون برای تحلیل داده شامل pandas، numpy و matplotlib میپردازد. دانشجویان در پایان دوره، توانایی پاکسازی داده، تحلیل توصیفی و ترسیم نمودارهای پایه را کسب میکنند.',
'instructor': 'دکتر امیر مجیدی',
'instructor_bio': 'دکتر مجیدی متخصص علم داده و استاد دانشگاه با بیش از ۵ سال سابقه تدریس در حوزه تحلیل داده است. ایشان مولف چندین مقاله علمی در زمینه کاربرد یادگیری ماشین در تحلیل دادههای بزرگ هستند.',
'schedule': 'یکشنبهها و سهشنبهها، ساعت ۱۰ تا ۱۲',
'location': 'دانشکده علوم پایه، آزمایشگاه کامپیوتر',
'capacity': 35,
'price': 1200000,
'status': 'completed',
'prerequisites': 'آشنایی با مفاهیم پایه برنامهنویسی',
'start_date': today - timedelta(days=90),
'end_date': today - timedelta(days=30)
},
{
'title': 'برنامهنویسی پایتون از صفر',
'category': category_map.get('برنامهنویسی'),
'description': 'دوره جامع آموزش پایتون برای افرادی که هیچ پیشزمینهای در برنامهنویسی ندارند. از مفاهیم پایه متغیرها و حلقهها تا توابع و کلاسها در این دوره پوشش داده میشود. پروژههای عملی متعددی در طول دوره انجام خواهید داد.',
'instructor': 'مهندس محمد رضایی',
'instructor_bio': 'مهندس رضایی توسعهدهنده نرمافزار با تخصص در پایتون و مدرس با سابقه آموزش به بیش از ۵۰۰ دانشجو در سطوح مبتدی تا پیشرفته. ایشان تالیف چندین کتاب آموزشی در زمینه برنامهنویسی را نیز در کارنامه دارند.',
'schedule': 'پنجشنبهها و جمعهها، ساعت ۹ تا ۱۳',
'location': 'مرکز آموزشهای آزاد، سالن کنفرانس',
'capacity': 40,
'price': 2000000,
'status': 'canceled',
'prerequisites': 'نیاز به پیشنیاز خاصی ندارد',
'start_date': today - timedelta(days=5),
'end_date': today + timedelta(days=40)
},
{
'title': 'کارگاه مهارتهای ارائه موثر',
'category': category_map.get('مهارتهای نرم'),
'description': 'این کارگاه عملی به آموزش تکنیکهای ارائه و سخنرانی موثر میپردازد. فنون بیان، زبان بدن، طراحی اسلاید و مدیریت زمان از جمله مباحث مطرح شده در این دوره هستند. هر شرکتکننده فرصت تمرین عملی خواهد داشت.',
'instructor': 'دکتر نگار کریمی',
'instructor_bio': 'دکتر کریمی متخصص ارتباطات و سخنران حرفهای با بیش از ۱۲ سال تجربه در آموزش مهارتهای ارائه و سخنرانی است. ایشان مشاور ارتباطات چندین شرکت و سازمان برجسته نیز هستند.',
'schedule': 'پنجشنبهها، ساعت ۱۴ تا ۱۸',
'location': 'دانشکده علوم انسانی، سالن همایش',
'capacity': 20,
'price': 900000,
'status': 'upcoming',
'prerequisites': 'نیاز به پیشنیاز خاصی ندارد',
'start_date': today + timedelta(days=7),
'end_date': today + timedelta(days=28)
}
]
# ایجاد کلاسها
for class_data in classes_data:
# تولید اسلاگ
title = class_data['title']
from django.utils.text import slugify
slug = slugify(title, allow_unicode=True)
# بررسی وجود کلاس
try:
existing_class = Class.objects.filter(slug=slug).first()
if existing_class:
print(f"کلاس '{title}' قبلاً ایجاد شده است.")
continue
# ایجاد کلاس جدید
new_class = Class.objects.create(
title=title,
slug=slug,
category=class_data['category'],
description=class_data['description'],
instructor=class_data['instructor'],
instructor_bio=class_data['instructor_bio'],
start_date=class_data['start_date'],
end_date=class_data['end_date'],
schedule=class_data['schedule'],
location=class_data['location'],
capacity=class_data['capacity'],
price=class_data['price'],
status=class_data['status'],
prerequisites=class_data['prerequisites']
)
print(f"کلاس '{title}' با موفقیت ایجاد شد.")
except Exception as e:
print(f"خطا در ایجاد کلاس '{title}': {e}")
if __name__ == "__main__":
try:
print("ایجاد دستهبندیها و کلاسها...")
create_classes()
print("عملیات با موفقیت انجام شد.")
except Exception as e:
print(f"خطا در اجرای اسکریپت: {e}")