Beispiel #1
0
def edit_employer_profile(request, id):
    user = get_user_type(request)
    if user['obj'] is not None:
        if request.method == 'POST':
            employer = Employer.objects.get(user_id=id)
            form = EmployerForm(request.POST, request.FILES, instance=employer)
            if form.is_valid():
                form.save()
                url = '{}/{}'.format('/my_admin/view_employer_profile', id)
                return redirect(url)
            else:
                messages.warning(request, form.errors.as_text)
                url = '{}/{}'.format('/my_admin/edit_employer_profile', id)
                return redirect(url)
        else:
            employer = Employer.objects.get(user_id=id)
            form = EmployerForm(instance=employer)
            args = {
                'employer_form': form,
                'obj': employer,
                'user_type': user['user_type']
            }
            return render(request, 'Employer/edit_employer_profile.html', args)
    else:
        messages.info(request, 'This employer user does not exist')
Beispiel #2
0
    def get(self, request, *args, **kwargs):
        user = get_user_type(request)
        if kwargs:
            pk = kwargs[
                'pk']  # get a particular instance of the IT Support Form filled previously
            help_desk_form = HelpDeskForm(instance=HelpDeskModel.objects.get(
                id=pk))
            help_desk_form.fields[
                'subject'].disabled = True  # the subject field cannot be edited once submitted
            help_desk_form.fields[
                'issue'].disabled = True  # the issue field cannot be edited once submitted
        else:
            help_desk_form = HelpDeskForm(
            )  # get a new form if a previous one does not exist

        try:
            thread = HelpDeskModel.objects.get(id=pk)
        except:
            thread = []

        args = {
            'help_desk_form': help_desk_form,
            'thread': thread,
            'user_type': user['user_type'],
            'obj': user['obj']
        }

        return render(request, self.template_name, args)
Beispiel #3
0
    def get(self, request, *args, **kwargs):
        c = HelpDeskModel.objects.all().order_by("-completed_date")
        user = get_user_type(request)
        args = {'reqs': c, 'user_type': user['user_type'], 'obj': user['obj']}
        print(c)

        return render(request, 'HelpDesk/Admin_List_of_Requests.html', args)
Beispiel #4
0
def view_students(request):
    user = get_user_type(request)
    if request.method == 'POST':
        alumni_status = request.POST.get("alumni_status")
        skills = request.POST.get("skills")
        min_graduation_date = request.POST.get('min_graduation_date')
        max_graduation_date = request.POST.get('max_graduation_date')

        if alumni_status:
            if alumni_status == "Alumni":
                alumni_status_students = Student.objects.filter(
                    alumni_status=True)
            elif alumni_status == "Current":
                alumni_status_students = Student.objects.filter(
                    alumni_status=False)
        else:
            alumni_status_students = Student.objects.all()

        if skills:
            skills_students = Student.objects.filter(skills=skills)
        else:
            skills_students = Student.objects.all()

        if min_graduation_date:
            min_graduation_date_students = Student.objects.filter(
                expected_graduation_date__gte=min_graduation_date)
        else:
            min_graduation_date_students = Student.objects.all()

        if max_graduation_date:
            max_graduation_date_students = Student.objects.filter(
                expected_graduation_date__lte=max_graduation_date)
        else:
            max_graduation_date_students = Student.objects.all()

        filtered_stds = skills_students & alumni_status_students & min_graduation_date_students & max_graduation_date_students
        students_all = Student.objects.all()
        students = students_all & filtered_stds
        form = FilterStudentForm()
        print("students", students)
        args = {
            'students': students,
            'form': form,
            'obj': user['obj'],
            'user_type': user['user_type']
        }
        return render(request, "view_students.html", args)
    elif user['user_type'] == 'employer' or user['user_type'] == 'admin':
        students = Student.objects.all()
        users = User.objects.all()
        form = FilterStudentForm()
        args = {
            'students': students,
            'obj': user['obj'],
            'user_type': user['user_type'],
            'form': form
        }
    else:
        return redirect('/')
    return render(request, 'view_students.html', args)
Beispiel #5
0
def news(request):
    # news API to show the latest news
    newsapi = NewsApiClient(api_key='1aab8f2e782a4a588fc28a3292a57979')
    top = newsapi.get_top_headlines(sources='cnn')

    l = top['articles']
    desc = []
    news = []
    img = []
    urllink = []

    for i in range(len(l)):
        f = l[i]
        news.append(f['title'])
        desc.append(f['description'])
        img.append(f['urlToImage'])
        urllink.append(f['url'])

    mylist = list(zip(news, desc, img, urllink))
    user = get_user_type(request)
    args = {
        'mylist': mylist,
        'obj': user['obj'],
        'user_type': user['user_type']
    }

    return render(request, 'news.html', args)
