main
p412319.zxc 2 years ago
parent 767e0d57f7
commit a28669d7a3

@ -66,6 +66,7 @@ TEMPLATES = [
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
'builtins': ['django.templatetags.static']
},
},
]

@ -15,6 +15,7 @@ class ScoreUpdateView(UpdateView):
self.object = self.get_object()
title = "给分"
if request.GET.get("update"):
title = "修改成绩"
@ -28,7 +29,7 @@ class ScoreUpdateView(UpdateView):
"kind": "teacher",
}
return_url = reverse("view_detail", kwargs={"course_id": self.object.course_id})
return_url = reverse("view_detail", kwargs={"course_id": self.object.course.id})
return self.render_to_response(self.get_context_data(
info=info,
@ -65,20 +66,18 @@ class RateUpdateView(UpdateView):
def get_success_url(self):
return reverse("view_course", kwargs={"view_kind": "is_end"})
class StudentCourseDetailView(DetailView):
model=StudentCourse
template_name= "course/student/course.html"
def get(self,requset,*args,**kwargs):
self.object=self.get_object()
context=self.get_context_data(object=self.object)
class StudentCourseDetailView(DetailView):
model = StudentCourse
template_name = "course/student/course.html"
def get(self, request, *args, **kwargs):
self.object = self.get_object()
context = self.get_context_data(object=self.object)
if self.object:
context["info"]={
"name":self.object.student.name,
"kind":"student"
context["info"] = {
"name": self.object.student.name,
"kind": "student"
}
return self.render_to_response(context)

@ -1,20 +1,20 @@
from django.urls import path
from course import views,cbvs
from course.views import *
from course.cbvs import ScoreUpdateView,RateUpdateView,StudentCourseDetailView
urlpatterns = [
path('<slug:kind>/', views.home, name="course"),
path('teacher/create_course',views.create_course,name="create_course"),
path('teacher/view_detail/<int:course_id>', views.view_detail, name="view_detail"),
path('teacher/create_schedule/<int:course_id>', views.create_schedule, name="create_schedule"),
path('teacher/delete_schedule/<int:schedule_id>', views.delete_schedule, name="delete_schedule"),
path('teacher/score/<int:pk>', cbvs.ScoreUpdateView.as_view(), name="score"),
path('teacher/handle_course/<int:course_id>/<int:handle_kind>',
views.handle_course, name="handle_course"),
path('<slug:kind>/', home, name="course"),
path('teacher/create_course',create_course,name="create_course"),
path('teacher/view_detail/<int:course_id>', view_detail, name="view_detail"),
path('teacher/create_schedule/<int:course_id>', create_schedule, name="create_schedule"),
path('teacher/delete_schedule/<int:schedule_id>', delete_schedule, name="delete_schedule"),
path('teacher/score/<int:pk>', ScoreUpdateView.as_view(), name="score"),
path('teacher/handle_course/<int:course_id>/<int:handle_kind>',handle_course, name="handle_course"),
path('student/view/<slug:view_kind>', views.view_course, name="view_course"),
path("student/operate/<int:course_id>/<slug:operate_kind>",views.operate_course,name="operate_course"),
path('student/view/<slug:view_kind>', view_course, name="view_course"),
path("student/operate/<int:course_id>/<slug:operate_kind>",operate_course,name="operate_course"),
path("student/evaluate/<int:pk>",cbvs.RateUpdateView.as_view(),name="evaluate"),
path("student/view_detail/<int:pk>",cbvs.StudentCourseDetailView.as_view(),name="view_detail")
path("student/evaluate/<int:pk>",RateUpdateView.as_view(),name="evaluate"),
path("student/view_detail/<int:pk>",StudentCourseDetailView.as_view(),name="sview_detail")
]

@ -1,5 +1,5 @@
from django.http import HttpResponse
from django.shortcuts import redirect, render
from django.shortcuts import redirect, render,reverse
from django.db.models import Q
from django.utils import timezone
@ -62,7 +62,6 @@ def teacher_home(request):
context = {
"info": info
}
q = Q(teacher=user)
@ -147,6 +146,7 @@ def delete_schedule(request, schedule_id):
return redirect("login", kind=kind)
schedule = Schedule.objects.get(pk=schedule_id)
course_id = request.GET.get("course_id") or schedule.course_id
schedule.delete()
@ -162,13 +162,13 @@ def handle_course(request, course_id, handle_kind):
info = {
"name": user.name,
"kind": kind
"kind": kind,
}
course = Course.objects.get(pk=course_id)
if course.status == handle_kind and course.status < 5:
if course.status == 4:
scs = StudentCourse.objects.filter(Q(course=course)&Q(with_draw=False))
scs = StudentCourse.objects.filter(course=course)
all_given = True
res = ""
for sc in scs:
@ -179,7 +179,7 @@ def handle_course(request, course_id, handle_kind):
if all_given:
course.status += 1
course.save()
return redirect("view.detail", course_id=course_id)
return redirect("view_detail", course_id=course_id)
else:
return HttpResponse(res)
@ -187,13 +187,9 @@ def handle_course(request, course_id, handle_kind):
course.status += 1
course.save()
# course_list = Course.objects.filter(teacher=user)
#
# context = {"info": info,
# "course_list": course_list,
# "course_id": course_id}
# print("Context:", context)
return redirect("course", kind="teacher")
course_list = Course.objects.filter(teacher=user)
# return render(request, 'course/teacher/home.html', {'info': info, 'course_list': course_list})
return redirect("course",kind=kind)
def view_detail(request, course_id):
@ -208,17 +204,17 @@ def view_detail(request, course_id):
}
course = Course.objects.get(pk=course_id)
c_stu_list = StudentCourse.objects.filter(Q(course=course)&Q(with_draw=False))
c_stu_list = StudentCourse.objects.filter(Q(course=course) & Q(with_draw=False))
sche_list = Schedule.objects.filter(course=course)
context = {
"info": info,
"course": course,
"course_student": c_stu_list,
"course_students": c_stu_list,
"schedules": sche_list
}
if course.status == 5:
sorted_cs_list = sorted(c_stu_list, key=lambda cs: cs.score)
sorted_cs_list = sorted(c_stu_list, key=lambda cs: cs.scores)
context["sorted_course_student"] = sorted_cs_list
return render(request, "course/teacher/course.html", context)
@ -302,6 +298,5 @@ def operate_course(request, operate_kind, course_id):
course.with_draw = True
course.with_draw_time = timezone.now()
course.save()
print("Course ID:", course_id)
print("Operation Kind:", operate_kind)
return redirect("view_course", view_kind=operate_kind)

Binary file not shown.

@ -14,9 +14,13 @@ body {
.nav {
background: #4a2c98;
position: fixed;
width: 100%;
color: #ccc;
z-index: 1;
}
.nav a {
color: #ccc;
text-decoration: unset;

@ -1,6 +1,7 @@
<!DOCTYPE html>
<html lang="en">
{% load static %}
<link href="{% static 'css/main.css' %}" rel="stylesheet">
<head>
<meta charset="UTF-8">
<link href="{% static 'css/nav.css' %}" rel="stylesheet">

@ -1,65 +1,47 @@
{% extends "course/nav.html" %}
{% load static %}
{% block title %}课程详情{% endblock %}
<link href="{% static 'css/details.css' %}" rel="stylesheet">
{% block content %}
<h3>课程详情</h3>
<ul class="course-details">
<li class="course-detail">
<span class="detail-name">课程编号</span>
{{ object.course.id }}
</li>
<li class="course-detail">
<span class="detail-name">课程名</span>
{{ object.course.name }}
</li>
<li class="course-detail">
<span class="detail-name">学分</span>
{{ object.course.credit }}
</li>
<li class="course-detail">
<span class="detail-name">课程人数/最大人数</span>
{{ object.course.get_current_count }}/{{ object.course.max_number }}
</li>
<li class="course-detail">
<span class="detail-name">年份</span>
{{ object.course.year }}
</li>
<li class="course-detail">
<span class="detail-name">学期</span>
{{ object.course.get_semester_display }}
</li>
<li class="course-detail">
<span class="detail-name">教师</span>
{{ object.course.teacher.name }}
</li>
<li class="course-detail">
<span class="detail-name">上课时间</span>
<span class="course-schedules">
{% for schedule in object.course.get_schedules %}
<div class="course-schedule">{{ schedule }}</div>
{% endfor %}
</span>
</li>
<li class="course-detail">
<span class="detail-name">得分</span>
{% if object.scores != None %}{{ object.scores }}
{% else %} - {% endif %}
</li>
<li class="course-detail">
<span class="detail-name">评语</span>
{% if object.comments != None %}{{ object.comments }}
{% else %} - {% endif %}
</li>
<li class="course-detail">
<span class="detail-name">学生评分</span>
{% if object.rating != None %}{{ object.rating }}
{% else %} - {% endif %}
</li>
<li class="course-detail">
<span class="detail-name">学生评价</span>
{% if object.assessment != None %}{{ object.assessment }}
{% else %} - {% endif %}
</li>
</ul>
<input type="button" value="返回"
onclick="location.href='{% url "view_course" "is_end" %}'">
<h3>课程详情</h3>
<ul class="course-details">
<li class="course-detail"><span class="detail-name">课程编号</span>{{ object.course.id }}</li>
<li class="course-detail"><span class="detail-name">课程名</span>{{ object.course.name }}</li>
<li class="course-detail"><span class="detail-name">学分</span>{{ object.course.credit }}</li>
<li class="course-detail"><span class="detail-name">课程人数/最大人数</span>
{{ object.course.get_current_count }}/{{ object.course.max_number }}</li>
<li class="course-detail"><span class="detail-name">年份</span>{{ object.course.year }}</li>
<li class="course-detail"><span class="detail-name">学期</span>{{ object.course.get_semester_display }}</li>
<li class="course-detail"><span class="detail-name">教师</span>{{ object.course.teacher.name }}</li>
<li class="course-detail"><span class="detail-name">上课时间</span>
<span class="course-schedules">
{% for schedule in object.course.get_schedules %}
<div class="course-schedule">{{ schedule }}</div>
{% endfor %}
</span>
</li>
<li class="course-detail">
<span class="detail-name">得分</span>
{% if object.scores != None %}{{ object.scores }}
{% else %} - {% endif %}
</li>
<li class="course-detail">
<span class="detail-name">评语</span>
{% if object.comments != None %}{{ object.comments }}
{% else %} - {% endif %}
</li>
<li class="course-detail">
<span class="detail-name">学生评分</span>
{% if object.rating != None %}{{ object.rating }}
{% else %} - {% endif %}
</li>
<li class="course-detail">
<span class="detail-name">学生评价</span>
{% if object.assessment != None %}{{ object.assessment }}
{% else %} - {% endif %}
</li>
</ul>
<input type="button" value="返回"
onclick="location.href='{% url "view_course" "is_end" %}'">
{% endblock %}

@ -1,5 +1,7 @@
{% extends "course/nav.html" %}
{% load static %}
{% block title %}主页{% endblock %}
<link href="{% static 'css/list.css' %}" rel="stylesheet">
{% block content %}
<div class="main-container">
<div class="main-bar">
@ -67,8 +69,13 @@
<td class="course-credit">{{ sc.course.credit }}</td>
<td class="course-year-semester">{{ sc.course.year }}{{ sc.get_semester_display }}</td>
<td class="course-teacher">{{ sc.course.teacher.name }}</td>
<td class="course-scores">{{ sc.scores }}</td>
<td class="course-comments">{{ sc.comments }}</td>
{% if sc.scores == None %}
<td class="course-scores">-</td>
<td class="course-comments">-</td>
{% else %}
<td class="course-scores">{{ sc.scores }}</td>
<td class="course-comments">{{ sc.comments }}</td>
{% endif %}
{% if sc.rating == None %}
<td class="course-rating">-</td>
<td class="course-assessment">-</td>
@ -76,7 +83,7 @@
<input class="button" type="button" value="查看详情"
onclick="location.href='{% url 'sview_detail' sc.id %}'"/>
<input class="button" type="button" value="评教"
onclick="window.open='{% url 'evaluate' sc.id %}'"/>
onclick='window.open("{% url 'evaluate' sc.id %}")' />
</td>
{% else %}
<td class="course-rating">{{ sc.rating }}</td>
@ -107,11 +114,11 @@
<td class="course-operation student-course">
{% if view_kind == "select" %}
<input class="button" type="button" value="选课"
onclick="window.open('{% url 'operate_course' course.id 'select' %}')">
onclick="location.href='{% url 'operate_course' course.id 'select' %}'">
{% endif %}
{% if view_kind == "withdraw" %}
<input class="button" type="button" value="取消选课"
onclick="window.open('{% url 'operate_course' course.id 'withdraw' %}')">
onclick="location.href='{% url 'operate_course' course.id 'withdraw' %}'">
{% endif %}
{% if view_kind == "current" %}-{% endif %}
</td>

@ -1,5 +1,7 @@
{% extends "course/nav.html" %}
{% load static %}
{% block title %}评教{% endblock %}
<link href="{% static 'css/form.css' %}" rel="stylesheet">
{% block content %}
<h3>评教</h3>
<div class="form create-update-form">

@ -1,7 +1,7 @@
{% extends "course/nav.html" %}
{% block title %}
课程详情
{% endblock %}
{% load static %}
{% block title %}课程详情{% endblock %}
<link href="{% static 'css/list.css' %}" rel="stylesheet">
{% block content %}
<h3>课程详情<input class="button right-button" type="button" value="返回主页"
onclick="window.open('{% url 'course' 'teacher' %}')"></h3>
@ -27,8 +27,9 @@
</tr>
</tbody>
</table>
<h3>上课时间<input class="button right-button" type="button" value="添加时刻表"
onclick="window.open('{% url 'create_schedule' course.id %}')"></h3>
<h3>上课时间<input class="button right-button" type="button" value="添加时刻表"
onclick="window.open('{% url 'create_schedule' course.id %}')"></h3>
<table class="item-list schedule-list">
<thead>
<tr>
@ -38,73 +39,75 @@
</tr>
</thead>
<tbody>
{% for schedule in schedules %}
<tr>
<td>{{ schedule.id }}</td>
<td>{{ schedule }}</td>
<td>
<input class="button" type="button" value="删除"
onclick="window.open('{% url 'delete_schedule' schedule.id %}? course_id={{ course.id }}')">
</td>
</tr>
{% endfor %}
{% for schedule in schedules %}
<tr>
<td>{{ schedule.id }}</td>
<td>{{ schedule }}</td>
<td>
<input class="button" type="button" value="删除"
onclick="window.open('{% url 'delete_schedule' schedule.id %}?course_id={{ course.id }}')">
</td>
</tr>
{% endfor %}
</tbody>
</table>
<h3>学生列表
{% if course.status == 4 %}
<input class="button right-button" type="button" value="确定给分完成"
onclick="window.open('{% url 'handle_course' course.id 4 %}')">
<input class="button right-button" type="button" value="给分完成"
onclick="location.href='{% url 'handle_course' course.id course.status %}'">
{{ course.status }}
{% endif %}
</h3>
<table class="item-list student-list">
<thead>
<tr>
<th class="student-no">学生学号</th>
<th class="student-name">学生姓名</th>
<th class="student-email">学生邮箱</th>
<th class="student-score">得分</th>
<th class="student-comments">评语</th>
<th class="operation">操作</th>
</tr>
<tr>
<th class="student-no">学生学号</th>
<th class="student-name">学生姓名</th>
<th class="student-email">学生邮箱</th>
<th class="student-score">得分</th>
<th class="student-comments">评语</th>
<th class="operation">操作</th>
</tr>
</thead>
<tbody>
{% for cs in course_students %}
<tr>
<td>{{ cs.student.get_id }}</td>
<td>{{ cs.student.name }}</td>
<td>{{ cs.student.email }}</td>
<td>{% if cs.scores == None %} - {% else %} {{ cs.scores }} {% endif %} </td>
<td>{% if cs.scores == None %} - {% else %} {{ cs.comments }} {% endif %} </td>
<td class="operation">
{% if course.status == 4 %}
{% if sc.scores == None %}
<input class="button right-button" type="button" value="给分"
onclick="location.href='{% url 'score' cs.id %}'"/>
{% for cs in course_students %}
<tr>
<td>{{ cs.student.get_id }}</td>
<td>{{ cs.student.name }}</td>
<td>{{ cs.student.email }}</td>
<td>{% if cs.scores == None %} - {% else %} {{ cs.scores }} {% endif %} </td>
<td>{% if cs.scores == None %} - {% else %} {{ cs.comments }} {% endif %} </td>
<td class="operation">
{% if course.status == 4 %}
{% if sc.scores == None %}
<input class="button right-button" type="button" value="给分"
onclick="location.href='{% url 'score' cs.id %}'"/>
{% else %}
<input class="button right-button" type="button" value="给分"
onclick="location.href='{% url 'score' cs.id %}?update=1'"/>
{% endif %}
{% else %}
<input class="button right-button" type="button" value="给分"
onclick="location.href='{% url 'score' cs.id %}?update=1'"/>
-
{% endif %}
{% else %}
{% endif %}
</td>
</tr>
{% endfor %}
</td>
</tr>
{% endfor %}
</tbody>
</table>
</table>
{% if course.status == 5 %}
<h3>学生评价</h3>
<table class="item-list student-list">
<thead>
<tr>
<th class="student-score">学生评分</th>
<th class="student-comments">学生评价</th>
</tr>
<tr>
<th class="student-score">学生评分</th>
<th class="student-comments">学生评价ss</th>
</tr>
</thead>
<tbody>
{% for cs in sorted_course_students %}
{% for cs in sorted_course_student %}
{% if cs.rating != None %}
<tr>
<td>{{ cs.rating }}</td>

@ -1,5 +1,7 @@
{% extends "course/nav.html" %}
{% load static %}
{% block title %}创建课程{% endblock %}
<link href="{% static 'css/form.css' %}" rel="stylesheet">
{% block content %}
<h3>创建课程</h3>
<div class="form create-update-form">

@ -1,5 +1,7 @@
{% extends "course/nav.html" %}
{% load static %}
{% block title %}创建时刻表{% endblock %}
<link href="{% static 'css/form.css' %}" rel="stylesheet">
{% block content %}
<h3>创建时刻表:&nbsp;&nbsp;&nbsp;&nbsp;[{{ course.id }}]{{ course.name }}</h3>
<div class="form create-update-form">

@ -1,7 +1,7 @@
{% extends "course/nav.html" %}
{% block title %}
主页
{% endblock %}
{% load static %}
{% block title %}主页{% endblock %}
<link href="{% static 'css/list.css' %}" rel="stylesheet">
{% block content %}
<div class="main-container">
<div class="main-bar">
@ -43,11 +43,15 @@
<input class="button right-button" type="button"
value="{{ course.get_op_text }}"
onclick="location.href='{% url "handle_course" course.id course.status %}'"/>
{% endif %}
{% if course.status == 4 %}
<input class="button right-button" type="button" value="{{ course.get_op_text }}"
onclick='location.href="{% url 'view_detail' course.id %}"' />
{% else %}
<input class="button right-button" type="button" value="查看详情"
onclick='location.href="{% url 'view_detail' course.id %}"' />
{% endif %}
<input class="button right-button" type="button"
value="{% if course.status == 4 %}{{ course.get_op_text }}
{% else %}查看详情{% endif %}"
onclick="location.href='{% url "view_detail" course.id %}'"/>
</td>
</tr>
{% endfor %}

@ -1,7 +1,9 @@
{% extends "course/nav.html" %}
{% load static %}
{% block title %}
{{ title }}
{% endblock %}
<link href="{% static 'css/form.css' %}" rel="stylesheet">
{% block content %}
<h3>{{ title }}</h3>
<div class="form create-update-from">

Loading…
Cancel
Save