예제 #1
0
    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)
예제 #2
0
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)
예제 #3
0
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)]))
예제 #4
0
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)]))
예제 #5
0
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)
예제 #6
0
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()
    })