Exemplo n.º 1
0
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))
Exemplo n.º 2
0
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))
Exemplo n.º 3
0
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))
Exemplo n.º 4
0
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))