X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=portal%2Factions.py;h=b272e2dcc34d20628185bbed42760c1c83d61aa9;hb=3299a047a1c9d2f260947404e672e3df6147f4b5;hp=ea87918f6c5988036ffde2fc39564761442185a6;hpb=1b585d116ff4ec2538326740c36562735ea25ff6;p=unfold.git diff --git a/portal/actions.py b/portal/actions.py index ea87918f..b272e2dc 100644 --- a/portal/actions.py +++ b/portal/actions.py @@ -406,6 +406,10 @@ def reject_action(request, **kwargs): def portal_reject_request(wsgi_request, request_ids): status = {} + # get the domain url + current_site = Site.objects.get_current() + current_site = current_site.domain + if not isinstance(request_ids, list): request_ids = [request_ids] @@ -424,16 +428,33 @@ def portal_reject_request(wsgi_request, request_ids): request_status['SFA user'] = {'status': True } # getting user email based on id ## RAW SQL queries on Django DB- https://docs.djangoproject.com/en/dev/topics/db/sql/ - for user in PendingUser.objects.raw('SELECT id,email FROM portal_pendinguser WHERE id = %s', [request['id']]): + for user in PendingUser.objects.raw('SELECT * FROM portal_pendinguser WHERE id = %s', [request['id']]): user_email= user.email - - # get the domain url - current_site = Site.objects.get_current() - current_site = current_site.domain - - subject = 'User validation denied.' - msg = 'You have recently registered to ' + current_site + '. We are sorry to inform you that, a manager of your institution has rejected your request. Please contact the manager of your institution for further information. For any other queries, contact us by replying to this email.' - send_mail(subject, msg, 'support@onelab.eu',[user_email], fail_silently=False) + first_name = user.first_name + last_name = user.last_name + + ctx = { + 'first_name' : first_name, + 'last_name' : last_name, + 'portal_url' : current_site, + } + try: + theme.template_name = 'user_request_denied.txt' + text_content = render_to_string(theme.template, ctx) + theme.template_name = 'user_request_denied.html' + html_content = render_to_string(theme.template, ctx) + theme.template_name = 'email_default_sender.txt' + sender = render_to_string(theme.template, ctx) + sender = sender.replace('\n', '') + + subject = 'User request denied.' + + msg = EmailMultiAlternatives(subject, text_content, sender, [user_email]) + msg.attach_alternative(html_content, "text/html") + msg.send() + except Exception, e: + print "Failed to send email, please check the mail templates and the SMTP configuration of your server" + # removing from Django auth_user UserModel = get_user_model() UserModel._default_manager.filter(email__iexact = user_email).delete() @@ -462,10 +483,78 @@ def portal_reject_request(wsgi_request, request_ids): request_status['SFA authority'] = {'status': False, 'description': str(e)} elif request['type'] == 'slice': - request_status['SFA slice'] = {'status': True } + request_status['SFA slice'] = {'status': True } + + # getting user email based on id + ## RAW SQL queries on Django DB- https://docs.djangoproject.com/en/dev/topics/db/sql/ + for user in PendingSlice.objects.raw('SELECT * FROM portal_pendingslice WHERE id = %s', [request['id']]): + user_email= user.type_of_nodes # XXX type_of_nodes field contains the email [shd be renamed in DB] + slice_name = user.slice_name + purpose = user.purpose + url = user.number_of_nodes + + ctx = { + 'slice_name': slice_name, + 'purpose': purpose, + 'url': url, + 'portal_url': current_site, + } + try: + theme.template_name = 'slice_request_denied.txt' + text_content = render_to_string(theme.template, ctx) + theme.template_name = 'slice_request_denied.html' + html_content = render_to_string(theme.template, ctx) + theme.template_name = 'email_default_sender.txt' + sender = render_to_string(theme.template, ctx) + sender = sender.replace('\n', '') + + subject = 'Slice request denied.' + + msg = EmailMultiAlternatives(subject, text_content, sender, [user_email]) + msg.attach_alternative(html_content, "text/html") + msg.send() + except Exception, e: + print "Failed to send email, please check the mail templates and the SMTP configuration of your server" + PendingSlice.objects.get(id=request['id']).delete() + elif request['type'] == 'authority': - request_status['SFA authority'] = {'status': True } + request_status['SFA authority'] = {'status': True } + + # getting user email based on id + ## RAW SQL queries on Django DB- https://docs.djangoproject.com/en/dev/topics/db/sql/ + for user in PendingAuthority.objects.raw('SELECT * FROM portal_pendingauthority WHERE id = %s', [request['id']]): + user_email= user.address_line1 # XXX address_line1 field contains the email [shd be renamed in DB] + site_name = user.site_name + city = user.address_city + country = user.address_country + short_name = user.site_abbreviated_name + url = user.site_url + + ctx = { + 'site_name': site_name, + 'short_name': short_name, + 'url': url, + 'city': city, + 'country': country, + 'portal_url' : current_site, + } + + try: + theme.template_name = 'authority_request_denied.txt' + text_content = render_to_string(theme.template, ctx) + theme.template_name = 'authority_request_denied.html' + html_content = render_to_string(theme.template, ctx) + theme.template_name = 'email_default_sender.txt' + sender = render_to_string(theme.template, ctx) + sender = sender.replace('\n', '') + subject = 'Authority request denied.' + msg = EmailMultiAlternatives(subject, text_content, sender, [user_email]) + msg.attach_alternative(html_content, "text/html") + msg.send() + except Exception, e: + print "Failed to send email, please check the mail templates and the SMTP configuration of your server" + PendingAuthority.objects.get(id=request['id']).delete() status['%s__%s' % (request['type'], request['id'])] = request_status @@ -527,9 +616,24 @@ def create_slice(wsgi_request, request): raise Exception, "Could not create %s. Already exists ?" % slice_params['hrn'] else: clear_user_creds(wsgi_request,user_email) - subject = 'Slice created' - msg = 'A manager of your institution has validated your slice request. You can now add resources to the slice and start experimenting.' - send_mail(subject, msg, 'support@onelab.eu',[user_email], fail_silently=False) + + try: + theme.template_name = 'slice_request_validated.txt' + text_content = render_to_string(theme.template, request) + theme.template_name = 'slice_request_validated.html' + html_content = render_to_string(theme.template, request) + + theme.template_name = 'email_default_sender.txt' + sender = render_to_string(theme.template, request) + sender = sender.replace('\n', '') + + subject = 'Slice request validated' + + msg = EmailMultiAlternatives(subject, text_content, sender, [user_email]) + msg.attach_alternative(html_content, "text/html") + msg.send() + except Exception, e: + print "Failed to send email, please check the mail templates and the SMTP configuration of your server" return results @@ -542,8 +646,9 @@ def create_pending_slice(wsgi_request, request, email): slice_name = request['slice_name'], user_hrn = request['user_hrn'], authority_hrn = request['authority_hrn'], - number_of_nodes = request['url'], + number_of_nodes = request['url'], # field needs to be renamed purpose = request['purpose'], + type_of_nodes = request['email'] # field needs to be renamed ) s.save()