Beispiel #6
0
def student_details(request, id):
    student = Student.objects.get(user_id=id)
    user = get_user_type(request)
    args = {
        'student': student,
        'obj': user['obj'],
        'user_type': user['user_type']
    }
    return render(request, 'student_details.html', args)
Beispiel #7
0
 def get(self, request, *args, **kwargs):
     form = PostForm()
     user = get_user_type(request)
     args = {
         'form': form,
         'obj': user['obj'],
         'user_type': user['user_type']
     }
     return render(request, self.template_name, args)
Beispiel #8
0
def my_applications(request):
    user = get_user_type(request)
    jobs_applied = StudentJobApplication.objects.filter(applied_id=user['obj'])
    print(jobs_applied)
    args = {
        'jobs_applied': jobs_applied,
        'obj': user['obj'],
        'user_type': user['user_type']
    }
    return render(request, 'my_applications.html', args)
Beispiel #9
0
 def get(self, request, *args, **kwargs):
     c = HelpDeskModel.objects.filter(name_Request=request.user.id)
     pending_requests = HelpDeskModel.objects.filter(
         name_Request=request.user.id).order_by("completed")
     user = get_user_type(request)
     return render(
         request, 'HelpDesk/my_helpdesk_requests.html', {
             'helpdeskRequests': pending_requests,
             'user_type': user['user_type'],
             'obj': user['obj']
         })
Beispiel #10
0
def job_details(request, id):
    user = get_user_type(request)
    job = Job.objects.get(id=id)
    companies = Employer.objects.all()

    args = {
        'job': job,
        'obj': user['obj'],
        'user_type': user['user_type'],
        'companies': companies,
        'applied': True
    }
    form = StudentJobApplicationForm()

    if request.method == 'POST':
        if request.POST.get("apply"):

            post = form.save(commit=False)
            post.job_id = job
            id = request.user.id
            student = Student.objects.get(user_id=id)
            post.applied = student
            post.date_applied = timezone.now()
            post.save()
            return render(request, 'job_details.html', args)

        elif request.POST.get("viewcandidates"):

            candidates = StudentJobApplication.objects.filter(job_id=job)
            print(candidates)
            args = {
                'candidates': candidates,
                'obj': user['obj'],
                'user_type': user['user_type']
            }
            return render(request, 'view_candidates.html', args)

    try:
        student = Student.objects.get(user_id=request.user.id)

        job = Job.objects.get(id=id)
        StudentJobApplication.objects.get(job_id_id=job, applied=student)

        return render(request, 'job_details.html', args)

    except:
        args = {
            'job': job,
            'obj': user['obj'],
            'user_type': user['user_type'],
            'companies': companies,
            'applied': False
        }
        return render(request, 'job_details.html', args)
Beispiel #11
0
def view_pending(request):
    user = get_user_type(request)
    applicants_students = Student.objects.filter(is_active='Pending')
    applicants_alumni = Alumni.objects.filter(is_active='Pending')
    applicants_employers = Employer.objects.filter(is_active='Pending')
    args = {
        'user_type': user['user_type'],
        'applicants_students': applicants_students,
        'applicants_alumni': applicants_alumni,
        'applicants_employers': applicants_employers
    }
    return render(request, 'Admin/view_pending_requests.html', args)
Beispiel #12
0
def view_pend_acc_profile(request, id):
    try:
        student = Student.objects.get(user_id=id)
        user = get_user_type(request)
        args = {
            'student': student,
            'obj': user['obj'],
            'user_type': user['user_type']
        }
        return render(request, 'Home/student_details.html', args)
    except:
        pass

    try:
        alumni = Alumni.objects.get(user_id=id)
        user = get_user_type(request)
        args = {
            'alumni': alumni,
            'obj': user['obj'],
            'user_type': user['user_type']
        }
        return render(request, 'Home/alumni_details.html', args)
    except:
        pass

    try:
        employer = Employer.objects.get(user_id=id)
        user = get_user_type(request)
        args = {
            'employer': employer,
            'obj': user['obj'],
            'user_type': user['user_type']
        }
        return render(request, 'Admin/view_employer_profile.html', args)
    except:
        pass

    return redirect('view_pending_requests')
