--- a/src/p4l/management/commands/import_record.py Wed Aug 28 18:45:41 2013 +0200
+++ b/src/p4l/management/commands/import_record.py Thu Aug 29 15:42:00 2013 +0200
@@ -209,7 +209,7 @@
record.subjectMeetings,
graph,
['label', 'meetingNumber', 'meetingPlace', 'meetingDate', 'meetingYear'],
- "SELECT ?l ?mn ?mp ?md ?my WHERE { [iiep:meeting ?bnode]. OPTIONAL { ?bnode rdfs:label ?l }. OPTIONAL { ?bnode iiep:meetingNumber ?mn }. OPTIONAL { ?bnode iiep:meetingPlace ?mp }. OPTIONAL { ?bnode iiep:meetingDate ?md }. OPTIONAL { ?bnode iiep:meetingYear ?my }}",
+ "SELECT ?l ?mn ?mp ?md ?my WHERE { [iiep:subjectMeeting ?bnode]. OPTIONAL { ?bnode rdfs:label ?l }. OPTIONAL { ?bnode iiep:meetingNumber ?mn }. OPTIONAL { ?bnode iiep:meetingPlace ?mp }. OPTIONAL { ?bnode iiep:meetingDate ?md }. OPTIONAL { ?bnode iiep:meetingYear ?my }}",
convert={'meetingYear' : lambda y: int(y) if y is not None else None}
)
--- a/src/p4l/static/p4l/css/p4l.css Wed Aug 28 18:45:41 2013 +0200
+++ b/src/p4l/static/p4l/css/p4l.css Thu Aug 29 15:42:00 2013 +0200
@@ -6,9 +6,19 @@
margin: 0 auto;
width: 950px;
}
+
+.record-table thead td:first-child {
+ width: 190px;
+}
+.record-table tbody td:first-child:first-letter {
+ text-transform: uppercase;
+}
.table thead td:first-letter {
text-transform: uppercase;
}
+.table thead {
+ font-weight: bold;
+}
.two_buttons{
min-width: 100px;
-}
+}
\ No newline at end of file
--- a/src/p4l/templates/p4l/p4l_home.html Wed Aug 28 18:45:41 2013 +0200
+++ b/src/p4l/templates/p4l/p4l_home.html Thu Aug 29 15:42:00 2013 +0200
@@ -21,20 +21,20 @@
<div class="pagination pull-right">
<span class="page-links">
{% if page_obj.has_previous %}
- <a href="?page={{ page_obj.previous_page_number }}{% for k,v in filter_params.items %}&{{k}}={{v}}{% endfor %}">previous</a>
+ <a href="?page={{ page_obj.previous_page_number }}{% for k,v in filter_params.items %}&{{k}}={{v}}{% endfor %}">{% trans 'Previous' %}</a>
{% endif %}
<span class="page-current">
- Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
+ {% trans 'Page' %} {{ page_obj.number }} {% trans 'on' %} {{ page_obj.paginator.num_pages }}
</span>
{% if page_obj.has_next %}
- <a href="?page={{ page_obj.next_page_number }}{% for k,v in filter_params.items %}&{{k}}={{v}}{% endfor %}">next</a>
+ <a href="?page={{ page_obj.next_page_number }}{% for k,v in filter_params.items %}&{{k}}={{v}}{% endfor %}">{% trans 'Next' %}</a>
{% endif %}
</span>
</div>
{% endif %}
<table class="table">
<thead>
- <tr><td>URI</td><td>lang.</td><td>{% trans 'title' %}</td><td class="two_buttons">{% trans 'actions' %}</td></tr>
+ <tr><td>URI</td><td>lang.</td><td>{% trans 'titles' %}</td><td class="two_buttons">{% trans 'actions' %}</td></tr>
</thead>
<tbody>
{% for record in object_list %}
@@ -44,7 +44,10 @@
<td><ul>{% for t in record.titles.all %}
<li>{{ t.title }}</li>
{% endfor %}</ul></td>
- <td><a class="btn btn-default" href="#"><i class="glyphicon glyphicon-eye-open"></i></a><a class="btn btn-default" href="#"><i class="glyphicon glyphicon-pencil"></i></a></td>
+ <td>
+ <a class="btn btn-default" href="{% url 'p4l_record_view' %}?uri={{ record.uri }}"><i class="glyphicon glyphicon-eye-open"></i></a>
+ <a class="btn btn-default" href="#"><i class="glyphicon glyphicon-pencil"></i></a>
+ </td>
</tr>
{% empty %}
<tr><td>{% trans 'No record' %}</td></tr>
@@ -53,16 +56,15 @@
</table>
{% if is_paginated %}
<div class="pagination pull-right">
- {{filter_params}}
<span class="page-links">
{% if page_obj.has_previous %}
- <a href="?page={{ page_obj.previous_page_number }}{% for k,v in filter_params.items %}&{{k}}={{v}}{% endfor %}">previous</a>
+ <a href="?page={{ page_obj.previous_page_number }}{% for k,v in filter_params.items %}&{{k}}={{v}}{% endfor %}">{% trans 'Previous' %}</a>
{% endif %}
<span class="page-current">
- Page {{ page_obj.number }} of {{ page_obj.paginator.num_pages }}.
+ {% trans 'Page' %} {{ page_obj.number }} {% trans 'on' %} {{ page_obj.paginator.num_pages }}
</span>
{% if page_obj.has_next %}
- <a href="?page={{ page_obj.next_page_number }}{% for k,v in filter_params.items %}&{{k}}={{v}}{% endfor %}">next</a>
+ <a href="?page={{ page_obj.next_page_number }}{% for k,v in filter_params.items %}&{{k}}={{v}}{% endfor %}">{% trans 'Next' %}</a>
{% endif %}
</span>
</div>
--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/src/p4l/templates/p4l/p4l_record_view.html Thu Aug 29 15:42:00 2013 +0200
@@ -0,0 +1,236 @@
+{% extends "p4l/p4l_base.html" %}
+{% load static %}
+{% load i18n %}
+{% load p4lstringfilters %}
+
+{% block content %}
+<table class="table record-table">
+ <thead>
+ <tr><td>{% trans 'property' %}</td><td>{% trans 'value' %}</td></tr>
+ </thead>
+ <tbody>
+ <tr>
+ <td>URI</td>
+ <td>{{ record.uri|default:'' }}</td>
+ </tr>
+ <tr>
+ <td>{% trans 'subjects' %}</td>
+ <td><ul>{% for i in record.subjects.all %}<li>{{ i.subject|default:'' }}</li>{% endfor %}</ul></td>
+ </tr>
+ <tr>
+ <td>{% trans 'themes' %}</td>
+ <td><ul>{% for i in record.themes.all %}<li>{{ i.theme|default:'' }}</li>{% endfor %}</ul></td>
+ </tr>
+ <tr>
+ <td>{% trans 'countries' %}</td>
+ <td><ul>{% for i in record.countries.all %}<li>{{ i.country|default:'' }}</li>{% endfor %}</ul></td>
+ </tr>
+ <tr>
+ <td>{% trans 'identifier' %}</td>
+ <td>{{ record.identifier }}</td>
+ </tr>
+ <tr>
+ <td>{% trans 'issns' %}</td>
+ <td><ul>{% for i in record.issns.all %}<li>{{ i.issn|default:'' }}</li>{% endfor %}</ul></td>
+ </tr>
+ <tr>
+ <td>{% trans 'isbns' %}</td>
+ <td><ul>{% for i in record.isbns.all %}<li>{{ i.isbn|default:'' }}</li>{% endfor %}</ul></td>
+ </tr>
+ <tr>
+ <td>{% trans 'document code' %}</td>
+ <td><ul>{% for i in record.documentCodes.all %}<li>{{ i.documentCode|default:'' }}</li>{% endfor %}</ul></td>
+ </tr>
+ <tr>
+ <td>{% trans 'language' %}</td>
+ <td>{{ record.language.language|default:'' }}</td>
+ </tr>
+ <tr>
+ <td>{% trans 'other languages' %}</td>
+ <td><ul>{% for i in record.otherLanguages.all %}<li>{{ i.language|default:'' }}</li>{% endfor %}</ul></td>
+ </tr>
+ <tr>
+ <td>{% trans 'titles' %}</td>
+ <td><ul>{% for i in record.titles.all %}<li>{{ i.title|default:'' }}</li>{% endfor %}</ul></td>
+ </tr>
+ <tr>
+ <td>{% trans 'added titles' %}</td>
+ <td><ul>{% for i in record.addedTitles.all %}<li>{{ i.title|default:'' }}</li>{% endfor %}</ul></td>
+ </tr>
+ <tr>
+ <td>{% trans 'titles main document' %}</td>
+ <td><ul>{% for i in record.titlesMainDocument.all %}<li>{{ i.title|default:'' }}</li>{% endfor %}</ul></td>
+ </tr>
+ <tr>
+ <td>{% trans 'edition statement' %}</td>
+ <td>{{ record.editionStatement|default:'' }}</td>
+ </tr>
+ <tr>
+ <td>{% trans 'imprints' %}</td>
+ <td>
+ <ul>
+ {% for i in record.imprints.all %}
+ <li>
+ <ul class="list-unstyled">
+ <li>{% trans 'City' %} : {{ i.imprintCity|default:'' }}</li>
+ <li>{% trans 'Publisher' %} : {{ i.publisher|default:'' }}</li>
+ <li>{% trans 'Date' %} : {{ i.imprintDate|default:'' }}</li>
+ </ul>
+ </li>
+ {% endfor %}
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td>{% trans 'collations' %}</td>
+ <td><ul>{% for i in record.collations.all %}<li>{{ i.collation|default:'' }}</li>{% endfor %}</ul></td>
+ </tr>
+ <tr>
+ <td>{% trans 'volume issues' %}</td>
+ <td>
+ <ul>
+ {% for i in record.volumeIssues.all %}
+ <li>
+ <ul class="list-unstyled">
+ <li>{% trans 'Volume' %} : {{ i.volume|default:'' }}</li>
+ <li>{% trans 'Number' %} : {{ i.number|default:'' }}</li>
+ </ul>
+ </li>
+ {% endfor %}
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td>{% trans 'project names' %}</td>
+ <td><ul>{% for i in record.projectNames.all %}<li>{% if i.acronym %}{{ i.acronym }} : {% endif %}{{ i.label|default:'' }}</li>{% endfor %}</ul></td>
+ </tr>
+ <tr>
+ <td>{% trans 'periodicals' %}</td>{# ajouter langue #}
+ <td><ul>{% for i in record.periodicals.all %}<li>{{ i.label|default:'' }}</li>{% endfor %}</ul></td>
+ </tr>
+ <tr>
+ <td>{% trans 'meetings' %}</td>{# ajouter langue #}
+ <td>
+ <ul>
+ {% for i in record.meetings.all %}
+ <li>
+ <ul class="list-unstyled">
+ <li>{{ i.label|default:'' }}</li>
+ <li>{% trans 'Number' %} : {{ i.meetingNumber|default:'' }}</li>
+ <li>{% trans 'Place' %} : {{ i.meetingPlace|default:'' }}</li>
+ <li>{% trans 'Date' %} : {{ i.meetingDate|default:'' }}</li>
+ <li>{% trans 'Year' %} : {{ i.meetingYear|default:'' }}</li>
+ </ul>
+ </li>
+ {% endfor %}
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td>{% trans 'series' %}</td>{# ajouter langue #}
+ <td>
+ <ul>
+ {% for i in record.series.all %}
+ <li>
+ <ul class="list-unstyled">
+ <li>{{ i.title|default:'' }}</li>
+ {% if i.volume %}<li>{% trans 'Volume' %} : {{ i.volume|default:'' }}</li>{% endif %}
+ </ul>
+ </li>
+ {% endfor %}
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td>{% trans 'authors' %}</td>
+ <td><ul>{% for i in record.authors.all %}<li>{{ i.name|default:'' }}</li>{% endfor %}</ul></td>
+ </tr>
+ <tr>
+ <td>{% trans 'subject persons' %}</td>
+ <td><ul>{% for i in record.subjectPersons.all %}<li>{{ i.name|default:'' }}</li>{% endfor %}</ul></td>
+ </tr>
+ <tr>
+ <td>{% trans 'subject corporate bodies' %}</td>
+ <td><ul>{% for i in record.subjectCorporateBodies.all %}<li>{% if i.acronym %}{{ i.acronym }} : {% endif %}{{ i.label|default:'' }}</li>{% endfor %}</ul></td>
+ </tr>
+ <tr>
+ <td>{% trans 'subject meetings' %}</td>{# ajouter langue #}
+ <td>
+ <ul>
+ {% for i in record.subjectMeetings.all %}
+ <li>
+ <ul class="list-unstyled">
+ <li>{{ i.label|default:'' }}</li>
+ <li>{% trans 'Number' %} : {{ i.meetingNumber|default:'' }}</li>
+ <li>{% trans 'Place' %} : {{ i.meetingPlace|default:'' }}</li>
+ <li>{% trans 'Date' %} : {{ i.meetingDate|default:'' }}</li>
+ <li>{% trans 'Year' %} : {{ i.meetingYear|default:'' }}</li>
+ </ul>
+ </li>
+ {% endfor %}
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td>{% trans 'corporate authors' %}</td>
+ <td><ul>{% for i in record.corporateAuthors.all %}<li>{% if i.acronym %}{{ i.acronym }} : {% endif %}{{ i.label|default:'' }}</li>{% endfor %}</ul></td>
+ </tr>
+ <tr>
+ <td>{% trans 'Urls' %}</td>{# ajouter langue #}
+ <td>
+ <ul>
+ {% for i in record.urls.all %}
+ <li>
+ <ul class="list-unstyled">
+ <li>{% trans 'Address' %} : {{ i.address|default:'' }}</li>
+ <li>{% trans 'Display' %} : {{ i.display|default:'' }}</li>
+ <li>{% trans 'Access level' %} : {{ i.accessLevel|default:'' }}</li>
+ </ul>
+ </li>
+ {% endfor %}
+ </ul>
+ </td>
+ </tr>
+ <tr>
+ <td>{% trans 'record type' %}</td>
+ <td>{{ record.recordType|default:'' }}</td>
+ </tr>
+ <tr>
+ <td>{% trans 'is document part' %}</td>
+ <td><input type="checkbox" disabled="disabled" {% if record.isDocumentPart %}checked="checked"{% endif %} /></td>
+ </tr>
+ </tbody>
+ <!--
+ uri = models.URLField(max_length=2048, unique=True, db_index=True) #subject
+ subjects = models.ManyToManyField('p4l.Subject') #dct:subject # Thesaurus with no country
+ themes = models.ManyToManyField('p4l.Theme') #iiep:theme # Theme
+ countries = models.ManyToManyField('p4l.Country') #iiep:country # Thesaurus filtered with country only
+ identifier = models.CharField(max_length=128, unique=True, db_index=True) #dct:identifier
+ notes = models.TextField(blank=True, null=True) #iiep:notes
+ #issns foreign key from Isbn #iiep:issn
+ #isbns foreign key from Isbn #iiep:isbn
+ #documentCodes foreign key from Isbn #iiep:documentCode
+ language = models.ForeignKey('p4l.Language', blank=True, null=True) #dct:language # Language
+ otherLanguages = models.ManyToManyField('p4l.Language', related_name='otherLanguage_record') #iiep:otherLanguage # Language
+ #titles foreign Key from Title #dct:title
+ #addedTitles foreign Key from AddedTitle #iiep:addedTitle
+ #titlesMainDocument foreign Key from TitleMainDocument #iiep:titleMainDocument
+ editionStatement = models.CharField(max_length=1024, blank=True, null=True) #iiep:editionStatement
+ #imprints foreign Key from Imprint #iiep:imprint
+ #collations = foreign Key from Collation #iiep:collation
+ #volumeIssues = foreign Key from VolumeIssue #iiep:volumeIssue
+ projectNames = models.ManyToManyField('p4l.ProjectName') #iiep:projectName
+ periodicals = models.ManyToManyField('p4l.Periodical', through='p4l.RecordPeriodical') #iiep:periodical
+ meetings = models.ManyToManyField('p4l.Meeting', through='p4l.RecordMeeting') #iiep:meeting
+ series = models.ManyToManyField('p4l.Serie', through='p4l.RecordSerie') #iiep:serie
+ authors = models.ManyToManyField('p4l.Author') #iiep:author
+ subjectPersons = models.ManyToManyField('p4l.SubjectPerson') #iiep:subjectPerson
+ subjectCorporateBodies = models.ManyToManyField('p4l.CorporateBody') #iiep:subjectCorporateBody # Organisation ?
+ subjectMeetings = models.ManyToManyField('p4l.SubjectMeeting') #iiep:subjectMeeting
+ corporateAuthors = models.ManyToManyField('p4l.CorporateAuthor') #iiep:corporateAuthor # Organisation ?
+ #urls foreign Key from Url #iiep:url
+ recordType = models.URLField(max_length=2048) #dct:type
+ isDocumentPart = models.BooleanField() #iiep:isDocumentPart
+ -->
+</table>
+{% endblock %}
\ No newline at end of file
--- a/src/p4l/urls.py Wed Aug 28 18:45:41 2013 +0200
+++ b/src/p4l/urls.py Thu Aug 29 15:42:00 2013 +0200
@@ -1,6 +1,6 @@
from django.conf import settings
from django.conf.urls import patterns, include, url
-from .views import RecordListView
+from .views import RecordListView, RecordDetailView
from django.contrib import admin
admin.autodiscover()
@@ -8,6 +8,7 @@
urlpatterns = patterns('',
# Examples:
url(r'^$', RecordListView.as_view(), name='p4l_home'),
+ url(r'^record/view$', RecordDetailView.as_view(), name='p4l_record_view'),
# url(r'^p4l/', include('p4l.foo.urls')),
# Uncomment the admin/doc line below to enable admin documentation:
--- a/src/p4l/views.py Wed Aug 28 18:45:41 2013 +0200
+++ b/src/p4l/views.py Thu Aug 29 15:42:00 2013 +0200
@@ -6,15 +6,17 @@
'''
from django.conf import settings
-from django.core.paginator import Paginator, InvalidPage, EmptyPage
-from django.db.models import Count
+#from django.core.paginator import Paginator, InvalidPage, EmptyPage
+#from django.db.models import Count
#from django.http.response import HttpResponse, HttpResponseForbidden
-from django.views.generic import ListView#, DetailView, View
+from django.shortcuts import get_object_or_404
+from django.views.generic import ListView, DetailView#, View
#from django.views.generic.list import MultipleObjectMixin
from .models import Record
from .forms import RecordFilterForm
import logging
+
logger = logging.getLogger(__name__)
class RecordListView(ListView):
@@ -42,3 +44,18 @@
return filter_form.get_filter_qs(qs)
else:
return qs
+
+
+class RecordDetailView(DetailView):
+
+ model = Record
+ template_name = "p4l/p4l_record_view.html"
+ slug_field = "uri" # Even if it is useless because we override get_objet
+
+ def get_object(self, queryset=None):
+ if "uri" not in self.request.GET:
+ raise AttributeError(u"Record view must be called uri GET parameter")
+
+ return get_object_or_404(Record.objects.select_related("language").prefetch_related('titles'), uri=self.request.GET["uri"])
+
+