First commit of claude's rework in django + vanillajs fronted
This commit is contained in:
100
apps/photos/migrations/0001_initial.py
Normal file
100
apps/photos/migrations/0001_initial.py
Normal file
@@ -0,0 +1,100 @@
|
||||
# Generated by Django 4.2.16 on 2026-03-25 10:15
|
||||
|
||||
from django.conf import settings
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
initial = True
|
||||
|
||||
dependencies = [
|
||||
('tools', '0003_remove_shotgroup_result_picture_delete_resultpicture'),
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='GroupPhoto',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('caption', models.CharField(blank=True, max_length=255, verbose_name='caption')),
|
||||
('order', models.PositiveSmallIntegerField(default=0, verbose_name='order')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'group photo',
|
||||
'verbose_name_plural': 'group photos',
|
||||
'ordering': ['order', 'id'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='PointOfImpact',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('order', models.PositiveSmallIntegerField(default=0, help_text='1-based sequence; used when shot FK is absent.', verbose_name='order')),
|
||||
('x_px', models.PositiveSmallIntegerField(verbose_name='x (px)')),
|
||||
('y_px', models.PositiveSmallIntegerField(verbose_name='y (px)')),
|
||||
('x_mm', models.DecimalField(blank=True, decimal_places=2, max_digits=7, null=True, verbose_name='x offset (mm)')),
|
||||
('y_mm', models.DecimalField(blank=True, decimal_places=2, max_digits=7, null=True, verbose_name='y offset (mm)')),
|
||||
('radius_mm', models.DecimalField(blank=True, decimal_places=2, max_digits=6, null=True, verbose_name='bullet hole radius (mm)')),
|
||||
('notes', models.CharField(blank=True, max_length=255, verbose_name='notes')),
|
||||
('group_photo', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='points_of_impact', to='photos.groupphoto', verbose_name='group photo')),
|
||||
('shot', models.OneToOneField(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='point_of_impact', to='tools.shot', verbose_name='shot')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'point of impact',
|
||||
'verbose_name_plural': 'points of impact',
|
||||
'ordering': ['order', 'id'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='Photo',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('data', models.BinaryField(verbose_name='data')),
|
||||
('content_type', models.CharField(max_length=50, verbose_name='content type')),
|
||||
('size', models.PositiveIntegerField(verbose_name='size (bytes)')),
|
||||
('width', models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='width (px)')),
|
||||
('height', models.PositiveSmallIntegerField(blank=True, null=True, verbose_name='height (px)')),
|
||||
('uploaded_at', models.DateTimeField(auto_now_add=True, verbose_name='uploaded at')),
|
||||
('description', models.CharField(blank=True, max_length=255, verbose_name='description')),
|
||||
('uploaded_by', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='photos', to=settings.AUTH_USER_MODEL, verbose_name='uploaded by')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'photo',
|
||||
'verbose_name_plural': 'photos',
|
||||
'ordering': ['-uploaded_at'],
|
||||
},
|
||||
),
|
||||
migrations.CreateModel(
|
||||
name='GroupPhotoAnalysis',
|
||||
fields=[
|
||||
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('group_size_mm', models.DecimalField(blank=True, decimal_places=2, max_digits=7, null=True, verbose_name='group size (mm)')),
|
||||
('group_size_moa', models.DecimalField(blank=True, decimal_places=3, max_digits=7, null=True, verbose_name='group size (MOA)')),
|
||||
('elevation_offset_mm', models.DecimalField(blank=True, decimal_places=2, max_digits=7, null=True, verbose_name='elevation offset (mm)')),
|
||||
('elevation_offset_moa', models.DecimalField(blank=True, decimal_places=3, max_digits=7, null=True, verbose_name='elevation offset (MOA)')),
|
||||
('windage_offset_mm', models.DecimalField(blank=True, decimal_places=2, max_digits=7, null=True, verbose_name='windage offset (mm)')),
|
||||
('windage_offset_moa', models.DecimalField(blank=True, decimal_places=3, max_digits=7, null=True, verbose_name='windage offset (MOA)')),
|
||||
('mean_radius_mm', models.DecimalField(blank=True, decimal_places=2, max_digits=7, null=True, verbose_name='mean radius (mm)')),
|
||||
('mean_radius_moa', models.DecimalField(blank=True, decimal_places=3, max_digits=7, null=True, verbose_name='mean radius (MOA)')),
|
||||
('notes', models.TextField(blank=True, verbose_name='notes')),
|
||||
('group_photo', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='analysis', to='photos.groupphoto', verbose_name='group photo')),
|
||||
],
|
||||
options={
|
||||
'verbose_name': 'group photo analysis',
|
||||
'verbose_name_plural': 'group photo analyses',
|
||||
},
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='groupphoto',
|
||||
name='photo',
|
||||
field=models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, related_name='group_photo', to='photos.photo', verbose_name='photo'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='groupphoto',
|
||||
name='shot_group',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='group_photos', to='tools.shotgroup', verbose_name='shot group'),
|
||||
),
|
||||
]
|
||||
Reference in New Issue
Block a user