Beispiel #13
0
def generate_statistics(request):
    user = get_user_type(request)
    if request.method == "POST":
        end_date = timezone.now()
        time = request.POST.get('period')
        if time == "Past 7 Days":
            start_date = end_date - timedelta(6)
        elif time == "Past 30 Days":
            start_date = end_date - timedelta(29)
        elif time == "Past Year":
            start_date = end_date - timedelta(364)

        users = User.objects.filter(date_joined__range=[start_date, end_date])
        admins = Admin.objects.filter(user_id__in=User.objects.filter(date_joined__range=[start_date, end_date]))
        admin_users = User.objects.filter(id__in=Admin.objects.all())
        students = Student.objects.filter(user_id__in=User.objects.filter(date_joined__range=[start_date, end_date]))
        current = Student.objects.filter(user_id__in=User.objects.filter(date_joined__range=[start_date, end_date]),
                                         alumni_status=False)
        alumni = Student.objects.filter(user_id__in=User.objects.filter(date_joined__range=[start_date, end_date]),
                                        alumni_status=True)
        employers = Employer.objects.filter(user_id__in=User.objects.filter(date_joined__range=[start_date, end_date])).exclude(user_id__in=admin_users)
        jobs_posted = Job.objects.filter(date_posted__range=[start_date, end_date])
        open_jobs = Job.objects.filter(date_posted__range=[start_date, end_date], status="Open")
        closed_jobs = Job.objects.filter(date_posted__range=[start_date, end_date], status="Closed")
        deleted_jobs = Job.objects.filter(date_posted__range=[start_date, end_date], status="Deleted")
        apps = StudentJobApplication.objects.filter(date_applied__range=[start_date, end_date])

        users = len(list(set(users)))
        admins = len(list(set(admins)))
        students = len(list(set(students)))
        current = len(list(set(current)))
        alumni = len(list(set(alumni)))
        employers = len(list(set(employers)))
        jobs_posted = len(list(set(jobs_posted)))
        open_jobs = len(list(set(open_jobs)))
        closed_jobs = len(list(set(closed_jobs)))
        deleted_jobs = len(list(set(deleted_jobs)))
        apps = len(list(set(apps)))

        args = {'users': users, 'admins': admins, 'students': students, 'current': current, 'alumni': alumni, 'employers': employers,
                'jobs_posted': jobs_posted, 'open_jobs': open_jobs, 'closed_jobs': closed_jobs,
                'deleted_jobs': deleted_jobs, 'apps': apps, 'user_type': user['user_type'], 'obj': user['obj']}

        return render(request, "admin/view_statistics.html", args)
    else:
        form = Statistics()
        args = {'form': form, 'user_type': user['user_type'], 'obj': user['obj']}
        return render(request, "admin/generate_statistics.html", args)
Beispiel #14
0
def edit_profile(request):
    user = get_user_type(request)
    if user['obj'] is not None:
        if request.method == 'POST':
            form = EmployerForm(request.POST, request.FILES, instance=user['obj'])
            if form.is_valid():
                form.save()
                return redirect('view_employer_profile')
            else:
                messages.error(request, form.errors, extra_tags='danger')
                return redirect('edit_employer_profile')
        else:
            form = EmployerForm(instance=user['obj'])
            args = {'employer_form': form, 'obj': user['obj'], 'user_type': user['user_type']}
            return render(request, 'Employer/edit_employer_profile.html', args)
    else:
        messages.error(request, 'This employer user does not exist')
Beispiel #15
0
def delete_job(request, id):
    user = get_user_type(request)
    job = Job.objects.get(id=id)
    if request.method == 'POST':
        job.status = 'Deleted'
        job.save()
        messages.success(request, "You have successfully deleted the job")
        args = {'job': job, 'obj': user['obj'], 'user_type': user['user_type']}
        return render(request, 'delete_job.html', args)
    else:
        form = EditJobForm()
        args = {
            'job': job,
            'form': form,
            'obj': user['obj'],
            'user_type': user['user_type']
        }
        return render(request, 'delete_job.html', args)
