123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614 |
- from django.contrib.auth.hashers import make_password, check_password
- from .forms import RegForm, CheckInForm, ForgetPSWForm
- from .models import Organizer, CheckIn, Item, UserContent
- from .functions import *
- from Niko.settings import PRODUCTION_ENVIRONMENT
- from .setting import USER_UPLOAD_URL_PREFIX, QR_CODE_URL_PREFIX
- # Create your views here.
- def checkIn(request, url):
- # 用户注册界面
- if url == 'register':
- if request.method == 'POST':
- regForm = RegForm(request.POST)
- if regForm.is_valid():
- organizer = Organizer
- organizer.username = regForm.cleaned_data['username'].lower().strip()
- organizer.nickname = regForm.cleaned_data['nickname'].lower().strip()
- organizer.email = regForm.cleaned_data['email'].lower().strip()
- organizer.mobile = regForm.cleaned_data['mobile']
- organizer.password = make_password(regForm.cleaned_data['psw1'])
- organizer.photo = ''
- # 获取注册的IP地址
- try:
- organizer.registerIP = request.META['HTTP_X_FORWARDED_FOR']
- except:
- organizer.registerIP = request.META['REMOTE_ADDR']
- organizer.createNew(organizer)
- organizer = Organizer.searchByUsername(organizer)
- request.session['loginUser'] = organizer.username
- request.session['loginID'] = organizer.ID
- request.session['loginNickname'] = organizer.nickname
- return render(request, 'checkIn/directPage.html', {'alertMsg': '用户创建成功。', 'dirLink': '/checkIn/main'})
- else:
- return render(request, 'checkIn/register.html', {'registerForm': regForm})
- else:
- return render(request, 'checkIn/register.html', {'registerForm': RegForm})
- if url == 'login':
- # 用户登录页面
- if request.method == 'POST':
- organizer = Organizer
- organizer.username = request.POST['username'].strip().lower()
- organizer = Organizer.searchByUsername(organizer)
- if organizer == None:
- return render(request, 'checkIn/directPage.html',
- {'alertMsg': '用户名不存在。', 'dirLink': '/checkIn/login/'})
- if check_password(request.POST['password'], organizer.password):
- request.session['loginUser'] = organizer.username
- request.session['loginID'] = organizer.ID
- request.session['loginNickname'] = organizer.nickname
- return render(request, 'checkIn/directPage.html', {'alertMsg': '登录成功。', 'dirLink': '/checkIn/main/'})
- else:
- return render(request, 'checkIn/directPage.html',
- {'alertMsg': '用户名或者密码错误。', 'dirLink': '/checkIn/login/'})
- else:
- if getSession(request, 'loginID'): # 如果检测到用户已经登陆就直接跳转
- return HttpResponseRedirect('/checkIn/main')
- else:
- return render(request, 'checkIn/login.html')
- # 忘记密码
- if url == 'forgetPSW':
- if checkSession(request, 'loginUser') and checkSession(request, 'ID'):
- return render(request, 'checkIn/directPage.html', {'alertMsg': '你已经登录了。', 'dirLink': '/'})
- if request.method == 'POST':
- organizer = Organizer
- form = ForgetPSWForm(request.POST)
- if form.is_valid():
- organizer.username = form.cleaned_data['username']
- organizer = Organizer.searchByUsername(organizer)
- if organizer.mobile == form.cleaned_data['mobile']:
- organizer.password = make_password('qaz123')
- Organizer.updateByID(organizer)
- return render(request, 'checkIn/directPage.html',
- {'alertMsg': '你的密码已经更改为 qaz123。', 'dirLink': '/checkIn/login'})
- else:
- return render(request, 'checkIn/forgetPSW.html', {'forgetPSWForm': form, 'alert': '你的手机号码与注册的不符。'})
- else:
- del organizer
- return render(request, 'checkIn/forgetPSW.html', {'forgetPSWForm': form})
- # 正常渲染页面
- else:
- form = ForgetPSWForm()
- return render(request, 'checkIn/forgetPSW.html', {'forgetPSWForm': form})
- if url == 'main':
- # 用户登陆后的页面
- if not checkLoginUser(request):
- return render(request, 'checkIn/directPage.html', {'alertMsg': '登录错误。', 'dirLink': '/checkIn/logout'})
- checkIn = CheckIn
- checkIn.o_ID = getSession(request, 'loginID')
- existingList = CheckIn.getExistingList(checkIn) # 获取名下的checkIn集合
- nickname = request.session['loginNickname']
- return render(request, 'checkIn/main.html', {'existingList': existingList, 'nickname': nickname})
- if url == 'newCheckIn':
- # 用户创建新的CheckIn项目
- if not checkLoginUser(request):
- return render(request, 'checkIn/directPage.html', {'alertMsg': '请重新登录。', 'dirLink': '/'})
- checkIn = CheckIn
- if request.method == 'POST':
- form = CheckInForm(request.POST)
- if form.is_valid():
- if request.GET.get('ID'): # 如果是更新话,先读取原始数据
- checkIn.ID = request.GET['ID']
- checkIn = CheckIn.searchByID(checkIn)
- if checkIn == None:
- return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
- checkIn.startTime = form.cleaned_data['startTime']
- checkIn.endTime = form.cleaned_data['endTime']
- checkIn.o_ID = request.session['loginID']
- checkIn.description = form.cleaned_data['description']
- checkIn.maxNum = form.cleaned_data['maxNum']
- # checkIn.creatorConfirm = form.cleaned_data['creatorConfirm']
- # checkIn.captcha = form.cleaned_data['captcha']
- if request.GET.get('ID'):
- # 如果是更新话,就能获取check In ID,然后调用这一段。
- CheckIn.updateByID(checkIn)
- return HttpResponseRedirect('/checkIn/checkInDetail/?ID=%s' % (checkIn.ID))
- else:
- # 如果是新建的话,GET里面没有ID
- c_ID = CheckIn.createNew(checkIn)
- if c_ID == 0: # 检测到重名
- alert = '你创建的活动重名了。'
- return render(request, 'checkIn/newCheckIn.html', {'form': form, 'alert': alert})
- else:
- return HttpResponseRedirect('/checkIn/newItems/?ID=%s' % (c_ID))
- # 普通打开页面,不是POST
- if request.GET.get('ID'):
- # 如果GET来ID数据的话,就填充表格,修改原有数据
- checkIn.ID = request.GET['ID']
- checkIn = CheckIn.searchByID(checkIn)
- if checkIn == None:
- return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
- if (not checkCorrectO_ID(request, checkIn.o_ID)) or checkIn == None:
- return render(request, 'checkIn/directPage.html',
- {'alertMsg': 'c_ID有错误,请重新登录。', 'dirLink': '/checkIn/logout'})
- if not checkIn:
- return render(request, 'checkIn/directPage.html', {'alertMsg': '这个ID不存在。', 'dirLink': '/'})
- else:
- form = CheckInForm
- data = {'startTime': str(checkIn.startTime), 'description': checkIn.description.strip(),
- 'o_ID': checkIn.o_ID}
- if checkIn.endTime:
- data['endTime'] = str(checkIn.endTime)
- data['maxNum'] = checkIn.maxNum
- data['creatorConfirm'] = checkIn.creatorConfirm
- data['captcha'] = checkIn.captcha
- form = CheckInForm(data)
- return render(request, 'checkIn/newCheckIn.html', {'form': form})
- else: # 创建新的checkIn
- # data = {'o_ID': request.session.get('loginID')}
- form = CheckInForm()
- # confirmList = [('0', '无需验证'), ('1', '点击确认')]
- # form.declared_fields['creatorConfirm'].choices = confirmList
- return render(request, 'checkIn/newCheckIn.html', {'form': form})
- if url == 'newItems':
- # 用户在新的checkIn项目下添加活动内容
- if not checkLoginUser(request):
- return render(request, 'checkIn/directPage.html', {'alertMsg': '请重新登录。', 'dirLink': '/'})
- item = Item
- if not checkGET(request, 'ID'):
- return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
- item.c_ID = request.GET['ID']
- checkIn = CheckIn
- checkIn.ID = item.c_ID
- checkIn = CheckIn.searchByID(checkIn)
- if checkIn is None:
- return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
- if (not checkCorrectO_ID(request, checkIn.o_ID)) or checkIn is None:
- return render(request, 'checkIn/directPage.html',
- {'alertMsg': 'c_ID有错误,请重新登录。', 'dirLink': '/checkIn/logout'})
- if request.method == 'POST':
- # 新建条目
- item.o_ID = getSession(request, 'loginID')
- checkIn = CheckIn()
- checkIn.ID = item.c_ID
- checkIn = CheckIn.searchByID(checkIn)
- item.c_description = checkIn.description.strip()
- item.description = request.POST['description'].strip()
- # 检验重名的Item
- if Item.sameItem(item):
- return render(request, 'checkIn/directPage.html',
- {'alertMsg': '重名了', 'dirLink': '/checkIn/newItems'})
- item.type = request.POST['type']
- if checkPOST(request, 'uniqueItem'):
- item.unique = True
- else:
- item.unique = False
- if checkPOST(request, 'reservedFlag'):
- item.reservedFlag = True
- item.reservedContent = request.POST['reservedContent'].strip()
- else:
- item.reservedFlag = False
- item.reservedContent = ''
- if item.type in ['4', '5', '6']: # 如果是单选选项需要在选项数据库里面输入
- item.itemSelection = request.POST['itemSelection'].strip()
- # 验证完成,创建item
- Item.createNew(item)
- existItemList = Item.searchByC_ID(item)
- return render(request, 'checkIn/newItems.html', {'existItemList': existItemList})
- else:
- existItemList = Item.searchByC_ID(item)
- return render(request, 'checkIn/newItems.html',
- {'existItemList': existItemList, 'checkInDesc': checkIn.description})
- if url == 'logout':
- request.session.clear()
- return render(request, 'checkIn/directPage.html', {'alertMsg': '成功退出。', 'dirLink': '/'})
- if url == 'checkInDetail':
- checkIn = CheckIn
- if not checkGET(request, 'ID'):
- return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
- checkIn.ID = request.GET['ID']
- checkIn = CheckIn.searchByID(checkIn)
- if checkIn is None:
- return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
- if (not checkCorrectO_ID(request, checkIn.o_ID)) or checkIn is None:
- return render(request, 'checkIn/directPage.html',
- {'alertMsg': 'c_ID有错误,请重新登录。', 'dirLink': '/checkIn/logout'})
- request.session['checkInDesc'] = checkIn.description
- request.session['checkInID'] = checkIn.ID
- return render(request, 'checkIn/checkInDetail.html', {'checkIn': checkIn})
- # 更新item
- if url == 'itemUpdate':
- item = Item
- # 提交表单后更新数据
- if request.method == 'POST':
- # 读取item数据
- if not checkGET(request, 'ID'):
- return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
- item.ID = request.GET['ID']
- item = Item.searchByID(item)
- item.description = request.POST['description'].strip()
- item.type = request.POST['type']
- item.itemSelection = request.POST['itemSelection']
- if checkPOST(request, 'uniqueItem'):
- item.unique = True
- else:
- item.unique = False
- if checkPOST(request, 'reservedFlag'):
- item.reservedFlag = True
- item.reservedContent = request.POST['reservedContent'].strip()
- else:
- item.reservedFlag = False
- item.reservedContent = ''
- # 更新数据
- Item.updateItemByID(item)
- return HttpResponseRedirect('/checkIn/newItems/?ID=%s' % (item.c_ID))
- # 非POST
- if request.method == 'GET':
- try:
- if not checkGET(request, 'ID'):
- return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
- item.ID = request.GET['ID']
- item = Item.searchByID(item)
- if (not checkCorrectO_ID(request, item.o_ID)) or item == '':
- return render(request, 'checkIn/directPage.html',
- {'alertMsg': 'c_ID有错误,请重新登录。', 'dirLink': '/checkIn/logout'})
- return render(request, 'checkIn/itemUpdate.html', {'item': item})
- except Exception as e:
- print(e)
- return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
- # 更新用户资料
- if url == 'updateInfo':
- organizer = Organizer
- if not checkSession(request, 'loginID'):
- return render(request, 'checkIn/directPage.html', {'alertMsg': '你还没有登录。', 'dirLink': '/'})
- organizer.ID = getSession(request, 'loginID')
- organizer = Organizer.searchByID(organizer)
- if request.method == 'POST':
- form = RegForm(request.POST)
- form.fields['psw1'].required = False
- form.fields['psw2'].required = False
- form.fields['username'].widget.attrs['readonly'] = 'readonly'
- if form.is_valid():
- if form.cleaned_data['psw1'] is not None:
- organizer.password = make_password(form.cleaned_data['psw1'])
- organizer.nickname = form.cleaned_data['nickname']
- organizer.mobile = form.cleaned_data['mobile']
- organizer.email = form.cleaned_data['email']
- Organizer.updateByID(organizer)
- return HttpResponseRedirect('/checkIn/main')
- else:
- return render(request, 'checkIn/updateInfo.html', {'form': form})
- else:
- form = RegForm(initial={'username': organizer.username, 'nickname': organizer.nickname,
- 'email': organizer.email, 'mobile': organizer.mobile,
- 'updateFlag': 'update', 'originalMobile': organizer.mobile})
- form.fields['psw1'].required = False
- form.fields['psw2'].required = False
- form.fields['username'].widget.attrs['readonly'] = 'readonly'
- return render(request, 'checkIn/updateInfo.html', {'form': form})
- # 生成二维码,并准备发布
- if url == 'public':
- checkIn = CheckIn
- if not checkGET(request, 'ID'):
- return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
- checkIn.ID = request.GET['ID']
- checkIn = CheckIn.searchByID(checkIn)
- if checkIn == None:
- return render(request, 'checkIn/directPage.html', {'alertMsg': '这个ID不存在。', 'dirLink': '/'})
- else:
- scheme = request.scheme
- host = request.get_host()
- import qrcode
- qr = qrcode.QRCode(version=1, error_correction=qrcode.constants.ERROR_CORRECT_M, box_size=10, border=1)
- url = '%s://%s/checkIn/user/checkIn/?ID=%s' % (scheme, host, checkIn.ID)
- qr.add_data(url)
- qr.make(fit=True)
- img = qr.make_image()
- import os
- BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
- imgLoc = '%s\\checkIn\\static\\media\\qrcode\\c_ID_%s.png' % (BASE_DIR, checkIn.ID)
- img.save(imgLoc)
- if PRODUCTION_ENVIRONMENT:
- from .setting import QR_CODE_URL_PREFIX
- qrcode_prefix = QR_CODE_URL_PREFIX
- else:
- qrcode_prefix = '/static/media/qrcode/'
- img_url = qrcode_prefix + 'c_ID_{}.png'.format(checkIn.ID) # 需要在服务器上添加checkIn_media为静态目录
- status = {}
- status['code'] = checkIn.status
- if status['code'] == 'draft':
- status['desc'] = '准备中'
- elif status['code'] == 'active':
- status['desc'] = '进行中'
- elif status['code'] == 'pause':
- status['desc'] = '暂停'
- return render(request, 'checkIn/public.html',
- {'url': url, 'image': img_url, 'c_ID': checkIn.ID, 'status': status,
- 'description': checkIn.description})
- # 组织者查看活动记录
- if url == 'checkInStatus':
- checkIn = CheckIn
- checkInResult = UserContent
- if not checkGET(request, 'ID'):
- return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
- checkIn.ID = request.GET['ID']
- checkIn = CheckIn.searchByID(checkIn)
- if checkIn == None:
- return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
- # 验证checkIn 用户和登录用户是否一致。
- if (not checkCorrectO_ID(request, checkIn.o_ID)) or checkIn == None:
- return render(request, 'checkIn/directPage.html',
- {'alertMsg': 'c_ID有错误,请重新登录。', 'dirLink': '/checkIn/logout'})
- checkInResult.c_ID = checkIn.ID
- result = UserContent.getContentList(checkInResult)
- # result = mongoSearchByID(checkIn.ID)
- result2 = None
- keys = None
- types_in_CheckIn = Item.get_types_by_cID_asc(checkIn.ID)
- types = []
- for t in types_in_CheckIn:
- types.append(t['type'])
- if len(result) != 0:
- keys = list(eval(result[0]['content']).keys())
- keys_iterator = iter(keys)
- result2 = []
- for x in result:
- single_line_result = list(eval(x['content']).values())
- i = 0
- single_line_result2 = []
- while i < len(single_line_result):
- single_cell_result = {'value': single_line_result[i], 'type': types[i]}
- single_line_result2.append(single_cell_result)
- i += 1
- result2.append(single_line_result2)
- file_type_list = [6, 7]
- non_file_type_list = [0, 1, 2, 3, 4, 5]
- url_prefix = USER_UPLOAD_URL_PREFIX
- if not PRODUCTION_ENVIRONMENT:
- url_prefix = '/static/media/user_upload/'
- return render(request, 'checkIn/checkInStatus.html',
- {'result': result2, 'keys': keys, 'c_ID': checkIn.ID, 'isFile': file_type_list,
- 'isNotFile': non_file_type_list, 'url_prefix': url_prefix})
- # 下载CSV
- if url == 'getCSV':
- checkIn = CheckIn
- checkInResult = UserContent
- if not checkGET(request, 'c_ID'):
- return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
- checkIn.ID = request.GET['c_ID']
- checkIn = CheckIn.searchByID(checkIn)
- if checkIn is None:
- return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
- # 验证checkIn 用户和登录用户是否一致。
- if (not checkCorrectO_ID(request, checkIn.o_ID)) or checkIn is None:
- return render(request, 'checkIn/directPage.html',
- {'alertMsg': 'c_ID有错误,请重新登录。', 'dirLink': '/checkIn/logout'})
- # 获取数据,生成response
- response = HttpResponse(content_type='text/csv;charset=ANSI')
- response['Content-Disposition'] = 'attachment; filename="checkIn_%s.csv"' % (checkIn.ID)
- import csv
- writer = csv.writer(response)
- checkInResult.c_ID = checkIn.ID
- result = UserContent.getContentList(checkInResult)
- types_in_CheckIn = Item.get_types_by_cID_asc(checkIn.ID)
- types = []
- for t in types_in_CheckIn:
- types.append(t['type'])
- file_type_list = [6, 7]
- non_file_type_list = [0, 1, 2, 3, 4, 5]
- url_prefix = USER_UPLOAD_URL_PREFIX
- if not PRODUCTION_ENVIRONMENT:
- url_prefix = '/static/media/user_upload/'
- # result = mongoSearchByID(checkIn.ID)
- keys = eval(result[0]['content']).keys()
- writer.writerow(keys)
- # result2 = []
- for x in result:
- record = eval(x['content']).values()
- record_list = list(record)
- i = 0
- while i < len(types):
- if types[i] in file_type_list:
- record_list[i] = 'http://' + request.get_host() + url_prefix + record_list[i]
- else:
- # 添加一个tab,用来避免excel打开身份证号码最后几位显示为0的问题
- record_list[i] = '\t' + record_list[i]
- i += 1
- writer.writerow(record_list)
- return response
- # 更改活动状态
- if url == 'statusChange':
- checkIn = CheckIn
- if not checkGET(request, 'status'):
- return render(request, 'checkIn/directPage.html', {'alertMsg': 'status错误', 'dirLink': '/'})
- if not checkGET(request, 'c_ID'):
- return render(request, 'checkIn/directPage.html',
- {'alertMsg': '没有输入cID或者cID错误', 'dirLink': '/checkIn/logout'})
- checkIn.ID = request.GET['c_ID']
- checkIn = CheckIn.searchByID(checkIn)
- if checkIn == None:
- return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
- allowedStatus = {'draft': '准备中', 'active': '进行中', 'pause': '暂停'}
- if request.GET['status'] in allowedStatus.keys():
- # 判断当前c_ID下item是否为空
- item = Item()
- item.c_ID = request.GET['c_ID']
- item = Item.searchByC_ID(item)
- if len(item) == 0:
- return render(request, 'checkIn/directPage.html', {'alertMsg': '项目收集信息为空,请添加至少一项。',
- 'dirLink': '/checkIn/checkInDetail/?ID=%s' % (
- checkIn.ID)})
- else:
- checkIn.status = request.GET['status']
- CheckIn.updateByID(checkIn)
- statusDesc = '反馈收集已经更改成%s状态了' % (allowedStatus[checkIn.status])
- return render(request, 'checkIn/directPage.html',
- {'alertMsg': statusDesc, 'dirLink': '/checkIn/public/?ID=%s' % (checkIn.ID)})
- else:
- return render(request, 'checkIn/directPage.html', {'alertMsg': '参数错误', 'dirLink': '/checkIn/logout'})
- # 删除checkIn
- if url == 'deleteCheckIn':
- checkIn = CheckIn()
- if not checkGET(request, 'c_ID'):
- return render(request, 'checkIn/directPage.html',
- {'alertMsg': '没有输入cID或者cID错误', 'dirLink': '/checkIn/logout'})
- checkIn.ID = request.GET['c_ID']
- checkIn = CheckIn.searchByID(checkIn)
- if checkIn is None:
- return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
- if (not checkCorrectO_ID(request, checkIn.o_ID)) or checkIn is None:
- return render(request, 'checkIn/directPage.html',
- {'alertMsg': 'c_ID有错误,请重新登录。', 'dirLink': '/checkIn/logout'})
- checkIn.status = 'delete'
- CheckIn.updateByID(checkIn)
- return HttpResponseRedirect('/checkIn/main')
- # 删除Item
- if url == 'deleteItem':
- if not checkGET(request, 'itemID'):
- return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入itemID', 'dirLink': '/'})
- item = Item
- item.ID = request.GET.get('itemID')
- item = Item.searchByID(item)
- c_ID = item.c_ID
- if (not checkCorrectO_ID(request, item.o_ID)) or item == None:
- return render(request, 'checkIn/directPage.html',
- {'alertMsg': 'c_ID有错误,请重新登录。', 'dirLink': '/checkIn/logout'})
- if Item.deleteByID(item):
- return HttpResponseRedirect('/checkIn/newItems/?ID=%s' % (c_ID))
- else:
- return HttpResponse('系统错误。')
- # 删除活动数据
- if url == "deleteContent":
- if not checkGET(request, 'c_ID'):
- return render(request, 'checkIn/directPage.html',
- {'alertMsg': '没有输入cID或者cID错误', 'dirLink': '/checkIn/logout'})
- # 判断是不是本人的checkIn
- checkIn = CheckIn()
- checkIn.ID = request.GET['c_ID']
- checkIn = CheckIn.searchByID(checkIn)
- if checkIn == None:
- return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
- if checkIn.o_ID != request.session['loginID']:
- del checkIn
- return render(request, 'checkIn/directPage.html', {'alertMsg': '非本人的活动项目!', 'dirLink': '/checkIn/logout'})
- userContent = UserContent()
- userContent.c_ID = request.GET['c_ID']
- if UserContent.clearByC_ID(userContent):
- checkIn.status = 'draft' # 重置checkIn的状态为Draft
- CheckIn.updateByID(checkIn)
- del checkIn
- del userContent
- return HttpResponseRedirect('/checkIn/checkInDetail/?ID=%s' % (request.GET['c_ID']))
- # 打印版本
- if url == 'print':
- checkIn = CheckIn
- if not checkGET(request, 'c_ID'):
- return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
- checkIn.ID = request.GET['c_ID']
- checkIn = CheckIn.searchByID(checkIn)
- if checkIn == None:
- return render(request, 'checkIn/directPage.html', {'alertMsg': '这个ID不存在。', 'dirLink': '/'})
- else:
- if not PRODUCTION_ENVIRONMENT:
- qrcode_prefix = '/static/media/qrcode/'
- else:
- from .setting import QR_CODE_URL_PREFIX
- qrcode_prefix = QR_CODE_URL_PREFIX
- img_url = qrcode_prefix + 'c_ID_%s.png' % (checkIn.ID) # 需要在服务器上添加checkIn_media为静态目录
- return render(request, 'checkIn/print.html',
- {'url': url, 'image': img_url, 'description': checkIn.description})
- # 排序移动
- if url == 'itemMove':
- item = Item
- item.ID = request.POST.get('item_id')
- original_item_id = request.POST.get('item_id')
- item = item.searchByID(item)
- items = item.search_by_checkIn(item.c_ID)
- for i, item in enumerate(items):
- print(i)
- # print(item.timestamp)
- if item.ID == int(original_item_id): # 找到目标
- if request.POST.get('direction') == 'up': # 如果是向上替换
- if i == 0:
- break # 如果排序第一个,就跳出
- else:
- target_item = Item.search_by_ID(items[i-1].ID)
- origin_item = Item.search_by_ID(items[i].ID)
- temp_timestamp = origin_item.timestamp
- origin_item.timestamp = target_item.timestamp
- target_item.timestamp = temp_timestamp
- origin_item.save()
- target_item.save()
- break
- if request.POST.get('direction') == 'down': # 如果是向上替换
- if i == len(items)-1:
- break # 如果排序最后一个,就跳出
- else:
- target_item = Item.search_by_ID(items[i+1].ID)
- origin_item = Item.search_by_ID(items[i].ID)
- temp_timestamp = origin_item.timestamp
- origin_item.timestamp = target_item.timestamp
- target_item.timestamp = temp_timestamp
- origin_item.save()
- target_item.save()
- break
- return HttpResponse('change sequence successful.')
- def index(request):
- # Homepage
- return render(request, 'checkIn/index.html')
- def index_pjh(request):
- # Homepage
- return render(request, 'checkIn/index_pjh.html')
|