Use an absolute url for open graph image
This commit is contained in:
parent
3b09af8972
commit
a3bd932a2d
7 changed files with 61 additions and 12 deletions
|
@ -44,5 +44,10 @@ def plausible(request):
|
|||
return {"plausible_domain": settings.PLAUSIBLE_DOMAIN}
|
||||
|
||||
|
||||
def open_graph_image(request):
|
||||
return {"open_graph_image": Attachment.objects.get_open_graph_image()}
|
||||
def open_graph_image_url(request):
|
||||
open_graph_image = Attachment.objects.get_open_graph_image()
|
||||
return {
|
||||
"open_graph_image_url": open_graph_image.processed_file.get_full_absolute_url(
|
||||
request
|
||||
)
|
||||
}
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
import re
|
||||
|
||||
import markdown
|
||||
from django.conf import settings
|
||||
from django.contrib.auth.models import AbstractUser
|
||||
from django.contrib.contenttypes.models import ContentType
|
||||
from django.db import models
|
||||
|
@ -12,6 +11,7 @@ from django.utils import timezone
|
|||
from markdown.extensions.codehilite import CodeHiliteExtension
|
||||
|
||||
from articles.markdown import LazyLoadingImageExtension
|
||||
from articles.utils import build_full_absolute_url
|
||||
|
||||
|
||||
class User(AbstractUser):
|
||||
|
@ -67,10 +67,7 @@ class Article(AdminUrlMixin, models.Model):
|
|||
|
||||
def get_full_absolute_url(self, request: HttpRequest = None):
|
||||
url = self.get_absolute_url()
|
||||
if request:
|
||||
return request.build_absolute_uri(url)
|
||||
else:
|
||||
return (settings.BLOG["base_url"] + url).replace("//", "/")
|
||||
return build_full_absolute_url(request, url)
|
||||
|
||||
def get_abstract(self):
|
||||
html = self.get_formatted_content()
|
||||
|
|
|
@ -12,8 +12,8 @@
|
|||
<meta property="og:site_name" content="{{ blog_title }}">
|
||||
<meta property="og:title" content="{{ article.title }}" />
|
||||
{% endif %}
|
||||
{% if open_graph_image %}
|
||||
<meta property="og:image" content="{{ open_graph_image.processed_file.url }}">
|
||||
{% if open_graph_image_url %}
|
||||
<meta property="og:image" content="{{ open_graph_image_url }}">
|
||||
{% endif %}
|
||||
<title>{% block title %}Home | {% endblock %}Gab's Notes</title>
|
||||
<link rel="stylesheet" id="code-light" href="{% static 'code-light.css' %}" type="text/css">
|
||||
|
|
8
articles/utils.py
Normal file
8
articles/utils.py
Normal file
|
@ -0,0 +1,8 @@
|
|||
from django.conf import settings
|
||||
|
||||
|
||||
def build_full_absolute_url(request, url):
|
||||
if request:
|
||||
return request.build_absolute_uri(url)
|
||||
else:
|
||||
return (settings.BLOG["base_url"] + url).replace("//", "/")
|
27
attachments/migrations/0006_auto_20201128_2022.py
Normal file
27
attachments/migrations/0006_auto_20201128_2022.py
Normal file
|
@ -0,0 +1,27 @@
|
|||
# Generated by Django 3.1.1 on 2020-11-28 19:22
|
||||
|
||||
from django.db import migrations
|
||||
|
||||
import attachments.models
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
("attachments", "0005_attachment_open_graph_image"),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name="attachment",
|
||||
name="original_file",
|
||||
field=attachments.models.AbsoluteUrlFileField(upload_to=""),
|
||||
),
|
||||
migrations.AlterField(
|
||||
model_name="attachment",
|
||||
name="processed_file",
|
||||
field=attachments.models.AbsoluteUrlFileField(
|
||||
blank=True, null=True, upload_to=""
|
||||
),
|
||||
),
|
||||
]
|
|
@ -6,8 +6,20 @@ import requests
|
|||
from django.conf import settings
|
||||
from django.core.files import File
|
||||
from django.db import models
|
||||
from django.db.models.fields.files import FieldFile
|
||||
from PIL import Image
|
||||
|
||||
from articles.utils import build_full_absolute_url
|
||||
|
||||
|
||||
class AbsoluteUrlFieldFile(FieldFile):
|
||||
def get_full_absolute_url(self, request):
|
||||
return build_full_absolute_url(request, self.url)
|
||||
|
||||
|
||||
class AbsoluteUrlFileField(models.FileField):
|
||||
attr_class = AbsoluteUrlFieldFile
|
||||
|
||||
|
||||
class AttachmentManager(models.Manager):
|
||||
def get_open_graph_image(self):
|
||||
|
@ -16,8 +28,8 @@ class AttachmentManager(models.Manager):
|
|||
|
||||
class Attachment(models.Model):
|
||||
description = models.CharField(max_length=500)
|
||||
original_file = models.FileField()
|
||||
processed_file = models.FileField(blank=True, null=True)
|
||||
original_file = AbsoluteUrlFileField()
|
||||
processed_file = AbsoluteUrlFileField(blank=True, null=True)
|
||||
open_graph_image = models.BooleanField(blank=True)
|
||||
|
||||
objects = AttachmentManager()
|
||||
|
|
|
@ -101,7 +101,7 @@ TEMPLATES = [
|
|||
"articles.context_processors.date_format",
|
||||
"articles.context_processors.git_version",
|
||||
"articles.context_processors.plausible",
|
||||
"articles.context_processors.open_graph_image",
|
||||
"articles.context_processors.open_graph_image_url",
|
||||
],
|
||||
},
|
||||
},
|
||||
|
|
Reference in a new issue