# -*- coding: utf-8 -*-
from django.http import HttpResponse
from django.shortcuts import render, redirect
from django.utils.translation import ugettext as _
from django.contrib.auth.models import User
from models import Job, UserJob, UserProfile
import json
import random
from django.contrib import auth
import datetime
# Create your views here.
# 登录
def login(request):
if request.method == 'GET':
return render(request, 'login.html')
else:
username = request.POST['username']
password = request.POST['password']
# user = User.objects.filter(username=username).first()
user = auth.authenticate(username=username, password=password)
if user is not None and user.is_active:
auth.login(request, user)
else:
error_msg = {"error_msg": "用户名或密码错误"}
return render(request,'login.html', error_msg)
# return redirect('/test/master/login')
# 保存用户档案
if not user.user_profile.all():
user_profile = UserProfile()
user_profile.name = user.username
else:
user_profile = user.user_profile.all()[0]
user_profile.user = user
user_profile.save()
# 将用户档案保存到会话
# request.session["user_profile"] = user_profile
request.session["user_profile_name"] = user_profile.name
# return render(request, 'test2/arrange_job.html')
return redirect('/master/arrange')
def logout(request):
auth.logout(request)
# Redirect to a success page.
return redirect("/master/login/")
# 安排岗位
def arrange(request):
# 获取当天当前安排的人员岗位
result_dict = _get_user_job_current_day()
# profile = request.user.user_profile.all()[0]
# current_user = {}
# current_user["user_profile_name"] = profile.name
return render(request, 'master/arrange_job.html', result_dict)
# 获取所有用户
def get_users(request):
try:
users = User.objects.all()
result_dict = {}
user_list = []
for user in users:
user_dict = {}
# user_list.append(user.username)
if 'root' == user.username or 'admin' == user.username:
continue
user_dict["id"] = user.id
# 保存用户档案
if not user.user_profile.all():
user_profile = UserProfile()
user_profile.name = user.name
else:
user_profile = user.user_profile.all()[0]
user_profile.user = user
user_profile.save()
profile = user.user_profile.all()[0]
user_dict["name"] = profile.name
user_list.append(user_dict)
result_dict["user_list"] = user_list
result_dict["status"] = 0
except Exception as e:
result_dict["status"] = -1
print e.message
return HttpResponse(json.dumps(result_dict))
# 获取所有岗位
def get_jobs(request):
try:
jobs = Job.objects.all()
result_dict = {}
job_list = []
for job in jobs:
job_dict = {}
job_dict["id"] = job.id
job_dict["jobname"] = job.job_name
job_list.append(job_dict)
result_dict["status"] = 0
result_dict["job_list"] = job_list
except Exception as e:
result_dict["status"] = -1
print e.message
return HttpResponse(json.dumps(result_dict))
# 随机分配岗位
def random_arrange_job(request):
# 避免F5刷新
# _aviodF5Refresh(request)
if 'submitTime' in request.session:
timestamp_session = request.session['submitTime']
timestamp_request = request.POST['avoidF5Submit']
if (timestamp_request == timestamp_session):
# error_msg_dict = {"error_msg": _(u'请勿按F5刷新!')}
result_dict = _get_user_job_current_day()
result_dict["error_msg"] =u'请勿按F5刷新!'
return render(request, 'master/arrange_job.html', result_dict)
else:
request.session['submitTime'] = request.POST['avoidF5Submit']
else:
request.session['submitTime'] = request.POST['avoidF5Submit']
# 勾选的人的数量和编辑框中选的工作岗位的数量必须是相等的
# 将勾选的所有人放到一个list里面
body_content = request.POST
# print body_content
user_id_list = []
job_id_list = []
job_count = 0
for key in body_content.keys():
if key.startswith("user"):
user_id_list.append(key.split('_')[1])
elif key.startswith("job"):
job_id_list.append(key.split('_')[1])
if '' != body_content.get(key):
job_count += int(body_content.get(key))
# job_count += int(key.split('_')[1])
# job_id_count_list = []
# print user_id_list
# print job_id_list
user_len = len(user_id_list)
# 保存勾选用户的id的list并使这个list里边的id顺序是随机的
random_user_id_list = []
random_user_id_list_repeat = []
random_user_id_list = _get_random_user_id_list(user_id_list, job_count, user_len)
print random_user_id_list
# while (len(random_user_id_list) != user_len):
# random_num = random.choice(user_id_list)
# if random_num not in random_user_id_list:
# random_user_id_list.append(random_num)
# if job_count > user_len:
# repeat_count = job_count - user_len
# while (len(random_user_id_list_repeat) != repeat_count):
# random_num = random.choice(user_id_list)
# if random_num not in random_user_id_list_repeat:
# random_user_id_list_repeat.append(random_num)
# random_user_id_list.extend(random_user_id_list_repeat)
_delete_current_day_user_job()
# 删除当天重复安排的工作 即,一天只能安排一次 后一次的安排会把前面安排的覆盖掉
# user_job_exists_list = UserJob.objects.filter(arrange_time__contains=datetime.datetime.now().strftime("%Y-%m-%d"))
# for user_job_item in user_job_exists_list:
# user_job_item.delete()
# 保存安排的用户岗位到UserJob表
_save_user_job(body_content, random_user_id_list)
# 获取当天当前安排的人员岗位
result_dict = _get_user_job_current_day()
return render(request, 'master/arrange_job.html', context=result_dict)
# return redirect('/test/arrange')
# 获取随机存放的user_id列表
def _get_random_user_id_list(user_id_list, job_count, user_len):
if job_count > user_len*2:
raise Exception
random_user_id_list_repeat = []
random_user_id_list = _get_user_ids(user_id_list, user_len)
if job_count > user_len:
repeat_count = job_count - user_len
random_user_id_list_repeat = _get_user_ids(user_id_list, repeat_count)
# while (len(random_user_id_list) != user_len):
# random_num = random.choice(user_id_list)
# if random_num not in random_user_id_list:
# random_user_id_list.append(random_num)
# if job_count > user_len:
# repeat_count = job_count - user_len
# while (len(random_user_id_list_repeat) != repeat_count):
# random_num = random.choice(user_id_list)
# if random_num not in random_user_id_list_repeat:
# random_user_id_list_repeat.append(random_num)
random_user_id_list.extend(random_user_id_list_repeat)
return random_user_id_list
def _get_user_ids(user_id_list, _len):
random_user_id_list = []
while (len(random_user_id_list) != _len):
random_num = random.choice(user_id_list)
if random_num not in random_user_id_list:
random_user_id_list.append(random_num)
return random_user_id_list
# 删除当天重复安排的岗位
def _delete_current_day_user_job():
user_job_exists_list = UserJob.objects.filter(arrange_time__contains=dateti
没有合适的资源?快使用搜索试试~ 我知道了~
随机分配岗位的一个小程序
共95个文件
png:23个
py:16个
pyc:14个
需积分: 35 14 下载量 95 浏览量
2016-02-20
19:33:08
上传
评论 2
收藏 843KB RAR 举报
温馨提示
随机分配岗位的一个小程序随机分配岗位的一个小程序
资源推荐
资源详情
资源评论
收起资源包目录
arrangejobsite_1.rar (95个子文件)
arrangejobsite
templates
master
arrange_job_bak.html 8KB
arrange_job.html 8KB
login.html 3KB
middleware
__init__.pyc 144B
__init__.py 0B
I_AuthenticationMiddleware.py 483B
I_AuthenticationMiddleware.pyc 963B
static
css
cas.css 7KB
login.css 5KB
bootstrap
css
bootstrap-theme.css 22KB
bootstrap.css.map 371KB
bootstrap.min.css 114KB
bootstrap.css 138KB
bootstrap-theme.min.css 19KB
bootstrap-theme.css.map 42KB
fonts
glyphicons-halflings-regular.woff 23KB
glyphicons-halflings-regular.woff2 18KB
glyphicons-halflings-regular.ttf 44KB
glyphicons-halflings-regular.eot 20KB
glyphicons-halflings-regular.svg 106KB
js
npm.js 484B
bootstrap.min.js 35KB
bootstrap.js 65KB
images
question.png 4KB
small_customs.png 6KB
login_pic.png 27KB
cloudEye_logo2.png 7KB
touxiang.png 422B
mima.png 429B
jquery
jquery-2.1.3.min.js 127KB
js
images - 副本
cloudEye_logo.png 7KB
login_pic_1.jpg 40KB
login_pic_5.png 27KB
cloudEye_logo2 - 副本.png 8KB
cloudEye_logo21.png 4KB
ja-sig-logo.gif 1KB
green.gif 43B
key-point_bl.gif 102B
question.png 4KB
error.gif 1KB
info.gif 980B
login_picx.png 66KB
login_pic_2.png 39KB
login_pic_3.jpg 39KB
small_customs.png 6KB
login_pic - 副本 (2).png 27KB
red.gif 43B
logind_pic.png 80KB
background1.png 20KB
confirm.gif 958B
login_pic_1.psd 330KB
login_pic.png 27KB
login_pic - 副本.jpg 37KB
key-point_br.gif 186B
cloudEye_logo2.png 7KB
key-point_tl.gif 103B
small_customs - 副本.png 6KB
login_pic - 副本.png 27KB
key-point_tr.gif 105B
touxiang.png 422B
mima.png 429B
db.sqlite3 50KB
.idea
misc.xml 825B
vcs.xml 180B
.name 14B
modules.xml 280B
arrangejobsite.iml 940B
encodings.xml 819B
workspace.xml 34KB
manage.py 257B
arrangejob
models.py 1KB
apps.py 894B
__init__.pyc 210B
urls.pyc 564B
__init__.py 79B
migrations
__init__.pyc 155B
0001_initial.pyc 2KB
__init__.py 0B
0001_initial.py 2KB
views.pyc 7KB
apps.pyc 1KB
views.py 11KB
admin.py 548B
models.pyc 2KB
tests.py 60B
admin.pyc 898B
urls.py 485B
arrangejobsite
__init__.pyc 148B
urls.pyc 1KB
wsgi.pyc 619B
wsgi.py 405B
__init__.py 0B
settings.py 3KB
settings.pyc 3KB
urls.py 896B
共 95 条
- 1
资源评论
wang725
- 粉丝: 65
- 资源: 69
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 我也不知道是啥(数据来源:bilibili基因学苑)
- 基于SW6208芯片USB Type-C接口 充电宝控制板硬件(原理图+PCB)工程文件.zip
- 通过dht11传感器采集温度与湿度,并将数据写入graphite carbon中,可在graphite中查看数据
- 数据库课程设计实战.zip
- LIBSVM支持向量机库安装包
- RTD2270L设计LCD液晶显示器VGA转LVDS接口驱动板硬件PDF原理图+PADS pcb图文件.zip
- 在PyCharm中配置Python环境步骤
- 超简约在线生成短网址源码带后台
- 基于esp8266和dht11温湿度传感器制作的远程温湿度监控程序,温度、湿度通过mqtt协议方式上传OneNet平台
- 人染色体长度表(数据来自bilibili:基因学苑)
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功