Skip to content

Commit

Permalink
Browse files Browse the repository at this point in the history
Merge pull request #119 from molgen/publications-feed
publications: Add XML feed for last publications
  • Loading branch information
donald committed Aug 6, 2021
2 parents c86d7be + f1f7a4d commit 74cddeb
Show file tree
Hide file tree
Showing 2 changed files with 32 additions and 1 deletion.
4 changes: 3 additions & 1 deletion config/urls.py
Expand Up @@ -14,6 +14,7 @@
from mpicms.base.api import api_router
from mpicms.personal.views import ContactListView, RawContactListView
from mpicms.events.views import ics_view
from mpicms.publications.views import PublicationsFeedView


urlpatterns = [
Expand Down Expand Up @@ -46,7 +47,8 @@
path('contacts/', ContactListView.as_view(), name='contacts'),
path('contactsraw/', RawContactListView.as_view(), name='contactsraw'),

path('events/ics', ics_view, name='ics')
path('events/ics', ics_view, name='ics'),
path('feed/last_publications', PublicationsFeedView.as_view()),
] + static(
settings.MEDIA_URL, document_root=settings.MEDIA_ROOT
)
Expand Down
29 changes: 29 additions & 0 deletions mpicms/publications/views.py
@@ -0,0 +1,29 @@
from django.http import HttpResponse
from django.views.generic.base import View

from .models import Publication

class PublicationsFeedView(View):

# 2DO: check for legal XML characters everywhere https://www.w3.org/TR/xml/#NT-Char
# 2DO: Put HTML content in <![CDATA[...]]> ?
# If we don't make DOI into element:
# 2DO: escape invalid characterds in attribute ( &quot; &amp; &lt; )
# If we don't convert the rich text fields to plain text)
# 2DO: Remove editor artefacts from ricch text fields ("<p>blabla</p>") ?
# 2DO: Remove <i> from source fields ("<p><i>Mol Cell.</i></p>") ?
# maybe use xml.dom for that?

def get(self, request, *args, **kwargs):
response = HttpResponse(content_type="application/rss+xml; charset=utf-8")
response.write('<?xml version="1.0" encoding="utf-8" ?>\n')
response.write('<publication-list>\n')
for item in Publication.objects.order_by('sort_order')[:3]:
response.write(f' <publication doi="{item.doi}">\n')
response.write(f' <authors>{item.authors}</authors>\n');
response.write(f' <title>{item.title}</title>\n');
response.write(f' <source>{item.source}</source>\n');
response.write(f' <groups>{item.groups}</groups>\n');
response.write(' </publication>\n')
response.write('</publication-list>\n')
return response;

0 comments on commit 74cddeb

Please sign in to comment.