diff --git a/field/migrations/0001_initial.py b/field/migrations/0001_initial.py index ef0cd14..e5bbb44 100644 --- a/field/migrations/0001_initial.py +++ b/field/migrations/0001_initial.py @@ -1,6 +1,7 @@ -# Generated by Django 5.2.4 on 2025-07-29 17:23 +# Generated by Django 5.2.4 on 2025-08-04 13:18 import django.db.models.deletion +from django.conf import settings from django.db import migrations, models @@ -9,21 +10,24 @@ class Migration(migrations.Migration): initial = True dependencies = [ + migrations.swappable_dependency(settings.AUTH_USER_MODEL), ] operations = [ + migrations.CreateModel( + name='Cultivation_calender', + fields=[ + ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('calender', models.JSONField(default=dict)), + ], + ), migrations.CreateModel( name='Cost', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=255)), - ], - ), - migrations.CreateModel( - name='Cultivation_calender', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('calender', models.JSONField()), + ('amount', models.BigIntegerField(default=0)), + ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( @@ -31,7 +35,9 @@ class Migration(migrations.Migration): fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=255)), - ('geography', models.JSONField()), + ('geography', models.JSONField(default=dict)), + ('plantdate', models.DateField(blank=True, null=True)), + ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( @@ -39,7 +45,9 @@ class Migration(migrations.Migration): fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('image', models.ImageField(upload_to='images/')), + ('comment', models.TextField(default='')), ('uploaded_at', models.DateTimeField(auto_now_add=True)), + ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( @@ -47,18 +55,26 @@ class Migration(migrations.Migration): fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('content', models.TextField()), + ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), ], ), migrations.CreateModel( - name='Voice', + name='Job', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('Voice', models.FileField(upload_to='audios/')), - ('uploaded_at', models.DateTimeField(auto_now_add=True)), + ('type', models.CharField(choices=[('Irrigation', 'IRRIGATING'), ('Planting', 'PLANTING'), ('PrePlanting', 'PREPLANTING'), ('Fertilizing', 'FERTILIZING'), ('Spraying', 'SPRAYING'), ('Pruning', 'PRUNING'), ('Harvesting', 'HARVESTING')], default='Irrigating', max_length=15)), + ('made_date', models.DateTimeField(auto_now_add=True)), + ('due_date', models.DateTimeField(auto_now_add=True)), + ('status', models.BooleanField()), + ('costs', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='field.cost')), + ('field', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='field.field')), + ('images', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='field.image')), + ('user', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)), + ('notes', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='field.note')), ], ), migrations.CreateModel( - name='product', + name='Product', fields=[ ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('name', models.CharField(max_length=255)), @@ -66,18 +82,4 @@ class Migration(migrations.Migration): ('cultivation_calender', models.OneToOneField(on_delete=django.db.models.deletion.CASCADE, to='field.cultivation_calender')), ], ), - migrations.CreateModel( - name='Job', - fields=[ - ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), - ('made_date', models.DateTimeField(auto_now_add=True)), - ('due_date', models.DateTimeField()), - ('status', models.BooleanField()), - ('costs', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='field.cost')), - ('field', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='field.field')), - ('images', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='field.image')), - ('notes', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='field.note')), - ('voices', models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='field.voice')), - ], - ), ] diff --git a/field/migrations/0002_alter_job_due_date.py b/field/migrations/0002_alter_job_due_date.py new file mode 100644 index 0000000..7b8f6e8 --- /dev/null +++ b/field/migrations/0002_alter_job_due_date.py @@ -0,0 +1,18 @@ +# Generated by Django 5.2.4 on 2025-08-05 10:47 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('field', '0001_initial'), + ] + + operations = [ + migrations.AlterField( + model_name='job', + name='due_date', + field=models.DateField(), + ), + ] diff --git a/field/migrations/0002_cost_amount.py b/field/migrations/0002_cost_amount.py deleted file mode 100644 index 9765a79..0000000 --- a/field/migrations/0002_cost_amount.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 5.2.4 on 2025-07-29 17:33 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('field', '0001_initial'), - ] - - operations = [ - migrations.AddField( - model_name='cost', - name='amount', - field=models.BigIntegerField(default=0), - ), - ] diff --git a/field/migrations/0003_image_comment_alter_cultivation_calender_calender_and_more.py b/field/migrations/0003_image_comment_alter_cultivation_calender_calender_and_more.py deleted file mode 100644 index 4df2425..0000000 --- a/field/migrations/0003_image_comment_alter_cultivation_calender_calender_and_more.py +++ /dev/null @@ -1,28 +0,0 @@ -# Generated by Django 5.2.4 on 2025-07-29 17:41 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('field', '0002_cost_amount'), - ] - - operations = [ - migrations.AddField( - model_name='image', - name='comment', - field=models.TextField(default=''), - ), - migrations.AlterField( - model_name='cultivation_calender', - name='calender', - field=models.JSONField(default=dict), - ), - migrations.AlterField( - model_name='field', - name='geography', - field=models.JSONField(default=dict), - ), - ] diff --git a/field/migrations/0004_job_type.py b/field/migrations/0004_job_type.py deleted file mode 100644 index b1b635b..0000000 --- a/field/migrations/0004_job_type.py +++ /dev/null @@ -1,18 +0,0 @@ -# Generated by Django 5.2.4 on 2025-07-29 17:55 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('field', '0003_image_comment_alter_cultivation_calender_calender_and_more'), - ] - - operations = [ - migrations.AddField( - model_name='job', - name='type', - field=models.CharField(choices=[('Irrigating', 'IRRIGATING'), ('Planting', 'PLANTING'), ('PrePlanting', 'PREPLANTING'), ('Fertilizing', 'FERTILIZING'), ('Pruning', 'PRUNING'), ('Harvesting', 'HARVESTING')], default='Irrigating', max_length=15), - ), - ] diff --git a/field/migrations/0005_remove_voice_voice_alter_job_costs_alter_job_images_and_more.py b/field/migrations/0005_remove_voice_voice_alter_job_costs_alter_job_images_and_more.py deleted file mode 100644 index 8b42d3e..0000000 --- a/field/migrations/0005_remove_voice_voice_alter_job_costs_alter_job_images_and_more.py +++ /dev/null @@ -1,43 +0,0 @@ -# Generated by Django 5.2.4 on 2025-07-29 18:30 - -import django.db.models.deletion -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('field', '0004_job_type'), - ] - - operations = [ - migrations.RemoveField( - model_name='voice', - name='Voice', - ), - migrations.AlterField( - model_name='job', - name='costs', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='field.cost'), - ), - migrations.AlterField( - model_name='job', - name='images', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='field.image'), - ), - migrations.AlterField( - model_name='job', - name='notes', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='field.note'), - ), - migrations.AlterField( - model_name='job', - name='voices', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.SET_NULL, to='field.voice'), - ), - migrations.AddField( - model_name='voice', - name='voice', - field=models.FileField(blank=True, null=True, upload_to='audios/'), - ), - ] diff --git a/field/migrations/0006_remove_job_voices_alter_job_type_delete_voice.py b/field/migrations/0006_remove_job_voices_alter_job_type_delete_voice.py deleted file mode 100644 index 7e9d4a1..0000000 --- a/field/migrations/0006_remove_job_voices_alter_job_type_delete_voice.py +++ /dev/null @@ -1,25 +0,0 @@ -# Generated by Django 5.2.4 on 2025-07-30 20:06 - -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('field', '0005_remove_voice_voice_alter_job_costs_alter_job_images_and_more'), - ] - - operations = [ - migrations.RemoveField( - model_name='job', - name='voices', - ), - migrations.AlterField( - model_name='job', - name='type', - field=models.CharField(choices=[('Irrigation', 'IRRIGATING'), ('Planting', 'PLANTING'), ('PrePlanting', 'PREPLANTING'), ('Fertilizing', 'FERTILIZING'), ('Spraying', 'SPRAYING'), ('Pruning', 'PRUNING'), ('Harvesting', 'HARVESTING')], default='Irrigating', max_length=15), - ), - migrations.DeleteModel( - name='Voice', - ), - ] diff --git a/field/migrations/0007_field_user_job_user.py b/field/migrations/0007_field_user_job_user.py deleted file mode 100644 index a1a259d..0000000 --- a/field/migrations/0007_field_user_job_user.py +++ /dev/null @@ -1,26 +0,0 @@ -# Generated by Django 5.2.4 on 2025-07-30 20:12 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('field', '0006_remove_job_voices_alter_job_type_delete_voice'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.AddField( - model_name='field', - name='user', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), - ), - migrations.AddField( - model_name='job', - name='user', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), - ), - ] diff --git a/field/migrations/0008_cost_user_image_user_note_user.py b/field/migrations/0008_cost_user_image_user_note_user.py deleted file mode 100644 index 6b0b8f4..0000000 --- a/field/migrations/0008_cost_user_image_user_note_user.py +++ /dev/null @@ -1,31 +0,0 @@ -# Generated by Django 5.2.4 on 2025-07-30 21:08 - -import django.db.models.deletion -from django.conf import settings -from django.db import migrations, models - - -class Migration(migrations.Migration): - - dependencies = [ - ('field', '0007_field_user_job_user'), - migrations.swappable_dependency(settings.AUTH_USER_MODEL), - ] - - operations = [ - migrations.AddField( - model_name='cost', - name='user', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), - ), - migrations.AddField( - model_name='image', - name='user', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), - ), - migrations.AddField( - model_name='note', - name='user', - field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL), - ), - ] diff --git a/field/models.py b/field/models.py index a4e331f..0e76ce8 100644 --- a/field/models.py +++ b/field/models.py @@ -8,6 +8,7 @@ class Field(models.Model): user = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True) name = models.CharField(max_length=255) geography = models.JSONField(default=dict) + plantdate = models.DateField(null=True, blank=True) def __str__(self): return self.name @@ -70,7 +71,7 @@ class Job(models.Model): type = models.CharField(max_length=15, choices=TYPE_CHOICES, default="Irrigating") field = models.ForeignKey(Field, on_delete=models.CASCADE) made_date = models.DateTimeField(auto_now_add=True) - due_date = models.DateTimeField(auto_now_add=True) + due_date = models.DateField() status = models.BooleanField() costs = models.ForeignKey(Cost, on_delete=models.SET_NULL, null=True, blank=True) notes = models.ForeignKey(Note, on_delete=models.SET_NULL, null=True, blank=True) diff --git a/images/لندینگ_سایت_دوره_اظهارنامه_حقوقی.00_00_04_05.Still001.jpg b/images/لندینگ_سایت_دوره_اظهارنامه_حقوقی.00_00_04_05.Still001.jpg new file mode 100644 index 0000000..b8fa727 Binary files /dev/null and b/images/لندینگ_سایت_دوره_اظهارنامه_حقوقی.00_00_04_05.Still001.jpg differ