Beispiel #16
0
def job_to_student_skills(request, id):
    user = get_user_type(request)
    job = Job.objects.get(id=id)
    print(request.user)
    students = Student.objects.filter(skills__in=job.skills.all())
    students = list(set(students))
    args = {
        'students': students,
        'form': FilterStudentForm(),
        'obj': user['obj'],
        'user_type': user['user_type']
    }

    message = Mail(
        from_email='*****@*****.**',
        to_emails=['*****@*****.**'],
        subject='Student Skill match',
        html_content=
        "Student/Students having skills matching to your job have been found.")
    sg = SendGridAPIClient(SENDGRID_API_KEY)
    # sg.send(message)

    return render(request, "view_students.html", args)
Beispiel #17
0
def view_pending_job_details(request, id):
    user = get_user_type(request)
    job = Job.objects.get(id=id)
    companies = Employer.objects.all()

    if request.POST.get("viewcandidates"):
        alumniCandidates = AlumniJobApplication.objects.filter(job_id=job)
        studentCandidates = StudentJobApplication.objects.filter(job_id=job)
        args = {
            'studentCandidates': studentCandidates,
            'alumniCandidates': alumniCandidates,
            'obj': user['obj'],
            'user_type': user['user_type']
        }
        return render(request, 'Home/view_candidates.html', args)

    args = {
        'job': job,
        'obj': user['obj'],
        'user_type': user['user_type'],
        'companies': companies,
        'applied': True
    }
    return render(request, 'Admin/job_details.html', args)
Beispiel #18
0
def edit_profile(request):
    args = get_user_type(request)
    if args['obj'] is not None:
        if request.method == 'POST':
            form = EmployerForm(request.POST,
                                request.FILES,
                                instance=args['obj'])

            if form.is_valid():
                form.save()
                return redirect('view_employer_profile')
            else:
                messages.info(request, form.errors)
                return redirect("edit_employer_profile")
        else:
            form = EmployerForm(instance=args['obj'])
            args = {
                'employer_form': form,
                'obj': args['obj'],
                'user_type': args['user_type']
            }
            return render(request, 'edit_employer_profile.html', args)
    else:
        messages.info(request, 'This employer user does not exist')
Beispiel #19
0
def student_signup(request):
    if request.method == 'POST':
        user_form = InitialStudentForm(request.POST)
        if user_form.is_valid():
            if user_form.usernameExists():  #checks if username exists in db
                messages.info(request,
                              'Username already taken. Try a different one.')
                return redirect("student_registration")

            elif user_form.emailExists():  #checks if email exists in db
                messages.info(request,
                              'Email already taken. Try a different one.')
                return redirect("student_registration")

            elif number_symbol_exists(
                    user_form.cleaned_data["first_name"]
            ):  #checks if number/symbol exists in string
                messages.info(request, 'Please enter a valid first name.')
                return redirect("student_registration")

            elif number_symbol_exists(
                    user_form.cleaned_data["last_name"]
            ):  #checks if number/symbol exists in string
                messages.info(request, 'Please enter a valid last name.')
                return redirect("student_registration")

            elif not user_form.samePasswords(
            ):  #checks if password and confirm password are matching
                messages.info(request, 'Passwords not matching. Try again.')
                return redirect("student_registration")

            elif not user_form.emailDomainExists(
            ):  #checks if there is an exising domain for given email
                messages.info(request,
                              'Email domain does not exist. Try again.')
                return redirect("student_registration")
            else:
                if isValidated(user_form.cleaned_data.get(
                        'password1')):  #checks if password is valid
                    student_form = StudentForm(request.POST, request.FILES)
                    if student_form.is_valid():
                        email = user_form.cleaned_data["email"]

                        if not search("@student.murdoch.edu.au", email):
                            if not student_form.cleaned_data["alumni_status"]:
                                messages.info(
                                    request,
                                    'Please enter an existing murdoch student email.'
                                )
                                return redirect("student_registration")
                            else:
                                pass

                        with transaction.atomic():
                            user = user_form.save()
                            student = student_form.save(commit=False)
                            student.user = user
                            student.save()
                            student_form.save_m2m()

                            message = Mail(
                                from_email=DEFAULT_FROM_EMAIL,
                                to_emails=['*****@*****.**'],
                                subject='New User has signed up',
                                html_content=
                                "A new Student has registered to use the Murdoch Career Portal."
                            )
                            sg = SendGridAPIClient(SENDGRID_API_KEY)
                            # sg.send(message)

                            #  notification = "A new Student has registered to use the Murdoch Career Portal."
                            # add_notif = UserNotifications(to_user_id=1, from_user_id=request.user.id,
                            #     notification=notification,
                            #    type='Sign Up',
                            #    to_show=True)
                            # add_notif.save()

                            return redirect("log_in")
                    else:
                        messages.info(request, student_form.errors)
                        return redirect("student_registration")
                else:
                    messages.info(
                        request,
                        'ERROR: Password must be 8 characters or more, and must have atleast 1 numeric character and 1 letter.'
                    )
                    return redirect("student_registration")
        else:
            messages.info(request, user_form.errors)
            return redirect("student_registration")
    else:
        user_form = InitialStudentForm()
        student_form = StudentForm()
        user = get_user_type(request)
        args = {
            'student_form': student_form,
            'user_form': user_form,
            'user_type': user['user_type']
        }

        return render(request, 'student_registration.html', args)
Beispiel #20
0
def view_profile(request):
    user = request.user
    u = get_user_type(request)
    args = {'user': user, 'user_type': u['user_type'], 'obj': u['obj']}
    return render(request, 'view_student_profile.html', args)
Beispiel #21
0
def generate_student_statistics(request):
    user = get_user_type(request)
    if request.method == "POST":
        start_date = request.POST.get('start_date')
        end_date = request.POST.get('end_date')
        end_date = datetime.datetime.strptime(
            end_date, '%Y-%m-%d') + timedelta(hours=23, minutes=59, seconds=59)
        major = request.POST.getlist("major")
        skill = request.POST.getlist("skill")

        users = User.objects.filter(date_joined__range=[start_date, end_date])
        students = Student.objects.filter(user_id__in=users)
        alumni = Alumni.objects.filter(user_id__in=users)

        if major:
            major_students = students.filter(majors__in=major)
            major_alumni = alumni.filter(majors__in=major)
        else:
            major_students = students
            major_alumni = alumni

        if skill:
            skill_students = students.filter(skills__in=skill)
            skill_alumni = alumni.filter(skills__in=skill)
        else:
            skill_students = students
            skill_alumni = alumni

        filtered_students = major_students & skill_students
        filtered_alumni = major_alumni & skill_alumni
        accepted_students = filtered_students.filter(is_active='Accepted')
        accepted_alumni = filtered_alumni.filter(is_active='Accepted')
        pending_students = filtered_students.filter(is_active='Pending')
        pending_alumni = filtered_alumni.filter(is_active='Pending')
        rejected_students = filtered_students.filter(is_active='Rejected')
        rejected_alumni = filtered_alumni.filter(is_active='Rejected')

        filtered_students = len(list(set(filtered_students)))
        filtered_alumni = len(list(set(filtered_alumni)))
        accepted_students = len(list(set(accepted_students)))
        accepted_alumni = len(list(set(accepted_alumni)))
        pending_students = len(list(set(pending_students)))
        pending_alumni = len(list(set(pending_alumni)))
        rejected_students = len(list(set(rejected_students)))
        rejected_alumni = len(list(set(rejected_alumni)))

        args = {
            'students': filtered_students,
            'alumni': filtered_alumni,
            'pending_students': pending_students,
            'pending_alumni': pending_alumni,
            'rejected_students': rejected_students,
            'rejected_alumni': rejected_alumni,
            'accepted_students': accepted_students,
            'accepted_alumni': accepted_alumni,
            'user_type': user['user_type'],
            'obj': user['obj']
        }
        return render(request, "Admin/view_student_statistics.html", args)
    else:
        form = StudentStats()
        args = {
            'form': form,
            'user_type': user['user_type'],
            'obj': user['obj']
        }
        return render(request, "Admin/generate_statistics.html", args)
