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)
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)
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)
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)
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)
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)
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)