127 lines
7.5 KiB
Python
127 lines
7.5 KiB
Python
# Generated by Django 5.0.6
|
||
|
||
import django.utils.timezone
|
||
from django.db import migrations, models
|
||
|
||
|
||
class Migration(migrations.Migration):
|
||
|
||
initial = True
|
||
|
||
dependencies = []
|
||
|
||
operations = [
|
||
migrations.CreateModel(
|
||
name='BlogPost',
|
||
fields=[
|
||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||
('slug', models.SlugField(max_length=200, unique=True)),
|
||
('title', models.CharField(max_length=200)),
|
||
('excerpt', models.CharField(max_length=300)),
|
||
('body', models.TextField(help_text='Markdown.')),
|
||
('category', models.CharField(choices=[('ai', 'AI'), ('space', 'Space'), ('robotics', 'Robotics'), ('engineering', 'Engineering'), ('company', 'Company')], default='company', max_length=20)),
|
||
('author_name', models.CharField(max_length=120)),
|
||
('read_time_minutes', models.PositiveIntegerField(default=5)),
|
||
('cover_image_url', models.URLField(blank=True)),
|
||
('is_published', models.BooleanField(default=True)),
|
||
('published_at', models.DateTimeField(default=django.utils.timezone.now)),
|
||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||
('updated_at', models.DateTimeField(auto_now=True)),
|
||
],
|
||
options={'ordering': ['-published_at']},
|
||
),
|
||
migrations.CreateModel(
|
||
name='ContactSubmission',
|
||
fields=[
|
||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||
('name', models.CharField(max_length=120)),
|
||
('email', models.EmailField(max_length=254)),
|
||
('company', models.CharField(blank=True, max_length=160)),
|
||
('role', models.CharField(blank=True, max_length=120)),
|
||
('country', models.CharField(blank=True, max_length=80)),
|
||
('interest', models.CharField(choices=[('ai-ip', 'AI Inference IP'), ('security-ip', 'Cybersecurity IP'), ('comms-ip', 'Communication IP'), ('custom-asic', 'Custom ASIC'), ('careers', 'Careers'), ('press', 'Press'), ('other', 'Other')], default='other', max_length=20)),
|
||
('message', models.TextField()),
|
||
('referrer', models.CharField(blank=True, max_length=200)),
|
||
('user_agent', models.CharField(blank=True, max_length=400)),
|
||
('ip_address', models.GenericIPAddressField(blank=True, null=True)),
|
||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||
],
|
||
options={'verbose_name': 'Contact submission', 'ordering': ['-created_at']},
|
||
),
|
||
migrations.CreateModel(
|
||
name='Founder',
|
||
fields=[
|
||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||
('name', models.CharField(max_length=120)),
|
||
('role', models.CharField(max_length=160)),
|
||
('domain', models.CharField(help_text='Short description of the technical domain they own.', max_length=240)),
|
||
('bio', models.TextField(help_text='~80-word bio. Markdown allowed.')),
|
||
('photo_url', models.URLField(blank=True)),
|
||
('linkedin_url', models.URLField(blank=True)),
|
||
('sort_order', models.PositiveIntegerField(default=0)),
|
||
('is_published', models.BooleanField(default=True)),
|
||
],
|
||
options={'ordering': ['sort_order', 'name']},
|
||
),
|
||
migrations.CreateModel(
|
||
name='JobApplication',
|
||
fields=[
|
||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||
('name', models.CharField(max_length=120)),
|
||
('email', models.EmailField(max_length=254)),
|
||
('role_applied_for', models.CharField(max_length=160)),
|
||
('portfolio_url', models.URLField(blank=True)),
|
||
('message', models.TextField(blank=True)),
|
||
('cv', models.FileField(blank=True, null=True, upload_to='applications/%Y/%m/')),
|
||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||
],
|
||
options={'ordering': ['-created_at']},
|
||
),
|
||
migrations.CreateModel(
|
||
name='JobOpening',
|
||
fields=[
|
||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||
('slug', models.SlugField(max_length=120, unique=True)),
|
||
('title', models.CharField(max_length=160)),
|
||
('location', models.CharField(choices=[('surat', 'Surat, India'), ('iist', 'STIIC / IIST, Thiruvananthapuram'), ('remote', 'Remote (India)'), ('hybrid', 'Hybrid')], default='surat', max_length=20)),
|
||
('employment_type', models.CharField(default='Full-time', max_length=40)),
|
||
('description', models.TextField(help_text='Markdown.')),
|
||
('is_open', models.BooleanField(default=True)),
|
||
('posted_at', models.DateField(default=django.utils.timezone.now)),
|
||
],
|
||
options={'ordering': ['-posted_at']},
|
||
),
|
||
migrations.CreateModel(
|
||
name='NewsletterSignup',
|
||
fields=[
|
||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||
('email', models.EmailField(max_length=254, unique=True)),
|
||
('source', models.CharField(blank=True, help_text='e.g. footer, blog, contact', max_length=120)),
|
||
('confirmed', models.BooleanField(default=False)),
|
||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||
],
|
||
options={'ordering': ['-created_at']},
|
||
),
|
||
migrations.CreateModel(
|
||
name='Product',
|
||
fields=[
|
||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||
('slug', models.SlugField(max_length=80, unique=True)),
|
||
('name', models.CharField(max_length=120)),
|
||
('category', models.CharField(choices=[('ai', 'AI Inference'), ('security', 'Cybersecurity'), ('comms', 'Communication Protocol'), ('asic', 'Custom ASIC Services'), ('other', 'Other')], max_length=20)),
|
||
('tagline', models.CharField(max_length=200)),
|
||
('summary', models.TextField(help_text='2–3 sentence overview shown on the products grid.')),
|
||
('description', models.TextField(help_text='Long-form description shown on the product detail page (markdown).')),
|
||
('benefits', models.JSONField(blank=True, default=list, help_text='List of benefit strings. Example: ["High throughput per watt", "INT8/INT4"].')),
|
||
('features', models.JSONField(blank=True, default=list)),
|
||
('spec_table', models.JSONField(blank=True, default=list, help_text='List of {"label": "...", "value": "..."} pairs for the spec table.')),
|
||
('primary_cta_label', models.CharField(default='Request evaluation', max_length=60)),
|
||
('is_published', models.BooleanField(default=True)),
|
||
('sort_order', models.PositiveIntegerField(default=0)),
|
||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||
('updated_at', models.DateTimeField(auto_now=True)),
|
||
],
|
||
options={'ordering': ['sort_order', 'name']},
|
||
),
|
||
]
|