feat: Allow feed loading from the add links view

This commit is contained in:
Cristian 2020-07-02 15:54:25 -05:00
parent f373df7bd4
commit 8bdfa18a3f
3 changed files with 38 additions and 12 deletions

7
archivebox/core/forms.py Normal file
View file

@ -0,0 +1,7 @@
from django import forms
CHOICES = (('url', 'URL'), ('feed', 'Feed'))
class AddLinkForm(forms.Form):
url = forms.URLField()
source = forms.ChoiceField(choices=CHOICES, widget=forms.RadioSelect, initial='url')

View file

@ -22,6 +22,8 @@ from ..config import (
from ..util import base_url, ansi_to_html
from .. main import add
from .forms import AddLinkForm
class MainIndex(View):
template = 'main_index.html'
@ -51,28 +53,39 @@ class AddLinks(View):
if not request.user.is_authenticated and not PUBLIC_INDEX:
return redirect(f'/admin/login/?next={request.path}')
context = {}
context = {
"form": AddLinkForm()
}
return render(template_name=self.template, request=request, context=context)
def post(self, request):
url = request.POST['url']
if url:
#url = request.POST['url']
#if url:
form = AddLinkForm(request.POST)
if form.is_valid():
url = form.cleaned_data["url"]
print(f'[+] Adding URL: {url}')
if form.cleaned_data["source"] == "url":
key = "import_str"
else:
key = "import_path"
input_kwargs = {
key: url,
"update_all": False,
"out_dir": OUTPUT_DIR,
}
add_stdout = StringIO()
with redirect_stdout(add_stdout):
extracted_links = add(
import_str=url,
update_all=False,
out_dir=OUTPUT_DIR,
)
extracted_links = add(**input_kwargs)
print(add_stdout.getvalue())
context = {
"stdout": ansi_to_html(add_stdout.getvalue())
"stdout": ansi_to_html(add_stdout.getvalue()),
"form": AddLinkForm()
}
else:
context = {"stdout": "Please enter a URL"}
context = {"form": form}
return render(template_name=self.template, request=request, context=context)

View file

@ -159,6 +159,12 @@
.title-col a {
color: black;
}
.ul-form {
list-style: none;
}
.ul-form li {
list-style: none;
}
</style>
<link rel="stylesheet" href="{% static 'bootstrap.min.css' %}">
<link rel="stylesheet" href="{% static 'jquery.dataTables.min.css' %}"/>
@ -199,9 +205,9 @@
<center>
{{ stdout | safe }}
<br/><br/>
<form action="?" method="POST">{% csrf_token %}
<form action="?" method="POST" class="ul-form">{% csrf_token %}
Add new links...<br/>
<input type="text" name="url" placeholder="URL of page or feed..."/><br/>
{{ form.as_ul }}
<button role="submit">Add</button>
</form>
</center>