mirror of
https://github.com/nottinghamtec/PyRIGS.git
synced 2026-01-17 05:22:16 +00:00
A first view that shows a user their current training status.
This commit is contained in:
@@ -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')),
|
||||
|
||||
BIN
db.sqlite3
BIN
db.sqlite3
Binary file not shown.
@@ -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)
|
||||
|
||||
|
||||
63
training/templates/training/profile_detail.html
Normal file
63
training/templates/training/profile_detail.html
Normal 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 %}
|
||||
1
training/templatetags/__init__.py
Normal file
1
training/templatetags/__init__.py
Normal file
@@ -0,0 +1 @@
|
||||
__author__ = 'Tom Price'
|
||||
14
training/templatetags/training_extras.py
Normal file
14
training/templatetags/training_extras.py
Normal 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
8
training/urls.py
Normal 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())
|
||||
)
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user