Skip to content

Commit ce6d168

Browse files
authored
Merge branch 'main' into main
2 parents fedc85a + e89f46d commit ce6d168

File tree

94 files changed

+1420
-206
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

94 files changed

+1420
-206
lines changed

.github/dependabot.yml

+8
Original file line numberDiff line numberDiff line change
@@ -19,3 +19,11 @@ updates:
1919
- dependency-name: lxml
2020
versions:
2121
- 4.6.2
22+
- package-ecosystem: github-actions
23+
directory: "/"
24+
groups:
25+
github-actions:
26+
patterns:
27+
- "*" # Group all Actions updates into a single larger pull request
28+
schedule:
29+
interval: daily

.github/workflows/ci.yml

+4-4
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ jobs:
55
runs-on: ubuntu-latest
66
services:
77
postgres:
8-
image: postgres:10.1
8+
image: postgres:15.3
99
env:
1010
POSTGRES_USER: postgres
1111
POSTGRES_PASSWORD: postgres
@@ -16,7 +16,7 @@ jobs:
1616
options: --health-cmd pg_isready --health-interval 10s --health-timeout 5s --health-retries 5
1717
steps:
1818
- name: Check out repository
19-
uses: actions/checkout@v2
19+
uses: actions/checkout@v4
2020
- name: Install platform dependencies
2121
run: |
2222
sudo apt -y update
@@ -29,11 +29,11 @@ jobs:
2929
run: |
3030
wget https://github.com/jgm/pandoc/releases/download/2.17.1.1/pandoc-2.17.1.1-1-amd64.deb
3131
sudo dpkg -i pandoc-2.17.1.1-1-amd64.deb
32-
- uses: actions/setup-python@v2
32+
- uses: actions/setup-python@v5
3333
with:
3434
python-version: 3.9.16
3535
- name: Cache Python dependencies
36-
uses: actions/cache@v2
36+
uses: actions/cache@v4
3737
env:
3838
cache-name: pythondotorg-cache-pip
3939
with:

README.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# python.org
22

