Advertisement
Guest User

Untitled

a guest
Mar 28th, 2019
169
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.45 KB | None | 0 0
  1. import datetime
  2.  
  3. from django.contrib.auth import authenticate, login
  4. from django.shortcuts import render, redirect
  5. from emails.emails import send_review_email
  6.  
  7. from django.db.models import Count
  8. from apartments.models import Apartment
  9. from authentication.forms import RegisterForm, LoginForm
  10. from authentication.models import Profile
  11. from apartments.models import Apartment, Contract
  12. from review.models import CompleteReview, UserReview, ApartmentReview
  13. from django.contrib import messages
  14. from django.db.models import Q
  15.  
  16.  
  17. def contract_apartments_match(contract):
  18. print(Apartment.objects.filter(Q(contracts=contract)))
  19.  
  20. try:
  21. return Apartment.objects.get(Q(contracts__in=[contract]))
  22. except:
  23. return None
  24.  
  25. # for apartment in apartments.all():
  26. # if contract in apartment.contracts.all():
  27. # return apartment
  28. # return None
  29.  
  30.  
  31. # Finding expired contracts that are not yet used in a review
  32. def filter_contracts():
  33. contracts = Contract.objects.filter(
  34. Q(review_made=False) &
  35. Q(pending=False) &
  36. Q(owner_approved=True) &
  37. Q(end_date__lt=datetime.datetime.today().strftime('%Y-%m-%d')))
  38.  
  39. return contracts
  40.  
  41. # contracts_set = Contract.objects.filter(Q(review_made=False) & Q(pending=False))
  42. # contracts = [contract for contract in contracts_set if contract.end_date < datetime.datetime.today().date()]
  43. # for contract in contracts:
  44. # contract.review_made = True
  45. # contract.save()
  46. # all_apartments = Apartment.objects.all()
  47. # apartments = [contract_apartments_match(contract, all_apartments) for contract in contracts]
  48. # return contracts, apartments
  49.  
  50.  
  51. # Sending email with url
  52. def send_email(receiver, url):
  53. send_review_email(url, receiver)
  54.  
  55.  
  56. # Creating new review models for expired contracts
  57. def create_review_models():
  58. contracts = filter_contracts()
  59. print(contracts)
  60. for contract in contracts:
  61. print("HEI")
  62. apartment = contract_apartments_match(contract)
  63. print(contract, apartment)
  64. subtenant_review = UserReview.objects.create(user_to_be_reviewed=contract.tenant,
  65. user_to_review=apartment.owner)
  66. tenant_review = UserReview.objects.create(user_to_be_reviewed=apartment.owner,
  67. user_to_review=contract.tenant)
  68. apartment_review = ApartmentReview.objects.create(apartment_to_be_reviewed=apartment,
  69. user_to_review=contract.tenant)
  70. CompleteReview.objects.create(apartment_review=apartment_review,
  71. review_of_tenant=tenant_review,
  72. review_of_subtenant=subtenant_review,
  73. contract=contract)
  74. url = "https://sharebb.herokuapp.com/to_review/" + str(apartment.owner.pk) + "/" + str(contract.tenant.pk)\
  75. + "/" + str(apartment.pk) + "/" + str(contract.pk)
  76. send_email(contract.tenant.email, url)
  77. send_email(apartment.owner.email, url)
  78.  
  79. contracts.update(review_made=True)
  80.  
  81.  
  82. def landing_page(request):
  83. create_review_models()
  84. form = RegisterForm()
  85.  
  86. distinct_cities = Apartment.objects.values('city').distinct().count()
  87. distinct_apartments = Apartment.objects.all().count()
  88.  
  89. if request.method == 'GET':
  90. context = {
  91. 'form': form,
  92. 'distinct_cities': distinct_cities,
  93. 'distinct_apartments': distinct_apartments
  94. }
  95. return render(request, 'landingpage/landing-page.html', context)
  96.  
  97. else: # POST
  98. if request.POST.get("first_name"): # Register
  99. print("Registrering")
  100. form = RegisterForm(request.POST)
  101. if form.is_valid():
  102. user = form.save(commit=False)
  103.  
  104. # Cleaned (normalized) data
  105. email = form.cleaned_data['email'].lower()
  106. password = form.cleaned_data['password']
  107. user.set_password(password)
  108. user.save()
  109.  
  110. # Returns User objects if credentials are correct
  111. user = authenticate(email=email, password=password)
  112.  
  113. if user is not None:
  114. if user.is_active:
  115. login(request, user) # User is logged in
  116. messages.success(request, 'Du er nå registrert og logget inn!')
  117. return redirect('/')
  118. else:
  119. messages.warning(request, form.errors)
  120. return render(request, 'landingpage/landing-page.html', {'form': form, 'distinct_cities': distinct_cities,
  121. 'distinct_apartments': distinct_apartments})
  122. else:
  123. email = request.POST.get("email").lower()
  124. password = request.POST.get("password")
  125. user = authenticate(request, email=email, password=password)
  126. if user is not None:
  127. login(request, user)
  128. messages.success(request, 'Du er nå logget inn!')
  129. return redirect('landing-page')
  130. else:
  131. messages.error(request, 'Fant dessverre ikke brukeren, prøv på nytt')
  132. return redirect('landing-page')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement