Exemple #1
0
def professional_education_save(request):
    data = json.loads(request.body)
    professional_id = Professional.objects.get(user=request.user).id
    data['professional_id'] = professional_id
    if 'degree_text' not in data or not data['degree_text']:
        raise serializers.ValidationError('Degree is required')
    if 'institution_text' not in data or not data['institution_text']:
        raise serializers.ValidationError('Institute is required')
    if 'enrolled_date' in data and 'graduation_date' in data:
        if datetime.strptime(data['enrolled_date'],
                             '%Y-%m-%d') > datetime.strptime(
                                 data['graduation_date'], '%Y-%m-%d'):
            raise serializers.ValidationError(
                'Enrolled date cannot be greater then graduation date')

    key_obj = ProfessionalEducation(**data)
    populate_user_info(request, key_obj, False, False)
    key_obj.save()
    if 'institution_id' in data and data['institution_id'] is not None:
        data['institution_obj'] = InstituteNameSerializer(
            Institute.objects.get(pk=data['institution_id'])).data
    if 'major_id' in data and data['major_id'] is not None:
        data['major_obj'] = MajorSerializer(
            Major.objects.get(pk=data['major_id'])).data
    if 'education_level_id' in data and data['education_level_id'] is not None:
        data['education_level_obj'] = EducationLevelSerializer(
            EducationLevel.objects.get(pk=data['education_level_id'])).data
    data['id'] = key_obj.id
    data['degree_text'] = data["degree_text"]
    #  data['education_level'] = data["education_level"]
    return Response(data)
Exemple #2
0
def professional_reference_save(request):
    data = json.loads(request.body)
    professional_id = Professional.objects.get(user=request.user).id
    data['professional_id'] = professional_id
    key_obj = Reference(**data)
    populate_user_info(request, key_obj, False, False)
    key_obj.save()
    data['id'] = key_obj.id
    return Response(data)
Exemple #3
0
def professional_workexperience_save(request):
    data = json.loads(request.body)
    professional_id = Professional.objects.get(user=request.user).id
    data['professional_id'] = professional_id
    key_obj = WorkExperience(**data)
    populate_user_info(request, key_obj, False, False)
    key_obj.save()
    data['id'] = key_obj.id
    if 'company_id' in data and data['company_id'] is not None:
        data['company_obj'] = CompanySerializer(
            Company.objects.get(pk=data['company_id'])).data
    return Response(data)
Exemple #4
0
def professional_certification_save(request):
    data = json.loads(request.body)
    professional_id = Professional.objects.get(user=request.user).id
    data['professional_id'] = professional_id
    key_obj = Certification(**data)
    populate_user_info(request, key_obj, False, False)
    key_obj.save()
    if 'organization_key_id' in data and data[
            'organization_key_id'] is not None:
        data['organization_obj'] = CertifyingOrganizationNameSerializer(
            CertifyingOrganization.objects.get(
                pk=data['organization_key_id'])).data
    data['id'] = key_obj.id
    return Response(data)
Exemple #5
0
    def post(self, request, *args, **kwargs):
        job_data = json.loads(request.body)
        if 'company_id' in job_data or 'company' in job_data:
            raise serializers.ValidationError('Unexpected Company/Company Id.')
        if 'title' not in job_data or not job_data['title']:
            raise serializers.ValidationError('Title is required.')
        if 'vacancy' not in job_data or not job_data['vacancy']:
            raise serializers.ValidationError('Vacancy is required.')
        if 'address' not in job_data or not job_data['address']:
            raise serializers.ValidationError('Address is required.')
        if 'job_site' not in job_data or not job_data['job_site']:
            raise serializers.ValidationError('Job site is required.')
        if 'job_nature' not in job_data or not job_data['job_nature']:
            raise serializers.ValidationError('Job nature is required.')
        if 'job_type' not in job_data or not job_data['job_type']:
            raise serializers.ValidationError('Job type is required.')
        if 'status' in job_data:
            if job_data['status'] != 'DRAFT' and job_data[
                    'status'] != 'POSTED' and job_data['status'] != '':
                raise serializers.ValidationError('Invalid status.')
        if 'salary_min' in job_data and job_data[
                'salary_min'] and 'salary_max' in job_data and job_data[
                    'salary_max']:
            if int(job_data['salary_min']) > int(job_data['salary_max']):
                raise serializers.ValidationError(
                    'Minimum salary cannot be greater than maximum salary')

        company = Company.objects.get(user_id=request.user.id)
        job_data['company'] = company
        try:
            skills = job_data['skills']
            del job_data['skills']
        except KeyError:
            skills = None

        job_obj = Job(**job_data)
        populate_user_info(request, job_obj, False, False)
        job_obj.save()
        if skills:
            skill_list = skills.split(',')
            for skill in skill_list:
                try:
                    skill_obj = Skill.objects.get(name=skill)
                except Skill.DoesNotExist:
                    skill_obj = None
                if skill_obj:
                    job_obj.job_skills.add(skill_obj)
        return Response(HTTP_200_OK)
