Added seperate minerals detail page
This commit is contained in:
@@ -2,10 +2,11 @@ Django==1.5.1
|
|||||||
South==0.8.1
|
South==0.8.1
|
||||||
astroid==1.0.0
|
astroid==1.0.0
|
||||||
coverage==3.6
|
coverage==3.6
|
||||||
distribute==0.6.34
|
distribute==0.6.49
|
||||||
django-dajax==0.9.2
|
django-dajax==0.9.2
|
||||||
django-dajaxice==0.5.5
|
django-dajaxice==0.5.5
|
||||||
django-jenkins==0.14.1
|
django-jenkins==0.14.1
|
||||||
|
django-model-utils==2.0
|
||||||
jslint==0.6.0
|
jslint==0.6.0
|
||||||
logilab-common==0.60.0
|
logilab-common==0.60.0
|
||||||
pep8==1.4.6
|
pep8==1.4.6
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ Defines the models that that Django application uses
|
|||||||
"""
|
"""
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
|
from model_utils.managers import InheritanceManager
|
||||||
|
|
||||||
|
|
||||||
class CommonInfo(models.Model):
|
class CommonInfo(models.Model):
|
||||||
@@ -32,6 +33,8 @@ class Category(CommonInfo):
|
|||||||
on_delete=models.SET_NULL,
|
on_delete=models.SET_NULL,
|
||||||
related_name='children')
|
related_name='children')
|
||||||
|
|
||||||
|
objects = InheritanceManager()
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def active_children(self):
|
def active_children(self):
|
||||||
return self.children.filter(active=True).order_by('name')
|
return self.children.filter(active=True).order_by('name')
|
||||||
@@ -53,6 +56,16 @@ class Sample(CommonInfo):
|
|||||||
on_delete=models.SET_NULL,
|
on_delete=models.SET_NULL,
|
||||||
related_name="samples")
|
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):
|
class Mineral(Sample):
|
||||||
"""
|
"""
|
||||||
|
|||||||
@@ -0,0 +1,6 @@
|
|||||||
|
{% extends "three_d_viewer/detail.html" %}
|
||||||
|
|
||||||
|
{% block pageheader %}
|
||||||
|
<h1>{{ 'MINERALS' }}</h1>
|
||||||
|
<p class="lead">{{ sample.description }}</p>
|
||||||
|
{% endblock %}
|
||||||
@@ -8,7 +8,7 @@
|
|||||||
{%endwith%}
|
{%endwith%}
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
{% for sample in category.active_samples %}
|
{% 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 %}
|
{% endfor %}
|
||||||
</ul>
|
</ul>
|
||||||
</li>
|
</li>
|
||||||
@@ -6,6 +6,7 @@ urlpatterns = patterns(
|
|||||||
'',
|
'',
|
||||||
url(r'^$', views.HomeView.as_view(), name='home'),
|
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.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',
|
url(r'^media/(?P<path>.*)$', 'django.views.static.serve',
|
||||||
{'document_root': settings.MEDIA_ROOT}),
|
{'document_root': settings.MEDIA_ROOT}),
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ Define the views for the Django MVC
|
|||||||
from django import template
|
from django import template
|
||||||
from django.views import generic
|
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()
|
register = template.Library()
|
||||||
|
|
||||||
|
|
||||||
@@ -19,7 +19,7 @@ class HomeView(generic.ListView):
|
|||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context = super(HomeView, self).get_context_data(**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). \
|
context['parent_categories'] = Category.objects.filter(parent=None). \
|
||||||
filter(active=True).order_by('name')
|
filter(active=True).order_by('name')
|
||||||
return context
|
return context
|
||||||
@@ -37,7 +37,15 @@ class DetailView(generic.DetailView):
|
|||||||
|
|
||||||
def get_context_data(self, **kwargs):
|
def get_context_data(self, **kwargs):
|
||||||
context = super(DetailView, self).get_context_data(**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). \
|
context['parent_categories'] = Category.objects.filter(parent=None). \
|
||||||
filter(active=True).order_by('name')
|
filter(active=True).order_by('name')
|
||||||
return context
|
return context
|
||||||
|
|
||||||
|
class MineralDetailView(DetailView):
|
||||||
|
"""
|
||||||
|
Add extra functionality for mineral details
|
||||||
|
"""
|
||||||
|
|
||||||
|
model = Mineral
|
||||||
|
template_name = 'three_d_viewer/mineral_detail.html'
|
||||||
Reference in New Issue
Block a user