diff --git a/project_directory/db.sqlite3 b/project_directory/db.sqlite3 index 2cbb5dd..3642fec 100644 Binary files a/project_directory/db.sqlite3 and b/project_directory/db.sqlite3 differ diff --git a/project_directory/three_d_viewer/admin.py b/project_directory/three_d_viewer/admin.py index b8930a3..d98e024 100644 --- a/project_directory/three_d_viewer/admin.py +++ b/project_directory/three_d_viewer/admin.py @@ -1,5 +1,7 @@ from django.contrib import admin -from three_d_viewer.models import Category, Sample +from three_d_viewer.models import Category, Sample, Question, Answer admin.site.register(Category) admin.site.register(Sample) +admin.site.register(Question) +admin.site.register(Answer) diff --git a/project_directory/three_d_viewer/migrations/0002_auto__add_field_sample_description.py b/project_directory/three_d_viewer/migrations/0002_auto__add_field_sample_description.py new file mode 100644 index 0000000..6e130a9 --- /dev/null +++ b/project_directory/three_d_viewer/migrations/0002_auto__add_field_sample_description.py @@ -0,0 +1,41 @@ +# -*- 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.description' + db.add_column(u'three_d_viewer_sample', 'description', + self.gf('django.db.models.fields.CharField')(default='', max_length=2000, null=True, blank=True), + keep_default=False) + + + def backwards(self, orm): + # Deleting field 'Sample.description' + db.delete_column(u'three_d_viewer_sample', 'description') + + + models = { + 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.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', [], {'to': u"orm['three_d_viewer.Category']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}) + } + } + + complete_apps = ['three_d_viewer'] \ No newline at end of file diff --git a/project_directory/three_d_viewer/migrations/0003_auto__add_question__add_answer.py b/project_directory/three_d_viewer/migrations/0003_auto__add_question__add_answer.py new file mode 100644 index 0000000..9b0e694 --- /dev/null +++ b/project_directory/three_d_viewer/migrations/0003_auto__add_question__add_answer.py @@ -0,0 +1,69 @@ +# -*- 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 'Question' + db.create_table(u'three_d_viewer_question', ( + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('text', self.gf('django.db.models.fields.CharField')(max_length=2000)), + ('sample', self.gf('django.db.models.fields.related.ForeignKey')(related_name='questions', to=orm['three_d_viewer.Sample'])), + )) + db.send_create_signal(u'three_d_viewer', ['Question']) + + # Adding model 'Answer' + db.create_table(u'three_d_viewer_answer', ( + (u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)), + ('text', self.gf('django.db.models.fields.CharField')(max_length=2000)), + ('correct', self.gf('django.db.models.fields.BooleanField')(default=False)), + ('question', self.gf('django.db.models.fields.related.ForeignKey')(related_name='answers', to=orm['three_d_viewer.Question'])), + )) + db.send_create_signal(u'three_d_viewer', ['Answer']) + + + def backwards(self, orm): + # Deleting model 'Question' + db.delete_table(u'three_d_viewer_question') + + # Deleting model 'Answer' + db.delete_table(u'three_d_viewer_answer') + + + 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.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', [], {'to': u"orm['three_d_viewer.Category']", 'null': 'True', 'on_delete': 'models.SET_NULL', 'blank': 'True'}) + } + } + + complete_apps = ['three_d_viewer'] \ No newline at end of file diff --git a/project_directory/three_d_viewer/models.py b/project_directory/three_d_viewer/models.py index 018c8f7..6fa6fb6 100644 --- a/project_directory/three_d_viewer/models.py +++ b/project_directory/three_d_viewer/models.py @@ -20,5 +20,25 @@ class Category(CommonInfo): class Sample(CommonInfo): model_filename = models.CharField(max_length=1000) + description = models.CharField(max_length=2000, default='', blank=True, null=True) parent = models.ForeignKey(Category, blank=True, null=True, on_delete=models.SET_NULL) + + +class Question(models.Model): + text = models.CharField(max_length=2000) + sample = models.ForeignKey(Sample, related_name='questions') + + def correct_answers(self): + return self.answers.filter(correct = True) + + def __unicode__(self): + return self.text + +class Answer(models.Model): + text = models.CharField(max_length=2000) + correct = models.BooleanField(default=False) + question = models.ForeignKey(Question, related_name='answers') + + def __unicode__(self): + return self.text diff --git a/project_directory/three_d_viewer/templates/three_d_viewer/detail.html b/project_directory/three_d_viewer/templates/three_d_viewer/detail.html index 158c9fd..83d15a6 100644 --- a/project_directory/three_d_viewer/templates/three_d_viewer/detail.html +++ b/project_directory/three_d_viewer/templates/three_d_viewer/detail.html @@ -3,7 +3,7 @@