实验室中心课表合并1(2023-04-06)
由于计算机技术实验中心从教务系统导出的课表有两种,一是实验课表,也就是现在系统中已经写出来的那个;另一个是上机课表。现在需要开发一个新的模块来实现上机课表的上传和展示,考虑到两个课表的excel
文件中大多数字段都一致,现在准备将实验课和上机课的课表存在数据库中的一个表中。
序号 | 修改任务 | 完成情况 |
---|---|---|
1 | 设计合并之后的modal 并同步更新数据库中的表字段 |
√ |
2 | 后端url 的设计 |
√ |
3 | 后端view 的设计(包括对表格数据的处理) |
√ |
4 | 后端serializer 设计 |
√ |
5 | 前端界面设计(与实验课表风格一致) | √ |
6 | 修改现在已经写好的实验课表模块,对view 、函数方法等命名进行设计并完成修改 |
√ |
思路:
1、设计合并之后的modal
并同步更新数据库中的表字段
可以发现两个课表的相同字段有:周次、日期(需要处理)、时间(需要处理)、实验室(上课地点)、教师、专业班级、学生。不同的字段有:实验课程-课程序号、实验项目代码-课程代码、实验项目-课程名称、实验辅导教师-开课单位(这边将实验课表字段放在了前面,同时在实验课表和上机课表的列上来看,课程代码和课程名称列两个课表正好相反)。
添加课程类型字段(type_course
)来对上机课和实验课进行区分;修改实验课程名称字段(experimental_name
->experimental_name_or_number
)将实验课名称和上机课的课程序号字段合并,通过课程类型字段来进行判断;实验课的实验项目字段和上机课的课程名称字段合并储存,字段名称为(experimental_item
);实验课的实验项目代码字段和上机课的课程代码合并储存,字段名称为(experimental_code
)。实验教师字段的处理:实验课表中有两个教师字段,一个是课程教师,一个是实验课辅导教师,如果实验课辅导教师 为空则填课程教师;上机课表中只有一个教师字段,即可以直接储存,但是上机课表中多出一个开课单位字段,这边只储存一个教师字段(teacher
)。
2、后端url
的设计
因为需要区分实验课和上机课,所以在最开始的url
设计中插入了区分两者的单词:由原来的
r'^v1/experimentalcenter/(?P<id>\d+)/course/(?P<cid>\d+)/$'
r'^v1/experimentalcenter/(?P<id>\d+)/course/$'
r'^v1/experimentalcenter/(?P<id>\d+)/file/$'
分为两种,一是实验课表:
r'^v1/experimentalcenter/experiment/(?P<id>\d+)/course/(?P<cid>\d+)/$'
r'^v1/experimentalcenter/experiment/(?P<id>\d+)/course/$'
r'^v1/experimentalcenter/experiment/(?P<id>\d+)/file/$'
一是上机课表
r'^v1/experimentalcenter/computer/(?P<id>\d+)/course/(?P<cid>\d+)/$'
r'^v1/experimentalcenter/computer/(?P<id>\d+)/course/$'
r'^v1/experimentalcenter/computer/(?P<id>\d+)/file/$'
在实验课表页面上,首先展示的两个实验中心,该页面上的元素有一个是实验中心有多少节课,也就是“实验次数”这个字段,发现其调用的url
是
#实验中心API,访客权限即可
r'^v1/experimentalcenter/(?P<id>\d+)/$'
r'^v1/experimentalcenter/$'
由于将课表分为实验课表和上机课表之后,需要在两者的页面上分别展示实验课的数量和上机课的数量,所以这边对url
进行了增加
实验课实验中心页面展示url
#实验课表实验中心页面API,访客权限即可
r'^v1/experimentalcenter/experiment/(?P<id>\d+)/$'
r'^v1/experimentalcenter/experiment/$'
上机课实验中心页面展示url
#上机课表实验中心页面API,访客权限即可
r'^v1/experimentalcenter/computer/(?P<id>\d+)/$'
r'^v1/experimentalcenter/computer/$'
3、后端view
的设计(包括对表格数据的处理)
因为需要区分实验课和上机课,所以在最开始的view
设计中插入了区分两者的单词:由原来的
class ExperimentalCenterCourseRetriveAPIView(generics.RetrieveAPIView):
class ExperimentalCenterCourseListAPIView(generics.ListAPIView):
class ExperimentalCenterCourseFileUploaderView(APIView):
分为两种,一是实验课表:
class ExperimentalCenterExperimentCourseRetriveAPIView(generics.RetrieveAPIView):
class ExperimentalCenterExperimentCourseListAPIView(generics.ListAPIView):
class ExperimentalCenterExperimentCourseFileUploaderView(APIView):
一是上机课表
class ExperimentalCenterComputerCourseRetriveAPIView(generics.RetrieveAPIView):
class ExperimentalCenterComputerCourseListAPIView(generics.ListAPIView):
class ExperimentalCenterComputerCourseFileUploaderView(APIView):
在实验课表页面上,首先展示的两个实验中心,该页面上的元素有一个是实验中心有多少节课,也就是“实验次数”这个字段,发现其调用的url
是
class ExperimentalCenterListAPIView(generics.ListCreateAPIView):
class ExperimentalCenterRetrieveAPIView(generics.RetrieveAPIView):
由于将课表分为实验课表和上机课表之后,需要在两者的页面上分别展示实验课的数量和上机课的数量,所以这边对view
进行了增加
实验课实验中心页面展示view
class ExperimentalCenterExperimentListAPIView(generics.ListCreateAPIView):
class ExperimentalCenterExperimentRetrieveAPIView(generics.RetrieveAPIView):
上机课实验中心页面展示view
class ExperimentalCenterComputerListAPIView(generics.ListCreateAPIView):
class ExperimentalCenterComputerRetrieveAPIView(generics.RetrieveAPIView):
4、后端serializer
设计
因为models
对数据库字段进行了个别的修改设计,这边对serializer
也应该同步进行字段修改。
因为models
中的设计是将名称-序号、项目名字-课程名字、实验项目代码-课程代码这些合并储存,同时加上了课程类型字段,所以在序列化时也应该对相应的字段进行处理,也就是在serializer
中加上课程类型字段和完成对字段的修改同步。
5、前端界面设计(与实验课表风格一致)
本来是课程管理->实验中心,现在需要设计实验课表和上机课表,所以进行修改:课程管理->实验课表、课程管理->上机课表、课程管理->其他课表。
前端的url
设计本来只有一个实验中心/center
现在需要增加把实验中心变成实验课表和上机课表:/experiment/center
和/computer/center
。
修改SideBar
侧边栏,修改Settings
里url
全局定义,修改课程列表页面的url
像后端发出正确请求。
6、修改现在已经写好的实验课表模块,对view
、函数方法等命名进行设计并完成修改
由于url、view
等的重新设计,所以需要将原有的代码进行修改,原本的上传模块只是对实验课课表进行上传处理,即因该将原本设计的url、view
等进行修改,先将现有的代码修改,可以跑通之后再去修改新增模块”上机课表“的代码。
- 后端
url、view
修改 - 前端页面修改
- 前端向后端请求时的
url
修改
实验室中心课表合并2(2023-04-10)
经过讨论,课表合并上没有太大的问题,通过,但是还有一些小的地方需要修改。
序号 | 修改任务 | 完成情况 |
---|---|---|
1 | 课程调休模块中的添加和修改模块,在调整前和调整后的日期逻辑判断上用的是只能将课程往之后的时间调整,考虑到实际情况也存在将之后的课程提前上的情况,所以需要修改判断逻辑。 | √ |
2 | 实验课表和上机课表中实验课程-课程序号、实验项目-课程名称,这两个字段在前端中展示都为上课的信息,这边把上机课中的课程序号字段在数据库中储存为课程名称,这样在前端展示的时候可以格式更加完整。 | √ |
3 | 前端修改所有课程列表的课程展示字段,只需要展示有用的信息即可以,比如:访客大屏展示的时候,课程代码这个字段就可以去掉。 | √ |
4 | 由于前端展示中要多展示出课程类型,也就是上机课和实验课,所以后端在返回的数据中应该加上type_course 字段,故需要修改后端的serializers |
√ |
5 | 在大屏展示页面标题栏加一个浏览器时间显示 | √ |