digital-branding-system/dashboard/migrations/0001_initial.py
thecyberlearn c10d4692e6 Initial commit: Django Digital Branding Management System
- Core Django project structure with branding_system and dashboard apps
- Platform, ContentDeliverable, and Strategy models with relationships
- Comprehensive Django admin interface with custom displays
- Dashboard views with completion tracking and overdue detection
- Tailwind CSS styling with custom color scheme
- WARP.md documentation for development guidance
2025-09-07 10:16:37 +05:30

80 lines
5.5 KiB
Python

# Generated by Django 5.2.6 on 2025-09-06 17:37
import datetime
import django.core.validators
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Platform',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(help_text="Platform name (e.g., 'LinkedIn Business')", max_length=100)),
('platform_type', models.CharField(choices=[('linkedin', 'LinkedIn'), ('youtube', 'YouTube'), ('blog', 'Blog'), ('instagram', 'Instagram'), ('twitter', 'Twitter'), ('facebook', 'Facebook'), ('tiktok', 'TikTok'), ('podcast', 'Podcast'), ('newsletter', 'Newsletter'), ('other', 'Other')], max_length=20)),
('description', models.TextField(blank=True, help_text="Brief description of this platform's purpose")),
('status', models.CharField(choices=[('active', 'Active'), ('inactive', 'Inactive'), ('planning', 'Planning'), ('paused', 'Paused')], default='active', max_length=20)),
('primary_content_type', models.CharField(help_text="Main type of content for this platform (e.g., 'Articles', 'Videos', 'Posts')", max_length=100)),
('target_audience', models.CharField(blank=True, help_text='Target audience for this platform', max_length=200)),
('posting_frequency', models.CharField(blank=True, help_text="How often content is posted (e.g., 'Daily', '3x per week')", max_length=100)),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
],
options={
'ordering': ['name'],
},
),
migrations.CreateModel(
name='ContentDeliverable',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(help_text='Content title or brief description', max_length=200)),
('content_type', models.CharField(choices=[('article', 'Article'), ('video', 'Video'), ('post', 'Social Media Post'), ('story', 'Story'), ('reel', 'Reel/Short Video'), ('carousel', 'Carousel'), ('infographic', 'Infographic'), ('podcast', 'Podcast Episode'), ('newsletter', 'Newsletter'), ('other', 'Other')], max_length=20)),
('status', models.CharField(choices=[('committed', 'Committed'), ('drafted', 'Drafted'), ('published', 'Published'), ('cancelled', 'Cancelled')], default='committed', max_length=20)),
('description', models.TextField(blank=True, help_text='Detailed description of the content')),
('completion_percentage', models.IntegerField(default=0, help_text='Completion progress (0-100%)', validators=[django.core.validators.MinValueValidator(0), django.core.validators.MaxValueValidator(100)])),
('target_date', models.DateField(blank=True, help_text='Target publication date', null=True)),
('actual_date', models.DateField(blank=True, help_text='Actual publication date', null=True)),
('url', models.URLField(blank=True, help_text='URL of published content')),
('notes', models.TextField(blank=True, help_text='Additional notes or comments')),
('tags', models.CharField(blank=True, help_text="Comma-separated tags (e.g., 'marketing, tutorial, beginner')", max_length=200)),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
('platform', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='dashboard.platform')),
],
options={
'ordering': ['-created_at'],
},
),
migrations.CreateModel(
name='Strategy',
fields=[
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('title', models.CharField(help_text='Strategy title', max_length=200)),
('objective', models.TextField(help_text='What you want to achieve')),
('tactics', models.TextField(help_text='How you plan to achieve the objective')),
('actions', models.TextField(help_text='Specific actions to implement the tactics')),
('control', models.TextField(blank=True, help_text="How you'll measure success and control/adjust the strategy")),
('priority', models.IntegerField(default=1, help_text='Priority level (1 = highest, 5 = lowest)', validators=[django.core.validators.MinValueValidator(1), django.core.validators.MaxValueValidator(5)])),
('start_date', models.DateField(default=datetime.date.today)),
('end_date', models.DateField(blank=True, null=True)),
('is_active', models.BooleanField(default=True)),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
('platform', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='strategies', to='dashboard.platform')),
],
options={
'verbose_name_plural': 'strategies',
'ordering': ['priority', '-created_at'],
},
),
]