Beispiel #22
0
def generate_job_statistics(request):
    user = get_user_type(request)
    if request.method == "POST":
        start_date = request.POST.get('start_date')
        end_date = request.POST.get('end_date')
        end_date = datetime.datetime.strptime(
            end_date, '%Y-%m-%d') + timedelta(hours=23, minutes=59, seconds=59)
        location = request.POST.get("location")
        industry = request.POST.getlist("industry")
        job_type = request.POST.get("job_type")

        if location and location != "--Select--":
            location_jobs = Job.objects.filter(
                location=location, date_posted__range=[start_date, end_date])
        else:
            location_jobs = Job.objects.all()

        if job_type and job_type != "---------":
            job_type_jobs = Job.objects.filter(
                job_type_id=job_type,
                date_posted__range=[start_date, end_date])
        else:
            job_type_jobs = Job.objects.all()

        if industry:
            industry_jobs = Job.objects.filter(
                industry_id__in=industry,
                date_posted__range=[start_date, end_date])
        else:
            industry_jobs = Job.objects.all()

        filtered_jobs = location_jobs & job_type_jobs & industry_jobs
        normal_jobs = filtered_jobs.exclude(job_type_id=JOB_ID)
        open_jobs = get_total_jobs(
            normal_jobs.filter(status="Open", is_active='Accepted'))
        closed_jobs = get_total_jobs(
            normal_jobs.filter(status="Closed", is_active='Accepted'))
        deleted_jobs = get_total_jobs(
            normal_jobs.filter(status="Deleted", is_active='Accepted'))
        pending_jobs = get_total_jobs(
            normal_jobs.filter(date_posted__range=[start_date, end_date],
                               is_active='Pending'))
        rejected_jobs = get_total_jobs(
            normal_jobs.filter(date_posted__range=[start_date, end_date],
                               is_active='Rejected'))

        total_internships_posted = get_total_jobs(
            filtered_jobs.filter(job_type_id=JOB_ID))
        open_internships = get_total_jobs(
            filtered_jobs.filter(job_type_id=JOB_ID,
                                 status='Open',
                                 is_active='Accepted'))
        closed_internships = get_total_jobs(
            filtered_jobs.filter(job_type_id=JOB_ID,
                                 status='Closed',
                                 is_active='Accepted'))
        deleted_internships = get_total_jobs(
            filtered_jobs.filter(job_type_id=JOB_ID,
                                 status='Deleted',
                                 is_active='Accepted'))
        pending_internships = get_total_jobs(
            filtered_jobs.filter(job_type_id=JOB_ID,
                                 date_posted__range=[start_date, end_date],
                                 is_active='Pending'))
        rejected_internships = get_total_jobs(
            filtered_jobs.filter(job_type_id=JOB_ID,
                                 date_posted__range=[start_date, end_date],
                                 is_active='Rejected'))

        total_jobs = get_total_jobs(filtered_jobs)
        total_accepted_jobs = open_jobs + closed_jobs + deleted_jobs

        total_accepted_internships = open_internships + closed_internships + deleted_internships

        args = {
            'total_jobs': total_jobs,
            'total_accepted_jobs': total_accepted_jobs,
            'open_jobs': open_jobs,
            'closed_jobs': closed_jobs,
            'deleted_jobs': deleted_jobs,
            'pending_jobs': pending_jobs,
            'total_internships_posted': total_internships_posted,
            'total_accepted_internships': total_accepted_internships,
            'open_internships': open_internships,
            'closed_internships': closed_internships,
            'deleted_internships': deleted_internships,
            'pending_internships': pending_internships,
            'rejected_internships': rejected_internships,
            'rejected_jobs': rejected_jobs,
            'user_type': user['user_type'],
            'obj': user['obj']
        }

        return render(request, "Admin/view_job_statistics.html", args)

    else:
        form = JobStats()
        args = {
            'form': form,
            'user_type': user['user_type'],
            'obj': user['obj']
        }
        return render(request, "Admin/generate_statistics.html", args)
