def form_valid(self, form): user = form.cleaned_data['assigned_to'] title = form.cleaned_data['title'] if user != self.object.history.first().assigned_to: try: create_notification(self.request, self.object.history.first().assigned_to, f"You have been unassigned from the ticket {title} by {self.request.user.get_full_name()}") except: pass create_notification(self.request, user, f"You have been assigned to the ticket {title} by {self.request.user.get_full_name()}") return super().form_valid(form)
def view_application(request, id, pk): app = get_object_or_404(Application, id=id) employee = Employee.objects.filter(pk=app.candidate.pk) print(employee) print(employee) user = request.user test = Job.objects.get(pk=pk) context = {'app': app, 'test': test, 'employee': employee} if request.method == 'POST': content = request.POST.get('content') if content: conversationmessage = ConversationMessage.objects.create( application=app, content=content, created_by=request.user) if request.user.is_employee == True: create_notification(request, test.employer.user, app.job, app, 'message', extra_id=app.id) print("employee") else: create_notification(request, app.candidate.user, app.job, app, 'message', extra_id=app.id) print("employer") return redirect('view_application', id=app.id, pk=test.pk) if app.status == "Interview" or "Accepted" or "Rejected": interviewdetails = InterviewPlan.objects.filter(application=app) context = { 'interviewdetails': interviewdetails, 'app': app, 'test': test, 'employee': employee } if request.user.is_employer: return render(request, 'employer/message.html', context) else: return render(request, 'employee/message.html', context)
def RejectInterview(request, pk, id): app = get_object_or_404(Application, id=id) app.status = "Rejected" app.save() content = "The candidate has rejected your interview request." conversationmessage = ConversationMessage.objects.create( application=app, content=content, created_by=request.user) create_notification(request, app.job.employer.user, app.job, app, 'message', extra_id=app.id) context = {'app': app} return HttpResponseRedirect( reverse('view_application', args=[int(id), int(pk)]))
def AcceptInterview(request, id, pk): app = get_object_or_404(Application, id=id) app.status = "Accepted" test = Job.objects.get(pk=pk) app.save() content = "The candidate has accepeted your interview request. You now have access to their user profile." conversationmessage = ConversationMessage.objects.create( application=app, content=content, created_by=request.user) create_notification(request, app.job.employer.user, app.job, app, 'message', extra_id=app.id) context = {'app': app, 'test': test} return HttpResponseRedirect( reverse('view_application', args=[int(id), int(pk)]))
def viewjob(request, pk): employee = Employee.objects.get(user=request.user) form = EmployeeModelForm(request.POST or None, request.FILES or None, instance=employee) form2 = ApplyJobForm() jobs = Job.objects.filter(pk=pk) candidate = Employee.objects.get(user=request.user) job = Job.objects.get(pk=pk) skills = JobSkill.objects.filter(job=job) tags = JobTag.objects.filter(job=job) personality = Personality.objects.get(employee=employee) employeeskills = employee.employeeskill_set.all().values_list( 'title', flat=True).distinct() print(employeeskills) jobskills = job.jobskill_set.all().values_list('title', flat=True).distinct() print(jobskills) employeeskills_as_set = set(employeeskills) print(employeeskills_as_set) intersection = employeeskills_as_set.intersection(jobskills) intersection_as_list = list(intersection) print(intersection_as_list) matched_amount = len(intersection_as_list) print(matched_amount) personality = Personality.objects.get(employee=employee) person_type = personality.group job_type = job.ideal_person if request.method == 'POST': form2 = ApplyJobForm(request.POST) if form2.is_valid(): application = form2.save(commit=False) application.job = job application.candidate = candidate application.status = 'applied' application.person_type = person_type application.job_type = job_type application.save() app = application job.no_applicants = job.no_applicants + 1 print(job.no_applicants) job.save() create_notification(request, job.employer.user, application.job, app, 'application', extra_id=application.id) application.save() score = 0 print(job_type) print(person_type) if job_type == person_type: application.match = True score += 5 else: application.match = False for x in intersection_as_list: MatchedSkills.objects.create(application=application, title=x) score += 1 application.score = score print(application.score) application.save() return redirect('employee-home') print(skills) context = { 'employee': employee, 'jobs': jobs, 'form': form, 'form2': form2, 'job': job, 'person_type': person_type, 'skills': skills, 'tags': tags, 'personality': 'personality' } return render(request, 'employee/viewjob.html', context)
def admin_project_managment(request): template = 'admin_project_managment.html' msg = None if request.method == 'POST': form = AdminProjectManagmentForm(request.POST) if form.is_valid(): projects = [ Project.objects.get(pk=pk) for pk in request.POST.getlist('projects', '') ] admins = [ User.objects.get(pk=pk) for pk in request.POST.getlist('admins', '') ] project_managers = [ User.objects.get(pk=pk) for pk in request.POST.getlist('project_managers', '') ] developers = [ User.objects.get(pk=pk) for pk in request.POST.getlist('developers', '') ] submitters = [ User.objects.get(pk=pk) for pk in request.POST.getlist('submitters', '') ] for project in projects: # clear users if len(admins) + len(project_managers) + len(developers) + len( submitters) == 0: for dev in project.assigned_users.filter( groups__name='developer'): create_notification( request, dev, f"You have been removed from project {project.name} by {request.user.get_full_name()}" ) for sub in project.assigned_users.filter( groups__name='submitter'): create_notification( request, sub, f"You have been removed from project {project.name} by {request.user.get_full_name()}" ) for adm in project.assigned_users.filter( groups__name='admin'): create_notification( request, adm, f"You have been removed from project {project.name} by {request.user.get_full_name()}" ) for pm in project.assigned_users.filter( groups__name='project manager'): create_notification( request, pm, f"You have been removed from project {project.name} by {request.user.get_full_name()}" ) project.clear_admins() project.clear_project_managers() project.clear_developers() project.clear_submitters() # assign users for admin in admins: project.assigned_users.add(admin) create_notification( request, admin, f"You have been added as an admin to project {project.name} by {request.user.get_full_name()}" ) for project_manager in project_managers: project.assigned_users.add(project_manager) create_notification( request, project_manager, f"You have been added as a project manager to project {project.name} by {request.user.get_full_name()}" ) for developer in developers: project.assigned_users.add(developer) create_notification( request, developer, f"You have been added as a developer to project {project.name} by {request.user.get_full_name()}" ) for submitter in submitters: project.assigned_users.add(submitter) create_notification( request, submitter, f"You have been added as submitter to project {project.name} by {request.user.get_full_name()}" ) msg = "Roles successfully assigned!" else: form = AdminProjectManagmentForm() return render(request, template, { "form": form, "msg": msg, "users": User.objects.all() })