Added seperate minerals detail page

This commit is contained in:
2014-01-21 21:43:23 +10:00
parent 07c6260bde
commit d5867c8d4a
6 changed files with 34 additions and 5 deletions

View File

@@ -2,10 +2,11 @@ Django==1.5.1
South==0.8.1
astroid==1.0.0
coverage==3.6
distribute==0.6.34
distribute==0.6.49
django-dajax==0.9.2
django-dajaxice==0.5.5
django-jenkins==0.14.1
django-model-utils==2.0
jslint==0.6.0
logilab-common==0.60.0
pep8==1.4.6

View File

@@ -3,6 +3,7 @@ Defines the models that that Django application uses
"""
from django.db import models
from model_utils.managers import InheritanceManager
class CommonInfo(models.Model):
@@ -32,6 +33,8 @@ class Category(CommonInfo):
on_delete=models.SET_NULL,
related_name='children')
objects = InheritanceManager()
@property
def active_children(self):
return self.children.filter(active=True).order_by('name')
@@ -53,6 +56,16 @@ class Sample(CommonInfo):
on_delete=models.SET_NULL,
related_name="samples")
#Use the inheritance manager for handling subclasses
objects = InheritanceManager()
@property
def url(self):
if isinstance(self, Mineral):
return 'three_d_viewer:mineral_detail'
else:
return 'three_d_viewer:detail'
class Mineral(Sample):
"""

View File

@@ -0,0 +1,6 @@
{% extends "three_d_viewer/detail.html" %}
{% block pageheader %}
<h1>{{ 'MINERALS' }}</h1>
<p class="lead">{{ sample.description }}</p>
{% endblock %}

View File

@@ -8,7 +8,7 @@
{%endwith%}
{% endfor %}
{% for sample in category.active_samples %}
<li><a href="{% url 'three_d_viewer:detail' sample.id %}">{{ sample.name }}</a></li>
<li><a href={% url sample.url sample.id %}>{{ sample.name }}</a></li>
{% endfor %}
</ul>
</li>

View File

@@ -6,6 +6,7 @@ urlpatterns = patterns(
'',
url(r'^$', views.HomeView.as_view(), name='home'),
url(r'^(?P<pk>\d+)/$', views.DetailView.as_view(), name='detail'),
url(r'^(?P<pk>\d+)/$', views.MineralDetailView.as_view(), name='mineral_detail'),
url(r'^media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT}),
)

View File

@@ -5,7 +5,7 @@ Define the views for the Django MVC
from django import template
from django.views import generic
from three_d_viewer.models import Sample, Category
from three_d_viewer.models import Sample, Category, Mineral
register = template.Library()
@@ -19,7 +19,7 @@ class HomeView(generic.ListView):
def get_context_data(self, **kwargs):
context = super(HomeView, self).get_context_data(**kwargs)
context['active_samples'] = Sample.objects.filter(active=True).order_by('name')
context['active_samples'] = Sample.objects.select_subclasses(Mineral).filter(active=True).order_by('name')
context['parent_categories'] = Category.objects.filter(parent=None). \
filter(active=True).order_by('name')
return context
@@ -37,7 +37,15 @@ class DetailView(generic.DetailView):
def get_context_data(self, **kwargs):
context = super(DetailView, self).get_context_data(**kwargs)
context['active_samples'] = Sample.objects.filter(active=True).order_by('name')
context['active_samples'] = Sample.objects.select_subclasses(Mineral).filter(active=True).order_by('name')
context['parent_categories'] = Category.objects.filter(parent=None). \
filter(active=True).order_by('name')
return context
class MineralDetailView(DetailView):
"""
Add extra functionality for mineral details
"""
model = Mineral
template_name = 'three_d_viewer/mineral_detail.html'