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.core.exceptions import ValidationError
|
||||||
from django.forms import ModelForm, TextInput, CharField
|
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
|
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"]
|
fields = ['name', 'full_name', "description_md", "tags"]
|
||||||
|
|
||||||
|
|
||||||
class AddWikipediaForm(ModelForm):
|
class WikipediaForm(ModelForm):
|
||||||
tags = TagField()
|
|
||||||
|
|
||||||
class Meta:
|
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
|
Add Reference
|
||||||
</a>
|
</a>
|
||||||
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
|
<div class="dropdown-menu" aria-labelledby="navbarDropdownMenuLink">
|
||||||
<a class="dropdown-item" href="#">Wikipedia Entry</a>
|
<a class="dropdown-item" href="{% url "add_wikipedia" acro.slug %}">Wikipedia Entry</a>
|
||||||
<a class="dropdown-item" href="#">Paper</a>
|
<a class="dropdown-item" href="{% url "add_paper" acro.slug %}">Paper</a>
|
||||||
<a class="dropdown-item" href="#">Website</a>
|
<a class="dropdown-item" href="{% url "add_weblink" acro.slug %}">Website</a>
|
||||||
</div>
|
</div>
|
||||||
</li>
|
</li>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
|
@ -26,6 +26,9 @@ urlpatterns = [
|
||||||
path('acronym/add', views.AddView.as_view(), name="add"),
|
path('acronym/add', views.AddView.as_view(), name="add"),
|
||||||
path('acronym/<str:slug>', views.DetailView.as_view(), name='detail'),
|
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>/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('acronyms', views.OverView.as_view(), name='overview'),
|
||||||
path('tags', views.TagListView.as_view(), name='tags'),
|
path('tags', views.TagListView.as_view(), name='tags'),
|
||||||
path('tag', RedirectView.as_view(pattern_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 = requests.get("https://en.wikipedia.org/api/rest_v1/page/summary/" + title)
|
||||||
r.raise_for_status()
|
r.raise_for_status()
|
||||||
data = r.json()
|
data = r.json()
|
||||||
print(data)
|
# print(data)
|
||||||
|
|
||||||
r2 = requests.get("https://en.wikipedia.org/api/rest_v1/page/media-list/" + title)
|
r2 = requests.get("https://en.wikipedia.org/api/rest_v1/page/media-list/" + title)
|
||||||
r2.raise_for_status()
|
r2.raise_for_status()
|
||||||
|
|
|
@ -3,11 +3,12 @@ from datetime import date
|
||||||
from django.contrib.auth.mixins import LoginRequiredMixin
|
from django.contrib.auth.mixins import LoginRequiredMixin
|
||||||
from django.contrib.messages.views import SuccessMessageMixin
|
from django.contrib.messages.views import SuccessMessageMixin
|
||||||
from django.http import HttpResponse
|
from django.http import HttpResponse
|
||||||
|
from django.urls import reverse
|
||||||
from django.views import generic
|
from django.views import generic
|
||||||
from rest_framework import viewsets, filters
|
from rest_framework import viewsets, filters
|
||||||
|
|
||||||
from acros.forms import EditForm, AddForm
|
from acros.forms import EditForm, AddForm, WikipediaForm, PaperForm, WeblinkForm
|
||||||
from acros.models import Acronym, Tag, AcroOfTheDay
|
from acros.models import Acronym, Tag, AcroOfTheDay, WikipediaLink, PaperReference, Weblink
|
||||||
from acros.serializers import AcronymSerializer, AcronymListSerializer, TagSerializer
|
from acros.serializers import AcronymSerializer, AcronymListSerializer, TagSerializer
|
||||||
from acros.utils.assets import get_css
|
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'
|
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):
|
class TagListView(generic.ListView):
|
||||||
template_name = "acros/taglist.html"
|
template_name = "acros/taglist.html"
|
||||||
model = Tag
|
model = Tag
|
||||||
|
|
Loading…
Reference in a new issue