changing namespace and urls

This commit is contained in:
2013-07-27 22:23:05 +10:00
parent dd8614fdff
commit 08e36dacb1
19 changed files with 68 additions and 94 deletions

View File

@@ -0,0 +1,5 @@
from django.contrib import admin
from three_d_viewer.models import Category, Sample
admin.site.register(Category)
admin.site.register(Sample)

View File

@@ -0,0 +1,57 @@
# -*- 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 'Category'
db.create_table(u'three_d_viewer_category', (
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('name', self.gf('django.db.models.fields.CharField')(max_length=100)),
('active', self.gf('django.db.models.fields.BooleanField')(default=True)),
('parent', self.gf('django.db.models.fields.related.ForeignKey')(blank=True, related_name='children', null=True, on_delete=models.SET_NULL, to=orm['three_d_viewer.Category'])),
))
db.send_create_signal(u'three_d_viewer', ['Category'])
# Adding model 'Sample'
db.create_table(u'three_d_viewer_sample', (
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('name', self.gf('django.db.models.fields.CharField')(max_length=100)),
('active', self.gf('django.db.models.fields.BooleanField')(default=True)),
('model_filename', self.gf('django.db.models.fields.CharField')(max_length=1000)),
('parent', self.gf('django.db.models.fields.related.ForeignKey')(to=orm['three_d_viewer.Category'], null=True, on_delete=models.SET_NULL, blank=True)),
))
db.send_create_signal(u'three_d_viewer', ['Sample'])
def backwards(self, orm):
# Deleting model 'Category'
db.delete_table(u'three_d_viewer_category')
# Deleting model 'Sample'
db.delete_table(u'three_d_viewer_sample')
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'}),
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']

View File

@@ -0,0 +1,24 @@
from django.db import models
class CommonInfo(models.Model):
name = models.CharField(max_length=100)
active = models.BooleanField(default=True)
def __unicode__(self):
return self.name
class Meta:
abstract = True
class Category(CommonInfo):
parent = models.ForeignKey('self', blank=True, null=True,
on_delete=models.SET_NULL,
related_name='children')
class Sample(CommonInfo):
model_filename = models.CharField(max_length=1000)
parent = models.ForeignKey(Category, blank=True, null=True,
on_delete=models.SET_NULL)

View File

@@ -0,0 +1,7 @@
<ul>
{% for child in children %}
<li> <a href="{{ child.get_absolute_url }}">{{ child }}</a></li>
{% child.children.count > 0 %}
{% children_list child %}
{% endfor %}
</ul>

View File

@@ -0,0 +1 @@
{% children_tag parent %}

View File

@@ -0,0 +1 @@
<h1>{{ sample.name }}</h1>

View File

@@ -0,0 +1,9 @@
{% if active_samples %}
<ul>
{% for sample in active_samples %}
<li><a href="{% url 'three_d_viewer:detail' sample.id %}">{{ sample.name }}</a></li>
{% endfor %}
</ul>
{% else %}
<p>No samples are available.</p>
{% endif %}

View File

@@ -0,0 +1,16 @@
"""
This file demonstrates writing tests using the unittest module. These will pass
when you run "manage.py test".
Replace this with more appropriate tests for your application.
"""
from django.test import TestCase
class SimpleTest(TestCase):
def test_basic_addition(self):
"""
Tests that 1 + 1 always equals 2.
"""
self.assertEqual(1 + 1, 2)

View File

@@ -0,0 +1,9 @@
from django.conf.urls import patterns, url
from three_d_viewer import views
urlpatterns = patterns('',
url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^(?P<pk>\d+)/$', views.DetailView.as_view(), name='detail'),
)

View File

@@ -0,0 +1,31 @@
from django import template
from django.shortcuts import get_object_or_404, render
from django.http import HttpResponseRedirect, HttpResponse
from django.core.urlresolvers import reverse
from django.views import generic
from three_d_viewer.models import Sample
register = template.Library()
@register.inclusion_tag('children.html')
def children_tag(category):
children = category.children.all()
return {'children': children}
class IndexView(generic.ListView):
template_name = 'three_d_viewer/index.html'
context_object_name = 'active_samples'
def get_queryset(self):
"""
Return the last five published polls (not including those set to be
published in the future).
"""
return Sample.objects.filter(active=True)
class DetailView(generic.DetailView):
model = Sample
template_name = 'three_d_viewer/detail.html'