BAMU_Hiring / mysite / hiring / models.py
models.py
Raw
from django.db import models
from django.contrib.auth.models import User
import os

class UserDetails(models.Model):
    def user_directory_path(instance, filename):
        return os.path.join(f'user_{instance.django_user_id.id}', 'profile_photo', filename)

    django_user_id = models.ForeignKey(User, on_delete=models.CASCADE)
    id = models.AutoField(primary_key=True)
    # email = models.CharField(max_length=200)
    full_name = models.CharField(max_length=200)
    dob = models.DateField()
    mobile_number = models.CharField(max_length=200)
    office_contact = models.CharField(max_length=200)
    case_pending = models.BooleanField()
    case_details = models.CharField(max_length=200, null=True)
    residence = models.CharField(max_length=200)
    telephone_number = models.CharField(max_length=200)
    address = models.CharField(max_length=200)
    is_submitted = models.BooleanField(default=False)
    submitted_time = models.DateTimeField(null=True)
    profile_photo = models.FileField(upload_to=user_directory_path, blank=True, null=True)

    @property
    def application_number(self):
        return f"202300{self.id}"

    def delete(self, *args, **kwargs):
        if self.profile_photo:
            self.profile_photo.storage.delete(self.profile_photo.name)
        super(UserDetails, self).delete(*args, **kwargs)

class Languages(models.Model):
    user_id = models.ForeignKey(UserDetails, on_delete=models.CASCADE)
    id = models.AutoField(primary_key=True)
    language = models.CharField(max_length=200)
    
class GeneralInfo(models.Model):
    user_id = models.ForeignKey(UserDetails, on_delete=models.CASCADE)
    id = models.AutoField(primary_key=True)
    present_post = models.CharField(max_length=200)
    designation_grade = models.CharField(max_length=200)
    date_from_held = models.DateField()
    name_of_organisation = models.CharField(max_length=200)
    address_of_organisation = models.CharField(max_length=200)

class EducationalQualification(models.Model):

    user_id = models.ForeignKey(UserDetails, on_delete=models.CASCADE)
    id = models.AutoField(primary_key=True)
    exam_or_degree = models.CharField(max_length=200)
    board_or_university = models.CharField(max_length=200)
    institute = models.CharField(max_length=200)
    subjects_or_specialization = models.CharField(max_length=200)
    year_of_passing = models.IntegerField()
    division_or_cgpa = models.CharField(max_length=200)
    marks_in_percentage = models.CharField(max_length=200)
    
class Experience(models.Model):
    
    user_id = models.ForeignKey(UserDetails, on_delete=models.CASCADE)
    id = models.AutoField(primary_key=True)
    university = models.CharField(max_length=200)
    post = models.CharField(max_length=200)
    from_date = models.DateField()
    to_date = models.DateField()

class Publications(models.Model):
    TYPE_IN_PUBLICATION_CHOICES = [
        ('sci', 'Sci'),
        ('ugc_care', 'UGC Care'),
        ('other', 'Other'),
    ]
    
    user_id = models.ForeignKey(UserDetails, on_delete=models.CASCADE)
    id = models.AutoField(primary_key=True)
    title_of_publication = models.CharField(max_length=200)
    name_of_international_journal = models.CharField(max_length=200)
    type_of_publication = models.CharField(max_length=200, choices=TYPE_IN_PUBLICATION_CHOICES, default='ugc_care')
    impact_factor = models.FloatField(max_length=200)
    date = models.IntegerField()

class PublishedBooks(models.Model):
    TYPE_IN_BOOK_CHOICES = [
        ('book', 'Book'),
        ('chapter', 'Chapter'),
    ]
    user_id = models.ForeignKey(UserDetails, on_delete=models.CASCADE)
    id = models.AutoField(primary_key=True)
    title_of_book = models.CharField(max_length=200)
    book_type = models.CharField(max_length=200, choices=TYPE_IN_BOOK_CHOICES, default='book')
    name_of_publisher = models.CharField(max_length=200)

class RefferedInstitutions(models.Model):
    book_id = models.ForeignKey(PublishedBooks, on_delete=models.CASCADE)
    id = models.AutoField(primary_key=True)
    institutions = models.CharField(max_length=200)

class AdministrativeExperience(models.Model):
    TYPE_IN_EXPERIENCE_CHOICES = [
        ('professor', 'Professor'),
        ('hod', 'HOD'),
        ('principal', 'Principal'),
        ('dean', 'Dean'),
        ('director', 'Director'),
        ('head', 'Head of National / International institution of advance learning'),
        
    ]
    user_id = models.ForeignKey(UserDetails, on_delete=models.CASCADE)
    id = models.AutoField(primary_key=True)
    post = models.CharField(max_length=200,choices=TYPE_IN_EXPERIENCE_CHOICES)
    from_date = models.DateField()
    to_date = models.DateField()
    name_of_university = models.CharField(max_length=200)
    location = models.CharField(max_length=200)

