diff --git a/db.sqlite3 b/db.sqlite3 index c29f708..b6ecf4a 100644 Binary files a/db.sqlite3 and b/db.sqlite3 differ diff --git a/three_d_viewer/admin.py b/three_d_viewer/admin.py index bf974a8..79016a1 100644 --- a/three_d_viewer/admin.py +++ b/three_d_viewer/admin.py @@ -3,10 +3,11 @@ Configuration for the Django admin site """ from django.contrib import admin -from three_d_viewer.models import Category, Sample, Question, Answer, Mineral +from three_d_viewer.models import Category, Sample, Question, Answer, Mineral, GlossaryEntry admin.site.register(Category) admin.site.register(Sample) admin.site.register(Question) admin.site.register(Answer) admin.site.register(Mineral) +admin.site.register(GlossaryEntry) diff --git a/three_d_viewer/migrations/0007_auto__add_glossaryentry.py b/three_d_viewer/migrations/0007_auto__add_glossaryentry.py new file mode 100644 index 0000000..13b5d01 --- /dev/null +++ b/three_d_viewer/migrations/0007_auto__add_glossaryentry.py @@ -0,0 +1,78 @@ +# -*- 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 model 'GlossaryEntry' + db.create_table(u'three_d_viewer_glossaryentry', ( + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('name', self.gf('django.db.models.fields.CharField')(max_length=200)), + ('definition', self.gf('django.db.models.fields.CharField')(max_length=2000)), + )) + db.send_create_signal(u'three_d_viewer', ['GlossaryEntry']) + + + def backwards(self, orm): + # Deleting model 'GlossaryEntry' + db.delete_table(u'three_d_viewer_glossaryentry') + + + 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'}), + 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']"}) + } + } + + complete_apps = ['three_d_viewer'] \ No newline at end of file diff --git a/three_d_viewer/models.py b/three_d_viewer/models.py index bb97ec9..587cd71 100644 --- a/three_d_viewer/models.py +++ b/three_d_viewer/models.py @@ -43,6 +43,9 @@ class Category(CommonInfo): def active_samples(self): return self.samples.select_subclasses(Sample, Mineral).filter(active=True).order_by('name') + class Meta: + verbose_name_plural = "Categories" + class Sample(CommonInfo): """ @@ -135,3 +138,16 @@ class Answer(models.Model): def __unicode__(self): return self.text + +class GlossaryEntry(models.Model): + """ + A glossary entry + """ + name = models.CharField(max_length=200) + definition = models.CharField(max_length=2000) + + def __unicode__(self): + return self.name + + class Meta: + verbose_name_plural = "Glossary Entries" diff --git a/three_d_viewer/templates/three_d_viewer/acknowledgements.html b/three_d_viewer/templates/three_d_viewer/acknowledgements.html new file mode 100644 index 0000000..59c605d --- /dev/null +++ b/three_d_viewer/templates/three_d_viewer/acknowledgements.html @@ -0,0 +1,10 @@ +{% extends "three_d_viewer/base.html" %} + +{% block content %} +
+
+

Acknowledgements



+ 3DVOL is funded by the QUT Teaching and Learning Unit and the School of Earth, Environmental, and Biological Sciences. QUT High Performance Computing provides technical support. +

+
+{% endblock %} \ No newline at end of file diff --git a/three_d_viewer/templates/three_d_viewer/base.html b/three_d_viewer/templates/three_d_viewer/base.html index dc40b7e..aeb7f33 100644 --- a/three_d_viewer/templates/three_d_viewer/base.html +++ b/three_d_viewer/templates/three_d_viewer/base.html @@ -26,11 +26,11 @@
  • Home
  • Minerals