|
|
@ -1,12 +1,13 @@ |
|
|
|
from django.shortcuts import render, get_object_or_404 |
|
|
|
from django.shortcuts import render, get_object_or_404 |
|
|
|
from django.http import HttpResponse |
|
|
|
from django.http import HttpResponse |
|
|
|
|
|
|
|
from django.db.models.query import QuerySet |
|
|
|
from .models import Post |
|
|
|
from .models import Post |
|
|
|
from comments.models import Comment |
|
|
|
from comments.models import Comment |
|
|
|
|
|
|
|
|
|
|
|
from comments import services as comments_services |
|
|
|
from comments import services as comments_services |
|
|
|
|
|
|
|
|
|
|
|
import re |
|
|
|
import re |
|
|
|
|
|
|
|
from re import Match |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def index(request): |
|
|
|
def index(request): |
|
|
@ -15,6 +16,20 @@ def index(request): |
|
|
|
return render(request, "posts/index.html", {"posts": post_list}) |
|
|
|
return render(request, "posts/index.html", {"posts": post_list}) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def image_processing(match: Match, images: QuerySet) -> str: |
|
|
|
|
|
|
|
"""Заменяет строку с шорткодом [[image:slug]] на валидный HTML <img/> тег. |
|
|
|
|
|
|
|
Из match берется slug картинки, по которому потом выбираем из |
|
|
|
|
|
|
|
images ее url. Если объекта с таким slug нет (IndexError), то заменяем шорткод |
|
|
|
|
|
|
|
картинки на пустую строку.""" |
|
|
|
|
|
|
|
sl = match.group(1) |
|
|
|
|
|
|
|
try: |
|
|
|
|
|
|
|
url = images.filter(slug=sl)[0].image.url |
|
|
|
|
|
|
|
replacement = f"<figure class='image'><img src='{url}'/></figure>" |
|
|
|
|
|
|
|
except IndexError: |
|
|
|
|
|
|
|
replacement = "" |
|
|
|
|
|
|
|
return replacement |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
def detail(request, post_id): |
|
|
|
def detail(request, post_id): |
|
|
|
"""Страница с просмотром поста.""" |
|
|
|
"""Страница с просмотром поста.""" |
|
|
|
# вынести отсюда все. Также надо обработать текст поста тут. |
|
|
|
# вынести отсюда все. Также надо обработать текст поста тут. |
|
|
@ -30,7 +45,7 @@ def detail(request, post_id): |
|
|
|
# вывод картинок в посте, замена шаблона по регулярке |
|
|
|
# вывод картинок в посте, замена шаблона по регулярке |
|
|
|
post.text = re.sub( |
|
|
|
post.text = re.sub( |
|
|
|
r"\[\[image\:(.+?)\]\]", |
|
|
|
r"\[\[image\:(.+?)\]\]", |
|
|
|
lambda x: f"<img src='{images.filter(slug=x.group(1))[0].image.url}'/>", |
|
|
|
lambda x: image_processing(x, images), |
|
|
|
post.text, |
|
|
|
post.text, |
|
|
|
) |
|
|
|
) |
|
|
|
|
|
|
|
|
|
|
|