コード例 #1
0
ファイル: views.py プロジェクト: evanson/job_matcher
def add_job(request):
    try:
        form = JobForm(request.POST or None)
        if form.is_valid():
            required_skills = set(form.cleaned_data["required_skills"])
            optional_skills = set(form.cleaned_data["optional_skills"]) - required_skills
            with transaction.atomic():
                employer = Employer.objects.get(user=request.user)
                job = Job(
                    employer=employer,
                    description=form.cleaned_data["description"],
                    category=form.cleaned_data["category"],
                    years_of_experience=form.cleaned_data["years_of_experience"],
                    other=form.cleaned_data["other"],
                )
                job.save()
                for skill in required_skills:
                    skill = RequiredJobSkill(job=job, skill=skill)
                    skill.save()
                if optional_skills:
                    for skill in optional_skills:
                        skill = OptionalJobSkill(job=job, skill=skill)
                        skill.save()
            match_job.delay(job.id)

            messages.success(request, "Job saved successfully. You'll receive matching candidates soon")
            return HttpResponseRedirect("/")
        return render(request, "jobs/add_job.html", {"form": form})
    except Exception, e:
        logging.exception(e)
        return server_error(request)
コード例 #2
0
ファイル: views.py プロジェクト: evanson/job_matcher
def user_profile(request):
    try:
        user = request.user
        user_profile = UserProfile.objects.get(user=user)
        return render(request, 'accounts/profile.html', {'user': user,
                                                         'user_profile': user_profile})
    except Exception, e:
        logging.exception(e)
        return server_error(request)
コード例 #3
0
ファイル: views.py プロジェクト: evanson/job_matcher
def job_matches(request, id):
    try:
        job = Job.objects.get(id=id)
        matches = JobMatch.objects.filter(job=job, status="interested").order_by("-score")
        page = request.GET.get("page")
        paginator = Paginator(matches, PER_PAGE)
        try:
            pager = paginator.page(page)
        except PageNotAnInteger:
            pager = paginator.page(1)
        except EmptyPage:
            pager = paginator.page(paginator.num_pages)

        return render(request, "jobs/job_matches.html", {"pager": pager, "job": job})
    except Exception, e:
        logging.exception(e)
        return server_error(request)
コード例 #4
0
ファイル: views.py プロジェクト: evanson/job_matcher
def my_jobs(request):
    try:
        employer = Employer.objects.get(user=request.user)
        jobs = Job.objects.filter(employer=employer).order_by("-created_at")
        page = request.GET.get("page")
        paginator = Paginator(jobs, PER_PAGE)
        try:
            pager = paginator.page(page)
        except PageNotAnInteger:
            pager = paginator.page(1)
        except EmptyPage:
            pager = paginator.page(paginator.num_pages)

        return render(request, "jobs/my_jobs.html", {"pager": pager})
    except Exception, e:
        logging.exception(e)
        return server_error(request)
コード例 #5
0
ファイル: views.py プロジェクト: evanson/job_matcher
def mark_interest_in_job(request, id):
    try:
        job = Job.objects.get(id=id)
        seeker = JobSeeker.objects.get(user=request.user)
        match = JobMatch.objects.get(job=job, seeker=seeker)
        form = InterestForm(request.POST or None)
        if form.is_valid():
            match.status = form.cleaned_data["status"]
            match.save()

            messages.success(request, "Your interest in the job has been marked as %s" % match.get_status_display())
            return HttpResponseRedirect("/")

        return render(request, "jobs/mark_interest.html", {"job": job, "form": form, "match": match})
    except Exception, e:
        logging.exception(e)
        return server_error(request)
コード例 #6
0
ファイル: views.py プロジェクト: evanson/job_matcher
def my_job_matches(request):
    try:
        seeker = JobSeeker.objects.get(user=request.user)
        matches = JobMatch.objects.filter(seeker=seeker).order_by("-created_at", "-score")
        page = request.GET.get("page")
        paginator = Paginator(matches, PER_PAGE)
        try:
            pager = paginator.page(page)
        except PageNotAnInteger:
            pager = paginator.page(1)
        except EmptyPage:
            pager = paginator.page(paginator.num_pages)

        return render(request, "jobs/my_job_matches.html", {"pager": pager})
    except Exception, e:
        logging.exception(e)
        return server_error(request)
コード例 #7
0
ファイル: views.py プロジェクト: evanson/job_matcher
def signup_confirm(request, activation_key):
    try:
        if request.user.is_authenticated():
            return HttpResponseRedirect('/')

        user_profile = get_object_or_404(UserProfile, activation_key=activation_key)
        if user_profile.key_expires < timezone.now():
            messages.error(request, "Your account confirmation period has expired")
            return HttpResponseRedirect('/')
        user = user_profile.user
        user.is_active = True
        user.save()
        messages.success(request, "You've successfully activated your account")
        return HttpResponseRedirect('/')
    except ObjectDoesNotExist:
        return Http404()
    except Exception, e:
        logging.exception(e)
        return server_error(request)