Skip to content

Commit

Permalink
放弃更新"用户消息"的代码
Browse files Browse the repository at this point in the history
  • Loading branch information
Myeeoo committed Jun 10, 2023
2 parents 4d3b8bd + cbe7f76 commit 294836b
Show file tree
Hide file tree
Showing 14 changed files with 343 additions and 23 deletions.
Binary file modified .DS_Store
Binary file not shown.
1 change: 1 addition & 0 deletions bootstrap-icons
Submodule bootstrap-icons added at 388a10
Binary file modified myapp/__pycache__/models.cpython-311.pyc
Binary file not shown.
Binary file modified myapp/__pycache__/views.cpython-311.pyc
Binary file not shown.
20 changes: 19 additions & 1 deletion myapp/models.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
from ipaddress import summarize_address_range
from django.db import models
from django.contrib.auth.models import User

from datetime import datetime , timedelta

class Classes(models.Model):
name = models.CharField(max_length=20,default='NewDream')
Expand Down Expand Up @@ -52,6 +52,24 @@ def get_total_score(self):
def get_total_checkin_score(self):
return Checkin.objects.filter(student=self).aggregate(total_checkin_score=models.Sum('score'))['total_checkin_score'] or 0

def get_total_checkin_score_this_week(self):
today = datetime.now().date()
yesterday = today-timedelta(days=1)
# 本周的起始日期和结束日期
this_week_start = today - timedelta(days=today.weekday())
this_week_end = this_week_start + timedelta(days=6)

Last_week_start = this_week_start-timedelta(days=7)
Last_week_end = this_week_end-timedelta(days=7)
return Checkin.objects.filter(student=self).filter(checkin_date__range=[this_week_start, this_week_end]).aggregate(total_checkin_score=models.Sum('score'))['total_checkin_score'] or 0

def get_total_checkin_score_this_month(self):
today = datetime.now().date()
this_month_start = today.replace(day=1)
next_month_start = this_month_start.replace(month=this_month_start.month + 1) if this_month_start.month < 12 else this_month_start.replace(year=this_month_start.year + 1, month=1)

return Checkin.objects.filter(student=self).filter(checkin_date__range=[this_month_start, next_month_start - timedelta(days=1)]).aggregate(total_checkin_score=models.Sum('score'))['total_checkin_score'] or 0

def get_last_checkin_date(self):
last_checkin = Checkin.objects.filter(student=self).order_by('-checkin_date').first()
return last_checkin.checkin_date if last_checkin else '暂无打卡记录'
Expand Down
11 changes: 6 additions & 5 deletions myapp/templates/base.html
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<script>{% load static %}</script>
<!-- 引入 jQuery 和 Bootstrap JavaScript -->
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.6.4/jquery.slim.min.js"></script>
Expand Down Expand Up @@ -125,7 +126,7 @@
<li><a class="dropdown-item" href="{% url 'commit_logs' %}"><i class="bi bi-braces-asterisk"></i> 更新与建议</a></li>
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item bg-warning text-white" href="#"><i class="bi bi-box2-heart-fill"></i> <em>盲盒(开发中)</em></a></li>
<li><a class="dropdown-item bg-warning text-white" href="#"><i class="bi bi-envelope"></i> <em>用户消息(开发中)</em></a></li>
<!-- <li><a class="dropdown-item bg-warning text-white" href="#"><i class="bi bi-envelope"></i> <em>用户消息(开发中)</em></a></li> -->
<li><hr class="dropdown-divider"></li>
<li><a class="dropdown-item" href="{% url 'logout' %}"><i class="bi bi-box-arrow-up-left"></i> 退出登录</a></li>
</ul>
Expand Down Expand Up @@ -258,15 +259,15 @@ <h4 style="padding-left: 48px;">灵思飞扬寻真境,笔墨妙动绘佳景
<div class="container">
<div class="row">
<div class="col-md-6">
<h3>联系我们</h3>
<p>地址:大理镇广武路99号</p>
<p>电话:186-0872-0186</p>
<h3>关于我们</h3>
<h5>大理一小21级1班</h5>
<p>一群热爱练字的小朋友</p>
</div>
<div class="col-md-6">
<h3>开发相关</h3>
<p>专门为大理一小二(1)班的同学们开发的书法练习打卡积分网站。</p>
<p>项目已开源<a class="nav-link" target="_blank" href="https://github.com/Myeeoo/Student_Calligraphy_practice.git">GitHub</a></p>
<a style="color: rgb(255, 164, 226)" class="nav-link" href="{% url 'commit_logs' %}">更新日志</a>
<a style="color: rgb(198, 193, 197)" class="nav-link" href="{% url 'commit_logs' %}">更新日志</a>
</div>
<ul>All CopyRight by 大理新梦圆 's eeoo</ul>
<ul>滇ICP备2021000828号-1</ul>
Expand Down
226 changes: 216 additions & 10 deletions myapp/templates/dashboard.html
Original file line number Diff line number Diff line change
Expand Up @@ -57,15 +57,200 @@ <h5 class="modal-title h4" id="exampleModalFullscreenLabel">全屏查看</h5>
</div>
</div>
<ul class="nav nav-tabs">
<li class="nav-item" style="width: 50%;">
<h2 class="nav-link active " data-toggle="tab" href="#score2">积分榜信息</h2>

