Add support for Debian Bullseye

Added `on_delete` attributes, updated ForceCanonicalHostnameMiddleware for
compatibility and added Dockerfile for Bullseye.
This commit is contained in:
Ben Sturmfels 2023-09-12 10:55:30 +10:00
parent aa6d3626be
commit 05323a307d
Signed by: bsturmfels
GPG key ID: 023C05E2C9C068F0
7 changed files with 27 additions and 9 deletions

View file

@ -0,0 +1,12 @@
# docker build --tag sfconservancy.org-bullseye - < Dockerfile-debian-bullseye
# docker run --tty --interactive --rm=true --publish=8000:8000 --mount type=bind,source=$(pwd),target=/var/www/website --mount type=bind,source=$(pwd)/conservancy-website.sqlite3,target=/var/lib/www/database/conservancy-website.sqlite3 sfconservancy.org-bullseye:latest
ARG DEBIAN_FRONTEND=noninteractive
FROM debian:bullseye
RUN apt-get update && apt-get upgrade -y
RUN apt-get install -y python3 python3-pip python3-wheel sqlite3
RUN apt-get install -y python3-django python3-bs4 python3-django-countries
RUN python3 -m pip freeze
WORKDIR /var/www/website/www
ENTRYPOINT ["python3", "/var/www/website/www/manage.py", "runserver", "0.0.0.0:8000"]

View file

@ -1,5 +1,5 @@
# docker build --tag sfconservancy.org - < Dockerfile-debian-stretch # docker build --tag sfconservancy.org-stretch - < Dockerfile-debian-stretch
# docker run --tty --interactive --rm=true --publish=8000:8000 --mount type=bind,source=$(pwd),target=/var/www/website --mount type=bind,source=$(pwd)/conservancy-website.sqlite3,target=/var/lib/www/database/conservancy-website.sqlite3 sfconservancy.org:latest # docker run --tty --interactive --rm=true --publish=8000:8000 --mount type=bind,source=$(pwd),target=/var/www/website --mount type=bind,source=$(pwd)/conservancy-website.sqlite3,target=/var/lib/www/database/conservancy-website.sqlite3 sfconservancy.org-stretch:latest
ARG DEBIAN_FRONTEND=noninteractive ARG DEBIAN_FRONTEND=noninteractive

View file

@ -27,7 +27,7 @@ class Entry(models.Model, bsoup.SoupModelMixin):
summary = models.TextField(help_text="Use raw HTML. Unlike in the press release model, this summary is not included at the beginning of the body when the entry is displayed.") summary = models.TextField(help_text="Use raw HTML. Unlike in the press release model, this summary is not included at the beginning of the body when the entry is displayed.")
body = models.TextField(help_text="Use raw HTML. Include the full body of the post.") body = models.TextField(help_text="Use raw HTML. Include the full body of the post.")
pub_date = models.DateTimeField() pub_date = models.DateTimeField()
author = models.ForeignKey(Person) author = models.ForeignKey(Person, on_delete=models.PROTECT)
tags = models.ManyToManyField(EntryTag, blank=True) tags = models.ManyToManyField(EntryTag, blank=True)
date_created = models.DateTimeField(auto_now_add=True) date_created = models.DateTimeField(auto_now_add=True)

View file

@ -2,6 +2,7 @@ from django.conf.urls import url
from . import views from . import views
app_name = "ccs_upload"
urlpatterns = [ urlpatterns = [
url(r'^$', views.upload, name='form') url(r'^$', views.upload, name='form')
] ]

View file

@ -39,8 +39,10 @@ class Event(models.Model):
description = models.TextField(blank=True) description = models.TextField(blank=True)
people = models.ManyToManyField(Person, blank=True) people = models.ManyToManyField(Person, blank=True)
location = models.CharField(max_length=1000) location = models.CharField(max_length=1000)
earth_location = models.ForeignKey(EarthLocation, null=True, blank=True, earth_location = models.ForeignKey(
help_text="Label will not be displayed") EarthLocation, null=True, blank=True, help_text="Label will not be displayed",
on_delete=models.CASCADE
)
tags = models.ManyToManyField(EventTag, blank=True) tags = models.ManyToManyField(EventTag, blank=True)
date_created = models.DateTimeField(auto_now_add=True) date_created = models.DateTimeField(auto_now_add=True)
@ -71,7 +73,7 @@ class EventMedia(models.Model):
includes transcripts, audio, and video pieces includes transcripts, audio, and video pieces
""" """
event = models.ForeignKey(Event) event = models.ForeignKey(Event, on_delete=models.CASCADE)
format = models.CharField(max_length=1, format = models.CharField(max_length=1,
choices=(('T', 'Transcript'), choices=(('T', 'Transcript'),
('A', 'Audio'), ('A', 'Audio'),

View file

@ -97,8 +97,8 @@ class ExternalArticle(models.Model):
tags = models.ManyToManyField(ExternalArticleTag, blank=True) tags = models.ManyToManyField(ExternalArticleTag, blank=True)
people = models.ManyToManyField(Person, blank=True) people = models.ManyToManyField(Person, blank=True)
event = models.ForeignKey(Event, null=True, blank=True) event = models.ForeignKey(Event, null=True, blank=True, on_delete=models.CASCADE)
press_release = models.ForeignKey(PressRelease, null=True, blank=True) press_release = models.ForeignKey(PressRelease, null=True, blank=True, on_delete=models.CASCADE)
date_created = models.DateField(auto_now_add=True) date_created = models.DateField(auto_now_add=True)

View file

@ -1,8 +1,11 @@
from django import http from django import http
from django.conf import settings from django.conf import settings
from django.utils.cache import patch_response_headers from django.utils.cache import patch_response_headers
from django.utils.deprecation import MiddlewareMixin
class ForceCanonicalHostnameMiddleware:
class ForceCanonicalHostnameMiddleware(MiddlewareMixin):
# MiddlewareMixin provides compatiiblity for Django 1.10 style middleware.
def process_request(self, request): def process_request(self, request):
"""Modified common middleware for Conservancy site """Modified common middleware for Conservancy site