diff --git a/core/files/tests/v1/__init__.py b/core/files/tests/v1/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/core/inventory/migrations/0005_rename_cid_container_id_rename_eid_event_id_and_more.py b/core/inventory/migrations/0005_rename_cid_container_id_rename_eid_event_id_and_more.py new file mode 100644 index 0000000..fcd4b8d --- /dev/null +++ b/core/inventory/migrations/0005_rename_cid_container_id_rename_eid_event_id_and_more.py @@ -0,0 +1,52 @@ +# Generated by Django 4.2.7 on 2024-11-19 22:56 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0004_alter_event_created_at_alter_item_created_at'), + ] + + operations = [ + migrations.RenameField( + model_name='container', + old_name='cid', + new_name='id', + ), + migrations.RenameField( + model_name='event', + old_name='eid', + new_name='id', + ), + migrations.RenameField( + model_name='item', + old_name='iid', + new_name='id', + ), + migrations.RenameField( + model_name='item', + old_name='uid', + new_name='uid_deprecated', + ), + migrations.AlterUniqueTogether( + name='item', + unique_together=set(), + ), + migrations.AlterField( + model_name='item', + name='container', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inventory.container'), + ), + migrations.AlterField( + model_name='item', + name='event', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inventory.event'), + ), + migrations.AlterUniqueTogether( + name='item', + unique_together={('uid_deprecated', 'event')}, + ), + ] diff --git a/core/inventory/migrations/0006_alter_event_table.py b/core/inventory/migrations/0006_alter_event_table.py new file mode 100644 index 0000000..2fa421a --- /dev/null +++ b/core/inventory/migrations/0006_alter_event_table.py @@ -0,0 +1,17 @@ +# Generated by Django 4.2.7 on 2024-11-20 01:39 + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0005_rename_cid_container_id_rename_eid_event_id_and_more'), + ] + + operations = [ + migrations.AlterModelTable( + name='event', + table='common_event', + ), + ] diff --git a/core/inventory/migrations/0005_rename_cid_container_id_rename_iid_item_id_and_more.py b/core/inventory/migrations/0007_remove_item_container_alter_item_event_itemplacement.py similarity index 59% rename from core/inventory/migrations/0005_rename_cid_container_id_rename_iid_item_id_and_more.py rename to core/inventory/migrations/0007_remove_item_container_alter_item_event_itemplacement.py index 81d27b5..7ea5d8e 100644 --- a/core/inventory/migrations/0005_rename_cid_container_id_rename_iid_item_id_and_more.py +++ b/core/inventory/migrations/0007_remove_item_container_alter_item_event_itemplacement.py @@ -1,4 +1,4 @@ -# Generated by Django 4.2.7 on 2024-11-19 22:02 +# Generated by Django 4.2.7 on 2024-11-20 01:48 from django.db import migrations, models import django.db.models.deletion @@ -7,28 +7,18 @@ import django.db.models.deletion class Migration(migrations.Migration): dependencies = [ - ('inventory', '0004_alter_event_created_at_alter_item_created_at'), + ('inventory', '0006_alter_event_table'), ] operations = [ - migrations.RenameField( - model_name='container', - old_name='cid', - new_name='id', - ), - migrations.RenameField( + migrations.RemoveField( model_name='item', - old_name='iid', - new_name='id', + name='container', ), - migrations.RenameField( + migrations.AlterField( model_name='item', - old_name='uid', - new_name='uid_deprecated', - ), - migrations.AlterUniqueTogether( - name='item', - unique_together={('uid_deprecated', 'event')}, + name='event', + field=models.ForeignKey(db_column='eid', on_delete=django.db.models.deletion.CASCADE, to='inventory.event'), ), migrations.CreateModel( name='ItemPlacement', @@ -39,8 +29,4 @@ class Migration(migrations.Migration): ('item', models.ForeignKey(db_column='iid', on_delete=django.db.models.deletion.CASCADE, related_name='container_history', to='inventory.item')), ], ), - migrations.RemoveField( - model_name='item', - name='container', - ), ] diff --git a/core/inventory/migrations/0008_alter_item_event_alter_itemplacement_container_and_more.py b/core/inventory/migrations/0008_alter_item_event_alter_itemplacement_container_and_more.py new file mode 100644 index 0000000..2fae077 --- /dev/null +++ b/core/inventory/migrations/0008_alter_item_event_alter_itemplacement_container_and_more.py @@ -0,0 +1,29 @@ +# Generated by Django 4.2.7 on 2024-11-20 01:52 + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('inventory', '0007_remove_item_container_alter_item_event_itemplacement'), + ] + + operations = [ + migrations.AlterField( + model_name='item', + name='event', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='inventory.event'), + ), + migrations.AlterField( + model_name='itemplacement', + name='container', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='item_history', to='inventory.container'), + ), + migrations.AlterField( + model_name='itemplacement', + name='item', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='container_history', to='inventory.item'), + ), + ] diff --git a/core/inventory/models.py b/core/inventory/models.py index 2718639..bd1e1bb 100644 --- a/core/inventory/models.py +++ b/core/inventory/models.py @@ -25,12 +25,10 @@ class Item(SoftDeleteModel): id = models.AutoField(primary_key=True) uid_deprecated = models.IntegerField() description = models.TextField() - event = models.ForeignKey('Event', models.CASCADE, db_column='eid') - # container = models.ForeignKey('Container', models.CASCADE, db_column='cid') + event = models.ForeignKey('Event', models.CASCADE) returned_at = models.DateTimeField(blank=True, null=True) created_at = models.DateTimeField(null=True, auto_now_add=True) updated_at = models.DateTimeField(blank=True, null=True) - #related_issues = models.ManyToManyField('IssueThread', through='ItemRelation') @property def container(self): @@ -78,13 +76,13 @@ class Container(SoftDeleteModel): class ItemPlacement(models.Model): id = models.AutoField(primary_key=True) - item = models.ForeignKey('Item', models.CASCADE, db_column='iid', related_name='container_history') - container = models.ForeignKey('Container', models.CASCADE, db_column='cid', related_name='item_history') + item = models.ForeignKey('Item', models.CASCADE, related_name='container_history') + container = models.ForeignKey('Container', models.CASCADE, related_name='item_history') timestamp = models.DateTimeField(auto_now_add=True) class Event(models.Model): - eid = models.AutoField(primary_key=True) + id = models.AutoField(primary_key=True) name = models.CharField(max_length=255) slug = models.CharField(max_length=255, unique=True) start = models.DateTimeField(blank=True, null=True) @@ -96,3 +94,6 @@ class Event(models.Model): def __str__(self): return '[' + str(self.slug) + ']' + self.name + + class Meta: + db_table = 'common_event' \ No newline at end of file diff --git a/core/inventory/serializers.py b/core/inventory/serializers.py index 09d9caa..5a7b6ac 100644 --- a/core/inventory/serializers.py +++ b/core/inventory/serializers.py @@ -29,8 +29,8 @@ class EventSerializer(serializers.ModelSerializer): class Meta: model = Event - fields = ['eid', 'slug', 'name', 'start', 'end', 'pre_start', 'post_end', 'addresses'] - read_only_fields = ['eid'] + fields = ['id', 'slug', 'name', 'start', 'end', 'pre_start', 'post_end', 'addresses'] + read_only_fields = ['id'] # def update(self, instance, validated_data): @@ -99,6 +99,8 @@ class ItemSerializer(serializers.ModelSerializer): return internal def validate(self, attrs): + if not 'container' in attrs and not self.partial: + raise serializers.ValidationError("This field cannot be empty.") return super().validate(attrs) def create(self, validated_data): diff --git a/core/inventory/tests/v1/__init__.py b/core/inventory/tests/v1/__init__.py deleted file mode 100644 index e69de29..0000000 diff --git a/core/inventory/tests/v2/test_events.py b/core/inventory/tests/v2/test_events.py index d59ec06..11c17dc 100644 --- a/core/inventory/tests/v2/test_events.py +++ b/core/inventory/tests/v2/test_events.py @@ -39,7 +39,7 @@ class EventTestCase(TestCase): def test_update_event(self): from rest_framework.test import APIClient event = Event.objects.create(slug='EVENT1', name='Event 1') - response = APIClient().put(f'/api/2/events/{event.eid}/', {'slug': 'EVENT2', 'name': 'Event 2 new'}) + response = APIClient().put(f'/api/2/events/{event.id}/', {'slug': 'EVENT2', 'name': 'Event 2 new'}) self.assertEqual(response.status_code, 200) self.assertEqual(response.json()['slug'], 'EVENT2') self.assertEqual(response.json()['name'], 'Event 2 new') @@ -50,7 +50,7 @@ class EventTestCase(TestCase): def test_update_event(self): from rest_framework.test import APIClient event = Event.objects.create(slug='EVENT1', name='Event 1') - response = APIClient().patch(f'/api/2/events/{event.eid}/', {'addresses': []})#'foo@bar.baz', 'foo1@bar.baz' + response = APIClient().patch(f'/api/2/events/{event.id}/', {'addresses': []})#'foo@bar.baz', 'foo1@bar.baz' self.assertEqual(response.status_code, 200) self.assertEqual(response.json()['slug'], 'EVENT1') self.assertEqual(response.json()['name'], 'Event 1') @@ -63,7 +63,7 @@ class EventTestCase(TestCase): event = Event.objects.create(slug='EVENT1', name='Event 1') Event.objects.create(slug='EVENT2', name='Event 2') self.assertEqual(len(Event.objects.all()), 2) - response = client.delete(f'/api/2/events/{event.eid}/') + response = client.delete(f'/api/2/events/{event.id}/') self.assertEqual(response.status_code, 204) self.assertEqual(len(Event.objects.all()), 1) diff --git a/core/inventory/tests/v2/test_items.py b/core/inventory/tests/v2/test_items.py index 02c5085..e66adbf 100644 --- a/core/inventory/tests/v2/test_items.py +++ b/core/inventory/tests/v2/test_items.py @@ -91,7 +91,7 @@ class ItemTestCase(TestCase): def test_update_item(self): item = Item.objects.create(container=self.box, event=self.event, description='1') - response = self.client.put(f'/api/2/{self.event.slug}/item/{item.id}/', {'description': '2'}, + response = self.client.patch(f'/api/2/{self.event.slug}/item/{item.id}/', {'description': '2'}, content_type='application/json') self.assertEqual(response.status_code, 200) self.assertEqual(response.json(), @@ -105,7 +105,7 @@ class ItemTestCase(TestCase): def test_update_item_with_file(self): import base64 item = Item.objects.create(container=self.box, event=self.event, description='1') - response = self.client.put(f'/api/2/{self.event.slug}/item/{item.id}/', + response = self.client.patch(f'/api/2/{self.event.slug}/item/{item.id}/', {'description': '2', 'dataImage': "data:text/plain;base64," + base64.b64encode(b"foo").decode('utf-8')}, content_type='application/json') diff --git a/core/tickets/migrations/0012_alter_itemrelation_item.py b/core/tickets/migrations/0012_alter_itemrelation_item.py index fe2d7d0..a8ea2a5 100644 --- a/core/tickets/migrations/0012_alter_itemrelation_item.py +++ b/core/tickets/migrations/0012_alter_itemrelation_item.py @@ -1,4 +1,4 @@ -# Generated by Django 4.2.7 on 2024-11-19 22:02 +# Generated by Django 4.2.7 on 2024-11-20 01:48 from django.db import migrations, models import django.db.models.deletion @@ -7,7 +7,7 @@ import django.db.models.deletion class Migration(migrations.Migration): dependencies = [ - ('inventory', '0005_rename_cid_container_id_rename_iid_item_id_and_more'), + ('inventory', '0007_remove_item_container_alter_item_event_itemplacement'), ('tickets', '0011_train_old_spam'), ]