def engage_opportunity(request): context = {} pid = request.REQUEST.get('projectId') oid = request.REQUEST.get('opportunityId') response = {} if pid and oid: opp = get_object_or_404(Opportunity, pk=oid) message = request.REQUEST.get('message') link = request.REQUEST.get('link') if link: message += '<br /></br />%s' % link if OpportunityEngagement.objects.filter(user=request.user, opportunity=opp, project_id=pid): response['message'] = "You are already engaged with this opportunity." else: opp_eng = OpportunityEngagement(user=request.user, opportunity=opp, project_id=pid) opp_eng.response = response opp_eng.save() subject = "New engagement with %s by %s" % (opp.name, request.user.email) html_content = ""%s"<br/><br/>%s" % (message, opp.project.name) html_content = html_content + " / <a href='http://%s/project/%s/opportunity/%s'>%s</a><br /><br />" % (request.get_host(), opp.project.id, opp.id, opp.name) html_content = html_content + "<a href='http://%s/admin/website/opportunityengagement/%s'>approve</a>""" % (request.get_host(), opp_eng.id) base.send_email(opp.project.created_by.email, subject, html_content, html_content=html_content) base.send_admin_email(subject, html_content, html_content=html_content) response['message'] = "Thanks for your request. A project lead will get back to you as soon as possible." else: response['message'] = "No project or opportunity id." return HttpResponse(json.dumps(response), mimetype="application/json")
def forgot_password(request): context = {} if request.POST: email = request.POST.get("email") try: reset_user = User.objects.get(username=email) except User.DoesNotExist: reset_user = None if not reset_user: context["invalid_email"] = True else: temp_password = hashlib.md5(str(random.randint(0, 10000000))).hexdigest()[0:7] reset_user.set_password(temp_password) reset_user.save() subj = "[%s] Your password has been reset" % request.get_host() body = """By request, we've reset your password. <a href='http://%s/reset-password?t=%s&e=%s'> Choose a new password</a><br/><br/>Always happy to help,<br/>Reallocate""" % ( request.get_host(), temp_password, urlquote(email), ) base.send_email(email, subj, body, html_content=body) response = HttpResponseRedirect("/") alert = {"type": "success", "message": "Your password has been reset"} response.set_cookie("alert", json.dumps(alert), max_age=2) return response context["email"] = request.GET.get("email", "") return render(request, "forgot_password.html", context)
def change_project(request, *args): if request.user.is_staff: project_id = request.REQUEST.get('id', '') try: project = Project.objects.get(pk=project_id) except Exception, error: return HttpResponse(json.dumps({'success': False, 'message': 'Invalid project ID'}), status=500) if request.REQUEST.get('action') == 'approve' or request.REQUEST.get('action') == 'open': project.status = 'Active' project.save() subject = "Your ReAllocate project has been approved!" html_content = "Congratulations, your project "%s" has been reviewed and approved." % project.name html_content = html_content + "<br><br>This project is now live and can be viewed at <a href='%s'>%s</a>.<br>" % (project.get_url(request), project.get_url(request)) base.send_email(project.created_by.email, subject, html_content, html_content=html_content) response = { "success": True } elif request.REQUEST.get('action') == 'close': project.status = 'Closed' project.save() response = { "success": True } elif request.REQUEST.get('action') == 'delete': project.delete() response = { "success": True } return HttpResponse(json.dumps(response), mimetype="application/json")
def sign_up(request): context = {} context["referrer"] = request.META.get("HTTP_REFERER", "/") if re.search(r"\/get-started", context["referrer"]): context["next"] = "/organization/new" else: context["next"] = context["referrer"] if settings.INVITE_ONLY: if request.GET.get("invite") or request.COOKIES.get("invite"): response = render(request, "sign_up.html", context) if request.GET.get("invite"): response.set_cookie("invite", request.GET["invite"], max_age=2) return response else: return render(request, "request_invite.html", context) elif not request.POST: return render(request, "sign_up.html", context) response = HttpResponseRedirect(request.POST.get("next", "/")) if request.POST.get("request-invite"): email = request.POST.get("email") name = request.POST.get("name") subject = "%s" % email content = "A new account invite request has been submitted:\n\n\t- %s\n\t- %s" % (name, email) if request.POST.get("blurb"): content += "\n\n%s" % request.POST.get("blurb") if request.POST.get("contribute"): content += "\n\nI would like to contribute my skills, knowledge and/or resources." if request.POST.get("project"): content += "\n\nI have a project I would like to submit." base.send_email("*****@*****.**", subject, content) alert = { "type": "modal", "message": "Thank you for your interest in Reallocate. Your invite request has been received.", } response.set_cookie("alert", json.dumps(alert), max_age=2) else: email = request.POST.get("email") password = request.POST.get("password") # Create a new user and persist it to the database. user = User.objects.create_user(username=email, email=email, password=password) user.save() user = authenticate(username=email, password=password) login(request, user) email_context = {"email": email, "user": user} base.send_email_template(request, "welcome", email_context, "Welcome to ReAllocate!", [email]) subject = "[%s] %s %s has joined ReAllocate" % (request.get_host(), user.first_name, user.last_name) html_content = "Username: %s <br /><br />Name: %s %s<br /><br />Email: %s <br /><br />" % ( user.username, user.first_name, user.last_name, user.email, ) base.send_admin_email(subject, html_content, html_content=html_content) return response