mirror of https://gitlab.com/brutaldon/brutaldon
Make media posting work, with limitations.
Doesn't work with replies (for reasons I don't 100% understand yet). Only one media field set in the form, though the rest could be added.
This commit is contained in:
parent
f3d34733fe
commit
1004b88779
|
@ -127,3 +127,7 @@ STATIC_ROOT = os.path.join(BASE_DIR, 'static')
|
||||||
# Sanitizer settings
|
# Sanitizer settings
|
||||||
SANITIZER_ALLOWED_TAGS = ['a', 'p', 'img', 'br', 'i', 'strong']
|
SANITIZER_ALLOWED_TAGS = ['a', 'p', 'img', 'br', 'i', 'strong']
|
||||||
SANITIZER_ALLOWED_ATTRIBUTES = ['href', 'src']
|
SANITIZER_ALLOWED_ATTRIBUTES = ['href', 'src']
|
||||||
|
|
||||||
|
# File upload settings.
|
||||||
|
# Important: media will not work if you change this.
|
||||||
|
FILE_UPLOAD_HANDLERS = ["django.core.files.uploadhandler.TemporaryFileUploadHandler"]
|
||||||
|
|
|
@ -1,9 +1,9 @@
|
||||||
{% load widget_tweaks %}
|
{% load widget_tweaks %}
|
||||||
|
|
||||||
{% if reply %}
|
{% if reply %}
|
||||||
<form method="post" action="{% url "reply" toot.id %}">
|
<form method="post" action="{% url "reply" toot.id %}" enctype="multipart/form-data">
|
||||||
{% else %}
|
{% else %}
|
||||||
<form method="post" action="{% url "toot" %}">
|
<form method="post" action="{% url "toot" %}" enctype="multipart/form-data">
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% csrf_token %}
|
{% csrf_token %}
|
||||||
|
|
||||||
|
@ -32,6 +32,21 @@
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
|
<div class="field">
|
||||||
|
<label class="label"> {{ form.media_file_1.label }}</label>
|
||||||
|
<div class="content">
|
||||||
|
{% render_field form.media_file_1 %}
|
||||||
|
</div>
|
||||||
|
<div class="control">
|
||||||
|
{% render_field form.media_text_1 class+="input" placeholder="Describe attachment" %}
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
{{ form.errors }}
|
||||||
|
</div>
|
||||||
|
|
||||||
<div class="field">
|
<div class="field">
|
||||||
<div class="control">
|
<div class="control">
|
||||||
<input type="submit" class="button is-primary"
|
<input type="submit" class="button is-primary"
|
||||||
|
|
|
@ -5,6 +5,7 @@ from brutaldon.forms import LoginForm, SettingsForm, PostForm
|
||||||
from brutaldon.models import Client, Account
|
from brutaldon.models import Client, Account
|
||||||
from mastodon import Mastodon
|
from mastodon import Mastodon
|
||||||
from urllib import parse
|
from urllib import parse
|
||||||
|
from django.core.files.uploadhandler import TemporaryFileUploadHandler
|
||||||
|
|
||||||
class NotLoggedInException(Exception):
|
class NotLoggedInException(Exception):
|
||||||
pass
|
pass
|
||||||
|
@ -165,11 +166,22 @@ def toot(request):
|
||||||
elif request.method == 'POST':
|
elif request.method == 'POST':
|
||||||
form = PostForm(request.POST, request.FILES)
|
form = PostForm(request.POST, request.FILES)
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
# create media objects
|
|
||||||
mastodon = get_mastodon(request)
|
mastodon = get_mastodon(request)
|
||||||
|
|
||||||
|
# create media objects
|
||||||
|
media_objects = []
|
||||||
|
for index in range(1,5):
|
||||||
|
if 'media_file_'+str(index) in request.FILES:
|
||||||
|
media_objects.append(
|
||||||
|
mastodon.media_post(request.FILES['media_file_'+str(index)]
|
||||||
|
.temporary_file_path(),
|
||||||
|
description=request.POST.get('media_text_'
|
||||||
|
+str(index),
|
||||||
|
None)))
|
||||||
mastodon.status_post(status=form.cleaned_data['status'],
|
mastodon.status_post(status=form.cleaned_data['status'],
|
||||||
visibility=form.cleaned_data['visibility'],
|
visibility=form.cleaned_data['visibility'],
|
||||||
spoiler_text=form.cleaned_data['spoiler_text'])
|
spoiler_text=form.cleaned_data['spoiler_text'],
|
||||||
|
media_ids=media_objects)
|
||||||
return redirect(home)
|
return redirect(home)
|
||||||
else:
|
else:
|
||||||
return render(request, 'main/post.html',
|
return render(request, 'main/post.html',
|
||||||
|
@ -198,6 +210,16 @@ def reply(request, id):
|
||||||
if form.is_valid():
|
if form.is_valid():
|
||||||
# create media objects
|
# create media objects
|
||||||
mastodon = get_mastodon(request)
|
mastodon = get_mastodon(request)
|
||||||
|
# create media objects
|
||||||
|
media_objects = []
|
||||||
|
for index in range(1,5):
|
||||||
|
if 'media_file_'+str(index) in request.FILES:
|
||||||
|
media_objects.append(
|
||||||
|
mastodon.media_post(request.FILES['media_file_'+str(index)]
|
||||||
|
.temporary_file_path(),
|
||||||
|
description=request.POST.get('media_text_'
|
||||||
|
+str(index),
|
||||||
|
None)))
|
||||||
mastodon.status_post(status=form.cleaned_data['status'],
|
mastodon.status_post(status=form.cleaned_data['status'],
|
||||||
visibility=form.cleaned_data['visibility'],
|
visibility=form.cleaned_data['visibility'],
|
||||||
spoiler_text=form.cleaned_data['spoiler_text'],
|
spoiler_text=form.cleaned_data['spoiler_text'],
|
||||||
|
|
Loading…
Reference in New Issue