views.py 25 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501
  1. from django.contrib.auth.hashers import make_password, check_password
  2. from .forms import RegForm, CheckInForm, ForgetPSWForm
  3. from .models import Organizer, CheckIn, Item, UserContent
  4. from .functions import *
  5. # Create your views here.
  6. # @cache_page(60 * 60) # 缓存有效时间1小时
  7. def index(request):
  8. # Homepage
  9. return render(request, 'checkIn/index.html')
  10. def checkIn(request, url):
  11. # 用户注册界面
  12. if url == 'register':
  13. if request.method == 'POST':
  14. regForm = RegForm(request.POST)
  15. if regForm.is_valid():
  16. organizer = Organizer
  17. organizer.username = regForm.cleaned_data['username'].lower().strip()
  18. organizer.nickname = regForm.cleaned_data['nickname'].lower().strip()
  19. organizer.email = regForm.cleaned_data['email'].lower().strip()
  20. organizer.mobile = regForm.cleaned_data['mobile']
  21. organizer.password = make_password(regForm.cleaned_data['psw1'])
  22. organizer.photo = ''
  23. # 获取注册的IP地址
  24. try:
  25. organizer.registerIP = request.META['HTTP_X_FORWARDED_FOR']
  26. except:
  27. organizer.registerIP = request.META['REMOTE_ADDR']
  28. organizer.createNew(organizer)
  29. organizer = Organizer.searchByUsername(organizer)
  30. request.session['loginUser'] = organizer.username
  31. request.session['loginID'] = organizer.ID
  32. request.session['loginNickname'] = organizer.nickname
  33. return render(request, 'checkIn/directPage.html', {'alertMsg': '用户创建成功。', 'dirLink': '/checkIn/main'})
  34. else:
  35. return render(request, 'checkIn/register.html', {'registerForm': regForm})
  36. else:
  37. return render(request, 'checkIn/register.html', {'registerForm': RegForm})
  38. if url == 'login':
  39. # 用户登录页面
  40. if request.method == 'POST':
  41. organizer = Organizer
  42. organizer.username = request.POST['username'].strip().lower()
  43. organizer = Organizer.searchByUsername(organizer)
  44. if organizer == None:
  45. return render(request, 'checkIn/directPage.html',
  46. {'alertMsg': '用户名不存在。', 'dirLink': '/checkIn/login/'})
  47. if check_password(request.POST['password'], organizer.password):
  48. request.session['loginUser'] = organizer.username
  49. request.session['loginID'] = organizer.ID
  50. request.session['loginNickname'] = organizer.nickname
  51. return render(request, 'checkIn/directPage.html', {'alertMsg': '登录成功。', 'dirLink': '/checkIn/main/'})
  52. else:
  53. return render(request, 'checkIn/directPage.html', {'alertMsg': '用户名或者密码错误。', 'dirLink': '/checkIn/login/'})
  54. else:
  55. if getSession(request, 'loginID'): # 如果检测到用户已经登陆就直接跳转
  56. return HttpResponseRedirect('/checkIn/main')
  57. else:
  58. return render(request, 'checkIn/login.html')
  59. # 忘记密码
  60. if url == 'forgetPSW':
  61. if checkSession(request, 'loginUser') and checkSession(request, 'ID'):
  62. return render(request, 'checkIn/directPage.html', {'alertMsg': '你已经登录了。', 'dirLink': '/'})
  63. if request.method == 'POST':
  64. organizer = Organizer
  65. form = ForgetPSWForm(request.POST)
  66. if form.is_valid():
  67. organizer.username = form.cleaned_data['username']
  68. organizer = Organizer.searchByUsername(organizer)
  69. if organizer.mobile == form.cleaned_data['mobile']:
  70. organizer.password = make_password('qaz123')
  71. Organizer.updateByID(organizer)
  72. return render(request, 'checkIn/directPage.html',
  73. {'alertMsg': '你的密码已经更改为 qaz123。', 'dirLink': '/checkIn/login'})
  74. else:
  75. return render(request, 'checkIn/forgetPSW.html', {'forgetPSWForm': form, 'alert': '你的手机号码与注册的不符。'})
  76. else:
  77. del organizer
  78. return render(request, 'checkIn/forgetPSW.html', {'forgetPSWForm': form})
  79. # 正常渲染页面
  80. else:
  81. form = ForgetPSWForm()
  82. return render(request, 'checkIn/forgetPSW.html', {'forgetPSWForm': form})
  83. if url == 'main':
  84. # 用户登陆后的页面
  85. if not checkLoginUser(request):
  86. return render(request, 'checkIn/directPage.html', {'alertMsg': '登录错误。', 'dirLink': '/checkIn/logout'})
  87. checkIn = CheckIn
  88. checkIn.o_ID = getSession(request, 'loginID')
  89. existingList = CheckIn.getExistingList(checkIn) # 获取名下的checkIn集合
  90. nickname = request.session['loginNickname']
  91. return render(request, 'checkIn/main.html', {'existingList': existingList, 'nickname': nickname})
  92. if url == 'newCheckIn':
  93. # 用户创建新的CheckIn项目
  94. if not checkLoginUser(request):
  95. return render(request, 'checkIn/directPage.html', {'alertMsg': '请重新登录。', 'dirLink': '/'})
  96. checkIn = CheckIn
  97. if request.method == 'POST':
  98. form = CheckInForm(request.POST)
  99. if form.is_valid():
  100. if request.GET.get('ID'): # 如果是更新话,先读取原始数据
  101. checkIn.ID = request.GET['ID']
  102. checkIn = CheckIn.searchByID(checkIn)
  103. if checkIn == None:
  104. return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
  105. checkIn.startTime = form.cleaned_data['startTime']
  106. checkIn.endTime = form.cleaned_data['endTime']
  107. checkIn.o_ID = request.session['loginID']
  108. checkIn.description = form.cleaned_data['description']
  109. checkIn.maxNum = form.cleaned_data['maxNum']
  110. checkIn.creatorConfirm = form.cleaned_data['creatorConfirm']
  111. checkIn.captcha = form.cleaned_data['captcha']
  112. if request.GET.get('ID'):
  113. # 如果是更新话,就能获取check In ID,然后调用这一段。
  114. CheckIn.updateByID(checkIn)
  115. return HttpResponseRedirect('/checkIn/checkInDetail/?ID=%s' % (checkIn.ID))
  116. else:
  117. # 如果是新建的话,GET里面没有ID
  118. c_ID =CheckIn.createNew(checkIn)
  119. if c_ID == 0: # 检测到重名
  120. alert = '你创建的活动重名了。'
  121. return render(request, 'checkIn/newCheckIn.html', {'form': form, 'alert': alert})
  122. else:
  123. return HttpResponseRedirect('/checkIn/newItems/?ID=%s' % (c_ID))
  124. # 普通打开页面,不是POST
  125. if request.GET.get('ID'):
  126. # 如果GET来ID数据的话,就填充表格,修改原有数据
  127. checkIn.ID = request.GET['ID']
  128. checkIn = CheckIn.searchByID(checkIn)
  129. if checkIn == None:
  130. return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
  131. if (not checkCorrectO_ID(request, checkIn.o_ID)) or checkIn == None:
  132. return render(request, 'checkIn/directPage.html', {'alertMsg': 'c_ID有错误,请重新登录。', 'dirLink': '/checkIn/logout'})
  133. if not checkIn:
  134. return render(request, 'checkIn/directPage.html', {'alertMsg': '这个ID不存在。', 'dirLink': '/'})
  135. else:
  136. form = CheckInForm
  137. data = {'startTime': str(checkIn.startTime), 'description': checkIn.description.strip(), 'o_ID': checkIn.o_ID}
  138. if checkIn.endTime:
  139. data['endTime'] = str(checkIn.endTime)
  140. data['maxNum'] = checkIn.maxNum
  141. data['creatorConfirm'] = checkIn.creatorConfirm
  142. data['captcha'] = checkIn.captcha
  143. form = CheckInForm(data)
  144. return render(request, 'checkIn/newCheckIn.html', {'form': form})
  145. else: # 创建新的checkIn
  146. # data = {'o_ID': request.session.get('loginID')}
  147. form = CheckInForm()
  148. # confirmList = [('0', '无需验证'), ('1', '点击确认')]
  149. # form.declared_fields['creatorConfirm'].choices = confirmList
  150. return render(request, 'checkIn/newCheckIn.html', {'form': form})
  151. if url == 'newItems':
  152. # 用户在新的checkIn项目下添加签到内容
  153. if not checkLoginUser(request):
  154. return render(request, 'checkIn/directPage.html', {'alertMsg': '请重新登录。', 'dirLink': '/'})
  155. item = Item
  156. if not checkGET(request, 'ID'):
  157. return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
  158. item.c_ID = request.GET['ID']
  159. checkIn = CheckIn
  160. checkIn.ID = item.c_ID
  161. checkIn = CheckIn.searchByID(checkIn)
  162. if checkIn == None:
  163. return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
  164. if (not checkCorrectO_ID(request, checkIn.o_ID)) or checkIn == None:
  165. return render(request, 'checkIn/directPage.html', {'alertMsg': 'c_ID有错误,请重新登录。', 'dirLink': '/checkIn/logout'})
  166. if request.method == 'POST':
  167. # 新建条目
  168. item.o_ID = getSession(request, 'loginID')
  169. checkIn = CheckIn()
  170. checkIn.ID = item.c_ID
  171. checkIn = CheckIn.searchByID(checkIn)
  172. item.c_description = checkIn.description.strip()
  173. item.description = request.POST['description'].strip()
  174. # 检验重名的Item
  175. if Item.sameItem(item):
  176. return render(request, 'checkIn/directPage.html',
  177. {'alertMsg': '重名了', 'dirLink': '/checkIn/newItems'})
  178. item.type = request.POST['type']
  179. if checkPOST(request, 'uniqueItem'):
  180. item.unique = True
  181. else:
  182. item.unique = False
  183. if checkPOST(request, 'reservedFlag'):
  184. item.reservedFlag = True
  185. item.reservedContent = request.POST['reservedContent'].strip()
  186. else:
  187. item.reservedFlag = False
  188. item.reservedContent = ''
  189. if item.type == '4' or '5': # 如果是单选选项需要在选项数据库里面输入
  190. item.itemSelection = request.POST['itemSelection'].strip()
  191. #验证完成,创建item
  192. Item.createNew(item)
  193. existItemList = Item.searchByC_ID(item)
  194. return render(request, 'checkIn/newItems.html', {'existItemList': existItemList})
  195. else:
  196. existItemList = Item.searchByC_ID(item)
  197. return render(request, 'checkIn/newItems.html', {'existItemList': existItemList, 'checkInDesc': checkIn.description})
  198. if url == 'logout':
  199. request.session.clear()
  200. return render(request, 'checkIn/directPage.html', {'alertMsg': '成功退出。', 'dirLink': '/'})
  201. if url == 'checkInDetail':
  202. checkIn = CheckIn
  203. if not checkGET(request, 'ID'):
  204. return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
  205. checkIn.ID = request.GET['ID']
  206. checkIn = CheckIn.searchByID(checkIn)
  207. if checkIn == None:
  208. return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
  209. if (not checkCorrectO_ID(request, checkIn.o_ID)) or checkIn == None:
  210. return render(request, 'checkIn/directPage.html', {'alertMsg': 'c_ID有错误,请重新登录。', 'dirLink': '/checkIn/logout'})
  211. request.session['checkInDesc'] = checkIn.description
  212. request.session['checkInID'] = checkIn.ID
  213. return render(request, 'checkIn/checkInDetail.html', {'checkIn': checkIn})
  214. # 更新item
  215. if url == 'itemUpdate':
  216. item = Item
  217. # 提交表单后更新数据
  218. if request.method == 'POST':
  219. # 读取item数据
  220. if not checkGET(request, 'ID'):
  221. return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
  222. item.ID = request.GET['ID']
  223. item = Item.searchByID(item)
  224. item.description = request.POST['description'].strip()
  225. item.type = request.POST['type']
  226. item.itemSelection = request.POST['itemSelection']
  227. if checkPOST(request, 'uniqueItem'):
  228. item.unique = True
  229. else:
  230. item.unique = False
  231. if checkPOST(request, 'reservedFlag'):
  232. item.reservedFlag = True
  233. item.reservedContent = request.POST['reservedContent'].strip()
  234. else:
  235. item.reservedFlag = False
  236. item.reservedContent = ''
  237. # 更新数据
  238. Item.updateItemByID(item)
  239. return HttpResponseRedirect('/checkIn/newItems/?ID=%s' % (item.c_ID))
  240. # 非POST
  241. if request.method == 'GET':
  242. try:
  243. if not checkGET(request, 'ID'):
  244. return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
  245. item.ID = request.GET['ID']
  246. item = Item.searchByID(item)
  247. if (not checkCorrectO_ID(request, item.o_ID)) or item == '':
  248. return render(request, 'checkIn/directPage.html', {'alertMsg': 'c_ID有错误,请重新登录。', 'dirLink': '/checkIn/logout'})
  249. return render(request, 'checkIn/itemUpdate.html', {'item': item})
  250. except Exception as e:
  251. print(e)
  252. return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
  253. # 更新用户资料
  254. if url == 'updateInfo':
  255. organizer = Organizer
  256. if not checkSession(request, 'loginID'):
  257. return render(request, 'checkIn/directPage.html', {'alertMsg': '你还没有登录。', 'dirLink': '/'})
  258. organizer.ID = getSession(request, 'loginID')
  259. organizer = Organizer.searchByID(organizer)
  260. if request.method == 'POST':
  261. form = RegForm(request.POST)
  262. form.fields['psw1'].required = False
  263. form.fields['psw2'].required = False
  264. form.fields['username'].widget.attrs['readonly'] = 'readonly'
  265. if form.is_valid():
  266. if form.cleaned_data['psw1'] is not None:
  267. organizer.password = make_password(form.cleaned_data['psw1'])
  268. organizer.nickname = form.cleaned_data['nickname']
  269. organizer.mobile = form.cleaned_data['mobile']
  270. organizer.email = form.cleaned_data['email']
  271. Organizer.updateByID(organizer)
  272. return HttpResponseRedirect('/checkIn/main')
  273. else:
  274. return render(request, 'checkIn/updateInfo.html', {'form': form})
  275. else:
  276. form = RegForm(initial={'username': organizer.username, 'nickname': organizer.nickname,
  277. 'email': organizer.email, 'mobile': organizer.mobile,
  278. 'updateFlag': 'update', 'originalMobile': organizer.mobile})
  279. form.fields['psw1'].required = False
  280. form.fields['psw2'].required = False
  281. form.fields['username'].widget.attrs['readonly'] = 'readonly'
  282. return render(request, 'checkIn/updateInfo.html', {'form': form})
  283. # 生成二维码,并准备发布
  284. if url == 'public':
  285. checkIn = CheckIn
  286. if not checkGET(request, 'ID'):
  287. return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
  288. checkIn.ID = request.GET['ID']
  289. checkIn = CheckIn.searchByID(checkIn)
  290. if checkIn == None:
  291. return render(request, 'checkIn/directPage.html', {'alertMsg': '这个ID不存在。', 'dirLink': '/'})
  292. else:
  293. scheme = request.scheme
  294. host = request.get_host()
  295. import qrcode
  296. qr = qrcode.QRCode(version=1, error_correction=qrcode.constants.ERROR_CORRECT_M, box_size=10, border=1)
  297. url = '%s://%s/checkIn/user/checkIn/?ID=%s' % (scheme, host, checkIn.ID)
  298. qr.add_data(url)
  299. qr.make(fit=True)
  300. img = qr.make_image()
  301. import os
  302. BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
  303. imgLoc = '%s\\checkIn\\checkIn_media\\qrcode\\c_ID_%s.png' % (BASE_DIR, checkIn.ID)
  304. img.save(imgLoc)
  305. img_url = '/checkIn_media/qrcode/c_ID_%s.png' %(checkIn.ID) # 需要在服务器上添加checkIn_media为静态目录
  306. status = {}
  307. status['code'] = checkIn.status
  308. if status['code'] == 'draft':
  309. status['desc'] = '准备中'
  310. elif status['code'] == 'active':
  311. status['desc'] = '进行中'
  312. elif status['code'] == 'pause':
  313. status['desc'] = '暂停'
  314. return render(request, 'checkIn/public.html', {'url': url, 'image': img_url, 'c_ID': checkIn.ID, 'status': status, 'description': checkIn.description})
  315. # 组织者查看签到记录
  316. if url == 'checkInStatus':
  317. checkIn = CheckIn
  318. checkInResult = UserContent
  319. if not checkGET(request, 'ID'):
  320. return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
  321. checkIn.ID = request.GET['ID']
  322. checkIn = CheckIn.searchByID(checkIn)
  323. if checkIn == None:
  324. return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
  325. # 验证checkIn 用户和登录用户是否一致。
  326. if (not checkCorrectO_ID(request, checkIn.o_ID)) or checkIn == None:
  327. return render(request, 'checkIn/directPage.html', {'alertMsg': 'c_ID有错误,请重新登录。', 'dirLink': '/checkIn/logout'})
  328. checkInResult.c_ID = checkIn.ID
  329. result = UserContent.getContentList(checkInResult)
  330. # result = mongoSearchByID(checkIn.ID)
  331. result2 = None
  332. keys = None
  333. if len(result) != 0:
  334. keys = eval(result[0]['content']).keys()
  335. result2 = []
  336. for x in result:
  337. result2.append(eval(x['content']).values())
  338. return render(request, 'checkIn/checkInStatus.html', {'result': result2, 'keys': keys, 'c_ID': checkIn.ID})
  339. # 下载CSV
  340. if url == 'getCSV':
  341. checkIn = CheckIn
  342. checkInResult = UserContent
  343. if not checkGET(request, 'c_ID'):
  344. return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
  345. checkIn.ID = request.GET['c_ID']
  346. checkIn = CheckIn.searchByID(checkIn)
  347. if checkIn is None:
  348. return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
  349. # 验证checkIn 用户和登录用户是否一致。
  350. if (not checkCorrectO_ID(request, checkIn.o_ID)) or checkIn is None:
  351. return render(request, 'checkIn/directPage.html', {'alertMsg': 'c_ID有错误,请重新登录。', 'dirLink': '/checkIn/logout'})
  352. # 获取数据,生成response
  353. response = HttpResponse(content_type='text/csv;charset=ANSI')
  354. response['Content-Disposition'] = 'attachment; filename="checkIn_%s.csv"' % (checkIn.ID)
  355. import csv
  356. writer = csv.writer(response)
  357. checkInResult.c_ID = checkIn.ID
  358. result = UserContent.getContentList(checkInResult)
  359. # result = mongoSearchByID(checkIn.ID)
  360. keys = eval(result[0]['content']).keys()
  361. writer.writerow(keys)
  362. # result2 = []
  363. for x in result:
  364. writer.writerow(eval(x['content']).values())
  365. return response
  366. # 更改签到状态
  367. if url == 'statusChange':
  368. checkIn = CheckIn
  369. if not checkGET(request, 'status'):
  370. return render(request, 'checkIn/directPage.html', {'alertMsg': 'status错误', 'dirLink': '/'})
  371. if not checkGET(request, 'c_ID'):
  372. return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入cID或者cID错误', 'dirLink': '/checkIn/logout'})
  373. checkIn.ID = request.GET['c_ID']
  374. checkIn = CheckIn.searchByID(checkIn)
  375. if checkIn == None:
  376. return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
  377. allowedStatus = {'draft': '准备中', 'active': '进行中', 'pause': '暂停'}
  378. if request.GET['status'] in allowedStatus.keys():
  379. # 判断当前c_ID下item是否为空
  380. item = Item()
  381. item.c_ID = request.GET['c_ID']
  382. item = Item.searchByC_ID(item)
  383. if len(item) == 0:
  384. return render(request, 'checkIn/directPage.html', {'alertMsg': '项目收集信息为空,请添加至少一项。', 'dirLink': '/checkIn/checkInDetail/?ID=%s' % (checkIn.ID)})
  385. else:
  386. checkIn.status = request.GET['status']
  387. CheckIn.updateByID(checkIn)
  388. statusDesc = '签到已经更改成%s状态了' % (allowedStatus[checkIn.status])
  389. return render(request, 'checkIn/directPage.html', {'alertMsg': statusDesc, 'dirLink': '/checkIn/public/?ID=%s' % (checkIn.ID)})
  390. else:
  391. return render(request, 'checkIn/directPage.html', {'alertMsg': '参数错误', 'dirLink': '/checkIn/logout'})
  392. # 删除checkIn
  393. if url == 'deleteCheckIn':
  394. checkIn = CheckIn()
  395. if not checkGET(request, 'c_ID'):
  396. return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入cID或者cID错误', 'dirLink': '/checkIn/logout'})
  397. checkIn.ID = request.GET['c_ID']
  398. checkIn = CheckIn.searchByID(checkIn)
  399. if checkIn == None:
  400. return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
  401. if (not checkCorrectO_ID(request, checkIn.o_ID)) or checkIn == None:
  402. return render(request, 'checkIn/directPage.html', {'alertMsg': 'c_ID有错误,请重新登录。', 'dirLink': '/checkIn/logout'})
  403. checkIn.status = 'delete'
  404. CheckIn.updateByID(checkIn)
  405. return HttpResponseRedirect('/checkIn/main')
  406. # 删除Item
  407. if url == 'deleteItem':
  408. if not checkGET(request, 'itemID'):
  409. return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入itemID', 'dirLink': '/'})
  410. item = Item
  411. item.ID = request.GET.get('itemID')
  412. item = Item.searchByID(item)
  413. c_ID = item.c_ID
  414. if (not checkCorrectO_ID(request, item.o_ID)) or item == None:
  415. return render(request, 'checkIn/directPage.html', {'alertMsg': 'c_ID有错误,请重新登录。', 'dirLink': '/checkIn/logout'})
  416. if Item.deleteByID(item):
  417. return HttpResponseRedirect('/checkIn/newItems/?ID=%s' %(c_ID))
  418. else:
  419. return HttpResponse('系统错误。')
  420. # 删除签到数据
  421. if url == "deleteContent":
  422. if not checkGET(request, 'c_ID'):
  423. return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入cID或者cID错误', 'dirLink': '/checkIn/logout'})
  424. # 判断是不是本人的checkIn
  425. checkIn = CheckIn()
  426. checkIn.ID = request.GET['c_ID']
  427. checkIn = CheckIn.searchByID(checkIn)
  428. if checkIn == None:
  429. return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
  430. if checkIn.o_ID != request.session['loginID']:
  431. del checkIn
  432. return render(request, 'checkIn/directPage.html', {'alertMsg': '非本人的活动项目!', 'dirLink': '/checkIn/logout'})
  433. userContent = UserContent()
  434. userContent.c_ID = request.GET['c_ID']
  435. if UserContent.clearByC_ID(userContent):
  436. checkIn.status = 'draft' # 重置checkIn的状态为Draft
  437. CheckIn.updateByID(checkIn)
  438. del checkIn
  439. del userContent
  440. return HttpResponseRedirect('/checkIn/checkInDetail/?ID=%s' % (request.GET['c_ID']))
  441. # 打印版本
  442. if url == 'print':
  443. checkIn = CheckIn
  444. if not checkGET(request, 'c_ID'):
  445. return render(request, 'checkIn/directPage.html', {'alertMsg': '没有输入ID或者ID错误', 'dirLink': '/'})
  446. checkIn.ID = request.GET['c_ID']
  447. checkIn = CheckIn.searchByID(checkIn)
  448. if checkIn == None:
  449. return render(request, 'checkIn/directPage.html', {'alertMsg': '这个ID不存在。', 'dirLink': '/'})
  450. else:
  451. img_url = '/checkIn_media/qrcode/c_ID_%s.png' %(checkIn.ID) # 需要在服务器上添加checkIn_media为静态目录
  452. return render(request, 'checkIn/print.html', {'url': url, 'image': img_url, 'description': checkIn.description})