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'^blog/', include('blog.urls')),
|
||||||
|
|
||||||
url(r'^', include('RIGS.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"),
|
name="registration_register"),
|
||||||
url('^user/', include('django.contrib.auth.urls')),
|
url('^user/', include('django.contrib.auth.urls')),
|
||||||
url('^user/', include('registration.backends.default.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
|
from django.utils.encoding import python_2_unicode_compatible
|
||||||
import reversion
|
import reversion
|
||||||
|
|
||||||
|
|
||||||
# Create your models here.
|
# Create your models here.
|
||||||
|
|
||||||
|
|
||||||
@@ -32,19 +33,34 @@ class TrainingItem(models.Model):
|
|||||||
@python_2_unicode_compatible
|
@python_2_unicode_compatible
|
||||||
@reversion.register
|
@reversion.register
|
||||||
class TrainingRecord(models.Model):
|
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)
|
training_item = models.ForeignKey(TrainingItem)
|
||||||
|
|
||||||
started_date = models.DateField(blank=True, null=True)
|
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)
|
started_notes = models.TextField(blank=True, null=True)
|
||||||
completed_date = models.DateField(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)
|
completed_notes = models.TextField(blank=True, null=True)
|
||||||
assessed_date = models.DateField(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)
|
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):
|
def __str__(self):
|
||||||
return "{0} - {1}".format(self.trainee, self.training_item)
|
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.shortcuts import render
|
||||||
from django.views import generic
|
from django.views import generic
|
||||||
from training import models
|
from training import models
|
||||||
|
|
||||||
|
|
||||||
# Create your views here.
|
# Create your views here.
|
||||||
|
|
||||||
|
|
||||||
class TrainingRecordDetailView(generic.DetailView):
|
class UserTrainingRecordView(generic.DetailView):
|
||||||
model = models.TrainingRecord
|
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