Advertisement
Guest User

Untitled

a guest
Oct 6th, 2018
256
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.08 KB | None | 0 0
  1. from django.shortcuts import render, redirect, render_to_response
  2. from django.contrib.auth.models import User
  3. from account.models import Company, Employee, UserProfile
  4. from location.models import City
  5. from post.models import Category
  6. from django.contrib.auth import logout, login
  7. from post.models import Post, WorkersPosts
  8. from django.db.models import Q
  9. import re
  10. from django.core.mail import EmailMessage
  11. from .tokens import account_activation_token
  12. from django.template.loader import render_to_string
  13. from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode
  14. from django.contrib.sites.shortcuts import get_current_site
  15. from django.utils.encoding import force_bytes, force_text
  16. from django.http import HttpResponseRedirect
  17. from datetime import datetime
  18. import sweetify
  19. from django.template.context_processors import csrf
  20.  
  21.  
  22. def superUser(user):
  23.  
  24. if user.email == "ziza@1blackmoon.com":
  25. return True
  26. else:
  27. return False
  28.  
  29.  
  30. def validation(request, args):
  31.  
  32. for i in args:
  33. if i == "" or i is None:
  34. sweetify.error(request, title="Sva polja su obavezna", text="", icon="error", timer=10000)
  35. return False
  36.  
  37. return True
  38.  
  39.  
  40. def home(request):
  41.  
  42. posts = Post.objects.order_by('created_at')[0:4]
  43.  
  44. if request.user.is_authenticated:
  45. userP = UserProfile.objects.get(userID=request.user)
  46. return render(request, 'index.html', {'user': request.user, 'auth': True, 'userP': userP, 'industries': None, 'posts': posts})
  47. else:
  48. industries = Category.objects.filter(type=0)
  49. return render(request, 'index.html', {'user': None, 'userP': None, 'auth': False, 'industries': industries, 'posts': posts})
  50.  
  51.  
  52. def profil(request):
  53.  
  54. if request.user.is_authenticated:
  55.  
  56. if request.POST.get('pretragaTrigger', "False") == "True":
  57. grad = request.POST.get('gradovi', None)
  58. kategorija = request.POST.get('kategorije', None)
  59. kljucnaRijec = request.POST.get('kljucnaRijec', None)
  60.  
  61. posts = Post.objects.all().filter(type=1)
  62.  
  63. if grad is not None:
  64. posts = posts.all().filter(location=grad)
  65. if kategorija is not None:
  66. cat = Category.objects.get(name=kategorija)
  67. posts = posts.all().filter(CategoryID=cat)
  68. if kljucnaRijec is not None:
  69. posts = posts.all().filter(Q(title__contains=kljucnaRijec) | Q(content__contains=kljucnaRijec))
  70.  
  71. else:
  72. posts = Post.objects.all().filter(type=1)
  73.  
  74. user = request.user
  75. userP = UserProfile.objects.get(userID=user)
  76. data = posts
  77. gradovi = City.objects.all()
  78. cat = Category.objects.filter(type=0)
  79. counter = posts.count()
  80. company = Company.objects.get(userID=user)
  81.  
  82. if Company.objects.filter(userID=user).exists():
  83.  
  84. userComp = Company.objects.get(userID=user)
  85.  
  86. if userComp.categoryID.name == "Finansijske":
  87.  
  88. posts = Post.objects.all().filter(userID=user).exclude(expires_at__lte=datetime.now()).exclude(categoryID__name="Osiguravajuće")
  89. return render(request, 'profilTvrtka.html', {'user': user, 'userP': userP, 'company': company, 'posts': posts})
  90.  
  91. elif userComp.categoryID.name == "Finansijske":
  92.  
  93. posts = Post.objects.all().filter(userID=user).exclude(expires_at__lte=datetime.now()).exclude(categoryID__name="Finansijske")
  94. return render(request, 'profilTvrtka.html',
  95. {'user': user, 'userP': userP, 'company': company, 'posts': posts})
  96. elif superUser(request.user):
  97. posts = Post.objects.all().filter(userID=user).exclude(expires_at__lte=datetime.now())
  98. return render(request, 'profilTvrtka.html',
  99. {'user': user, 'userP': userP, 'company': company, 'posts': posts})
  100. else:
  101. posts = Post.objects.all().filter(type=2).exclude(categoryID__name="Finansijske").exclude(
  102. categoryID__name="Osiguravajuće").exclude(expires_at__lte=datetime.now())
  103. return render(request, 'profilTvrtka.html',
  104. {'user': user, 'userP': userP, 'company': company, 'posts': posts})
  105.  
  106. elif Employee.objects.filter(userID=user).exists():
  107. return render(request, 'pretrazi.html', {'user': user, 'data': data, 'counter': counter, 'gradovi': gradovi, 'cat': cat, 'userP': userP})
  108. else:
  109. return render(request, 'index.html')
  110.  
  111.  
  112. def validateMail(mail):
  113.  
  114. if re.search("(^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$)", mail):
  115. return True
  116. else:
  117. return False
  118.  
  119.  
  120. def sendmail(request, user, recipientMail):
  121.  
  122. current_site = get_current_site(request)
  123. mail_subject = "Aktiviraj svoj racun"
  124. message = render_to_string('acc_active_email.html', {
  125. 'user': user,
  126. 'domain': current_site.domain,
  127. 'uid': urlsafe_base64_encode(force_bytes(user.pk)),
  128. 'token': account_activation_token.make_token(user),
  129. })
  130.  
  131. email = EmailMessage(
  132. mail_subject, message, to=[recipientMail]
  133. )
  134.  
  135. email.send()
  136.  
  137.  
  138. def register(request):
  139.  
  140. if request.method == 'POST':
  141. if request.POST['vrsta'] == "radnik":
  142.  
  143. user = User()
  144.  
  145. user.first_name = request.POST['FirstName']
  146. user.last_name = request.POST['LastName']
  147. user.email = request.POST['mail']
  148. user.set_password(request.POST['pswd'])
  149. user.username = user.last_name + "." + user.email
  150. lozinka = request.POST['pswd']
  151.  
  152. args = [user.first_name, user.last_name, user.email, lozinka]
  153.  
  154. if not validation(request, args):
  155. return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
  156.  
  157. if len(lozinka) < 6:
  158. sweetify.sweetalert(request, button=True, title="Lozinka mora biti 6 ili više karaktera", icon="error", timer=10000)
  159. return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
  160. elif not validateMail(user.email):
  161. sweetify.sweetalert(request,button=True, title="Unesite validnu email adresu", icon="error", timer=10000)
  162. return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
  163.  
  164. if User.objects.filter(email=user.email).exists():
  165. sweetify.sweetalert(request, title="Email adresa već postoji", text="Već postoji korisnik sa ovom email adresom, ako ste zaboravili lozinku molimo kliknite na Forgot password", icon="error", timer=10000)
  166. return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
  167.  
  168. elif not validateMail(user.email):
  169. sweetify.sweetalert(request, button=True, title="Neispravna Email adresa", text="Molimo unesite ispravnu Email adresu", icon="error", timer=10000)
  170. return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
  171.  
  172. else:
  173.  
  174. if validateMail(user.email):
  175.  
  176. user.clean()
  177. user.save()
  178.  
  179. emp = Employee(userID=user)
  180. emp.save()
  181.  
  182. userP = UserProfile(userID=user)
  183. userP.save()
  184.  
  185. sendmail(request, user, user.email)
  186.  
  187. sweetify.success(request, 'Uspješna registracija', text=' molimo verifikujte svoj mail', icon="success", timer=10000)
  188.  
  189. return redirect('home')
  190.  
  191. else:
  192.  
  193. user = User()
  194. city = City(name=request.POST['City'])
  195.  
  196. city.name = city.name.lower()
  197. city.name = city.name.title()
  198.  
  199. if City.objects.filter(name=city.name).exists():
  200. city = City.objects.get(name=city.name)
  201. else:
  202. city.save()
  203.  
  204. categoryname = request.POST.get('Category', None)
  205. user.first_name = request.POST['FirstName']
  206. user.last_name = request.POST['LastName']
  207. user.email = request.POST['mail']
  208. user.set_password(request.POST['pswd'])
  209. user.username = user.last_name + "." + user.email
  210. lozinka = request.POST['pswd']
  211.  
  212. args = [user.first_name, user.last_name, user.email, lozinka, categoryname]
  213.  
  214. if not validation(request, args):
  215. return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
  216.  
  217. category = Category.objects.get(name=categoryname)
  218.  
  219. if User.objects.filter(email=user.email).exists():
  220. sweetify.sweetalert(request, title="Email adresa već postoji", text="Već postoji korisnik sa ovom email adresom, ako ste zaboravili lozinku molimo kliknite na Forgot password", icon="error", timer=10000)
  221. return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
  222.  
  223. elif not validateMail(user.email):
  224. sweetify.sweetalert(request, title="Neispravna Email adresa", text="Molimo unesite ispravnu Email adresu", icon="error")
  225. return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
  226.  
  227. else:
  228. user.clean()
  229. user.save()
  230.  
  231. comp = Company()
  232. comp.userID = user
  233. comp.ID_Number = user.last_name
  234. comp.categoryID = category
  235. comp.clean()
  236. comp.save()
  237.  
  238. userP = UserProfile(userID=user, location=city.name)
  239. userP.save()
  240.  
  241. sendmail(request, user, user.email)
  242.  
  243. sweetify.success(request, 'Uspješna registracija', text=' molimo verifikujte svoj mail', icon="success",timer=10000)
  244.  
  245. return redirect('home')
  246.  
  247. return redirect('home')
  248.  
  249.  
  250. def activate(request, uidb64, token):
  251. try:
  252. uid = force_text(urlsafe_base64_decode(uidb64))
  253. user = User.objects.get(pk=uid)
  254. except(TypeError, ValueError, OverflowError, User.DoesNotExist):
  255. user = None
  256.  
  257. if user is not None and account_activation_token.check_token(user, token):
  258. userP = UserProfile.objects.filter(userID=user).update(verified=True)
  259. login(request, user)
  260.  
  261. return redirect('pretraga')
  262.  
  263.  
  264. def signin(request):
  265.  
  266. if request.method == 'POST':
  267.  
  268. mail = request.POST['mail']
  269. password = request.POST['pswd']
  270.  
  271. args = [mail, password]
  272.  
  273. if not validation(request, args):
  274. return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
  275.  
  276. if User.objects.filter(email=mail).exists():
  277. user = User.objects.get(email=mail)
  278. else:
  279. sweetify.sweetalert(request, title="Korisnik ne postoji", text="Korisnik sa unesenom email adresom ne postoji", icon="error", timer=10000)
  280. return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
  281.  
  282. if user.check_password(password):
  283. if UserProfile.objects.get(userID=user).verified:
  284. login(request, user)
  285. else:
  286. sweetify.error(request, 'Mail nije verifikovan', text='Molimo potvrdite svoju registraciju klikom na link u mailu', icon="error", timer=10000)
  287.  
  288. if Employee.objects.filter(userID=request.user).exists():
  289. return redirect('pretraga')
  290. else:
  291. return redirect('dashboard')
  292.  
  293.  
  294. def signout(request):
  295.  
  296. logout(request)
  297. c = {}
  298. c.update(csrf(request))
  299. return redirect('home')
  300.  
  301.  
  302. def editprofil(request):
  303.  
  304. #edit profil kompanije
  305.  
  306. if request.user.is_authenticated:
  307. user = request.user
  308. userP = UserProfile.objects.get(userID=user)
  309. gradovi = City.objects.all()
  310. comp = Company.objects.get(userID=user)
  311. cat = Category.objects.filter(type=0)
  312.  
  313. return render(request, 'editProfilTvrtka.html', {'user': user, 'gradovi': gradovi, 'userP': userP, 'comp': comp, 'cat': cat})
  314. else:
  315. redirect('home')
  316.  
  317. #potrebno dodati edit profil osobe
  318.  
  319.  
  320. def submitchange(request):
  321.  
  322. if request.user.is_authenticated:
  323.  
  324. if request.method == "POST":
  325. name = request.POST['naslov']
  326. mail = request.POST['email']
  327. brojtel = request.POST['brojTel']
  328. grad = request.POST['city']
  329. cat = request.POST.get('category', None)
  330. brojuposlenika = request.POST['brojuposlenih']
  331. opis = request.POST['opis']
  332. slika = request.FILES.get('profilePicture', default=None)
  333.  
  334. args = [name, mail, brojtel, grad, cat, brojuposlenika, opis]
  335.  
  336. if not validation(request, args):
  337. return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
  338.  
  339. user = request.user
  340. userP = UserProfile.objects.get(userID=user)
  341. comp = Company.objects.get(userID=user)
  342. category = Category.objects.get(name=cat)
  343.  
  344. if validateMail(mail):
  345.  
  346. usermail = True
  347.  
  348. if mail != user.email:
  349. usermail = False
  350.  
  351. if User.objects.filter(email=mail).exists():
  352. sweetify.error(request, 'Mail već postoji',
  353. text='molimo izaberite novi mail', icon="error",
  354. timer=10000)
  355. return HttpResponseRedirect(request.META.get('HTTP_REFERER', '/'))
  356.  
  357. user.first_name = name
  358. user.email = mail
  359. userP.location = grad
  360. userP.brojtelefona = brojtel
  361. if slika:
  362. userP.image = slika
  363. comp.categoryID = category
  364. comp.brojuposlenih = brojuposlenika
  365. comp.opis = opis
  366.  
  367. user.save()
  368. userP.save()
  369. comp.save()
  370.  
  371. if usermail is False:
  372.  
  373. sweetify.success(request, 'Molimo verifikujte svoj mail', icon="success", timer=10000)
  374. sendmail(request, user, mail)
  375. logout(request)
  376.  
  377. else:
  378. sweetify.error(request, 'Mail nije validan',
  379. text='molimo unesite validnu email adresu', icon="error",
  380. timer=10000)
  381.  
  382. return redirect('profil')
  383.  
  384.  
  385. def onama(request):
  386.  
  387. if request.user.is_authenticated:
  388. userP = UserProfile.objects.get(userID=request.user)
  389. auth = True
  390. return render(request, 'onamanew.html', {'user': request.user, 'auth': auth, 'userP': userP, 'industries': None})
  391. else:
  392. auth = False
  393. industries = Category.objects.filter(type=0)
  394. return render(request, 'onamanew.html', {'user': request.user, 'auth': auth, 'industries': industries})
  395.  
  396.  
  397. def konsalting(request):
  398.  
  399. if request.user.is_authenticated:
  400. user = request.user
  401. userP = UserProfile.objects.get(userID=user)
  402. return render(request, 'konsalting.html', {'user': user, 'userP':userP, 'auth': True, 'industries': None})
  403. else:
  404. industries = Category.objects.filter(type=0)
  405. return render(request, 'konsalting.html', {'user': None, 'userP':None, 'auth': False, 'industries': industries})
  406.  
  407.  
  408. def pretraga(request):
  409.  
  410. auth = False
  411.  
  412. if request.user.is_authenticated:
  413.  
  414. auth = True
  415.  
  416. user = request.user
  417. userP = UserProfile.objects.get(userID=user)
  418.  
  419. if request.POST.get('pretragaTrigger', "False") == "True":
  420. grad = request.POST.get('gradovi', None)
  421. kategorija = request.POST.get('kategorije', None)
  422. kljucnaRijec = request.POST.get('kljucnaRijec', None)
  423.  
  424. if Company.objects.filter(userID=user).exists():
  425.  
  426. userComp = Company.objects.get(userID=user)
  427. if userComp.categoryID.name == "Finansijske":
  428. posts = Post.objects.all().filter(type=2).exclude().exclude(categoryID__name="Osiguravajuće").exclude(expires_at__lte=datetime.now())
  429. elif userComp.categoryID.name == "Osiguravajuće":
  430. posts = Post.objects.all().filter(type=2).exclude().exclude(categoryID__name="Finansijske").exclude(expires_at__lte=datetime.now())
  431. elif superUser(request.user):
  432. posts = Post.objects.all().exclude(expires_at__lte=datetime.now())
  433. else:
  434. posts = Post.objects.all().filter(type=2).exclude(categoryID__name="Finansijske").exclude(categoryID__name="Osiguravajuće").exclude(expires_at__lte=datetime.now())
  435. else:
  436. posts = Post.objects.filter(type=1).exclude(expires_at__lte=datetime.now())
  437.  
  438. if grad is not None:
  439. posts = posts.filter(location=grad)
  440. if kategorija is not None:
  441. ind = Category.objects.get(name=kategorija)
  442. posts = posts.filter(categoryID=ind)
  443. if kljucnaRijec is not "":
  444. posts = posts.filter(Q(title__contains=kljucnaRijec) | Q(content__contains=kljucnaRijec))
  445.  
  446. else:
  447. if Company.objects.filter(userID=user).exists():
  448. posts = Post.objects.all().filter(type=2)
  449. else:
  450. posts = Post.objects.all().filter(type=1)
  451.  
  452. data = posts.exclude(expires_at__lte= datetime.now())
  453. counter = data.count()
  454. data = list(data)
  455. userP = UserProfile.objects.get(userID=user)
  456. gradovi = City.objects.all()
  457. cat = Category.objects.filter(type=1)
  458. users = User.objects.all()
  459. userPs = UserProfile.objects.all()
  460. btb = ["Ponuda", "Potražnja", "Partnerstvo"]
  461. return render(request, 'pretrazi.html',
  462. {'iterRange': range(0,counter,3),'user': user, 'data': data, 'gradovi': gradovi, 'cat': cat, 'userP': userP, 'auth': auth, 'counter': counter, 'users': users, 'userPs': userPs, 'btb': btb})
  463. else:
  464. return redirect('home')
  465.  
  466.  
  467. def dashboard(request):
  468.  
  469. if request.user.is_authenticated:
  470.  
  471. if Company.objects.filter(userID=request.user).exists():
  472.  
  473. userP = UserProfile.objects.get(userID=request.user)
  474. activePosts = Post.objects.filter(userID=request.user).exclude(soft_delete=True)
  475. inactivePosts = Post.objects.filter(userID=request.user).exclude(soft_delete=False)
  476. company = Company.objects.get(userID=request.user)
  477. relevantPosts = Post.objects.filter(categoryID=company.categoryID)
  478.  
  479. return render(request, 'dashboard.html', {'user': request.user, 'userP': userP, 'auth': True, 'ind': None, 'activepPosts': activePosts, 'inactivePosts': inactivePosts, 'relevantPosts': relevantPosts})
  480. else:
  481. return HttpResponseRedirect(request.META.get('HTTP_RENDERER', '/'))
  482.  
  483. else:
  484. return HttpResponseRedirect(request.META.get('HTTP_RENDERER', '/'))
  485.  
  486.  
  487. def testPretraga(request):
  488.  
  489. auth = False
  490.  
  491. if request.user.is_authenticated:
  492.  
  493. auth = True
  494.  
  495. user = request.user
  496. userP = UserProfile.objects.get(userID=user)
  497.  
  498. if request.POST.get('pretragaTrigger', "False") == "True":
  499. grad = request.POST.get('gradovi', None)
  500. kategorija = request.POST.get('kategorije', None)
  501. kljucnaRijec = request.POST.get('kljucnaRijec', None)
  502.  
  503. if Company.objects.filter(userID=user).exists():
  504.  
  505. userComp = Company.objects.get(userID=user)
  506. if userComp.categoryID.name == "Finansijske":
  507. posts = Post.objects.all().filter(type=2).exclude().exclude(
  508. categoryID__name="Osiguravajuće").exclude(expires_at__lte=datetime.now())
  509. elif userComp.categoryID.name == "Osiguravajuće":
  510. posts = Post.objects.all().filter(type=2).exclude().exclude(categoryID__name="Finansijske").exclude(
  511. expires_at__lte=datetime.now())
  512. elif superUser(request.user):
  513. posts = Post.objects.all().exclude(expires_at__lte=datetime.now())
  514. else:
  515. posts = Post.objects.all().filter(type=2).exclude(categoryID__name="Finansijske").exclude(
  516. categoryID__name="Osiguravajuće").exclude(expires_at__lte=datetime.now())
  517. else:
  518. posts = Post.objects.filter(type=1).exclude(expires_at__lte=datetime.now())
  519.  
  520. if grad is not None:
  521. posts = posts.filter(location=grad)
  522. if kategorija is not None:
  523. ind = Category.objects.get(name=kategorija)
  524. posts = posts.filter(categoryID=ind)
  525. if kljucnaRijec is not "":
  526. posts = posts.filter(Q(title__contains=kljucnaRijec) | Q(content__contains=kljucnaRijec))
  527.  
  528. else:
  529. if Company.objects.filter(userID=user).exists():
  530. posts = Post.objects.all().filter(type=2)
  531. else:
  532. posts = Post.objects.all().filter(type=1)
  533.  
  534. data = posts.exclude(expires_at__lte=datetime.now())
  535.  
  536. userP = UserProfile.objects.get(userID=user)
  537. gradovi = City.objects.all()
  538. cat = Category.objects.filter(type=1)
  539. counter = data.count()
  540. users = User.objects.all()
  541. userPs = UserProfile.objects.all()
  542. btb = ["Ponuda", "Potražnja", "Partnerstvo"]
  543. return render(request, 'testPretraga.html',
  544. {'user': user, 'data': data, 'gradovi': gradovi, 'cat': cat, 'userP': userP, 'auth': auth,
  545. 'counter': counter, 'users': users, 'userPs': userPs, 'btb': btb})
  546. else:
  547. return redirect('home')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement