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)
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)
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)
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)
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)
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)
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)
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)
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)
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()