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