refactors sections, stds and headlines
This commit is contained in:
parent
ad858d5010
commit
8e7b7aa981
BIN
db.sqlite3
BIN
db.sqlite3
Binary file not shown.
11
jci/admin.py
11
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)
|
||||
|
|
|
@ -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'),
|
||||
),
|
||||
]
|
|
@ -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'),
|
||||
),
|
||||
]
|
|
@ -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',
|
||||
),
|
||||
]
|
|
@ -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',
|
||||
),
|
||||
]
|
|
@ -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',)
|
||||
|
||||
|
|
|
@ -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
|
|
@ -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': ''})
|
||||
|
|
Loading…
Reference in New Issue