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:
parent
22773a1a0a
commit
fc093c8879
9 changed files with 101 additions and 12 deletions
|
@ -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']
|
||||
|
|
8
acros/templates/acros/addform.html
Normal file
8
acros/templates/acros/addform.html
Normal file
|
@ -0,0 +1,8 @@
|
|||
{% load bootstrap4 %}
|
||||
<form method="post">
|
||||
{% csrf_token %}
|
||||
{% bootstrap_form form %}
|
||||
{% buttons %}
|
||||
<input type="submit" value="Add">
|
||||
{% endbuttons %}
|
||||
</form>
|
14
acros/templates/acros/addpaper.html
Normal file
14
acros/templates/acros/addpaper.html
Normal 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 %}
|
||||
|
10
acros/templates/acros/addwebsite.html
Normal file
10
acros/templates/acros/addwebsite.html
Normal file
|
@ -0,0 +1,10 @@
|
|||
{% extends 'base.html' %}
|
||||
|
||||
{% block heading %}
|
||||
<h1>Add Weblink</h1>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% include "acros/addform.html" %}
|
||||
{% endblock %}
|
||||
|
10
acros/templates/acros/addwiki.html
Normal file
10
acros/templates/acros/addwiki.html
Normal file
|
@ -0,0 +1,10 @@
|
|||
{% extends 'base.html' %}
|
||||
|
||||
{% block heading %}
|
||||
<h1>Add Wikipedia Link</h1>
|
||||
{% endblock %}
|
||||
|
||||
{% block content %}
|
||||
{% include "acros/addform.html" %}
|
||||
{% endblock %}
|
||||
|
|
@ -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 %}
|
||||
|
|
|
@ -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")),
|
||||
|
|
|
@ -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()
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue