change DocumentFilter to VersionFilter

This commit is contained in:
Fred Pauchet 2017-10-30 15:31:58 +01:00
parent e0021502e7
commit 8679915ca7
8 changed files with 109 additions and 20 deletions

Binary file not shown.

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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