from django.shortcuts import render from django.http import HttpResponse from django.db import transaction from django.contrib import messages from .models import UserDetails, Languages, GeneralInfo, EducationalQualification , Experience, AdministrativeExperience, RefferedInstitutions, PublishedBooks, Publications from .models import ResearchProjects, InternationalBodies, Workshops,OrganisingEvents, Leadership, ResearchExperience from .models import StatutoryWorkingExp, QualityIssues, YouthHandlingExp,Skills, References,ResearchParams,Awards from django.contrib.auth.models import User from django.template import loader from django import template from django.shortcuts import get_object_or_404, redirect, render from django.contrib.auth import authenticate, login, logout from django.contrib.auth.decorators import login_required, user_passes_test from django.views.decorators.csrf import csrf_protect from datetime import datetime from collections import defaultdict from django.contrib.auth.tokens import default_token_generator from django.utils.http import urlsafe_base64_encode, urlsafe_base64_decode from django.utils.encoding import force_bytes ,force_str from django.contrib.sites.shortcuts import get_current_site from django.template.loader import render_to_string from django.core.mail import send_mail from mysite.settings import EMAIL_HOST_USER from django.contrib.auth.tokens import default_token_generator from django.utils.html import strip_tags from django.core.mail import EmailMultiAlternatives def loginpage(request, message=None): context = {'segment': 'index'} if message is not None: context[message[0]] = message[1] html_template = loader.get_template('accounts/login.html') return HttpResponse(html_template.render(context, request)) def loginuser(request): msg = [] if request.method == 'POST': username = request.POST.get('username') password = request.POST.get('password') user = authenticate(request, username=username, password=password) if user is not None: login(request, user) messages.success(request, "Login Successful") msg = ["success_message", "Login Successful"] return index(request, message=msg) else: messages.error(request, "Invalid Username Or Password") msg = ['error_message', "Invalid Username Or Password"] return loginpage(request, message=msg) else: messages.error(request, "Invalid Username Or Password") msg = ['error_message', "Invalid Username Or Password"] return loginpage(request, message=msg) @login_required(login_url='login.html') @csrf_protect def logoutuser(request): msg = None logout(request) messages.success(request, "Logged Out Successfully") msg = ["success_message", "Logged Out Successfully"] return loginpage(request, message=msg) def registerpage(request, message=None): context = {'segment': 'index'} if message is not None: context[message[0]] = message[1] html_template = loader.get_template('accounts/register.html') return HttpResponse(html_template.render(context, request)) def registeruser(request): msg = None if request.method == 'POST': username = request.POST.get('email') password1 = request.POST.get('password1') password2 = request.POST.get('password2') if User.objects.filter(username=username).exists(): messages.error(request, "Email already exists") msg = ['error_message', "Email already exists"] return registerpage(request, message=msg) if password1 != password2: messages.error(request, "Passwords do not match") msg = ['error_message', "Passwords do not match"] return registerpage(request, message=msg) if password1 == password2: user = User.objects.create_user(username, username, password1) user.is_active = False user.save() current_site = get_current_site(request) title = 'Activate Your Account' message = render_to_string('accounts/confirmation_email.html', { 'user': user, 'domain': current_site.domain, 'uid': urlsafe_base64_encode(force_bytes(user.pk)), 'token': default_token_generator.make_token(user), }) # Plain text version of the email (without HTML tags) plain_message = strip_tags(message) email = EmailMultiAlternatives(title, plain_message, EMAIL_HOST_USER, [user.email]) email.attach_alternative(message, 'text/html') email.send() # token = default_token_generator.make_token(user) # uid = urlsafe_base64_encode(force_bytes(user.pk)) # current_site = get_current_site(request) # email_subject = 'Activate your account' # email_message = render_to_string( # 'accounts/confirmation_email.html', # { # 'user': user, # 'domain': current_site.domain, # 'uid': uid, # 'token': token, # } # ) # send_mail(email_subject, email_message, EMAIL_HOST_USER, [user.email]) messages.success(request, "Account created successfully. Please check your email for confirmation.") msg = ['success_message', "Account created successfully. Please check your email for confirmation."] return registerpage(request, message=msg) return render(request, 'registration/register.html') def activate_user(request, uidb64, token): try: uid = force_str(urlsafe_base64_decode(uidb64)) user = User.objects.get(pk=uid) if default_token_generator.check_token(user, token): user.is_active = True user.save() messages.success(request, "Account activated successfully. You can now log in.") else: messages.error(request, "Invalid activation link.") except (User.DoesNotExist, ValueError, TypeError): messages.error(request, "Invalid activation link.") return redirect('login') def passwordresetpage(request, message=None): context = {'segment': 'index'} if message is not None: context[message[0]] = message[1] html_template = loader.get_template('accounts/password_reset.html') return HttpResponse(html_template.render(context, request)) def password_reset(request): if request.method == 'POST': email = request.POST.get('email') print("*****************************") print("*******************************") print(email) user=User.objects.get(username=email) if user is not None: current_site = get_current_site(request) title = 'Password Reset Request' message = render_to_string('accounts/password_reset_email.html', { 'user': user, 'domain': current_site.domain, 'uid': urlsafe_base64_encode(force_bytes(user.pk)), 'token': default_token_generator.make_token(user), }) # Plain text version of the email (without HTML tags) plain_message = strip_tags(message) email = EmailMultiAlternatives(title, plain_message, EMAIL_HOST_USER, [email]) email.attach_alternative(message, 'text/html') email.send() return redirect('password_reset_done') else: messages.error(request, 'No user found with this email.') return redirect('password_reset') return render(request, 'accounts/password_reset.html') def password_reset_done(request): return render(request, 'accounts/password_reset_done.html') def password_reset_confirm(request, uidb64, token, message=None): try: uid = force_str(urlsafe_base64_decode(uidb64)) user = User.objects.get(pk=uid) except (TypeError, ValueError, OverflowError, User.DoesNotExist): user = None if user is not None and default_token_generator.check_token(user, token): if request.method == 'POST': new_password = request.POST.get('new_password') confirm_password = request.POST.get('confirm_password') if (new_password != confirm_password): messages.error(request, "Password Does Not Match") msg = ['error_message', "Password Does Not Match."] return render(request, 'accounts/password_reset_confirm.html', {'user': user}) user.set_password(new_password) user.save() return redirect('password_reset_complete') return render(request, 'accounts/password_reset_confirm.html', {'user': user}) else: return HttpResponse('Invalid password reset link.') def password_reset_complete(request): return render(request, 'accounts/password_reset_complete.html') @login_required(login_url='login.html') @csrf_protect def index(request,message=None): if UserDetails.objects.filter(django_user_id=request.user).exists(): user_db = UserDetails.objects.get(django_user_id=request.user) if user_db.is_submitted: messages.error(request, "You have already submitted the form.") return redirect('final_submit.html') context = {'segment': 'home'} if message is not None: context[message[0]] = message[1] html_template = loader.get_template('hiring/home.html') return HttpResponse(html_template.render(context, request)) @login_required(login_url='login.html') @csrf_protect def homePage(request,message=None): if UserDetails.objects.filter(django_user_id=request.user).exists(): user_db = UserDetails.objects.get(django_user_id=request.user) if user_db.is_submitted: messages.error(request, "You have already submitted the form.") return redirect('final_submit.html') context = {'segment': 'home'} if message is not None: context[message[0]] = message[1] html_template = loader.get_template('hiring/home.html') return HttpResponse(html_template.render(context, request)) @login_required(login_url='login.html') @csrf_protect def aboutPage(request,message=None): context = {'segment': 'about'} if message is not None: context[message[0]] = message[1] html_template = loader.get_template('hiring/about.html') return HttpResponse(html_template.render(context, request)) @login_required(login_url='login.html') @csrf_protect def contactPage(request,message=None): context = {'segment': 'contact'} if message is not None: context[message[0]] = message[1] html_template = loader.get_template('hiring/contact.html') return HttpResponse(html_template.render(context, request)) @login_required(login_url='login.html') @csrf_protect def generalinfopage(request, message=None): user_db = None if UserDetails.objects.filter(django_user_id=request.user).exists(): user_db = UserDetails.objects.get(django_user_id=request.user) if user_db.is_submitted: messages.error(request, "You have already submitted the form.") return redirect('final_submit.html') if request.method == 'POST': try: django_user_id = request.user profile_photo = request.FILES.get('profile_photo') full_name = request.POST.get('full_name') dob = request.POST.get('dob') present_post = request.POST.get('present_post') designation_grade = request.POST.get('designation_grade') date_from_held = request.POST.get('date_from_held') name_of_organisation = request.POST.get('name_of_organisation') address_of_organisation = request.POST.get('address_of_organisation') address = request.POST.get('address') # address for communication telephone_number = request.POST.get('telephone_number') office_contact = request.POST.get('office_contact') residence = request.POST.get('residence') mobile_number = request.POST.get('mobile_number') # number_of_languages = int(request.POST.get('number_of_languages')) # languages = [] # while number_of_languages > 0: # languages.append(request.POST.get('language' + str(number_of_languages - 1))) # number_of_languages -= 1 case_pending = request.POST.get('case_pending').lower() ## yes or no if case_pending == 'yes': case_pending = True case_details = request.POST.get('case_details') else: case_pending = False case_details = '' if profile_photo: if profile_photo.name.split('.')[-1] not in ['jpg', 'jpeg', 'png'] \ or profile_photo.content_type.split('/')[0] != 'image' \ or profile_photo.size > 200 * 1024: messages.error(request, 'Please upload a valid image file of size less than 200 KB.') return render(request, 'hiring/general_info.html') if UserDetails.objects.filter(django_user_id=django_user_id).exists(): user_db=UserDetails.objects.get(django_user_id=django_user_id) Languages.objects.filter(user_id=user_db).delete() if profile_photo: user_db.profile_photo = profile_photo user_db.full_name = full_name user_db.dob = dob user_db.mobile_number = mobile_number user_db.office_contact = office_contact user_db.case_pending = case_pending user_db.case_details = case_details user_db.residence = residence user_db.telephone_number = telephone_number user_db.address = address user_db.save() GeneralInfo.objects.filter(user_id=user_db).update( present_post = present_post, designation_grade = designation_grade, date_from_held = date_from_held, name_of_organisation = name_of_organisation, address_of_organisation = address_of_organisation, ) # submitted_languages = [] # number_of_displayed_languages = int(request.POST.get('number_of_displayed_languages')) # for i in range(number_of_displayed_languages): # submitted_language = request.POST.get(f'language{i}') # if submitted_language: # submitted_languages.append(submitted_language) Languages.objects.filter(user_id=user_db).delete() # for language in submitted_languages: # Languages.objects.create(user_id=user_db, language=language) else: db_user_detail = UserDetails.objects.create( django_user_id = django_user_id, profile_photo = profile_photo, full_name = full_name, dob = dob, mobile_number = mobile_number, office_contact = office_contact, case_pending = case_pending, case_details = case_details, residence = residence, telephone_number = telephone_number, address = address, ) user_db = db_user_detail GeneralInfo.objects.create( user_id = user_db, present_post = present_post, designation_grade = designation_grade, date_from_held = date_from_held, name_of_organisation = name_of_organisation, address_of_organisation = address_of_organisation, ) messages.success(request, 'Your form has been submitted successfully!') number_of_displayed_languages = int(request.POST.get('number_of_displayed_languages',1)) print("********************************") print("********************************") print(number_of_displayed_languages) for i in range(0,number_of_displayed_languages): language=request.POST.get(f'language_{i}') if user_db: Languages.objects.create(user_id=user_db, language=language) return redirect('qualification1.html') except Exception as e: print(e) messages.error(request, 'There was some error in submitting your form. Please try again.' + str(e)) return render(request, 'hiring/general_info.html') else: try: user_details = UserDetails.objects.get(django_user_id=request.user) general_info = GeneralInfo.objects.get(user_id=user_details) languages = Languages.objects.filter(user_id=user_details) context = { 'segment': 'page1', 'user_details': user_details, 'general_info': general_info, 'languages': languages, } if message is not None: context[message[0]] = message[1] return render(request, 'hiring/general_info.html', context) except (UserDetails.DoesNotExist, GeneralInfo.DoesNotExist): return render(request, 'hiring/general_info.html') @login_required(login_url='login.html') @csrf_protect def qualification1page(request, message=None): msg=[] if UserDetails.objects.filter(django_user_id=request.user).exists(): user_db = UserDetails.objects.get(django_user_id=request.user) if user_db.is_submitted: messages.error(request, "You have already submitted the form.") return redirect('final_submit.html') if request.method == 'POST': try: user_db = request.user.id user_id = UserDetails.objects.get(django_user_id=user_db) if UserDetails.objects.filter(django_user_id=user_db).exists(): EducationalQualification.objects.filter(user_id=user_id).delete() Experience.objects.filter(user_id=user_id).delete() for exam_type in ['secondary', 'higher_secondary', 'graduation', 'post_graduation', 'phd']: board = request.POST.get(f'board_{exam_type}') institute = request.POST.get(f'institute_{exam_type}') subjects = request.POST.get(f'subjects_{exam_type}') year = request.POST.get(f'year_{exam_type}') division = request.POST.get(f'division_{exam_type}') marks =request.POST.get(f'marks_{exam_type}') print("********************************") print(marks,exam_type) educational_qualification = EducationalQualification( user_id=user_id, exam_or_degree=exam_type, board_or_university=board, institute=institute, subjects_or_specialization=subjects, year_of_passing=year, division_or_cgpa=division, marks_in_percentage=marks, ) educational_qualification.save() if exam_type == 'phd': break qualification_count = int(request.POST.get('qualification_count')) print("********************************") print("********************************") print("qualification",qualification_count) for i in range(qualification_count): # print("count",i) exam_type = request.POST.get(f'examination_{i}') board = request.POST.get(f'board_{i}') institute = request.POST.get(f'institute_{i}') subjects = request.POST.get(f'subjects_{i}') year = request.POST.get(f'year_{i}') division = request.POST.get(f'division_{i}') marks =request.POST.get(f'marks_{i}') print("********************************") print(marks) if not exam_type and not board and not institute and not subjects and not year and not division and not marks: break educational_qualification = EducationalQualification( user_id=user_id, exam_or_degree=exam_type, board_or_university=board, institute=institute, subjects_or_specialization=subjects, year_of_passing=year, division_or_cgpa=division, marks_in_percentage=marks, ) educational_qualification.save() experience_no= int(request.POST.get('experience_count',1)) print("********************************") print("********************************") print(experience_no) for i in range(experience_no): university = request.POST.get(f'university_{i}') post = request.POST.get(f'post_{i}') exp_from = request.POST.get(f'exp_from_{i}') exp_to = request.POST.get(f'exp_to_{i}') exp_years = request.POST.get(f'exp_years_{i}') exp_months = request.POST.get(f'exp_months_{i}') print("********************************") print("********************************") print(university,post,exp_from,exp_to,exp_years,exp_months) experience = Experience( user_id=user_id, university=university, post=post, from_date=exp_from, to_date=exp_to, ) experience.save() # Redirect to a success page or another view messages.success(request, "form submitted successfully.") msg = ['success_message', "form Subitted successfully."] return redirect('qualification2.html') except Exception as e: message.error(request,"Something went wrong. Please try again.") return qualification1page(request,message=msg) else: try: user_id = request.user.id user_details = UserDetails.objects.get(django_user_id=user_id) educational_qualifications = EducationalQualification.objects.filter(user_id=user_details) # Organize qualifications by type qualifications_by_type = defaultdict(list) for qualification in educational_qualifications: qualifications_by_type[qualification.exam_or_degree].append(qualification) experiences = Experience.objects.filter(user_id=user_details) other_exams = [] for exams in educational_qualifications: if exams.exam_or_degree not in ['secondary', 'higher_secondary', 'graduation', 'post_graduation', 'phd']: # create another list of objects print("********************************") print("********************************") print(exams.exam_or_degree) other_exams.append(exams) context = { 'segment': 'page2', 'qualifications':educational_qualifications, 'qualifications_by_type': qualifications_by_type, 'other_exams': other_exams, 'experiences': experiences, } if message is not None: context[message[0]] = message[1] return render(request, 'hiring/qualification1.html', context) except UserDetails.DoesNotExist: # User details not found, show a message or redirect to a registration page return render(request, 'hiring/qualification1.html.html') except EducationalQualification.DoesNotExist: return render(request, 'hiring/qualification1.html.html') @login_required(login_url='login.html') @csrf_protect def qualification2page(request,message=None): msg = [] if UserDetails.objects.filter(django_user_id=request.user).exists(): user_db = UserDetails.objects.get(django_user_id=request.user) if user_db.is_submitted: messages.error(request, "You have already submitted the form.") return redirect('final_submit.html') if request.method == 'POST': user_db = request.user.id user_id = UserDetails.objects.get(django_user_id=user_db) if UserDetails.objects.filter(django_user_id=user_db).exists(): Publications.objects.filter(user_id=user_id).delete() PublishedBooks.objects.filter(user_id=user_id).delete() RefferedInstitutions.objects.filter(book_id__user_id=user_id).delete() AdministrativeExperience.objects.filter(user_id=user_id).delete() ResearchParams.objects.filter(user_id=user_id).delete() research_no= int(request.POST.get('research_count',1)) print("********************************") print("********************************") print(research_no) for i in range(0, research_no): title = request.POST.get(f'title_of_publication_{i}') journal = request.POST.get(f'name_of_journal_{i}') type_of_publication=request.POST.get(f'type_of_publication_{i}') impact_of_publication_factor = request.POST.get(f'impact_of_publication_{i}') year = request.POST.get(f'year_of_publication_{i}') print("********************************") print("********************************") print(title,journal,year,impact_of_publication_factor) publication = Publications( user_id=user_id, title_of_publication=title, type_of_publication=type_of_publication, name_of_international_journal=journal, impact_factor=float(impact_of_publication_factor), date=year, ) publication.save() no_of_books= int(request.POST.get('books_count',1)) bookcnt =0 chaptercnt=0 # print(no_of_books) for i in range(0, no_of_books): title = request.POST.get(f'title_of_book_{i}') publisher = request.POST.get(f'name_of_publisher_{i}') book_type=request.POST.get(f'book_type_{i}') institution = request.POST.get(f'referred_institution_{i}') if book_type == 'book': bookcnt+=1 elif book_type == 'chapter': chaptercnt+=1 book = PublishedBooks( user_id=user_id, title_of_book=title, book_type=book_type, name_of_publisher=publisher, ) book.save() phd_students=request.POST.get('phd_students') total_research=request.POST.get('total_research') total_books=request.POST.get('total_books') total_patents=request.POST.get('total_patents') research_param = ResearchParams( user_id= user_id, phd_students_guided=phd_students, research_publications=total_research, books_published=total_books, book_chapters_published=chaptercnt, patents_granted=total_patents, ) research_param.save() institutions = request.POST.get(f'institutions_{i}', '').split(',') for inst in institutions: if inst.strip(): referred_institution = RefferedInstitutions( book_id=book, institutions=inst.strip(), ) referred_institution.save() # Pocess administrative experience no_of_admin_exp= int(request.POST.get('admin_experience_count',1)) # print("********************************") # print("********************************") # print(no_of_admin_exp) for i in range(0, no_of_admin_exp): post = request.POST.get(f'post_{i}') from_date = request.POST.get(f'from_date_{i}') if from_date: from_date = datetime.strptime(from_date, '%Y-%m-%d').strftime('%Y-%m-%d') to_date = request.POST.get(f'to_date_{i}') if to_date: to_date = datetime.strptime(to_date, '%Y-%m-%d').strftime('%Y-%m-%d') # print("********************************") # print(from_date, to_date) name_of_university = request.POST.get(f'name_of_university_{i}') location_of_university = request.POST.get(f'location_of_university_{i}') admin_experience = AdministrativeExperience( user_id=user_id, post=post, from_date=from_date, to_date=to_date, name_of_university=name_of_university, location=location_of_university, ) admin_experience.save() # Redirect to a success page or another view messages.success(request, "Form submitted successfully.") msg = ['success_message', "Form submitted successfully."] return redirect('qualification3.html') else: try: django_user_id = request.user user_id = UserDetails.objects.get(django_user_id=django_user_id.id) publications= Publications.objects.filter(user_id=user_id) published_books = PublishedBooks.objects.filter(user_id=user_id) if ResearchParams.objects.filter(user_id=user_id).exists(): research_param = ResearchParams.objects.get(user_id=user_id) else: research_param = None referred_institutions_dict = {} for book in published_books: referred_institutions = RefferedInstitutions.objects.filter(book_id=book.id) referred_institutions_dict[book.id] = [institution.institutions for institution in referred_institutions] admin_experience = AdministrativeExperience.objects.filter(user_id=user_id) context = {'segment': 'page3', 'publications': publications, 'published_books': published_books, 'referred_institutions_dict': referred_institutions_dict, 'admin_experience': admin_experience, 'research_param': research_param,} if message is not None: context[message[0]] = message[1] html_template = loader.get_template('hiring/qualification2.html') return HttpResponse(html_template.render(context, request)) except UserDetails.DoesNotExist: return render(request, 'hiring/qualification2.html') @login_required(login_url='login.html') @csrf_protect def qualification3page(request, message=None): msg = [] if UserDetails.objects.filter(django_user_id=request.user).exists(): user_db = UserDetails.objects.get(django_user_id=request.user) if user_db.is_submitted: messages.error(request, "You have already submitted the form.") return redirect('final_submit.html') if request.method == 'POST': django_user_id = request.user if UserDetails.objects.filter(django_user_id=django_user_id).exists(): user_id=UserDetails.objects.get(django_user_id=django_user_id.id) ResearchExperience.objects.filter(user_id=user_id).delete() ResearchProjects.objects.filter(user_id=user_id).delete() InternationalBodies.objects.filter(user_id=user_id).delete() Workshops.objects.filter(user_id=user_id).delete() research_project_count = int(request.POST.get('research_project_count', 1)) international_body_count = int(request.POST.get('international_body_count', 1)) international_exposure_count = int(request.POST.get('international_exposure_count', 1)) i_index=request.POST.get('i_index') h_index=request.POST.get('h_index') research_experience=ResearchExperience.objects.create( user_id=user_id, i_index=i_index, h_index=h_index, ) for i in range(0, research_project_count): title_of_project = request.POST.get(f'title_of_project_{i}') project_value = request.POST.get(f'project_value_{i}') granting_agency = request.POST.get(f'granting_agency_{i}') date_of_start = request.POST.get(f'project_start_date_{i}') date_of_completion = request.POST.get(f'project_completion_date_{i}') ResearchProjects.objects.create( user_id=user_id, title_of_project=title_of_project, project_value=project_value, granting_agency=granting_agency, date_of_start=date_of_start, date_of_completion=date_of_completion ) # Save International Bodies for i in range(0, international_body_count ): name_of_international_body = request.POST.get(f'name_of_international_body_{i}') nature_of_experience = request.POST.get(f'nature_of_experience_{i}') InternationalBodies.objects.create( user_id=user_id, name_of_international_body=name_of_international_body, nature_of_experience=nature_of_experience ) # Save Workshops for i in range(0, international_exposure_count ): title_of_workshop = request.POST.get(f'title_of_workshop_{i}') year = request.POST.get(f'month_of_exposure_{i}') # if year: # year_of_passing = datetime.strptime(year, '%Y-%m-%d').strftime('%Y-%m-%d') # print("****************************************************************") # print("****************************************************************") # print("****************************************************************") # print("year_of_passing",year_of_passing) place = request.POST.get(f'place_of_exposure_{i}') Workshops.objects.create( user_id=user_id, title_of_workshop=title_of_workshop, month_and_year=year, place=place ) messages.success(request, "Form submitted successfully.") msg = ['success_message', "Form submitted successfully."] return redirect('qualifications4.html') else: try: user_details = UserDetails.objects.get(django_user_id=request.user) index = ResearchExperience.objects.filter(user_id=user_details) research_projects = ResearchProjects.objects.filter(user_id=user_details) international_bodies = InternationalBodies.objects.filter(user_id=user_details) workshops = Workshops.objects.filter(user_id=user_details) context = { 'segment': 'page4', 'user_details': user_details, 'index': index, 'research_projects': research_projects, 'international_bodies': international_bodies, 'workshops': workshops, } # context = {'segment': 'page4'} if message is not None: context[message[0]] = message[1] html_template = loader.get_template('hiring/qualification3.html') return HttpResponse(html_template.render(context, request)) except UserDetails.DoesNotExist: return redirect('qualification3.html') @login_required(login_url='login.html') @csrf_protect def qualification4page(request,message=None): msg = [] if UserDetails.objects.filter(django_user_id=request.user).exists(): user_db = UserDetails.objects.get(django_user_id=request.user) if user_db.is_submitted: messages.error(request, "You have already submitted the form.") return redirect('final_submit.html') if request.method == 'POST': user_db = request.user.id user_id = UserDetails.objects.get(django_user_id=user_db) if UserDetails.objects.filter(django_user_id=user_db).exists(): OrganisingEvents.objects.filter(user_id=user_id).delete() Leadership.objects.filter(user_id=user_id).delete() event_experience_count = int(request.POST.get('event_experience_count', 1)) leadership_experience_count = int(request.POST.get('leadership_experience_count', 1)) print("****************************************************************") print("****************************************************************") print("****************************************************************") print(event_experience_count,leadership_experience_count) for i in range(0, event_experience_count ): title_of_workshop = request.POST.get(f'title_of_event_workshop_{i}') year = request.POST.get(f'month_of_event_{i}') place = request.POST.get(f'place_of_event_{i}') role_assigned = request.POST.get(f'role_for_event_{i}') OrganisingEvents.objects.create( user_id=user_id, title_of_workshop=title_of_workshop, month_and_year=year, place=place, role_assigned=role_assigned ) # Save Leadership Experience for i in range(0, leadership_experience_count): leadership_activity = request.POST.get(f'description_of_leadership_{i}') documented_evidence = request.POST.get(f'evidence_of_leadership_{i}') Leadership.objects.create( user_id=user_id, leadership_activity=leadership_activity, documented_evidence=documented_evidence ) messages.success(request, "Form submitted successfully.") msg = ['success_message', "Form submitted successfully."] return redirect('experience1.html') else: try: user_details = UserDetails.objects.get(django_user_id=request.user) organising_events = OrganisingEvents.objects.filter(user_id=user_details) leaderships = Leadership.objects.filter(user_id=user_details) context = {'segment': 'page5', 'organising_events': organising_events, 'leaderships': leaderships,} if message is not None: context[message[0]] = message[1] html_template = loader.get_template('hiring/qualifications4.html') return HttpResponse(html_template.render(context, request)) except: return render(request, 'hiring/qualifications4.html') @login_required(login_url='login.html') @csrf_protect def experience1page(request,message=None): msg = [] if UserDetails.objects.filter(django_user_id=request.user).exists(): user_db = UserDetails.objects.get(django_user_id=request.user) if user_db.is_submitted: messages.error(request, "You have already submitted the form.") return redirect('final_submit.html') if request.method == 'POST': django_user_id = request.user if UserDetails.objects.filter(django_user_id=django_user_id).exists(): user_id=UserDetails.objects.get(django_user_id=django_user_id.id) StatutoryWorkingExp.objects.filter(user_id=user_id).delete() QualityIssues.objects.filter(user_id=user_id).delete() # Extract data from the form # user_db = request.user.id # user_id = UserDetails.objects.get(django_user_id=user_db) experience_of_working_count = int(request.POST.get('experience_of_working_count',1)) experience_of_handling_count = int(request.POST.get('experience_of_handling_count',2)) print("****************************************************************") print("****************************************************************") print("****************************************************************") print(experience_of_working_count,experience_of_handling_count) # Loop through the submitted data and save it to the database for i in range(0, experience_of_working_count): institution = request.POST.get(f'experience_of_working_institution_{i}') # authority_or_position = request.POST.get(f'statutory_forums_{i}') + ', ' + request.POST.get(f'statutory_position_{i}') statutory_forums = request.POST.get(f'statutory_forums_{i}') # statutory_position = request.POST.get(f'statutory_position_{i}') if statutory_forums is not None : authority_or_position = statutory_forums else: # Handle the case where one or both values are None # For example, you could provide default values or an error message. authority_or_position = "Default Authority or Position" from_date = request.POST.get(f'experience_of_working_from_{i}') to_date = request.POST.get(f'experience_of_working_to_{i}') # Create and save an instance of StatutoryWorkingExp statutory_working_exp = StatutoryWorkingExp( user_id=user_id, institution=institution, authority_or_position=authority_or_position, from_date=from_date, to_date=to_date ) statutory_working_exp.save() area="" for i in range(0, experience_of_handling_count ): if i == 0: area = "Quality issues" elif i == 1: area = "Assessment and accreditation procedures" else: area = request.POST.get(f'experience_of_handling_area_{i}') print("********************************area") print(area) institution = request.POST.get(f'experience_of_handling_institution_{i}') from_date = request.POST.get(f'experience_of_handling_from_{i}') to_date = request.POST.get(f'experience_of_handling_to_{i}') achievements = request.POST.get(f'experience_of_handling_achievements_{i}') quality_issue = QualityIssues( user_id=user_id, area=area, institution=institution, from_date=from_date, to_date=to_date, achievements=achievements ) quality_issue.save() # Optionally, you can redirect to a success page or do something else messages.success(request, "Form submitted successfully.") msg = ['success_message', "Form submitted successfully."] return redirect('experience2.html') # Change 'success_page' to your actual URL name else: try: user_details = UserDetails.objects.get(django_user_id=request.user) statutory_experiences = StatutoryWorkingExp.objects.filter(user_id=user_details) quality_issuess = QualityIssues.objects.filter(user_id=user_details) context = { 'segment': 'page6', 'list':[0,1], 'user_details': user_details, 'statutory_experiences': statutory_experiences, 'quality_issuess': quality_issuess } if message is not None: context[message[0]] = message[1] html_template = loader.get_template('hiring/experience1.html') return HttpResponse(html_template.render(context, request)) except UserDetails.DoesNotExist: return render(request, 'hiring/experience1.html') @login_required(login_url='login.html') @csrf_protect def experience2page(request,message=None): msg = [] if UserDetails.objects.filter(django_user_id=request.user).exists(): user_db = UserDetails.objects.get(django_user_id=request.user) if user_db.is_submitted: messages.error(request, "You have already submitted the form.") return redirect('final_submit.html') if request.method == 'POST': # Process Experience to guide Ph.D. students data user_db = request.user.id user_id = UserDetails.objects.get(django_user_id=user_db) if UserDetails.objects.filter(django_user_id=user_db).exists(): Awards.objects.filter(user_id=user_id).delete() YouthHandlingExp.objects.filter(user_id=user_id).delete() experience_to_guide_count = int(request.POST.get('experience_to_guide_count', 1)) experience_at_level_count = int(request.POST.get('experience_at_level_count', 1)) print("********************************") print(experience_to_guide_count,experience_at_level_count) for i in range(0, experience_to_guide_count ): student = request.POST.get(f'experience_to_guide_student_{i}') thesis_title = request.POST.get(f'experience_to_guide_thesis_title_{i}') awarded_phd = request.POST.get(f'experience_to_guide_from_{i}') print("****************************************************************") print("****************************************************************") print("****************************************************************") print(student,thesis_title,awarded_phd) guide = Awards( user_id=user_id, award_name=student, granting_agency=thesis_title, year=awarded_phd, ) guide.save() for i in range(0, experience_at_level_count): nature_of_activity = request.POST.get(f'experience_at_level_activity_{i}') institution = request.POST.get(f'experience_at_level_institution_{i}') from_date = request.POST.get(f'experience_at_level_from_{i}') to_date = request.POST.get(f'experience_at_level_to_{i}') achievements = request.POST.get(f'experience_at_level_achievements_{i}') youth_handling = YouthHandlingExp( user_id=user_id, nature_of_activity=nature_of_activity, institution=institution, from_date=from_date, to_date=to_date, achievements=achievements ) youth_handling.save() messages.success(request, "Form submitted successfully.") msg = ['success_message', "Form submitted successfully."] return redirect('skills1.html') else: try: user_details = UserDetails.objects.get(django_user_id=request.user) guide_of_phds = Awards.objects.filter(user_id=user_details) youth_handling_exps = YouthHandlingExp.objects.filter(user_id=user_details) context = {'segment': 'page7', 'guide_of_phds': guide_of_phds, 'youth_handling_exps': youth_handling_exps,} if message is not None: context[message[0]] = message[1] html_template = loader.get_template('hiring/experience2.html') return HttpResponse(html_template.render(context, request)) except: return render(request, 'hiring/experience2.html') @login_required(login_url='login.html') @csrf_protect def skill1page(request,message=None): msg=[] if UserDetails.objects.filter(django_user_id=request.user).exists(): user_db = UserDetails.objects.get(django_user_id=request.user) if user_db.is_submitted: messages.error(request, "You have already submitted the form.") return redirect('final_submit.html') if request.method == 'POST': user_id = UserDetails.objects.get(django_user_id=request.user.id) Skills.objects.filter(user_id=user_id).delete() References.objects.filter(user_id=user_id).delete() technical_skill_1_level = request.POST.get('technical_skill_level_1') technical_skill_2_level = request.POST.get('technical_skill_level_2') technical_skill_1 = Skills( user_id=user_id, skill_type='technical', skill='Openness towards technology and a deep conviction regarding its potential applications in a knowledge – based setting', level=technical_skill_1_level ) technical_skill_1.save() technical_skill_2 = Skills( user_id=user_id, skill_type='technical', skill='High level of comfort in the use of technology', level=technical_skill_2_level ) technical_skill_2.save() managerial_skill_1_level = request.POST.get('managerial_skill_level_1') managerial_skill_2_level = request.POST.get ('managerial_skill_level_2') managerial_skill_3_level = request.POST.get ('managerial_skill_level_3') managerial_skill_4_level = request.POST.get ('managerial_skill_level_4') manageral_skill_1 =Skills( user_id=user_id, skill_type='managerial', skill="Ability to anticipate issues and problems and to prepare", level=managerial_skill_1_level ) manageral_skill_1.save() managerial_skill_2=Skills( user_id=user_id, skill_type='managerial', skill= "Ability to generate resources and to allocate the same appropriately", level=managerial_skill_2_level ) managerial_skill_2.save() managerial_skill_3=Skills( user_id=user_id, skill_type='managerial', skill= "Capacity to work effectively under pressure and to manage work and resources within tight deadlines ", level=managerial_skill_3_level ) managerial_skill_3.save() managerial_skill_4 = Skills( user_id=user_id, skill_type='managerial', skill ="Understanding of financial management including revenue generation, planning and fiscal control ", level=managerial_skill_4_level ) managerial_skill_4.save() corporate_objective_skill_1_level = request.POST.get('corporate_objective_skill_level_1') corporate_objective_skill_2_level = request.POST.get('corporate_objective_skill_level_2') corporate_objective_skill_3_level = request.POST.get('corporate_objective_skill_level_3') corporate_objective_skill_1 = Skills( user_id=user_id, skill_type='corporate_objective', skill='Ability to identify the needs of the communities in key sectors', level=corporate_objective_skill_1_level ) corporate_objective_skill_1.save() corporate_objective_skill_2 = Skills( user_id=user_id, skill_type='corporate_objective', skill='Understanding of the challenges before the Nation and to indicate how Higher Education can respond to developmental needs', level=corporate_objective_skill_2_level ) corporate_objective_skill_2.save() corporate_objective_skill_3 = Skills( user_id=user_id, skill_type='corporate_objective', skill='Understanding of curriculum development issues, especially those relating to wide participation and social inclusion', level=corporate_objective_skill_3_level ) corporate_objective_skill_3.save() # Process Leadership Skills data leadership_skill_1_level = request.POST.get('leadership_skill_level_1') leadership_skill_2_level = request.POST.get('leadership_skill_level_2') leadership_skill_3_level = request.POST.get('leadership_skill_level_3') leadership_skill_4_level = request.POST.get('leadership_skill_level_4') leadership_skill_1 = Skills( user_id=user_id, skill_type='leadership', skill='Ability to motivate a diverse groups of stakeholders', level=leadership_skill_1_level ) leadership_skill_1.save() leadership_skill_2 = Skills( user_id=user_id, skill_type='leadership', skill='Desire to further the mission and goals of the organization', level=leadership_skill_2_level ) leadership_skill_2.save() leadership_skill_3 = Skills( user_id=user_id, skill_type='leadership', skill='Ability to think strategically and innovatively and to maintain a broad perspective', level=leadership_skill_3_level ) leadership_skill_3.save() leadership_skill_4 = Skills( user_id=user_id, skill_type='leadership', skill='Ability to lead by personal example with openness to new ideas and a consultative approach in implementation of the same.', level=leadership_skill_4_level ) leadership_skill_4.save() communication_skill_1_level = request.POST.get('communication_skill_level_1') communication_skill_2_level = request.POST.get('communication_skill_level_2') communication_skill_3_level = request.POST.get('communication_skill_level_3') communication_skill_1 = Skills( user_id=user_id, skill_type='communication', skill='Details of experience in developing and executing National and International collaborative arrangements', level=communication_skill_1_level ) communication_skill_1.save() communication_skill_2 = Skills( user_id=user_id, skill_type='communication', skill='Ability to interact effectively and persuasively with a strong knowledge-base at senior levels and in large forums as well as on a one-to-one basis', level=communication_skill_2_level ) communication_skill_2.save() communication_skill_3 = Skills( user_id=user_id, skill_type='communication', skill='Evidence of being an active member of professional bodies and associations in relevant fields', level=communication_skill_3_level ) communication_skill_3.save() for i in range(1, 4): refrence_name = request.POST.get(f'refrence_name_{i}') reference_email = request.POST.get(f'reference_email_{i}') refrence_contact = request.POST.get(f'refrence_contact_{i}') if refrence_name: refrence = References( user_id=user_id, name=refrence_name, email=reference_email, phone=refrence_contact ) refrence.save() messages.success(request, "Form submitted successfully.") msg = ['success_message', "Form submitted successfully."] return redirect( 'reciept.html') else: try: user_details = UserDetails.objects.get(django_user_id=request.user) skills = Skills.objects.filter(user_id=user_details) technical_skills = Skills.objects.filter(user_id=user_details, skill_type='technical') managerial_skills = Skills.objects.filter(user_id=user_details, skill_type='managerial') corporate_objective_skills = Skills.objects.filter(user_id=user_details, skill_type='corporate_objective') leadership_skills = Skills.objects.filter(user_id=user_details, skill_type='leadership') communication_skills = Skills.objects.filter(user_id=user_details, skill_type='communication') references = References.objects.filter(user_id=user_details) context = {'segment': 'page8', 'skills': skills, 'technical_skills': technical_skills, 'managerial_skills': managerial_skills, 'corporate_objective_skills': corporate_objective_skills, 'leadership_skills': leadership_skills, 'communication_skills': communication_skills, 'references': references,} if message is not None: context[message[0]] = message[1] html_template = loader.get_template('hiring/skills1.html') return HttpResponse(html_template.render(context, request)) except: return render(request, 'hiring/skills1.html') def get_reciept(request): variable_value = request.GET.get('variable_name') context = {} context['segment'] = variable_value user_details = UserDetails.objects.get(django_user_id=request.user) context['user_details'] = user_details context['is_submitted']=user_details.is_submitted general_info = GeneralInfo.objects.get(user_id=user_details.id) context['general_info'] = general_info educational_qualification = EducationalQualification.objects.filter(user_id=user_details.id) for qualification in educational_qualification: qualification.year_of_passing = qualification.year_of_passing if qualification.exam_or_degree == 'secondary': qualification.exam_or_degree = 'SSC' elif qualification.exam_or_degree == 'higher_secondary': qualification.exam_or_degree = 'HSC' elif qualification.exam_or_degree == 'graduation': qualification.exam_or_degree = 'Graduation' elif qualification.exam_or_degree == 'post_graduation': qualification.exam_or_degree = 'Post Graduation' elif qualification.exam_or_degree == 'phd': qualification.exam_or_degree = 'PhD' elif qualification.exam_or_degree == 'other': qualification.exam_or_degree = 'Other' context['educational_qualification'] = educational_qualification experience = Experience.objects.filter(user_id=user_details.id) total_years = 0 total_months = 0 for exp in experience: tenure = exp.to_date - exp.from_date years = tenure.days // 365 remaining_days = tenure.days % 365 months = remaining_days // 30 total_years += years total_months += months if total_months >= 12: total_years += total_months // 12 total_months = total_months % 12 formatted_tenure = f"{years} years, {months} months" exp.tenure = formatted_tenure experience.total_years = total_years context['experience_details'] = experience research_experience = ResearchExperience.objects.filter(user_id=user_details.id).first() context['research_experience'] = research_experience books_published = PublishedBooks.objects.filter(user_id=user_details.id, book_type='book').count() context['books_published'] = books_published chapters_published = PublishedBooks.objects.filter(user_id = user_details.id, book_type='chapter').count() context['chapters_published'] = chapters_published # guide_of_phd = GuideOfPhd.objects.filter(user_id = user_details.id).count() guide_of_phd = ResearchParams.objects.get(user_id = user_details.id).phd_students_guided context['guide_of_phd'] = guide_of_phd administrative_experience= AdministrativeExperience.objects.filter(user_id=user_details.id) total_years = 0 total_months = 0 for exp in administrative_experience: if exp.post == 'professor': exp.post = 'Professor' elif exp.post == 'hod': exp.post = 'Head of Department' elif exp.post == 'dean': exp.post = 'Dean' elif exp.post == 'director': exp.post = 'Director' elif exp.post == 'principal': exp.post = 'Principal' elif exp.post == 'head': exp.post = 'Head of National / International institution of advance learning' tenure = exp.to_date - exp.from_date years = tenure.days // 365 remaining_days = tenure.days % 365 months = remaining_days // 30 total_years += years total_months += months if total_months >= 12: total_years += total_months // 12 total_months = total_months % 12 formatted_tenure = f"{years} years, {months} months" exp.tenure = formatted_tenure administrative_experience.total_years = total_years context['administrative_experience'] = administrative_experience research_projects = ResearchProjects.objects.filter(user_id=user_details.id) research_projects_count = research_projects.count() research_projects_value = 0 for project in research_projects: value_str = project.project_value.replace(',', '') research_projects_value += float(value_str) context['research_projects_count'] = research_projects_count context['research_projects_value'] = research_projects_value sci_publications = Publications.objects.filter(user_id=user_details.id, type_of_publication='sci').count() context['sci_publications'] = sci_publications ugc_care = Publications.objects.filter(user_id=user_details.id, type_of_publication='ugc_care').count() context['ugc_care'] = ugc_care other_publications = Publications.objects.filter(user_id=user_details.id, type_of_publication='other').count() context['other_publications'] = other_publications international_bodies = InternationalBodies.objects.filter(user_id=user_details.id).count() context['international_bodies'] = international_bodies workshops = Workshops.objects.filter(user_id=user_details.id).count() context['workshops'] = workshops organising_events = OrganisingEvents.objects.filter(user_id=user_details.id).count() context['organising_events'] = organising_events leadership = Leadership.objects.filter(user_id=user_details.id) context['leadership'] = leadership statutory_working_exp = StatutoryWorkingExp.objects.filter(user_id=user_details.id) for exp in statutory_working_exp: from_date = exp.from_date to_date = exp.to_date years_diff = to_date.year - from_date.year months_diff = to_date.month - from_date.month if months_diff < 0: years_diff -= 1 months_diff += 12 exp.years = years_diff context['statutory_working_exp'] = statutory_working_exp quality_issues = QualityIssues.objects.filter(user_id=user_details.id) for issue in quality_issues: from_date = issue.from_date to_date = issue.to_date years_diff = to_date.year - from_date.year months_diff = to_date.month - from_date.month if months_diff < 0: years_diff -= 1 months_diff += 12 issue.years = years_diff context['quality_issues_exp'] = quality_issues # number_of_phds = GuideOfPhd.objects.filter(user_id=user_details.id).count() context['number_of_phds'] = guide_of_phd references = References.objects.filter(user_id=user_details.id) context['references'] = references total_research_publications = ResearchParams.objects.get(user_id = user_details.id).research_publications context['total_research_publications'] = total_research_publications total_books_published = total_research_publications = ResearchParams.objects.get(user_id = user_details.id).books_published context['total_books_published'] = total_books_published patents_granted = total_research_publications = ResearchParams.objects.get(user_id = user_details.id).patents_granted context['patents_granted'] = patents_granted awards_or_fellowship = Awards.objects.filter(user_id = user_details.id) context['awards_or_fellowship'] = awards_or_fellowship return render(request, 'hiring/reciept.html', context) def final_submit_page(request,message=None): context = {'segment': 'final_submit'} if message is not None: context[message[0]] = message[1] html_template = loader.get_template('hiring/final_submit.html') return HttpResponse(html_template.render(context, request)) def final_submit(request): user_details = UserDetails.objects.get(django_user_id=request.user) user_details.is_submitted = True user_details.submitted_time = datetime.now() user_details.save() # send mail to user user=request.user email=user.email current_site = get_current_site(request) subject = 'Application Form Submitted Successfully' message = render_to_string('accounts/final_submit_page.html', { 'user': user, 'domain': current_site.domain, }) # Plain text version of the email (without HTML tags) plain_message = strip_tags(message) email = EmailMultiAlternatives(subject, plain_message, EMAIL_HOST_USER, [email]) email.attach_alternative(message, 'text/html') email.send() print("****************************************************************") print(request.user.username) return redirect('final_submit.html')