This commit is contained in:
xieshen 2020-10-22 15:15:02 +08:00
parent e964957abc
commit 008abe7eba
20 changed files with 641 additions and 38 deletions

View File

@ -2,6 +2,7 @@ import uuid
from django.contrib.auth.models import User from django.contrib.auth.models import User
from django.db import models from django.db import models
# 权限等级 # 权限等级
@ -22,6 +23,8 @@ class Group_type(models.Model):
def __str__(self): def __str__(self):
return self.type return self.type
# 矩阵 # 矩阵
@ -58,6 +61,7 @@ class Group(models.Model):
def __str__(self): def __str__(self):
return self.name return self.name
# 矩阵管理员 # 矩阵管理员
@ -72,6 +76,8 @@ class Group_admin(models.Model):
def __str__(self): def __str__(self):
return self.group.name return self.group.name
# 矩阵成员 # 矩阵成员
@ -87,6 +93,7 @@ class Group_user(models.Model):
def __str__(self): def __str__(self):
return self.user.username return self.user.username
# 单位类型 # 单位类型
@ -118,8 +125,8 @@ class Organization(models.Model):
directly = models.CharField('单位类型', max_length=256, null=True, blank=True) directly = models.CharField('单位类型', max_length=256, null=True, blank=True)
status = models.CharField('状态', max_length=256, null=True, blank=True) status = models.CharField('状态', max_length=256, null=True, blank=True)
#20201014新添加字段 # 20201014新添加字段
id_code = models.CharField('单位唯一标识码',max_length=256,null=True,blank=True) id_code = models.CharField('单位唯一标识码', max_length=256, null=True, blank=True)
created = models.DateTimeField('创建时间', auto_now_add=True) created = models.DateTimeField('创建时间', auto_now_add=True)
updated = models.DateTimeField('更新时间', auto_now=True) updated = models.DateTimeField('更新时间', auto_now=True)
@ -147,8 +154,8 @@ class Userprofile(models.Model):
Organization, on_delete=models.CASCADE, null=True, blank=True) Organization, on_delete=models.CASCADE, null=True, blank=True)
# 用户状态:注册进来默认为0为未审核状态审核后status=1 # 用户状态:注册进来默认为0为未审核状态审核后status=1
status = models.IntegerField('用户状态', null=True, blank=True, default=0) status = models.IntegerField('用户状态', null=True, blank=True, default=0)
#20201017新增字段职位 # 20201017新增字段职位
zhiwei = models.CharField('职位',max_length=256,null=True,blank=True) zhiwei = models.CharField('职位', max_length=256, null=True, blank=True)
created = models.DateTimeField('创建时间', auto_now_add=True) created = models.DateTimeField('创建时间', auto_now_add=True)
updated = models.DateTimeField('更新时间', auto_now=True) updated = models.DateTimeField('更新时间', auto_now=True)
@ -186,6 +193,15 @@ def create_user_profile(sender, instance, created, **kwargs):
class NewMedia(models.Model): class NewMedia(models.Model):
"""
status:
'0': '已删除',
'1': '添加申请市级审核中',
'2': '添加申请省级审核中',
'3': '正常',
'4': '注销申请市级审核中',
'5': '注销申请省级审核中',
"""
id = models.UUIDField('id', primary_key=True, default=uuid.uuid4) id = models.UUIDField('id', primary_key=True, default=uuid.uuid4)
code = models.CharField('微信公众号', max_length=256, null=True, blank=True) code = models.CharField('微信公众号', max_length=256, null=True, blank=True)
alias = models.CharField('别名', max_length=256, null=True, blank=True) alias = models.CharField('别名', max_length=256, null=True, blank=True)
@ -199,10 +215,11 @@ class NewMedia(models.Model):
remark = models.CharField('备注', null=True, blank=True, max_length=2560) remark = models.CharField('备注', null=True, blank=True, max_length=2560)
created = models.DateTimeField('创建时间', auto_now_add=True) created = models.DateTimeField('创建时间', auto_now_add=True)
updated = models.DateTimeField('更新时间', auto_now=True) updated = models.DateTimeField('更新时间', auto_now=True)
#20201015新增字段 # 20201015新增字段
identificationcode = models.CharField('新媒体标识码',max_length=256,null=True,blank=True) identificationcode = models.CharField('新媒体标识码', max_length=256, null=True, blank=True)
function = models.CharField('功能',max_length=256,null=True,blank=True) function = models.CharField('功能', max_length=256, null=True, blank=True)
articleurl = models.TextField('文章URL',null=True,blank=True) articleurl = models.TextField('文章URL', null=True, blank=True)
class Meta: class Meta:
abstract = True abstract = True
ordering = ["-created"] ordering = ["-created"]
@ -549,6 +566,8 @@ class Douyin_data(models.Model):
def __str__(self): def __str__(self):
return self.mewnedia.code return self.mewnedia.code
# 其他新媒体 # 其他新媒体
@ -559,6 +578,7 @@ class Qita(NewMedia):
def __str__(self): def __str__(self):
return self.qitaid return self.qitaid
# 其他新媒体监测 # 其他新媒体监测
@ -576,6 +596,8 @@ class Qita_jc(models.Model):
def __str__(self): def __str__(self):
return self.mewnedia.name return self.mewnedia.name
# 5级地名库 # 5级地名库
@ -620,8 +642,9 @@ class News(models.Model):
def __str__(self): def __str__(self):
return self.title return self.title
#手机验证码验证表
# 手机验证码验证表
class CheckCode(models.Model): class CheckCode(models.Model):
phone_code = models.CharField('手机验证码',max_length=256,null=True,blank=True) phone_code = models.CharField('手机验证码', max_length=256, null=True, blank=True)
phone = models.CharField('电话号',max_length=256,null=True,blank=True) phone = models.CharField('电话号', max_length=256, null=True, blank=True)
c_time =models.DateTimeField('时间', auto_now_add=True) c_time = models.DateTimeField('时间', auto_now_add=True)

