A first view that shows a user their current training status.

This commit is contained in:
Tom Price
2015-12-23 01:06:18 +00:00
parent 1922992633
commit c5970d2542
8 changed files with 120 additions and 7 deletions

View File

@@ -12,7 +12,8 @@ urlpatterns = patterns('',
# url(r'^blog/', include('blog.urls')),
url(r'^', include('RIGS.urls')),
url('^user/register/$', RegistrationView.as_view(form_class=RIGS.forms.ProfileRegistrationFormUniqueEmail),
url('^training/', include('training.urls', namespace='training')),
url('^user/register/$', RegistrationView.as_view(form_class=RIGS.forms.ProfileRegistrationFormUniqueEmail),
name="registration_register"),
url('^user/', include('django.contrib.auth.urls')),
url('^user/', include('registration.backends.default.urls')),

Binary file not shown.

View File

@@ -3,6 +3,7 @@ from django.conf import settings
from django.utils.encoding import python_2_unicode_compatible
import reversion
# Create your models here.
@@ -32,19 +33,34 @@ class TrainingItem(models.Model):
@python_2_unicode_compatible
@reversion.register
class TrainingRecord(models.Model):
trainee = models.ForeignKey(settings.AUTH_USER_MODEL)
trainee = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='trainingrecords')
training_item = models.ForeignKey(TrainingItem)
started_date = models.DateField(blank=True, null=True)
started_trainer = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='trainingrecords_started', blank=True, null=True)
started_trainer = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='trainingrecords_started', blank=True,
null=True)
started_notes = models.TextField(blank=True, null=True)
completed_date = models.DateField(blank=True, null=True)
completed_trainer = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='trainingrecords_completed', blank=True, null=True)
completed_trainer = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='trainingrecords_completed',
blank=True, null=True)
completed_notes = models.TextField(blank=True, null=True)
assessed_date = models.DateField(blank=True, null=True)
assessed_trainer = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='trainingrecords_assessed', blank=True, null=True)
assessed_trainer = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='trainingrecords_assessed', blank=True,
null=True)
assessed_notes = models.TextField(blank=True, null=True)
@property
def started(self):
return self.started_date and self.started_trainer
@property
def complete(self):
return self.completed_date and self.completed_trainer
@property
def assessed(self):
return self.assessed_date and self.assessed_trainer
def __str__(self):
return "{0} - {1}".format(self.trainee, self.training_item)

View File

@@ -0,0 +1,63 @@
{% extends 'base.html' %}
{% load training_extras %}
{% block title %}{{ profile }} Training{% endblock %}
{% block content %}
<h2>Training Profile for {{ profile }}</h2>
{% for category in categories %}
<div class="row">
<div class="col-xs-12">
<h3>{{ category }}</h3>
<table class="table">
<thead>
<tr>
<td>Item</td>
<td>Started</td>
<td>Complete</td>
<td>Assessed</td>
</tr>
</thead>
<tbody>
{% for item in category.trainingitem_set.all %}
{% with record=item|item_record:request.user %}
<tr class="
{% if record.assessed %}
success
{% elif record.complete %}
info
{% elif record.started %}
warning
{% else %}
danger
{% endif %}
">
<td>{{ record.training_item }}</td>
<td>
{{ record.started_date|default_if_none:"No" }} <em>{{ record.started_trainer|default_if_none:"" }}</em>
{% if record.started_notes %}
<pre>{{ record.started_notes }}</pre>
{% endif %}
</td>
<td>
{{ record.completed_date|default_if_none:"No" }} <em>{{ record.completed_trainer|default_if_none:"" }}</em>
{% if record.completed_notes %}
<pre>{{ record.completed_notes }}</pre>
{% endif %}
</td>
<td>
{{ record.assessed_date|default_if_none:"No" }} <em>{{ record.assessed_trainer|default_if_none:"" }}</em>
{% if record.assessed_notes %}
<pre>{{ record.assessed_notes }}</pre>
{% endif %}
</td>
</tr>
{% endwith %}
{% endfor %}
</tbody>
</table>
</div>
</div>
{% endfor %}
{% endblock %}

View File

@@ -0,0 +1 @@
__author__ = 'Tom Price'

View File

@@ -0,0 +1,14 @@
from django import template
from training import models
__author__ = 'Tom Price'
register = template.Library()
@register.filter
def item_record(item, user):
if item in user.trainingitem_set.all():
return user.trainingrecords.get(training_item=item)
return models.TrainingRecord(training_item=item)

8
training/urls.py Normal file
View File

@@ -0,0 +1,8 @@
__author__ = 'Tom Price'
from django.conf.urls import patterns, url
from training import views
urlpatterns = patterns('',
url(r'user/(?P<pk>\d+)/$', views.UserTrainingRecordView.as_view())
)

View File

@@ -1,9 +1,19 @@
from django.conf import settings
from django.contrib.auth import get_user_model
from django.db.models import Q
from django.shortcuts import render
from django.views import generic
from training import models
# Create your views here.
class TrainingRecordDetailView(generic.DetailView):
model = models.TrainingRecord
class UserTrainingRecordView(generic.DetailView):
model = get_user_model()
template_name = 'training/profile_detail.html'
def get_context_data(self, **kwargs):
context = super(UserTrainingRecordView, self).get_context_data(**kwargs)
context['categories'] = models.TrainingCategory.objects.all()
return context