diff --git a/backend/.gitignore b/backend/.gitignore index 339ae4f53f48d1fde9f93fb643e8eae9c8a30bdb..b3e8d698af727dbc7f2f1236149aadac9be9d3a2 100644 --- a/backend/.gitignore +++ b/backend/.gitignore @@ -1,2 +1,3 @@ run.sh nohup.out +restartpy.sh diff --git a/backend/db.sqlite3 b/backend/db.sqlite3 index c0d38926401bdc44b77d7cb1d376cae5539416b6..d8cc19ab85604c3252219560a2ab000837029e63 100644 Binary files a/backend/db.sqlite3 and b/backend/db.sqlite3 differ diff --git a/backend/ddl_killer/views.py b/backend/ddl_killer/views.py index 30e5c9654d41b93a775c19ab6280ada4a82c603e..49e2f5f151f6dd43bdfd151a4846c1c68d0286d4 100644 --- a/backend/ddl_killer/views.py +++ b/backend/ddl_killer/views.py @@ -322,40 +322,54 @@ def show_user_courses(request, uid): #用户查看自己所选课程 return JsonResponse(response, json_dumps_params={'ensure_ascii':False}, charset='utf_8_sig') -def admin_add_task(request, cid): #课程管理员为选择了所有课的人添加task,participant由数据表关联得到,不需前端传入 +def admin_add_task(request, uid, cid): # 课程管理员为选择了所有课的人添加task response={} data = json.loads(request.body.decode()) - usercourse = UserCourse.objects.get(user__uid=data["uid"],course__cid=cid) + usercourse = UserCourse.objects.get(user__uid=uid, course__cid=cid) + this_course = Course.objects.get(course_id=cid) if usercourse.isAdmin: - response['code'] = 200 - course_obj = Course.objects.get(cid=cid) - task_obj = Task.objects.create( - title=data["title"], - # course=course_obj, - course_name = course_obj.name, - content=data["content"], - platform = ass['platform'], - category=data["category"], - urls=data["urls"], - ddl_time=data["ddl_time"], - # notification_time=data["notification_time"], - # notification_alert=data["notification_alert"], - create_time=data["create_time"] - ) - response["msg"]="Success." - participants=UserCourse.objects.filter(course__cid=cid) - for p in participants: - user_obj=User.objects.get(uid=p.user.uid) - UserTask.objects.create(user=user_obj,task=task_obj, notification_time=data["notification_time"], notification_alert=data["notification_alert"]) - - ut=UserTask.objects.get(user__uid=data["uid"],task__tid=task_obj.tid) #发布者有修改此task的权利 - ut.isAdmin=True - ut.save() - - CourseTask.objects.create(course=course_obj,task=task_obj) + if data['tid'] != -1: # 若此项task已存在则视为修改此task的属性信息 + print('task already exists, only modify.\n') + try: + this_task = Task.objects.get(tid=data["tid"]) + this_task.title = data["title"] + this_task.content = data["content"] + this_task.platform = data["platform"] + this_task.category = data["category"] + this_task.urls = data["urls"] + this_task.ddl_time = data["ddl_time"] + this_task.save() + response['code'] = 200 + response["msg"] = "Update success." + except: + traceback.print_exc() + + else: # 不存在就创建新的task(传入的tid为-1),对应的course_name由后端自行获取 + task_obj = Task.objects.create( + title=data["title"], + content=data["content"], + category=data["category"], + course_name=this_course.name, + urls=data["urls"], + platform=data["platform"], + ddl_time=data["ddl_time"], + create_time=data["create_time"] + ) + response['data'] = {} + response['data']['tid'] = task_obj.tid + + CourseTask.objects.create(course=this_course, task=task_obj) # 创建CourseTask对应关系 + + all_usercourse = UserCourse.objects.filter(course__cid=cid) + for uc in all_usercourse: # 为所有选课的学生关联该task + UserTask.objects.create(user=uc.user, task=task_obj, notification_alert=data['notification_alert'], + notification_time=data['notification_time'], isAdmin=True) + + response['code'] = 200 + response["msg"] = "Create success." else: - response['code'] = 404 - response["msg"]="The user is not admin." + response['code'] = 501 + response["msg"]="Permission denied. The user is not admin." return JsonResponse(response, json_dumps_params={'ensure_ascii':False}, charset='utf_8_sig') diff --git a/backend/restartpy.sh b/backend/restartpy.sh deleted file mode 100755 index 69425e913b4f829c92c8bc75cee79ab6776f3e8f..0000000000000000000000000000000000000000 --- a/backend/restartpy.sh +++ /dev/null @@ -1,5 +0,0 @@ -pkill uwsgi -python manage.py makemigrations -python manage.py migrate -# nohup python manage.py runserver 0.0.0.0:8000 & -uwsgi --ini uwsgi.ini