mirror of
https://github.com/lemeow125/EquipmentTracker-Backend.git
synced 2024-11-17 06:09:26 +08:00
Added equipment groups model and adjusted equipments postmigration script
This commit is contained in:
parent
0ea1251507
commit
03a4e07f7f
10 changed files with 124 additions and 5 deletions
|
@ -71,6 +71,7 @@ INSTALLED_APPS = [
|
||||||
'drf_spectacular_sidecar',
|
'drf_spectacular_sidecar',
|
||||||
'accounts',
|
'accounts',
|
||||||
'equipments',
|
'equipments',
|
||||||
|
'equipment_groups',
|
||||||
]
|
]
|
||||||
|
|
||||||
MIDDLEWARE = [
|
MIDDLEWARE = [
|
||||||
|
|
0
equipment_tracker/equipment_groups/__init__.py
Normal file
0
equipment_tracker/equipment_groups/__init__.py
Normal file
9
equipment_tracker/equipment_groups/admin.py
Normal file
9
equipment_tracker/equipment_groups/admin.py
Normal file
|
@ -0,0 +1,9 @@
|
||||||
|
from django.contrib import admin
|
||||||
|
from .models import EquipmentGroup
|
||||||
|
from simple_history.admin import SimpleHistoryAdmin
|
||||||
|
|
||||||
|
|
||||||
|
@admin.register(EquipmentGroup)
|
||||||
|
class EquipmentGroupAdmin(SimpleHistoryAdmin):
|
||||||
|
readonly_fields = ('status',)
|
||||||
|
list_display = ('name', 'status', 'date_added', 'last_updated')
|
6
equipment_tracker/equipment_groups/apps.py
Normal file
6
equipment_tracker/equipment_groups/apps.py
Normal file
|
@ -0,0 +1,6 @@
|
||||||
|
from django.apps import AppConfig
|
||||||
|
|
||||||
|
|
||||||
|
class EquipmentGroupsConfig(AppConfig):
|
||||||
|
default_auto_field = 'django.db.models.BigAutoField'
|
||||||
|
name = 'equipment_groups'
|
|
@ -0,0 +1,53 @@
|
||||||
|
# Generated by Django 4.2.7 on 2023-11-13 09:43
|
||||||
|
|
||||||
|
from django.conf import settings
|
||||||
|
from django.db import migrations, models
|
||||||
|
import django.db.models.deletion
|
||||||
|
import django.utils.timezone
|
||||||
|
import simple_history.models
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
initial = True
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||||
|
('equipments', '0003_historicalequipment'),
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='HistoricalEquipmentGroup',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigIntegerField(auto_created=True, blank=True, db_index=True, verbose_name='ID')),
|
||||||
|
('name', models.CharField(max_length=200)),
|
||||||
|
('remarks', models.TextField(max_length=512)),
|
||||||
|
('date_added', models.DateTimeField(default=django.utils.timezone.now, editable=False)),
|
||||||
|
('last_updated', models.DateTimeField(blank=True, editable=False)),
|
||||||
|
('history_id', models.AutoField(primary_key=True, serialize=False)),
|
||||||
|
('history_date', models.DateTimeField(db_index=True)),
|
||||||
|
('history_change_reason', models.CharField(max_length=100, null=True)),
|
||||||
|
('history_type', models.CharField(choices=[('+', 'Created'), ('~', 'Changed'), ('-', 'Deleted')], max_length=1)),
|
||||||
|
('history_user', models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, related_name='+', to=settings.AUTH_USER_MODEL)),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'historical equipment group',
|
||||||
|
'verbose_name_plural': 'historical equipment groups',
|
||||||
|
'ordering': ('-history_date', '-history_id'),
|
||||||
|
'get_latest_by': ('history_date', 'history_id'),
|
||||||
|
},
|
||||||
|
bases=(simple_history.models.HistoricalChanges, models.Model),
|
||||||
|
),
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='EquipmentGroup',
|
||||||
|
fields=[
|
||||||
|
('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||||
|
('name', models.CharField(max_length=200)),
|
||||||
|
('remarks', models.TextField(max_length=512)),
|
||||||
|
('date_added', models.DateTimeField(default=django.utils.timezone.now, editable=False)),
|
||||||
|
('last_updated', models.DateTimeField(auto_now=True)),
|
||||||
|
('equipments', models.ManyToManyField(to='equipments.equipmentinstance')),
|
||||||
|
],
|
||||||
|
),
|
||||||
|
]
|
40
equipment_tracker/equipment_groups/models.py
Normal file
40
equipment_tracker/equipment_groups/models.py
Normal file
|
@ -0,0 +1,40 @@
|
||||||
|
from django.db import models
|
||||||
|
from django.utils.timezone import now
|
||||||
|
from simple_history.models import HistoricalRecords
|
||||||
|
from django.db.models.signals import post_migrate
|
||||||
|
from django.dispatch import receiver
|
||||||
|
from equipments.models import EquipmentInstance
|
||||||
|
|
||||||
|
|
||||||
|
class EquipmentGroup(models.Model):
|
||||||
|
name = models.CharField(max_length=200)
|
||||||
|
remarks = models.TextField(max_length=512)
|
||||||
|
date_added = models.DateTimeField(default=now, editable=False)
|
||||||
|
last_updated = models.DateTimeField(auto_now=True, editable=False)
|
||||||
|
equipments = models.ManyToManyField(EquipmentInstance)
|
||||||
|
history = HistoricalRecords()
|
||||||
|
|
||||||
|
@property
|
||||||
|
def status(self):
|
||||||
|
if self.equipments.filter(status='Broken').exists():
|
||||||
|
return 'Broken'
|
||||||
|
elif self.equipments.filter(status='Under Maintenance').exists():
|
||||||
|
return 'Under Maintenance'
|
||||||
|
elif self.equipments.filter(status='Decomissioned').exists():
|
||||||
|
return 'Decomissioned'
|
||||||
|
else:
|
||||||
|
return 'Working'
|
||||||
|
|
||||||
|
def __str__(self):
|
||||||
|
return self.name
|
||||||
|
|
||||||
|
|
||||||
|
@receiver(post_migrate)
|
||||||
|
def create_superuser(sender, **kwargs):
|
||||||
|
if sender.name == 'equipment_groups':
|
||||||
|
PC = EquipmentInstance.objects.filter(id=1).first().id
|
||||||
|
KEYBOARD = EquipmentInstance.objects.filter(id=2).first().id
|
||||||
|
MOUSE = EquipmentInstance.objects.filter(id=3).first().id
|
||||||
|
GROUP, CREATED = EquipmentGroup.objects.get_or_create(
|
||||||
|
name="HP All-In-One PC Set", remarks="First PC set of citc tracker!")
|
||||||
|
GROUP.equipments.set([PC, KEYBOARD, MOUSE])
|
3
equipment_tracker/equipment_groups/tests.py
Normal file
3
equipment_tracker/equipment_groups/tests.py
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
from django.test import TestCase
|
||||||
|
|
||||||
|
# Create your tests here.
|
3
equipment_tracker/equipment_groups/views.py
Normal file
3
equipment_tracker/equipment_groups/views.py
Normal file
|
@ -0,0 +1,3 @@
|
||||||
|
from django.shortcuts import render
|
||||||
|
|
||||||
|
# Create your views here.
|
|
@ -42,9 +42,13 @@ def create_superuser(sender, **kwargs):
|
||||||
if sender.name == 'equipments':
|
if sender.name == 'equipments':
|
||||||
EQUIPMENT, CREATED = Equipment.objects.get_or_create(
|
EQUIPMENT, CREATED = Equipment.objects.get_or_create(
|
||||||
name="HP All-in-One PC", description="I5 6500 8GB RAM 1TB HDD")
|
name="HP All-in-One PC", description="I5 6500 8GB RAM 1TB HDD")
|
||||||
if (CREATED):
|
|
||||||
print("Created sample equipment")
|
|
||||||
EQUIPMENT_INSTANCE, CREATED = EquipmentInstance.objects.get_or_create(
|
EQUIPMENT_INSTANCE, CREATED = EquipmentInstance.objects.get_or_create(
|
||||||
equipment=EQUIPMENT, status="Working", remarks="First PC of USTP!")
|
equipment=EQUIPMENT, status="Working", remarks="First PC of citc equipment tracker!")
|
||||||
if (CREATED):
|
EQUIPMENT, CREATED = Equipment.objects.get_or_create(
|
||||||
print("Created sample equipment instance")
|
name="HP Keyboard", description="Generic Membrane Keyboard")
|
||||||
|
EQUIPMENT_INSTANCE, CREATED = EquipmentInstance.objects.get_or_create(
|
||||||
|
equipment=EQUIPMENT, status="Working", remarks="First keyboard of citc equipment tracker!")
|
||||||
|
EQUIPMENT, CREATED = Equipment.objects.get_or_create(
|
||||||
|
name="HP Mouse", description="Generic Mouse")
|
||||||
|
EQUIPMENT_INSTANCE, CREATED = EquipmentInstance.objects.get_or_create(
|
||||||
|
equipment=EQUIPMENT, status="Working", remarks="First mouse of citc equipment tracker!")
|
||||||
|
|
Loading…
Reference in a new issue