def approve_userapplication(request, application_id): application = get_object_or_404(UserApplication, pk=application_id) if not request.user.get_profile() in application.project.leaders.all(): return HttpResponseForbidden('<h1>Access Denied</h1>') if application.state != Application.WAITING_FOR_LEADER: return render_to_response('applications/unable_to_approve.html', {'application': application}, context_instance=RequestContext(request)) if request.method == 'POST': form = LeaderApproveUserApplicationForm(request.POST, instance=application) if form.is_valid(): application = form.save() if settings.ADMIN_APPROVE_ACCOUNTS: application.state = Application.WAITING_FOR_ADMIN application.save() send_notify_admin(application, request.user.get_full_name()) log(request.user, application.application_ptr, 2, 'Leader approved application') return HttpResponseRedirect(reverse('kg_userapplication_pending', args=[application.id])) application.approve() send_account_approved_email(application) log(request.user, application.application_ptr, 2, 'Application fully approved') return HttpResponseRedirect(reverse('kg_userapplication_complete', args=[application.id])) else: form = LeaderApproveUserApplicationForm(instance=application) return render_to_response('applications/approve_application.html', {'form': form, 'application': application}, context_instance=RequestContext(request))
def send_invitation(request, project_id): project = get_object_or_404(Project, pk=project_id) if not request.user.get_profile() in project.leaders.all(): return HttpResponseForbidden('<h1>Access Denied</h1>') application = None if request.method == 'POST': form = LeaderInviteUserApplicationForm(request.POST, instance=application) if form.is_valid(): email = form.cleaned_data['email'] try: existing = Person.active.get(user__email=email) except Person.DoesNotExist: existing = False if existing and not 'existing' in request.REQUEST: return render_to_response('applications/userapplication_invite_existing.html', {'form': form, 'person': existing}, context_instance=RequestContext(request)) application = form.save(commit=False) try: applicant = Person.active.get(user__email=email) except Person.DoesNotExist: applicant, created = Applicant.objects.get_or_create(email=email) application.applicant = applicant application.project = project application.save() if application.content_type.model == 'person': application.approve() send_account_approved_email(application) messages.warning(request, "%s was added to project %s directly since they have an existing account." % (application.applicant, application.project)) log(request.user, application.application_ptr, 1, "%s added directly to %s" % (applicant, project)) return HttpResponseRedirect(application.applicant.get_absolute_url()) send_user_invite_email(application) messages.success(request, "Invitation sent to %s." % email) log(request.user, application.application_ptr, 1, 'Invitation sent') return HttpResponseRedirect(reverse('kg_user_profile')) else: form = LeaderInviteUserApplicationForm(instance=application) return render_to_response('applications/leaderuserapplication_invite_form.html', {'form': form, 'application': application, 'project': project}, context_instance=RequestContext(request))
def approve_userapplication(request, application_id): application = get_object_or_404(UserApplication, pk=application_id) if application.state != Application.WAITING_FOR_ADMIN: raise Http404 if request.method == 'POST': form = LeaderApproveUserApplicationForm(request.POST, instance=application) if form.is_valid(): application = form.save() person = application.approve() send_account_approved_email(application) messages.success(request, "Application approved successfully") log(request.user, application.application_ptr, 2, 'Application fully approved') return HttpResponseRedirect(person.get_absolute_url()) else: form = LeaderApproveUserApplicationForm(instance=application) return render_to_response('applications/approve_application.html', {'form': form, 'application': application}, context_instance=RequestContext(request))
def send_invitation(request): application = None if request.method == 'POST': form = AdminInviteUserApplicationForm(request.POST, instance=application) if form.is_valid(): email = form.cleaned_data['email'] try: existing = Person.active.get(user__email=email) except Person.DoesNotExist: existing = False if existing and not 'existing' in request.REQUEST: return render_to_response( 'applications/userapplication_invite_existing.html', {'form': form, 'person': existing}, context_instance=RequestContext(request)) application = form.save(commit=False) application.applicant = Applicant.objects.create(email=email) application.save() if application.content_type.model == 'person': application.approve() messages.warning(request, "%s was added to project %s directly since they have an existing account." % (application.applicant, application.project)) log(request.user, application.application_ptr, 1, "%s added directly to %s" % (application.applicant, application.project)) send_account_approved_email(application) return HttpResponseRedirect(application.applicant.get_absolute_url()) send_user_invite_email(application) messages.success(request, "Invitation sent to %s." % email) log(request.user, application.application_ptr, 1, 'Invitation sent') return HttpResponseRedirect(application.get_absolute_url()) else: form = AdminInviteUserApplicationForm(instance=application) return render_to_response('applications/userapplication_invite_form.html', {'form': form, 'application': application}, context_instance=RequestContext(request))