<li class="nav-item" >
<h2 class="nav-link " data-toggle="tab" href="#week_top">周积分榜</h2>
</li>
<!-- <li class="nav-item" >
<h2 class="nav-link " data-toggle="tab" href="#month_top">月积分榜</h2>
</li> -->
<li class="nav-item" >
<h2 class="nav-link active" data-toggle="tab" href="#score2">总积分榜</h2>
</li>
<li class="nav-item" style="width: 50%;">
<li class="nav-item" >
<h2 class="nav-link " data-toggle="tab" href="#score1">得分榜信息</h2>
</li>
</ul>
<!-- 创建标签页内容 -->
<div class="tab-content">
<div class="tab-pane" id="month_top">
<div class="row">
<div class="col-md-6 bg-primary rounded">
<h4 class="my-5 text-center">本月积分排行榜</h4>
<ol class="list-group">
{% for student in top_students_this_month %}
<li class="list-group-item d-flex justify-content-between align-items-center {% if forloop.counter == 1 %}first{% elif forloop.counter == 2 %}second{% elif forloop.counter == 3 %}third{% endif %}">
<span>{% if forloop.counter <= 10 %}<span class="badge bg-primary me-2">{{ forloop.counter }}</span>{% endif %}{{ student.name }}</span>

<span class="badge bg-primary rounded-pill">{{ student.get_total_checkin_score_this_month }} 分</span>
</li>
{% endfor %}

<li class="align-items-center list-unstyled" style="height: 30px;">
<p style="font-size:small;">亲友团不参与排名</p>
</li>

</ol>
</div>

<div class="col-md-6 rounded border">
<h3 class="my-5 text-center">统计信息</h3>
<div class="row">
<div class="col-md-6">
<div class="card mb-5 text-center" >
<div class="card-header bg-danger text-white">
<h3 class="card-title">参与总人数</h3>
</div>
<div class="card-body">
<h3 class="card-text">{{ num_students }}</h3>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-5 text-center" >
<div class="card-header bg-danger text-white">
<h3 class="card-title">打卡总次数</h3>
</div>
<div class="card-body">
<h3 class="card-text">{{ num_checkins_total }}</h3>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-5 text-center" >
<div class="card-header bg-primary">
<h3 class="card-title">今日打卡人数</h3>
</div>
<div class="card-body">
<h3 class="card-text">{{ num_checkins_today }}</h3>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-5 text-center" >
<div class="card-header bg-primary">
<h3 class="card-title">昨日打卡人数</h3>
</div>
<div class="card-body">
<h3 class="card-text">{{ num_checkins_yesterday }}</h3>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-5 text-center" >
<div class="card-header bg-primary">
<h3 class="card-title">本周打卡数</h3>
</div>
<div class="card-body">
<h3 class="card-text">{{ num_checkins_this_week }}</h3>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-5 text-center" >
<div class="card-header bg-primary">
<h3 class="card-title">上周打卡数</h3>
</div>
<div class="card-body">
<h3 class="card-text">{{ num_checkins_last_week }}</h3>
</div>
</div>
</div>

</div>
</div>
</div>
</div>

<div class="tab-pane" id="week_top">
<div class="row">
<div class="col-md-6 bg-primary rounded">
<h4 class="my-5 text-center">本周积分排行榜</h4>
<ol class="list-group">
{% for student in top_students_this_week %}
<li class="list-group-item d-flex justify-content-between align-items-center {% if forloop.counter == 1 %}first{% elif forloop.counter == 2 %}second{% elif forloop.counter == 3 %}third{% endif %}">
<span>{% if forloop.counter <= 10 %}<span class="badge bg-primary me-2">{{ forloop.counter }}</span>{% endif %}{{ student.name }}</span>

<span class="badge bg-primary rounded-pill">{{ student.get_total_checkin_score_this_week }} 分</span>
</li>
{% endfor %}

<li class="align-items-center list-unstyled" style="height: 30px;">
<p style="font-size:small;">亲友团不参与排名</p>
</li>

</ol>
</div>

