70 lines
4.4 KiB
Python
70 lines
4.4 KiB
Python
# Generated by Django 5.2.6 on 2025-10-01 21:41
|
|
|
|
import django.core.validators
|
|
import django.db.models.deletion
|
|
import jobs.models
|
|
import jobs.validators
|
|
import uuid
|
|
from django.db import migrations, models
|
|
|
|
|
|
class Migration(migrations.Migration):
|
|
|
|
initial = True
|
|
|
|
dependencies = [
|
|
]
|
|
|
|
operations = [
|
|
migrations.CreateModel(
|
|
name='JobPosting',
|
|
fields=[
|
|
('title', models.CharField(max_length=200)),
|
|
('department', models.CharField(blank=True, max_length=100)),
|
|
('job_type', models.CharField(choices=[('FULL_TIME', 'Full-time'), ('PART_TIME', 'Part-time'), ('CONTRACT', 'Contract'), ('INTERNSHIP', 'Internship'), ('FACULTY', 'Faculty'), ('TEMPORARY', 'Temporary')], default='FULL_TIME', max_length=20)),
|
|
('workplace_type', models.CharField(choices=[('ON_SITE', 'On-site'), ('REMOTE', 'Remote'), ('HYBRID', 'Hybrid')], default='ON_SITE', max_length=20)),
|
|
('location_city', models.CharField(blank=True, max_length=100)),
|
|
('location_state', models.CharField(blank=True, max_length=100)),
|
|
('location_country', models.CharField(default='United States', max_length=100)),
|
|
('description', models.TextField(help_text='Full job description including responsibilities and requirements')),
|
|
('qualifications', models.TextField(blank=True, help_text='Required qualifications and skills')),
|
|
('salary_range', models.CharField(blank=True, help_text='e.g., $60,000 - $80,000', max_length=100)),
|
|
('benefits', models.TextField(blank=True, help_text='Benefits offered')),
|
|
('application_url', models.URLField(help_text='URL where candidates apply', validators=[django.core.validators.URLValidator()])),
|
|
('application_deadline', models.DateField(blank=True, null=True)),
|
|
('application_instructions', models.TextField(blank=True, help_text='Special instructions for applicants')),
|
|
('internal_job_id', models.CharField(editable=False, max_length=50, primary_key=True, serialize=False)),
|
|
('created_at', models.DateTimeField(auto_now_add=True)),
|
|
('updated_at', models.DateTimeField(auto_now=True)),
|
|
('created_by', models.CharField(blank=True, help_text='Name of person who created this job', max_length=100)),
|
|
('status', models.CharField(choices=[('DRAFT', 'Draft'), ('ACTIVE', 'Active'), ('CLOSED', 'Closed'), ('ARCHIVED', 'Archived')], default='DRAFT', max_length=20)),
|
|
('linkedin_post_id', models.CharField(blank=True, help_text='LinkedIn post ID after posting', max_length=200)),
|
|
('linkedin_post_url', models.URLField(blank=True, help_text='Direct URL to LinkedIn post')),
|
|
('posted_to_linkedin', models.BooleanField(default=False)),
|
|
('linkedin_post_status', models.CharField(blank=True, help_text='Status of LinkedIn posting', max_length=50)),
|
|
('linkedin_posted_at', models.DateTimeField(blank=True, null=True)),
|
|
('position_number', models.CharField(blank=True, help_text='University position number', max_length=50)),
|
|
('reporting_to', models.CharField(blank=True, help_text='Who this position reports to', max_length=100)),
|
|
('start_date', models.DateField(blank=True, help_text='Desired start date', null=True)),
|
|
],
|
|
options={
|
|
'verbose_name': 'Job Posting',
|
|
'verbose_name_plural': 'Job Postings',
|
|
'ordering': ['-created_at'],
|
|
},
|
|
),
|
|
migrations.CreateModel(
|
|
name='PostImageUpload',
|
|
fields=[
|
|
('id', models.UUIDField(default=uuid.uuid4, editable=False, primary_key=True, serialize=False, unique=True)),
|
|
('linkedinpost_image', models.ImageField(blank=True, help_text='Image file (Max size: 2MB). Accepted formats: .png, .jpg, .jpeg', null=True, upload_to=jobs.models.image_file_name, validators=[jobs.validators.validate_image_size])),
|
|
('uploaded_at', models.DateTimeField(auto_now_add=True)),
|
|
('job_posting', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='files', to='jobs.jobposting')),
|
|
],
|
|
options={
|
|
'verbose_name': 'Job File',
|
|
'verbose_name_plural': 'Job Files',
|
|
},
|
|
),
|
|
]
|