diff --git a/db.sqlite3 b/db.sqlite3 index 82f9ed3..2117fe5 100644 Binary files a/db.sqlite3 and b/db.sqlite3 differ diff --git a/jci/admin.py b/jci/admin.py index ec1e801..54ef546 100644 --- a/jci/admin.py +++ b/jci/admin.py @@ -1,16 +1,17 @@ from django.contrib import admin -from .models import Goal, Section, Standard +from .models import Headline, Section, Standard -class GoalAdmin(admin.ModelAdmin): - list_display = ('__str__', 'acronym', 'order') +class HeadlineAdmin(admin.ModelAdmin): + list_display = ('__str__', 'acronym') + list_filter = ('section',) class StandardAdmin(admin.ModelAdmin): - list_display = ('goal_acronym', 'structure', '__str__') + list_display = ('__str__', 'name') -admin.site.register(Goal, GoalAdmin) +admin.site.register(Headline, HeadlineAdmin) admin.site.register(Standard, StandardAdmin) admin.site.register(Section) diff --git a/jci/migrations/0010_auto_20170919_1850.py b/jci/migrations/0010_auto_20170919_1850.py new file mode 100644 index 0000000..497bcff --- /dev/null +++ b/jci/migrations/0010_auto_20170919_1850.py @@ -0,0 +1,41 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.5 on 2017-09-19 18:50 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('jci', '0009_auto_20170919_1619'), + ] + + operations = [ + migrations.CreateModel( + name='Headline', + fields=[ + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), + ('name', models.CharField(max_length=255)), + ], + ), + migrations.AlterModelOptions( + name='section', + options={'ordering': ('name',)}, + ), + migrations.RemoveField( + model_name='goal', + name='section', + ), + migrations.AddField( + model_name='headline', + name='section', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='jci.Section'), + ), + migrations.AddField( + model_name='goal', + name='headline', + field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='jci.Headline'), + ), + ] diff --git a/jci/migrations/0011_auto_20170919_1859.py b/jci/migrations/0011_auto_20170919_1859.py new file mode 100644 index 0000000..056528d --- /dev/null +++ b/jci/migrations/0011_auto_20170919_1859.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.5 on 2017-09-19 18:59 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('jci', '0010_auto_20170919_1850'), + ] + + operations = [ + migrations.RemoveField( + model_name='goal', + name='acronym', + ), + migrations.RemoveField( + model_name='goal', + name='overview', + ), + migrations.AddField( + model_name='headline', + name='acronym', + field=models.CharField(default=None, max_length=10), + preserve_default=False, + ), + migrations.AddField( + model_name='headline', + name='overview', + field=models.TextField(blank=True, max_length=2000, null=True), + ), + migrations.AlterField( + model_name='goal', + name='headline', + field=models.ForeignKey(default=None, on_delete=django.db.models.deletion.CASCADE, to='jci.Headline'), + preserve_default=False, + ), + migrations.AlterField( + model_name='headline', + name='section', + field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='jci.Section'), + ), + ] diff --git a/jci/migrations/0012_auto_20170919_1914.py b/jci/migrations/0012_auto_20170919_1914.py new file mode 100644 index 0000000..4d2d797 --- /dev/null +++ b/jci/migrations/0012_auto_20170919_1914.py @@ -0,0 +1,38 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.5 on 2017-09-19 19:14 +from __future__ import unicode_literals + +from django.db import migrations + + +class Migration(migrations.Migration): + + dependencies = [ + ('jci', '0011_auto_20170919_1859'), + ] + + operations = [ + migrations.AlterUniqueTogether( + name='goalclosure', + unique_together=set([]), + ), + migrations.RemoveField( + model_name='goalclosure', + name='child', + ), + migrations.RemoveField( + model_name='goalclosure', + name='parent', + ), + migrations.AlterModelOptions( + name='headline', + options={'ordering': ('name',)}, + ), + migrations.RemoveField( + model_name='goal', + name='parent', + ), + migrations.DeleteModel( + name='GoalClosure', + ), + ] diff --git a/jci/migrations/0013_auto_20170919_1930.py b/jci/migrations/0013_auto_20170919_1930.py new file mode 100644 index 0000000..5ef2799 --- /dev/null +++ b/jci/migrations/0013_auto_20170919_1930.py @@ -0,0 +1,39 @@ +# -*- coding: utf-8 -*- +# Generated by Django 1.11.5 on 2017-09-19 19:30 +from __future__ import unicode_literals + +from django.db import migrations, models +import django.db.models.deletion + + +class Migration(migrations.Migration): + + dependencies = [ + ('jci', '0012_auto_20170919_1914'), + ] + + operations = [ + migrations.RemoveField( + model_name='goal', + name='headline', + ), + migrations.RemoveField( + model_name='standard', + name='goal', + ), + migrations.AddField( + model_name='standard', + name='headline', + field=models.ForeignKey(default=1, on_delete=django.db.models.deletion.CASCADE, related_name='standards', to='jci.Headline'), + preserve_default=False, + ), + migrations.AddField( + model_name='standard', + name='order', + field=models.IntegerField(default=1), + preserve_default=False, + ), + migrations.DeleteModel( + name='Goal', + ), + ] diff --git a/jci/models.py b/jci/models.py index d273b85..f6b539b 100644 --- a/jci/models.py +++ b/jci/models.py @@ -14,36 +14,30 @@ class Section(models.Model): class Headline(models.Model): name = models.CharField(max_length=255) - section = models.ForeignKey(Section, null=True, blank=True) - - def __str__(self): - return self.name - - -class Goal(ClosureModel): - name = models.CharField(max_length=255, unique=True) - parent = models.ForeignKey('self', related_name='children', null=True, blank=True) - acronym = models.CharField(max_length=10, blank=True, null=True) + section = models.ForeignKey(Section) + acronym = models.CharField(max_length=10) overview = models.TextField(max_length=2000, null=True, blank=True) - order = models.IntegerField(blank=True, null=True) - headline = models.ForeignKey(Headline, blank=True, null=True) def __str__(self): - return self.name + return '{} - {}'.format(self.acronym, self.name) + + class Meta: + ordering = ('name',) class Standard(ClosureModel): name = models.CharField(max_length=255) parent = models.ForeignKey('self', related_name='children', null=True, blank=True) - goal = models.ForeignKey(Goal, related_name='standards') - - @property - def goal_acronym(self): - return self.goal.get_root().name - + headline = models.ForeignKey(Headline, related_name='standards') + order = models.IntegerField() + @property def structure(self): - return '.'.join([x.order if x.order else x.name for x in self.goal.get_ancestors()]) + return '.'.join([str(x.order) for x in self.get_ancestors()] + [str(self.order)]) def __str__(self): - return self.name + return '{}.{}'.format(self.headline.acronym, self.structure) + + class Meta: + ordering = ('headline__acronym',) + diff --git a/jci/models.py~ b/jci/models.py~ deleted file mode 100644 index d273b85..0000000 --- a/jci/models.py~ +++ /dev/null @@ -1,49 +0,0 @@ -from django.db import models -from closuretree.models import ClosureModel - - -class Section(models.Model): - name = models.CharField(max_length=255) - - def __str__(self): - return self.name - - class Meta: - ordering = ('name',) - - -class Headline(models.Model): - name = models.CharField(max_length=255) - section = models.ForeignKey(Section, null=True, blank=True) - - def __str__(self): - return self.name - - -class Goal(ClosureModel): - name = models.CharField(max_length=255, unique=True) - parent = models.ForeignKey('self', related_name='children', null=True, blank=True) - acronym = models.CharField(max_length=10, blank=True, null=True) - overview = models.TextField(max_length=2000, null=True, blank=True) - order = models.IntegerField(blank=True, null=True) - headline = models.ForeignKey(Headline, blank=True, null=True) - - def __str__(self): - return self.name - - -class Standard(ClosureModel): - name = models.CharField(max_length=255) - parent = models.ForeignKey('self', related_name='children', null=True, blank=True) - goal = models.ForeignKey(Goal, related_name='standards') - - @property - def goal_acronym(self): - return self.goal.get_root().name - - @property - def structure(self): - return '.'.join([x.order if x.order else x.name for x in self.goal.get_ancestors()]) - - def __str__(self): - return self.name diff --git a/jci/views.py b/jci/views.py index c27a3e6..4168b9b 100644 --- a/jci/views.py +++ b/jci/views.py @@ -1,8 +1,6 @@ from django.shortcuts import render -from jci.models import Goal - def jci_list(request): - goals = Goal.objects.filter(parent__isnull=True).all() - return render(request, 'jci/list.html', {'goals': goals}) + + return render(request, 'jci/list.html', {'goals': ''})