<div class="col-md-6 rounded border">
<h3 class="my-5 text-center">统计信息</h3>
<div class="row">
<div class="col-md-6">
<div class="card mb-5 text-center" >
<div class="card-header bg-danger text-white">
<h3 class="card-title">参与总人数</h3>
</div>
<div class="card-body">
<h3 class="card-text">{{ num_students }}</h3>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-5 text-center" >
<div class="card-header bg-danger text-white">
<h3 class="card-title">打卡总次数</h3>
</div>
<div class="card-body">
<h3 class="card-text">{{ num_checkins_total }}</h3>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-5 text-center" >
<div class="card-header bg-primary">
<h3 class="card-title">今日打卡人数</h3>
</div>
<div class="card-body">
<h3 class="card-text">{{ num_checkins_today }}</h3>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-5 text-center" >
<div class="card-header bg-primary">
<h3 class="card-title">昨日打卡人数</h3>
</div>
<div class="card-body">
<h3 class="card-text">{{ num_checkins_yesterday }}</h3>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-5 text-center" >
<div class="card-header bg-primary">
<h3 class="card-title">本周打卡数</h3>
</div>
<div class="card-body">
<h3 class="card-text">{{ num_checkins_this_week }}</h3>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-5 text-center" >
<div class="card-header bg-primary">
<h3 class="card-title">上周打卡数</h3>
</div>
<div class="card-body">
<h3 class="card-text">{{ num_checkins_last_week }}</h3>
</div>
</div>
</div>

</div>
</div>
</div>
</div>

<div class="tab-pane" id="score1">
<div class="row">
<div class="col-md-6 bg-primary rounded">
Expand Down Expand Up @@ -150,22 +335,32 @@ <h4 class="my-5 text-center">积分排行榜</h4>
</div>

<div class="col-md-6 rounded border">
<h4 class="my-5 text-center">统计信息</h4>
<h3 class="my-5 text-center">统计信息</h3>
<div class="row">
<div class="col-md-6">
<div class="card mb-5 text-center" >
<div class="card-header bg-primary">
<h2 class="card-title">参与总人数</h2>
<div class="card-header bg-danger text-white">
<h3 class="card-title">参与总人数</h3>
</div>
<div class="card-body">
<h3 class="card-text">{{ num_students }}</h3>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-5 text-center" >
<div class="card-header bg-danger text-white">
<h3 class="card-title">打卡总次数</h3>
</div>
<div class="card-body">
<h3 class="card-text">{{ num_checkins_total }}</h3>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-5 text-center" >
<div class="card-header bg-primary">
<h2 class="card-title">今日打卡人数</h2>
<h3 class="card-title">今日打卡人数</h3>
</div>
<div class="card-body">
<h3 class="card-text">{{ num_checkins_today }}</h3>
Expand All @@ -175,7 +370,17 @@ <h3 class="card-text">{{ num_checkins_today }}</h3>
<div class="col-md-6">
<div class="card mb-5 text-center" >
<div class="card-header bg-primary">
<h2 class="card-title">本周打卡数</h2>
<h3 class="card-title">昨日打卡人数</h3>
</div>
<div class="card-body">
<h3 class="card-text">{{ num_checkins_yesterday }}</h3>
</div>
</div>
</div>
<div class="col-md-6">
<div class="card mb-5 text-center" >
<div class="card-header bg-primary">
<h3 class="card-title">本周打卡数</h3>
</div>
<div class="card-body">
<h3 class="card-text">{{ num_checkins_this_week }}</h3>
Expand All @@ -185,13 +390,14 @@ <h3 class="card-text">{{ num_checkins_this_week }}</h3>
<div class="col-md-6">
<div class="card mb-5 text-center" >
<div class="card-header bg-primary">
<h2 class="card-title">打卡总次数</h2>
<h3 class="card-title">上周打卡数</h3>
</div>
<div class="card-body">
<h3 class="card-text">{{ num_checkins_total }}</h3>
<h3 class="card-text">{{ num_checkins_last_week }}</h3>
</div>
</div>
</div>

</div>
</div>
</div>
Expand Down
1 change: 1 addition & 0 deletions myapp/templates/login.html
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@
</div>
</div>
<div class="modal-footer">
<a href="{% url 'password_reset' %}">忘记密码</a>
<button type="submit" class="btn btn-primary">登录</button>
<button type="button" class="btn btn-secondary" data-bs-dismiss="modal">关闭</button>
</div>
Expand Down
13 changes: 13 additions & 0 deletions myapp/templates/password_reset.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
{% extends 'base.html' %}
{% load i18n %}
{% block content %}
<h2>重置密码</h2>
<form method="POST" action="{% url 'password_reset' %}">
{% csrf_token %}
<div class="form-group">
<label for="id_email">邮箱地址:</label>
<input type="email" class="form-control" id="id_email" name="email" required>
</div>
<button type="submit" class="btn btn-primary">验证信箱</button>
</form>
{% endblock %}
Loading

0 comments on commit 294836b

Please sign in to comment.