View File

@ -0,0 +1,145 @@
{% extends 'dashboard/base/base.html' %}
{% load static %}
{% block content %}
<body class=" ">
<!-- START TOPBAR -->
<!-- START CONTAINER -->
<div class="page-container row-fluid">
<div class="page-sidebar ">
{% include 'dashboard/base/left.html' %}
</div>
<section id="main-content" class=" ">
<section class="wrapper" style='margin-top:60px;display:inline-block;width:100%;padding:15px 0 0 15px;'>
{% if messages %}
<div class="alert alert-success alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert">
<span aria-hidden="true">&times;</span>
<span class="sr-only">Close</span>
</button>
{% for message in messages %}
{{ message }}.<br/>
{% endfor %}
</div>
{% endif %}
<div class='col-lg-12 col-md-12 col-sm-12 col-xs-12'>
<div class="page-title">
<div class="pull-left">
<h1 class="title">个人信息完善</h1></div>
</div>
</div>
<div class="clearfix"></div>
<div class="col-lg-12 col-md-12 col-xs-12 col-sm-12">
<section class="box ">
<header class="panel_header">
<h2 class="title pull-left">用户信息</h2>
</header>
<div class="content-body">
<div class="row">
<div class="col-md-8 col-sm-9 col-xs-10">
<form method="post"
action="{% url 'user-improve-personal-information' usee.id %}"
enctype="multipart/form-data">{% csrf_token %}
<div class="form-group">
<label class="form-label" for="name">账号</label>
<div class="controls">
<input type="text" class="form-control" name="name"
value="{{ usee.username }}" disabled>
</div>
</div>
<div class="form-group">
<label class="form-label" for="organization">单位</label>
<div class="input-group main-search">
<input type="text" class="form-control" placeholder="请输入关键字"
style="height: 40px;width: 985px;opacity: .9 "
name="organization">
<div class="input-group-btn" style="display: none">
<button class="btn btn-default" type="button">
<span class="glyphicon glyphicon-search"></span>
</button>
</div>
</div>
<div class="autocomplete-panel" style="z-index: 9999">
</div>
</div>
<div class="form-group">
<label class="form-label" for="name">姓名</label>
<div class="controls">
<input type="text" class="form-control" name="name"
>
</div>
</div>
<div class="form-group">
<label class="form-label" for="email">邮箱</label>
<div class="controls">
<input type="text" class="form-control" name="email"
>
</div>
</div>
<div class="form-group">
<label class="form-label" for="image">头像
<div class="controls">
<input type="file" name="image">
</div>
</label>
</div>
<div class="form-group">
<label for="password">密码<br/>
<input type="password" name="password" id="user_pass" class="input"
value="" size="20"/></label>
</div>
<div class="form-group">
<label for="confirm_password">确认密码<br/>
<input type="password" name="confirm_password" id="user_pass1"
class="input" value=""
size="20"/></label>
</div>
<button type="submit" class="btn btn-primary" style="margin-top: 50px">提交
</button>
</form>
</div>
</div>
</div>
</section>
</div>
</section>
</section>
<div class="chatapi-windows "></div>
</div>
</body>
{% endblock %}
{% block add_js %}
<script>
$(function () {
$('.main-search input').focus(function (e) {
e.preventDefault();
$("#history_query").hide()
var width = $(this).width();
var position = $(this).position();
var val = $(this).val();
var params = {keyword: val}
if (val) {
$('.autocomplete-panel').load('/get/organization/' + '?' + $.param(params));
}
$('.autocomplete-panel').css({
width: width + 12,
top: position.top + 34,
left: position.left + 5
}).show();
}).blur(function (e) {
e.preventDefault();
}).on('input', function (e) {
var val = $(this).val();
var params = {keyword: val}
$('.autocomplete-panel').load('/get/organization/' + '?' + $.param(params))
});
})
</script>
{% endblock %}

View File

