def render(self, context, instance, placeholder): context.update({ 'instance': instance, 'bibliographical_data': { 'version': util.version() }, 'chicago_authors': self.chicago_authors, 'mla_authors': self.mla_authors, 'year': '2014-' + str(datetime.date.today().year), }) return context
def mods(request): access_date = request.GET.get('access-date', None) if access_date is None: return HttpResponseBadRequest( "access-date is a required parameter") return render(request, "core/mods.xml", { 'version': util.version(), 'year': '2012-' + str(datetime.date.today().year), 'access_date': access_date, }, content_type="application/xml+mods")
def test_basic(self): """ Tests that generating a MODS works. """ response = self.app.get(self.mods_url, params={"access-date": "2015-01-02"}) xml_params = { 'version': util.version(), 'year': '2012-' + str(datetime.date.today().year), 'url': "http://testserver/" } self.assertEqual( response.text, self.mods_template.format(**xml_params)) self.assertValid(response.body)
def test_basic(self): """ Tests that generating a MODS works. """ response = self.app.get(self.mods_url, params={"access-date": "2015-01-02"}) xml_params = { 'version': util.version(), 'year': '2012-' + str(datetime.date.today().year), 'url': "http://testserver/" } self.assertEqual( response.body, self.mods_template.format(**xml_params)) self.assertValid(response.body)
def _show_changerecord(request, cr): get_token(request) can_author = usermod.can_author(request.user) show_published = not can_author prepared = cr.c_hash.get_display_data() if prepared is None: data = None bibl_data = '{}' else: data = article.hyperlink_prepared_data(prepared, show_published) bibl_data = json.dumps(prepared["bibl_data"]) # We want an edit option only if this record is the latest and if # the user can edit it. edit_url = (reverse("lexicography_entry_update", args=(cr.entry.id, )) if (cr.entry.latest == cr and cr.entry.is_editable_by(request.user)) else '') fetch_url = '' if data is not None else \ reverse('lexicography_changerecord_details', args=(cr.pk, )) # We want to warn the user of any version that has been published # and is not this version. We pass cr.entry so that we can get the # non-version specific URL of to view the entry. latest_published = cr.entry \ if (cr.entry.latest_published is not None and cr != cr.entry.latest_published) else None # If the user is able to see unpublished articles, then we want to # warn the user if there exist a later version which is # unpublished. latest_unpublished = cr.entry.latest if can_author and \ (cr != cr.entry.latest) and \ (cr.entry.latest != cr.entry.latest_published) else None # Provide a history for the article history = [] for version in cr.entry.changerecord_set.filter(published=True) \ .order_by("-datetime"): history.append({ 'url': version.get_absolute_url(), 'date': version.datetime }) return render(request, 'lexicography/details.html', context={ 'bibliographical_data': { 'version': util.version() }, 'page_title': cr.lemma, 'fetch_url': fetch_url, 'semantic_field_fetch_url': reverse("semantic_fields_semanticfield-list"), 'data': data, 'bibl_data': bibl_data, 'edit_url': edit_url, 'is_published': cr.published, 'latest_unpublished': latest_unpublished, 'latest_published': latest_published, 'permalink': cr.entry.get_absolute_url(), 'version_permalink': cr.get_absolute_url(), 'can_author': can_author, 'history': history })
def mods(request, entry_id, changerecord_id=None): access_date = request.GET.get('access-date', None) version_specific = request.GET.get('version-specific', None) if access_date is None: return HttpResponseBadRequest("access-date is a required parameter") entry = Entry.objects.get(id=entry_id) if changerecord_id is not None: cr = ChangeRecord.objects.get(id=changerecord_id) else: cr = entry.latest_published if cr is None: return HttpResponseBadRequest("this entry has never been " "published: you must request a " "specific change record") data = cr.c_hash.data xml = XMLTree(data) def names_to_objects(names): objs = [] for name in names: forename = ''.join( name.xpath("./tei:forename", namespaces=default_namespace_mapping)[0].itertext()) surname = ''.join( name.xpath("./tei:surname", namespaces=default_namespace_mapping)[0].itertext()) # pylint: disable=invalid-name genName = ''.join( name.xpath("./tei:genName", namespaces=default_namespace_mapping)[0].itertext()) objs.append({ 'forename': forename, 'surname': surname, 'genName': genName }) return objs authors = names_to_objects( xml.tree.xpath("//btw:credit//tei:persName", namespaces=default_namespace_mapping)) editors = names_to_objects( xml.tree.xpath("//tei:editor/tei:persName", namespaces=default_namespace_mapping)) url = cr.get_absolute_url() if version_specific \ else entry.get_absolute_url() return render(request, "lexicography/mods.xml", { 'title': cr.lemma, 'version': util.version(), 'year': datetime.date.today().year, 'authors': authors, 'editors': editors, 'url': request.build_absolute_uri(url), 'access_date': access_date }, content_type="application/xml+mods")
def _show_changerecord(request, cr): get_token(request) can_author = usermod.can_author(request.user) show_published = not can_author prepared = cr.c_hash.get_display_data() if prepared is None: data = None bibl_data = '{}' else: data = article.hyperlink_prepared_data(prepared, show_published) bibl_data = json.dumps(prepared["bibl_data"]) # We want an edit option only if this record is the latest and if # the user can edit it. edit_url = (reverse("lexicography_entry_update", args=(cr.entry.id, )) if (cr.entry.latest == cr and cr.entry.is_editable_by(request.user)) else '') fetch_url = '' if data is not None else \ reverse('lexicography_changerecord_details', args=(cr.pk, )) # We want to warn the user of any version that has been published # and is not this version. We pass cr.entry so that we can get the # non-version specific URL of to view the entry. latest_published = cr.entry \ if (cr.entry.latest_published is not None and cr != cr.entry.latest_published) else None # If the user is able to see unpublished articles, then we want to # warn the user if there exist a later version which is # unpublished. latest_unpublished = cr.entry.latest if can_author and \ (cr != cr.entry.latest) and \ (cr.entry.latest != cr.entry.latest_published) else None # Provide a history for the article history = [] for version in cr.entry.changerecord_set.filter(published=True) \ .order_by("-datetime"): history.append({ 'url': version.get_absolute_url(), 'date': version.datetime }) return render( request, 'lexicography/details.html', context={ 'bibliographical_data': { 'version': util.version() }, 'page_title': cr.lemma, 'fetch_url': fetch_url, 'semantic_field_fetch_url': reverse("semantic_fields_semanticfield-list"), 'data': data, 'bibl_data': bibl_data, 'edit_url': edit_url, 'is_published': cr.published, 'latest_unpublished': latest_unpublished, 'latest_published': latest_published, 'permalink': cr.entry.get_absolute_url(), 'version_permalink': cr.get_absolute_url(), 'can_author': can_author, 'history': history })
def mods(request, entry_id, changerecord_id=None): access_date = request.GET.get('access-date', None) version_specific = request.GET.get('version-specific', None) if access_date is None: return HttpResponseBadRequest( "access-date is a required parameter") entry = Entry.objects.get(id=entry_id) if changerecord_id is not None: cr = ChangeRecord.objects.get(id=changerecord_id) else: cr = entry.latest_published if cr is None: return HttpResponseBadRequest("this entry has never been " "published: you must request a " "specific change record") data = cr.c_hash.data xml = XMLTree(data) def names_to_objects(names): objs = [] for name in names: forename = ''.join( name.xpath("./tei:forename", namespaces=default_namespace_mapping)[0].itertext()) surname = ''.join( name.xpath("./tei:surname", namespaces=default_namespace_mapping)[0].itertext()) # pylint: disable=invalid-name genName = ''.join( name.xpath("./tei:genName", namespaces=default_namespace_mapping)[0].itertext()) objs.append({ 'forename': forename, 'surname': surname, 'genName': genName }) return objs authors = names_to_objects( xml.tree.xpath("//btw:credit//tei:persName", namespaces=default_namespace_mapping)) editors = names_to_objects( xml.tree.xpath("//tei:editor/tei:persName", namespaces=default_namespace_mapping)) url = cr.get_absolute_url() if version_specific \ else entry.get_absolute_url() return render(request, "lexicography/mods.xml", { 'title': cr.lemma, 'version': util.version(), 'year': datetime.date.today().year, 'authors': authors, 'editors': editors, 'url': request.build_absolute_uri(url), 'access_date': access_date }, content_type="application/xml+mods")
def version(parser, token): return TextNode(util.version())