Initial changes to add an erb101 area of the site
This commit is contained in:
BIN
db.sqlite3
BIN
db.sqlite3
Binary file not shown.
Binary file not shown.
@@ -346,7 +346,7 @@ img.example {
|
||||
padding: 0;
|
||||
}
|
||||
#cssmenu > ul > li.mainitem { /*CUSTOM CLASS TEST*/
|
||||
width: 25%;
|
||||
width: 20%;
|
||||
}
|
||||
#cssmenu > ul > #menu-button {
|
||||
display: none;
|
||||
|
||||
@@ -0,0 +1,77 @@
|
||||
# -*- coding: utf-8 -*-
|
||||
import datetime
|
||||
from south.db import db
|
||||
from south.v2 import SchemaMigration
|
||||
from django.db import models
|
||||
|
||||
|
||||
class Migration(SchemaMigration):
|
||||
|
||||
def forwards(self, orm):
|
||||
# Adding field 'Sample.erb101_sample'
|
||||
db.add_column(u'three_d_viewer_sample', 'erb101_sample',
|
||||
self.gf('django.db.models.fields.BooleanField')(default=False),
|
||||
keep_default=False)
|
||||
|
||||
|
||||
def backwards(self, orm):
|
||||
# Deleting field 'Sample.erb101_sample'
|
||||
db.delete_column(u'three_d_viewer_sample', 'erb101_sample')
|
||||
|
||||
|
||||
models = {
|
||||
u'three_d_viewer.answer': {
|
||||
'Meta': {'object_name': 'Answer'},
|
||||
'correct': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'question': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'answers'", 'to': u"orm['three_d_viewer.Question']"}),
|
||||
'text': ('django.db.models.fields.CharField', [], {'max_length': '2000'})
|
||||
},
|
||||
u'three_d_viewer.category': {
|
||||
'Meta': {'object_name': 'Category'},
|
||||
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'children'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['three_d_viewer.Category']"})
|
||||
},
|
||||
u'three_d_viewer.glossaryentry': {
|
||||
'Meta': {'object_name': 'GlossaryEntry'},
|
||||
'definition': ('django.db.models.fields.CharField', [], {'max_length': '2000'}),
|
||||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '200'})
|
||||
},
|
||||
u'three_d_viewer.mineral': {
|
||||
'Meta': {'object_name': 'Mineral', '_ormbases': [u'three_d_viewer.Sample']},
|
||||
'chemical_formula': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
|
||||
'cleavage_fracture': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
|
||||
'colour': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
|
||||
'crystallography': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
|
||||
'habit': ('django.db.models.fields.CharField', [], {'max_length': '1000', 'blank': 'True'}),
|
||||
'hardness': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '3', 'decimal_places': '2', 'blank': 'True'}),
|
||||
'identifying_features': ('django.db.models.fields.CharField', [], {'max_length': '1000', 'blank': 'True'}),
|
||||
'lustre': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'}),
|
||||
'occurance': ('django.db.models.fields.CharField', [], {'max_length': '1000', 'blank': 'True'}),
|
||||
u'sample_ptr': ('django.db.models.fields.related.OneToOneField', [], {'to': u"orm['three_d_viewer.Sample']", 'unique': 'True', 'primary_key': 'True'}),
|
||||
'specific_gravity': ('django.db.models.fields.DecimalField', [], {'null': 'True', 'max_digits': '4', 'decimal_places': '2', 'blank': 'True'}),
|
||||
'streak': ('django.db.models.fields.CharField', [], {'max_length': '100', 'blank': 'True'})
|
||||
},
|
||||
u'three_d_viewer.question': {
|
||||
'Meta': {'object_name': 'Question'},
|
||||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'sample': ('django.db.models.fields.related.ForeignKey', [], {'related_name': "'questions'", 'to': u"orm['three_d_viewer.Sample']"}),
|
||||
'text': ('django.db.models.fields.CharField', [], {'max_length': '2000'})
|
||||
},
|
||||
u'three_d_viewer.sample': {
|
||||
'Meta': {'object_name': 'Sample'},
|
||||
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True'}),
|
||||
'description': ('django.db.models.fields.CharField', [], {'default': "''", 'max_length': '2000', 'null': 'True', 'blank': 'True'}),
|
||||
'erb101_sample': ('django.db.models.fields.BooleanField', [], {'default': 'False'}),
|
||||
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
|
||||
'model_filename': ('django.db.models.fields.CharField', [], {'max_length': '1000'}),
|
||||
'name': ('django.db.models.fields.CharField', [], {'max_length': '100'}),
|
||||
'parent': ('django.db.models.fields.related.ForeignKey', [], {'blank': 'True', 'related_name': "'samples'", 'null': 'True', 'on_delete': 'models.SET_NULL', 'to': u"orm['three_d_viewer.Category']"}),
|
||||
'viewed_count': ('django.db.models.fields.IntegerField', [], {'default': '0'})
|
||||
}
|
||||
}
|
||||
|
||||
complete_apps = ['three_d_viewer']
|
||||
@@ -43,6 +43,10 @@ class Category(CommonInfo):
|
||||
def active_samples(self):
|
||||
return self.samples.select_subclasses(Sample, Mineral).filter(active=True).order_by('name')
|
||||
|
||||
@property
|
||||
def active_101_samples(self):
|
||||
return self.samples.select_subclasses(Sample, Mineral).filter(active=True).filter(erb101_sample=True).order_by('name')
|
||||
|
||||
class Meta:
|
||||
verbose_name_plural = "Categories"
|
||||
|
||||
@@ -59,6 +63,7 @@ class Sample(CommonInfo):
|
||||
on_delete=models.SET_NULL,
|
||||
related_name="samples")
|
||||
viewed_count = models.IntegerField(default=0)
|
||||
erb101_sample = models.BooleanField(default=False)
|
||||
|
||||
#Use the inheritance manager for handling subclasses
|
||||
objects = InheritanceManager()
|
||||
|
||||
@@ -385,7 +385,7 @@ img.example {
|
||||
padding: 0;
|
||||
}
|
||||
#cssmenu > ul > li.mainitem { /*CUSTOM CLASS TEST*/
|
||||
width: 25%;
|
||||
width: 20%;
|
||||
}
|
||||
#cssmenu > ul > #menu-button {
|
||||
display: none;
|
||||
|
||||
@@ -18,12 +18,15 @@
|
||||
<div id="container">
|
||||
<div id="header">
|
||||
<div id="logo">
|
||||
<img src={% static "three_d_viewer/images/logo_main.png" %} class="logoImage">
|
||||
<a href="{% url 'three_d_viewer:home' %}"><img src={% static "three_d_viewer/images/logo_main.png" %} class="logoImage"></a>
|
||||
</div><!-- CLOSE LOGO !-->
|
||||
<div id="menuContainer">
|
||||
<div id='cssmenu'>
|
||||
<ul>
|
||||
{% block home %}
|
||||
<li class='active mainitem'><a href="{% url 'three_d_viewer:home' %}"><span>Home</span></a></li>
|
||||
<li class='active mainitem'><a href="{% url 'three_d_viewer:erb101_home' %}"><span>ERB101</span></a></li>
|
||||
{% endblock %}
|
||||
<li class='has-sub mainitem'><a href='#'><span>Minerals</span></a>
|
||||
<ul>
|
||||
<li class='has-sub'><a><span>Theory</span></a>
|
||||
@@ -33,12 +36,12 @@
|
||||
<li class='last'><a href="{% url 'three_d_viewer:theory_bowen' %}"><span>Bowen's reaction series</span></a></li>
|
||||
</ul>
|
||||
</li>
|
||||
<li><a href="{% url 'three_d_viewer:minerals_practice' %}"><span>Practice</span></a></li>
|
||||
{% block mineral_practice %}<li><a href="{% url 'three_d_viewer:minerals_practice' %}"><span>Practice</span></a></li>{% endblock %}
|
||||
<!--<li class='last'><a href="{% url 'three_d_viewer:minerals_selftest' %}"><span>Self Test</span></a></li>!-->
|
||||
</ul>
|
||||
</li>
|
||||
<li class="mainitem"><a href="{% url 'three_d_viewer:rocks_practice' %}"><span>Rocks</span></a></li>
|
||||
<li class='last mainitem'><a href="{% url 'three_d_viewer:fossil_practice' %}"><span>Fossils</span></a></li>
|
||||
{% block rock_practice %}<li class="mainitem"><a href="{% url 'three_d_viewer:rocks_practice' %}"><span>Rocks</span></a></li>{% endblock %}
|
||||
{% block fossil_menu %}<li class='last mainitem'><a href="{% url 'three_d_viewer:fossil_practice' %}"><span>Fossils</span></a></li>{% endblock %}
|
||||
</ul>
|
||||
</div><!-- CLOSE CSSMENU !-->
|
||||
</div><!-- CLOSE MENUCONTAINER !-->
|
||||
|
||||
17
three_d_viewer/templates/three_d_viewer/erb101/base.html
Normal file
17
three_d_viewer/templates/three_d_viewer/erb101/base.html
Normal file
@@ -0,0 +1,17 @@
|
||||
{% extends "three_d_viewer/base.html" %}
|
||||
|
||||
{% block home %}
|
||||
<li class='active mainitem'><a href="{% url 'three_d_viewer:erb101_home' %}"><span>ERB101 Home</span></a></li>
|
||||
{% endblock %}
|
||||
|
||||
{% block mineral_practice %}
|
||||
<li><a href="{% url 'three_d_viewer:erb101_minerals_practice' %}"><span>Practice</span></a></li>
|
||||
{% endblock %}
|
||||
|
||||
|
||||
{% block rock_practice %}
|
||||
<li class="mainitem"><a href="{% url 'three_d_viewer:erb101_rocks_practice' %}"><span>Rocks</span></a></li>
|
||||
{% endblock %}
|
||||
|
||||
{% block fossil_menu %}
|
||||
{% endblock %}
|
||||
11
three_d_viewer/templates/three_d_viewer/erb101/home.html
Normal file
11
three_d_viewer/templates/three_d_viewer/erb101/home.html
Normal file
@@ -0,0 +1,11 @@
|
||||
{% extends "three_d_viewer/erb101/base.html" %}
|
||||
|
||||
{% block content %}
|
||||
<div id="pushDownTwo"></div>
|
||||
<div id="mainText">
|
||||
<h3 class="headings">ERB101 home page</h3><br><br>
|
||||
<p>
|
||||
blah blah blah
|
||||
</p>
|
||||
</div>
|
||||
{% endblock %}
|
||||
@@ -0,0 +1,3 @@
|
||||
{% extends "three_d_viewer/rock_practice.html" %}
|
||||
|
||||
{% block base %}{% extends "three_d_viewer/erb101/base.html" %}{% endblock %}
|
||||
@@ -0,0 +1,21 @@
|
||||
{% block content %}
|
||||
<div id="sidebar">
|
||||
<div id='mineralMenu'>
|
||||
<ul>
|
||||
<li class="has-sub mainitem"><a href="#">{% block menu_header %}Select a sample{% endblock %}</a>
|
||||
<ul>
|
||||
{% for sample in active_samples %}
|
||||
<li><a href={% url sample.url sample.id %}>{{ sample.name }}</a></li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</li>
|
||||
</ul>
|
||||
</div><!-- close MINERALMENU !-->
|
||||
{% block sample_detail %}
|
||||
{% endblock %}
|
||||
</div>
|
||||
|
||||
{% block 3dcontent %}
|
||||
{% endblock %}
|
||||
|
||||
{% endblock %}
|
||||
@@ -1,4 +1,4 @@
|
||||
{% extends "three_d_viewer/base.html" %}
|
||||
{% extends base_template %}
|
||||
|
||||
{% block content %}
|
||||
<div id="sidebar">
|
||||
|
||||
@@ -19,6 +19,10 @@ urlpatterns = patterns(
|
||||
url(r'^fossils/(?P<pk>\d+)/$', views.FossilDetailView.as_view(), name='fossil_detail'),
|
||||
url(r'^glossary/$', views.GlossaryView.as_view(), name='glossary'),
|
||||
url(r'^acknowledgements/$', generic.TemplateView.as_view(template_name='three_d_viewer/acknowledgements.html'), name='acknowledgements'),
|
||||
url(r'^erb101/$', views.ERB101HomeView.as_view(), name='erb101_home'),
|
||||
url(r'^erb101/$', generic.TemplateView.as_view(template_name="three_d_viewer/erb101/home.html"), name='erb101_home'),
|
||||
url(r'^erb101_rock_practice/$', views.ERB101RockPracticeView.as_view(), name='erb101_rocks_practice'),
|
||||
url(r'^erb101_minerals_practice/$', views.ERB101MineralPracticeView.as_view(), name='erb101_minerals_practice'),
|
||||
url(r'^media/(?P<path>.*)$', 'django.views.static.serve',
|
||||
{'document_root': settings.MEDIA_ROOT}),
|
||||
)
|
||||
|
||||
@@ -86,6 +86,7 @@ class RockPracticeView(generic.ListView):
|
||||
result = chain(result, child.active_samples)
|
||||
|
||||
context['active_samples'] = sorted(result, key=attrgetter('name'))
|
||||
context['base_template'] = 'three_d_viewer/base.html'
|
||||
return context
|
||||
|
||||
class RockDetailView(generic.DetailView):
|
||||
@@ -105,6 +106,7 @@ class RockDetailView(generic.DetailView):
|
||||
result = chain(result, child.active_samples)
|
||||
|
||||
context['active_samples'] = sorted(result, key=attrgetter('name'))
|
||||
context['base_template'] = 'three_d_viewer/base.html'
|
||||
return context
|
||||
|
||||
def get_object(self, queryset=None):
|
||||
@@ -165,3 +167,54 @@ class GlossaryView(generic.ListView):
|
||||
context = super(GlossaryView, self).get_context_data(**kwargs)
|
||||
context['entries'] = GlossaryEntry.objects.all().order_by("name")
|
||||
return context
|
||||
|
||||
class ERB101HomeView(generic.ListView):
|
||||
"""
|
||||
Show the home page
|
||||
"""
|
||||
|
||||
template_name = 'three_d_viewer/erb101/home.html'
|
||||
model = Sample
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(ERB101HomeView, self).get_context_data(**kwargs)
|
||||
context['active_samples'] = Sample.objects.select_subclasses(Mineral).filter(active=True).filter(erb101_sample=True).order_by('name')
|
||||
context['parent_categories'] = Category.objects.filter(parent=None). \
|
||||
filter(active=True).order_by('name')
|
||||
return context
|
||||
|
||||
class ERB101MineralPracticeView(generic.ListView):
|
||||
model = Mineral
|
||||
template_name = 'three_d_viewer/minerals_practice.html'
|
||||
|
||||
def get_context_data(self, **kwargs):
|
||||
context = super(ERB101MineralPracticeView, self).get_context_data(**kwargs)
|
||||
cat = Category.objects.get(name='Minerals')
|
||||
result = cat.active_101_samples
|
||||
|
||||
for child in cat.active_children:
|
||||
result = chain(result, child.active_101_samples)
|
||||
|
||||
context['active_samples'] = sorted(result, key=attrgetter('name'))
|
||||
return context
|
||||
|
||||
class ERB101RockPracticeView(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(ERB101RockPracticeView, self).get_context_data(**kwargs)
|
||||
cat = Category.objects.get(name='Rocks')
|
||||
result = cat.active_101_samples
|
||||
|
||||
for child in cat.active_children:
|
||||
result = chain(result, child.active_101_samples)
|
||||
|
||||
context['active_samples'] = sorted(result, key=attrgetter('name'))
|
||||
context['base_template'] = 'three_d_viewer/erb101/base.html'
|
||||
return context
|
||||
|
||||
Reference in New Issue
Block a user