Beispiel #23
0
def generate_statistics(request):
    user = get_user_type(request)
    if request.method == "POST":

        normal_jobs = Job.objects.exclude(job_type_id=JOB_ID)

        start_date = request.POST.get('start_date')
        end_date = request.POST.get('end_date')
        end_date = datetime.datetime.strptime(
            end_date, '%Y-%m-%d') + timedelta(hours=23, minutes=59, seconds=59)
        admins = Admin.objects.filter(user_id__in=User.objects.filter(
            date_joined__range=[start_date, end_date]))
        admin_users = User.objects.filter(id__in=Admin.objects.all())
        current = Student.objects.filter(
            is_active='Accepted',
            user_id__in=User.objects.filter(
                date_joined__range=[start_date, end_date]))
        alumni = Alumni.objects.filter(
            is_active='Accepted',
            user_id__in=User.objects.filter(
                date_joined__range=[start_date, end_date]))
        employers = Employer.objects.filter(
            is_active='Accepted',
            user_id__in=User.objects.filter(
                date_joined__range=[start_date, end_date])).exclude(
                    user_id__in=admin_users)
        jobs_posted = get_total_jobs(
            normal_jobs.filter(date_posted__range=[start_date, end_date],
                               is_active='Accepted'))
        open_jobs = get_total_jobs(
            normal_jobs.filter(date_posted__range=[start_date, end_date],
                               status="Open",
                               is_active='Accepted'))
        closed_jobs = get_total_jobs(
            normal_jobs.filter(date_posted__range=[start_date, end_date],
                               status="Closed",
                               is_active='Accepted'))
        deleted_jobs = get_total_jobs(
            normal_jobs.filter(date_posted__range=[start_date, end_date],
                               status="Deleted",
                               is_active='Accepted'))
        internships_posted = get_total_jobs(
            Job.objects.filter(job_type_id_id=JOB_ID, is_active='Accepted'))
        apps = StudentJobApplication.objects.filter(
            date_applied__range=[start_date, end_date])
        alumni_apps = AlumniJobApplication.objects.filter(
            date_applied__range=[start_date, end_date])

        pending_employers = Employer.objects.filter(
            is_active='Pending',
            user_id__in=User.objects.filter(
                date_joined__range=[start_date, end_date])).exclude(
                    user_id__in=admin_users)
        pending_students = Student.objects.filter(
            is_active='Pending',
            user_id__in=User.objects.filter(
                date_joined__range=[start_date, end_date]))
        pending_alumni = Alumni.objects.filter(
            is_active='Pending',
            user_id__in=User.objects.filter(
                date_joined__range=[start_date, end_date]))
        rejected_employers = Employer.objects.filter(
            is_active='Rejected',
            user_id__in=User.objects.filter(
                date_joined__range=[start_date, end_date])).exclude(
                    user_id__in=admin_users)
        rejected_students = Student.objects.filter(
            is_active='Rejected',
            user_id__in=User.objects.filter(
                date_joined__range=[start_date, end_date]))
        rejected_alumni = Alumni.objects.filter(
            is_active='Rejected',
            user_id__in=User.objects.filter(
                date_joined__range=[start_date, end_date]))
        pending_jobs = get_total_jobs(
            normal_jobs.filter(date_posted__range=[start_date, end_date],
                               is_active='Pending'))
        rejected_jobs = get_total_jobs(
            normal_jobs.filter(date_posted__range=[start_date, end_date],
                               is_active='Rejected'))
        total_users = User.objects.filter(
            date_joined__range=[start_date, end_date])

        total_users = len(list(set(total_users)))
        admins = len(list(set(admins)))
        current = len(list(set(current)))
        alumni = len(list(set(alumni)))
        employers = len(list(set(employers)))
        apps = len(list(set(apps)))
        alumni_apps = len(list(set(alumni_apps)))
        pending_employers = len(list(set(pending_employers)))
        pending_students = len(list(set(pending_students)))
        pending_alumni = len(list(set(pending_alumni)))
        rejected_employers = len(list(set(rejected_employers)))
        rejected_students = len(list(set(rejected_students)))
        rejected_alumni = len(list(set(rejected_alumni)))

        pending_users = pending_employers + pending_students + pending_alumni
        rejected_users = rejected_employers + rejected_students + rejected_alumni
        users = admins + current + alumni + employers
        students = current + alumni

        args = {
            'users': users,
            'admins': admins,
            'students': students,
            'current': current,
            'alumni': alumni,
            'employers': employers,
            'pending_users': pending_users,
            'pending_jobs': pending_jobs,
            'jobs_posted': jobs_posted,
            'open_jobs': open_jobs,
            'closed_jobs': closed_jobs,
            'internships_posted': internships_posted,
            'total_users': total_users,
            'deleted_jobs': deleted_jobs,
            'apps': apps,
            'alumni_apps': alumni_apps,
            'rejected_users': rejected_users,
            'rejected_jobs': rejected_jobs,
            'user_type': user['user_type'],
            'obj': user['obj']
        }

        return render(request, "Admin/view_statistics.html", args)
    else:
        form = Statistics()
        args = {
            'form': form,
            'user_type': user['user_type'],
            'obj': user['obj']
        }
        return render(request, "Admin/generate_statistics.html", args)
