init
This commit is contained in:
55
templates/schedule/lesson_confirm_delete.html
Normal file
55
templates/schedule/lesson_confirm_delete.html
Normal file
@ -0,0 +1,55 @@
|
||||
{% extends 'base.html' %}
|
||||
{% load static %}
|
||||
|
||||
{% block title %}Удаление занятия | Автошкола{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container">
|
||||
<div class="row mb-4">
|
||||
<div class="col">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item"><a href="{% url 'schedule:list' %}">Расписание</a></li>
|
||||
<li class="breadcrumb-item"><a href="{% url 'schedule:detail' lesson.pk %}">{{ lesson.course.title }}</a></li>
|
||||
<li class="breadcrumb-item active">Удаление</li>
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-6 mx-auto">
|
||||
<div class="card shadow">
|
||||
<div class="card-header bg-danger text-white">
|
||||
<h4 class="mb-0">
|
||||
<i class="fas fa-trash me-2"></i>Удаление занятия
|
||||
</h4>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p class="card-text">
|
||||
Вы уверены, что хотите удалить занятие "{{ lesson.course.title }}"?
|
||||
</p>
|
||||
<p class="card-text text-muted">
|
||||
<small>
|
||||
<i class="fas fa-calendar me-2"></i>{{ lesson.date|date:"d.m.Y" }}<br>
|
||||
<i class="fas fa-clock me-2"></i>{{ lesson.start_time|time:"H:i" }} - {{ lesson.end_time|time:"H:i" }}<br>
|
||||
<i class="fas fa-users me-2"></i>Записанных студентов: {{ lesson.enrolled_students.count }}
|
||||
</small>
|
||||
</p>
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
<div class="d-grid gap-2">
|
||||
<button type="submit" class="btn btn-danger">
|
||||
<i class="fas fa-trash me-2"></i>Удалить
|
||||
</button>
|
||||
<a href="{% url 'schedule:detail' lesson.pk %}" class="btn btn-secondary">
|
||||
<i class="fas fa-times me-2"></i>Отмена
|
||||
</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
102
templates/schedule/lesson_detail.html
Normal file
102
templates/schedule/lesson_detail.html
Normal file
@ -0,0 +1,102 @@
|
||||
{% extends 'base.html' %}
|
||||
{% load static %}
|
||||
|
||||
{% block title %}{{ lesson.course.title }} | Автошкола{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container">
|
||||
<div class="row mb-4">
|
||||
<div class="col">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item"><a href="{% url 'schedule:list' %}">Расписание</a></li>
|
||||
<li class="breadcrumb-item active">{{ lesson.course.title }}</li>
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8">
|
||||
<div class="card shadow mb-4">
|
||||
<div class="card-header bg-primary text-white">
|
||||
<h4 class="mb-0">Информация о занятии</h4>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<h5 class="card-title">{{ lesson.course.title }}</h5>
|
||||
<p class="card-text">
|
||||
<i class="fas fa-calendar me-2"></i>Дата: {{ lesson.date|date:"d.m.Y" }}<br>
|
||||
<i class="fas fa-clock me-2"></i>Время: {{ lesson.start_time|time:"H:i" }} - {{ lesson.end_time|time:"H:i" }}<br>
|
||||
<i class="fas fa-user me-2"></i>Инструктор: {{ lesson.instructor.user.get_full_name }}<br>
|
||||
<i class="fas fa-map-marker-alt me-2"></i>Место: {{ lesson.location }}<br>
|
||||
<i class="fas fa-users me-2"></i>Количество мест: {{ lesson.enrolled_students.count }}/{{ lesson.max_students }}
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="card shadow">
|
||||
<div class="card-header bg-success text-white">
|
||||
<h4 class="mb-0">Записанные студенты</h4>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
{% if lesson.enrolled_students.all %}
|
||||
<div class="list-group">
|
||||
{% for student in lesson.enrolled_students.all %}
|
||||
<div class="list-group-item">
|
||||
<h6 class="mb-1">{{ student.user.get_full_name }}</h6>
|
||||
<small class="text-muted">
|
||||
<i class="fas fa-envelope me-2"></i>{{ student.user.email }}<br>
|
||||
<i class="fas fa-phone me-2"></i>{{ student.phone_number }}
|
||||
</small>
|
||||
</div>
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="alert alert-info">
|
||||
<i class="fas fa-info-circle me-2"></i>На это занятие пока никто не записался.
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="col-md-4">
|
||||
<div class="card shadow">
|
||||
<div class="card-body">
|
||||
{% if user.is_authenticated %}
|
||||
{% if user.instructor == lesson.instructor %}
|
||||
<a href="{% url 'schedule:update' lesson.pk %}" class="btn btn-warning w-100 mb-2">
|
||||
<i class="fas fa-edit me-2"></i>Редактировать
|
||||
</a>
|
||||
<a href="{% url 'schedule:delete' lesson.pk %}" class="btn btn-danger w-100">
|
||||
<i class="fas fa-trash me-2"></i>Удалить
|
||||
</a>
|
||||
{% elif user.student %}
|
||||
{% if user.student in lesson.enrolled_students.all %}
|
||||
<div class="alert alert-success">
|
||||
<i class="fas fa-check-circle me-2"></i>Вы записаны на это занятие
|
||||
</div>
|
||||
{% elif lesson.enrolled_students.count >= lesson.max_students %}
|
||||
<div class="alert alert-warning">
|
||||
<i class="fas fa-exclamation-circle me-2"></i>К сожалению, все места заняты
|
||||
</div>
|
||||
{% else %}
|
||||
<form method="post" action="{% url 'schedule:enroll' lesson.pk %}">
|
||||
{% csrf_token %}
|
||||
<button type="submit" class="btn btn-success w-100">
|
||||
<i class="fas fa-plus me-2"></i>Записаться
|
||||
</button>
|
||||
</form>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<div class="alert alert-info">
|
||||
<i class="fas fa-info-circle me-2"></i>Для записи на занятие необходимо войти в систему
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
68
templates/schedule/lesson_form.html
Normal file
68
templates/schedule/lesson_form.html
Normal file
@ -0,0 +1,68 @@
|
||||
{% extends 'base.html' %}
|
||||
{% load static %}
|
||||
|
||||
{% block title %}
|
||||
{% if action == 'create' %}Создание занятия{% else %}Редактирование занятия{% endif %} | Автошкола
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container">
|
||||
<div class="row mb-4">
|
||||
<div class="col">
|
||||
<nav aria-label="breadcrumb">
|
||||
<ol class="breadcrumb">
|
||||
<li class="breadcrumb-item"><a href="{% url 'schedule:list' %}">Расписание</a></li>
|
||||
<li class="breadcrumb-item active">
|
||||
{% if action == 'create' %}Создание занятия{% else %}Редактирование занятия{% endif %}
|
||||
</li>
|
||||
</ol>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="row">
|
||||
<div class="col-md-8 mx-auto">
|
||||
<div class="card shadow">
|
||||
<div class="card-header bg-primary text-white">
|
||||
<h4 class="mb-0">
|
||||
{% if action == 'create' %}
|
||||
<i class="fas fa-plus me-2"></i>Создание занятия
|
||||
{% else %}
|
||||
<i class="fas fa-edit me-2"></i>Редактирование занятия
|
||||
{% endif %}
|
||||
</h4>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
|
||||
{% for field in form %}
|
||||
<div class="mb-3">
|
||||
<label for="{{ field.id_for_label }}" class="form-label">{{ field.label }}</label>
|
||||
{{ field.errors }}
|
||||
{{ field }}
|
||||
{% if field.help_text %}
|
||||
<div class="form-text">{{ field.help_text }}</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
<div class="d-grid gap-2">
|
||||
<button type="submit" class="btn btn-primary">
|
||||
{% if action == 'create' %}
|
||||
<i class="fas fa-plus me-2"></i>Создать
|
||||
{% else %}
|
||||
<i class="fas fa-save me-2"></i>Сохранить
|
||||
{% endif %}
|
||||
</button>
|
||||
<a href="{% url 'schedule:list' %}" class="btn btn-secondary">
|
||||
<i class="fas fa-times me-2"></i>Отмена
|
||||
</a>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
81
templates/schedule/schedule_list.html
Normal file
81
templates/schedule/schedule_list.html
Normal file
@ -0,0 +1,81 @@
|
||||
{% extends 'base.html' %}
|
||||
{% load static %}
|
||||
|
||||
{% block title %}Расписание | Автошкола{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
<div class="container">
|
||||
<div class="row mb-4">
|
||||
<div class="col">
|
||||
<h2 class="text-center mb-4">Расписание занятий</h2>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{% if user.is_authenticated and user.instructor %}
|
||||
<div class="row mb-4">
|
||||
<div class="col">
|
||||
<a href="{% url 'schedule:create' %}" class="btn btn-primary">
|
||||
<i class="fas fa-plus me-2"></i>Добавить занятие
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="row">
|
||||
<div class="col">
|
||||
<div class="card shadow">
|
||||
<div class="card-body">
|
||||
{% if lessons %}
|
||||
<div class="table-responsive">
|
||||
<table class="table table-hover">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Дата</th>
|
||||
<th>Время</th>
|
||||
<th>Курс</th>
|
||||
<th>Инструктор</th>
|
||||
<th>Место</th>
|
||||
<th>Студенты</th>
|
||||
<th>Действия</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for lesson in lessons %}
|
||||
<tr>
|
||||
<td>{{ lesson.date|date:"d.m.Y" }}</td>
|
||||
<td>{{ lesson.start_time|time:"H:i" }} - {{ lesson.end_time|time:"H:i" }}</td>
|
||||
<td>{{ lesson.course.title }}</td>
|
||||
<td>{{ lesson.instructor.user.get_full_name }}</td>
|
||||
<td>{{ lesson.location }}</td>
|
||||
<td>{{ lesson.enrolled_students.count }}/{{ lesson.max_students }}</td>
|
||||
<td>
|
||||
{% if user.is_authenticated %}
|
||||
<a href="{% url 'schedule:detail' lesson.pk %}" class="btn btn-sm btn-primary">
|
||||
<i class="fas fa-info-circle"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
{% if user.is_authenticated and user.instructor == lesson.instructor %}
|
||||
<a href="{% url 'schedule:update' lesson.pk %}" class="btn btn-sm btn-warning">
|
||||
<i class="fas fa-edit"></i>
|
||||
</a>
|
||||
<a href="{% url 'schedule:delete' lesson.pk %}" class="btn btn-sm btn-danger">
|
||||
<i class="fas fa-trash"></i>
|
||||
</a>
|
||||
{% endif %}
|
||||
</td>
|
||||
</tr>
|
||||
{% endfor %}
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
{% else %}
|
||||
<div class="alert alert-info">
|
||||
<i class="fas fa-info-circle me-2"></i>На данный момент нет запланированных занятий.
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
Reference in New Issue
Block a user