refactors sections, stds and headlines

This commit is contained in:
Fred 2017-09-19 21:44:30 +02:00
parent ad858d5010
commit 8e7b7aa981
9 changed files with 187 additions and 79 deletions

Binary file not shown.

View File

@ -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)

View File

@ -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'),
),
]

View File

@ -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'),
),
]

View File

@ -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',
),
]

View File

@ -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',
),
]

View File

@ -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',)

View File

@ -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

View File

@ -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': ''})