feat: fix thumbnails button
This commit is contained in:
@@ -69,3 +69,4 @@ class PlaceAdmin(admin.ModelAdmin):
|
||||
list_display = ['title', 'category', 'sort', 'created']
|
||||
search_fields = ['title']
|
||||
list_filter = ['category']
|
||||
change_list_template = 'admin/place_tools.html'
|
||||
|
||||
@@ -81,16 +81,17 @@ class Place(models.Model):
|
||||
return rv
|
||||
|
||||
def update_cover_image(self):
|
||||
path = self.fixed_os_path('cov.jpg')
|
||||
if self.image:
|
||||
img = Image.open(self.image.path)
|
||||
thumb = ImageOps.fit(img, (600, 400))
|
||||
# img.thumbnail((600, 400))
|
||||
path.parent.mkdir(parents=True, exist_ok=True)
|
||||
path = self.image.path.replace('img.jpg', 'cov.jpg')
|
||||
# path.parent.mkdir(parents=True, exist_ok=True)
|
||||
thumb.save(path, 'jpeg')
|
||||
else:
|
||||
if path.exists():
|
||||
os.remove(path)
|
||||
# else:
|
||||
# path = self.fixed_os_path('cov.jpg')
|
||||
# if path.exists():
|
||||
# os.remove(path)
|
||||
|
||||
@staticmethod
|
||||
def update_json():
|
||||
@@ -115,6 +116,11 @@ class Place(models.Model):
|
||||
})
|
||||
return rv
|
||||
|
||||
@staticmethod
|
||||
def recreateThumbnails() -> None:
|
||||
for x in Place.objects.all():
|
||||
x.update_cover_image()
|
||||
|
||||
|
||||
@receiver(post_delete, sender=Place)
|
||||
def on_delete_Place(sender, instance: 'Place', using, **kwargs):
|
||||
|
||||
23
backend/app/urls.py
Normal file
23
backend/app/urls.py
Normal file
@@ -0,0 +1,23 @@
|
||||
from django.http import HttpRequest, JsonResponse
|
||||
from django.urls import path
|
||||
|
||||
from app.models.place import Place
|
||||
|
||||
|
||||
def run_tool(request: HttpRequest):
|
||||
if request.method != 'POST':
|
||||
return JsonResponse({'error': 'unsupported method type'})
|
||||
|
||||
action = request.POST.get('action')
|
||||
|
||||
if action == 'generate-thumbnails':
|
||||
Place.recreateThumbnails()
|
||||
else:
|
||||
return JsonResponse({'error': 'unknown action'})
|
||||
|
||||
return JsonResponse({'success': 'ok'})
|
||||
|
||||
|
||||
urlpatterns = [
|
||||
path('tool/', run_tool, name='exec-tool'),
|
||||
]
|
||||
@@ -68,7 +68,7 @@ ROOT_URLCONF = 'config.urls'
|
||||
TEMPLATES = [
|
||||
{
|
||||
'BACKEND': 'django.template.backends.django.DjangoTemplates',
|
||||
'DIRS': [], # BASE_DIR / 'templates'
|
||||
'DIRS': [BASE_DIR / 'templates'], # BASE_DIR / 'templates'
|
||||
'APP_DIRS': True,
|
||||
'OPTIONS': {
|
||||
'context_processors': [
|
||||
|
||||
@@ -23,4 +23,5 @@ from django.urls import include, path
|
||||
urlpatterns = [
|
||||
path(settings.ADMIN_URL, admin.site.urls),
|
||||
path('', include('common.urls')),
|
||||
path('app/', include('app.urls')),
|
||||
] + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
|
||||
|
||||
14
backend/templates/admin/place_tools.html
Normal file
14
backend/templates/admin/place_tools.html
Normal file
@@ -0,0 +1,14 @@
|
||||
{% extends "admin/change_list.html" %}
|
||||
|
||||
{% block object-tools-items %}
|
||||
{{ block.super }}
|
||||
<li>
|
||||
<form action="{% url 'exec-tool' %}" method="post" autocomplete="off">
|
||||
{% csrf_token %}
|
||||
<select name="action" onchange="this.form.submit()" style="width:3em">
|
||||
<option value="">...</option>
|
||||
<option value="generate-thumbnails">Rebuild Thumbnails</option>
|
||||
</select>
|
||||
</form>
|
||||
</li>
|
||||
{% endblock %}
|
||||
Reference in New Issue
Block a user