# 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', }, ), ]