aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Kieran Siek <[email protected]>2021-06-27 16:12:07 +0800
committerGravatar GitHub <[email protected]>2021-06-27 16:12:07 +0800
commitcc59fc79b6e4fe23b5630577e492a1fb0ef08852 (patch)
treedd1d389ba271371d6a3143dc80426b5f680407e5
parentAddress review comments. (diff)
parentMerge pull request #536 from bast0006/fix-nitro-message (diff)
Merge branch 'main' into move-config-docs-to-contributing-guide
-rw-r--r--.github/ISSUE_TEMPLATE/resource_suggestion.md21
-rw-r--r--.github/workflows/deploy.yaml6
-rw-r--r--pydis_site/apps/api/migrations/0070_auto_20210618_2114.py19
-rw-r--r--pydis_site/apps/api/migrations/0071_increase_message_content_4000.py18
-rw-r--r--pydis_site/apps/api/models/bot/message.py2
-rw-r--r--pydis_site/apps/api/models/bot/role.py8
-rw-r--r--pydis_site/apps/api/tests/test_models.py40
-rw-r--r--pydis_site/apps/resources/resources/communities/rlbot.yaml13
-rw-r--r--pydis_site/static/css/error_pages.css2
-rw-r--r--pydis_site/static/images/events/DO_Logo_Vertical_Blue.pngbin0 -> 7156 bytes
-rw-r--r--pydis_site/static/images/events/Tabnine.pngbin0 -> 10534 bytes
-rw-r--r--pydis_site/static/images/events/cj8_asciimatics.pngbin0 -> 26219 bytes
-rw-r--r--pydis_site/static/images/events/cj8_blessed.gifbin0 -> 41307 bytes
-rw-r--r--pydis_site/static/images/events/cj8_curses.pngbin0 -> 6483 bytes
-rw-r--r--pydis_site/static/images/events/cj8_prompttoolkit.pngbin0 -> 144850 bytes
-rw-r--r--pydis_site/static/images/events/cj8_rich.gifbin0 -> 906975 bytes
-rw-r--r--pydis_site/static/images/events/cj8_urwid.pngbin0 -> 318 bytes
-rw-r--r--pydis_site/static/images/events/summer_code_jam_2021.pngbin0 -> 738161 bytes
-rw-r--r--pydis_site/static/images/sponsors/cloudflare.pngbin0 -> 13822 bytes
-rw-r--r--pydis_site/templates/base/navbar.html21
-rw-r--r--pydis_site/templates/events/index.html3
-rw-r--r--pydis_site/templates/events/pages/code-jams/8/_index.html131
-rw-r--r--pydis_site/templates/events/pages/code-jams/8/frameworks.html116
-rw-r--r--pydis_site/templates/events/pages/code-jams/8/github-bootcamp.html45
-rw-r--r--pydis_site/templates/events/pages/code-jams/8/rules.html69
-rw-r--r--pydis_site/templates/events/sidebar/code-jams/8.html21
-rw-r--r--pydis_site/templates/events/sidebar/code-jams/previous-code-jams.html1
-rw-r--r--pydis_site/templates/events/sidebar/code-jams/upcoming-code-jam.html6
-rw-r--r--pydis_site/templates/events/sidebar/upcoming-event.html4
-rw-r--r--pydis_site/templates/home/index.html2
30 files changed, 507 insertions, 41 deletions
diff --git a/.github/ISSUE_TEMPLATE/resource_suggestion.md b/.github/ISSUE_TEMPLATE/resource_suggestion.md
new file mode 100644
index 00000000..f09f8a9b
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/resource_suggestion.md
@@ -0,0 +1,21 @@
+---
+name: Resource Suggestion
+about: Suggest a resource for the Python Discord resource index.
+title: 'Resource Suggestion: '
+labels: 'resource suggestion'
+assignees: 'swfarnsworth'
+---
+
+**Resource name**
+
+**Resource location**\
+Should be a link of some kind, either to the resource itself or (in the case of resources that must be purchased) an information page about it.
+
+**Payment type**\
+Options are free, paid, and subscription. Combinations of these are allowed for special cases (like a limited free version).
+
+**Why it should be included**\
+A brief explanation for why you think this resource is valuable.
+
+**Potential limitations**\
+Is the resource easy to use? Does it contain good information but have poorly-written code? Is it outdated in some way? If so, explain why it should still be included.
diff --git a/.github/workflows/deploy.yaml b/.github/workflows/deploy.yaml
index efc08040..4208f727 100644
--- a/.github/workflows/deploy.yaml
+++ b/.github/workflows/deploy.yaml
@@ -44,3 +44,9 @@ jobs:
site/deployment.yaml
images: 'ghcr.io/python-discord/site:${{ steps.sha_tag.outputs.tag }}'
kubectl-version: 'latest'
+
+ - name: Purge Cloudflare Edge Cache
+ uses: jakejarvis/cloudflare-purge-action@master
+ env:
+ CLOUDFLARE_ZONE: 989c984a358bfcd1e9b9d188cc86c1df
+ CLOUDFLARE_TOKEN: ${{ secrets.CLOUDFLARE_CACHE_TOKEN }}
diff --git a/pydis_site/apps/api/migrations/0070_auto_20210618_2114.py b/pydis_site/apps/api/migrations/0070_auto_20210618_2114.py
new file mode 100644
index 00000000..1d25e421
--- /dev/null
+++ b/pydis_site/apps/api/migrations/0070_auto_20210618_2114.py
@@ -0,0 +1,19 @@
+# Generated by Django 3.0.14 on 2021-06-18 21:14
+
+import django.core.validators
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('api', '0069_documentationlink_validators'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='role',
+ name='permissions',
+ field=models.BigIntegerField(help_text='The integer value of the permission bitset of this role from Discord.', validators=[django.core.validators.MinValueValidator(limit_value=0, message='Role permissions cannot be negative.')]),
+ ),
+ ]
diff --git a/pydis_site/apps/api/migrations/0071_increase_message_content_4000.py b/pydis_site/apps/api/migrations/0071_increase_message_content_4000.py
new file mode 100644
index 00000000..6ca5d21a
--- /dev/null
+++ b/pydis_site/apps/api/migrations/0071_increase_message_content_4000.py
@@ -0,0 +1,18 @@
+# Generated by Django 3.0.14 on 2021-06-24 14:45
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+ dependencies = [
+ ('api', '0070_auto_20210618_2114'),
+ ]
+
+ operations = [
+ migrations.AlterField(
+ model_name='deletedmessage',
+ name='content',
+ field=models.CharField(blank=True, help_text='The content of this message, taken from Discord.', max_length=4000),
+ ),
+ ]
diff --git a/pydis_site/apps/api/models/bot/message.py b/pydis_site/apps/api/models/bot/message.py
index ff06de21..60e2a553 100644
--- a/pydis_site/apps/api/models/bot/message.py
+++ b/pydis_site/apps/api/models/bot/message.py
@@ -43,7 +43,7 @@ class Message(ModelReprMixin, models.Model):
verbose_name="Channel ID"
)
content = models.CharField(
- max_length=2_000,
+ max_length=4_000,
help_text="The content of this message, taken from Discord.",
blank=True
)
diff --git a/pydis_site/apps/api/models/bot/role.py b/pydis_site/apps/api/models/bot/role.py
index cfadfec4..733a8e08 100644
--- a/pydis_site/apps/api/models/bot/role.py
+++ b/pydis_site/apps/api/models/bot/role.py
@@ -1,6 +1,6 @@
from __future__ import annotations
-from django.core.validators import MaxValueValidator, MinValueValidator
+from django.core.validators import MinValueValidator
from django.db import models
from pydis_site.apps.api.models.mixins import ModelReprMixin
@@ -38,16 +38,12 @@ class Role(ModelReprMixin, models.Model):
),
help_text="The integer value of the colour of this role from Discord."
)
- permissions = models.IntegerField(
+ permissions = models.BigIntegerField(
validators=(
MinValueValidator(
limit_value=0,
message="Role permissions cannot be negative."
),
- MaxValueValidator(
- limit_value=2 << 32,
- message="Role permission bitset exceeds value of having all permissions"
- )
),
help_text="The integer value of the permission bitset of this role from Discord."
)
diff --git a/pydis_site/apps/api/tests/test_models.py b/pydis_site/apps/api/tests/test_models.py
index 66052e01..5c9ddea4 100644
--- a/pydis_site/apps/api/tests/test_models.py
+++ b/pydis_site/apps/api/tests/test_models.py
@@ -1,6 +1,7 @@
from datetime import datetime as dt
-from django.test import SimpleTestCase
+from django.core.exceptions import ValidationError
+from django.test import SimpleTestCase, TestCase
from django.utils import timezone
from pydis_site.apps.api.models import (
@@ -34,6 +35,43 @@ class ReprMixinTests(SimpleTestCase):
self.assertEqual(repr(self.klass), expected)
+class NitroMessageLengthTest(TestCase):
+ def setUp(self):
+ self.user = User.objects.create(id=50, name='bill', discriminator=5)
+ self.context = MessageDeletionContext.objects.create(
+ id=50,
+ actor=self.user,
+ creation=dt.utcnow()
+ )
+
+ def test_create(self):
+ message = DeletedMessage(
+ id=46,
+ author=self.user,
+ channel_id=666,
+ content="w"*4000,
+ deletion_context=self.context,
+ embeds=[]
+ )
+
+ try:
+ message.clean_fields()
+ except Exception as e: # pragma: no cover
+ self.fail(f"Creation of message of length 3950 failed with: {e}")
+
+ def test_create_failure(self):
+ message = DeletedMessage(
+ id=47,
+ author=self.user,
+ channel_id=666,
+ content="w"*4001,
+ deletion_context=self.context,
+ embeds=[]
+ )
+
+ self.assertRaisesRegex(ValidationError, "content':", message.clean_fields)
+
+
class StringDunderMethodTests(SimpleTestCase):
def setUp(self):
self.nomination = Nomination(
diff --git a/pydis_site/apps/resources/resources/communities/rlbot.yaml b/pydis_site/apps/resources/resources/communities/rlbot.yaml
deleted file mode 100644
index d12c1dec..00000000
--- a/pydis_site/apps/resources/resources/communities/rlbot.yaml
+++ /dev/null
@@ -1,13 +0,0 @@
-description: RLBot is a community of programmers making awesome Rocket League bots.
- They've created a framework that you can use to write bots in a number of languages (including Python),
- and they host regular tournaments where botmakers can pit their creations against each other.
-title_image: https://i.imgur.com/S8L1muZ.png
-title_url: https://discord.gg/4JJdJKb
-position: 7
-urls:
- - icon: branding/discord
- url: https://discord.gg/4JJdJKb
- color: blurple
- - icon: regular/link
- url: https://www.rlbot.org/
- color: teal
diff --git a/pydis_site/static/css/error_pages.css b/pydis_site/static/css/error_pages.css
index e59e2a54..042a53a0 100644
--- a/pydis_site/static/css/error_pages.css
+++ b/pydis_site/static/css/error_pages.css
@@ -48,7 +48,6 @@ li {
display: flex;
flex-direction: column;
max-width: 512px;
- background-color: white;
border-radius: 20px;
overflow: hidden;
box-shadow: 5px 7px 40px rgba(0, 0, 0, 0.432);
@@ -64,4 +63,5 @@ li {
.content-box {
padding: 25px;
+ background: #fff;
}
diff --git a/pydis_site/static/images/events/DO_Logo_Vertical_Blue.png b/pydis_site/static/images/events/DO_Logo_Vertical_Blue.png
new file mode 100644
index 00000000..ad528652
--- /dev/null
+++ b/pydis_site/static/images/events/DO_Logo_Vertical_Blue.png
Binary files differ
diff --git a/pydis_site/static/images/events/Tabnine.png b/pydis_site/static/images/events/Tabnine.png
new file mode 100644
index 00000000..eee42a5e
--- /dev/null
+++ b/pydis_site/static/images/events/Tabnine.png
Binary files differ
diff --git a/pydis_site/static/images/events/cj8_asciimatics.png b/pydis_site/static/images/events/cj8_asciimatics.png
new file mode 100644
index 00000000..ac52338e
--- /dev/null
+++ b/pydis_site/static/images/events/cj8_asciimatics.png
Binary files differ
diff --git a/pydis_site/static/images/events/cj8_blessed.gif b/pydis_site/static/images/events/cj8_blessed.gif
new file mode 100644
index 00000000..8bdbf5b1
--- /dev/null
+++ b/pydis_site/static/images/events/cj8_blessed.gif
Binary files differ
diff --git a/pydis_site/static/images/events/cj8_curses.png b/pydis_site/static/images/events/cj8_curses.png
new file mode 100644
index 00000000..c1a177ff
--- /dev/null
+++ b/pydis_site/static/images/events/cj8_curses.png
Binary files differ
diff --git a/pydis_site/static/images/events/cj8_prompttoolkit.png b/pydis_site/static/images/events/cj8_prompttoolkit.png
new file mode 100644
index 00000000..a359a7af
--- /dev/null
+++ b/pydis_site/static/images/events/cj8_prompttoolkit.png
Binary files differ
diff --git a/pydis_site/static/images/events/cj8_rich.gif b/pydis_site/static/images/events/cj8_rich.gif
new file mode 100644
index 00000000..3a0ffbf3
--- /dev/null
+++ b/pydis_site/static/images/events/cj8_rich.gif
Binary files differ
diff --git a/pydis_site/static/images/events/cj8_urwid.png b/pydis_site/static/images/events/cj8_urwid.png
new file mode 100644
index 00000000..98a264b7
--- /dev/null
+++ b/pydis_site/static/images/events/cj8_urwid.png
Binary files differ
diff --git a/pydis_site/static/images/events/summer_code_jam_2021.png b/pydis_site/static/images/events/summer_code_jam_2021.png
new file mode 100644
index 00000000..778c7c90
--- /dev/null
+++ b/pydis_site/static/images/events/summer_code_jam_2021.png
Binary files differ
diff --git a/pydis_site/static/images/sponsors/cloudflare.png b/pydis_site/static/images/sponsors/cloudflare.png
new file mode 100644
index 00000000..e2cd3b44
--- /dev/null
+++ b/pydis_site/static/images/sponsors/cloudflare.png
Binary files differ
diff --git a/pydis_site/templates/base/navbar.html b/pydis_site/templates/base/navbar.html
index 4cc49dc6..d7cb49b2 100644
--- a/pydis_site/templates/base/navbar.html
+++ b/pydis_site/templates/base/navbar.html
@@ -57,12 +57,12 @@
{# More #}
<div class="navbar-item has-dropdown is-hoverable">
- <a class="navbar-link is-hidden-touch">
+ <span class="navbar-link is-hidden-touch">
More
- </a>
- <a class="navbar-link is-arrowless is-hidden-desktop">
+ </span>
+ <span class="navbar-link is-arrowless is-hidden-desktop">
More
- </a>
+ </span>
<div class="navbar-dropdown">
<a class="navbar-item" href="{% url "resources:index" %}">
Resources
@@ -70,6 +70,9 @@
<a class="navbar-item" href="{% url "resources:resources" category="tools" %}">
Tools
</a>
+ <a class="navbar-item" href="{% url "events:index" %}">
+ Events
+ </a>
<a class="navbar-item" href="{% url "content:page_category" location="guides/pydis-guides/contributing"%}">
Contributing
</a>
@@ -88,16 +91,6 @@
<a class="navbar-item" href="{% url "content:page_category" location="privacy" %}">
Privacy
</a>
- <hr class="navbar-divider">
- <div class="navbar-item">
- <strong>Events</strong>
- </div>
- <a class="navbar-item" href="{% url "events:page" path="code-jams/7" %}">
- Most Recent: Code Jam 7
- </a>
- <a class="navbar-item" href="{% url "events:index" %}">
- All events
- </a>
</div>
</div>
diff --git a/pydis_site/templates/events/index.html b/pydis_site/templates/events/index.html
index 024e7fdc..64bf2c25 100644
--- a/pydis_site/templates/events/index.html
+++ b/pydis_site/templates/events/index.html
@@ -9,6 +9,9 @@
{% block event_content %}
<div class="box">
<h2 class="title is-4">Code Jams</h2>
+ <div class="notification is-success">
+ The 2021 Summer Code Jam qualifier will open June 21st. Check out the details <a href="{% url "events:page" path="code-jams/8" %}">here</a>.
+ </div>
<p>Each year, we organize a Winter Code Jam and a Summer Code Jam. During these events, members of our community will work together in teams to create something amazing using a technology we picked for them. One such technology that was picked for the Winter Code Jam 2020 was Kivy, a cross-platform GUI framework.</p>
<p>To help fuel the creative process, we provide a specific theme, like <strong>Ancient Technology</strong> or <strong>This App Hates You</strong>. At the end of the Code Jam, the projects are judged by Python Discord server staff members and guest judges from the larger Python community. The judges will consider creativity, code quality, teamwork, and adherence to the theme.</p>
<p>If you want to read more about Code Jams, visit our <a href="{% url "events:page" path="code-jams" %}">Code Jam info page</a> or watch this video showcasing the best projects created during the <strong>Winter Code Jam 2020: Ancient Technology</strong>:</p>
diff --git a/pydis_site/templates/events/pages/code-jams/8/_index.html b/pydis_site/templates/events/pages/code-jams/8/_index.html
new file mode 100644
index 00000000..c510c250
--- /dev/null
+++ b/pydis_site/templates/events/pages/code-jams/8/_index.html
@@ -0,0 +1,131 @@
+{% extends "events/base_sidebar.html" %}
+
+{% load static %}
+
+{% block title %}Summer Code Jam 2021{% endblock %}
+
+{% block breadcrumb %}
+ <li><a href="{% url "events:index" %}">Events</a></li>
+ <li><a href="{% url "events:page" path="code-jams" %}">Code Jams</a></li>
+ <li class="is-active"><a href="#">Summer Code Jam 2021</a></li>
+{% endblock %}
+
+{% block event_content %}
+ <p>Twice a year we host a code jam for members of our server to participate in. The code jam is an event where we place you
+ in a team with 5 other random server members. You then have 7 days to code some sort of application or program in Python.
+ Your program must use the specified technology/framework and incorporate the theme chosen by the server.
+ </p>
+ <p>
+ After the 7 days is complete, your team has 2 days to finish documentation and create a video presentation showcasing
+ and walking through the program that your team has created. More details and specifics of this will be released within the next 2 weeks.
+ </p>
+
+ <h3 id="important-dates"><a href="#important-dates">Important Dates</a></h3>
+ <ul>
+ <li>Tuesday, June 15 - Form to submit theme suggestions opens</li>
+ <li>Monday, June 21 - <a href="https://github.com/python-discord/cj8-qualifier">The Qualifier</a> is released</li>
+ <li>Friday, June 25 - Voting for the theme opens</li>
+ <li>Saturday, June 26 @ 4PM UTC- <a class="has-text-link" href="{% url "events:page" path="code-jams/8/github-bootcamp" %}">GitHub Bootcamp</a></li>
+ <li>Wednesday, June 30 - The Qualifier closes</li>
+ <li>Friday, July 9 - Code Jam begins</li>
+ <li>Friday, July 16 - Coding portion of the jam ends</li>
+ <li>Sunday, July 18 - Code Jam submissions are closed</li>
+ </ul>
+
+ <h3 id="technology"><a href="#technology">Technology</a></h3>
+ <p>
+ The chosen technology/tech stack for this year is <strong>Text User Interfaces</strong> (TUIs).
+ Each team must create a program with one of <a href="{% url "events:page" path="code-jams/8/frameworks" %}">the approved frameworks</a> that creates a user interface that is text based.
+ For more information of TUIs and what's involved with such an interface, check out <a href="https://en.wikipedia.org/wiki/Text-based_user_interface">this wikipedia article</a>.
+ </p>
+ <h3 if="qualifier"><a href="#qualifier">The Qualifier</a></h3>
+ <p>
+ The qualifier is a coding challenge that you are required to complete before registering for the code jam.
+ This is meant as a basic assessment of your skills to ensure you have enough python knowledge to effectively contribute in a team environment.
+ </p>
+ <p class="has-text-centered"><a class="button is-link" href="https://github.com/python-discord/cj8-qualifier" target="_blank">View the Qualifier</a></p
+ <p>
+ Please note the requirements for the qualifier.
+ <ul>
+ <li>The qualifier must be completed using Python 3.9</li>
+ <li>No external modules are allowed, only those available through the standard library.</li>
+ <li>The Qualifier must be submitted through the Code Jam sign-up form.</li>
+ </ul>
+ </p>
+ <h3 id="how-to-join"><a href="#how-to-join">How to Join</a></h3>
+ <p>
+ To enter into the code jam you must complete <a href="#qualifier">The Qualifier</a> and submit the sign-up form.
+ Don't forget to join us on Discord at <a href="https://discord.gg/python">discord.gg/python</a>!
+ <div class="has-text-centered"><a class="button is-link" href="https://form.jotform.com/211714357615050" target="_blank">Sign up for the Code Jam</a></div>
+ </p>
+ <h3 id="prizes"><a href="#prizes">Prizes</a></h3>
+ <p>
+ Our Code Jam Sponsors have provided prizes for the winners of the code jam.
+ Also, a big thank you to our Patreon patrons for supporting this server and allowing us
+ to provide our prizes as well.
+ </p>
+ <!-- This is going to be the sponsor section -->
+ <div class="card mb-4">
+ <div class="card-content">
+ <div class="media">
+ <div class="media-left" style="max-width:150px">
+ <img src="{% static "images/events/DO_Logo_Vertical_Blue.png" %}" alt="Digital Ocean">
+ </div>
+ <div class="media-content">
+ <p class="subtitle has-link"><a href="https://www.digitalocean.com/">DigitalOcean</a></p>
+ <p class="is-italic">
+ Scalable compute platform with add-on storage, security, and monitoring capabilities.
+ We make it simple to launch in the cloud and scale up as you grow—whether you’re running one virtual machine or ten thousand.
+ </p>
+ <p><strong>Prizes</strong><br>
+ $250 in DigitalOcean credits to the members of a winning team.</p>
+ </div>
+ </div>
+ </div>
+ </div>
+
+ <div class="card mb-4">
+ <div class="card-content">
+ <div class="media">
+ <div class="media-left" style="max-width:150px">
+ <img src="{% static "images/sponsors/jetbrains.png" %}" alt="JetBrains">
+ </div>
+ <div class="media-content">
+ <p class="subtitle has-link"><a href="https://www.jetbrains.com/">JetBrains</a></p>
+ <p class="is-italic">
+ Whatever platform or language you work with, JetBrains has a development tool for you.
+ We help developers work faster by automating common, repetitive tasks to enable them to stay focused on code design and the big picture.
+ We provide tools to explore and familiarize with code bases faster. Our products make it easy for you to take care of quality during all stages of development and spend less time on maintenance tasks.
+ </p>
+ <p><strong>Prizes</strong><br>
+ 1-year JetBrain licenses to the members of a winning team.</p>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="card mb">
+ <div class="card-content">
+ <div class="media">
+ <div class="media-left" style="max-width:150px">
+ <img src="{% static "images/events/Tabnine.png" %}" alt="Tabnine">
+ </div>
+ <div class="media-content">
+ <p class="subtitle has-link"><a href="https://www.tabnine.com/now?utm_source=discord&utm_medium=Ins&utm_campaign=PythonDis">Tabnine</a></p>
+ <p class="is-italic">Tabnine is an AI-powered code completion tool used by millions of devs around the world every day
+ - Tabnine supports dozens of programming languages, in all of your favorite IDEs, saving you tons of time - so that you can type less and code more.
+ Tabnine comes as a plugin and has a free-forever basic plan, so you can get started with it right away!
+ </p>
+ <p><strong>Prizes</strong><br>
+ 1-year Pro Licenses to Tabnine to the members of a winning team.</p>
+ </div>
+ </div>
+ </div>
+ </div>
+
+{% endblock %}
+
+{% block sidebar %}
+
+ {% include "events/sidebar/code-jams/8.html" %}
+
+{% endblock %}
diff --git a/pydis_site/templates/events/pages/code-jams/8/frameworks.html b/pydis_site/templates/events/pages/code-jams/8/frameworks.html
new file mode 100644
index 00000000..2ee6715a
--- /dev/null
+++ b/pydis_site/templates/events/pages/code-jams/8/frameworks.html
@@ -0,0 +1,116 @@
+{% extends "events/base_sidebar.html" %}
+
+{% load static %}
+
+{% block title %}Summer Code Jam 2021{% endblock %}
+
+{% block breadcrumb %}
+ <li><a href="{% url "events:index" %}">Events</a></li>
+ <li><a href="{% url "events:page" path="code-jams" %}">Code Jams</a></li>
+ <li><a href="{% url "events:page" path="code-jams/8" %}">Summer Code Jam 2021</a></li>
+ <li class="is-active"><a href="#">Approved Frameworks</a></li>
+{% endblock %}
+
+{% block event_content %}
+ <p>Below is the list of approved frameworks that you can use for the code jam. Please take note of what frameworks are available for which platform.
+ Please work with your team to choose a library that everyone can develop on, whether it's cross platform or something you can use WSL or a Virtual Machine for.
+ </p>
+ <h3 id="urwid"><a href="#urwid">Urwid</a></h3>
+ <div class="columns">
+ <div class="column">
+ <ul>
+ <li><a href="http://urwid.org/" target="_blank">Documentation Link</a></li>
+ <li><strong>Supports:</strong> Linux, Mac, other unix-like OS</li>
+ <li>Somewhat in-depth tutorial</li>
+ <li>Uses widgets in a fairly straight forward design</li>
+ <li>Docs include tutorials of both functional and class-based examples</li>
+ </ul>
+ </div>
+ <div class="column">
+ <img src="{% static "images/events/cj8_urwid.png" %}" alt="urwid">
+ </div>
+ </div>
+ <h3 id="curses"><a href="#curses">Curses</a></h3>
+ <div class="columns">
+ <div class="column">
+ <ul>
+ <li><a href="https://docs.python.org/3/howto/curses.html" target="_blank">Documentation Link</a></li>
+ <li><strong>Supports:</strong> Linux and other unix-like OS</li>
+ <li>Part of the standard library</li>
+ <li>Extensive how-to guide</li>
+ <li>Very basic, more effort to get working/looking good</li>
+ <li>To supplement curses the following libraries are approved, although no guarantees are made for stability.</li>
+ <ul>
+ <li><a href="https://pypi.org/project/UniCurses/" target="_blank">Unicurses</a> - a wrapper for Python 3.x that provides a unified set of Curses functions of all platforms.</li>
+ <li><a href="https://github.com/salt-die/nurses" target="_blank">Nurses</a> - a combination of curses and numpy, made by our very own salt-die</li>
+ </ul>
+
+ </ul>
+ </div>
+ <div class="column">
+ <img src="{% static "images/events/cj8_curses.png" %}" alt="curses">
+ </div>
+ </div>
+ <h3 id="blessed"><a href="#blessed">Blessed</a></h3>
+ <div class="columns">
+ <div class="column">
+ <ul>
+ <li><a href="https://blessed.readthedocs.io/en/latest/intro.html" target="_blank">Documentation Link</a></li>
+ <li><strong>Supports:</strong> Linux, Mac, and Windows</li>
+ <li>Sits on top of curses to add more pythonic bindings</li>
+ <li>Doesn't provide any widgets or layouts</li>
+ </ul>
+ </div>
+ <div class="column">
+ <img src="{% static "images/events/cj8_blessed.gif" %}" alt="blessed">
+ </div>
+ </div>
+ <h3 id="rich"><a href="#rich">Rich</a></h3>
+ <div class="columns">
+ <div class="column">
+ <ul>
+ <li><a href="https://rich.readthedocs.io/en/stable/introduction.html" target="_blank">Documentation Link</a></li>
+ <li><strong>Supports:</strong> Linux, Mac, and Windows</li>
+ <li>Documentation is good and overall is very OOP focused</li>
+ <li>Robust with many features and example snippets</li>
+ </ul>
+ </div>
+ <div class="column">
+ <img src="{% static "images/events/cj8_rich.gif" %}" alt="rich">
+ </div>
+ </div>
+ <h3 id="asciimatics"><a href="#asciimatics">Asciimatics</a></h3>
+ <div class="columns">
+ <div class="column">
+ <ul>
+ <li><a href="https://asciimatics.readthedocs.io/en/stable/intro.html" target="_blank">Documentation Link</a></li>
+ <li><strong>Supports:</strong> Linux, Mac, and Windows</li>
+ <li>Documentation is well structured and straightforward to navigate</li>
+ </ul>
+ </div>
+ <div class="column">
+ <img src="{% static "images/events/cj8_asciimatics.png" %}" alt="asciimatics">
+ </div>
+ </div>
+ <h3 id="prompt-toolkit"><a href="#prompt-toolkit">Python Prompt Toolkit</a></h3>
+ <div class="columns">
+ <div class="column">
+ <ul>
+ <li><a href="https://python-prompt-toolkit.readthedocs.io/en/stable/" target="_blank">Documentation Link</a></li>
+ <li><strong>Supports:</strong> Linux, Mac, and Windows</li>
+ <li>Pure python library</li>
+ </ul>
+ </div>
+ <div class="column">
+ <img src="{% static "images/events/cj8_prompttoolkit.png" %}" alt="python prompt toolkit">
+ </div>
+ </div>
+
+
+{% endblock %}
+
+{% block sidebar %}
+
+ {% include "events/sidebar/code-jams/8.html" %}
+
+{% endblock %}
diff --git a/pydis_site/templates/events/pages/code-jams/8/github-bootcamp.html b/pydis_site/templates/events/pages/code-jams/8/github-bootcamp.html
new file mode 100644
index 00000000..836ed3ed
--- /dev/null
+++ b/pydis_site/templates/events/pages/code-jams/8/github-bootcamp.html
@@ -0,0 +1,45 @@
+{% extends "events/base_sidebar.html" %}
+
+{% load static %}
+
+{% block title %}Summer Code Jam 2021{% endblock %}
+
+{% block breadcrumb %}
+ <li><a href="{% url "events:index" %}">Events</a></li>
+ <li><a href="{% url "events:page" path="code-jams" %}">Code Jams</a></li>
+ <li><a href="{% url "events:page" path="code-jams/8" %}">Summer Code Jam 2021</a></li>
+ <li class="is-active"><a href="#">GitHub Bootcamp</a></li>
+{% endblock %}
+
+{% block event_content %}
+ <p>
+ <strong>This year we'll be running a GitHub Bootcamp on Saturday, June 26th at 4PM UTC.</strong>
+ This bootcamp is intended to be an interactive workshop session where we help participants
+ get setup with git and using it in a team environment. If you are new to git or would like to brush up on it,
+ then this is the perfect event for you.
+ </p>
+ <p>
+ The instructional parts of this bootcamp will be recorded. We'll also be providing a cheatsheet / reference guide to all attendees that will
+ be made available here for download.
+ </p>
+ <h3>Session 1: Setting up Git</h3>
+ <p>
+ This first session will run for an hour starting at 4PM UTC. It will be focused on installing and setting up git for the first time.
+ We'll have helpers available to help you set up git and integrated with your editor of choice.
+ Whether it's PyCharm, VSCode, or vim, we can help you get rolling with version control.
+ </p>
+ <h3>Session 2: Using git and github in a team environment</h3>
+ <p>
+ This session will run for an hour starting at 5PM UTC. It will be focused on using git and GitHub in a team environment.
+ You'll be put in a group with other attendees and use the common git commands for working in a repo.
+ You'll learn how to set-up a GitHub repository with other contributors, how to make branches, make commits, pull down changes, and then make pull requests.
+ We'll also be going over different strategies for creating branches and best practices for commits and pull requests.
+ </p>
+
+{% endblock %}
+
+{% block sidebar %}
+
+ {% include "events/sidebar/code-jams/8.html" %}
+
+{% endblock %}
diff --git a/pydis_site/templates/events/pages/code-jams/8/rules.html b/pydis_site/templates/events/pages/code-jams/8/rules.html
new file mode 100644
index 00000000..b1220a2d
--- /dev/null
+++ b/pydis_site/templates/events/pages/code-jams/8/rules.html
@@ -0,0 +1,69 @@
+{% extends "events/base_sidebar.html" %}
+
+{% block title %}Summer Code Jam 2021{% endblock %}
+
+{% block breadcrumb %}
+ <li><a href="{% url "events:index" %}">Events</a></li>
+ <li><a href="{% url "events:page" path="code-jams" %}">Code Jams</a></li>
+ <li><a href="{% url "events:page" path="code-jams/8" %}">Summer Code Jam 2021</a></li>
+ <li class="is-active"><a href="#">Rules</a></li>
+{% endblock %}
+
+{% block event_content %}
+<ol>
+ <li><p>Your solution must use one of the approved frameworks.</p></li>
+ <li>
+ <p>
+ You must document precisely how to install and run your project.
+ This should be as easy as possible, which means you should consider using dependency managers like <code>pipenv</code> or <code>poetry</code>.
+ We would also encourage you to use <code>docker</code> and <code>docker-compose</code> to containerize your project, but this isn't a requirement.
+ </p>
+ </li>
+ <li>
+ You must get contributions from every member of your team, if you have an issue with someone on your team please contact a member of the administration team.
+ These contributions do not necessarily have to be code, for example it's absolutely fine for someone to contribute management, documentation, graphics or audio.
+ <strong>
+ Team members that do not contribute will be removed from the Code Jam, and will not receive their share of any prizes the team may win.
+ They may also be barred from entering future events.
+ </strong>
+ </li>
+ <li><p>You must use GitHub as source control.</p></li>
+ <li>
+ <p>
+ All code and assets must be compatible with the <a href="https://en.wikipedia.org/wiki/MIT_License">MIT license</a>.
+ This is because we will be merging your submission into our <code>summer-code-jam-2021</code> repo at the end of the jam,
+ and this repo is licensed with the MIT license.
+ <strong>Projects that include assets that are incompatible with this license may be disqualified.</strong>
+ </p>
+ </li>
+ <li><p>All code must be written and committed within the time constrictions of the jam. Late commits may be reverted, so make sure you leave enough time to bug test your program.</p></li>
+ <li>
+ <p>
+ Use English as the main language for your project, including names, comments, documentation, and commit messages.
+ The text displayed in your application should also be in English,
+ although you are allowed to provide the user with options for internationalisation and translation.
+ </p>
+ </li>
+ <li>
+ <p>
+ Your team, once the coding portion of the code jam is complete, must create a video presentation that showcases and explains your final product.
+ This must be in a video format and must be uploaded somewhere for the judges to view (i.e. unlisted YouTube video, Vimeo, etc.).
+ The video can be as simple as a screen recording with annotated text.
+ Teams who do not submit a final video presentation may be disqualified.
+ </p>
+ </li>
+</ol>
+
+<!-- Change links after migrating them is done. -->
+<blockquote>
+ Please note that our regular
+ <a href="/pages/rules">community rules</a> and <a href="/pages/code-of-conduct">code of conduct</a>
+ also apply during the event and that we reserve the right to make changes to these rules at any time.
+</blockquote>
+{% endblock %}
+
+{% block sidebar %}
+
+ {% include "events/sidebar/code-jams/8.html" %}
+
+{% endblock %}
diff --git a/pydis_site/templates/events/sidebar/code-jams/8.html b/pydis_site/templates/events/sidebar/code-jams/8.html
new file mode 100644
index 00000000..c1afdf47
--- /dev/null
+++ b/pydis_site/templates/events/sidebar/code-jams/8.html
@@ -0,0 +1,21 @@
+{% load static %}
+<div class="panel">
+ <p class="panel-heading">Important Links</p>
+ <a class="panel-block has-text-link" href="{% url "events:page" path="code-jams/8/rules" %}">Rules</a>
+ <a class="panel-block has-text-link" href="{% url "events:page" path="code-jams/8/frameworks" %}">Approved Frameworks</a>
+ <a class="panel-block has-text-link" href="{% url "events:page" path="code-jams/8/github-bootcamp" %}">GitHub Bootcamp</a>
+ </ul>
+</div>
+<div class="box">
+ <img src="{% static "images/events/summer_code_jam_2021.png" %}" alt="Summer Code Jam 2021">
+ <h4 class="menu-label">Our Sponsors</h4>
+ <a href="https://www.digitalocean.com/" target="_blank">
+ <img src="{% static "images/events/DO_Logo_Vertical_Blue.png" %}" alt="Digital Ocean">
+ </a>
+ <a href="https://jetbrains.com" target="_blank">
+ <img src="{% static "images/sponsors/jetbrains.png" %}" alt="JetBrains">
+ </a>
+ <a href="https://www.tabnine.com/now?utm_source=discord&utm_medium=Ins&utm_campaign=PythonDis" target="_blank">
+ <img src="{% static "images/events/Tabnine.png" %}" alt="Tabnine">
+ </a>
+</div>
diff --git a/pydis_site/templates/events/sidebar/code-jams/previous-code-jams.html b/pydis_site/templates/events/sidebar/code-jams/previous-code-jams.html
index 154f6ac4..9f9ecd1a 100644
--- a/pydis_site/templates/events/sidebar/code-jams/previous-code-jams.html
+++ b/pydis_site/templates/events/sidebar/code-jams/previous-code-jams.html
@@ -1,6 +1,7 @@
<div class="box">
<p class="menu-label">Previous Code Jams</p>
<ul class="menu-list">
+ <li><a class="has-text-link" href="{% url "events:page" path="code-jams/7" %}">Code Jam 7: Early Internet</a></li>
<li><a class="has-text-link" href="{% url "events:page" path="code-jams/6" %}">Code Jam 6: Ancient Technology</a></li>
<li><a class="has-text-link" href="{% url "events:page" path="code-jams/5" %}">Code Jam 5: Climate Change</a></li>
<li><a class="has-text-link" href="{% url "events:page" path="code-jams/4" %}">Code Jam 4: This App Hates You</a></li>
diff --git a/pydis_site/templates/events/sidebar/code-jams/upcoming-code-jam.html b/pydis_site/templates/events/sidebar/code-jams/upcoming-code-jam.html
index 914a9545..10494ad8 100644
--- a/pydis_site/templates/events/sidebar/code-jams/upcoming-code-jam.html
+++ b/pydis_site/templates/events/sidebar/code-jams/upcoming-code-jam.html
@@ -1,8 +1,8 @@
{% load static %}
<div class="box">
- <p class="menu-label">Upcoming Code Jam</p>
- <a href="{% url "events:page" path="code-jams/7" %}">
- <img src="{% static "images/events/summer_code_jam_2020.png" %}" alt="">
+ <h4 class="menu-label">Upcoming Code Jam</h4>
+ <a href="{% url "events:page" path="code-jams/8" %}">
+ <img src="{% static "images/events/summer_code_jam_2021.png" %}" alt="Summer Code Jam 2021">
</a>
</div>
diff --git a/pydis_site/templates/events/sidebar/upcoming-event.html b/pydis_site/templates/events/sidebar/upcoming-event.html
index 5c1d925a..d8ea18e0 100644
--- a/pydis_site/templates/events/sidebar/upcoming-event.html
+++ b/pydis_site/templates/events/sidebar/upcoming-event.html
@@ -2,7 +2,7 @@
<div class="box">
<p class="menu-label">Upcoming Event</p>
- <a href="{% url "events:page" path="code-jams/7" %}">
- <img src="{% static "images/events/summer_code_jam_2020.png" %}" alt="">
+ <a href="{% url "events:page" path="code-jams/8" %}">
+ <img src="{% static "images/events/summer_code_jam_2021.png" %}" alt="Summer Code Jam 2021">
</a>
</div>
diff --git a/pydis_site/templates/home/index.html b/pydis_site/templates/home/index.html
index 18f6b77b..08f98607 100644
--- a/pydis_site/templates/home/index.html
+++ b/pydis_site/templates/home/index.html
@@ -200,6 +200,8 @@
</a>
<a href="https://streamyard.com" class="column is-narrow">
<img src="{% static "images/sponsors/streamyard.png" %}" alt="StreamYard"/>
+ <a href="https://www.cloudflare.com/" class="column is-narrow">
+ <img src="{% static "images/sponsors/cloudflare.png" %}" alt="Cloudflare"/>
</a>
</div>
</div>