mirror of
https://github.com/thecyberlearn/digital-branding-system.git
synced 2026-08-18 09:52:56 +00:00
- 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
80 lines
5.5 KiB
Python
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'],
|
|
},
|
|
),
|
|
]
|