GNXSOFT.COM
This commit is contained in:
70
gnx-react/backend/services/migrations/0001_initial.py
Normal file
70
gnx-react/backend/services/migrations/0001_initial.py
Normal file
@@ -0,0 +1,70 @@
|
||||
# Generated by Django 4.2.7 on 2025-09-25 07:54
|
||||
|
||||
import django.core.validators
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Service',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('title', models.CharField(help_text='Service title', max_length=200)),
|
||||
('description', models.TextField(help_text='Service description')),
|
||||
('slug', models.SlugField(help_text='URL-friendly version of the title', max_length=200, unique=True)),
|
||||
('icon', models.CharField(help_text="Icon name (e.g., 'code', 'api', 'cloud')", max_length=50)),
|
||||
('image', models.CharField(help_text='Path to service image', max_length=500)),
|
||||
('price', models.DecimalField(decimal_places=2, help_text='Service price', max_digits=10, validators=[django.core.validators.MinValueValidator(0)])),
|
||||
('featured', models.BooleanField(default=False, help_text='Whether this service is featured')),
|
||||
('display_order', models.PositiveIntegerField(default=0, help_text='Order for displaying services')),
|
||||
('is_active', models.BooleanField(default=True, help_text='Whether this service is active')),
|
||||
('created_at', models.DateTimeField(auto_now_add=True)),
|
||||
('updated_at', models.DateTimeField(auto_now=True)),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Service',
|
||||
'verbose_name_plural': 'Services',
|
||||
'ordering': ['display_order', 'created_at'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ServiceCategory',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('name', models.CharField(max_length=100, unique=True)),
|
||||
('slug', models.SlugField(max_length=100, unique=True)),
|
||||
('description', models.TextField(blank=True)),
|
||||
('display_order', models.PositiveIntegerField(default=0)),
|
||||
('is_active', models.BooleanField(default=True)),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Service Category',
|
||||
'verbose_name_plural': 'Service Categories',
|
||||
'ordering': ['display_order', 'name'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='ServiceFeature',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('title', models.CharField(help_text='Feature title', max_length=200)),
|
||||
('description', models.TextField(blank=True, help_text='Feature description')),
|
||||
('icon', models.CharField(blank=True, help_text='Feature icon', max_length=50)),
|
||||
('display_order', models.PositiveIntegerField(default=0, help_text='Order for displaying features')),
|
||||
('service', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='features', to='services.service')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Service Feature',
|
||||
'verbose_name_plural': 'Service Features',
|
||||
'ordering': ['display_order', 'title'],
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,24 @@
|
||||
# Generated by Django 4.2.7 on 2025-09-25 08:04
|
||||
|
||||
from django.db import migrations, models
|
||||
import services.models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('services', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='service',
|
||||
name='image_url',
|
||||
field=models.CharField(blank=True, help_text='External image URL (alternative to uploaded image)', max_length=500),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name='service',
|
||||
name='image',
|
||||
field=models.ImageField(blank=True, help_text='Service image', null=True, upload_to=services.models.service_image_upload_path),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,39 @@
|
||||
# Generated by Django 4.2.7 on 2025-09-25 08:24
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('services', '0002_service_image_url_alter_service_image'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='service',
|
||||
name='category',
|
||||
field=models.ForeignKey(blank=True, help_text='Service category', null=True, on_delete=django.db.models.deletion.SET_NULL, to='services.servicecategory'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='service',
|
||||
name='deliverables',
|
||||
field=models.TextField(blank=True, help_text='What you get with this service'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='service',
|
||||
name='duration',
|
||||
field=models.CharField(blank=True, help_text="Project duration (e.g., '2-4 weeks', '3-6 months')", max_length=100),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='service',
|
||||
name='short_description',
|
||||
field=models.CharField(blank=True, help_text='Short description for cards and previews', max_length=300),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='service',
|
||||
name='technologies',
|
||||
field=models.TextField(blank=True, help_text='Technologies and tools used'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,18 @@
|
||||
# Generated by Django 4.2.7 on 2025-09-25 08:30
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('services', '0003_service_category_service_deliverables_and_more'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='service',
|
||||
name='process_steps',
|
||||
field=models.TextField(blank=True, help_text='Process steps in JSON format or comma-separated'),
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,30 @@
|
||||
# Generated by Django 4.2.7 on 2025-09-25 11:41
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('services', '0004_service_process_steps'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='ServiceExpertise',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('title', models.CharField(help_text='Expertise title', max_length=200)),
|
||||
('description', models.TextField(help_text='Expertise description')),
|
||||
('icon', models.CharField(blank=True, help_text='Expertise icon', max_length=50)),
|
||||
('display_order', models.PositiveIntegerField(default=0, help_text='Order for displaying expertise items')),
|
||||
('service', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='expertise_items', to='services.service')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'Service Expertise',
|
||||
'verbose_name_plural': 'Service Expertise Items',
|
||||
'ordering': ['display_order', 'title'],
|
||||
},
|
||||
),
|
||||
]
|
||||
@@ -0,0 +1,38 @@
|
||||
# Generated by Django 4.2.7 on 2025-09-25 11:49
|
||||
|
||||
from django.db import migrations, models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('services', '0005_serviceexpertise'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='service',
|
||||
name='deliverables_description',
|
||||
field=models.TextField(blank=True, help_text='Description for the What You Get section'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='service',
|
||||
name='expertise_description',
|
||||
field=models.TextField(blank=True, help_text='Description for the Our Expertise section'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='service',
|
||||
name='features_description',
|
||||
field=models.TextField(blank=True, help_text='Description for the Key Features section'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='service',
|
||||
name='process_description',
|
||||
field=models.TextField(blank=True, help_text='Description for the Our Process section'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='service',
|
||||
name='why_choose_description',
|
||||
field=models.TextField(blank=True, help_text='Description for the Why Choose Our Service section'),
|
||||
),
|
||||
]
|
||||
0
gnx-react/backend/services/migrations/__init__.py
Normal file
0
gnx-react/backend/services/migrations/__init__.py
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user