Beispiel #24
0
def student_signup(request):
    if request.method == 'POST':
        user_data = {
            'first_name': request.POST.get('first_name'),
            'last_name': request.POST.get('last_name'),
            'email': request.POST.get('email')
        }
        student_data = {
            'gender':
            request.POST.get('gender'),
            'date_of_birth':
            request.POST.get('date_of_birth'),
            'student_id':
            request.POST.get('student_id'),
            'expected_graduation_date':
            request.POST.get('expected_graduation_date'),
            'personal_email':
            request.POST.get('personal_email'),
            'skills':
            request.POST.getlist('skills'),
            'majors':
            request.POST.getlist('majors'),
            'dp':
            request.FILES.get('dp'),
            'cv':
            request.FILES.get('cv')
        }

        user_form = InitialStudentForm(request.POST)
        if user_form.is_valid():
            if user_form.usernameExists():
                messages.error(
                    request,
                    'Username already taken. Try a different one.',
                    extra_tags='danger')  # checks if username exists in db

            elif user_form.emailExists():
                messages.error(
                    request,
                    'Email already taken. Try a different one.',
                    extra_tags='danger')  # checks if email exists in db

            elif not user_form.same_passwords():
                messages.error(
                    request,
                    'Passwords not matching. Try again.',
                    extra_tags='danger'
                )  # checks if password and confirm password are matching

            elif not user_form.email_domain_exists():
                messages.error(
                    request,
                    'Email domain does not exist. Try again.',
                    extra_tags='danger'
                )  # checks if there is an existing domain for given email
            else:
                if isValidated(user_form.cleaned_data.get('password1')):
                    student_form = StudentForm(request.POST, request.FILES)

                    if student_form.is_valid():
                        with transaction.atomic():
                            user = user_form.save()
                            student = student_form.save(commit=False)
                            student.user = user
                            email = str(student.user)
                            student_email = str(student.personal_email)
                            student.save()
                            student_form.save_m2m()

                            first_name = user_form.cleaned_data.get(
                                'first_name')
                            context = {'first_name': first_name}
                            admin_context = {
                                'first_name': first_name,
                                'protocol': 'https',
                                'domain': 'murdochdubaicareerportal.com'
                            }

                            subject = 'Your account creation request has been received'
                            htmlText = render_to_string(
                                'Accounts/account_creation_request.html',
                                context)
                            send_html_mail(subject, htmlText, [email])
                            send_html_mail(subject, htmlText, [student_email])

                            subject = 'An account creation request has been received '
                            htmlText = render_to_string(
                                'Accounts/account_creation_request_admin.html',
                                admin_context)
                            send_html_mail(subject, htmlText,
                                           [DEFAULT_FROM_EMAIL])

                        messages.success(request,
                                         'A student account has been created')
                        return render(request, 'Accounts/pending_acc.html',
                                      get_user_type(request))
                    else:
                        messages.error(request,
                                       student_form.errors,
                                       extra_tags='danger')
                else:
                    messages.error(
                        request,
                        'Password must be 8 characters or more, and must have at least 1 numeric character '
                        'and 1 letter.',
                        extra_tags='danger')
        else:
            messages.error(request, user_form.errors, extra_tags='danger')

        user_form = InitialStudentForm(user_data)
        student_form = StudentForm(student_data)
    else:
        user_form = InitialStudentForm()
        student_form = StudentForm()

    user = get_user_type(request)
    args = {
        'student_form': student_form,
        'user_form': user_form,
        'user_type': user['user_type']
    }
    return render(request, 'Student/student_registration.html', args)
Beispiel #25
0
def view_alumni_profile(request, id):
    user = get_user_type(request)
    alumni = Alumni.objects.get(user_id=id)
    args = {'alumni': alumni, 'user_type': user['user_type']}
    return render(request, 'Home/alumni_details.html', args)
Beispiel #26
0
def view_student_profile(request, id):
    user = get_user_type(request)
    student = Student.objects.get(user_id=id)
    args = {'student': student, 'user_type': user['user_type']}
    return render(request, 'Home/student_details.html', args)
Beispiel #27
0
def view_employer_profile(request, id):
    user = get_user_type(request)
    employer = Employer.objects.get(user_id=id)
    args = {'employer': employer, 'user_type': user['user_type']}
    return render(request, 'Admin/view_employer_profile.html', args)
Beispiel #28
0
def view_pending_jobs(request):
    user = get_user_type(request)
    jobs = Job.objects.filter(is_active='Pending')
    args = {'user_type': user['user_type'], 'jobs': jobs}
    return render(request, 'Admin/view_pending_jobs.html', args)
Beispiel #29
0
def AllPosts(request):
    posts = Post.objects.filter(status=True).order_by('-release_date')
    user = get_user_type(request)
    args = {'posts': posts, 'obj': user['obj'], 'user_type': user['user_type']}
    return render(request, 'bulletin/allPosts.html', args)
Beispiel #30
0
def activate(request):
    user = get_user_type(request)
    return render(request, 'Employer/pending_activation.html', user)