ForgotPass: Check the entered email with the local:user in manifold db
[myslice.git] / portal / passresetview.py
1 import os.path, re
2 import json
3
4 from random                     import choice
5
6 from django.core.mail           import send_mail
7 from django.contrib             import messages
8 from django.views.generic       import View
9 from django.shortcuts           import render
10
11 from unfold.loginrequired       import FreeAccessView
12 from ui.topmenu                 import topmenu_items_live
13
14 from manifold.manifoldapi       import execute_admin_query
15 from manifold.core.query        import Query
16
17 from portal.forms               import PassResetForm
18 from portal.actions             import manifold_update_user
19
20
21 class PassResetView (FreeAccessView):
22     def post (self, request):
23         form = PassResetForm(request.POST) # A form bound to the POST data
24         if form.is_valid(): # All validation rules pass
25             # Process the data in form.cleaned_data
26             email = form.cleaned_data['email'] # email inserted on the form
27
28             user_query  = Query().get('local:user').select('user_id','email')
29             user_details = execute_admin_query(self.request, user_query)
30             
31             for user_detail in user_details:
32                 if user_detail['email']==email:
33                     sender = 'support@myslice.info'
34                     #recipients = authority_get_pi_emails(authority_hrn)
35                     recipients = [email ]
36                     pass_list = ['demo', 'test', 'abcdef']
37                     reset_pass = choice (pass_list)           
38                     msg = "Your password has been reset to: %s"% reset_pass + "\n\n Please use this temporary password to login and reset your password from MyAccount page."
39                     send_mail("Onelab Portal: Password reset request", msg, sender, recipients)
40                     return render(request,'pass_reset_sent.html') # Redirect after POST
41             else:
42                 messages.error(request, 'Sorry, this email is not registered.')
43                 return self._display (request, form)
44
45         else:
46             return self._display (request, form)
47
48     def get (self, request):
49         return self._display (request, PassResetForm()) # A fresh unbound form
50
51     def _display (self, request, form):
52         return render(request, 'pass_reset.html', {
53                 'form': form,
54                 })
55