Ejemplo n.º 1
0
def get_next_form(new_forms, form_name):

    for index, form in enumerate(new_forms):
        if is_form_set(form):
            if form[0].name == form_name:
                next_form = new_forms[index+1]
                if is_form_set(next_form):
                    return next_form[0].name
                else:
                    return next_form.name
        else:
            if form.name == form_name:
                next_form = new_forms[index+1]
                if is_form_set(next_form):
                    return next_form[0].name
                else:
                    return next_form.name
Ejemplo n.º 2
0
    def post(self, request, name):

        form_name = request.POST.get('form_name')
        resume = self.get_resume(request, name)
        has_errors = False

        if form_name == 'basic_details':
            current_form = BasicResumeForm(request.POST)
            if current_form.is_valid():
                save_basic_details(current_form, resume)
                messages.success(request, 'Personal Details saved successfully.')
            else:
               has_errors = True
               messages.error(request, 'Please correct the errors below.')

        elif form_name == 'skill':
           ResumeSkillFormSet = formset_factory(ResumeSkillForm)
           current_form = ResumeSkillFormSet(request.POST, request.FILES, prefix='skills')
           if current_form.is_valid():
               resume.resume_skills.all().delete()
               for form in current_form:
                   if (form in current_form.extra_forms and form.has_changed()) or form in current_form.initial_forms :
                       skill = form.cleaned_data['skill']
                       efficiency_level = form.cleaned_data['efficiency_level']
                       obj, is_created = Skill.objects.get_or_create(name=skill)
                       try:
                           ResumeSkillMap.objects.create(skill=obj, resume=resume,
                                                         efficiency_level=efficiency_level)
                       except IntegrityError as inst:
                           has_errors = True
                           messages.error(request, 'Skill %s is already present' %(skill))

               messages.success(request, 'Skills saved successfully.')
           else:
               has_errors = True
               messages.error(request, 'Please correct the errors below.')

        elif form_name == 'language':
           ResumeLanguageFormSet = formset_factory(ResumeLanguageForm)
           current_form = ResumeLanguageFormSet(request.POST, request.FILES, prefix='languages')
           if current_form.is_valid():
               resume.resume_languages.all().delete()
               for form in current_form:
                   if (form in current_form.extra_forms and form.has_changed()) or form in current_form.initial_forms :
                       language = form.cleaned_data['language']
                       efficiency_level = form.cleaned_data['efficiency_level']
                       obj, is_created = Language.objects.get_or_create(name=language)
                       try:
                           ResumeLanguageMap.objects.create(language=obj, resume=resume,
                                                            efficiency_level=efficiency_level)
                       except IntegrityError as inst:
                           has_errors = True
                           messages.error(request, 'Language %s is already present' %(language))
               messages.success(request, 'Languages saved successfully.')
           else:
               has_errors = True
               messages.error(request, 'Please correct the errors below.')


        elif form_name == 'hobby':
           ResumeHobbyFormSet = formset_factory(ResumeHobbyForm)
           current_form = ResumeHobbyFormSet(request.POST, request.FILES, prefix='hobbies')
           if current_form.is_valid():
               resume.resume_hobbies.all().delete()
               for form in current_form:
                   if (form in current_form.extra_forms and form.has_changed()) or form in current_form.initial_forms :
                       hobby = form.cleaned_data['hobby']
                       efficiency_level = form.cleaned_data['efficiency_level']
                       obj, is_created = Hobby.objects.get_or_create(name=hobby)
                       try:
                           ResumeHobbyMap.objects.create(hobby=obj, resume=resume,
                                                         efficiency_level=efficiency_level)
                       except IntegrityError as inst:
                           has_errors = True
                           messages.error(request, 'Hobby %s is already present' %(hobby))

               messages.success(request, 'Hobbies saved successfully.')
           else:
               has_errors = True
               messages.error(request, 'Please correct the errors below.')

        elif form_name == 'experience':
           ResumeExperienceFormSet = formset_factory(ResumeExperienceForm)
           current_form = ResumeExperienceFormSet(request.POST, request.FILES, prefix='experiences')
           if current_form.is_valid():
               resume.resume_experiences.all().delete()
               for form in current_form:
                   if (form in current_form.extra_forms and form.has_changed()) or form in current_form.initial_forms :
                       company = form.cleaned_data['company']
                       designation = form.cleaned_data['designation']
                       from_date = form.cleaned_data['from_date']
                       to_date = form.cleaned_data['to_date']
                       obj, is_created = Company.objects.get_or_create(name=company)
                       try:
                           Experience.objects.create(company=obj, resume=resume,
                                                     from_date=from_date, to_date=to_date,
                                                     designation=designation)
                       except IntegrityError as inst:
                           has_errors = True
                           messages.error(request, 'Company %s is already present' %(compnay))
               messages.success(request, 'Experiences saved successfully.')
           else:
               has_errors = True
               messages.error(request, 'Please correct the errors below.')

        elif form_name == 'education':
           ResumeEducationFormSet = formset_factory(ResumeEducationForm)
           current_form = ResumeEducationFormSet(request.POST, request.FILES, prefix='educations')
           if current_form.is_valid():
               resume.resume_educations.all().delete()
               for form in current_form:
                   if (form in current_form.extra_forms and form.has_changed()) or form in current_form.initial_forms :
                       institude = form.cleaned_data['institude']
                       course_name = form.cleaned_data['course_name']
                       from_date = form.cleaned_data['from_date']
                       to_date = form.cleaned_data['to_date']
                       obj, is_created = Institude.objects.get_or_create(name=institude)
                       try:
                           Education.objects.create(institude=obj, resume=resume,
                                                    from_date=from_date, to_date=to_date,
                                                    course_name=course_name)
                       except IntegrityError as inst:
                           has_errors = True
                           messages.error(request, 'Institude %s is already present' %(institude))
               messages.success(request, 'Educations saved successfully.')
           else:
               has_errors = True
               messages.error(request, 'Please correct the errors below.')

        forms = get_resume_forms(request.user, resume)
        if has_errors:
            new_forms = []
            for form in forms:
                if is_form_set(form) and form[0].name == form_name:
                    new_forms.append(current_form)
                elif not is_form_set(form) and form.name == form_name:
                    new_forms.append(current_form)
                else:
                    new_forms.append(form)
        else:
            new_forms = forms
            try:
                form_name = get_next_form(new_forms, form_name)
            except IndexError:
                return HttpResponseRedirect(reverse('resume:publish_resume', args=[resume.id]))
        return render(request, 'update_resume.html',
                      {'resume': resume, 'forms': new_forms,
                       'form_name': form_name})