def job_comment(request, job_id): try: job = JobOpportunity.objects.get(pk = job_id) except: return json_response({'result':'fail', 'error':'job not found'}) def list_comments(page, page_size): comments = CommentOnOpportunity.objects.filter(opportunity = job).order_by('-time') p = Paginator(comments, page_size) if page > p.num_pages: page = p.num_pages if page < 0: page = 0 comments = map(comment_to_dict, p.page(page).object_list) return json_response({'result': 'success', 'page':page, 'pageCount':p.num_pages , 'comments': comments}) if request.method == 'POST': action = request.POST['action'] if action == 'list': page_size = request.POST.get('page_size', 4) page = int(request.POST.get('page', 1)) return list_comments(page, page_size) elif action == 'add': page_size = request.POST.get('page_size', 4) body = request.POST['comment'] comment = CommentOnOpportunity.objects.create(opportunity = job, user = request.userprofile, body = body) if request.userprofile.is_jobseeker(): Event_CommentOnOpportunity.objects.create(comment=comment, initial_user=request.userprofile) return list_comments(1, page_size) else: return json_response({'result': 'fail', 'error': 'get not supported'})
def userpanel_changejobseekerinfo_privacy(request): is_true = lambda x: x == True or x == 'true' or x == 'True' if request.method == 'POST': profile = request.userprofile if 'access_profile_public' in request.POST: profile.access_profile_public = is_true(request.POST['access_profile_public']) if 'access_profile_jobseeker' in request.POST: profile.access_profile_jobseeker = int(request.POST['access_profile_jobseeker']) if 'access_profile_employer' in request.POST: profile.access_profile_employer = int(request.POST['access_profile_employer']) if 'access_cv_public' in request.POST: profile.access_cv_public = is_true(request.POST['access_cv_public']) if 'access_cv_jobseeker' in request.POST: profile.access_cv_jobseeker = int(request.POST['access_cv_jobseeker']) if 'access_cv_employer' in request.POST: profile.access_cv_employer = int(request.POST['access_cv_employer']) profile.save() permissions = { 'access_profile_public': profile.access_profile_public, 'access_profile_jobseeker': profile.access_profile_jobseeker, 'access_profile_employer': profile.access_profile_employer, 'access_cv_public': profile.access_cv_public, 'access_cv_jobseeker': profile.access_cv_jobseeker, 'access_cv_employer': profile.access_cv_employer } print(permissions) return json_response({'result': 'success', 'permissions': permissions}) else: return json_response({'result': 'fail', 'error': 'get not supported'})
def register_jobseeker_skills(request, session_name): if request.method == 'POST': return json_response({'result': 1}), True, None return json_response({ 'result': 1, 'data': render_to_string('accounts/register/jobseeker/skills.html', RequestContext(request)) }), False, None
def userpanel_changecompanyinfo_removeimage(request, image_id): try: comp_image = CompanyImage.objects.get(pk = image_id) except: return json_response({'result': 'fail', 'error': 'invalid id'}) if comp_image.employer != request.userprofile: return json_response({'result': 'fail', 'error': 'not authorized to delete this image'}) comp_image.delete() images = request.userprofile.images.all() images = map(lambda x: {'id': x.id, 'url': x.image.url}, images) return json_response({'result': 'success', 'images': images})
def acceptOffer(request, offerid): offer = JobOffer.objects.get(id = offerid) offer.state = 0 offer.offerDate = datetime.now() offer.save() Event_JobOffer.create(initial_user=offer.jobSeeker, jobOffer=offer) return json_response({})
def register_jobseeker_finalize(request, session_name): session_steps = request.session[session_name]['steps'] user = session_steps['user_info'] jobseeker = session_steps['personal_info'] jobseeker_work = session_steps['work_info'] user.save() jobseeker.user = user jobseeker.job_status = jobseeker_work.job_status dest_file = 'cv/cv_%s.pdf' % user.username src_file = 'cv/%s' % jobseeker_work.cv_filename f = open(settings.MEDIA_ROOT + src_file) jobseeker.cv.save(dest_file, File(f)) f.close() remove(settings.MEDIA_ROOT + src_file) jobseeker.save() skills = list(session_steps.get('skills', [])) for skill in skills: jobseeker.skills.add(Skill.objects.get_or_create(name=skill)[0]) del request.session[session_name] return json_response({ 'result': 1, 'data': render_to_string('accounts/register/final.html', RequestContext(request)) }), False, None
def profile_employer_comments(request, employer_id): def list_comments(page, page_size): comments = CommentOnEmployer.objects.filter(employer__id = employer_id).order_by('-time') p = Paginator(comments, page_size) if page > p.num_pages: page = p.num_pages if page < 0: page = 0 comments = map(comment_to_dict, p.page(page).object_list) return json_response({'result': 'success', 'page':page, 'pageCount':p.num_pages , 'comments': comments}) if request.method == 'POST': action = request.POST['action'] if action == 'list': page_size = request.POST.get('page_size', 4) page = int(request.POST.get('page', 1)) return list_comments(page, page_size) elif action == 'add': page_size = request.POST.get('page_size', 4) body = request.POST['comment'] employer = Employer.objects.get(pk = employer_id) comment = CommentOnEmployer.objects.create(employer = employer, user = request.userprofile, body = body) if request.userprofile.is_jobseeker(): Event_CommentOnEmployer.objects.create(comment=comment, initial_user=request.userprofile) return list_comments(1, page_size) else: return json_response({'result': 'fail', 'error': 'get not supported'})
def userpanel_changejobseekerinfo_skills(request): if request.method == 'POST': action = request.POST.get('action') if action == 'list possible': query = request.POST.get('query', '') if query == '': skills = Skill.objects.all() else: skills = Skill.objects.filter(name__contains = query) skills = map(lambda x: x.name, skills) return json_response({'result': 'success', 'skills': skills}) elif action == 'list current': query = request.POST.get('query', '') if query == '': skills = request.userprofile.skills.all() else: skills = request.userprofile.skills.filter(name__contains = query) skills = map(lambda x: x.name, skills) return json_response({'result': 'success', 'skills': skills}) elif action == 'add current': skill = request.POST.get('skill', '') try: request.userprofile.skills.get(name=skill) except: skill = Skill.objects.get_or_create(name=skill)[0] request.userprofile.skills.add(skill) skills = request.userprofile.skills.all() skills = map(lambda x: x.name, skills) return json_response({'result': 'success', 'skills': skills}) elif action == 'remove current': skill = request.POST.get('skill', '') try: skill = Skill.objects.get(name=skill) request.userprofile.skills.remove(skill) except: pass skills = request.userprofile.skills.all() skills = map(lambda x: x.name, skills) return json_response({'result': 'success', 'skills': skills}) else: return json_response({'result': 'fail', 'error': 'get not supported'})
def job_rate(request, job_id): if request.method == 'POST': try: job = JobOpportunity.objects.get(pk = job_id) except: return json_response({'result': 'fail', 'error': 'job does not exist'}) if request.has_profile and request.userprofile.is_jobseeker(): try: rate = int(request.POST['rate']) except: return json_response({'result': 'fail', 'error': 'no rate given'}) rate_opportunity(request.userprofile, job, rate) return json_response({'result': 'success'}) else: return json_response({'result': 'fail', 'error': 'get not supported'})
def profile_employer_rate(request, employer_id): if request.method == 'POST': try: employer = Employer.objects.get(pk = employer_id) except: return json_response({'result': 'fail', 'error': 'employer does not exist'}) if request.has_profile and request.userprofile.is_jobseeker(): try: rate = int(request.POST['rate']) except: return json_response({'result': 'fail', 'error': 'no rate given'}) rate_employer(request.userprofile, employer, rate) return json_response({'result': 'success'}) else: return json_response({'result': 'fail', 'error': 'get not supported'})
def userpanel_changecompanyinfo_uploadimage(request): if request.method == 'POST': form = CompanyImageUploadForm(request.POST, request.FILES) if form.is_valid(): images_count = len(request.userprofile.images.all()) if images_count >= 5: return json_response({'result': 'fail', 'error': 'maximum reached'}) comp_image = form.save(commit=False) comp_image.employer = request.userprofile comp_image.save() images = request.userprofile.images.all() images = map(lambda x: {'id': x.id, 'url': x.image.url}, images) return json_response({'result': 'success', 'images': images}) else: return json_response({'result': 'fail', 'error': 'invalid form'}) return json_response({'result': 'fail', 'error': 'get not supported'})
def register_form(request, session_name, template, step, register_form): if request.method == 'POST': form = register_form(request.POST, request.FILES) if form.is_valid(): request.session[session_name]['post'][step] = request.POST obj = form.save(commit=False) return json_response({'result': 1}), True, obj else: result = 0 else: post = request.session[session_name]['post'].get(step) form = register_form() if post == None else register_form(post) result = 1 return json_response({ 'result': result, 'data': render_to_string('accounts/register/' + template, RequestContext(request, {'form': form})) }), False, None
def list_comments(page, page_size): comments = CommentOnEmployer.objects.filter(employer__id = employer_id).order_by('-time') p = Paginator(comments, page_size) if page > p.num_pages: page = p.num_pages if page < 0: page = 0 comments = map(comment_to_dict, p.page(page).object_list) return json_response({'result': 'success', 'page':page, 'pageCount':p.num_pages , 'comments': comments})
def refuseJob(request, jobid): job = JobOpportunity.objects.get(id = jobid) user = request.userprofile response = {} if JobOffer.objects.filter(jobSeeker = user, jobOpportunity = job).exists(): JobOffer.objects.filter(jobSeeker = user, jobOpportunity = job).delete() response['done'] = True else: response['done'] = False return json_response(response)
def userpanel_requestFriendShip(request): invited_user_id = request.POST['invitedUser'] user1 = JobSeeker.objects.get(user = request.user) print(user1) user2 = JobSeeker.objects.get(id = invited_user_id) print(user2) friendShip = FriendShip(jobSeeker1=user1 , jobSeeker2=user2) friendShip.save() print('friendship successfuly sabt shod :D ') return json_response(({'status' : 'you have successfully invited "' + user2.full_name + '" to be your friend.'}))
def applyJob(request, jobid): print 'hey' print jobid job = JobOpportunity.objects.get(id = jobid) user = request.userprofile response = {} if not JobOffer.objects.filter(jobSeeker = user, jobOpportunity = job).exists(): JobOffer.objects.create(jobSeeker = user, jobOpportunity = job, offerDate = datetime.now()) response['done'] = True else: response['done'] = False return json_response(response)
def job_opportunity_pages(request, opportunity_id): action = request.POST.get('action', '') try: opportunity = JobOpportunity.objects.get(pk = opportunity_id) if action == 'save': page_id = request.POST['page_id'] content = request.POST['content'] page = JobOpportunityPage.objects.get(pk = page_id) # if page.opportunity.id != opportunity_id: # raise PermissionDenied page.content = content page.save() return json_response({'result': 'success'}) elif action == 'remove': page_id = request.POST['page_id'] page = JobOpportunityPage.objects.get(pk = page_id) if page.opportunity.id != opportunity_id: raise PermissionDenied page.delete() return json_response({'result': 'success'}) elif action == 'add': title = request.POST['title'] page = JobOpportunityPage.objects.create(opportunity=opportunity, title=title) page = {'page_id': page.id, 'title':page.title, 'content': page.content} return json_response({'result': 'success', 'page': page}) elif action == 'list': pages = JobOpportunityPage.objects.filter(opportunity=opportunity) pages = map(lambda x: {'page_id': x.id, 'title':x.title, 'content': x.content}, pages) return json_response({'result': 'success', 'pages': pages}) except Exception as e: raise e return json_response({'result': 'fail'})
def userpanel_info_profile_pages(request): action = request.POST.get('action', '') try: if action == 'save': page_id = request.POST['page_id'] content = request.POST['content'] page = PersonalPage.objects.get(pk = page_id) if page.user != request.user: raise "Unauthorized" page.content = content page.save() return json_response({'result': 'success'}) elif action == 'remove': page_id = request.POST['page_id'] page = PersonalPage.objects.get(pk = page_id) if page.user != request.user: raise "Unauthorized" page.delete() return json_response({'result': 'success'}) elif action == 'add': title = request.POST['title'] page = PersonalPage.objects.create(user=request.user, title=title) page = {'page_id': page.id, 'title':page.title, 'content': page.content} return json_response({'result': 'success', 'page': page}) elif action == 'list': pages = PersonalPage.objects.filter(user=request.user) pages = map(lambda x: {'page_id': x.id, 'title':x.title, 'content': x.content}, pages) return json_response({'result': 'success', 'pages': pages}) except Error as e: print(e) return json_response({'result': 'fail'})
def register_employer_finalize(request, session_name): session_steps = request.session[session_name]['steps'] user = session_steps['user_info'] employer = session_steps['company_info'] user.save() employer.user = user employer.save() del request.session[session_name] return json_response({ 'result': 1, 'data': render_to_string('accounts/register/final.html', RequestContext(request)) }), False, None
def userpanel_sendEmail(request): response = {} m = Message() m.body = request.POST['recipient'] m.subject = request.POST['subject'] m.sender = request.user try: reciever = User.objects.get(username=request.POST['recipient']) m.reciever = reciever m.save() response['status'] = 'success' except: response['status'] = 'fail' response['error'] = 'invalid username' return json_response(response)
def job_opportunity_skills(request, opportunity_id): if request.method == 'POST': action = request.POST.get('action') try: opportunity = JobOpportunity.objects.get(pk = opportunity_id) except: return json_response({'result': 'fail', 'error': 'job opportunity not found'}) if action == 'list possible': query = request.POST.get('query', '') if query == '': skills = Skill.objects.all() else: skills = Skill.objects.filter(name__contains = query) skills = map(lambda x: x.name, skills) return json_response({'result': 'success', 'skills': skills}) elif action == 'list current': query = request.POST.get('query', '') if query == '': skills = opportunity.opSkills.all() else: skills = opportunity.opSkills.filter(name__contains = query) skills = map(lambda x: x.name, skills) return json_response({'result': 'success', 'skills': skills}) elif action == 'add current': skill = request.POST.get('skill', '') try: opportunity.opSkills.get(name=skill) except: skill = Skill.objects.get_or_create(name=skill)[0] opportunity.opSkills.add(skill) skills = opportunity.opSkills.all() skills = map(lambda x: x.name, skills) return json_response({'result': 'success', 'skills': skills}) elif action == 'remove current': skill = request.POST.get('skill', '') try: skill = Skill.objects.get(name=skill) opportunity.opSkills.remove(skill) except: pass skills = opportunity.opSkills.all() skills = map(lambda x: x.name, skills) return json_response({'result': 'success', 'skills': skills}) else: return json_response({'result': 'fail', 'error': 'get not supported'})
def register(request, action, steps, step_views, session_name, base_template): if action == 'ajax': step = request.GET.get('step') step = steps.index(step) if step in steps else None state = request.session.get(session_name) if step == None or state == None: step = 0 state = { 'current_step': 0, 'steps': {}, 'post': {} } request.session[session_name] = state request.session.save() # No skipping steps faulty, doesn't work for skills if state['current_step'] < step: # print("No skipping " + str(state['current_step']) + " < " + str(step)) step = state['current_step'] response, next, result = step_views[steps[step]](request, session_name) if next: if result != None: state['steps'][steps[step]] = result if state['current_step'] == step: state['current_step'] += 1 request.session.save() return response elif action == 'steps': return json_response({'steps': steps}) elif action == 'clear': if session_name in request.session: del request.session[session_name] return HttpResponse("Cleared") else: return render_to_response('accounts/register/' + base_template)
def register_jobseeker_skills_handle(request): if request.method == 'POST': steps = request.session[JOBSEEKER_SESSION].get('steps') if steps == None: return json_response({'result':'fail', 'error':'no state set'}) current_skills = steps.get('skills') if current_skills == None or type(current_skills) != set: current_skills = set() steps['skills'] = current_skills try: action = request.POST.get('action') if action == 'list possible': query = request.POST.get('query', '') if query == '': skills = Skill.objects.all() else: skills = Skill.objects.filter(name__contains = query) skills = map(lambda x: x.name, skills) return json_response({'result': 'success', 'skills': skills}) elif action == 'list current': query = request.POST.get('query', '') skills = filter(lambda x: query == '' or query in x, current_skills) return json_response({'result': 'success', 'skills': skills}) elif action == 'add current': skill = request.POST.get('skill', '') current_skills.add(skill) return json_response({'result': 'success', 'skills': list(current_skills)}) elif action == 'remove current': skill = request.POST.get('skill', '') try: current_skills.remove(skill) except: pass return json_response({'result': 'success', 'skills': list(current_skills)}) finally: request.session.save() else: return json_response({'result': 'fail', 'error': 'get not supported'})
def zedit_preview(request): content = request.POST.get('content', '') return json_response({'result': 'success', 'content': markdown(content)})
def wrap(request, *args, **kwargs): if not request.user.is_authenticated(): return json_response({"result":0, "error":"unauthorized", "data":settings.LOGIN_URL}) else: return function(request, *args, **kwargs)
def deleteJob(request, jobid): JobOpportunity.objects.get(id = jobid).delete() return json_response({})
def rejectOffer(request, offerid): offer = JobOffer.objects.get(id = offerid) offer.state = 1 offer.save() return json_response({})