1
0
Fork 0
mirror of https://github.com/Findus23/acronomy.git synced 2024-09-19 15:33:45 +02:00

allow adding references from webUI

This commit is contained in:
Lukas Winkler 2020-07-08 22:01:43 +02:00
parent 22773a1a0a
commit fc093c8879
Signed by: lukas
GPG key ID: 54DE4D798D244853
9 changed files with 101 additions and 12 deletions

View file

@ -1,7 +1,7 @@
from django.core.exceptions import ValidationError
from django.forms import ModelForm, TextInput, CharField
from acros.models import Acronym, Tag
from acros.models import Acronym, Tag, WikipediaLink, PaperReference, Weblink
from acros.utils.tags import parse_tags, edit_string_for_tags
@ -60,10 +60,22 @@ class AddForm(ModelForm):
fields = ['name', 'full_name', "description_md", "tags"]
class AddWikipediaForm(ModelForm):
tags = TagField()
class WikipediaForm(ModelForm):
class Meta:
model = Acronym
model = WikipediaLink
fields = ['name', 'full_name', "description_md", "tags"]
fields = ['title']
class PaperForm(ModelForm):
class Meta:
model = PaperReference
fields = ['bibcode']
class WeblinkForm(ModelForm):
class Meta:
model = Weblink
fields = ['url']

View file

@ -0,0 +1,8 @@
{% load bootstrap4 %}
<form method="post">
{% csrf_token %}
{% bootstrap_form form %}
{% buttons %}
<input type="submit" value="Add">
{% endbuttons %}
</form>

View file

@ -0,0 +1,14 @@
{% extends 'base.html' %}
{% block heading %}
<h1>Add Paper Reference</h1>
{% endblock %}
{% block content %}
<p>
Search for the paper on <a href="https://ui.adsabs.harvard.edu/" target="_blank" rel="noopener">ADS</a>
and then copy the bibcode (e.g. <code>2018A&A...616A...1G </code>) into this form:
</p>
{% include "acros/addform.html" %}
{% endblock %}

View file

@ -0,0 +1,10 @@
{% extends 'base.html' %}
{% block heading %}
<h1>Add Weblink</h1>
{% endblock %}
{% block content %}
{% include "acros/addform.html" %}
{% endblock %}

View file

@ -0,0 +1,10 @@
{% extends 'base.html' %}
{% block heading %}
<h1>Add Wikipedia Link</h1>
{% endblock %}
{% block content %}
{% include "acros/addform.html" %}
{% endblock %}

View file

@ -26,9 +26,9 @@
Add Reference
</a>
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
<a class="dropdown-item" href="#">Wikipedia Entry</a>
<a class="dropdown-item" href="#">Paper</a>
<a class="dropdown-item" href="#">Website</a>
<a class="dropdown-item" href="{% url "add_wikipedia" acro.slug %}">Wikipedia Entry</a>
<a class="dropdown-item" href="{% url "add_paper" acro.slug %}">Paper</a>
<a class="dropdown-item" href="{% url "add_weblink" acro.slug %}">Website</a>
</div>
</li>
{% endblock %}

View file

@ -26,6 +26,9 @@ urlpatterns = [
path('acronym/add', views.AddView.as_view(), name="add"),
path('acronym/<str:slug>', views.DetailView.as_view(), name='detail'),
path('acronym/<str:slug>/edit', views.EditView.as_view(), name='edit'),
path('acronym/<str:slug>/add/wikipedia', views.AddWikipediaView.as_view(), name='add_wikipedia'),
path('acronym/<str:slug>/add/paper', views.AddPaperView.as_view(), name='add_paper'),
path('acronym/<str:slug>/add/weblink', views.AddWeblinkView.as_view(), name='add_weblink'),
path('acronyms', views.OverView.as_view(), name='overview'),
path('tags', views.TagListView.as_view(), name='tags'),
path('tag', RedirectView.as_view(pattern_name="tags")),

View file

@ -6,7 +6,7 @@ def fetch_wikipedia_summary(title: str):
r = requests.get("https://en.wikipedia.org/api/rest_v1/page/summary/" + title)
r.raise_for_status()
data = r.json()
print(data)
# print(data)
r2 = requests.get("https://en.wikipedia.org/api/rest_v1/page/media-list/" + title)
r2.raise_for_status()

View file

@ -3,11 +3,12 @@ from datetime import date
from django.contrib.auth.mixins import LoginRequiredMixin
from django.contrib.messages.views import SuccessMessageMixin
from django.http import HttpResponse
from django.urls import reverse
from django.views import generic
from rest_framework import viewsets, filters
from acros.forms import EditForm, AddForm
from acros.models import Acronym, Tag, AcroOfTheDay
from acros.forms import EditForm, AddForm, WikipediaForm, PaperForm, WeblinkForm
from acros.models import Acronym, Tag, AcroOfTheDay, WikipediaLink, PaperReference, Weblink
from acros.serializers import AcronymSerializer, AcronymListSerializer, TagSerializer
from acros.utils.assets import get_css
@ -58,6 +59,37 @@ class AddView(LoginRequiredMixin, SuccessMessageMixin, generic.CreateView):
success_message = 'Acronym "%(name)s" was created successfully'
class AddReferenceView(LoginRequiredMixin, SuccessMessageMixin, generic.CreateView):
def form_valid(self, form):
acro = Acronym.objects.get(slug=self.kwargs.get('slug'))
form.instance.acronym = acro
return super().form_valid(form)
def get_success_url(self):
return reverse("detail", kwargs={"slug": self.kwargs.get('slug')})
class AddWikipediaView(AddReferenceView):
template_name = "acros/addwiki.html"
form_class = WikipediaForm
model = WikipediaLink
success_message = 'Wikipedia Reference "%(title)s" was created successfully'
class AddPaperView(AddReferenceView):
template_name = "acros/addpaper.html"
form_class = PaperForm
model = PaperReference
success_message = 'Paper Reference "%(title)s" was created successfully'
class AddWeblinkView(AddReferenceView):
template_name = "acros/addwebsite.html"
form_class = WeblinkForm
model = Weblink
success_message = 'Weblink "%(url)s" was created successfully'
class TagListView(generic.ListView):
template_name = "acros/taglist.html"
model = Tag