views.py 25 KB

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