views.py 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340
  1. # -*- coding: utf-8 -*-
  2. from django.shortcuts import render, redirect
  3. # from apps.SystemManage.forms import AddUserForm
  4. from django.http import HttpResponse
  5. from django.template import RequestContext
  6. from django.contrib import auth
  7. from django.contrib.auth import authenticate, login as auth_login, logout
  8. from django.contrib.auth import get_user_model
  9. from django.contrib.auth.models import User, Group, Permission
  10. from django.contrib.auth.hashers import make_password, check_password
  11. from django.contrib.auth.decorators import login_required
  12. from django.views.decorators.csrf import csrf_exempt
  13. from django.views.generic import ListView
  14. from django.views.generic.base import View
  15. import datetime
  16. from PIL import Image
  17. import time
  18. import json
  19. import base64
  20. import redis
  21. from django.core.cache import cache
  22. import os
  23. from apps.AppInfo.models import Equip, Equip_type, MyUser, QXZdata, QXZstatus, QXZdata_New, JKdata, Article, QXZstatus_New, QXZswitchdata, QXZswitchstatus, CKArticle, GardenManage, Video_data,\
  24. Product, Pick_Pub, FarmList, Hotel_Info, GardenArea
  25. from django.utils.decorators import method_decorator
  26. # Create your views here.
  27. class Home_Test(View):
  28. def get(self, request):
  29. pass
  30. def post(self, request):
  31. pass
  32. # 用户登录
  33. @method_decorator(csrf_exempt, name='dispatch')
  34. class Login_View(View):
  35. def get(self, request):
  36. HTTP_HOST = request.META['HTTP_HOST']
  37. print('HTTP_HOST:', HTTP_HOST)
  38. # form = AddUserForm()
  39. # return render(request, 'home/login.html', context={'form': form})
  40. if request.user.is_authenticated():
  41. user_name = request.user.username
  42. print('user_name=', user_name)
  43. current_user = MyUser.objects.get(username=user_name)
  44. if current_user.is_superuser:
  45. role = "superuser"
  46. elif current_user.is_staff:
  47. role = "staff"
  48. else:
  49. role = "user"
  50. print("当前用户类型:是否为超级管理员", current_user.is_superuser)
  51. return render(request, 'home/home.html', context={'user_name': user_name, 'role': role})
  52. else:
  53. if HTTP_HOST == "127.0.0.1" or HTTP_HOST == "120.27.222.26":
  54. return render(request, 'home/login.html', context={})
  55. def post(self, request):
  56. user_name = request.POST.get('username')
  57. pass_word = request.POST.get('password')
  58. print('输入的用户名:', user_name)
  59. user = MyUser.objects.extra(
  60. where=['binary username=%s'], params=[user_name])
  61. print("user.exists():", user.exists())
  62. if user.exists() == False:
  63. data = "0"
  64. return HttpResponse(data)
  65. else:
  66. user = MyUser.objects.get(username=user_name)
  67. if user.is_active != True:
  68. data = "2"
  69. return HttpResponse(data)
  70. else:
  71. if check_password(pass_word, user.password) != True:
  72. data = "3"
  73. return HttpResponse(data)
  74. else:
  75. print('登陆成功')
  76. current_user = MyUser.objects.get(username=user_name)
  77. auth_user = authenticate(
  78. username=user_name, password=pass_word)
  79. auth_login(request, auth_user)
  80. # 将当前登录的用户名写入session
  81. request.session['username'] = user_name
  82. if user.is_superuser:
  83. role = "superuser"
  84. elif user.is_staff:
  85. role = "staff"
  86. else:
  87. role = "user"
  88. data = "1"
  89. returnUrl = request.POST.get('returnUrl')
  90. print("returnUrl:", returnUrl)
  91. if returnUrl == None:
  92. print("returnUrl is none!!!!!!!!")
  93. return HttpResponse(data)
  94. else:
  95. if returnUrl == "":
  96. print("returnUrl is empty")
  97. return render(request, 'outerNet/index2.html')
  98. elif returnUrl != "":
  99. print("returnUrl is not empty")
  100. return render(request, 'outerNet/index.html')
  101. # 用户登录2
  102. class Login2_View(View):
  103. def get(self, request):
  104. return render(request, 'outerNet/login2.html', context={})
  105. def post(self, request):
  106. pass
  107. # 注册
  108. class ForgetPaw_View(View):
  109. def get(self, request):
  110. return render(request, 'outerNet/forgetPaw.html', context={})
  111. def post(self, request):
  112. pass
  113. # 注册
  114. class register_View(View):
  115. def get(self, request):
  116. return render(request, 'outerNet/register.html', context={})
  117. def post(self, request):
  118. pass
  119. # 外网首页
  120. class Home(View):
  121. def get(self, request):
  122. user_news = CKArticle.objects.filter(art_type=5)[0:10]
  123. zero_news = CKArticle.objects.filter(art_type=0)[0:10]
  124. one_news = CKArticle.objects.filter(art_type=1)[0:10]
  125. two_news = CKArticle.objects.filter(art_type=2)[0:10]
  126. video_news = Video_data.objects.all()[0:4]
  127. product = Product.objects.all()[0:8]
  128. pick = Pick_Pub.objects.all()[0:6]
  129. farm = FarmList.objects.all()
  130. garden = GardenArea.objects.all()
  131. hotel = Hotel_Info.objects.all()[0:5]
  132. article = CKArticle.objects.all()[0:12]
  133. if request.user.is_authenticated():
  134. user_name = request.user.username
  135. curr_user = MyUser.objects.get(username=user_name)
  136. print('user_name=', user_name)
  137. print('user=', curr_user.username)
  138. else:
  139. curr_user = ""
  140. return render(request, 'outerNet/index2.html', context={"user_news": user_news,"zero_news": zero_news, "one_news": one_news,"article":article,
  141. "two_news": two_news, "video_news": video_news,"hotel":hotel,"garden":garden,
  142. "product": product, "pick": pick, "farm": farm, "curr_user": curr_user})
  143. def post(self, request):
  144. pass
  145. # 外网首页2
  146. class Home2(View):
  147. def get(self, request):
  148. user_news = CKArticle.objects.filter(art_type=5)[0:10]
  149. zero_news = CKArticle.objects.filter(art_type=0)[0:10]
  150. one_news = CKArticle.objects.filter(art_type=1)[0:10]
  151. two_news = CKArticle.objects.filter(art_type=2)[0:10]
  152. video_news = Video_data.objects.all()[0:4]
  153. product = Product.objects.all()[0:8]
  154. pick = Pick_Pub.objects.all()[0:6]
  155. garden = GardenArea.objects.all()
  156. hotel = Hotel_Info.objects.all()[0:5]
  157. article = CKArticle.objects.all()[0:12]
  158. if request.user.is_authenticated():
  159. user_name = request.user.username
  160. curr_user = MyUser.objects.get(username=user_name)
  161. print('user_name=', user_name)
  162. print('user=', curr_user.username)
  163. else:
  164. curr_user = ""
  165. return render(request, 'outerNet/index2.html', context={"user_news": user_news,"zero_news": zero_news, "one_news": one_news,
  166. "two_news": two_news, "video_news": video_news,"hotel":hotel,"article":article,
  167. "product": product, "pick": pick, "garden": garden, "curr_user": curr_user})
  168. def post(self, request):
  169. pass
  170. # 首页设备显示
  171. class Home_Equip(View):
  172. def get(self, request):
  173. pass
  174. def post(self, request):
  175. pass
  176. #修改个人信息,
  177. class Modify_Head(ListView):
  178. def get(self, request):
  179. art_list = MyUser.objects.get(username="admin")
  180. print(art_list.username)
  181. return render(request, "backstageNet/systemSet/systemSet.html", context={"art_list": art_list})
  182. def post(self, request):
  183. head = request.POST.get("user_picture")
  184. remark = request.POST.get("user_remark")
  185. phone = request.POST.get("user_phone")
  186. name = request.POST.get("username")
  187. try:
  188. art_list = MyUser.objects.filter(username=name).update(
  189. user_picture=head,
  190. user_remark=remark,
  191. user_phone=phone
  192. )
  193. data = "1"
  194. except Exception as e:
  195. print(e)
  196. data = "0"
  197. return HttpResponse(data)
  198. # 头像上传
  199. class User_Img(ListView):
  200. def get(self, request):
  201. pass
  202. def post(self, request):
  203. user_photo = request.FILES.get('user_photo')
  204. if user_photo:
  205. print("头像图片:", user_photo)
  206. user_photo_dir = 'user_photo/'
  207. end_name = user_photo.name.split('.')[-1]
  208. # 判断如果路径不存在,即创建路径
  209. if os.path.exists(user_photo_dir) == False:
  210. os.makedirs(user_photo_dir)
  211. img = Image.open(user_photo)
  212. now_time = time.strftime(
  213. '%Y%m%d%H%M%S', time.localtime(time.time()))
  214. pic_name = now_time + '.' + end_name
  215. print("pic_name:", pic_name)
  216. img.save(user_photo_dir + pic_name)
  217. user_photo = user_photo_dir + pic_name
  218. print("user_photo:", user_photo)
  219. data = {"code": 0, "msg": "", "data": {"src": user_photo}}
  220. else:
  221. user_photo = "0"
  222. data = {"code": 404, "msg": "", "data": {"src": user_photo}}
  223. data = json.dumps(data)
  224. return HttpResponse(data)
  225. #新建用户
  226. class User_News(ListView):
  227. def get(self,request):
  228. pass
  229. def post(self,request):
  230. username = request.POST.get("username")
  231. user_remark = request.POST.get("user_remark")
  232. user_phone = request.POST.get("user_phone")
  233. email = request.POST.get("email")
  234. #用户登陆
  235. class User_Land(ListView):
  236. def get(self,request):
  237. pass
  238. def post(self, request):
  239. user_name = request.POST.get("username")
  240. pass_word = request.POST.get("password")
  241. print('输入的用户名', user_name)
  242. print('输入的密码:', pass_word)
  243. user = MyUser.objects.extra(
  244. where=['binary username=%s'], params=[user_name])
  245. print("user.exists():", user.exists())
  246. if user.exists() == False:
  247. data = 0
  248. print("用户不存在")
  249. data = json.dumps(data)
  250. return HttpResponse(data)
  251. else:
  252. user = MyUser.objects.get(username=user_name)
  253. if user.is_active != True:
  254. data = 2
  255. print("用户名错误")
  256. data = json.dumps(data)
  257. return HttpResponse(data)
  258. else:
  259. if check_password(pass_word, user.password) != True:
  260. data = 3
  261. print('密码错误')
  262. data = json.dumps(data)
  263. return HttpResponse(data)
  264. else:
  265. print('登陆成功')
  266. auth_user = authenticate(
  267. username=user_name, password=pass_word)
  268. auth_login(request, auth_user)
  269. # 将当前登录的用户名写入session
  270. request.session['username'] = user_name
  271. art_list = MyUser.objects.filter(username=user_name)
  272. for i in art_list:
  273. he = {"username":i.username,"user_img":i.user_picture.name,"code":1 }
  274. data = json.dumps(he)
  275. print("data:", data)
  276. return HttpResponse(data)
  277. # 用户退出
  278. @login_required
  279. def logout(request):
  280. print("用户退出")
  281. del request.session['username']# 删除session
  282. auth.logout(request)
  283. return redirect('/login2')
  284. #判断用户是否已登陆
  285. class User_Check(ListView):
  286. # def get(self,request):
  287. # pass
  288. def get(self, request):
  289. ret_url = request.path_info
  290. print(ret_url)
  291. if ret_url == "/home":
  292. return HttpResponse(ret_url)
  293. else:
  294. print(000)
  295. return HttpResponse("00000")