Exemple #6
0
def toggle_favourite(request):
    data = {}
    job_data = json.loads(request.body)

    if job_data:
        try:
            job = Job.objects.select_related('company').get(job_id=job_data['job_id'])
        except Job.DoesNotExist:
            job = None
        try:
            favourite_jobs = FavouriteJob.objects.filter(created_by=request.user.id, job=job_data['job_id'])
        except FavouriteJob.DoesNotExist:
            favourite_jobs = None
        if not favourite_jobs:
            favourite_job = FavouriteJob(job_id=job_data['job_id'])
            populate_user_info(request, favourite_job, False, False)
            favourite_job.save()
            favourite_job_counter(job)

            save_recent_activity(request.user.id, 'apply_com', )
            if job.company.user_id:
                save_recent_activity(job.company.user_id, 'apply_com')

            data = {
                'code': HTTP_200_OK,
                "result": {
                    "user": {
                        "job": job_data['job_id'],
                        "status": 'Saved'
                    }
                }
            }
        elif favourite_jobs:
            favourite_jobs.delete()
            favourite_job_counter(job)
            data = {
                'code': HTTP_200_OK,
                "result": {
                    "user": {
                        "job": job_data['job_id'],
                        "status": 'Removed'
                    }
                }
            }
    return Response(data)
Exemple #7
0
def professional_portfolio_save(request):
    data = json.loads(request.body)
    professional_id = Professional.objects.get(user=request.user).id
    data['professional_id'] = professional_id
    if 'image' in data:
        img_base64 = data['image']
        if img_base64:
            format, imgstr = img_base64.split(';base64,')
            ext = format.split('/')[-1]
            filename = str(uuid.uuid4()) + '-professional.' + ext
            image_data = ContentFile(base64.b64decode(imgstr), name=filename)
            fs = FileSystemStorage()
            filename = fs.save(filename, image_data)
            uploaded_file_url = fs.url(filename)
            data['image'] = uploaded_file_url
    key_obj = Portfolio(**data)
    populate_user_info(request, key_obj, False, False)
    key_obj.save()
    data['id'] = key_obj.id
    return Response(data)
Exemple #8
0
def professional_skill_save(request):
    data = json.loads(request.body)
    professional_id = Professional.objects.get(user=request.user).id
    data['professional_id'] = professional_id
    skill_name_id = data['skill_name_id']
    pro_skill_obj_with_archive = ProfessionalSkill.objects.filter(
        professional_id=professional_id,
        skill_name_id=skill_name_id,
        is_archived=ARCHIVED_TRUE)
    pro_skill_obj_without_archive = ProfessionalSkill.objects.filter(
        professional_id=professional_id,
        skill_name_id=skill_name_id,
        is_archived=ARCHIVED_FALSE)
    key_obj = ProfessionalSkill(**data)
    populate_user_info(request, key_obj, False, False)

    if pro_skill_obj_with_archive.count(
    ) > 1 and not pro_skill_obj_without_archive:
        pro_skill_obj_with_archive.delete()
        key_obj.save()
        data['skill_obj'] = SkillSerializer(
            Skill.objects.get(pk=data['skill_name_id'])).data
        data['id'] = key_obj.id

    elif pro_skill_obj_with_archive.count() == 1:
        pro_skill_obj = pro_skill_obj_with_archive.first()
        pro_skill_obj.is_archived = ARCHIVED_FALSE
        pro_skill_obj.save()
        data['skill_obj'] = SkillSerializer(
            Skill.objects.get(pk=data['skill_name_id'])).data
        data['id'] = key_obj.id

    elif not pro_skill_obj_with_archive and not pro_skill_obj_without_archive:
        key_obj.save()
        data['skill_obj'] = SkillSerializer(
            Skill.objects.get(pk=data['skill_name_id'])).data
        data['id'] = key_obj.id
    else:
        raise serializers.ValidationError("Duplicate Entry")

    return Response(data)
Exemple #9
0
def apply_online(request):
    job_data = json.loads(request.body)

    try:
        job = Job.objects.get(job_id=job_data['job_id'])
    except Job.DoesNotExist:
        return HTTP_404_NOT_FOUND

    try:
        JobApplication(JobApplication.objects.get(created_by=request.user.id, job=job))
    except JobApplication.DoesNotExist:
        pro = Professional.objects.get(user_id=request.user.id)
        job_application = JobApplication(job=job, pro=pro)
        populate_user_info(request, job_application, False, False)
        job_application.save()
        applied_job_counter(job)
        data = {
            "job": job_data['job_id'],
            "status": 'Saved'
        }
    return Response(data)
Exemple #10
0
 def save_model(self, request, obj, form, change):
     is_archived = 'is_archived' in form.changed_data and obj.archived_by
     populate_user_info(request, obj, change, is_archived)
     obj.save()