3-
[![Build Status](https://travis-ci.org/python/pythondotorg.svg?branch=main)](https://travis-ci.org/python/pythondotorg)
3+
[![CI](https://github.com/python/pythondotorg/actions/workflows/ci.yml/badge.svg)](https://github.com/python/pythondotorg/actions/workflows/ci.yml)
44
[![Documentation Status](https://readthedocs.org/projects/pythondotorg/badge/?version=latest)](https://pythondotorg.readthedocs.io/?badge=latest)
55

66
### General information

banners/__init__.py

-1
Original file line numberDiff line numberDiff line change
@@ -1 +0,0 @@
1-
default_app_config = 'banners.apps.BannersAppConfig'

base-requirements.txt

+12-12
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
dj-database-url==0.5.0
2-
django-pipeline==2.0.6
3-
django-sitetree==1.17.0
2+
django-pipeline==3.0.0 # 3.0.0 is first version that supports Django 4.2
3+
django-sitetree==1.18.0 # >=1.17.1 is (?) first version that supports Django 4.2
44
django-apptemplates==1.5
55
django-admin-interface==0.24.2
66
django-translation-aliases==0.1.0
7-
Django==2.2.28
7+
Django==4.2.16
88
docutils==0.12
99
Markdown==3.3.4
1010
cmarkgfm==0.6.0
@@ -13,7 +13,7 @@ psycopg2-binary==2.8.6
1313
python3-openid==3.2.0
1414
python-decouple==3.4
1515
# lxml used by BeautifulSoup.
16-
lxml==4.9.2
16+
lxml==5.2.2
1717
cssselect==1.1.0
1818
feedparser==6.0.8
1919
beautifulsoup4==4.11.2
@@ -22,35 +22,35 @@ chardet==4.0.0
2222
celery[redis]==5.3.6
2323
django-celery-beat==2.5.0
2424
# TODO: We may drop 'django-imagekit' completely.
25-
django-imagekit==4.0.2
25+
django-imagekit==5.0 # 5.0 is first version that supports Django 4.2
2626
django-haystack==3.2.1
2727
elasticsearch>=7,<8
2828
# TODO: 0.14.0 only supports Django 1.8 and 1.11.
29-
django-tastypie==0.14.3
29+
django-tastypie==0.14.6 # 0.14.6 is first version that supports Django 4.2
3030

3131
pytz==2021.1
3232
python-dateutil==2.8.2
3333

3434
requests[security]>=2.26.0
3535

36-
django-honeypot==1.0.1
37-
django-markupfield==2.0.0
38-
django-markupfield-helpers==0.1.1
36+
django-honeypot==1.0.4 # 1.0.4 is first version that supports Django 4.2
37+
django-markupfield==2.0.1
3938

40-
django-allauth==0.41.0
39+
django-allauth==0.57.2 # 0.55.0 is first version that supports Django 4.2
4140

4241
django-waffle==2.2.1
4342

44-
djangorestframework==3.12.2
43+
djangorestframework==3.14.0 # 3.14.0 is first version that supports Django 4.1, 4.2 support hasnt been "released"
4544
django-filter==2.4.0
4645
django-ordered-model==3.4.3
4746
django-widget-tweaks==1.4.8
4847
django-countries==7.2.1
4948
num2words==0.5.10
50-
django-polymorphic==3.0.0
49+
django-polymorphic==3.1.0 # 3.1.0 is first version that supports Django 4.0, unsure if it fully supports 4.2
5150
sorl-thumbnail==12.7.0
5251
django-extensions==3.1.4
5352
django-import-export==2.7.1
5453

5554
pypandoc==1.12
5655
panflute==2.3.0
56+
Unidecode==1.3.8

blogs/__init__.py

-1
Original file line numberDiff line numberDiff line change
@@ -1 +0,0 @@
1-
default_app_config = 'blogs.apps.BlogsAppConfig'

blogs/admin.py

+3-1
Original file line numberDiff line numberDiff line change
@@ -10,11 +10,13 @@ class BlogEntryAdmin(admin.ModelAdmin):
1010
date_hierarchy = 'pub_date'
1111
actions = ['sync_new_entries']
1212

13+
@admin.action(
14+
description="Sync new blog entries"
15+
)
1316
def sync_new_entries(self, request, queryset):
1417
call_command('update_blogs')
1518
self.message_user(request, "Blog entries updated.")
1619

17-
sync_new_entries.short_description = "Sync new blog entries"
1820

1921

2022
@admin.register(FeedAggregate)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Generated by Django 4.2.11 on 2024-09-05 17:10
2+
3+
from django.conf import settings
4+
from django.db import migrations, models
5+
import django.db.models.deletion
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
12+
('blogs', '0002_remove_translations_and_contributors'),
13+
]
14+
15+
operations = [
16+
migrations.AlterField(
17+
model_name='relatedblog',
18+
name='creator',
19+
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_creator', to=settings.AUTH_USER_MODEL),
20+
),
21+
migrations.AlterField(
22+
model_name='relatedblog',
23+
name='last_modified_by',
24+
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_modified', to=settings.AUTH_USER_MODEL),
25+
),
26+
]

blogs/parser.py

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33

44
from django.conf import settings
55
from django.template.loader import render_to_string
6-
from django.utils.timezone import make_aware, utc
6+
from django.utils.timezone import make_aware
77

88
from boxes.models import Box
99
from .models import BlogEntry, Feed
@@ -16,7 +16,7 @@ def get_all_entries(feed_url):
1616

1717
for e in d['entries']:
1818
published = make_aware(
19-
datetime.datetime(*e['published_parsed'][:7]), timezone=utc
19+
datetime.datetime(*e['published_parsed'][:7]), timezone=datetime.timezone.utc
2020
)
2121

2222
entry = {

boxes/__init__.py

-1
Original file line numberDiff line numberDiff line change
@@ -1 +0,0 @@
1-
default_app_config = 'boxes.apps.BoxesAppConfig'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Generated by Django 4.2.11 on 2024-09-05 17:10
2+
3+
from django.conf import settings
4+
from django.db import migrations, models
5+
import django.db.models.deletion
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
12+
('boxes', '0003_auto_20171101_2138'),
13+
]
14+
15+
operations = [
16+
migrations.AlterField(
17+
model_name='box',
18+
name='creator',
19+
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_creator', to=settings.AUTH_USER_MODEL),
20+
),
21+
migrations.AlterField(
22+
model_name='box',
23+
name='last_modified_by',
24+
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_modified', to=settings.AUTH_USER_MODEL),
25+
),
26+
]

cms/__init__.py

-1
Original file line numberDiff line numberDiff line change
@@ -1 +0,0 @@
1-
default_app_config = 'cms.apps.CmsAppConfig'

codesamples/__init__.py

-1
Original file line numberDiff line numberDiff line change
@@ -1 +0,0 @@
1-
default_app_config = 'codesamples.apps.CodesamplesAppConfig'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Generated by Django 4.2.11 on 2024-09-05 17:10
2+
3+
from django.conf import settings
4+
from django.db import migrations, models
5+
import django.db.models.deletion
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
12+
('codesamples', '0003_auto_20170821_2000'),
13+
]
14+
15+
operations = [
16+
migrations.AlterField(
17+
model_name='codesample',
18+
name='creator',
19+
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_creator', to=settings.AUTH_USER_MODEL),
20+
),
21+
migrations.AlterField(
22+
model_name='codesample',
23+
name='last_modified_by',
24+
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_modified', to=settings.AUTH_USER_MODEL),
25+
),
26+
]

codesamples/tests.py

+2-4
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,7 @@ def setUp(self):
1616
is_published=False)
1717

1818
def test_published(self):
19-
self.assertQuerysetEqual(CodeSample.objects.published(),
20-
['<CodeSample: Copy One>'])
19+
self.assertQuerySetEqual(CodeSample.objects.published(),['<CodeSample: Copy One>'], transform=repr)
2120

2221
def test_draft(self):
23-
self.assertQuerysetEqual(CodeSample.objects.draft(),
24-
['<CodeSample: Copy Two>'])
22+
self.assertQuerySetEqual(CodeSample.objects.draft(),['<CodeSample: Copy Two>'], transform=repr)

community/__init__.py

-1
Original file line numberDiff line numberDiff line change
@@ -1 +0,0 @@
1-
default_app_config = 'community.apps.CommunityAppConfig'
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
# Generated by Django 4.2.11 on 2024-09-05 17:10
2+
3+
from django.conf import settings
4+
from django.db import migrations, models
5+
import django.db.models.deletion
6+
7+
8+
class Migration(migrations.Migration):
9+
10+
dependencies = [
11+
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
12+
('community', '0001_squashed_0004_auto_20170831_0541'),
13+
]
14+
15+
operations = [
16+
migrations.AlterField(
17+
model_name='link',
18+
name='creator',
19+
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_creator', to=settings.AUTH_USER_MODEL),
20+
),
21+
migrations.AlterField(
22+
model_name='link',
23+
name='last_modified_by',
24+
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_modified', to=settings.AUTH_USER_MODEL),
25+
),
26+
migrations.AlterField(
27+
model_name='link',
28+
name='post',
29+
field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='related_%(class)s', to='community.post'),
30+
),
31+
migrations.AlterField(
32+
model_name='photo',
33+
name='creator',
34+
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_creator', to=settings.AUTH_USER_MODEL),
35+
),
36+
migrations.AlterField(
37+
model_name='photo',
38+
name='last_modified_by',
39+
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_modified', to=settings.AUTH_USER_MODEL),
40+
),
41+
migrations.AlterField(
42+
model_name='photo',
43+
name='post',
44+
field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='related_%(class)s', to='community.post'),
45+
),
46+
migrations.AlterField(
47+
model_name='post',
48+
name='creator',
49+
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_creator', to=settings.AUTH_USER_MODEL),
50+
),
51+
migrations.AlterField(
52+
model_name='post',
53+
name='last_modified_by',
54+
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_modified', to=settings.AUTH_USER_MODEL),
55+
),
56+
migrations.AlterField(
57+
model_name='post',
58+
name='meta',
59+
field=models.JSONField(blank=True, default=dict),
60+
),
61+
migrations.AlterField(
62+
model_name='video',
63+
name='creator',
64+
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_creator', to=settings.AUTH_USER_MODEL),
65+
),
66+
migrations.AlterField(
67+
model_name='video',
68+
name='last_modified_by',
69+
field=models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='%(app_label)s_%(class)s_modified', to=settings.AUTH_USER_MODEL),
70+
),
71+
migrations.AlterField(
72+
model_name='video',
73+
name='post',
74+
field=models.ForeignKey(editable=False, null=True, on_delete=django.db.models.deletion.CASCADE, related_name='related_%(class)s', to='community.post'),
75+
),
76+
]

community/models.py

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from django.contrib.postgres.fields import JSONField
1+
from django.db.models import JSONField
22
from django.urls import reverse
33
from django.db import models
44
from django.utils.translation import gettext_lazy as _

community/tests/test_managers.py

+3-3
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,6 @@ def test_post_manager(self):
1616
status=Post.STATUS_PUBLIC
1717
)
1818

19-
self.assertQuerysetEqual(Post.objects.all(), [public_post, private_post], lambda x: x)
20-
self.assertQuerysetEqual(Post.objects.public(), [public_post], lambda x: x)
21-
self.assertQuerysetEqual(Post.objects.private(), [private_post], lambda x: x)
19+
self.assertQuerySetEqual(Post.objects.all(), [public_post, private_post], lambda x: x)
20+
self.assertQuerySetEqual(Post.objects.public(), [public_post], lambda x: x)
21+
self.assertQuerySetEqual(Post.objects.private(), [private_post], lambda x: x)

companies/__init__.py

-1
Original file line numberDiff line numberDiff line change
@@ -1 +0,0 @@
1-
default_app_config = 'companies.apps.CompaniesAppConfig'

0 commit comments

Comments
 (0)