@ -7,6 +7,8 @@ urlpatterns = [
path('index/', views.index, name='dashboard-index'), path('index/', views.index, name='dashboard-index'),
path('', views.user_login, name='dashboard-login'), path('', views.user_login, name='dashboard-login'),
path('user/login/for/phone/', views.user_login_for_phone, name='dashboard-login-for-phone'), path('user/login/for/phone/', views.user_login_for_phone, name='dashboard-login-for-phone'),
#手机用户第一次登录后完善个人信息
path('user/improve/personal/information/<str:pk>/',views.improve_personal_information,name = 'user-improve-personal-information'),
#发送手机验证码 #发送手机验证码
path('author/code/',views.author_code,name='author-code'), path('author/code/',views.author_code,name='author-code'),
path('refresh_captcha/', views.refresh_captcha, name='refresh-captcha'), path('refresh_captcha/', views.refresh_captcha, name='refresh-captcha'),

View File

@ -2,6 +2,8 @@ import csv
import json import json
import http.client import http.client
import random import random
from django.contrib.auth.hashers import make_password
from django.utils import timezone from django.utils import timezone
import time import time
from urllib import parse from urllib import parse
@ -95,25 +97,30 @@ def user_login_for_phone(request):
p_code = request.POST.get('check_code') p_code = request.POST.get('check_code')
phone = request.POST.get('phone') phone = request.POST.get('phone')
print(phone, p_code) print(phone, p_code)
results = CheckCode.objects.filter(phone=18119305139).count() results = CheckCode.objects.filter(phone=phone).count()
print(str(results) + "11111111111111111") print(str(results) + "11111111111111111")
# try: # try:
res = User.objects.filter(username=phone).count()
if res > 0:
messages.error(request, '您的账号已经存在,请您使用密码登录!!!')
return HttpResponseRedirect('/')
if results > 0: if results > 0:
check_code = CheckCode.objects.get(phone_code=p_code, phone=phone) check_code = CheckCode.objects.get(phone_code=p_code, phone=phone)
if User.objects.filter(username=phone).count() > 0: if User.objects.filter(username=phone).count() > 0:
user = User.objects.get(username=phone) user = User.objects.get(username=phone)
login(request, user, backend='django.contrib.auth.backends.ModelBackend') login(request, user, backend='django.contrib.auth.backends.ModelBackend')
# check_code.delete() # check_code.delete()
return HttpResponseRedirect('/index/')
return HttpResponseRedirect('/user/improve/personal/information/%s/' % (user.id))
else: else:
user = User(username=phone) user = User(username=phone, last_login=timezone.now())
user.save() user.save()
userprofile = Userprofile(user_id=user.id, image='default.png') # userprofile = Userprofile(user_id=user.id, image='default.png')
userprofile.save() # userprofile.save()
u = authenticate(username=phone) u = authenticate(username=phone)
login(request, u, backend='django.contrib.auth.backends.ModelBackend') login(request, u, backend='django.contrib.auth.backends.ModelBackend')
return HttpResponseRedirect('/index/') return HttpResponseRedirect('/user/improve/personal/information/%s/' % (user.id))
# if float(time.time()) - float(check_code.c_time) > 60: # if float(time.time()) - float(check_code.c_time) > 60:
# check_code.delete() # check_code.delete()
# return '验证码超时已被删除' # return '验证码超时已被删除'
@ -126,6 +133,46 @@ def user_login_for_phone(request):
return render(request, 'dashboard/login-for-phone.html') return render(request, 'dashboard/login-for-phone.html')
def improve_personal_information(request, pk):
name = None
email = None
image = None
password = None
confirm_password = None
o_id = None
user = User.objects.get(id=pk)
if request.method == 'POST':
o = request.POST.get('organization')
if Organization.objects.get(name=o):
o_id = Organization.objects.get(name=o).id
else:
messages.error(request,'您填写的单位不存在!!!')
if request.POST.get('name'):
name = request.POST.get('name')
else:
messages.error(request,'请输入您的姓名!!!')
if request.POST.get('email'):
email = request.POST.get('email')
else:
messages.error(request,'请输入您的邮箱!!!')
if request.FILES.get('image'):
image = request.POST.get('image')
else:
image = '/profile/user_default.jpg'
if request.POST.get('password'):
password = request.POST.get('password')
else:
messages.error(request,'请输入密码')
confirm_password = request.POST.get('confirm_password')
if password is not None and confirm_password is not None:
if password == confirm_password:
User.objects.filter(id=pk).update(email=email,password=make_password(password))
userprofile=Userprofile(name=name,image=image,organization_id=o_id,user_id=user.id)
userprofile.save()
messages.success(request,'修改成功')
return render(request, 'dashboard/user-improve-personal-information.html', {'usee': user})
def author_code(request): def author_code(request):
sms_host = "sms.yunpian.com" sms_host = "sms.yunpian.com"
voice_host = "voice.yunpian.com" voice_host = "voice.yunpian.com"
@ -147,8 +194,7 @@ def author_code(request):
code += ch code += ch
print(code) print(code)
# tpl_value = {'#dateStart#': '10月1日', '#dateEnd#': '10日', '#type#': '微信公众号', '#name#': code} # tpl_value = {'#dateStart#': '10月1日', '#dateEnd#': '10日', '#type#': '微信公众号', '#name#': code}
tpl_value = {'#code#':code} tpl_value = {'#code#': code}
params = parse.urlencode({ params = parse.urlencode({
'apikey': apikey, 'apikey': apikey,
@ -192,6 +238,7 @@ def register(request):
flag = False flag = False
user_organization = None user_organization = None
sex = None sex = None
user_organization = None
hash_key = CaptchaStore.generate_key() hash_key = CaptchaStore.generate_key()
image_url = captcha_image_url(hash_key) image_url = captcha_image_url(hash_key)
organization = Organization.objects.filter(status='1') organization = Organization.objects.filter(status='1')
@ -200,7 +247,11 @@ def register(request):
messages.error(request, '请选择单位') messages.error(request, '请选择单位')
else: else:
o = request.POST.get('organization') o = request.POST.get('organization')
res = Organization.objects.filter(name=o).count()
if res > 0:
user_organization = Organization.objects.get(name=o).id user_organization = Organization.objects.get(name=o).id
else:
messages.error(request,'您填写的单位不存在')
if not request.POST.get('name'): if not request.POST.get('name'):
messages.error(request, '请输入姓名') messages.error(request, '请输入姓名')
else: else:
@ -223,7 +274,7 @@ def register(request):
else: else:
confirm_password = request.POST.get('confirm_password') confirm_password = request.POST.get('confirm_password')
if not request.FILES.get('image'): if not request.FILES.get('image'):
messages.error(request, '请选择头像') image='/profile/user_default.jpg'
else: else:
image = request.FILES.get('image') image = request.FILES.get('image')
print(str(image) + "1111111111111111111111111111111111111111111") print(str(image) + "1111111111111111111111111111111111111111111")
@ -252,7 +303,7 @@ def register(request):
return HttpResponseRedirect('/register/') return HttpResponseRedirect('/register/')
if username is not None and password is not None and confirm_password is not None and email is not None and flag: if username is not None and password is not None and confirm_password is not None and email is not None and flag:
user = User.objects.create_user(username, email, password,last_login = timezone.now() ) user = User.objects.create_user(username, email, password, last_login=timezone.now())
user.is_active = True user.is_active = True
# user.is_staff = True # user.is_staff = True
# user.first_name = phone # user.first_name = phone
@ -347,6 +398,7 @@ def get_organization(request):
def wechat_verify(request): def wechat_verify(request):
return HttpResponse("11833201729252855821") return HttpResponse("11833201729252855821")
def import_user(request): def import_user(request):
with open('F:/总.csv') as csvfile: with open('F:/总.csv') as csvfile:
reader = csv.reader(csvfile) reader = csv.reader(csvfile)

View File

@ -53,7 +53,11 @@
<div class="controls"> <div class="controls">
<select class="form-control" name="user"> <select class="form-control" name="user">
{% for u in usee %} {% for u in usee %}
<option value="{{ u.id }}">{{ u.username }}</option> <option value="{{ u.id }}">
{% for i in u.userprofile_set.all %}
{{ i.name }}----{{ u.username }}----{{ i.organization }}
{% endfor %}
</option>
{% endfor %} {% endfor %}
</select> </select>
</div> </div>

View File

@ -49,6 +49,28 @@
href="{% url 'group-management-management-admin' %}">我管理的矩阵</a></li> href="{% url 'group-management-management-admin' %}">我管理的矩阵</a></li>
<li role="presentation" style="margin-top: 20px"><a <li role="presentation" style="margin-top: 20px"><a
href="{% url 'group-management-management-user' %}">我加入的矩阵</a></li> href="{% url 'group-management-management-user' %}">我加入的矩阵</a></li>
{% if level == 9 %}
<li role="presentation" style="margin-top: 20px"><a
href="{% url 'group-management-management-superuser' %}">所有的矩阵</a></li>
{% endif %}
<form>
<div class="btn-group col-md-2 title"
style="display: inline-block;margin-left: 5%;margin-top: 20px">
<select class="form-control" name="keytype">
<option value="1">矩阵名称</option>
<option value="2">矩阵类型</option>
</select>
</div>
<div class="col-md-3 title" style="margin-top: 20px">
<div class="input-group">
<input type="text" class="form-control" placeholder="输入搜索关键字"
name="keyword">
<span class="input-group-btn">
<button class="btn btn-default" type="button">搜索</button>
</span>
</div>
</div>
</form>
<h6 class="title pull-right">我共管理{% if admin_count %}{{ admin_count }}{% else %} <h6 class="title pull-right">我共管理{% if admin_count %}{{ admin_count }}{% else %}
0{% endif %}个矩阵</h6> 0{% endif %}个矩阵</h6>
</ul> </ul>

View File

@ -41,15 +41,39 @@
<header class="panel_header"> <header class="panel_header">
{# <h2 class="title pull-left">矩阵列表</h2>#} {# <h2 class="title pull-left">矩阵列表</h2>#}
<ul class="nav nav-pills"> <ul class="nav nav-pills">
<li role="presentation" class="active" style="margin-top: 20px"><a <li role="presentation" class="active" style="margin-top: 20px"><a
href="{% url 'group-management-management-init' %}">我创建的矩阵</a></li> href="{% url 'group-management-management-init' %}">我创建的矩阵</a></li>
<li role="presentation" style="margin-top: 20px"><a <li role="presentation" style="margin-top: 20px"><a
href="{% url 'group-management-management-admin' %}">我管理的矩阵</a></li> href="{% url 'group-management-management-admin' %}">我管理的矩阵</a></li>
<li role="presentation" style="margin-top: 20px"><a <li role="presentation" style="margin-top: 20px"><a
href="{% url 'group-management-management-user' %}">我加入的矩阵</a></li> href="{% url 'group-management-management-user' %}">我加入的矩阵</a></li>
{% if level == 9 %}
<li role="presentation" style="margin-top: 20px"><a
href="{% url 'group-management-management-superuser' %}">所有的矩阵</a></li>
{% endif %}
<form>
<div class="btn-group col-md-2 title"
style="display: inline-block;margin-left: 5%;margin-top: 20px">
<select class="form-control" name="keytype">
<option value="1">矩阵名称</option>
<option value="2">矩阵类型</option>
</select>
</div>
<div class="col-md-3 title" style="margin-top: 20px">
<div class="input-group">
<input type="text" class="form-control" placeholder="输入搜索关键字"
name="keyword">
<span class="input-group-btn">
<button class="btn btn-default" type="button">搜索</button>
</span>
</div>
</div>
</form>
<h6 class="title pull-right">我共创建{% if init_count %}{{ init_count }}{% else %} <h6 class="title pull-right">我共创建{% if init_count %}{{ init_count }}{% else %}
0{% endif %}个矩阵</h6> 0{% endif %}个矩阵</h6>
</ul> </ul>
</header> </header>
<div class="content-body"> <div class="content-body">
<div class="row"> <div class="row">

View File

@ -0,0 +1,127 @@
{% extends 'dashboard/base/base.html' %}
{% load static %}
{% block css %}
<!-- OTHER SCRIPTS INCLUDED ON THIS PAGE - START -->
<link href="{% static 'management/css/uikit.min.css' %}" rel="stylesheet" type="text/css" media="screen"/>
<link href="{% static 'management/css/nestable.min.css' %}" rel="stylesheet" type="text/css" media="screen"/>
<!-- OTHER SCRIPTS INCLUDED ON THIS PAGE - END -->
{% endblock %}
{% block content %}
<body class=" "><!-- START TOPBAR -->
<div class="page-container row-fluid">
<div class="page-sidebar ">
{% include 'dashboard/base/left.html' %}
</div>
<section id="main-content" class=" ">
<section class="wrapper" style='margin-top:60px;display:inline-block;width:100%;padding:15px 0 0 15px;'>
{% if messages %}
<div class="alert alert-success alert-dismissible" role="alert">
<button type="button" class="close" data-dismiss="alert">
<span aria-hidden="true">&times;</span>
<span class="sr-only">Close</span>
</button>
{% for message in messages %}
{{ message }}.<br/>
{% endfor %}
</div>
{% endif %}
<div class='col-lg-12 col-md-12 col-sm-12 col-xs-12'>
<div class="page-title">
<div class="pull-left">
<h1 class="title">矩阵管理</h1></div>
</div>
</div>
<div class="clearfix"></div>
<div class="col-lg-12">
<section class="box ">
<header class="panel_header">
{# <h2 class="title pull-left">矩阵列表</h2>#}
<ul class="nav nav-pills">
<li role="presentation" style="margin-top: 20px"><a
href="{% url 'group-management-management-init' %}">我创建的矩阵</a></li>
<li role="presentation" style="margin-top: 20px"><a
href="{% url 'group-management-management-admin' %}">我管理的矩阵</a></li>
<li role="presentation" style="margin-top: 20px"><a
href="{% url 'group-management-management-user' %}">我加入的矩阵</a></li>
{% if level == 9 %}
<li role="presentation" style="margin-top: 20px" class="active"><a
href="{% url 'group-management-management-superuser' %}">所有的矩阵</a></li>
{% endif %}
<form>
<div class="btn-group col-md-2 title"
style="display: inline-block;margin-left: 5%;margin-top: 20px">
<select class="form-control" name="keytype">
<option value="1">矩阵名称</option>
<option value="2">矩阵类型</option>
</select>
</div>
<div class="col-md-3 title" style="margin-top: 20px">
<div class="input-group">
<input type="text" class="form-control" placeholder="输入搜索关键字"
name="keyword">
<span class="input-group-btn">
<button class="btn btn-default" type="button">搜索</button>
</span>
</div>
</div>
</form>
<h6 class="title pull-right">共有{% if count %}{{ count }}{% else %}
0{% endif %}个矩阵</h6>
</ul>
</header>
<div class="content-body">
<div class="row">
<div class="col-md-12 col-sm-12 col-xs-12">
<table class="table table-hover">
<thead>
<tr>
<th style="text-align: center">序号</th>
<th style="text-align: center">头像</th>
<th style="text-align: center">矩阵名称</th>
<th style="text-align: center">矩阵类型</th>
<th style="text-align: center">管理员个数</th>
<th style="text-align: center">成员个数</th>
<th style="text-align: center">状态</th>
</tr>
</thead>
<tbody>
{% for r in res_g_i %}
<tr>
<td style="vertical-align: middle;text-align: center">{{ forloop.counter }}</td>
<td style="text-align: center"><img src="{{ r.image }}"
style="width: 80px;height: 80px;"
class="img-circle"></td>
<td style="vertical-align: middle;text-align: center">{{ r.name }}</td>
<td style="vertical-align: middle;text-align: center">{{ r.type }}</td>
<td style="vertical-align: middle;text-align: center">{{ r.admin_count }}</td>
<td style="vertical-align: middle;text-align: center">{{ r.user_count }}</td>
<td style="vertical-align: middle;text-align: center">{{ r.status }}</td>
</tr>
{% endfor %}
</tbody>
</table>
<div class="metadata-pagination">
{% include 'dashboard/paginator/group-management-paginate.html' %}
</div>
</div>
</div>
</div>
</section>
</div>
</section>
</section>
<div class="chatapi-windows ">
</div>
</div>
</body>
{% endblock %}
{% block add_js %}
<script src="{% static 'management/js/uikit.min.js' %}" type="text/javascript"></script>
<script src="{% static 'management/js/nestable.min.js' %}" type="text/javascript"></script>
{% endblock %}

View File

@ -49,6 +49,28 @@
href="{% url 'group-management-management-admin' %}">我管理的矩阵</a></li> href="{% url 'group-management-management-admin' %}">我管理的矩阵</a></li>
<li role="presentation" class="active" style="margin-top: 20px"><a <li role="presentation" class="active" style="margin-top: 20px"><a
href="{% url 'group-management-management-user' %}">我加入的矩阵</a></li> href="{% url 'group-management-management-user' %}">我加入的矩阵</a></li>
{% if level == 9 %}
<li role="presentation" style="margin-top: 20px"><a
href="{% url 'group-management-management-superuser' %}">所有的矩阵</a></li>
{% endif %}
<form>
<div class="btn-group col-md-2 title"
style="display: inline-block;margin-left: 5%;margin-top: 20px">
<select class="form-control" name="keytype">
<option value="1">矩阵名称</option>
<option value="2">矩阵类型</option>
</select>
</div>
<div class="col-md-3 title" style="margin-top: 20px">
<div class="input-group">
<input type="text" class="form-control" placeholder="输入搜索关键字"
name="keyword">
<span class="input-group-btn">
<button class="btn btn-default" type="button">搜索</button>
</span>
</div>
</div>
</form>
<h6 class="title pull-right">我共加入{% if user_count %}{{ user_count }}{% else %} <h6 class="title pull-right">我共加入{% if user_count %}{{ user_count }}{% else %}
0{% endif %}个矩阵</h6> 0{% endif %}个矩阵</h6>
</ul> </ul>

View File

@ -41,19 +41,25 @@
<div class="row"> <div class="row">
<div class="col-md-8 col-sm-9 col-xs-10"> <div class="col-md-8 col-sm-9 col-xs-10">
<form method="post" <form method="post"
action="{% url 'group-user-create' pk %}" enctype="multipart/form-data">{% csrf_token %} action="{% url 'group-user-create' pk %}"
enctype="multipart/form-data">{% csrf_token %}
<div class="form-group"> <div class="form-group">
<label class="form-label" for="name">矩阵名称</label> <label class="form-label" for="name">矩阵名称</label>
<div class="controls"> <div class="controls">
<input type="text" class="form-control" name="name" disabled value="{{ group }}"> <input type="text" class="form-control" name="name" disabled
value="{{ group }}">
</div> </div>
</div> </div>
<div class="form-group"> <div class="form-group">
<label class="form-label" for="user">管理</label> <label class="form-label" for="user"></label>
<div class="controls"> <div class="controls">
<select class="form-control" name="user"> <select class="form-control" name="user">
{% for u in usee %} {% for u in usee %}
<option value="{{ u.id }}">{{ u.username }}</option> <option value="{{ u.id }}">
{% for i in u.userprofile_set.all %}
{{ i.name }}----{{ u.username }}----{{ i.organization }}
{% endfor %}
</option>
{% endfor %} {% endfor %}
</select> </select>
</div> </div>

View File

@ -23,6 +23,23 @@
<section class="box "> <section class="box ">
<header class="panel_header"> <header class="panel_header">
<h2 class="title pull-left">抖音列表</h2> <h2 class="title pull-left">抖音列表</h2>
<form>
<div class="btn-group col-md-2 title" style="display: inline-block;margin-left: 5%">
<select class="form-control" name="keytype">
<option value="1">新媒体名称</option>
<option value="2">责任主体</option>
<option value="3">行政区划</option>
</select>
</div>
<div class="col-lg-6 title">
<div class="input-group">
<input type="text" class="form-control" placeholder="输入搜索关键字" name="keyword">
<span class="input-group-btn">
<button class="btn btn-default" type="button">搜索</button>
</span>
</div>
</div>
</form>
<h2 class="title pull-right" style="margin-right: 30px">抖音总计:{{ douyin_count }}</h2> <h2 class="title pull-right" style="margin-right: 30px">抖音总计:{{ douyin_count }}</h2>
</header> </header>
<div class="content-body"> <div class="content-body">

View File

@ -23,11 +23,29 @@
<section class="box "> <section class="box ">
<header class="panel_header"> <header class="panel_header">
<h2 class="title pull-left">其他新媒体列表</h2> <h2 class="title pull-left">其他新媒体列表</h2>
<form>
<div class="btn-group col-md-2 title" style="display: inline-block;margin-left: 5%">
<select class="form-control" name="keytype">
<option value="1">新媒体名称</option>
<option value="2">责任主体</option>
<option value="3">行政区划</option>
</select>
</div>
<div class="col-lg-6 title">
<div class="input-group">
<input type="text" class="form-control" placeholder="输入搜索关键字" name="keyword">
<span class="input-group-btn">
<button class="btn btn-default" type="button">搜索</button>
</span>
</div>
</div>
</form>
<h2 class="title pull-right" style="margin-right: 30px">其他新媒体总计:{{ qita_count }}</h2> <h2 class="title pull-right" style="margin-right: 30px">其他新媒体总计:{{ qita_count }}</h2>
</header> </header>
<div class="content-body"> <div class="content-body">
<div class="row"> <div class="row">
<div class="col-md-12 col-sm-12 col-xs-12"> <div class="col-md-12 col-sm-12 col-xs-12">
<table class="table table-hover"> <table class="table table-hover">
<thead> <thead>
<tr> <tr>

View File

@ -23,6 +23,23 @@
<section class="box "> <section class="box ">
<header class="panel_header"> <header class="panel_header">
<h2 class="title pull-left">头条列表</h2> <h2 class="title pull-left">头条列表</h2>
<form>
<div class="btn-group col-md-2 title" style="display: inline-block;margin-left: 5%">
<select class="form-control" name="keytype">
<option value="1">新媒体名称</option>
<option value="2">责任主体</option>
<option value="3">行政区划</option>
</select>
</div>
<div class="col-lg-6 title">
<div class="input-group">
<input type="text" class="form-control" placeholder="输入搜索关键字" name="keyword">
<span class="input-group-btn">
<button class="btn btn-default" type="button">搜索</button>
</span>
</div>
</div>
</form>
<h2 class="title pull-right" style="margin-right: 30px">头条总计:{{ toutiao_count }}</h2> <h2 class="title pull-right" style="margin-right: 30px">头条总计:{{ toutiao_count }}</h2>
</header> </header>
<div class="content-body"> <div class="content-body">

View File

@ -23,6 +23,24 @@
<section class="box "> <section class="box ">
<header class="panel_header"> <header class="panel_header">
<h2 class="title pull-left">微博列表</h2> <h2 class="title pull-left">微博列表</h2>
<form>
<div class="btn-group col-md-2 title" style="display: inline-block;margin-left: 5%">
<select class="form-control" name="keytype">
<option value="1">新媒体名称</option>
<option value="2">责任主体</option>
<option value="3">行政区划</option>
</select>
</div>
<div class="col-lg-6 title">
<div class="input-group">
<input type="text" class="form-control" placeholder="输入搜索关键字" name="keyword">
<span class="input-group-btn">
<button class="btn btn-default" type="button">搜索</button>
</span>
</div>
</div>
</form>
<h2 class="title pull-right" style="margin-right: 30px">微博总计:{{ weibo_count }}</h2> <h2 class="title pull-right" style="margin-right: 30px">微博总计:{{ weibo_count }}</h2>
</header> </header>
<div class="content-body"> <div class="content-body">

View File

@ -23,6 +23,23 @@
<section class="box "> <section class="box ">
<header class="panel_header"> <header class="panel_header">
<h2 class="title pull-left">微信公众号列表</h2> <h2 class="title pull-left">微信公众号列表</h2>
<form>
<div class="btn-group col-md-2 title" style="display: inline-block;margin-left: 5%">
<select class="form-control" name="keytype">
<option value="1">新媒体名称</option>
<option value="2">责任主体</option>
<option value="3">行政区划</option>
</select>
</div>
<div class="col-lg-6 title">
<div class="input-group">
<input type="text" class="form-control" placeholder="输入搜索关键字" name="keyword">
<span class="input-group-btn">
<button class="btn btn-default" type="button">搜索</button>
</span>
</div>
</div>
</form>
<h2 class="title pull-right" style="margin-right: 30px">微信总计:{{ weixin_count }}</h2> <h2 class="title pull-right" style="margin-right: 30px">微信总计:{{ weixin_count }}</h2>
</header> </header>
<div class="content-body"> <div class="content-body">

View File

@ -42,6 +42,27 @@
<section class="box "> <section class="box ">
<header class="panel_header"> <header class="panel_header">
<h2 class="title pull-left">新闻列表</h2> <h2 class="title pull-left">新闻列表</h2>
<form>
<div class="btn-group col-md-2 title" style="display: inline-block;margin-left: 5%">
<select class="form-control" name="keytype">
<option value="1">政策依据</option>
<option value="2">基层动态</option>
<option value="3">外省动态</option>
<option value="4">监测通报</option>
<option value="5">舆情热点</option>
<option value="6">通知</option>
<option value="7">重点新闻</option>
</select>
</div>
<div class="col-lg-6 title">
<div class="input-group">
<input type="text" class="form-control" placeholder="输入搜索关键字" name="keyword">
<span class="input-group-btn">
<button class="btn btn-default" type="button">搜索</button>
</span>
</div>
</div>
</form>
<h2 class="title pull-right" style="margin-right: 30px">新闻总计:{{ news_count }}</h2> <h2 class="title pull-right" style="margin-right: 30px">新闻总计:{{ news_count }}</h2>
{# <div class="actions panel_actions pull-right">#} {# <div class="actions panel_actions pull-right">#}
{# <i class="box_toggle fa fa-chevron-down"></i>#} {# <i class="box_toggle fa fa-chevron-down"></i>#}

View File

@ -42,6 +42,22 @@
<section class="box "> <section class="box ">
<header class="panel_header"> <header class="panel_header">
<h2 class="title pull-left">单位列表</h2> <h2 class="title pull-left">单位列表</h2>
<form>
<div class="btn-group col-md-2 title" style="display: inline-block;margin-left: 5%">
<select class="form-control" name="keytype">
<option value="1">单位名称</option>
<option value="2">行政区划</option>
</select>
</div>
<div class="col-lg-6 title">
<div class="input-group">
<input type="text" class="form-control" placeholder="输入搜索关键字" name="keyword">
<span class="input-group-btn">
<button class="btn btn-default" type="button">搜索</button>
</span>
</div>
</div>
</form>
<h2 class="title pull-right" style="margin-right: 30px">单位总计:{{ organization_count }}</h2> <h2 class="title pull-right" style="margin-right: 30px">单位总计:{{ organization_count }}</h2>
{# <div class="actions panel_actions pull-right">#} {# <div class="actions panel_actions pull-right">#}
{# <i class="box_toggle fa fa-chevron-down"></i>#} {# <i class="box_toggle fa fa-chevron-down"></i>#}
@ -60,7 +76,7 @@
<th style="text-align: center">序号</th> <th style="text-align: center">序号</th>
<th style="text-align: center">图标</th> <th style="text-align: center">图标</th>
<th style="text-align: center">单位名称</th> <th style="text-align: center">单位名称</th>
{# <th style="text-align: center">类型</th>#} {# <th style="text-align: center">类型</th>#}
<th style="text-align: center">行政区划</th> <th style="text-align: center">行政区划</th>
<th style="text-align: center">成员数量</th> <th style="text-align: center">成员数量</th>
<th style="text-align: center">新媒体数量</th> <th style="text-align: center">新媒体数量</th>
@ -75,7 +91,7 @@
src="{{ r.image }}" style="width: 80px;height: 80px;" src="{{ r.image }}" style="width: 80px;height: 80px;"
class="img-circle"></td> class="img-circle"></td>
<td style="vertical-align: middle;text-align: center">{{ r.name }}</td> <td style="vertical-align: middle;text-align: center">{{ r.name }}</td>
{# <td style="vertical-align: middle;text-align: center">{{ r.organizationtype }}</td>#} {# <td style="vertical-align: middle;text-align: center">{{ r.organizationtype }}</td>#}
<td style="vertical-align: middle;text-align: center">{{ r.administrativedivision }}</td> <td style="vertical-align: middle;text-align: center">{{ r.administrativedivision }}</td>
<td style="vertical-align: middle;text-align: center">{{ r.usercount }}</td> <td style="vertical-align: middle;text-align: center">{{ r.usercount }}</td>
<td style="vertical-align: middle;text-align: center">{{ r.mediacount }}</td> <td style="vertical-align: middle;text-align: center">{{ r.mediacount }}</td>

View File

@ -23,6 +23,23 @@
<section class="box "> <section class="box ">
<header class="panel_header"> <header class="panel_header">
<h2 class="title pull-left">成员列表</h2> <h2 class="title pull-left">成员列表</h2>
<form>
<div class="btn-group col-md-2 title" style="display: inline-block;margin-left: 5%">
<select class="form-control" name="keytype">
<option value="1">姓名</option>
<option value="2">单位</option>
<option value="3">行政区划</option>
</select>
</div>
<div class="col-lg-6 title">
<div class="input-group">
<input type="text" class="form-control" placeholder="输入搜索关键字" name="keyword">
<span class="input-group-btn">
<button class="btn btn-default" type="button">搜索</button>
</span>
</div>
</div>
</form>
<h2 class="title pull-right" style="margin-right: 30px">成员总计:{{ user_count }}</h2> <h2 class="title pull-right" style="margin-right: 30px">成员总计:{{ user_count }}</h2>
</header> </header>
<div class="content-body"> <div class="content-body">
@ -45,7 +62,8 @@
{% for u in userallinfo %} {% for u in userallinfo %}
<tr> <tr>
<td style="vertical-align: middle;text-align: center">{{ forloop.counter }}</td> <td style="vertical-align: middle;text-align: center">{{ forloop.counter }}</td>
<td style="text-align: center"><img src="{{ u.image.url }}" style="width: 80px;height: 80px;" <td style="text-align: center"><img src="{{ u.image.url }}"
style="width: 80px;height: 80px;"
class="img-circle"></td> class="img-circle"></td>
<td style="vertical-align: middle;text-align: center">{{ u.name }}</td> <td style="vertical-align: middle;text-align: center">{{ u.name }}</td>
<td style="vertical-align: middle;text-align: center">{{ u.phone }}</td> <td style="vertical-align: middle;text-align: center">{{ u.phone }}</td>

View File

@ -11,6 +11,7 @@ urlpatterns = [
path('group/management/init/', views.group_management_init, name='group-management-management-init'), path('group/management/init/', views.group_management_init, name='group-management-management-init'),
path('group/management/admin/', views.group_management_admin, name='group-management-management-admin'), path('group/management/admin/', views.group_management_admin, name='group-management-management-admin'),
path('group/management/user/', views.group_management_user, name='group-management-management-user'), path('group/management/user/', views.group_management_user, name='group-management-management-user'),
path('group/management/super/', views.group_management_superuser, name='group-management-management-superuser'),
path('group/create/', views.group_create, name='group-management-create'), path('group/create/', views.group_create, name='group-management-create'),
path('group/update/<str:pk>/', views.group_update, name='group-management-update'), path('group/update/<str:pk>/', views.group_update, name='group-management-update'),
path('group/delete/<str:pk>/', views.group_delete, name='group-management-delete'), path('group/delete/<str:pk>/', views.group_delete, name='group-management-delete'),

View File

@ -153,6 +153,8 @@ def user_update(request, pk):
def group_management_init(request): def group_management_init(request):
user = request.user user = request.user
level = Userprofile.objects.get(user_id=user.id).organization.level.level
print(level)
init_count = Group.objects.filter(user_id=user.id).count() init_count = Group.objects.filter(user_id=user.id).count()
# 创建的矩阵 # 创建的矩阵
group_initer = Group.objects.filter(user_id=user.id).order_by('-created') group_initer = Group.objects.filter(user_id=user.id).order_by('-created')
@ -176,13 +178,14 @@ def group_management_init(request):
o1['user_count'] = Group_user.objects.filter(group_id=r_g_i.id).count() o1['user_count'] = Group_user.objects.filter(group_id=r_g_i.id).count()
o1['status'] = r_g_i.status o1['status'] = r_g_i.status
res_g_i.append(o1) res_g_i.append(o1)
return render(request, 'management/group-management-init.html', {'group': group, 'res_g_i': res_g_i,'init_count':init_count}) return render(request, 'management/group-management-init.html', {'group': group, 'res_g_i': res_g_i,'init_count':init_count,'level':level})
@login_required @login_required
def group_management_admin(request): def group_management_admin(request):
# 管理的矩阵 # 管理的矩阵
user = request.user user = request.user
level = Userprofile.objects.get(user_id=user.id).organization.level.level
admin_count = Group_admin.objects.filter(user_id=user.id).count() admin_count = Group_admin.objects.filter(user_id=user.id).count()
group_admin_list = [] group_admin_list = []
for g_a in Group_admin.objects.filter(user_id=user.id).order_by('-created'): for g_a in Group_admin.objects.filter(user_id=user.id).order_by('-created'):
@ -207,13 +210,14 @@ def group_management_admin(request):
o2['user_count'] = Group_user.objects.filter(group_id=r_g_a.id).count() o2['user_count'] = Group_user.objects.filter(group_id=r_g_a.id).count()
o2['status'] = r_g_a.status o2['status'] = r_g_a.status
res_g_a.append(o2) res_g_a.append(o2)
return render(request, 'management/group-management-admin.html', {'group': group, 'res_g_a': res_g_a,'admin_count':admin_count}) return render(request, 'management/group-management-admin.html', {'group': group, 'res_g_a': res_g_a,'admin_count':admin_count,'level':level})
@login_required @login_required
def group_management_user(request): def group_management_user(request):
# 加入的矩阵 # 加入的矩阵
user = request.user user = request.user
level = Userprofile.objects.get(user_id=user.id).organization.level.level
user_count = Group_user.objects.filter(user_id=user.id).count() user_count = Group_user.objects.filter(user_id=user.id).count()
group_user_list = [] group_user_list = []
for g_u in Group_user.objects.filter(user_id=user.id).order_by('-created'): for g_u in Group_user.objects.filter(user_id=user.id).order_by('-created'):
@ -238,7 +242,35 @@ def group_management_user(request):
o3['user_count'] = Group_user.objects.filter(group_id=r_g_u.id).count() o3['user_count'] = Group_user.objects.filter(group_id=r_g_u.id).count()
o3['status'] = r_g_u.status o3['status'] = r_g_u.status
res_g_u.append(o3) res_g_u.append(o3)
return render(request, 'management/group-management-user.html', {'group': group, 'res_g_u': res_g_u,'user_count':user_count}) return render(request, 'management/group-management-user.html', {'group': group, 'res_g_u': res_g_u,'user_count':user_count,'level':level})
@login_required
def group_management_superuser(request):
user = request.user
level = Userprofile.objects.get(user_id=user.id).organization.level.level
count = Group.objects.all().count()
# 创建的矩阵
group = Group.objects.all().order_by('-created')
paginator = Paginator(group, 6)
page = int(request.GET.get('page', 1))
try:
group = paginator.page(page)
except PageNotAnInteger:
group = paginator.page(1)
except EmptyPage:
group = paginator.page(paginator.num_pages)
res_g_i = []
for r_g_i in group:
o1 = dict()
o1['id'] = str(r_g_i.id)
o1['image'] = r_g_i.image.url
o1['name'] = r_g_i.name
o1['type'] = r_g_i.type
o1['admin_count'] = Group_admin.objects.filter(group_id=r_g_i.id).count()
o1['user_count'] = Group_user.objects.filter(group_id=r_g_i.id).count()
o1['status'] = r_g_i.status
res_g_i.append(o1)
return render(request, 'management/group-management-superuser.html', {'group': group, 'res_g_i': res_g_i,'count':count,'level':level})
@login_required @login_required
@ -979,6 +1011,7 @@ def newmedia_management_edit_weixin(request):
for w in weixin: for w in weixin:
o = dict() o = dict()
o['id'] = str(w.id) o['id'] = str(w.id)
if w.image:
o['image'] = w.image o['image'] = w.image
o['code'] = w.code o['code'] = w.code
o['weixinid'] = w.weixinid o['weixinid'] = w.weixinid