Error 403: Permission denied
10 | 11 |Unfortunately, you don't have enough privileges to access this page.
12 | 13 |├── Aptfile ├── blogs ├── __init__.py ├── tests │ ├── __init__.py │ └── utils.py ├── management │ ├── __init__.py │ └── commands │ │ └── __init__.py ├── migrations │ └── __init__.py ├── templatetags │ ├── __init__.py │ └── blogs.py ├── apps.py ├── urls.py ├── factories.py └── views.py ├── boxes ├── __init__.py ├── migrations │ ├── __init__.py │ └── 0002_auto_20150416_1853.py ├── apps.py ├── urls.py ├── admin.py ├── views.py └── templatetags │ └── boxes.py ├── cms ├── __init__.py ├── management │ ├── __init__.py │ └── commands │ │ └── __init__.py ├── templatetags │ ├── __init__.py │ └── cms.py ├── apps.py └── forms.py ├── events ├── __init__.py ├── tests │ └── __init__.py ├── management │ ├── __init__.py │ └── commands │ │ ├── __init__.py │ │ └── import_ics_calendars.py ├── migrations │ ├── __init__.py │ ├── 0005_auto_20170821_2000.py │ ├── 0007_auto_20180705_0352.py │ ├── 0003_auto_20150416_1853.py │ ├── 0002_auto_20150321_1247.py │ └── 0004_auto_20170814_0519.py ├── templatetags │ ├── __init__.py │ └── events.py └── apps.py ├── fastly ├── __init__.py ├── models.py └── utils.py ├── jobs ├── __init__.py ├── tests │ └── __init__.py ├── management │ ├── __init__.py │ └── commands │ │ ├── __init__.py │ │ └── expire_jobs.py ├── migrations │ ├── __init__.py │ ├── 0014_merge.py │ ├── 0013_auto_20170810_1625.py │ ├── 0013_auto_20170810_1627.py │ ├── 0015_auto_20170814_0301.py │ ├── 0006_region_nullable.py │ ├── 0020_auto_20191101_1601.py │ ├── 0005_job_other_job_type.py │ ├── 0004_auto_20150216_1544.py │ ├── 0016_auto_20170821_2000.py │ ├── 0018_auto_20180705_0352.py │ ├── 0003_auto_20150211_1738.py │ ├── 0019_job_submitted_by.py │ └── 0007_auto_20150227_2223.py ├── apps.py ├── signals.py └── feeds.py ├── pages ├── __init__.py ├── tests │ ├── __init__.py │ ├── fake_svn_content_checkout │ │ └── content.ht │ └── base.py ├── management │ ├── __init__.py │ └── commands │ │ └── __init__.py ├── migrations │ ├── __init__.py │ ├── 0002_auto_20150416_1853.py │ └── 0003_auto_20230214_2113.py ├── apps.py ├── urls.py ├── managers.py ├── serializers.py └── factories.py ├── users ├── __init__.py ├── tests │ └── __init__.py ├── migrations │ ├── __init__.py │ ├── 0005_user_public_profile.py │ ├── 0015_alter_user_first_name.py │ ├── 0009_auto_20170821_2000.py │ ├── 0006_auto_20150503_2124.py │ ├── 0002_auto_20150416_1853.py │ ├── 0007_auto_20150604_1555.py │ └── 0003_auto_20150503_2026.py ├── templatetags │ └── __init__.py ├── validators.py ├── apps.py ├── listeners.py └── managers.py ├── banners ├── __init__.py ├── migrations │ └── __init__.py ├── templatetags │ └── __init__.py ├── apps.py ├── admin.py └── models.py ├── codesamples ├── __init__.py ├── migrations │ └── __init__.py ├── apps.py ├── admin.py └── managers.py ├── community ├── __init__.py ├── tests │ ├── __init__.py │ ├── test_models.py │ └── test_views.py ├── migrations │ ├── __init__.py │ ├── 0003_auto_20170831_0358.py │ ├── 0004_auto_20170831_0541.py │ └── 0002_auto_20150416_1853.py ├── templatetags │ └── __init__.py ├── apps.py ├── urls.py ├── views.py └── managers.py ├── companies ├── __init__.py ├── migrations │ ├── __init__.py │ ├── 0003_auto_20170814_0301.py │ ├── 0005_auto_20180705_0352.py │ ├── 0004_auto_20170821_2000.py │ └── 0002_auto_20150416_1853.py ├── templatetags │ ├── __init__.py │ └── companies.py ├── apps.py ├── admin.py ├── tests.py └── factories.py ├── downloads ├── __init__.py ├── tests │ └── __init__.py ├── migrations │ ├── __init__.py │ ├── 0004_auto_20170821_2000.py │ ├── 0003_auto_20150824_1612.py │ ├── 0008_auto_20220907_2102.py │ ├── 0009_releasefile_sigstore_bundle_file.py │ ├── 0010_releasefile_sbom_spdx2_file.py │ ├── 0002_auto_20150416_1853.py │ ├── 0012_alter_release_version.py │ └── 0013_alter_release_content_markup_type.py ├── templatetags │ └── __init__.py └── apps.py ├── mailing ├── __init__.py ├── migrations │ └── __init__.py ├── tests │ ├── __init__.py │ ├── models.py │ └── forms.py ├── apps.py └── forms.py ├── membership ├── __init__.py ├── tests │ ├── __init__.py │ └── test_views.py ├── migrations │ └── __init__.py ├── apps.py ├── urls.py └── views.py ├── minutes ├── __init__.py ├── tests │ └── __init__.py ├── management │ ├── __init__.py │ └── commands │ │ └── __init__.py ├── migrations │ ├── __init__.py │ └── 0002_auto_20150416_1853.py ├── apps.py ├── managers.py ├── urls.py └── admin.py ├── nominations ├── __init__.py ├── migrations │ └── __init__.py ├── templatetags │ ├── __init__.py │ └── nominations.py └── apps.py ├── sponsors ├── __init__.py ├── tests │ └── __init__.py ├── management │ ├── __init__.py │ └── commands │ │ └── __init__.py ├── migrations │ ├── __init__.py │ ├── 0023_merge_20210406_1522.py │ ├── 0024_auto_20210414_1449.py │ ├── 0086_auto_20220809_1655.py │ ├── 0043_auto_20210827_1343.py │ ├── 0059_auto_20211029_1503.py │ ├── 0082_auto_20220729_1613.py │ ├── 0036_auto_20210826_1930.py │ ├── 0097_sponsorship_renewal.py │ ├── 0102_auto_20240509_2037.py │ ├── 0057_auto_20211026_1529.py │ ├── 0012_sponsorship_for_modified_package.py │ ├── 0017_sponsorbenefit_added_by_user.py │ ├── 0054_auto_20211026_1432.py │ ├── 0066_auto_20211223_1318.py │ ├── 0045_add_added_by_user_sponsorbenefit.py │ ├── 0064_sponsorshippackage_slug.py │ ├── 0067_sponsorbenefit_a_la_carte.py │ ├── 0101_sponsor_linked_in_page_url.py │ ├── 0032_sponsorcontact_accounting.py │ ├── 0039_auto_20210827_1248.py │ ├── 0034_contract_document_docx.py │ ├── 0048_auto_20210915_1425.py │ ├── 0037_sponsorship_package.py │ ├── 0042_auto_20210827_1318.py │ ├── 0091_sponsorshippackage_allow_a_la_carte.py │ ├── 0046_sponsorshippackage_advertise.py │ ├── 0044_auto_20210827_1344.py │ ├── 0078_init_current_year_singleton.py │ ├── 0022_sponsorcontact_administrative.py │ ├── 0075_auto_20220303_2023.py │ ├── 0098_auto_20231219_1910.py │ ├── 0068_auto_20220110_1841.py │ ├── 0092_auto_20220816_1517.py │ ├── 0019_sponsor_twitter_handle.py │ ├── 0089_auto_20220812_1312.py │ ├── 0093_auto_20230214_2113.py │ ├── 0027_sponsorbenefit_program_name.py │ ├── 0047_auto_20210908_1357.py │ ├── 0020_sponsorshipbenefit_unavailable.py │ ├── 0028_auto_20210707_1426.py │ └── 0065_auto_20211223_1309.py ├── templatetags │ └── __init__.py ├── pandoc_filters │ └── __init__.py ├── reference.docx ├── apps.py ├── urls.py ├── models │ └── enums.py ├── utils.py └── exceptions.py ├── work_groups ├── __init__.py ├── tests │ ├── __init__.py │ └── test_models.py ├── migrations │ ├── __init__.py │ ├── 0002_auto_20150604_2203.py │ ├── 0004_auto_20180705_0352.py │ └── 0003_auto_20170821_2000.py └── apps.py ├── .python-version ├── custom_storages └── __init__.py ├── pydotorg ├── tests │ ├── __init__.py │ └── test_classes.py ├── settings │ └── __init__.py ├── __init__.py ├── compilers.py └── celery.py ├── successstories ├── __init__.py ├── tests │ └── __init__.py ├── migrations │ ├── __init__.py │ ├── 0007_remove_story_weight.py │ ├── 0008_auto_20170821_2000.py │ ├── 0004_auto_20170724_0507.py │ ├── 0005_auto_20170726_0645.py │ ├── 0002_auto_20150416_1853.py │ ├── 0011_auto_20220127_1923.py │ ├── 0009_auto_20180705_0352.py │ └── 0010_story_submitted_by.py ├── templatetags │ ├── __init__.py │ └── successstories.py ├── apps.py └── urls.py ├── bin ├── pre_compile └── static ├── texlive.packages ├── templates ├── account │ ├── base.html │ └── logout.html ├── downloads │ ├── base.html │ ├── homepage-downloads-box.html │ └── download-sources-box.html ├── pages │ └── raw.html ├── jobs │ ├── email │ │ ├── job_was_approved_subject.txt │ │ ├── monthly_jobs_report_subject.txt │ │ ├── job_was_rejected_subject.txt │ │ ├── job_was_submitted_subject.txt │ │ ├── monthly_jobs_report.txt │ │ ├── comment_was_posted_admin.txt │ │ ├── comment_was_posted.txt │ │ ├── job_was_submitted.txt │ │ └── job_was_rejected.txt │ ├── job_type_list.html │ ├── job_category_list.html │ ├── job_telecommute_list.html │ ├── header_content.html │ ├── featured_companies-widget.html │ └── job_types.html ├── sponsors │ ├── email │ │ ├── psf_contract_subject.txt │ │ ├── psf_rejected_sponsorship_subject.txt │ │ ├── sponsor_contract_subject.txt │ │ ├── psf_new_application_subject.txt │ │ ├── sponsor_contract.txt │ │ ├── sponsor_rejected_sponsorship_subject.txt │ │ ├── sponsor_new_application_subject.txt │ │ ├── psf_contract.txt │ │ ├── sponsor_expiring_assets_subject.txt │ │ ├── sponsor_rejected_sponsorship.txt │ │ ├── psf_rejected_sponsorship.txt │ │ ├── psf_new_application.txt │ │ └── sponsor_expiring_assets.txt │ └── admin │ │ ├── sponsors_sponsorshipcurrentyear_changelist.html │ │ └── sponsorshipbenefit_change_form.html ├── search │ ├── indexes │ │ ├── jobs │ │ │ ├── jobtype_text.txt │ │ │ ├── jobcategory_text.txt │ │ │ └── job_text.txt │ │ ├── pages │ │ │ └── page_text.txt │ │ ├── downloads │ │ │ └── release_text.txt │ │ └── events │ │ │ ├── calendar_text.txt │ │ │ └── event_text.txt │ └── includes │ │ ├── jobs.job_category.html │ │ ├── jobs.job_type.html │ │ ├── pages.page.html │ │ ├── jobs.job.html │ │ ├── downloads.release.html │ │ └── events.calendar.html ├── community │ ├── types │ │ ├── photo.html │ │ ├── text.html │ │ ├── video.html │ │ ├── default.html │ │ └── link.html │ └── post_detail.html ├── users │ ├── membership_vote_affirm_done.html │ ├── membership_vote_affirm.html │ └── membership_thanks.html ├── sitetree │ ├── sidebar_menu_root.html │ ├── footer_children.html │ ├── submenu_children.html │ ├── footer.html │ ├── top.html │ ├── breadcrumbs.html │ └── menu.html ├── events │ ├── eventcategory_list.html │ ├── email │ │ └── new_event.txt │ └── event_form_thanks.html ├── pypl │ └── index.html ├── shop │ └── index.html ├── components │ ├── psf-widget.html │ └── navigation-widget.html ├── docs │ └── index.html ├── cms │ └── iso_time_tag.html ├── admin │ └── base_site.html ├── blogs │ └── supernav.html ├── 403.html ├── python │ └── shell.html ├── 500.html ├── mailing │ └── admin │ │ └── base_email_template_form.html ├── registration │ └── logged_out.html ├── robots.txt └── successstories │ ├── supernav.html │ └── storycategory_detail.html ├── docs-requirements.txt ├── docutils.conf ├── requirements.txt ├── static ├── community_logos │ ├── README.txt │ ├── python-logo.png │ ├── python-powered-h-50x65.png │ ├── python-powered-h-70x91.png │ ├── python-powered-w-70x28.png │ ├── python-logo-master-v3-TM.png │ ├── python-logo-master-v3-TM.psd │ ├── python-powered-h-100x130.png │ ├── python-powered-h-140x182.png │ ├── python-powered-w-100x40.png │ ├── python-powered-w-140x56.png │ ├── python-powered-w-200x80.png │ └── python-logo-master-v3-TM-flattened.png ├── favicon.ico ├── images │ ├── CCP.jpg │ ├── README.txt │ ├── blank.gif │ ├── bullet.gif │ ├── donate.png │ ├── google.gif │ ├── pynasa.jpg │ ├── pyxp.jpg │ ├── tabblo.png │ ├── trans.gif │ ├── zeuux.jpg │ ├── OSAFLogo.gif │ ├── Red_Hat.png │ ├── astilogo.gif │ ├── beslist.png │ ├── bizrate.gif │ ├── emd_logo.gif │ ├── hw128_28.gif │ ├── ironport.gif │ ├── microbit.png │ ├── psf-logo.gif │ ├── pyastra.jpg │ ├── pygoogle.jpg │ ├── sun_logo.png │ ├── winglogo.gif │ ├── worldmap.jpg │ ├── zeomega.gif │ ├── activegrid.gif │ ├── arraylogo.jpg │ ├── enthought.jpg │ ├── enthought.png │ ├── freewear-1.png │ ├── globo_logo.gif │ ├── header-bg.png │ ├── header-bg2.png │ ├── hood_logo.gif │ ├── knmp-logo.png │ ├── nav-off-bg.png │ ├── nav-on-bg.png │ ├── pep-0001-1.png │ ├── python-logo.gif │ ├── pythonlogo.pdf │ ├── pythonlogo.png │ ├── pythonlogo.tiff │ ├── seo_moves.jpg │ ├── strakt_logo.gif │ ├── wargaming.png │ ├── zope_logo.gif │ ├── PythonPowered.gif │ ├── button-on-bg.png │ ├── cpacket_logo.jpg │ ├── favicon16x16.ico │ ├── finding-idle.png │ ├── freewear-logo.png │ ├── hitflip_logo.jpg │ ├── openeye-logo.gif │ ├── oreilly_logo.gif │ ├── py_mac-sq-64.png │ ├── success │ │ ├── mmtk.jpg │ │ ├── nasa.jpg │ │ ├── Carmanah.png │ │ ├── afnic.fr.png │ │ ├── journyx.png │ │ ├── mayavi.jpg │ │ ├── tribon.jpg │ │ ├── Honeywell.png │ │ ├── StAndrews.png │ │ ├── frequentis.png │ │ ├── natsworld.png │ │ ├── standrews.jpg │ │ ├── forecastwatch.png │ │ └── superleague.png │ ├── uniblue-logo.jpg │ ├── ExowebGlossyLogo.png │ ├── Lucasfilm_logo.png │ ├── activestate_logo.gif │ ├── canonical-logo.png │ ├── open_end_ab_logo.png │ ├── pattern_banner.gif │ ├── pythongear-logo.png │ ├── zimbio_corp_logo.gif │ ├── Google_Logo_25wht.gif │ ├── PythonPoweredAnim.gif │ ├── PythonPoweredSmall.gif │ ├── batteries-included.jpg │ ├── infrastructure │ │ ├── dyn.png │ │ ├── osl.png │ │ ├── gandi.png │ │ ├── xs4all.png │ │ ├── pingdom.png │ │ ├── upfront.png │ │ └── pagerduty.png │ ├── logo_lincoln_loop.png │ ├── opensource-110x95.png │ ├── pycon-2010-banner.png │ ├── python-data-100x40.png │ ├── python-video-icon.png │ ├── terminal-in-finder.png │ ├── osi-certified-120x100.gif │ ├── python-audio-100x40.png │ ├── PythonPoweredAnimSmall.gif │ └── OnlineDegreeReviews-Logo.png ├── img │ ├── psf-logo.png │ ├── python-logo.png │ ├── sample-gmap.png │ ├── landing-about.png │ ├── landing-docs.png │ ├── psf-logo_print.png │ ├── success-glow2.png │ ├── bg_direction_nav.png │ ├── landing-community.png │ ├── landing-downloads.png │ ├── python-logo-large.png │ ├── python-logo_print.png │ └── sponsors │ │ ├── tick-placeholder.png │ │ ├── title-1.svg │ │ ├── title-4.svg │ │ ├── title-2.svg │ │ ├── title-5.svg │ │ ├── title-6.svg │ │ ├── title-3.svg │ │ └── tick.svg ├── fonts │ ├── FluxBold.eot │ ├── FluxBold.ttf │ ├── FluxBold.woff │ ├── FluxItalic.eot │ ├── FluxItalic.ttf │ ├── FluxItalic.woff │ ├── FluxRegular.eot │ ├── FluxRegular.ttf │ ├── FluxRegular.woff │ ├── FontAwesome.otf │ ├── Pythonicon.eot │ ├── Pythonicon.ttf │ ├── Pythonicon.woff │ ├── FluxBoldItalic.eot │ ├── FluxBoldItalic.ttf │ ├── FluxBoldItalic.woff │ ├── fontawesome-webfont.eot │ ├── fontawesome-webfont.ttf │ ├── fontawesome-webfont.woff │ ├── fontawesome-webfont.woff2 │ ├── SourceSansPro-It-webfont.eot │ ├── SourceSansPro-It-webfont.ttf │ ├── SourceSansPro-Bold-webfont.eot │ ├── SourceSansPro-Bold-webfont.ttf │ ├── SourceSansPro-Bold-webfont.woff │ ├── SourceSansPro-It-webfont.woff │ ├── SourceSansPro-Regular-webfont.eot │ ├── SourceSansPro-Regular-webfont.ttf │ └── SourceSansPro-Regular-webfont.woff ├── metro-icon-144x144.png ├── source_files │ ├── glow.psd │ ├── artboard.psd │ ├── python-logo-mods.ai │ ├── python-top-logo.psd │ ├── psf-top-logo-beta.psd │ ├── python-logo-mods-v2.ai │ └── python-top-logo-beta.psd ├── opengraph-icon-200x200.png ├── apple-touch-icon-precomposed.png ├── apple-touch-icon-72x72-precomposed.png ├── apple-touch-icon-114x114-precomposed.png ├── apple-touch-icon-144x144-precomposed.png └── js │ └── libs │ └── html-includes.js ├── package.json ├── .github ├── CODEOWNERS ├── PULL_REQUEST_TEMPLATE.md └── ISSUE_TEMPLATE │ └── config.yml ├── infra ├── Makefile ├── config.tf ├── .gitignore ├── cdn │ ├── versions.tf │ └── providers.tf └── variables.tf ├── docs └── source │ └── _images │ └── supernav-example.png ├── .gitattributes ├── Dockerfile.static ├── Gemfile ├── prod-requirements.txt ├── Procfile ├── fixtures └── README.md ├── dev-requirements.txt ├── gunicorn.conf ├── .readthedocs.yaml ├── .coveragerc ├── Gemfile.lock └── env_sample /Aptfile: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /blogs/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /boxes/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /events/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /fastly/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /jobs/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pages/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /users/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /banners/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /blogs/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /codesamples/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /community/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /companies/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /downloads/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /jobs/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mailing/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /membership/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /minutes/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /nominations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pages/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sponsors/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /users/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /work_groups/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.python-version: -------------------------------------------------------------------------------- 1 | 3.12.6 2 | -------------------------------------------------------------------------------- /blogs/management/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /blogs/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /boxes/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/management/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/templatetags/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /community/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /custom_storages/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /downloads/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /events/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /jobs/management/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /jobs/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /membership/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /minutes/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pages/management/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pages/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pydotorg/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sponsors/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /successstories/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /users/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /banners/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /banners/templatetags/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /blogs/templatetags/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /community/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /companies/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /downloads/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /events/management/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /events/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /events/templatetags/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /mailing/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /membership/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /minutes/management/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /minutes/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pydotorg/settings/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sponsors/management/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sponsors/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sponsors/templatetags/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /successstories/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /users/templatetags/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /work_groups/tests/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /work_groups/tests/test_models.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /blogs/management/commands/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /cms/management/commands/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /codesamples/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /community/templatetags/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /companies/templatetags/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /downloads/templatetags/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /events/management/commands/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /jobs/management/commands/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /nominations/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /nominations/templatetags/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /pages/management/commands/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sponsors/pandoc_filters/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /successstories/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /work_groups/migrations/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /bin/pre_compile: -------------------------------------------------------------------------------- 1 | npm -g install yuglify 2 | -------------------------------------------------------------------------------- /minutes/management/commands/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sponsors/management/commands/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /successstories/templatetags/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /texlive.packages: -------------------------------------------------------------------------------- 1 | xcolor 2 | etoolbox 3 | -------------------------------------------------------------------------------- /fastly/models.py: -------------------------------------------------------------------------------- 1 | # Intentionally left blank 2 | -------------------------------------------------------------------------------- /templates/account/base.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} -------------------------------------------------------------------------------- /docs-requirements.txt: -------------------------------------------------------------------------------- 1 | sphinx 2 | myst-parser 3 | furo 4 | -------------------------------------------------------------------------------- /templates/downloads/base.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} -------------------------------------------------------------------------------- /templates/pages/raw.html: -------------------------------------------------------------------------------- 1 | {{ page.content.raw|safe }} 2 | -------------------------------------------------------------------------------- /docutils.conf: -------------------------------------------------------------------------------- 1 | [general] 2 | halt_level=5 3 | report_level=5 4 | -------------------------------------------------------------------------------- /mailing/tests/__init__.py: -------------------------------------------------------------------------------- 1 | """Tests for the mailing app.""" 2 | -------------------------------------------------------------------------------- /pages/tests/fake_svn_content_checkout/content.ht: -------------------------------------------------------------------------------- 1 | third line 2 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | -r base-requirements.txt 2 | -r prod-requirements.txt 3 | -------------------------------------------------------------------------------- /static/community_logos/README.txt: -------------------------------------------------------------------------------- 1 | These images are linked from /community/logos/. 2 | -------------------------------------------------------------------------------- /static/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/favicon.ico -------------------------------------------------------------------------------- /templates/jobs/email/job_was_approved_subject.txt: -------------------------------------------------------------------------------- 1 | Python Job Board: Job entry approved 2 | -------------------------------------------------------------------------------- /static/images/CCP.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/CCP.jpg -------------------------------------------------------------------------------- /static/images/README.txt: -------------------------------------------------------------------------------- 1 | These images are from the initial Python.org content import from SVN 2 | -------------------------------------------------------------------------------- /templates/jobs/email/monthly_jobs_report_subject.txt: -------------------------------------------------------------------------------- 1 | Monthly Jobs Report for {% now "F Y" %} 2 | -------------------------------------------------------------------------------- /templates/sponsors/email/psf_contract_subject.txt: -------------------------------------------------------------------------------- 1 | STATEMENT OF WORK to psf-sponsors@python.org 2 | -------------------------------------------------------------------------------- /sponsors/reference.docx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/sponsors/reference.docx -------------------------------------------------------------------------------- /static/images/blank.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/blank.gif -------------------------------------------------------------------------------- /static/images/bullet.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/bullet.gif -------------------------------------------------------------------------------- /static/images/donate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/donate.png -------------------------------------------------------------------------------- /static/images/google.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/google.gif -------------------------------------------------------------------------------- /static/images/pynasa.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/pynasa.jpg -------------------------------------------------------------------------------- /static/images/pyxp.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/pyxp.jpg -------------------------------------------------------------------------------- /static/images/tabblo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/tabblo.png -------------------------------------------------------------------------------- /static/images/trans.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/trans.gif -------------------------------------------------------------------------------- /static/images/zeuux.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/zeuux.jpg -------------------------------------------------------------------------------- /static/img/psf-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/img/psf-logo.png -------------------------------------------------------------------------------- /templates/jobs/email/job_was_rejected_subject.txt: -------------------------------------------------------------------------------- 1 | Python Job Board: Job entry could not be accepted 2 | -------------------------------------------------------------------------------- /templates/search/indexes/jobs/jobtype_text.txt: -------------------------------------------------------------------------------- 1 | job type 2 | {{ object.name }} 3 | {{ object.name }} type -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pythondotorg", 3 | "description": "Django App behind python.org" 4 | } 5 | -------------------------------------------------------------------------------- /pydotorg/__init__.py: -------------------------------------------------------------------------------- 1 | from pydotorg.celery import app as celery_app 2 | 3 | __all__ = ("celery_app",) 4 | -------------------------------------------------------------------------------- /static/fonts/FluxBold.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/fonts/FluxBold.eot -------------------------------------------------------------------------------- /static/fonts/FluxBold.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/fonts/FluxBold.ttf -------------------------------------------------------------------------------- /static/fonts/FluxBold.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/fonts/FluxBold.woff -------------------------------------------------------------------------------- /static/images/OSAFLogo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/OSAFLogo.gif -------------------------------------------------------------------------------- /static/images/Red_Hat.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/Red_Hat.png -------------------------------------------------------------------------------- /static/images/astilogo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/astilogo.gif -------------------------------------------------------------------------------- /static/images/beslist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/beslist.png -------------------------------------------------------------------------------- /static/images/bizrate.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/bizrate.gif -------------------------------------------------------------------------------- /static/images/emd_logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/emd_logo.gif -------------------------------------------------------------------------------- /static/images/hw128_28.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/hw128_28.gif -------------------------------------------------------------------------------- /static/images/ironport.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/ironport.gif -------------------------------------------------------------------------------- /static/images/microbit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/microbit.png -------------------------------------------------------------------------------- /static/images/psf-logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/psf-logo.gif -------------------------------------------------------------------------------- /static/images/pyastra.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/pyastra.jpg -------------------------------------------------------------------------------- /static/images/pygoogle.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/pygoogle.jpg -------------------------------------------------------------------------------- /static/images/sun_logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/sun_logo.png -------------------------------------------------------------------------------- /static/images/winglogo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/winglogo.gif -------------------------------------------------------------------------------- /static/images/worldmap.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/worldmap.jpg -------------------------------------------------------------------------------- /static/images/zeomega.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/zeomega.gif -------------------------------------------------------------------------------- /static/img/python-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/img/python-logo.png -------------------------------------------------------------------------------- /static/img/sample-gmap.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/img/sample-gmap.png -------------------------------------------------------------------------------- /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | # Notify @EWDurbin for all opened Issues and Pull Requests 2 | * @EWDurbin @JacobCoffee 3 | -------------------------------------------------------------------------------- /static/fonts/FluxItalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/fonts/FluxItalic.eot -------------------------------------------------------------------------------- /static/fonts/FluxItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/fonts/FluxItalic.ttf -------------------------------------------------------------------------------- /static/fonts/FluxItalic.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/fonts/FluxItalic.woff -------------------------------------------------------------------------------- /static/fonts/FluxRegular.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/fonts/FluxRegular.eot -------------------------------------------------------------------------------- /static/fonts/FluxRegular.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/fonts/FluxRegular.ttf -------------------------------------------------------------------------------- /static/fonts/FluxRegular.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/fonts/FluxRegular.woff -------------------------------------------------------------------------------- /static/fonts/FontAwesome.otf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/fonts/FontAwesome.otf -------------------------------------------------------------------------------- /static/fonts/Pythonicon.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/fonts/Pythonicon.eot -------------------------------------------------------------------------------- /static/fonts/Pythonicon.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/fonts/Pythonicon.ttf -------------------------------------------------------------------------------- /static/fonts/Pythonicon.woff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/fonts/Pythonicon.woff -------------------------------------------------------------------------------- /static/images/activegrid.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/activegrid.gif -------------------------------------------------------------------------------- /static/images/arraylogo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/arraylogo.jpg -------------------------------------------------------------------------------- /static/images/enthought.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/enthought.jpg -------------------------------------------------------------------------------- /static/images/enthought.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/enthought.png -------------------------------------------------------------------------------- /static/images/freewear-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/freewear-1.png -------------------------------------------------------------------------------- /static/images/globo_logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/globo_logo.gif -------------------------------------------------------------------------------- /static/images/header-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/header-bg.png -------------------------------------------------------------------------------- /static/images/header-bg2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/header-bg2.png -------------------------------------------------------------------------------- /static/images/hood_logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/hood_logo.gif -------------------------------------------------------------------------------- /static/images/knmp-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/knmp-logo.png -------------------------------------------------------------------------------- /static/images/nav-off-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/nav-off-bg.png -------------------------------------------------------------------------------- /static/images/nav-on-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/nav-on-bg.png -------------------------------------------------------------------------------- /static/images/pep-0001-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/pep-0001-1.png -------------------------------------------------------------------------------- /static/images/python-logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/python-logo.gif -------------------------------------------------------------------------------- /static/images/pythonlogo.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/pythonlogo.pdf -------------------------------------------------------------------------------- /static/images/pythonlogo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/pythonlogo.png -------------------------------------------------------------------------------- /static/images/pythonlogo.tiff: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/pythonlogo.tiff -------------------------------------------------------------------------------- /static/images/seo_moves.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/seo_moves.jpg -------------------------------------------------------------------------------- /static/images/strakt_logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/strakt_logo.gif -------------------------------------------------------------------------------- /static/images/wargaming.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/wargaming.png -------------------------------------------------------------------------------- /static/images/zope_logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/zope_logo.gif -------------------------------------------------------------------------------- /static/img/landing-about.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/img/landing-about.png -------------------------------------------------------------------------------- /static/img/landing-docs.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/img/landing-docs.png -------------------------------------------------------------------------------- /static/img/psf-logo_print.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/img/psf-logo_print.png -------------------------------------------------------------------------------- /static/img/success-glow2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/img/success-glow2.png -------------------------------------------------------------------------------- /static/metro-icon-144x144.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/metro-icon-144x144.png -------------------------------------------------------------------------------- /static/source_files/glow.psd: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/source_files/glow.psd -------------------------------------------------------------------------------- /templates/jobs/email/job_was_submitted_subject.txt: -------------------------------------------------------------------------------- 1 | Job Submitted for Approval: {{ content_object.display_name }} -------------------------------------------------------------------------------- /templates/sponsors/email/psf_rejected_sponsorship_subject.txt: -------------------------------------------------------------------------------- 1 | REJECTED SPONSORSHIP to psf-sponsors@python.org 2 | -------------------------------------------------------------------------------- /templates/sponsors/email/sponsor_contract_subject.txt: -------------------------------------------------------------------------------- 1 | STATEMENT OF WORK subject email user + verified emails 2 | -------------------------------------------------------------------------------- /static/fonts/FluxBoldItalic.eot: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/fonts/FluxBoldItalic.eot -------------------------------------------------------------------------------- /static/fonts/FluxBoldItalic.ttf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/fonts/FluxBoldItalic.ttf -------------------------------------------------------------------------------- /static/images/PythonPowered.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/PythonPowered.gif -------------------------------------------------------------------------------- /static/images/button-on-bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/button-on-bg.png -------------------------------------------------------------------------------- /static/images/cpacket_logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/cpacket_logo.jpg -------------------------------------------------------------------------------- /static/images/favicon16x16.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/favicon16x16.ico -------------------------------------------------------------------------------- /static/images/finding-idle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/finding-idle.png -------------------------------------------------------------------------------- /static/images/freewear-logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/freewear-logo.png -------------------------------------------------------------------------------- /static/images/hitflip_logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/hitflip_logo.jpg -------------------------------------------------------------------------------- /static/images/openeye-logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/openeye-logo.gif -------------------------------------------------------------------------------- /static/images/oreilly_logo.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/oreilly_logo.gif -------------------------------------------------------------------------------- /static/images/py_mac-sq-64.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/py_mac-sq-64.png -------------------------------------------------------------------------------- /static/images/success/mmtk.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/success/mmtk.jpg -------------------------------------------------------------------------------- /static/images/success/nasa.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/success/nasa.jpg -------------------------------------------------------------------------------- /static/images/uniblue-logo.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/images/uniblue-logo.jpg -------------------------------------------------------------------------------- /static/img/bg_direction_nav.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/python/pythondotorg/main/static/img/bg_direction_nav.png -------------------------------------------------------------------------------- /templates/search/includes/jobs.job_category.html: -------------------------------------------------------------------------------- 1 |
4 | {% highlight result.text with query max_length 500 %} 5 |
6 | -------------------------------------------------------------------------------- /infra/config.tf: -------------------------------------------------------------------------------- 1 | # Connect us to TF Cloud for remote deploys 2 | terraform { 3 | cloud { 4 | organization = "psf" 5 | workspaces { 6 | name = "pythondotorg-infra" 7 | } 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /pydotorg/compilers.py: -------------------------------------------------------------------------------- 1 | from pipeline.compilers import sass 2 | 3 | 4 | class DummySASSCompiler(sass.SASSCompiler): 5 | 6 | def compile_file(self, infile, outfile, outdated=False, force=False): 7 | pass 8 | -------------------------------------------------------------------------------- /templates/search/indexes/events/calendar_text.txt: -------------------------------------------------------------------------------- 1 | {{ object.name }} 2 | {{ object.description }} 3 | {{ object.name }} 4 | {{ object.description }} 5 | {{ object.name }} 6 | {{ object.description }} 7 | {{ object.path }} -------------------------------------------------------------------------------- /codesamples/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | from .models import CodeSample 4 | from cms.admin import ContentManageableModelAdmin 5 | 6 | 7 | admin.site.register(CodeSample, ContentManageableModelAdmin) 8 | -------------------------------------------------------------------------------- /static/js/libs/html-includes.js: -------------------------------------------------------------------------------- 1 | // Look for any data-html-include elements, and include the content for them 2 | $('[data-html-include]').each(function() { 3 | $(this).load($(this).data('html-include')); 4 | }); 5 | -------------------------------------------------------------------------------- /templates/sitetree/sidebar_menu_root.html: -------------------------------------------------------------------------------- 1 | {% load sitetree %} 2 | 3 | {% if sitetree_items %} 4 | 8 | {% endif %} 9 | -------------------------------------------------------------------------------- /users/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class UsersAppConfig(AppConfig): 5 | 6 | name = 'users' 7 | verbose_name = 'Users' 8 | 9 | def ready(self): 10 | import users.listeners 11 | -------------------------------------------------------------------------------- /banners/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | 3 | from banners.models import Banner 4 | 5 | 6 | @admin.register(Banner) 7 | class BannerAdmin(admin.ModelAdmin): 8 | list_display = ("title", "active", "psf_pages_only") 9 | -------------------------------------------------------------------------------- /templates/events/eventcategory_list.html: -------------------------------------------------------------------------------- 1 | {% extends "waitforit.html" %} 2 | 3 | {% comment %} 4 | {% extends "base.html" %} 5 | 6 | {% block body_attributes %}class="python events list-categories"{% endblock %} 7 | {% endcomment %} 8 | -------------------------------------------------------------------------------- /jobs/apps.py: -------------------------------------------------------------------------------- 1 | from django.apps import AppConfig 2 | 3 | 4 | class JobsAppConfig(AppConfig): 5 | 6 | name = 'jobs' 7 | verbose_name = 'Jobs Application' 8 | 9 | def ready(self): 10 | import jobs.listeners 11 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | source "https://rubygems.org" 2 | 3 | group :media do 4 | gem "compass", "~>0.12.7" 5 | gem "sass", "~>3.2.19" 6 | gem "susy", "~>1.0.9" 7 | end 8 | 9 | group :development do 10 | gem "foreman", "~>0.61.0" 11 | end 12 | -------------------------------------------------------------------------------- /boxes/admin.py: -------------------------------------------------------------------------------- 1 | from django.contrib import admin 2 | from cms.admin import ContentManageableModelAdmin 3 | from .models import Box 4 | 5 | 6 | @admin.register(Box) 7 | class BoxAdmin(ContentManageableModelAdmin): 8 | ordering = ('label', ) 9 | -------------------------------------------------------------------------------- /templates/pypl/index.html: -------------------------------------------------------------------------------- 1 | {# ===== PyPl LANDING PAGE ===== #} 2 | 3 | {% extends "waitforit.html" %} 4 | 5 | 6 | {% block body_attributes %}class="pypl"{% endblock %} 7 | 8 | 9 | {% block main-nav_attributes %}pypl-navigation{% endblock %} 10 | -------------------------------------------------------------------------------- /templates/search/indexes/events/event_text.txt: -------------------------------------------------------------------------------- 1 | {{ object.title }} 2 | {{ object.name }} 3 | {{ object.venue }} 4 | {{ object.title }} 5 | {{ object.name }} 6 | {{ object.venue }} 7 | {{ object.description }} 8 | {{ object.description }} 9 | 10 | -------------------------------------------------------------------------------- /templates/shop/index.html: -------------------------------------------------------------------------------- 1 | {# ===== SHOP LANDING PAGE ===== #} 2 | 3 | {% extends "waitforit.html" %} 4 | 5 | 6 | {% block body_attributes %}class="shop"{% endblock %} 7 | 8 | 9 | {% block main-nav_attributes %}shop-navigation{% endblock %} 10 | -------------------------------------------------------------------------------- /templates/components/psf-widget.html: -------------------------------------------------------------------------------- 1 | 7 | -------------------------------------------------------------------------------- /boxes/views.py: -------------------------------------------------------------------------------- 1 | from django.http import HttpResponse 2 | from django.shortcuts import get_object_or_404 3 | from .models import Box 4 | 5 | def box(request, label): 6 | b = get_object_or_404(Box, label=label) 7 | return HttpResponse(b.content.rendered) 8 | -------------------------------------------------------------------------------- /nominations/templatetags/nominations.py: -------------------------------------------------------------------------------- 1 | import random 2 | from django import template 3 | 4 | register = template.Library() 5 | 6 | 7 | @register.filter 8 | def shuffle(arg): 9 | aux = list(arg)[:] 10 | random.shuffle(aux) 11 | return aux 12 | -------------------------------------------------------------------------------- /templates/docs/index.html: -------------------------------------------------------------------------------- 1 | {# ===== DOCS LANDING PAGE ===== #} 2 | 3 | {% extends "waitforit.html" %} 4 | 5 | 6 | {% block body_attributes %}class="python docs"{% endblock %} 7 | 8 | 9 | {% block main-nav_attributes %}python-navigation{% endblock %} 10 | -------------------------------------------------------------------------------- /community/urls.py: -------------------------------------------------------------------------------- 1 | from . import views 2 | from django.urls import path 3 | 4 | app_name = 'community' 5 | urlpatterns = [ 6 | path('', views.PostList.as_view(), name='post_list'), 7 | path('Python source code and installers are available for download for all versions!
3 |Latest: {{ latest_python3.name }}
-------------------------------------------------------------------------------- /templates/jobs/job_telecommute_list.html: -------------------------------------------------------------------------------- 1 | {% extends "jobs/job_list.html" %} 2 | 3 | {% block header_message %} 4 | Telecommute Jobs 5 | {% endblock %} 6 | 7 | {% block header_action %} 8 | {{ object_list|length }} Python job{{ object_list|length|pluralize }} that offer telecommuting 9 | {% endblock %} 10 | -------------------------------------------------------------------------------- /templates/sponsors/email/psf_new_application.txt: -------------------------------------------------------------------------------- 1 | {% load sponsors %} 2 | A new sponsorship application has been submitted! 3 | 4 | View the application at {% if request.is_secure %}https://{% else %}http://{% endif %}{{ request.get_host }}{{ sponsorship.admin_url }} 5 | 6 | Details: 7 | 8 | {% full_sponsorship sponsorship %} 9 | -------------------------------------------------------------------------------- /templates/search/includes/jobs.job.html: -------------------------------------------------------------------------------- 1 |Location: {{ result.city }}{% if result.region %}, {{ result.region }}{% endif %} {{ result.country }}
4 | 5 | {% if result.telecommuting %}Telecommuting: Yes
{% endif %} 6 |{{ result.description|safe }}
-------------------------------------------------------------------------------- /templates/sponsors/admin/sponsors_sponsorshipcurrentyear_changelist.html: -------------------------------------------------------------------------------- 1 | {% extends 'admin/change_list.html' %} 2 | 3 | {% block object-tools-items %} 4 |{{ entry.pub_date|date:"l, F j, Y" }}
3 |5 | {{ entry.summary|truncatewords_html:50|striptags|safe }}Read more 6 |
7 |Version: {{ result.version }}
3 |Released: {{ result.release_date|date }}
4 |{{ result.description|safe }}
5 | {% if result.release_notes_url %} 6 | 7 | {% endif %} 8 | -------------------------------------------------------------------------------- /users/listeners.py: -------------------------------------------------------------------------------- 1 | from django.db.models.signals import post_save 2 | from django.dispatch import receiver 3 | 4 | from rest_framework.authtoken.models import Token 5 | 6 | from .models import User 7 | 8 | 9 | @receiver(post_save, sender=User) 10 | def create_auth_token(sender, instance, created, **kwargs): 11 | if created: 12 | Token.objects.create(user=instance) 13 | -------------------------------------------------------------------------------- /static/img/sponsors/title-1.svg: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /sponsors/migrations/0023_merge_20210406_1522.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.13 on 2021-04-06 15:22 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('sponsors', '0022_sponsorcontact_administrative'), 10 | ('sponsors', '0020_sponsorshipbenefit_unavailable'), 11 | ] 12 | 13 | operations = [ 14 | ] 15 | -------------------------------------------------------------------------------- /successstories/migrations/0007_remove_story_weight.py: -------------------------------------------------------------------------------- 1 | from django.db import models, migrations 2 | 3 | 4 | class Migration(migrations.Migration): 5 | 6 | dependencies = [ 7 | ('successstories', '0006_auto_20170726_0824'), 8 | ] 9 | 10 | operations = [ 11 | migrations.RemoveField( 12 | model_name='story', 13 | name='weight', 14 | ), 15 | ] 16 | -------------------------------------------------------------------------------- /minutes/urls.py: -------------------------------------------------------------------------------- 1 | from .feeds import MinutesFeed 2 | from . import views 3 | from django.urls import path, re_path 4 | 5 | 6 | urlpatterns = [ 7 | path('', views.MinutesList.as_view(), name='minutes_list'), 8 | path('feed/', MinutesFeed(), name='minutes_feed'), 9 | re_path(r'^(?PUnfortunately, you don't have enough privileges to access this page.
12 | 13 |{{ result.description|safe }}
3 | {% if result.rss %} 4 | 5 | {% endif %} 6 | {% if result.twitter %} 7 | 8 | {% endif %} 9 | {% if result.ical %} 10 | 11 | {% endif %} 12 | -------------------------------------------------------------------------------- /blogs/factories.py: -------------------------------------------------------------------------------- 1 | from django.conf import settings 2 | 3 | from .models import Feed 4 | 5 | 6 | def initial_data(): 7 | feed, _ = Feed.objects.get_or_create( 8 | id=1, 9 | defaults={ 10 | 'name': 'Python Insider', 11 | 'website_url': settings.PYTHON_BLOG_URL, 12 | 'feed_url': settings.PYTHON_BLOG_FEED_URL, 13 | } 14 | ) 15 | return { 16 | 'feeds': [feed], 17 | } 18 | -------------------------------------------------------------------------------- /jobs/migrations/0015_auto_20170814_0301.py: -------------------------------------------------------------------------------- 1 | from django.db import migrations, models 2 | 3 | 4 | class Migration(migrations.Migration): 5 | 6 | dependencies = [ 7 | ('jobs', '0014_merge'), 8 | ] 9 | 10 | operations = [ 11 | migrations.AlterField( 12 | model_name='job', 13 | name='email', 14 | field=models.EmailField(max_length=254, verbose_name='Contact email'), 15 | ), 16 | ] 17 | -------------------------------------------------------------------------------- /templates/python/shell.html: -------------------------------------------------------------------------------- 1 | {% extends "python/index.html" %} 2 | 3 | {% block body_attributes %}class="python home shell-active"{% endblock %} 4 | 5 | {% block header_content %} 6 | 11 | 12 | {% endblock header_content %} 13 | -------------------------------------------------------------------------------- /sponsors/migrations/0024_auto_20210414_1449.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.13 on 2021-04-14 14:49 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('sponsors', '0023_merge_20210406_1522'), 10 | ] 11 | 12 | operations = [ 13 | migrations.RenameModel( 14 | old_name='StatementOfWork', 15 | new_name='Contract', 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /successstories/migrations/0008_auto_20170821_2000.py: -------------------------------------------------------------------------------- 1 | from django.db import migrations, models 2 | 3 | 4 | class Migration(migrations.Migration): 5 | 6 | dependencies = [ 7 | ('successstories', '0007_remove_story_weight'), 8 | ] 9 | 10 | operations = [ 11 | migrations.AlterField( 12 | model_name='story', 13 | name='name', 14 | field=models.CharField(max_length=200), 15 | ), 16 | ] 17 | -------------------------------------------------------------------------------- /templates/sponsors/admin/sponsorshipbenefit_change_form.html: -------------------------------------------------------------------------------- 1 | {% extends "admin/change_form.html" %} 2 | {% load i18n admin_urls %} 3 | 4 | {% block object-tools-items %} 5 | {% with original as benefit %} 6 | 7 |For most Unix systems, you must download and compile the source code. The same source code archive can also be used to build the Windows and Mac versions, and is the starting point for ports to all other platforms.
3 | 4 |Download the latest Python 3 source.
5 | 6 | -------------------------------------------------------------------------------- /templates/users/membership_vote_affirm.html: -------------------------------------------------------------------------------- 1 | {% extends "users/base.html" %} 2 | 3 | {% block user_content %} 4 |Your last affirmation was on {{ request.user.membership.last_vote_affirmation|date }}.
7 | 8 | 12 | {% endblock user_content %} -------------------------------------------------------------------------------- /companies/migrations/0003_auto_20170814_0301.py: -------------------------------------------------------------------------------- 1 | from django.db import migrations, models 2 | 3 | 4 | class Migration(migrations.Migration): 5 | 6 | dependencies = [ 7 | ('companies', '0002_auto_20150416_1853'), 8 | ] 9 | 10 | operations = [ 11 | migrations.AlterField( 12 | model_name='company', 13 | name='email', 14 | field=models.EmailField(max_length=254, null=True, blank=True), 15 | ), 16 | ] 17 | -------------------------------------------------------------------------------- /downloads/migrations/0004_auto_20170821_2000.py: -------------------------------------------------------------------------------- 1 | from django.db import migrations, models 2 | 3 | 4 | class Migration(migrations.Migration): 5 | 6 | dependencies = [ 7 | ('downloads', '0003_auto_20150824_1612'), 8 | ] 9 | 10 | operations = [ 11 | migrations.AlterField( 12 | model_name='release', 13 | name='_content_rendered', 14 | field=models.TextField(editable=False, default=''), 15 | ), 16 | ] 17 | -------------------------------------------------------------------------------- /events/templatetags/events.py: -------------------------------------------------------------------------------- 1 | from django import template 2 | from django.utils import timezone 3 | 4 | from ..models import Event 5 | 6 | 7 | register = template.Library() 8 | 9 | 10 | @register.simple_tag 11 | def get_events_upcoming(limit=5, only_featured=False): 12 | qs = Event.objects.for_datetime(timezone.now()).order_by( 13 | 'occurring_rule__dt_start') 14 | if only_featured: 15 | qs = qs.filter(featured=True) 16 | return qs[:limit] 17 | -------------------------------------------------------------------------------- /.readthedocs.yaml: -------------------------------------------------------------------------------- 1 | # Read the Docs configuration file 2 | # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details 3 | # Project page: https://readthedocs.org/projects/pythondotorg/ 4 | 5 | version: 2 6 | 7 | build: 8 | os: ubuntu-22.04 9 | tools: 10 | python: "3" 11 | 12 | commands: 13 | - python -m pip install -r docs-requirements.txt 14 | - make -C docs html JOBS=$(nproc) BUILDDIR=_readthedocs 15 | - mv docs/_readthedocs _readthedocs 16 | -------------------------------------------------------------------------------- /sponsors/migrations/0086_auto_20220809_1655.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.24 on 2022-08-09 16:55 2 | 3 | from django.db import migrations 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('sponsors', '0085_auto_20220730_0945'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterModelOptions( 14 | name='sponsorshippackage', 15 | options={'ordering': ('-year', 'order')}, 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /templates/500.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block body_attributes %}class="python default-page fivehundred"{% endblock %} 4 | 5 | {% block content %} 6 | 7 |We couldn’t find what you were looking for. This error has been reported and we will look into it shortly.
12 | 13 |Your membership information has been saved successfully.
15 |{% trans 'Are you sure you want to sign out?' %}
11 | 12 | 19 | 20 | 21 | {% endblock %} 22 | -------------------------------------------------------------------------------- /boxes/migrations/0002_auto_20150416_1853.py: -------------------------------------------------------------------------------- 1 | from django.db import models, migrations 2 | 3 | 4 | class Migration(migrations.Migration): 5 | 6 | dependencies = [ 7 | ('boxes', '0001_initial'), 8 | ] 9 | 10 | operations = [ 11 | migrations.AlterField( 12 | model_name='box', 13 | name='content_markup_type', 14 | field=models.CharField(max_length=30, default='restructuredtext', choices=[('', '--'), ('html', 'HTML'), ('plain', 'Plain'), ('markdown', 'Markdown'), ('restructuredtext', 'Restructured Text')]), 15 | preserve_default=True, 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /pages/migrations/0002_auto_20150416_1853.py: -------------------------------------------------------------------------------- 1 | from django.db import models, migrations 2 | 3 | 4 | class Migration(migrations.Migration): 5 | 6 | dependencies = [ 7 | ('pages', '0001_initial'), 8 | ] 9 | 10 | operations = [ 11 | migrations.AlterField( 12 | model_name='page', 13 | name='content_markup_type', 14 | field=models.CharField(max_length=30, default='restructuredtext', choices=[('', '--'), ('html', 'HTML'), ('plain', 'Plain'), ('markdown', 'Markdown'), ('restructuredtext', 'Restructured Text')]), 15 | preserve_default=True, 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /users/migrations/0002_auto_20150416_1853.py: -------------------------------------------------------------------------------- 1 | from django.db import models, migrations 2 | 3 | 4 | class Migration(migrations.Migration): 5 | 6 | dependencies = [ 7 | ('users', '0001_initial'), 8 | ] 9 | 10 | operations = [ 11 | migrations.AlterField( 12 | model_name='user', 13 | name='bio_markup_type', 14 | field=models.CharField(max_length=30, choices=[('', '--'), ('html', 'HTML'), ('plain', 'Plain'), ('markdown', 'Markdown'), ('restructuredtext', 'Restructured Text')], default='markdown', blank=True), 15 | preserve_default=True, 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /minutes/migrations/0002_auto_20150416_1853.py: -------------------------------------------------------------------------------- 1 | from django.db import models, migrations 2 | 3 | 4 | class Migration(migrations.Migration): 5 | 6 | dependencies = [ 7 | ('minutes', '0001_initial'), 8 | ] 9 | 10 | operations = [ 11 | migrations.AlterField( 12 | model_name='minutes', 13 | name='content_markup_type', 14 | field=models.CharField(max_length=30, default='restructuredtext', choices=[('', '--'), ('html', 'HTML'), ('plain', 'Plain'), ('markdown', 'Markdown'), ('restructuredtext', 'Restructured Text')]), 15 | preserve_default=True, 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /sponsors/migrations/0044_auto_20210827_1344.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.13 on 2021-08-27 13:44 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('sponsors', '0043_auto_20210827_1343'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='sponsorship', 15 | name='level_name_old', 16 | field=models.CharField(blank=True, default='', help_text='DEPRECATED: shall be removed after manual data sanity check.', max_length=64, verbose_name='Level name'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /downloads/migrations/0002_auto_20150416_1853.py: -------------------------------------------------------------------------------- 1 | from django.db import models, migrations 2 | 3 | 4 | class Migration(migrations.Migration): 5 | 6 | dependencies = [ 7 | ('downloads', '0001_initial'), 8 | ] 9 | 10 | operations = [ 11 | migrations.AlterField( 12 | model_name='release', 13 | name='content_markup_type', 14 | field=models.CharField(max_length=30, default='restructuredtext', choices=[('', '--'), ('html', 'HTML'), ('plain', 'Plain'), ('markdown', 'Markdown'), ('restructuredtext', 'Restructured Text')]), 15 | preserve_default=True, 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /mailing/forms.py: -------------------------------------------------------------------------------- 1 | from django import forms 2 | from django.template import Template, Context, TemplateSyntaxError 3 | 4 | from mailing.models import BaseEmailTemplate 5 | 6 | 7 | class BaseEmailTemplateForm(forms.ModelForm): 8 | 9 | def clean_content(self): 10 | content = self.cleaned_data["content"] 11 | try: 12 | template = Template(content) 13 | template.render(Context({})) 14 | return content 15 | except TemplateSyntaxError as e: 16 | raise forms.ValidationError(e) 17 | 18 | class Meta: 19 | model = BaseEmailTemplate 20 | fields = "__all__" 21 | -------------------------------------------------------------------------------- /membership/tests/test_views.py: -------------------------------------------------------------------------------- 1 | from django.test import TestCase 2 | 3 | from waffle.testutils import override_flag 4 | 5 | 6 | class MembershipViewTests(TestCase): 7 | 8 | @override_flag('psf_membership', active=False) 9 | def test_membership_landing_ensure_404(self): 10 | response = self.client.get('/membership/') 11 | self.assertEqual(response.status_code, 404) 12 | 13 | @override_flag('psf_membership', active=True) 14 | def test_membership_landing(self): 15 | # Ensure FlagMixin is working 16 | response = self.client.get('/membership/') 17 | self.assertEqual(response.status_code, 200) 18 | -------------------------------------------------------------------------------- /sponsors/migrations/0078_init_current_year_singleton.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.24 on 2022-07-28 16:04 2 | 3 | from django.db import migrations 4 | 5 | 6 | def populate_singleton(apps, schema_editor): 7 | SponsorshipCurrentYear = apps.get_model("sponsors.SponsorshipCurrentYear") 8 | SponsorshipCurrentYear.objects.get_or_create(id=1, defaults={"year": 2022}) 9 | 10 | 11 | class Migration(migrations.Migration): 12 | 13 | dependencies = [ 14 | ('sponsors', '0077_sponsorshipcurrentyear'), 15 | ] 16 | 17 | operations = [ 18 | migrations.RunPython(populate_singleton, migrations.RunPython.noop) 19 | ] 20 | -------------------------------------------------------------------------------- /static/img/sponsors/tick.svg: -------------------------------------------------------------------------------- 1 | 4 | -------------------------------------------------------------------------------- /downloads/migrations/0012_alter_release_version.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 4.2.20 on 2025-04-24 19:26 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('downloads', '0011_alter_os_creator_alter_os_last_modified_by_and_more'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='release', 15 | name='version', 16 | field=models.IntegerField(choices=[(3, 'Python 3.x.x'), (2, 'Python 2.x.x'), (1, 'Python 1.x.x'), (100, 'Python install manager')], default=3), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /sponsors/exceptions.py: -------------------------------------------------------------------------------- 1 | class SponsorWithExistingApplicationException(Exception): 2 | """ 3 | Raised when user tries to create a new Sponsorship application 4 | for a Sponsor which already has applications pending to review 5 | """ 6 | 7 | 8 | class InvalidStatusException(Exception): 9 | """ 10 | Raised when user tries to change the Sponsorship's status 11 | to a new one but from an invalid current status 12 | """ 13 | 14 | 15 | class SponsorshipInvalidDateRangeException(Exception): 16 | """ 17 | Raised when user tries to approve a sponsorship with a start date 18 | greater than the end date. 19 | """ 20 | -------------------------------------------------------------------------------- /templates/robots.txt: -------------------------------------------------------------------------------- 1 | # Directions for robots. See this URL: 2 | # http://www.robotstxt.org/robotstxt.html 3 | # for a description of the file format. 4 | 5 | User-agent: HTTrack 6 | User-agent: puf 7 | User-agent: MSIECrawler 8 | Disallow: / 9 | 10 | # The Krugle web crawler (though based on Nutch) is OK. 11 | User-agent: Krugle 12 | Allow: / 13 | Disallow: /~guido/orlijn/ 14 | Disallow: /webstats/ 15 | 16 | # No one should be crawling us with Nutch. 17 | User-agent: Nutch 18 | Disallow: / 19 | 20 | # Hide old versions of the documentation and various large sets of files. 21 | User-agent: * 22 | Disallow: /~guido/orlijn/ 23 | Disallow: /webstats/ 24 | -------------------------------------------------------------------------------- /companies/migrations/0002_auto_20150416_1853.py: -------------------------------------------------------------------------------- 1 | from django.db import models, migrations 2 | 3 | 4 | class Migration(migrations.Migration): 5 | 6 | dependencies = [ 7 | ('companies', '0001_initial'), 8 | ] 9 | 10 | operations = [ 11 | migrations.AlterField( 12 | model_name='company', 13 | name='about_markup_type', 14 | field=models.CharField(max_length=30, choices=[('', '--'), ('html', 'HTML'), ('plain', 'Plain'), ('markdown', 'Markdown'), ('restructuredtext', 'Restructured Text')], default='restructuredtext', blank=True), 15 | preserve_default=True, 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /events/migrations/0003_auto_20150416_1853.py: -------------------------------------------------------------------------------- 1 | from django.db import models, migrations 2 | 3 | 4 | class Migration(migrations.Migration): 5 | 6 | dependencies = [ 7 | ('events', '0002_auto_20150321_1247'), 8 | ] 9 | 10 | operations = [ 11 | migrations.AlterField( 12 | model_name='event', 13 | name='description_markup_type', 14 | field=models.CharField(max_length=30, default='restructuredtext', choices=[('', '--'), ('html', 'HTML'), ('plain', 'Plain'), ('markdown', 'Markdown'), ('restructuredtext', 'Restructured Text')]), 15 | preserve_default=True, 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /successstories/migrations/0002_auto_20150416_1853.py: -------------------------------------------------------------------------------- 1 | from django.db import models, migrations 2 | 3 | 4 | class Migration(migrations.Migration): 5 | 6 | dependencies = [ 7 | ('successstories', '0001_initial'), 8 | ] 9 | 10 | operations = [ 11 | migrations.AlterField( 12 | model_name='story', 13 | name='content_markup_type', 14 | field=models.CharField(max_length=30, default='restructuredtext', choices=[('', '--'), ('html', 'HTML'), ('plain', 'Plain'), ('markdown', 'Markdown'), ('restructuredtext', 'Restructured Text')]), 15 | preserve_default=True, 16 | ), 17 | ] 18 | -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/config.yml: -------------------------------------------------------------------------------- 1 | blank_issues_enabled: false 2 | contact_links: 3 | - name: CPython Documentation 4 | url: https://docs.python.org/ 5 | about: Official CPython documentation - please check here before opening an issue. 6 | - name: Python Website 7 | url: https://python.org/ 8 | about: For all things Python 9 | - name: PyPI Issues / Support 10 | url: https://github.com/pypi/support 11 | about: For issues with PyPI itself, PyPI accounts, or with packages hosted on PyPI. 12 | - name: CPython Issues 13 | url: https://github.com/python/cpython/issues 14 | about: For issues with the CPython interpreter itself. 15 | -------------------------------------------------------------------------------- /sponsors/migrations/0022_sponsorcontact_administrative.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.0.13 on 2020-12-21 11:46 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ("sponsors", "0021_auto_20201211_2120"), 10 | ] 11 | 12 | operations = [ 13 | migrations.AddField( 14 | model_name="sponsorcontact", 15 | name="administrative", 16 | field=models.BooleanField( 17 | default=False, 18 | help_text="If this is an administrative contact for the sponsor", 19 | ), 20 | ), 21 | ] 22 | -------------------------------------------------------------------------------- /sponsors/migrations/0075_auto_20220303_2023.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.24 on 2022-03-03 20:23 2 | 3 | from django.db import migrations, models 4 | import django.db.models.deletion 5 | import django.db.models.manager 6 | 7 | 8 | class Migration(migrations.Migration): 9 | 10 | dependencies = [ 11 | ('sponsors', '0074_auto_20220211_1659'), 12 | ] 13 | 14 | operations = [ 15 | migrations.AddField( 16 | model_name='sponsorship', 17 | name='overlapped_by', 18 | field=models.ForeignKey(null=True, on_delete=django.db.models.deletion.SET_NULL, to='sponsors.Sponsorship'), 19 | ), 20 | ] 21 | -------------------------------------------------------------------------------- /sponsors/migrations/0098_auto_20231219_1910.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.24 on 2023-12-19 19:10 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('sponsors', '0097_sponsorship_renewal'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='sponsorship', 15 | name='renewal', 16 | field=models.BooleanField(blank=True, help_text='If true, it means the sponsorship is a renewal of a previous sponsorship and will use the renewal template for contracting.', null=True), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /events/management/commands/import_ics_calendars.py: -------------------------------------------------------------------------------- 1 | from django.core.management import BaseCommand 2 | from events.models import Calendar 3 | 4 | 5 | class Command(BaseCommand): 6 | """ 7 | Imports ICS calendars. 8 | When used in cron jobs, it is advised to add file-locking by using the flock(1) 9 | command. Eg:: 10 | 11 | flock -n import_ics_calendars.lock -c django-admin.py import_ics_calendars --settings=pydotorg.settings.local 12 | 13 | """ 14 | 15 | def handle(self, **options): 16 | calendars = Calendar.objects.filter(url__isnull=False) 17 | for calendar in calendars: 18 | calendar.import_events() 19 | -------------------------------------------------------------------------------- /sponsors/migrations/0068_auto_20220110_1841.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.24 on 2022-01-10 18:41 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('sponsors', '0067_sponsorbenefit_a_la_carte'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='sponsorship', 15 | name='for_modified_package', 16 | field=models.BooleanField(default=False, help_text="If true, it means the user customized the package's benefits. Changes are listed under section 'User Customizations'."), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /sponsors/migrations/0092_auto_20220816_1517.py: -------------------------------------------------------------------------------- 1 | # Generated by Django 2.2.24 on 2022-08-16 15:17 2 | 3 | from django.db import migrations, models 4 | 5 | 6 | class Migration(migrations.Migration): 7 | 8 | dependencies = [ 9 | ('sponsors', '0091_sponsorshippackage_allow_a_la_carte'), 10 | ] 11 | 12 | operations = [ 13 | migrations.AlterField( 14 | model_name='sponsorshipbenefit', 15 | name='unavailable', 16 | field=models.BooleanField(default=False, help_text='If selected, this benefit will not be visible or available to applicants.', verbose_name='Benefit is unavailable'), 17 | ), 18 | ] 19 | -------------------------------------------------------------------------------- /templates/community/post_detail.html: -------------------------------------------------------------------------------- 1 | {% extends "base.html" %} 2 | 3 | {% block page_title %}{{ object.title }} | {{ SITE_INFO.site_name }}{% endblock %} 4 | {% block og_title %}{{ object.title }}{% endblock %} 5 | 6 | {% block body_attributes %}class="shop community default-page"{% endblock %} 7 | 8 | 9 | {% block main-nav_attributes %}community-navigation{% endblock main-nav_attributes %} 10 | 11 | 12 | {% block content_attributes %}with-right-sidebar{% endblock content_attributes %} 13 | 14 | 15 | {% block content %} 16 | {% if object.title %} 17 |10 | Your event has been submitted! This has sent 11 | an email to the maintainers of the Python Events calendar. 12 | Please check your email and await for updates. Thanks a lot! 13 |
14 |7 | {{ story.pull_quote }} 8 |9 |
{{ story.author }}, {% if story.get_company_url %}{{ story.get_company_name }}{% else %}{{ story.get_company_name }}{% endif %}
10 | 11 |