Start work on sample data command

This commit is contained in:
2021-06-30 15:56:28 +01:00
parent f8624d3b7a
commit b1646d556c
10 changed files with 77 additions and 5 deletions

View File

@@ -12,6 +12,7 @@ urlpatterns = [
path('', include('versioning.urls')),
path('', include('RIGS.urls')),
path('assets/', include('assets.urls')),
path('training/', include('training.urls')),
path('', login_required(views.Index.as_view()), name='index'),

View File

@@ -12,3 +12,4 @@ class Command(BaseCommand):
call_command('generateSampleUserData')
call_command('generateSampleRIGSData')
call_command('generateSampleAssetsData')
call_command('generateSampleTrainingData')

View File

@@ -43,7 +43,7 @@
<img class="card-img-top" src="{% static 'imgs/training.jpg' %}" alt="" style="height: 150px; object-fit: cover;">
<h4 class="card-header">Training Database</h4>
<div class="list-group list-group-flush">
<a class="list-group-item list-group-item-action" href=""><span class="fas fa-eye align-middle"></span><span class="align-middle"> View Training Items</span></a>
<a class="list-group-item list-group-item-action" href="{% url 'item_list' %}"><span class="fas fa-eye align-middle"></span><span class="align-middle"> View Training Items</span></a>
<a class="list-group-item list-group-item-action" href=""><span class="fas fa-plus align-middle"></span><span class="align-middle"> Log Training Session</span></a>
</div>
</div>

View File

@@ -4,3 +4,5 @@ from reversion.admin import VersionAdmin
admin.site.register(models.Trainee, VersionAdmin)
admin.site.register(models.TrainingLevel, VersionAdmin)
admin.site.register(models.TrainingCategory, VersionAdmin)
admin.site.register(models.TrainingItem, VersionAdmin)

View File

View File

@@ -0,0 +1,45 @@
import datetime
import random
from django.contrib.auth.models import Group, Permission
from django.core.management.base import BaseCommand, CommandError
from django.db import transaction
from django.utils import timezone
from reversion import revisions as reversion
from training import models
class Command(BaseCommand):
help = 'Adds sample data to use for testing'
can_import_settings = True
categories = []
items = []
def handle(self, *args, **options):
from django.conf import settings
if not (settings.DEBUG or settings.STAGING):
raise CommandError('You cannot run this command in production')
random.seed('otherwise it is done by time, which could lead to inconsistant tests')
with transaction.atomic():
self.setup_categories()
self.setup_items()
def setup_categories(self):
names = [(1, "Basic"), (2, "Sound"), (3, "Lighting"), (4, "Rigging"), (5, "Power"), (6, "Haulage")]
for i, name in names:
category = models.TrainingCategory.objects.create(number=i, name=name)
category.save()
self.categories.append(category)
def setup_items(self):
names = ["Motorised Power Towers", "Catering", "Forgetting Cables", "Gazebo Construction", "Balanced Audio", "Unbalanced Audio"]
for i,name in enumerate(names):
item = models.TrainingItem.objects.create(category=random.choice(self.categories), number=random.randint(0, 100), name=name)
self.items.append(item)

View File

@@ -15,10 +15,13 @@ class TrainingCategory(models.Model):
class TrainingItem(models.Model):
category = models.ForeignKey('TrainingCategory', on_delete=models.RESTRICT)
category = models.ForeignKey('TrainingCategory', related_name='category', on_delete=models.RESTRICT)
number = models.CharField(max_length=3)
name = models.CharField(max_length=50)
def __str__(self):
return "{}.{} {}".format(self.category.number, self.number, self.name)
# TODO Validation that dates cannot be in the future
class TrainingItemQualification(models.Model):

View File

@@ -1,5 +1,13 @@
{% extends 'base_rigs.html' %}
{% block content %}
<div class="row">
{% for category in categories %}
<div class="col">
<div class="card">
<h4 class="card-header">{{ category.name }}</h4>
</div>
</div>
{% endfor %}
</div>
{% endblock %}

View File

@@ -1,5 +1,7 @@
from django.urls import path
from training import views
urlpatterns = [
path('items/', views.ItemList.as_view(), name='item_list'),
]

View File

@@ -1,3 +1,13 @@
from django.shortcuts import render
# Create your views here.
from django.views import generic
from training import models
class ItemList(generic.ListView):
template_name = "item_list.html"
model = models.TrainingItem
def get_context_data(self, **kwargs):
context = super(ItemList, self).get_context_data(**kwargs)
context["categories"] = models.TrainingCategory.objects.all()
return context