Added Edit Feature

This commit is contained in:
2026-02-13 03:11:30 +03:30
parent f2fe2843b2
commit 10e9477be4
5 changed files with 101 additions and 6 deletions

View File

@@ -1,4 +1,4 @@
Dockerfile
docker-compose.yml
venv/
__pycache__
__pycache__/

2
.gitignore vendored Normal file
View File

@@ -0,0 +1,2 @@
venv/
__pycache__/

View File

@@ -6,8 +6,8 @@ services:
- ./data/users:/app/users
- ./data/users_courses:/app/users_courses
ports:
- 1600:1600
- 127.0.0.1:1600:1600
mem_limit: 128M
networks:
default:
name: unit-selector

25
main.py
View File

@@ -153,3 +153,28 @@ def delete_course(course_id):
save_user_courses(session['username'], updated_courses)
return redirect(url_for('index'))
@app.route('/edit/<course_id>', methods=['GET', 'POST'])
def edit_course(course_id):
if 'user_id' not in session:
return redirect(url_for('login'))
courses = get_user_courses(session['username'])
course = next((c for c in courses if c['id'] == course_id), None)
if not course:
flash('درس مورد نظر یافت نشد', 'error')
return redirect(url_for('index'))
if request.method == 'POST':
course['name'] = request.form.get('name')
course['code'] = request.form.get('code')
course['group'] = request.form.get('group')
course['day'] = request.form.get('day')
course['prof'] = request.form.get('prof')
course['priority'] = request.form.get('priority')
save_user_courses(session['username'], courses)
flash('درس با موفقیت ویرایش شد', 'success')
return redirect(url_for('index'))
return render_template_string(TEMPLATE, page='edit_course', course=course, username=session['username'])

View File

@@ -435,6 +435,69 @@ footer a:hover { text-decoration: underline; }
</div>
</div>
{% elif page == 'edit_course' %}
<!-- EDIT COURSE PAGE -->
<div class="user-bar">
<span>کاربر: <span class="username">{{ username }}</span></span>
<a href="{{ url_for('logout') }}" class="btn-logout"><i class="fa-solid fa-sign-out-alt"></i> خروج</a>
</div>
<div class="container">
{% with messages = get_flashed_messages(with_categories=true) %}
{% if messages %}
{% for category, message in messages %}
<div class="alert alert-{{ category }}">{{ message }}</div>
{% endfor %}
{% endif %}
{% endwith %}
<div class="card-form">
<h3>ویرایش درس</h3>
<form action="{{ url_for('edit_course', course_id=course.id) }}" method="POST">
<div class="form-grid">
<div>
<label>نام درس</label>
<input type="text" name="name" value="{{ course.name }}" required>
</div>
<div>
<label>اولویت درس</label>
<select name="priority">
<option value="high" {% if course.priority == 'high' %}selected{% endif %}>حیاتی</option>
<option value="normal" {% if course.priority == 'normal' %}selected{% endif %}>عادی</option>
<option value="low" {% if course.priority == 'low' %}selected{% endif %}>ذخیره</option>
</select>
</div>
</div>
<div class="form-grid">
<div>
<label>کد درس</label>
<input type="text" name="code" value="{{ course.code }}" style="direction:ltr;text-align:left" required>
</div>
<div>
<label>کد ارائه</label>
<input type="text" name="group" value="{{ course.group }}" style="direction:ltr;text-align:left" required>
</div>
</div>
<div class="form-grid">
<div>
<label>نام استاد</label>
<input type="text" name="prof" value="{{ course.prof }}">
</div>
<div>
<label>روز و ساعت</label>
<input type="text" name="day" value="{{ course.day }}">
</div>
</div>
<div style="display:flex;gap:1rem;margin-top:1.5rem;">
<button type="submit" class="btn-submit" style="flex:1;">ذخیره تغییرات</button>
<a href="{{ url_for('index') }}" class="btn-submit" style="flex:1;text-align:center;text-decoration:none;background:var(--text-muted);">انصراف</a>
</div>
</form>
</div>
</div>
{% else %}
<!-- MAIN APP PAGE -->
<div class="user-bar">
@@ -501,9 +564,14 @@ footer a:hover { text-decoration: underline; }
<div class="course-card priority-{{ course.priority }}">
<div class="card-header">
<span class="course-name">{{ course.name }}</span>
<a href="{{ url_for('delete_course', course_id=course.id) }}" class="btn-delete" onclick="return confirm('آیا مطمئن هستید؟');">
<i class="fa-solid fa-trash"></i> حذف
</a>
<div style="display:flex;gap:0.5rem;">
<a href="{{ url_for('edit_course', course_id=course.id) }}" class="btn-delete" style="color: var(--primary);">
<i class="fa-solid fa-pen"></i> ویرایش
</a>
<a href="{{ url_for('delete_course', course_id=course.id) }}" class="btn-delete" onclick="return confirm('آیا مطمئن هستید؟');">
<i class="fa-solid fa-trash"></i> حذف
</a>
</div>
</div>
<div class="data-grid">