class ResearchExperience(models.Model):
    user_id = models.ForeignKey(UserDetails, on_delete=models.CASCADE)
    id = models.AutoField(primary_key=True)
    i_index = models.CharField(max_length=200)
    h_index = models.CharField(max_length=200)
    
class ResearchProjects(models.Model):
    user_id = models.ForeignKey(UserDetails, on_delete=models.CASCADE)
    id = models.AutoField(primary_key=True)
    title_of_project = models.CharField(max_length=200)
    project_value = models.CharField(max_length=200)
    granting_agency = models.CharField(max_length=200)
    date_of_start = models.DateField()
    date_of_completion = models.DateField()

class InternationalBodies(models.Model):
    user_id = models.ForeignKey(UserDetails, on_delete=models.CASCADE)
    id = models.AutoField(primary_key=True)
    name_of_international_body = models.CharField(max_length=200)
    nature_of_experience = models.CharField(max_length=200)

class Workshops(models.Model):
    user_id = models.ForeignKey(UserDetails, on_delete=models.CASCADE)
    id = models.AutoField(primary_key=True)
    title_of_workshop = models.CharField(max_length=200)
    month_and_year = models.IntegerField()
    place = models.CharField(max_length=200)

class OrganisingEvents(models.Model):
    user_id = models.ForeignKey(UserDetails, on_delete=models.CASCADE)
    id = models.AutoField(primary_key=True)
    title_of_workshop = models.CharField(max_length=200)
    month_and_year = models.IntegerField()
    place = models.CharField(max_length=200)
    role_assigned = models.CharField(max_length=200)
    
class Leadership(models.Model):
    user_id = models.ForeignKey(UserDetails, on_delete=models.CASCADE)
    id = models.AutoField(primary_key=True)
    leadership_activity = models.CharField(max_length=200)
    documented_evidence = models.CharField(max_length=200) # doubt

class StatutoryWorkingExp(models.Model):
    user_id = models.ForeignKey(UserDetails, on_delete=models.CASCADE)
    id = models.AutoField(primary_key=True)
    institution = models.CharField(max_length=200)
    authority_or_position = models.CharField(max_length=200)
    from_date = models.DateField()
    to_date = models.DateField()

class QualityIssues(models.Model):
    user_id = models.ForeignKey(UserDetails, on_delete=models.CASCADE)
    id = models.AutoField(primary_key=True)
    area = models.CharField(max_length=200)
    institution = models.CharField(max_length=200)
    from_date = models.DateField()
    to_date = models.DateField()
    achievements = models.CharField(max_length=200)




#below 2 are the new models added
class ResearchParams(models.Model):
    user_id = models.ForeignKey(UserDetails, on_delete=models.CASCADE)
    id = models.AutoField(primary_key=True)
    phd_students_guided = models.CharField(max_length=200)
    research_publications = models.CharField(max_length=200)
    books_published = models.CharField(max_length=200)
    book_chapters_published = models.CharField(max_length=200)
    patents_granted = models.CharField(max_length=200)

class Awards(models.Model):
    user_id = models.ForeignKey(UserDetails, on_delete=models.CASCADE)
    id = models.AutoField(primary_key=True)
    award_name = models.CharField(max_length=200)
    granting_agency = models.CharField(max_length=200)
    year = models.IntegerField()
    
class YouthHandlingExp(models.Model):
    user_id = models.ForeignKey(UserDetails, on_delete=models.CASCADE)
    id = models.AutoField(primary_key=True)
    nature_of_activity = models.CharField(max_length=200)
    institution = models.CharField(max_length=200)
    from_date = models.DateField()
    to_date = models.DateField()
    achievements = models.CharField(max_length=200)

class Skills(models.Model):
    CHOICES_IN_LEVEL = [
        ('basic', 'Basic'),
        ('intermediate', 'Intermediate'),
        ('advanced', 'Advanced'),
    ]
    CHOICES_IN_SKILL_TYPE = [
        ("technical", "Technical Skills"),
        ("managerial", "Managerial Skills"),
        ("corporate_objective", "Corporate Objective"),
        ("leadership", "Leadership Skills"),
        ("communication", "Communication Skills"), 
    ]
    user_id = models.ForeignKey(UserDetails, on_delete=models.CASCADE)
    id = models.AutoField(primary_key=True)
    skill_type = models.CharField(max_length=200,choices=CHOICES_IN_SKILL_TYPE)
    skill = models.CharField(max_length=200)
    level = models.CharField(max_length=200, choices=CHOICES_IN_LEVEL)

class References(models.Model):
    user_id = models.ForeignKey(UserDetails, on_delete=models.CASCADE)
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length=200)
    phone = models.CharField(max_length=200)
    email = models.CharField(max_length=200)