change DocumentFilter to VersionFilter
This commit is contained in:
parent
e0021502e7
commit
8679915ca7
BIN
db.sqlite3
BIN
db.sqlite3
Binary file not shown.
|
@ -2,7 +2,7 @@ from django.contrib import admin
|
|||
|
||||
from reversion.admin import VersionAdmin
|
||||
|
||||
from .models import Audience, Document, DocumentType, Version, Site, Structure, Keyword
|
||||
from .models import Audience, Document, DocumentType, Version, Site, Node, Keyword
|
||||
|
||||
|
||||
class DocumentAdmin(VersionAdmin):
|
||||
|
@ -15,7 +15,7 @@ class DocumentTypeAdmin(admin.ModelAdmin):
|
|||
|
||||
admin.site.register(Audience)
|
||||
admin.site.register(Site)
|
||||
admin.site.register(Structure)
|
||||
admin.site.register(Node)
|
||||
admin.site.register(Document, DocumentAdmin)
|
||||
admin.site.register(DocumentType, DocumentTypeAdmin)
|
||||
admin.site.register(Version, VersionAdmin)
|
||||
|
|
|
@ -1,10 +1,10 @@
|
|||
from django import forms
|
||||
import django_filters
|
||||
|
||||
from evolus.models import Audience, Document, Site, Structure
|
||||
from evolus.models import Audience, Version, Site, Node
|
||||
|
||||
|
||||
class DocumentFilter(django_filters.FilterSet):
|
||||
class VersionFilter(django_filters.FilterSet):
|
||||
audiences = django_filters.ModelMultipleChoiceFilter(
|
||||
queryset=Audience.objects.all(),
|
||||
widget=forms.CheckboxSelectMultiple
|
||||
|
@ -13,11 +13,11 @@ class DocumentFilter(django_filters.FilterSet):
|
|||
queryset=Site.objects.all(),
|
||||
widget=forms.CheckboxSelectMultiple
|
||||
)
|
||||
structures = django_filters.ModelMultipleChoiceFilter(
|
||||
queryset=Structure.objects.all(),
|
||||
nodes = django_filters.ModelMultipleChoiceFilter(
|
||||
queryset=Node.objects.all(),
|
||||
widget=forms.CheckboxSelectMultiple
|
||||
)
|
||||
|
||||
class Meta:
|
||||
model = Document
|
||||
fields = ('audiences', 'sites', 'structures',)
|
||||
model = Version
|
||||
fields = ('audiences', 'sites', 'nodes',)
|
||||
|
|
|
@ -0,0 +1,74 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
# Generated by Django 1.11.5 on 2017-10-30 14:28
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import migrations, models
|
||||
import django.db.models.deletion
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('evolus', '0015_version_restricted'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='NodeClosure',
|
||||
fields=[
|
||||
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
|
||||
('depth', models.IntegerField()),
|
||||
],
|
||||
options={
|
||||
'db_table': 'evolus_nodeclosure',
|
||||
},
|
||||
),
|
||||
migrations.RenameModel(
|
||||
old_name='Structure',
|
||||
new_name='Node',
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='structureclosure',
|
||||
unique_together=set([]),
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='structureclosure',
|
||||
name='child',
|
||||
),
|
||||
migrations.RemoveField(
|
||||
model_name='structureclosure',
|
||||
name='parent',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='version',
|
||||
name='audiences',
|
||||
field=models.ManyToManyField(blank=True, to='evolus.Audience'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='version',
|
||||
name='nodes',
|
||||
field=models.ManyToManyField(blank=True, to='evolus.Node'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='version',
|
||||
name='sites',
|
||||
field=models.ManyToManyField(blank=True, to='evolus.Site'),
|
||||
),
|
||||
migrations.DeleteModel(
|
||||
name='StructureClosure',
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='nodeclosure',
|
||||
name='child',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='nodeclosure_parents', to='evolus.Node'),
|
||||
),
|
||||
migrations.AddField(
|
||||
model_name='nodeclosure',
|
||||
name='parent',
|
||||
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, related_name='nodeclosure_children', to='evolus.Node'),
|
||||
),
|
||||
migrations.AlterUniqueTogether(
|
||||
name='nodeclosure',
|
||||
unique_together=set([('parent', 'child')]),
|
||||
),
|
||||
]
|
|
@ -34,7 +34,7 @@ class Site(models.Model):
|
|||
ordering = ['name']
|
||||
|
||||
|
||||
class Structure(ClosureModel):
|
||||
class Node(ClosureModel):
|
||||
name = models.CharField(max_length=50)
|
||||
acronym = models.CharField(max_length=20, null=True, blank=True)
|
||||
parent = models.ForeignKey('self', related_name='children', null=True, blank=True)
|
||||
|
@ -78,7 +78,7 @@ class Document(models.Model):
|
|||
@property
|
||||
def last_published_version(self):
|
||||
try:
|
||||
return self.versions.filter(published__isnull=False).first().revisions.first()
|
||||
return self.versions.filter(is_published__isnull=True).first()
|
||||
except Version.DoesNotExist:
|
||||
return 'None'
|
||||
except Exception:
|
||||
|
@ -87,7 +87,7 @@ class Document(models.Model):
|
|||
@property
|
||||
def last_working_version(self):
|
||||
try:
|
||||
return self.versions.filter(published__isnull=True).first().revisions.first()
|
||||
return self.versions.filter(is_published__isnull=False).first()
|
||||
except Version.DoesNotExist:
|
||||
return 'None'
|
||||
|
||||
|
@ -107,10 +107,10 @@ class Document(models.Model):
|
|||
|
||||
if not latest_version or latest_version.is_published:
|
||||
latest_version = Version(
|
||||
document = self,
|
||||
file = self.type.template,
|
||||
revision = 1,
|
||||
major = self.major,
|
||||
document= self,
|
||||
file=self.type.template,
|
||||
revision=1,
|
||||
major=self.major,
|
||||
)
|
||||
latest_version.save()
|
||||
return latest_version
|
||||
|
@ -155,6 +155,9 @@ class Version(models.Model):
|
|||
reviewers = models.ManyToManyField(User, related_name='reviewers')
|
||||
validators = models.ManyToManyField(User, related_name='validators')
|
||||
created_at = models.DateTimeField(auto_now_add=True)
|
||||
audiences = models.ManyToManyField(Audience, blank=True)
|
||||
sites = models.ManyToManyField(Site, blank=True)
|
||||
nodes = models.ManyToManyField(Node, blank=True)
|
||||
|
||||
@reversion.create_revision()
|
||||
def publish(self):
|
||||
|
|
|
@ -1,7 +1,8 @@
|
|||
from django.shortcuts import render
|
||||
from .models import Document
|
||||
from .filters import DocumentFilter
|
||||
from .models import Version
|
||||
from .filters import VersionFilter
|
||||
|
||||
|
||||
def filter_documents(request):
|
||||
f = DocumentFilter(request.GET, queryset=Document.objects.all())
|
||||
f = VersionFilter(request.GET, queryset=Version.objects.all())
|
||||
return render(request, 'evolus/search.html', {'filter': f })
|
||||
|
|
|
@ -3,10 +3,16 @@
|
|||
<html>
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<title>Evolus</title>
|
||||
<link rel="stylesheet" href="{% static 'css/bootstrap.min.css' %}">
|
||||
</head>
|
||||
<body>
|
||||
<!-- body suppressed for brevity ... -->
|
||||
<div class="container-fluid">
|
||||
<div class="row">
|
||||
<div class="col-6 col-md-4">{% block "navigation" %}{% endblock %}</div>
|
||||
<div class="col-12 col-md-8">{% block "content" %}{% endblock %}</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
|
|
@ -1,8 +1,12 @@
|
|||
{% extends "../base.html" %}
|
||||
|
||||
{% block "navigation" %}
|
||||
<form action="" method="get">
|
||||
{{ filter.form.as_p }}
|
||||
<input type="submit" />
|
||||
</form>
|
||||
{% endblock %}
|
||||
{% block "content" %}
|
||||
<ul>
|
||||
{% for obj in filter.qs %}
|
||||
<li>{{ obj }}
|
||||
|
@ -12,4 +16,5 @@
|
|||
</ul>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</ul>
|
||||
{% endblock %}
|
Loading…
Reference in New Issue