76 lines
2.8 KiB
Python
76 lines
2.8 KiB
Python
from django.db import models
|
|
from django.contrib.auth.models import User
|
|
|
|
# Create your models here.
|
|
class Job(models.Model):
|
|
title = models.CharField(max_length=255)
|
|
description_en = models.TextField()
|
|
description_ar = models.TextField()
|
|
is_published = models.BooleanField(default=False)
|
|
posted_to_linkedin = models.BooleanField(default=False)
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
updated_at = models.DateTimeField(auto_now=True)
|
|
def __str__(self):
|
|
return self.title
|
|
|
|
|
|
class Candidate(models.Model):
|
|
job = models.ForeignKey(Job, on_delete=models.CASCADE, related_name='candidates')
|
|
name = models.CharField(max_length=255)
|
|
email = models.EmailField()
|
|
resume = models.FileField(upload_to='resumes/')
|
|
parsed_summary = models.TextField(blank=True)
|
|
applied = models.BooleanField(default=False)
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
updated_at = models.DateTimeField(auto_now=True)
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
|
|
class TrainingMaterial(models.Model):
|
|
title = models.CharField(max_length=255)
|
|
content = models.TextField(blank=True)
|
|
video_link = models.URLField(blank=True)
|
|
file = models.FileField(upload_to='training_materials/', blank=True)
|
|
created_by = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
updated_at = models.DateTimeField(auto_now=True)
|
|
def __str__(self):
|
|
return self.title
|
|
|
|
|
|
class ZoomMeeting(models.Model):
|
|
# Basic meeting details
|
|
topic = models.CharField(max_length=255)
|
|
meeting_id = models.CharField(max_length=20, unique=True) # Unique identifier for the meeting
|
|
start_time = models.DateTimeField()
|
|
duration = models.PositiveIntegerField() # Duration in minutes
|
|
timezone = models.CharField(max_length=50)
|
|
join_url = models.URLField() # URL for participants to join
|
|
password = models.CharField(max_length=50, blank=True, null=True)
|
|
|
|
# Host information
|
|
host_email = models.EmailField()
|
|
|
|
# Status
|
|
STATUS_CHOICES = [
|
|
('waiting', 'Waiting'),
|
|
('started', 'Started'),
|
|
('ended', 'Ended'),
|
|
]
|
|
status = models.CharField(max_length=10, choices=STATUS_CHOICES, default='waiting')
|
|
|
|
# Settings
|
|
host_video = models.BooleanField(default=True)
|
|
participant_video = models.BooleanField(default=True)
|
|
join_before_host = models.BooleanField(default=False)
|
|
mute_upon_entry = models.BooleanField(default=False)
|
|
waiting_room = models.BooleanField(default=False)
|
|
|
|
zoom_gateway_response = models.JSONField(blank=True, null=True)
|
|
# Timestamps
|
|
created_at = models.DateTimeField(auto_now_add=True)
|
|
updated_at = models.DateTimeField(auto_now=True)
|
|
|
|
def __str__(self):
|
|
return self.topic |