app.views module

app.views.accountSetting(request: HttpRequest)[源代码]
app.views.forgetPassword(request: HttpRequest)[源代码]

忘记密码页(Pylance可以提供文档字符串支持)

页面效果

  • 根据(邮箱)验证码完成登录,提交后跳转到修改密码界面

  • 本质是登录而不是修改密码

  • 如果改成支持验证码登录只需修改页面和跳转(记得修改函数和页面名)

页面逻辑

  1. 发送验证码

    1.5 验证码冷却避免多次发送

  2. 输入验证码

    2.5 保留表单信息

  3. 错误提醒和邮件发送提醒

实现逻辑

  • 通过脚本使按钮提供不同的`send_captcha`值,区分按钮

  • 通过脚本实现验证码冷却,页面刷新后重置冷却(避免过长等待影响体验)

  • 通过`session`保证安全传输验证码和待验证用户

  • 成功发送/登录后才在`session`中记录信息

  • 页面模板中实现消息提醒
    • 消息提示现在与整体统一

    • 添加`alert`表示需要提醒

    • 添加`noshow`不在页面显示文字

  • 尝试发送验证码后总是弹出提示框,通知用户验证码的发送情况

注意事项

  • 尝试忘记密码的不一定是本人,一定要做好隐私和逻辑处理
    • 用户邮箱应当部分打码,避免向非本人提供隐私数据!

  • 连接设置的timeout为6s

  • 如果引入企业微信验证,建议将send_captcha分为'qywx'和'email'

app.views.freshman(request: HttpRequest)[源代码]
app.views.homepage(request: HttpRequest)[源代码]
app.views.miniLogin(request: HttpRequest)[源代码]
app.views.modpw(request: HttpRequest)[源代码]

可能在三种情况进入这个页面:首次登陆;忘记密码;或者常规的修改密码。 在忘记密码时,可以允许不输入旧的密码 在首次登陆时,现在写的也可以不输入旧的密码(我还没想好这样合不合适)

以上两种情况都可以直接进行密码修改

常规修改要审核旧的密码

app.views.notifications(request: HttpRequest)[源代码]
app.views.orginfo(request: HttpRequest)[源代码]

orginfo负责呈现小组主页,逻辑和stuinfo是一样的,可以参考 只区分自然人和法人,不区分自然人里的负责人和非负责人。任何自然人看这个小组界面都是【不可管理/编辑小组信息】

app.views.requestLoginOrg(request: HttpRequest)[源代码]

这个函数的逻辑是,个人账户点击左侧的管理小组直接跳转登录到小组账户 首先检查登录的user是个人账户,否则直接跳转orginfo 如果个人账户对应的是name对应的小组的最高权限人,那么允许登录,否则跳转回stuinfo并warning

app.views.saveSubscribeStatus(request: HttpRequest)[源代码]
app.views.search(request: HttpRequest)[源代码]

搜索界面的呈现逻辑 分成搜索个人和搜索小组两个模块,每个模块的呈现独立开,有内容才呈现,否则不显示 搜索个人:

支持使用姓名搜索,支持对未设为不可见的昵称和专业搜索 搜索结果的呈现采用内容/未公开表示,所有列表为people_filed

搜索小组

支持使用小组名、小组类型搜索、一级负责人姓名 小组的呈现内容由拓展表体现,不在这个界面呈现具体成员 add by syb: 支持通过小组名、小组类型来搜索小组 支持通过公开关系的个人搜索小组,即如果某自然人用户可以被上面的人员搜索检出, 而且该用户选择公开其与小组的关系,那么该小组将在搜索界面呈现。 搜索结果的呈现内容见organization_field

搜索活动

支持通过活动名、小组来搜索活动。只要可以搜索到小组,小组对应的活动就也可以被搜到 搜索结果的呈现见activity_field

app.views.shiftAccount(request: HttpRequest)[源代码]
app.views.stuinfo(request: HttpRequest)[源代码]

进入到这里的逻辑: 首先必须登录,并且不是超级账户 如果name是空

如果是个人账户,那么就自动跳转个人主页"/stuinfo/?name=myname" 如果是小组账户,那么自动跳转welcome

如果name非空但是找不到对应的对象

自动跳转到welcome

如果name有明确的对象
如果不重名

如果是自己,那么呈现并且有左边栏 如果不是自己或者自己是小组,那么呈现并且没有侧边栏

如果重名

那么期望有一个"+"在name中,如果搜不到就跳转到Search/?Query=name让他跳转去

app.views.subscribeOrganization(request: HttpRequest)[源代码]
app.views.userAgreement(request: HttpRequest)[源代码]