|  |  | @ -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, | 
			
		
	
		
		
			
				
					
					|  |  |  |     ) |  |  |  |     ) | 
			
		
	
		
		
			
				
					
					|  |  |  | 
 |  |  |  | 
 | 
			
		
	
	
		
		
			
				
					|  |  | 
 |