mirror of
https://github.com/QingdaoU/OnlineJudge.git
synced 2025-01-04 11:31:53 +00:00
添加前台小组申请和申请列表,的一系列页面,带测试,这个结构类似与题目和题目提交列表的样式和结构(页面的关系),写了简略的测试
This commit is contained in:
parent
37defa0266
commit
de04f0c2e3
@ -244,7 +244,7 @@ class JoinGroupRequestAdminAPITest(APITestCase):
|
||||
self.assertEqual(JoinGroupRequest.objects.get(id=self.request.id).status, True)
|
||||
|
||||
def test_join_group_successfully(self):
|
||||
data = {"request_id": self.request.id, "status": True}
|
||||
data = {"request_id": self.request.id, "status": True, "": True}
|
||||
response = self.client.put(self.url, data=data)
|
||||
self.assertEqual(response.data, {"code": 0, "data": u"加入成功"})
|
||||
UserGroupRelation.objects.get(group=self.group, user=self.user1)
|
||||
@ -261,15 +261,15 @@ class GroupListPageTest(TestCase):
|
||||
def setUp(self):
|
||||
self.client = Client()
|
||||
self.url = reverse('group_list_page')
|
||||
self.url = reverse('problem_list_page', kwargs={"page": 1})
|
||||
self.url_with_argument = reverse('group_page', kwargs={"page": 1})
|
||||
self.user = User.objects.create(username="test", admin_type=SUPER_ADMIN)
|
||||
self.user.set_password("testaa")
|
||||
self.user.save()
|
||||
self.group = Group.objects.create(name="group1",
|
||||
description="description1",
|
||||
# 0是公开 1是需要申请后加入 2是不允许任何人加入
|
||||
join_group_setting = 1,
|
||||
admin=User.objects.get(username="test"))
|
||||
description="description1",
|
||||
# 0是公开 1是需要申请后加入 2是不允许任何人加入
|
||||
join_group_setting=1,
|
||||
admin=User.objects.get(username="test"))
|
||||
|
||||
def get_group_list_page_successful(self):
|
||||
self.client.login(username="test", password="testaa")
|
||||
@ -278,6 +278,29 @@ class GroupListPageTest(TestCase):
|
||||
|
||||
def get_group_list_page_successful_with_keyword(self):
|
||||
self.client.login(username="test", password="testaa")
|
||||
response = self.client.get(self.url+"?keyword=gro")
|
||||
response = self.client.get(self.url + "?keyword=gro")
|
||||
self.assertEqual(response.status_coed, 200)
|
||||
|
||||
def get_group_list_page_successful_with_page_argument(self):
|
||||
self.client.login(username="test", password="testaa")
|
||||
response = self.client.get(self.url_with_argument + "?keyword=gro")
|
||||
self.assertEqual(response.status_coed, 200)
|
||||
|
||||
|
||||
class GroupPageTest(TestCase):
|
||||
def setUp(self):
|
||||
self.client = Client()
|
||||
self.user = User.objects.create(username="test", admin_type=SUPER_ADMIN)
|
||||
self.user.set_password("testaa")
|
||||
self.user.save()
|
||||
self.group = Group.objects.create(name="group1",
|
||||
description="description1",
|
||||
# 0是公开 1是需要申请后加入 2是不允许任何人加入
|
||||
join_group_setting=1,
|
||||
admin=User.objects.get(username="test"))
|
||||
self.url = reverse('group_page', kwargs={"group_id": self.group.id})
|
||||
|
||||
def get_group_list_page_successful(self):
|
||||
self.client.login(username="test", password="testaa")
|
||||
response = self.client.get(self.url)
|
||||
self.assertEqual(response.status_coed, 200)
|
||||
|
@ -105,5 +105,6 @@ urlpatterns = [
|
||||
url(r'^groups/$', "group.views.group_list_page", name="group_list_page"),
|
||||
url(r'^groups/(?P<page>\d+)/$', "group.views.group_list_page", name="group_list_page"),
|
||||
url(r'^group/(?P<group_id>\d+)/$', "group.views.group_page", name="group_page"),
|
||||
|
||||
url(r'^group/(?P<group_id>\d+)/applications/$', "group.views.application_list_page", name="group_application_page"),
|
||||
url(r'^group/application/(?P<request_id>\d+)/$', "group.views.application_page", name="group_application")
|
||||
]
|
||||
|
@ -0,0 +1,25 @@
|
||||
require(["jquery", "csrfToken", "bsAlert"], function ($, csrfTokenHeader, bsAlert) {
|
||||
$("#sendApplication").click(function (){
|
||||
var message = $("#applyMessage").val();
|
||||
console.log(message);
|
||||
var groupId = window.location.pathname.split("/")[2];
|
||||
console.log(groupId);
|
||||
data = {group_id: groupId,message:message}
|
||||
$.ajax({
|
||||
url: "/api/group_join/",
|
||||
method: "post",
|
||||
dataType: "json",
|
||||
beforeSend: csrfTokenHeader,
|
||||
data: JSON.stringify(data),
|
||||
contentType: "application/json",
|
||||
success: function (data) {
|
||||
if (data.code) {
|
||||
bsAlert(data.data);
|
||||
}
|
||||
else {
|
||||
bsAlert("申请已提交!");
|
||||
}
|
||||
}
|
||||
})
|
||||
})
|
||||
})
|
40
template/src/oj/group/group.html
Normal file
40
template/src/oj/group/group.html
Normal file
@ -0,0 +1,40 @@
|
||||
{% extends 'oj_base.html' %}
|
||||
|
||||
{% block body %}
|
||||
<div class="container main">
|
||||
<ul class="nav nav-tabs nav-tabs-google">
|
||||
<li role="presentation" class="active">
|
||||
<a href="/group/{{ group.id }}/">详细信息</a></li>
|
||||
<li role="presentation"><a href="/group/{{ group.id }}/applications/">我的申请</a></li>
|
||||
</ul>
|
||||
<h2 class="text-center">{{ group.name }}</h2>
|
||||
|
||||
<p class="text-muted text-center">发布时间 : {{ group.create_time }}
|
||||
创建者 : {{ group.admin }}
|
||||
</p>
|
||||
|
||||
<div>
|
||||
<div class="group-section">
|
||||
<label class="group-label">描述</label>
|
||||
|
||||
<p class="group-detail">{{ group.description|safe }}</p>
|
||||
</div>
|
||||
</div>
|
||||
<hr>
|
||||
<div>
|
||||
{% if group.join_group_setting %}
|
||||
<div class="form-group">
|
||||
<input id="groupId" value="{{ group.id }" type="hidden">
|
||||
<label>申请信息</label>
|
||||
<textarea class="form-control" id="applyMessage" rows="10"></textarea>
|
||||
</div>
|
||||
{% endif %}
|
||||
<div class="form-group">
|
||||
<button class="btn btn-primary" id="sendApplication">申请加入</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endblock %}
|
||||
{% block js_block %}
|
||||
<script src="/static/js/app/oj/group/group.js"></script>
|
||||
{% endblock %}
|
26
template/src/oj/group/my_application.html
Normal file
26
template/src/oj/group/my_application.html
Normal file
@ -0,0 +1,26 @@
|
||||
{% extends 'oj_base.html' %}
|
||||
|
||||
{% block body %}
|
||||
|
||||
<div class="container main">
|
||||
<ul class="nav nav-tabs nav-tabs-google">
|
||||
<li role="presentation">
|
||||
<a href="/group/{{ application.group.id }}/">详细信息</a></li>
|
||||
<li role="presentation" class="active">
|
||||
<a href="/group/{{ application.group.id }}/applications/">我的申请</a>
|
||||
</li>
|
||||
</ul>
|
||||
<label>内容</label>
|
||||
<p>{{ application.message|safe }}</p>
|
||||
<label>结果</label>
|
||||
{% if application.status %}
|
||||
{% if application.accepted %}
|
||||
<p>管理员接受了你的请求</p>
|
||||
{% else %}
|
||||
<p>管理员拒绝了你的请求</p>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<p>待审核</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock %}
|
44
template/src/oj/group/my_application_list.html
Normal file
44
template/src/oj/group/my_application_list.html
Normal file
@ -0,0 +1,44 @@
|
||||
{% extends 'oj_base.html' %}
|
||||
|
||||
{% block body %}
|
||||
|
||||
<div class="container main">
|
||||
<ul class="nav nav-tabs nav-tabs-google">
|
||||
<li role="presentation">
|
||||
<a href="/group/{{ group.id }}/">详细信息</a></li>
|
||||
<li role="presentation" class="active">
|
||||
<a href="/group/{{ group.id }}/applications/">我的申请</a></li>
|
||||
</ul>
|
||||
{% if applications %}
|
||||
<table class="table table-bordered">
|
||||
<thead>
|
||||
<tr>
|
||||
<th>#</th>
|
||||
<th>提交时间</th>
|
||||
<th>结果</th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
{% for item in applications %}
|
||||
<tr>
|
||||
<th scope="row"><a href="/group/application/{{ item.id }}/">{{ forloop.counter }}</a></th>
|
||||
<td>{{ item.create_time }}</td>
|
||||
{% if item.status %}
|
||||
{% if item.accepted %}
|
||||
<td class="alert-success">通过</td>
|
||||
{% else %}
|
||||
<td class="alert-danger">拒绝</td>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<td class="alert-warning">未处理</td>
|
||||
{% endif %}
|
||||
</tr>
|
||||
{% endfor %}
|
||||
|
||||
</tbody>
|
||||
</table>
|
||||
{% else %}
|
||||
<p>你还没有申请该小组</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endblock %}
|
Loading…
Reference in New Issue
Block a user