diff --git a/.circleci/config.yml b/.circleci/config.yml index 98a5f131..87fdf448 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -105,7 +105,7 @@ jobs: docker compose -f prod-docker-compose.yaml build docker compose -f prod-docker-compose.yaml up -d docker run --rm --network securedroporg_app curlimages/curl:7.80.0 -4 --retry 24 --retry-delay 5 --retry-all-errors http://app:8000/health/ok/ - docker compose -f prod-docker-compose.yaml exec django /bin/bash -c "./manage.py createdevdata --no-download" + docker compose -f prod-docker-compose.yaml exec django /bin/bash -c "./manage.py createdevdata" no_output_timeout: 5m - run: diff --git a/common/fixtures/devdata.json b/common/fixtures/devdata.json new file mode 100644 index 00000000..69b37210 --- /dev/null +++ b/common/fixtures/devdata.json @@ -0,0 +1 @@ +[{"model": "wagtailcore.collection", "pk": 1, "fields": {"path": "0001", "depth": 1, "numchild": 1, "name": "Root"}}, {"model": "wagtailcore.collection", "pk": 2, "fields": {"path": "00010001", "depth": 2, "numchild": 0, "name": "Animals"}}, {"model": "auth.user", "pk": 1, "fields": {"password": "pbkdf2_sha256$600000$kx8DzpGJkP0nEG6wVed3y7$I969toMhIV/959lCM2Gf3PvmJ1cgj5YqqbEtOq+v/Z8=", "last_login": "2024-07-25T21:02:32.035Z", "is_superuser": true, "username": "test", "first_name": "", "last_name": "", "email": "test@example.com", "is_staff": true, "is_active": true, "date_joined": "2024-07-25T21:02:16.045Z", "groups": [], "user_permissions": []}}, {"model": "common.customimage", "pk": 1, "fields": {"collection": 2, "title": "Bat", "file": "original_images/Bat.jpg", "width": 1920, "height": 2880, "created_at": "2024-07-25T21:04:26.730Z", "uploaded_by_user": ["test"], "focal_point_x": null, "focal_point_y": null, "focal_point_width": null, "focal_point_height": null, "file_size": 694750, "file_hash": "77611f00f02085cd0d72344fd487c1fee8698dd8"}}, {"model": "common.customimage", "pk": 2, "fields": {"collection": 2, "title": "Bee", "file": "original_images/Bee.jpg", "width": 1920, "height": 2763, "created_at": "2024-07-25T21:04:27.015Z", "uploaded_by_user": ["test"], "focal_point_x": null, "focal_point_y": null, "focal_point_width": null, "focal_point_height": null, "file_size": 506073, "file_hash": "8c30ce2d47fd9278348175057c20c5a684ea6d44"}}, {"model": "common.customimage", "pk": 3, "fields": {"collection": 2, "title": "Orange and white butterfly", "file": "original_images/Butterfly1.jpg", "width": 1920, "height": 1202, "created_at": "2024-07-25T21:04:27.254Z", "uploaded_by_user": ["test"], "focal_point_x": null, "focal_point_y": null, "focal_point_width": null, "focal_point_height": null, "file_size": 395401, "file_hash": "918bd1a5405ae19f77c904682a7840227a8707a7"}}, {"model": "common.customimage", "pk": 4, "fields": {"collection": 2, "title": "Tiger swallowtail butterfly", "file": "original_images/Butterfly2.jpg", "width": 1920, "height": 1920, "created_at": "2024-07-25T21:04:27.593Z", "uploaded_by_user": ["test"], "focal_point_x": null, "focal_point_y": null, "focal_point_width": null, "focal_point_height": null, "file_size": 987922, "file_hash": "2f15f86f39c15065bb6e0b35d81465fe4bd4ef34"}}, {"model": "common.customimage", "pk": 5, "fields": {"collection": 2, "title": "Cat 1", "file": "original_images/Cat1.jpg", "width": 1920, "height": 1280, "created_at": "2024-07-25T21:04:27.743Z", "uploaded_by_user": ["test"], "focal_point_x": null, "focal_point_y": null, "focal_point_width": null, "focal_point_height": null, "file_size": 266960, "file_hash": "2b14c7df6f5a254cb36afa304a248f748c2b47b4"}}, {"model": "common.customimage", "pk": 6, "fields": {"collection": 2, "title": "Cows", "file": "original_images/Cows.jpg", "width": 1920, "height": 1280, "created_at": "2024-07-25T21:04:27.878Z", "uploaded_by_user": ["test"], "focal_point_x": null, "focal_point_y": null, "focal_point_width": null, "focal_point_height": null, "file_size": 211828, "file_hash": "6739faaed6a412045eaf19fd1b2ec135f66b622d"}}, {"model": "common.customimage", "pk": 7, "fields": {"collection": 2, "title": "Dog 1", "file": "original_images/Dog1.jpg", "width": 1920, "height": 1280, "created_at": "2024-07-25T21:04:28.048Z", "uploaded_by_user": ["test"], "focal_point_x": null, "focal_point_y": null, "focal_point_width": null, "focal_point_height": null, "file_size": 430534, "file_hash": "7e854d6d408a5e7ab74b4702febf21e618ab790a"}}, {"model": "common.customimage", "pk": 8, "fields": {"collection": 2, "title": "Hedgehog", "file": "original_images/Hedgehog.jpg", "width": 1920, "height": 2880, "created_at": "2024-07-25T21:04:28.401Z", "uploaded_by_user": ["test"], "focal_point_x": null, "focal_point_y": null, "focal_point_width": null, "focal_point_height": null, "file_size": 733684, "file_hash": "bb8e0bab06cd777acfb741284823e91ab877bc4c"}}, {"model": "common.customimage", "pk": 9, "fields": {"collection": 2, "title": "Jellyfish", "file": "original_images/Jellyfish.jpg", "width": 1920, "height": 2621, "created_at": "2024-07-25T21:04:28.692Z", "uploaded_by_user": ["test"], "focal_point_x": null, "focal_point_y": null, "focal_point_width": null, "focal_point_height": null, "file_size": 662525, "file_hash": "f2cf9f88aa80c8f284b9c455636d60c7f06475d9"}}, {"model": "common.customimage", "pk": 10, "fields": {"collection": 2, "title": "Pig 1", "file": "original_images/Pig1.jpg", "width": 1920, "height": 2560, "created_at": "2024-07-25T21:04:29.027Z", "uploaded_by_user": ["test"], "focal_point_x": null, "focal_point_y": null, "focal_point_width": null, "focal_point_height": null, "file_size": 1020197, "file_hash": "aee3b8bcc5378d4ad651c8e56556769675088bc0"}}, {"model": "common.customimage", "pk": 11, "fields": {"collection": 2, "title": "Red Panda", "file": "original_images/RedPanda.jpg", "width": 1920, "height": 1280, "created_at": "2024-07-25T21:04:29.207Z", "uploaded_by_user": ["test"], "focal_point_x": null, "focal_point_y": null, "focal_point_width": null, "focal_point_height": null, "file_size": 423331, "file_hash": "e1e653999ac9eeb722f2071f5dd1d7a6e6441bcf"}}, {"model": "common.customimage", "pk": 12, "fields": {"collection": 2, "title": "Squirrel", "file": "original_images/Squirrel.jpg", "width": 1920, "height": 1280, "created_at": "2024-07-25T21:04:29.388Z", "uploaded_by_user": ["test"], "focal_point_x": null, "focal_point_y": null, "focal_point_width": null, "focal_point_height": null, "file_size": 560578, "file_hash": "e4f0f622b4ece26744873f0d3ec056632fb609cb"}}] diff --git a/common/fixtures/media/original_images/Bat.jpg b/common/fixtures/media/original_images/Bat.jpg new file mode 100644 index 00000000..a8a4e65f Binary files /dev/null and b/common/fixtures/media/original_images/Bat.jpg differ diff --git a/common/fixtures/media/original_images/Bee.jpg b/common/fixtures/media/original_images/Bee.jpg new file mode 100644 index 00000000..482e29f3 Binary files /dev/null and b/common/fixtures/media/original_images/Bee.jpg differ diff --git a/common/fixtures/media/original_images/Butterfly1.jpg b/common/fixtures/media/original_images/Butterfly1.jpg new file mode 100644 index 00000000..29ac4f57 Binary files /dev/null and b/common/fixtures/media/original_images/Butterfly1.jpg differ diff --git a/common/fixtures/media/original_images/Butterfly2.jpg b/common/fixtures/media/original_images/Butterfly2.jpg new file mode 100644 index 00000000..ddfa2c3c Binary files /dev/null and b/common/fixtures/media/original_images/Butterfly2.jpg differ diff --git a/common/fixtures/media/original_images/Cat1.jpg b/common/fixtures/media/original_images/Cat1.jpg new file mode 100644 index 00000000..14e62c1e Binary files /dev/null and b/common/fixtures/media/original_images/Cat1.jpg differ diff --git a/common/fixtures/media/original_images/Cows.jpg b/common/fixtures/media/original_images/Cows.jpg new file mode 100644 index 00000000..52e3e9a0 Binary files /dev/null and b/common/fixtures/media/original_images/Cows.jpg differ diff --git a/common/fixtures/media/original_images/Dog1.jpg b/common/fixtures/media/original_images/Dog1.jpg new file mode 100644 index 00000000..fc80071d Binary files /dev/null and b/common/fixtures/media/original_images/Dog1.jpg differ diff --git a/common/fixtures/media/original_images/Hedgehog.jpg b/common/fixtures/media/original_images/Hedgehog.jpg new file mode 100644 index 00000000..a1fad170 Binary files /dev/null and b/common/fixtures/media/original_images/Hedgehog.jpg differ diff --git a/common/fixtures/media/original_images/Jellyfish.jpg b/common/fixtures/media/original_images/Jellyfish.jpg new file mode 100644 index 00000000..5851193b Binary files /dev/null and b/common/fixtures/media/original_images/Jellyfish.jpg differ diff --git a/common/fixtures/media/original_images/Pig1.jpg b/common/fixtures/media/original_images/Pig1.jpg new file mode 100644 index 00000000..7ef9a275 Binary files /dev/null and b/common/fixtures/media/original_images/Pig1.jpg differ diff --git a/common/fixtures/media/original_images/RedPanda.jpg b/common/fixtures/media/original_images/RedPanda.jpg new file mode 100644 index 00000000..50638042 Binary files /dev/null and b/common/fixtures/media/original_images/RedPanda.jpg differ diff --git a/common/fixtures/media/original_images/Squirrel.jpg b/common/fixtures/media/original_images/Squirrel.jpg new file mode 100644 index 00000000..fa71ff54 Binary files /dev/null and b/common/fixtures/media/original_images/Squirrel.jpg differ diff --git a/common/management/commands/createdevdata.py b/common/management/commands/createdevdata.py index e241ab34..59154bef 100644 --- a/common/management/commands/createdevdata.py +++ b/common/management/commands/createdevdata.py @@ -1,19 +1,16 @@ -import requests -import time +import os from wagtail.models import Page, Site from django.core.exceptions import ObjectDoesNotExist from django.contrib.auth.models import User -from django.core.files.base import ContentFile +from django.core.files.storage import FileSystemStorage, default_storage +from django.core.management import call_command from django.core.files.images import ImageFile from django.core.management.base import BaseCommand from django.db import transaction from django.core import management -import factory -import wagtail_factories from common.models import SocialSharingSEOSettings, CustomImage -from common.factories import CustomImageFactory from home.models import HomePage from home.tests.factories import HomePageFactory @@ -22,12 +19,6 @@ class Command(BaseCommand): help = 'Creates data appropriate for development' def add_arguments(self, parser): - parser.add_argument( - '--no-download', - action='store_false', - dest='download_images', - help='Download external images', - ) parser.add_argument( '--delete', action='store_true', @@ -36,21 +27,16 @@ def add_arguments(self, parser): help='Delete homepage and child pages before creating new data.', ) - def fetch_image(self, width, height, collection, category): - url = f'https://source.unsplash.com/{width}x{height}?{category}' - response = requests.get(url, timeout=5) - if response and response.content: - CustomImageFactory( - file__from_file=ContentFile(response.content), - file_size=len(response.content), - width=width, - height=height, - collection=collection, - ) - else: - return False - time.sleep(0.2) - return True + def _copy_files(self, local_storage, path): + """ + Recursively copy files from local_storage to default_storage. + """ + directories, file_names = local_storage.listdir(path) + for directory in directories: + self._copy_files(local_storage, path + directory + "/") + for file_name in file_names: + with local_storage.open(path + file_name) as file_: + default_storage.save(path + file_name, file_) @transaction.atomic def handle(self, *args, **options): @@ -93,28 +79,12 @@ def handle(self, *args, **options): site.save() # IMAGES - icon_collection = wagtail_factories.CollectionFactory(name='Icons') - - if options.get('download_images', True): - self.stdout.write('Fetching images') - self.stdout.flush() - image_fail = False - for i in range(15): - if not self.fetch_image(500, 500, icon_collection, 'animals'): - image_fail = True - if image_fail: - self.stdout.write(self.style.NOTICE('NOTICE: Some images failed to save')) - else: - self.stdout.write(self.style.SUCCESS('OK')) - else: - faker = factory.faker.Faker._get_faker(locale='en-US') - for i in range(20): - CustomImageFactory.create( - file__width=500, - file__height=500, - file__color=faker.safe_color_name(), - collection=icon_collection, - ) + fixtures_dir = os.path.join("common", "fixtures") + fixture_file = os.path.join(fixtures_dir, "devdata.json") + self.stdout.write("Copying media files...") + local_storage = FileSystemStorage(os.path.join(fixtures_dir, "media")) + self._copy_files(local_storage, "") + call_command("loaddata", fixture_file, verbosity=4) management.call_command('createblogdata', '10') management.call_command('createdirectory', '10') diff --git a/common/management/commands/tests/test_createdevdata.py b/common/management/commands/tests/test_createdevdata.py index b878ac37..9bd1f6a0 100644 --- a/common/management/commands/tests/test_createdevdata.py +++ b/common/management/commands/tests/test_createdevdata.py @@ -19,7 +19,7 @@ def test_createdevdata_works(self): """ # Write stdout to /dev/null so as not to clutter the output from the tests with open(os.devnull, 'w') as devnull: - management.call_command('createdevdata', '--delete', '--no-download', stdout=devnull) + management.call_command('createdevdata', '--delete', stdout=devnull) # We expect `createdevdata` to also make a superuser self.client.force_login(User.objects.filter(is_superuser=True).first()) diff --git a/common/migrations/0010_customimage_description.py b/common/migrations/0010_customimage_description.py new file mode 100644 index 00000000..75a2748a --- /dev/null +++ b/common/migrations/0010_customimage_description.py @@ -0,0 +1,18 @@ +# Generated by Django 4.2.17 on 2024-12-27 13:13 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('common', '0009_alter_customimage_file_alter_customrendition_file'), + ] + + operations = [ + migrations.AddField( + model_name='customimage', + name='description', + field=models.CharField(blank=True, default='', max_length=255, verbose_name='description'), + ), + ] diff --git a/dev-requirements.txt b/dev-requirements.txt index 272bd6cf..dc5095f3 100644 --- a/dev-requirements.txt +++ b/dev-requirements.txt @@ -212,6 +212,7 @@ django==4.2.17 \ # django-taggit # django-treebeard # djangorestframework + # laces # wagtail # wagtailmedia django-anymail[mailgun]==9.0 \ @@ -232,9 +233,9 @@ django-filter==23.5 \ # via # -r requirements.txt # wagtail -django-modelcluster==6.1 \ - --hash=sha256:3b1791638046c73ae7415327cf54bfa0adad9d89d342a5b86d0ec29a2504e067 \ - --hash=sha256:8ce72635db4b90b34993afda5021ed8676ef94f1d4c607466d0f8d3f676c5b64 +django-modelcluster==6.4 \ + --hash=sha256:0102d00e6b884721ba21e32edb716548e0dead7880e130aa2e04854bd384a42f \ + --hash=sha256:839b0ddb4a1a6f5fc7d9f2f029614a84350b41315bdb80a9c8b755baaa2297f2 # via # -r requirements.txt # wagtail @@ -251,9 +252,9 @@ django-storages[google]==1.13.2 \ --hash=sha256:31dc5a992520be571908c4c40d55d292660ece3a55b8141462b4e719aa38eab3 \ --hash=sha256:cbadd15c909ceb7247d4ffc503f12a9bec36999df8d0bef7c31e57177d512688 # via -r requirements.txt -django-taggit==3.1.0 \ - --hash=sha256:543218ac346fbe02a65733e0341c91b57a3e0f7a41568966b26f1cea9edc4805 \ - --hash=sha256:c8f2e4eae387939089b3d75d1d8649e008880970c068ce9d0e82f87fd5e29508 +django-taggit==6.1.0 \ + --hash=sha256:ab776264bbc76cb3d7e49e1bf9054962457831bd21c3a42db9138b41956e4cf0 \ + --hash=sha256:c4d1199e6df34125dd36db5eb0efe545b254dec3980ce5dd80e6bab3e78757c3 # via # -r requirements.txt # wagtail @@ -440,12 +441,6 @@ gunicorn==23.0.0 \ --hash=sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d \ --hash=sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec # via -r requirements.txt -html5lib==1.1 \ - --hash=sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d \ - --hash=sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f - # via - # -r requirements.txt - # wagtail idna==3.7 \ --hash=sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc \ --hash=sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0 @@ -472,6 +467,12 @@ l18n==2021.3 \ # via # -r requirements.txt # wagtail +laces==0.1.1 \ + --hash=sha256:ae2c575b9aaa46154e5518c61c9f86f5a9478f753a51e9c5547c7d275d361242 \ + --hash=sha256:e45159c46f6adca33010d34e9af869e57201b70675c6dc088e919b16c89456a4 + # via + # -r requirements.txt + # wagtail lxml==4.9.3 \ --hash=sha256:05186a0f1346ae12553d66df1cfce6f251589fea3ad3da4f3ef4e34b2d58c6a3 \ --hash=sha256:075b731ddd9e7f68ad24c635374211376aa05a281673ede86cbe1d1b3455279d \ @@ -907,7 +908,6 @@ pytz==2022.7.1 \ --hash=sha256:78f4f37d8198e0627c5f1143240bb0206b8691d8d7ac6d78fee88b78733f8c4a # via # -r requirements.txt - # django-modelcluster # l18n pyyaml==6.0.1 \ --hash=sha256:04ac92ad1925b2cff1db0cfebffb6ffc43457495c9b3c39d3fcae417d7125dc5 \ @@ -1064,7 +1064,6 @@ six==1.16.0 \ # asttokens # bleach # google-auth - # html5lib # l18n # python-dateutil # requests-file @@ -1132,9 +1131,9 @@ vcrpy==4.2.1 \ --hash=sha256:7cd3e81a2c492e01c281f180bcc2a86b520b173d2b656cb5d89d99475423e013 \ --hash=sha256:efac3e2e0b2af7686f83a266518180af7a048619b2f696e7bad9520f5e2eac09 # via -r dev-requirements.in -wagtail==5.2.6 \ - --hash=sha256:133ec00787d83ab7fa06255641aa855e7fd75f07d04af473bd98fe782c736595 \ - --hash=sha256:5497eecf8ffef7996e2ac348e90444deac71e54d3334eca27683c29da8754550 +wagtail==6.3.2 \ + --hash=sha256:ac72f7138281ef47360057ebfb835a8eae34048efeed10ca9f4aabbc8f4e4ea5 \ + --hash=sha256:e4271222bd2498040a60dd5e27228dcd481cc2310aa8fc951f0f4e23d20fbc50 # via # -r requirements.txt # wagtail-autocomplete @@ -1167,15 +1166,14 @@ webencodings==0.5.1 \ # via # -r requirements.txt # bleach - # html5lib # tinycss2 whitenoise==6.4.0 \ --hash=sha256:599dc6ca57e48929dfeffb2e8e187879bfe2aed0d49ca419577005b7f2cc930b \ --hash=sha256:a02d6660ad161ff17e3042653c8e3f5ecbb2a2481a006bde125b9efb9a30113a # via -r requirements.txt -willow[heif]==1.6.2 \ - --hash=sha256:957a4af8a7733e116a65eca34da11afe3fd52ffdb397494c8823901c25863787 \ - --hash=sha256:e2d0450fd78ab19052d0478b888ef163e3264e8dcd1af002dd691458db98056f +willow[heif]==1.9.0 \ + --hash=sha256:11a13097cffe501898cd434bb5761fb6cdbdb774a7853094cb56a4ba57cbbff7 \ + --hash=sha256:ffac1406275ae30b60e7c6cbd1245f0bc359d1b5731002b18a712aaf424a5102 # via # -r requirements.txt # wagtail diff --git a/directory/tests/factories/entry.py b/directory/tests/factories/entry.py index 03ab9ce2..8a0be5b7 100644 --- a/directory/tests/factories/entry.py +++ b/directory/tests/factories/entry.py @@ -35,7 +35,7 @@ class Meta: class Params: with_images = factory.Trait( organization_logo=factory.Iterator( - CustomImage.objects.filter(collection__name='Icons') + CustomImage.objects.filter(collection__name='Animals') ) ) diff --git a/directory/wagtail_hooks.py b/directory/wagtail_hooks.py index 3b1d4f66..853175dd 100644 --- a/directory/wagtail_hooks.py +++ b/directory/wagtail_hooks.py @@ -12,6 +12,7 @@ class ScanResultAdmin(ModelViewSet): """SnippetViewSet for viewing/searching ScanResults.""" model = ScanResult add_to_admin_menu = True + copy_view_enabled = False icon = 'folder-open-inverse' menu_order = 500 form_fields = [] @@ -37,6 +38,7 @@ def get_common_view_kwargs(self, **kwargs): "add_url_name": None, "edit_url_name": None, "delete_url_name": None, + "copy_url_name": None, **kwargs, } ) diff --git a/marketing/tests/factories.py b/marketing/tests/factories.py index f191dce0..8c7c51c0 100644 --- a/marketing/tests/factories.py +++ b/marketing/tests/factories.py @@ -28,7 +28,7 @@ class Meta: class Params: with_image = Trait( - icon=Iterator(CustomImage.objects.filter(collection__name='Icons')) + icon=Iterator(CustomImage.objects.filter(collection__name='Animals')) ) title = Faker('sentence') diff --git a/requirements.in b/requirements.in index 3345696d..42175922 100644 --- a/requirements.in +++ b/requirements.in @@ -1,7 +1,7 @@ bleach>=4.1.0 Django>=4.2.17,<4.3 django-anymail[mailgun]>=1.4 -django-modelcluster>=6.1 +django-modelcluster>=6.2.1 django-settings-export django-storages[google] django-webpack-loader @@ -16,7 +16,7 @@ python-json-logger structlog tldextract tinycss2 -wagtail>=5.2.6,<5.3 +wagtail>=6.3.2,<6.4 wagtail-factories>=4.1.0 wagtail-metadata>=5.0.0 wagtail-autocomplete>=0.11.0 diff --git a/requirements.txt b/requirements.txt index 2dcf8004..03fce61d 100644 --- a/requirements.txt +++ b/requirements.txt @@ -118,6 +118,7 @@ django==4.2.17 \ # django-taggit # django-treebeard # djangorestframework + # laces # wagtail # wagtailmedia django-anymail[mailgun]==9.0 \ @@ -132,9 +133,9 @@ django-filter==23.5 \ --hash=sha256:67583aa43b91fe8c49f74a832d95f4d8442be628fd4c6d65e9f811f5153a4e5c \ --hash=sha256:99122a201d83860aef4fe77758b69dda913e874cc5e0eaa50a86b0b18d708400 # via wagtail -django-modelcluster==6.1 \ - --hash=sha256:3b1791638046c73ae7415327cf54bfa0adad9d89d342a5b86d0ec29a2504e067 \ - --hash=sha256:8ce72635db4b90b34993afda5021ed8676ef94f1d4c607466d0f8d3f676c5b64 +django-modelcluster==6.4 \ + --hash=sha256:0102d00e6b884721ba21e32edb716548e0dead7880e130aa2e04854bd384a42f \ + --hash=sha256:839b0ddb4a1a6f5fc7d9f2f029614a84350b41315bdb80a9c8b755baaa2297f2 # via # -r requirements.in # wagtail @@ -149,9 +150,9 @@ django-storages[google]==1.13.2 \ --hash=sha256:31dc5a992520be571908c4c40d55d292660ece3a55b8141462b4e719aa38eab3 \ --hash=sha256:cbadd15c909ceb7247d4ffc503f12a9bec36999df8d0bef7c31e57177d512688 # via -r requirements.in -django-taggit==3.1.0 \ - --hash=sha256:543218ac346fbe02a65733e0341c91b57a3e0f7a41568966b26f1cea9edc4805 \ - --hash=sha256:c8f2e4eae387939089b3d75d1d8649e008880970c068ce9d0e82f87fd5e29508 +django-taggit==6.1.0 \ + --hash=sha256:ab776264bbc76cb3d7e49e1bf9054962457831bd21c3a42db9138b41956e4cf0 \ + --hash=sha256:c4d1199e6df34125dd36db5eb0efe545b254dec3980ce5dd80e6bab3e78757c3 # via wagtail django-treebeard==4.6.1 \ --hash=sha256:84ab35040277d524eb77939e235568c9c856cb523cc9655793b66fe9a3ef468b \ @@ -300,10 +301,6 @@ gunicorn==23.0.0 \ --hash=sha256:ec400d38950de4dfd418cff8328b2c8faed0edb0d517d3394e457c317908ca4d \ --hash=sha256:f014447a0101dc57e294f6c18ca6b40227a4c90e9bdb586042628030cba004ec # via -r requirements.in -html5lib==1.1 \ - --hash=sha256:0d78f8fde1c230e99fe37986a60526d7049ed4bf8a9fadbad5f00e22e58e041d \ - --hash=sha256:b2e5b40261e20f354d198eae92afc10d750afb487ed5e50f9c4eaf07c184146f - # via wagtail idna==3.7 \ --hash=sha256:028ff3aadf0609c1fd278d8ea3089299412a7a8b9bd005dd08b9f8285bcb5cfc \ --hash=sha256:82fee1fc78add43492d3a1898bfa6d8a904cc97d8427f683ed8e798d07761aa0 @@ -314,6 +311,10 @@ l18n==2021.3 \ --hash=sha256:1956e890d673d17135cc20913253c154f6bc1c00266c22b7d503cc1a5a42d848 \ --hash=sha256:78495d1df95b6f7dcc694d1ba8994df709c463a1cbac1bf016e1b9a5ce7280b9 # via wagtail +laces==0.1.1 \ + --hash=sha256:ae2c575b9aaa46154e5518c61c9f86f5a9478f753a51e9c5547c7d275d361242 \ + --hash=sha256:e45159c46f6adca33010d34e9af869e57201b70675c6dc088e919b16c89456a4 + # via wagtail lxml==4.9.3 \ --hash=sha256:05186a0f1346ae12553d66df1cfce6f251589fea3ad3da4f3ef4e34b2d58c6a3 \ --hash=sha256:075b731ddd9e7f68ad24c635374211376aa05a281673ede86cbe1d1b3455279d \ @@ -601,9 +602,7 @@ python-json-logger==2.0.7 \ pytz==2022.7.1 \ --hash=sha256:01a0681c4b9684a28304615eba55d1ab31ae00bf68ec157ec3708a8182dbbcd0 \ --hash=sha256:78f4f37d8198e0627c5f1143240bb0206b8691d8d7ac6d78fee88b78733f8c4a - # via - # django-modelcluster - # l18n + # via l18n requests==2.32.3 \ --hash=sha256:55365417734eb18255590a9ff9eb97e9e1da868d4ccd6402399eaf68af20a760 \ --hash=sha256:70761cfe03c773ceb22aa2f671b4757976145175cdfca038c02654d061d6dcc6 @@ -632,7 +631,6 @@ six==1.16.0 \ # via # bleach # google-auth - # html5lib # l18n # python-dateutil # requests-file @@ -670,9 +668,9 @@ urllib3==1.26.19 \ # via # -r requirements.in # requests -wagtail==5.2.6 \ - --hash=sha256:133ec00787d83ab7fa06255641aa855e7fd75f07d04af473bd98fe782c736595 \ - --hash=sha256:5497eecf8ffef7996e2ac348e90444deac71e54d3334eca27683c29da8754550 +wagtail==6.3.2 \ + --hash=sha256:ac72f7138281ef47360057ebfb835a8eae34048efeed10ca9f4aabbc8f4e4ea5 \ + --hash=sha256:e4271222bd2498040a60dd5e27228dcd481cc2310aa8fc951f0f4e23d20fbc50 # via # -r requirements.in # wagtail-autocomplete @@ -700,15 +698,14 @@ webencodings==0.5.1 \ --hash=sha256:b36a1c245f2d304965eb4e0a82848379241dc04b865afcc4aab16748587e1923 # via # bleach - # html5lib # tinycss2 whitenoise==6.4.0 \ --hash=sha256:599dc6ca57e48929dfeffb2e8e187879bfe2aed0d49ca419577005b7f2cc930b \ --hash=sha256:a02d6660ad161ff17e3042653c8e3f5ecbb2a2481a006bde125b9efb9a30113a # via -r requirements.in -willow[heif]==1.6.2 \ - --hash=sha256:957a4af8a7733e116a65eca34da11afe3fd52ffdb397494c8823901c25863787 \ - --hash=sha256:e2d0450fd78ab19052d0478b888ef163e3264e8dcd1af002dd691458db98056f +willow[heif]==1.9.0 \ + --hash=sha256:11a13097cffe501898cd434bb5761fb6cdbdb774a7853094cb56a4ba57cbbff7 \ + --hash=sha256:ffac1406275ae30b60e7c6cbd1245f0bc359d1b5731002b18a712aaf424a5102 # via # wagtail # willow