diff --git a/PyRIGS/urls.py b/PyRIGS/urls.py index 9821ae20..8dae92d6 100644 --- a/PyRIGS/urls.py +++ b/PyRIGS/urls.py @@ -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')), diff --git a/db.sqlite3 b/db.sqlite3 index d0e8fed8..ac9ebe55 100644 Binary files a/db.sqlite3 and b/db.sqlite3 differ diff --git a/training/models.py b/training/models.py index e89f7449..e3416c75 100644 --- a/training/models.py +++ b/training/models.py @@ -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) diff --git a/training/templates/training/profile_detail.html b/training/templates/training/profile_detail.html new file mode 100644 index 00000000..be120a88 --- /dev/null +++ b/training/templates/training/profile_detail.html @@ -0,0 +1,63 @@ +{% extends 'base.html' %} +{% load training_extras %} + +{% block title %}{{ profile }} Training{% endblock %} + +{% block content %} +

Training Profile for {{ profile }}

+ + {% for category in categories %} +
+
+

{{ category }}

+ + + + + + + + + + + {% for item in category.trainingitem_set.all %} + {% with record=item|item_record:request.user %} + + + + + + + {% endwith %} + {% endfor %} + +
ItemStartedCompleteAssessed
{{ record.training_item }} + {{ record.started_date|default_if_none:"No" }} {{ record.started_trainer|default_if_none:"" }} + {% if record.started_notes %} +
{{ record.started_notes }}
+ {% endif %} +
+ {{ record.completed_date|default_if_none:"No" }} {{ record.completed_trainer|default_if_none:"" }} + {% if record.completed_notes %} +
{{ record.completed_notes }}
+ {% endif %} +
+ {{ record.assessed_date|default_if_none:"No" }} {{ record.assessed_trainer|default_if_none:"" }} + {% if record.assessed_notes %} +
{{ record.assessed_notes }}
+ {% endif %} +
+
+
+ {% endfor %} +{% endblock %} \ No newline at end of file diff --git a/training/templatetags/__init__.py b/training/templatetags/__init__.py new file mode 100644 index 00000000..111f1a7c --- /dev/null +++ b/training/templatetags/__init__.py @@ -0,0 +1 @@ +__author__ = 'Tom Price' diff --git a/training/templatetags/training_extras.py b/training/templatetags/training_extras.py new file mode 100644 index 00000000..e0ac14fa --- /dev/null +++ b/training/templatetags/training_extras.py @@ -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) diff --git a/training/urls.py b/training/urls.py new file mode 100644 index 00000000..ab8dc6e2 --- /dev/null +++ b/training/urls.py @@ -0,0 +1,8 @@ +__author__ = 'Tom Price' + +from django.conf.urls import patterns, url +from training import views + +urlpatterns = patterns('', + url(r'user/(?P\d+)/$', views.UserTrainingRecordView.as_view()) +) diff --git a/training/views.py b/training/views.py index 7c7aafea..35cb6bdb 100644 --- a/training/views.py +++ b/training/views.py @@ -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