From c7e9bcd8660e56596bdd0576627ef54163de0533 Mon Sep 17 00:00:00 2001 From: Shane Frischkorn Date: Mon, 24 Feb 2014 13:05:21 +1000 Subject: [PATCH] Added Rock and Fossil pages --- .idea/dataSources.xml | 3 +- .idea/misc.xml | 2 +- .idea/rockviewer.iml | 6 +- .idea/workspace.xml | 606 ++++++++++-------- db.sqlite3 | Bin 172032 -> 172032 bytes three_d_viewer/models.py | 51 +- .../templates/three_d_viewer/base.html | 4 +- .../three_d_viewer/fossil_detail.html | 35 + .../three_d_viewer/fossil_practice.html | 3 + .../three_d_viewer/mineral_detail.html | 391 +---------- .../three_d_viewer/minerals_practice.html | 24 +- .../templates/three_d_viewer/rock_detail.html | 35 + .../three_d_viewer/rock_practice.html | 3 + .../three_d_viewer/sample_detail.html | 406 ++++++++++++ .../three_d_viewer/sample_practice.html | 23 + three_d_viewer/urls.py | 9 +- three_d_viewer/views.py | 101 ++- 17 files changed, 982 insertions(+), 720 deletions(-) create mode 100644 three_d_viewer/templates/three_d_viewer/fossil_detail.html create mode 100644 three_d_viewer/templates/three_d_viewer/fossil_practice.html create mode 100644 three_d_viewer/templates/three_d_viewer/rock_detail.html create mode 100644 three_d_viewer/templates/three_d_viewer/rock_practice.html create mode 100644 three_d_viewer/templates/three_d_viewer/sample_detail.html create mode 100644 three_d_viewer/templates/three_d_viewer/sample_practice.html diff --git a/.idea/dataSources.xml b/.idea/dataSources.xml index 95d82fc..744b0cb 100644 --- a/.idea/dataSources.xml +++ b/.idea/dataSources.xml @@ -2,8 +2,9 @@ + sqlite.xerial org.sqlite.JDBC - jdbc:sqlite:$PROJECT_DIR$/db.sqlite3 + jdbc:sqlite:H:\GitHub\rockviewer\db.sqlite3 file://$USER_HOME$/.PyCharm30/config/jdbc-drivers/xerial-sqlite-license.txt diff --git a/.idea/misc.xml b/.idea/misc.xml index 21955c8..8823786 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,5 +1,5 @@ - + diff --git a/.idea/rockviewer.iml b/.idea/rockviewer.iml index 51ac604..acd6e51 100644 --- a/.idea/rockviewer.iml +++ b/.idea/rockviewer.iml @@ -11,7 +11,7 @@ - + @@ -20,9 +20,5 @@ - - diff --git a/.idea/workspace.xml b/.idea/workspace.xml index aebe4b0..dbcce07 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -2,11 +2,16 @@ - - + + + + + + + @@ -35,104 +40,130 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -153,19 +184,26 @@ - @@ -193,6 +231,7 @@ + @@ -339,78 +378,15 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + @@ -429,6 +405,7 @@ + @@ -517,27 +494,7 @@ - + + - - + + - + - - + - + @@ -713,58 +694,103 @@ - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -772,26 +798,6 @@ - - - - - - - - - - - - - - - - - - - - @@ -813,20 +819,110 @@ - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/db.sqlite3 b/db.sqlite3 index e798f78f1efed868aedec95de47e43f82a4c835a..568e4ca21b3c9a3ba9df53ece494fcbfe179d5f9 100644 GIT binary patch delta 271 zcmZoTz}0YoYl1YR+(sGE{emV61_o9}Mph>i4EzuI5AiSNZ{bhncjH&*=iqzEcZzTIWuf delta 142 zcmV;90CE3-zzTrC3XmHC8nGM|zY#JZFfckaGdeLhE;l(jFfcQ-LchW=7zze(01pZd z6b&8>C<`(QJPAe!PzPEDaI;|$R0gwf_LK<<3Jz)j4v!Bb4r;X!0W}VhuqU@_4gs3M w7zz%`01x30!VjYlgb!s8Mh_Self Test -
  • Rocks
  • -
  • Fossils
  • +
  • Rocks
  • +
  • Fossils
  • diff --git a/three_d_viewer/templates/three_d_viewer/fossil_detail.html b/three_d_viewer/templates/three_d_viewer/fossil_detail.html new file mode 100644 index 0000000..5edab8a --- /dev/null +++ b/three_d_viewer/templates/three_d_viewer/fossil_detail.html @@ -0,0 +1,35 @@ +{% extends "three_d_viewer/sample_detail.html" %} + +{% block load %} +function load(){ + window.addEventListener('resize', resizeCanvas, false); + resizeCanvas(); + + var sampleFilename = '{{ sample.model_filename|escapejs }}'; + + if (sampleFilename.trim() == "") + { + document.getElementById("progress").innerHTML = "No model defined!"; + return; + } + + request = new XMLHttpRequest(); + request.open("GET", '{{ MEDIA_URL }}' + sampleFilename, true); + request.overrideMimeType("text/plain; charset=x-user-defined"); + request.onreadystatechange = function(){ + if (this.readyState == 3 || this.readyState == 4){ + document.getElementById("progress").innerHTML = "Downloading... " + + formatNumber(this.responseText.length / 1048576, 2) + " MB"; + } + if (this.readyState == 4 && (this.status == 200 || this.status == 0) ){ + document.getElementById("progress").innerHTML = "Unpacking..."; + setTimeout(loaded, 1); + } + } + request.send(); +} +{% endblock load %} + +{% block menu_header %}Select a Fossil{% endblock %} + + diff --git a/three_d_viewer/templates/three_d_viewer/fossil_practice.html b/three_d_viewer/templates/three_d_viewer/fossil_practice.html new file mode 100644 index 0000000..8a45bac --- /dev/null +++ b/three_d_viewer/templates/three_d_viewer/fossil_practice.html @@ -0,0 +1,3 @@ +{% extends "three_d_viewer/sample_practice.html" %} + +{% block menu_header %}Select a Fossil{% endblock %} \ No newline at end of file diff --git a/three_d_viewer/templates/three_d_viewer/mineral_detail.html b/three_d_viewer/templates/three_d_viewer/mineral_detail.html index 547384d..9c2636c 100644 --- a/three_d_viewer/templates/three_d_viewer/mineral_detail.html +++ b/three_d_viewer/templates/three_d_viewer/mineral_detail.html @@ -1,72 +1,4 @@ -{% extends "three_d_viewer/minerals_practice.html" %} -{% load static %} - -{% block includes %} -{{ block.super }} - - - - - - - - - -{% endblock %} - -{% block loadscript %}"load()"{% endblock %} - -{% block mineral_detail %} +{% block sample_detail %}

    {{ mineral.name }}

    @@ -453,11 +77,4 @@ function resizeCanvas() {

    {{ mineral.occurance }}

    -{% endblock %} - -{% block 3dcontent %} -
    - -

    -
    -{% endblock %} \ No newline at end of file +{% endblock %} \ No newline at end of file diff --git a/three_d_viewer/templates/three_d_viewer/minerals_practice.html b/three_d_viewer/templates/three_d_viewer/minerals_practice.html index a586bb3..1dbadeb 100644 --- a/three_d_viewer/templates/three_d_viewer/minerals_practice.html +++ b/three_d_viewer/templates/three_d_viewer/minerals_practice.html @@ -1,23 +1,3 @@ -{% extends "three_d_viewer/base.html" %} +{% extends "three_d_viewer/sample_practice.html" %} -{% block content %} - - -{% block 3dcontent %} -{% endblock %} - -{% endblock %} \ No newline at end of file +{% block menu_header %}Select a Mineral{% endblock %} \ No newline at end of file diff --git a/three_d_viewer/templates/three_d_viewer/rock_detail.html b/three_d_viewer/templates/three_d_viewer/rock_detail.html new file mode 100644 index 0000000..ea83335 --- /dev/null +++ b/three_d_viewer/templates/three_d_viewer/rock_detail.html @@ -0,0 +1,35 @@ +{% extends "three_d_viewer/sample_detail.html" %} + +{% block load %} +function load(){ + window.addEventListener('resize', resizeCanvas, false); + resizeCanvas(); + + var sampleFilename = '{{ sample.model_filename|escapejs }}'; + + if (sampleFilename.trim() == "") + { + document.getElementById("progress").innerHTML = "No model defined!"; + return; + } + + request = new XMLHttpRequest(); + request.open("GET", '{{ MEDIA_URL }}' + sampleFilename, true); + request.overrideMimeType("text/plain; charset=x-user-defined"); + request.onreadystatechange = function(){ + if (this.readyState == 3 || this.readyState == 4){ + document.getElementById("progress").innerHTML = "Downloading... " + + formatNumber(this.responseText.length / 1048576, 2) + " MB"; + } + if (this.readyState == 4 && (this.status == 200 || this.status == 0) ){ + document.getElementById("progress").innerHTML = "Unpacking..."; + setTimeout(loaded, 1); + } + } + request.send(); +} +{% endblock load %} + +{% block menu_header %}Select a rock{% endblock %} + + diff --git a/three_d_viewer/templates/three_d_viewer/rock_practice.html b/three_d_viewer/templates/three_d_viewer/rock_practice.html new file mode 100644 index 0000000..9a85982 --- /dev/null +++ b/three_d_viewer/templates/three_d_viewer/rock_practice.html @@ -0,0 +1,3 @@ +{% extends "three_d_viewer/sample_practice.html" %} + +{% block menu_header %}Select a Rock{% endblock %} \ No newline at end of file diff --git a/three_d_viewer/templates/three_d_viewer/sample_detail.html b/three_d_viewer/templates/three_d_viewer/sample_detail.html new file mode 100644 index 0000000..70eb36c --- /dev/null +++ b/three_d_viewer/templates/three_d_viewer/sample_detail.html @@ -0,0 +1,406 @@ +{% extends "three_d_viewer/sample_practice.html" %} +{% load static %} + +{% block includes %} +{{ block.super }} + + + + + + + + + +{% endblock %} + +{% block loadscript %}"load()"{% endblock %} + +{% block sample_detail %} + {% endblock %} + +{% block 3dcontent %} +
    + +

    +
    +{% endblock %} \ No newline at end of file diff --git a/three_d_viewer/templates/three_d_viewer/sample_practice.html b/three_d_viewer/templates/three_d_viewer/sample_practice.html new file mode 100644 index 0000000..7f01037 --- /dev/null +++ b/three_d_viewer/templates/three_d_viewer/sample_practice.html @@ -0,0 +1,23 @@ +{% extends "three_d_viewer/base.html" %} + +{% block content %} + + +{% block 3dcontent %} +{% endblock %} + +{% endblock %} \ No newline at end of file diff --git a/three_d_viewer/urls.py b/three_d_viewer/urls.py index da55011..5918a3e 100644 --- a/three_d_viewer/urls.py +++ b/three_d_viewer/urls.py @@ -9,11 +9,12 @@ urlpatterns = patterns( url(r'^$', generic.TemplateView.as_view(template_name="three_d_viewer/home.html"), name='home'), url(r'^minerals_theory/$', generic.TemplateView.as_view(template_name="three_d_viewer/minerals_theory.html"), name='minerals_theory'), url(r'^minerals_practice/$', views.MineralPracticeView.as_view(template_name="three_d_viewer/minerals_practice.html"), name='minerals_practice'), - url(r'^minerals_selftest/$', generic.TemplateView.as_view(template_name="three_d_viewer/minerals_selftest.html"), name='minerals_selftest'), url(r'^minerals/(?P\d+)/$', views.MineralDetailView.as_view(), name='mineral_detail'), - #url(r'^minerals/(?P\d+)/$', views.MineralPracticeView.as_view(), name='mineral_practice'), - #url(r'^(?P\d+)/$', views.DetailView.as_view(), name='detail'), - #url(r'^minerals/(?P\d+)/$', views.MineralDetailView.as_view(), name='mineral_detail'), + url(r'^minerals_selftest/$', generic.TemplateView.as_view(template_name="three_d_viewer/minerals_selftest.html"), name='minerals_selftest'), + url(r'^rock_practice/$', views.RockPracticeView.as_view(), name='rocks_practice'), + url(r'^rocks/(?P\d+)/$', views.RockDetailView.as_view(), name='rock_detail'), + url(r'^fossil_practice/$', views.FossilPracticeView.as_view(), name='fossil_practice'), + url(r'^fossils/(?P\d+)/$', views.FossilDetailView.as_view(), name='fossil_detail'), url(r'^media/(?P.*)$', 'django.views.static.serve', {'document_root': settings.MEDIA_ROOT}), ) diff --git a/three_d_viewer/views.py b/three_d_viewer/views.py index 7b2b547..5c3d860 100644 --- a/three_d_viewer/views.py +++ b/three_d_viewer/views.py @@ -27,7 +27,7 @@ class HomeView(generic.ListView): return context class MineralPracticeView(generic.ListView): - model = Sample + model = Mineral template_name = 'three_d_viewer/minerals_practice.html' def get_context_data(self, **kwargs): @@ -41,23 +41,6 @@ class MineralPracticeView(generic.ListView): context['active_samples'] = sorted(result, key=attrgetter('name')) return context -class DetailView(generic.DetailView): - """ - Define the view to view the 3D model of a sample - """ - - model = Sample - template_name = 'three_d_viewer/detail.html' - parent_categories = Category.objects.filter(parent=None). \ - filter(active=True).order_by("name") - - def get_context_data(self, **kwargs): - context = super(DetailView, self).get_context_data(**kwargs) - 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(generic.DetailView): """ Add extra functionality for mineral details @@ -69,17 +52,87 @@ class MineralDetailView(generic.DetailView): parent_categories = Category.objects.filter(parent=None). \ filter(active=True).order_by("name") - #def get_context_data(self, **kwargs): - # context = super(MineralDetailView, self).get_context_data(**kwargs) - # 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 def get_context_data(self, **kwargs): context = super(MineralDetailView, self).get_context_data(**kwargs) cat = Category.objects.get(name='Minerals') result = cat.active_samples + for child in cat.active_children: + result = chain(result, child.active_samples) + + context['active_samples'] = sorted(result, key=attrgetter('name')) + return context + +class RockPracticeView(generic.ListView): + model = Sample + template_name = 'three_d_viewer/rock_practice.html' + + parent_categories = Category.objects.filter(parent=None). \ + filter(active=True).order_by("name") + + + def get_context_data(self, **kwargs): + context = super(RockPracticeView, self).get_context_data(**kwargs) + cat = Category.objects.get(name='Rocks') + result = cat.active_samples + + for child in cat.active_children: + result = chain(result, child.active_samples) + + context['active_samples'] = sorted(result, key=attrgetter('name')) + return context + +class RockDetailView(generic.DetailView): + model = Sample + template_name = 'three_d_viewer/rock_detail.html' + + parent_categories = Category.objects.filter(parent=None). \ + filter(active=True).order_by("name") + + + def get_context_data(self, **kwargs): + context = super(RockDetailView, self).get_context_data(**kwargs) + cat = Category.objects.get(name='Rocks') + result = cat.active_samples + + for child in cat.active_children: + result = chain(result, child.active_samples) + + context['active_samples'] = sorted(result, key=attrgetter('name')) + return context + +class FossilPracticeView(generic.ListView): + model = Sample + template_name = 'three_d_viewer/fossil_practice.html' + + parent_categories = Category.objects.filter(parent=None). \ + filter(active=True).order_by("name") + + + def get_context_data(self, **kwargs): + context = super(FossilPracticeView, self).get_context_data(**kwargs) + cat = Category.objects.get(name='Fossils') + result = cat.active_samples + + for child in cat.active_children: + result = chain(result, child.active_samples) + + context['active_samples'] = sorted(result, key=attrgetter('name')) + return context + +class FossilDetailView(generic.DetailView): + model = Sample + template_name = 'three_d_viewer/fossil_detail.html' + + parent_categories = Category.objects.filter(parent=None). \ + filter(active=True).order_by("name") + + + def get_context_data(self, **kwargs): + context = super(FossilDetailView, self).get_context_data(**kwargs) + cat = Category.objects.get(name='Fossils') + result = cat.active_samples + for child in cat.active_children: result = chain(result, child.active_samples)