用flask做一个简单的考勤助手

字数 591阅读 2772

简述

  • 这学期需要每天早上向老板发送考勤邮件,报告实验室人员的到达情况。每天手写邮件比较费事,便用python来简化流程。
  • 用python发送邮件很方便,书上、网上都有很多现成的代码(如123)并有详细注释,开通邮箱的smtp服务后获取授权码(或直接使用邮箱密码)就可以用python发送邮件了。
  • 邮件样式采用htmltable,将全部成员的情况按年级渲染到表格中即可。
  • 以网页应用的形式做交互,后台使用轻量的Flask,前端UI框架选择了简洁美观的Materialize,从中选择NavbarCollapsibleDropdownForms - CheckboxesModalsButtons这几个组件组合成需要的界面。
  • 网页内容主要是一张表单,包含所有成员的复选框(Checkbox),表示其是否到达,提交后台判断勾选情况生成邮件并发送。
  • 增加成员未到原因按钮,点击按钮可以从几个常见原因中选取一个或填写其它原因,不做改变为未知原因。单个成员的状态/原因更改采用ajax提交到后台,所有成员状态维护在一个全局变量status中(不同于flask的app_context,生命周期为整个app而非某个请求)。
  • 基于python自带的sqlite3数据库记录历史(辅助类Lab_DB)。
  • 基于flask_login插件为发送邮件请求添加简单的用户认证。
  • 基于flask_sockets插件建立简单的websocket连接,将某一个用户对成员状态的修改动作及时发送到所有正在连接的用户并呈现在界面上。
  • 使用时,实验室成员自主访问修改状态与当前值班主管统一修改状态两者结合。

效果

邮件效果
简单websocket下的状态同步
未到原因选择
点击发送邮件
发送邮件需要权限,跳转登录界面

代码

  • Github - kaoqinHelper
  • settings.py中统一安放所有设置内容,包括邮件和flask应用的相关设置以及实验室成员信息。
  • my_mail.py提供发送邮件的函数。
  • lab_db.py提供简单的sqlite3数据库操作封装。
  • web_app.py提供主要服务,python web_app.py运行。

推荐阅读更多精彩内容