diff options
Diffstat (limited to 'pydis_site/apps/resources')
96 files changed, 895 insertions, 0 deletions
diff --git a/pydis_site/apps/resources/__init__.py b/pydis_site/apps/resources/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/pydis_site/apps/resources/__init__.py diff --git a/pydis_site/apps/resources/apps.py b/pydis_site/apps/resources/apps.py new file mode 100644 index 00000000..e0c235bd --- /dev/null +++ b/pydis_site/apps/resources/apps.py @@ -0,0 +1,7 @@ +from django.apps import AppConfig + + +class ResourcesConfig(AppConfig): + """AppConfig instance for Resources app.""" + + name = 'resources' diff --git a/pydis_site/apps/resources/migrations/__init__.py b/pydis_site/apps/resources/migrations/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/pydis_site/apps/resources/migrations/__init__.py diff --git a/pydis_site/apps/resources/resources/communities/_category_info.yaml b/pydis_site/apps/resources/resources/communities/_category_info.yaml new file mode 100644 index 00000000..b9cb6533 --- /dev/null +++ b/pydis_site/apps/resources/resources/communities/_category_info.yaml @@ -0,0 +1,2 @@ +description: Partnered communities that share part of our mission. +name: Communities diff --git a/pydis_site/apps/resources/resources/communities/adafruit.yaml b/pydis_site/apps/resources/resources/communities/adafruit.yaml new file mode 100644 index 00000000..e5c81a6c --- /dev/null +++ b/pydis_site/apps/resources/resources/communities/adafruit.yaml @@ -0,0 +1,15 @@ +description: Adafruit is an open-source electronics manufacturer + that makes all the components you need to start your own Python-powered hardware projects. + Their official community host regular show-and-tells, + provide help with your projects, + and the Adafruit devs do all the CircuitPython Development right out in the open. +title_image: https://www.mouser.com/images/suppliers/logos/adafruit.png +title_url: https://discord.gg/adafruit +position: 4 +urls: +- icon: branding/discord + url: https://discord.gg/adafruit + color: blurple +- icon: regular/link + url: https://adafruit.com/ + color: teal diff --git a/pydis_site/apps/resources/resources/communities/awesome_programming_discord.yaml b/pydis_site/apps/resources/resources/communities/awesome_programming_discord.yaml new file mode 100644 index 00000000..335ac507 --- /dev/null +++ b/pydis_site/apps/resources/resources/communities/awesome_programming_discord.yaml @@ -0,0 +1,9 @@ +description: We have listed our favourite communities, + but there are many more excellent communities out there! + An awesome list collating the best programming related Discord servers is available on GitHub + and has all sorts of topics from blockchain to virtual reality! +title_icon: branding/github +title_icon_color: black +title_url: https://github.com/mhxion/awesome-programming-discord +name: awesome-programming-discord +position: 10 diff --git a/pydis_site/apps/resources/resources/communities/kivy.yaml b/pydis_site/apps/resources/resources/communities/kivy.yaml new file mode 100644 index 00000000..601d7dba --- /dev/null +++ b/pydis_site/apps/resources/resources/communities/kivy.yaml @@ -0,0 +1,18 @@ +description: The Kivy project, through the Kivy framework and its sister projects, + aims to provide all the tools to create desktop and mobile applications in Python. + Allowing rapid development of multitouch applications with custom and exciting user interfaces. +icon_image: https://raw.githubusercontent.com/kivy/kivy-website/master/logos/kivy-logo-black-256.png +icon_size: 50 +title_image: https://i.imgur.com/EVP3jZR.png +title_url: https://discord.gg/djPtTRJ +position: 5 +urls: + - icon: branding/discord + url: https://discord.gg/djPtTRJ + color: blurple + - icon: regular/link + url: https://kivy.org/ + color: teal + - icon: branding/github + url: https://github.com/kivy + color: black diff --git a/pydis_site/apps/resources/resources/communities/microsoft.yaml b/pydis_site/apps/resources/resources/communities/microsoft.yaml new file mode 100644 index 00000000..b36c3a85 --- /dev/null +++ b/pydis_site/apps/resources/resources/communities/microsoft.yaml @@ -0,0 +1,12 @@ +description: Microsoft Python is a Discord server for discussing all things relating to using Python with Microsoft products, + they have channels for Azure, VS Code, IoT, Data Science and much more! +title_image: https://1000logos.net/wp-content/uploads/2017/04/Microsoft-Logo.png +title_url: https://discord.gg/b8YJQPx +position: 1 +urls: + - icon: branding/discord + url: https://discord.gg/b8YJQPx + color: blurple + - icon: regular/link + url: https://www.microsoft.com/en-us/boards/pycon2020.aspx + color: teal diff --git a/pydis_site/apps/resources/resources/communities/pallets.yaml b/pydis_site/apps/resources/resources/communities/pallets.yaml new file mode 100644 index 00000000..239b1491 --- /dev/null +++ b/pydis_site/apps/resources/resources/communities/pallets.yaml @@ -0,0 +1,13 @@ +description: The Pallets Projects develop Python libraries such as the Flask web framework, + the Jinja templating library, and the Click command line toolkit. Join to discuss + and get help from the Pallets community. +title_image: https://i.imgur.com/sV9Ypdf.png +title_url: https://discord.gg/t6rrQZH +position: 6 +urls: + - icon: branding/discord + url: https://discord.gg/t6rrQZH + color: blurple + - icon: regular/link + url: https://www.palletsprojects.com/ + color: teal diff --git a/pydis_site/apps/resources/resources/communities/panda3d.yaml b/pydis_site/apps/resources/resources/communities/panda3d.yaml new file mode 100644 index 00000000..4235793d --- /dev/null +++ b/pydis_site/apps/resources/resources/communities/panda3d.yaml @@ -0,0 +1,12 @@ +description: Panda3D is a Python-focused 3-D framework for rapid development of games, + visualizations, and simulations, written in C++ with an emphasis on performance and flexibility. +title_image: http://www.panda3d.org/wp-content/uploads/2019/01/panda3d_logo.png +title_url: https://discord.gg/9XsucTT +position: 9 +urls: + - icon: branding/discord + url: https://discord.gg/9XsucTT + color: blurple + - icon: regular/link + url: https://www.panda3d.org/ + color: teal diff --git a/pydis_site/apps/resources/resources/communities/people_postgres_data.yaml b/pydis_site/apps/resources/resources/communities/people_postgres_data.yaml new file mode 100644 index 00000000..1c17d343 --- /dev/null +++ b/pydis_site/apps/resources/resources/communities/people_postgres_data.yaml @@ -0,0 +1,18 @@ +description: People, Postgres, Data specializes in building users of Postgres + and related ecosystem including but not limited to technologies such as RDS Postgres, + Aurora for Postgres, Google Postgres, PostgreSQL.Org Postgres, Greenplum, Timescale and ZomboDB. + They take a holistic approach to their community inviting not only technical topics but Professional Development + and Life in general including movies, games, books and travel. +title_image: https://media.discordapp.net/attachments/748954447857844318/750519488268730377/people_postgres_data.png +title_url: https://discord.gg/Ujw8m8v +position: 2 +urls: + - icon: branding/discord + url: https://discord.gg/Ujw8m8v + color: bluple + - icon: regular/link + url: https://postgresconf.org/ + color: teal + - icon: branding/reddit + url: https://reddit.com/r/postgresql + color: orangered diff --git a/pydis_site/apps/resources/resources/communities/pyglet.yaml b/pydis_site/apps/resources/resources/communities/pyglet.yaml new file mode 100644 index 00000000..784f514e --- /dev/null +++ b/pydis_site/apps/resources/resources/communities/pyglet.yaml @@ -0,0 +1,15 @@ +description: Pyglet is a powerful, + yet easy to use Python library for developing games and other visually-rich applications on Windows, + Mac OS X and Linux. It supports windowing, user interface event handling, Joysticks, OpenGL graphics, + loading images and videos, and playing sounds and music. All of this with a friendly Pythonic API, + that's simple to learn and doesn't get in your way. +title_image: https://i.imgur.com/LfQwXUe.png +title_url: https://discord.gg/QXyegWe +position: 8 +urls: + - icon: branding/discord + url: https://discord.gg/QXyegWe + color: blurple + - icon: regular/link + url: http://pyglet.org/ + color: teal diff --git a/pydis_site/apps/resources/resources/communities/real_python.yaml b/pydis_site/apps/resources/resources/communities/real_python.yaml new file mode 100644 index 00000000..1fc74d93 --- /dev/null +++ b/pydis_site/apps/resources/resources/communities/real_python.yaml @@ -0,0 +1,12 @@ +description: Dan Bader's treasure trove of quizzes, tutorials and interactive content for learning Python. + An absolute goldmine. +title_image: https://i.imgur.com/WDqhZ36.png +title_url: https://realpython.com/ +position: 3 +urls: + - icon: regular/link + url: https://realpython.com/ + color: teal + - icon: branding/youtube + url: https://www.youtube.com/channel/UCI0vQvr9aFn27yR6Ej6n5UA + color: youtube-red diff --git a/pydis_site/apps/resources/resources/communities/rlbot.yaml b/pydis_site/apps/resources/resources/communities/rlbot.yaml new file mode 100644 index 00000000..d12c1dec --- /dev/null +++ b/pydis_site/apps/resources/resources/communities/rlbot.yaml @@ -0,0 +1,13 @@ +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/apps/resources/resources/communities/subreddit.yaml b/pydis_site/apps/resources/resources/communities/subreddit.yaml new file mode 100644 index 00000000..d3ddb15a --- /dev/null +++ b/pydis_site/apps/resources/resources/communities/subreddit.yaml @@ -0,0 +1,6 @@ +description: News about the Python programming language, and language-related discussion. +name: r/Python +title_icon: branding/reddit +title_icon_color: orangered +title_url: https://www.reddit.com/r/Python/ +position: 0 diff --git a/pydis_site/apps/resources/resources/courses/_category_info.yaml b/pydis_site/apps/resources/resources/courses/_category_info.yaml new file mode 100644 index 00000000..948b48de --- /dev/null +++ b/pydis_site/apps/resources/resources/courses/_category_info.yaml @@ -0,0 +1,4 @@ +description: Listing of best Python courses. +name: Courses +default_icon: regular/graduation-cap +default_icon_color: black diff --git a/pydis_site/apps/resources/resources/courses/automate_the_boring_stuff_with_python.yaml b/pydis_site/apps/resources/resources/courses/automate_the_boring_stuff_with_python.yaml new file mode 100644 index 00000000..66034ea2 --- /dev/null +++ b/pydis_site/apps/resources/resources/courses/automate_the_boring_stuff_with_python.yaml @@ -0,0 +1,5 @@ +description: The interactive course version of Al Sweigart's excellent book for beginners, taught by the author himself. + This link has a discounted version of the course which will always cost 10 dollars. Thanks, Al! +name: Automate the Boring Stuff with Python +title_url: https://www.udemy.com/automate/?couponCode=FOR_LIKE_10_BUCKS +position: 3 diff --git a/pydis_site/apps/resources/resources/courses/mit_introduction_to_computer_science_and_programming.yaml b/pydis_site/apps/resources/resources/courses/mit_introduction_to_computer_science_and_programming.yaml new file mode 100644 index 00000000..5560b2cb --- /dev/null +++ b/pydis_site/apps/resources/resources/courses/mit_introduction_to_computer_science_and_programming.yaml @@ -0,0 +1,6 @@ +description: This MITx offering teaches computer science with Python. + It covers computational thinking, algorithms, data structures + and the Python programming language itself. +name: 'MIT: Introduction to Computer Science and Programming' +title_url: https://www.edx.org/course/introduction-computer-science-mitx-6-00-1x-11 +position: 1 diff --git a/pydis_site/apps/resources/resources/courses/practical_python_programming.yaml b/pydis_site/apps/resources/resources/courses/practical_python_programming.yaml new file mode 100644 index 00000000..b801ca8c --- /dev/null +++ b/pydis_site/apps/resources/resources/courses/practical_python_programming.yaml @@ -0,0 +1,9 @@ +description: Created and taught by <a href="https://dabeaz.com/">David Beazley</a>, + this course is a conversion of his instructor-led Python training course used for corporate training + and professional development. It has been in continual development since 2007 + and battle tested in real-world classrooms. Usually, it’s taught in-person over the span of three + or four days–requiring approximately 25-35 hours of intense work. + This includes the completion of approximately 130 hands-on coding exercises. +name: Practical Python Programming +title_url: https://dabeaz-course.github.io/practical-python/ +position: 4 diff --git a/pydis_site/apps/resources/resources/courses/university_of_michigan.yaml b/pydis_site/apps/resources/resources/courses/university_of_michigan.yaml new file mode 100644 index 00000000..3efe7640 --- /dev/null +++ b/pydis_site/apps/resources/resources/courses/university_of_michigan.yaml @@ -0,0 +1,5 @@ +description: A 5-part specialization course that teaches Python from scratch. + The course has no pre-requisites and avoids all but the simplest mathematics. +name: 'University of Michigan: Programming for Everybody' +title_url: https://www.coursera.org/learn/python +position: 2 diff --git a/pydis_site/apps/resources/resources/courses/university_of_toronto.yaml b/pydis_site/apps/resources/resources/courses/university_of_toronto.yaml new file mode 100644 index 00000000..0a7839de --- /dev/null +++ b/pydis_site/apps/resources/resources/courses/university_of_toronto.yaml @@ -0,0 +1,11 @@ +description: A 2-part course that teaches Python. Primarily intended for high school students + and first-year university students who want to learn programming. +name: 'University of Toronto: Learn to Program' +position: 0 +urls: + - icon: regular/graduation-cap + url: https://www.coursera.org/learn/learn-to-program + color: orangered + - icon: regular/graduation-cap + url: https://www.coursera.org/learn/program-code + color: youtube-red diff --git a/pydis_site/apps/resources/resources/interactive/_category_info.yaml b/pydis_site/apps/resources/resources/interactive/_category_info.yaml new file mode 100644 index 00000000..7e8f34d9 --- /dev/null +++ b/pydis_site/apps/resources/resources/interactive/_category_info.yaml @@ -0,0 +1,4 @@ +description: Learn Python with interactive courses, games, and programming challenges. +name: Interactive +default_icon: branding/python +default_icon_color: black diff --git a/pydis_site/apps/resources/resources/interactive/code_combat.yaml b/pydis_site/apps/resources/resources/interactive/code_combat.yaml new file mode 100644 index 00000000..30f20c28 --- /dev/null +++ b/pydis_site/apps/resources/resources/interactive/code_combat.yaml @@ -0,0 +1,11 @@ +description: Learn Python while gaming - an open-source project with thousands of + contributors, which teaches you Python through a deep, top-down RPG. +name: Code Combat +position: 0 +urls: +- icon: regular/link + url: https://codecombat.com/ + color: teal +- icon: branding/github + url: https://github.com/codecombat/codecombat + color: black diff --git a/pydis_site/apps/resources/resources/interactive/edublocks.yaml b/pydis_site/apps/resources/resources/interactive/edublocks.yaml new file mode 100644 index 00000000..7c6ca02b --- /dev/null +++ b/pydis_site/apps/resources/resources/interactive/edublocks.yaml @@ -0,0 +1,10 @@ +description: EduBlocks provides a simple drag and drop interface to help beginners get to grips + with the key concepts of Python. There is built-in support for modules such as random, + turtle, processing and pygal to play around with, + and it even allows you to export the Python code you have written in the graphical editor. + EduBlocks also has integration with BBC micro:bit, + Raspberry Pi and CircuitPython allowing you to write code for these devices graphically + and export the code to run on actual devices. +name: EduBlocks +title_url: https://edublocks.org/ +position: 5 diff --git a/pydis_site/apps/resources/resources/interactive/exercism.yaml b/pydis_site/apps/resources/resources/interactive/exercism.yaml new file mode 100644 index 00000000..68b458d0 --- /dev/null +++ b/pydis_site/apps/resources/resources/interactive/exercism.yaml @@ -0,0 +1,13 @@ +description: Level up your programming skills with more than 2600 exercises across + 47 programming languages, Python included. The website provides a mentored mode, + where you can get your code reviewed for each solution you submit. The mentors will + give you insightful advice to make you a better programmer. +name: exercism.io +position: 1 +urls: +- icon: regular/link + url: https://exercism.io/ + color: teal +- icon: branding/github + url: https://github.com/exercism/python + color: black diff --git a/pydis_site/apps/resources/resources/interactive/jetbrains_academy.yaml b/pydis_site/apps/resources/resources/interactive/jetbrains_academy.yaml new file mode 100644 index 00000000..937831fa --- /dev/null +++ b/pydis_site/apps/resources/resources/interactive/jetbrains_academy.yaml @@ -0,0 +1,8 @@ +description: Learn Python with a wide range of high quality, project-based lessons. + Keep track of your progress as you cover all the basic concepts a Python programmer needs to know, + as well as touching on more advanced areas such as web development with Django, + natural language processing with NLTK, and data science with NumPy, pandas, and scikit-learn! + It requires a paid subscription, but a free trial is available. +name: JetBrains Academy +title_url: https://www.jetbrains.com/academy/ +position: 6 diff --git a/pydis_site/apps/resources/resources/interactive/python_morsels.yaml b/pydis_site/apps/resources/resources/interactive/python_morsels.yaml new file mode 100644 index 00000000..879500eb --- /dev/null +++ b/pydis_site/apps/resources/resources/interactive/python_morsels.yaml @@ -0,0 +1,10 @@ +description: 'Learn to write more idiomatic Python code with deliberate practice! + + + Sign up for this service and receive one short Python exercise every week. After + you attempt to work through the exercise, you''ll receive a number of solutions + to the exercise with explanations of each one. Each exercise will include automated + tests and some may include bonuses for a little more of a challenge!' +name: Python Morsels +title_url: https://www.pythonmorsels.com/ +position: 3 diff --git a/pydis_site/apps/resources/resources/interactive/python_tutor.yaml b/pydis_site/apps/resources/resources/interactive/python_tutor.yaml new file mode 100644 index 00000000..64b50d09 --- /dev/null +++ b/pydis_site/apps/resources/resources/interactive/python_tutor.yaml @@ -0,0 +1,4 @@ +description: Write Python code in your web browser, and see it visualized step by step. +name: Python Tutor +title_url: https://www.pythontutor.com/ +position: 2 diff --git a/pydis_site/apps/resources/resources/interactive/sololearn.yaml b/pydis_site/apps/resources/resources/interactive/sololearn.yaml new file mode 100644 index 00000000..51dceb2a --- /dev/null +++ b/pydis_site/apps/resources/resources/interactive/sololearn.yaml @@ -0,0 +1,7 @@ +description: SoloLearn's Python 3 course serves as a simple and convenient introduction to Python. + Containing exercises and quizzes in modules to cover introductory subjects of the language, + you can pick it up and put it down between your busier aspects of life thanks to both PC + and mobile apps being available to use. +name: SoloLearn +title_url: https://www.sololearn.com/Course/Python/ +position: 4 diff --git a/pydis_site/apps/resources/resources/podcasts/_category_info.yaml b/pydis_site/apps/resources/resources/podcasts/_category_info.yaml new file mode 100644 index 00000000..1d2d3ba5 --- /dev/null +++ b/pydis_site/apps/resources/resources/podcasts/_category_info.yaml @@ -0,0 +1,4 @@ +description: Notable podcasts about the Python ecosystem. +name: Podcasts +default_icon: regular/microphone-alt +default_icon_color: black diff --git a/pydis_site/apps/resources/resources/podcasts/podcast_dunder_init.yaml b/pydis_site/apps/resources/resources/podcasts/podcast_dunder_init.yaml new file mode 100644 index 00000000..efe1601f --- /dev/null +++ b/pydis_site/apps/resources/resources/podcasts/podcast_dunder_init.yaml @@ -0,0 +1,5 @@ +description: The podcast about Python and the people who make it great. Weekly long-form + interviews with the creators of notable Python packages. +name: Podcast.__init__ +title_url: https://www.podcastinit.com/ +position: 2 diff --git a/pydis_site/apps/resources/resources/podcasts/python_bytes.yaml b/pydis_site/apps/resources/resources/podcasts/python_bytes.yaml new file mode 100644 index 00000000..4f817f26 --- /dev/null +++ b/pydis_site/apps/resources/resources/podcasts/python_bytes.yaml @@ -0,0 +1,5 @@ +description: A byte-sized podcast where Michael Kennedy and Brian Okken work through + this week's notable Python headlines. +name: Python Bytes +title_url: https://pythonbytes.fm/ +position: 1 diff --git a/pydis_site/apps/resources/resources/podcasts/talk_python_to_me.yaml b/pydis_site/apps/resources/resources/podcasts/talk_python_to_me.yaml new file mode 100644 index 00000000..5ce21fd7 --- /dev/null +++ b/pydis_site/apps/resources/resources/podcasts/talk_python_to_me.yaml @@ -0,0 +1,5 @@ +description: The essential weekly Python podcast. Michael Kennedy and a prominent + name within the Python community dive into a topic that relates to their experience. +name: Talk Python To Me +title_url: https://talkpython.fm/ +position: 0 diff --git a/pydis_site/apps/resources/resources/podcasts/test_and_code.yaml b/pydis_site/apps/resources/resources/podcasts/test_and_code.yaml new file mode 100644 index 00000000..d5751577 --- /dev/null +++ b/pydis_site/apps/resources/resources/podcasts/test_and_code.yaml @@ -0,0 +1,5 @@ +description: Brian Okken's weekly podcast on testing. Usually deals with Python, + but also covers many language-agnostic topics from the testing and DevOps world. +name: Test & Code +title_url: https://testandcode.com/ +position: 3 diff --git a/pydis_site/apps/resources/resources/podcasts/the_real_python_podcast.yaml b/pydis_site/apps/resources/resources/podcasts/the_real_python_podcast.yaml new file mode 100644 index 00000000..dea894ea --- /dev/null +++ b/pydis_site/apps/resources/resources/podcasts/the_real_python_podcast.yaml @@ -0,0 +1,7 @@ +description: A weekly Python podcast hosted by Christopher Bailey with interviews, + coding tips, and conversation with guests from the Python community. + The show covers a wide range of topics including Python programming best practices, + career tips, and related software development topics. +name: The Real Python Podcast +title_url: https://realpython.com/podcasts/rpp/ +position: 4 diff --git a/pydis_site/apps/resources/resources/reading/_category_info.yaml b/pydis_site/apps/resources/resources/reading/_category_info.yaml new file mode 100644 index 00000000..64b87e47 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/_category_info.yaml @@ -0,0 +1,2 @@ +description: Books and tutorials related to Python and popular third-party libraries and frameworks. +name: Reading diff --git a/pydis_site/apps/resources/resources/reading/books/_category_info.yaml b/pydis_site/apps/resources/resources/reading/books/_category_info.yaml new file mode 100644 index 00000000..ae092a20 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/_category_info.yaml @@ -0,0 +1,5 @@ +description: The best books for learning Python or Python Frameworks. +name: Books +default_icon: branding/python +default_icon_color: black +position: 0 diff --git a/pydis_site/apps/resources/resources/reading/books/automate_the_boring_stuff.yaml b/pydis_site/apps/resources/resources/reading/books/automate_the_boring_stuff.yaml new file mode 100644 index 00000000..3812029c --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/automate_the_boring_stuff.yaml @@ -0,0 +1,14 @@ +description: One of the best books out there for Python beginners. This book will + teach you the basics of Python, while also teaching invaluable automation tools + and techniques for solving common problems. You'll learn how to go about scraping + the web, manipulating files and automating keyboard and mouse input. Ideal for an + office worker who wants to make himself more useful. +name: Automate the Boring Stuff with Python +position: 2 +urls: +- icon: regular/book + url: https://automatetheboringstuff.com/ + color: black +- icon: branding/amazon + url: https://www.amazon.com/Automate-Boring-Stuff-Python-Programming/dp/1593275994/ + color: amazon-orange diff --git a/pydis_site/apps/resources/resources/reading/books/byte_of_python.yaml b/pydis_site/apps/resources/resources/reading/books/byte_of_python.yaml new file mode 100644 index 00000000..1f9642ad --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/byte_of_python.yaml @@ -0,0 +1,15 @@ +description: A free book on programming using the Python language. + It serves as a tutorial or guide to the Python language for a beginner audience. + If all you know about computers is how to save text files, then this is the book for you. +name: A Byte of Python +position: 1 +urls: +- icon: regular/link + url: https://python.swaroopch.com/ + color: teal +- icon: regular/book + url: http://www.lulu.com/shop/swaroop-c-h/a-byte-of-python/paperback/product-21142968.html + color: black +- icon: branding/amazon + url: https://www.amazon.com/Byte-Python-Swaroop-C-H-ebook/dp/B00FJ7S2JU/ + color: amazon-orange diff --git a/pydis_site/apps/resources/resources/reading/books/effective_python.yaml b/pydis_site/apps/resources/resources/reading/books/effective_python.yaml new file mode 100644 index 00000000..becd0578 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/effective_python.yaml @@ -0,0 +1,15 @@ +description: A book that gives 90 best practices for writing excellent Python. Great + for intermediates. +name: Effective Python +position: 3 +urls: +- icon: regular/link + url: https://effectivepython.com/ + color: teal +- icon: branding/amazon + url: https://www.amazon.com/Effective-Python-Specific-Software-Development/dp/0134853989 + color: amazon-orange + title: Amazon +- icon: branding/github + url: https://github.com/bslatkin/effectivepython + color: black diff --git a/pydis_site/apps/resources/resources/reading/books/flask_web_development.yaml b/pydis_site/apps/resources/resources/reading/books/flask_web_development.yaml new file mode 100644 index 00000000..cc83a331 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/flask_web_development.yaml @@ -0,0 +1,14 @@ +description: A comprehensive Flask walkthrough that has you building a complete social + blogging application from scratch. +name: Flask Web Development +position: 6 +urls: +- icon: regular/link + url: http://shop.oreilly.com/product/0636920031116.do + color: teal +- icon: branding/amazon + url: https://www.amazon.com/Flask-Web-Development-Developing-Applications/dp/1449372627 + color: amazon-orange +- icon: branding/github + url: https://github.com/miguelgrinberg/flasky + color: black diff --git a/pydis_site/apps/resources/resources/reading/books/fluent_python.yaml b/pydis_site/apps/resources/resources/reading/books/fluent_python.yaml new file mode 100644 index 00000000..92f4bbab --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/fluent_python.yaml @@ -0,0 +1,14 @@ +description: A veritable tome of intermediate and advanced Python information. A must-read + for any Python professional. By far the most recommended book for intermediates. +name: Fluent Python +position: 7 +urls: +- icon: regular/link + url: https://www.oreilly.com/library/view/fluent-python/9781491946237/ + color: teal +- icon: branding/amazon + url: https://www.amazon.com/Fluent-Python-Concise-Effective-Programming/dp/1491946008 + color: amazon-orange +- icon: branding/github + url: https://github.com/fluentpython + color: black diff --git a/pydis_site/apps/resources/resources/reading/books/hitchhikers_guide_to_python.yaml b/pydis_site/apps/resources/resources/reading/books/hitchhikers_guide_to_python.yaml new file mode 100644 index 00000000..906860c7 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/hitchhikers_guide_to_python.yaml @@ -0,0 +1,11 @@ +description: A best practice handbook for both novice and expert Python developers to the installation, + configuration, and usage of Python on a daily basis. +name: The Hitchhiker's Guide to Python +position: 0 +urls: +- icon: regular/link + url: https://python-guide.org/ + color: teal +- icon: branding/amazon + url: https://www.amazon.com/Hitchhikers-Guide-Python-Practices-Development/dp/1491933178/ + color: amazon-orange diff --git a/pydis_site/apps/resources/resources/reading/books/inferential_thinking.yaml b/pydis_site/apps/resources/resources/reading/books/inferential_thinking.yaml new file mode 100644 index 00000000..27fad4f7 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/inferential_thinking.yaml @@ -0,0 +1,9 @@ +description: Inferential Thinking is the textbook for the <a href="http://data8.org/">Foundations of Data Science</a> course at UC Berkley. + It introduces you the fundamentals of both Data Science and Python at a level accessible to all. + It is available both through your browser and in PDF form. +name: Inferential Thinking +position: 13 +urls: + - icon: regular/link + url: https://www.inferentialthinking.com/chapters/intro + color: teal diff --git a/pydis_site/apps/resources/resources/reading/books/mission_python.yaml b/pydis_site/apps/resources/resources/reading/books/mission_python.yaml new file mode 100644 index 00000000..c4a48b7e --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/mission_python.yaml @@ -0,0 +1,13 @@ +description: Learn programming and Python while building a complete and awesome space-themed + game using cutting-edge Python 3.6 and Pygame Zero. Extensive use of code examples, + images, and walk-throughs make this a pleasure to both read and follow along. Excellent + book for beginners. +name: Mission Python +position: 5 +urls: +- icon: regular/link + url: https://www.sean.co.uk/books/mission-python/index.shtm + color: teal +- icon: branding/amazon + url: https://www.amazon.com/Mission-Python-Code-Space-Adventure/dp/1593278578 + color: amazon-orange diff --git a/pydis_site/apps/resources/resources/reading/books/neural_networks_from_scratch_in_python.yaml b/pydis_site/apps/resources/resources/reading/books/neural_networks_from_scratch_in_python.yaml new file mode 100644 index 00000000..974b0e50 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/neural_networks_from_scratch_in_python.yaml @@ -0,0 +1,10 @@ +description: '"Neural Networks From Scratch" is a book intended to teach you how to build neural networks on your own, + without any libraries, so you can better understand deep learning and how all of the elements work. + This is so you can go out and do new/novel things with deep learning as well as to become more successful with even more basic models. + This book is to accompany the usual free tutorial videos and sample code from youtube.com/sentdex.' +name: Neural Networks from Scratch in Python +position: 11 +urls: + - icon: regular/link + url: https://nnfs.io/ + color: teal diff --git a/pydis_site/apps/resources/resources/reading/books/python_cookbook.yaml b/pydis_site/apps/resources/resources/reading/books/python_cookbook.yaml new file mode 100644 index 00000000..032f8c64 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/python_cookbook.yaml @@ -0,0 +1,14 @@ +description: A book full of very smart problem-solving recipes for various Python topics, + including moving from Python 2 to Python 3. +name: Python Cookbook +position: 8 +urls: +- icon: regular/link + url: http://shop.oreilly.com/product/0636920027072.do + color: teal +- icon: branding/amazon + url: https://www.amazon.com/Python-Cookbook-Third-David-Beazley/dp/1449340377 + color: amazon-orange +- icon: branding/github + url: https://github.com/dabeaz/python-cookbook + color: black diff --git a/pydis_site/apps/resources/resources/reading/books/python_crash_course.yaml b/pydis_site/apps/resources/resources/reading/books/python_crash_course.yaml new file mode 100644 index 00000000..3cbf19c8 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/python_crash_course.yaml @@ -0,0 +1,20 @@ +description: "This fast-paced, thorough introduction to programming with Python will have you writing programs, + solving problems, and making things that work in no time. + In the first half of the book, you’ll learn basic programming concepts, such as variables, lists, classes, and loops, + and practice writing clean code with exercises for each topic. + You’ll also learn how to make your programs interactive and test your code safely before adding it to a project. + In the second half, you’ll put your new knowledge into practice with three substantial projects: + a Space Invaders–inspired arcade game, a set of data visualizations with Python’s handy libraries, + and a simple web app you can deploy online." +name: Python Crash Course +position: 12 +urls: + - icon: regular/link + url: https://nostarch.com/pythoncrashcourse2e + color: teal + - icon: branding/amazon + url: https://www.amazon.com/Python-Crash-Course-Project-Based-Introduction/dp/1593276036 + color: amazon-orange + - icon: branding/github + url: https://ehmatthes.github.io/pcc/ + color: black diff --git a/pydis_site/apps/resources/resources/reading/books/python_tricks.yaml b/pydis_site/apps/resources/resources/reading/books/python_tricks.yaml new file mode 100644 index 00000000..c0941809 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/python_tricks.yaml @@ -0,0 +1,12 @@ +description: Full of useful Python tips, tricks and features. Get this if you have + a good grasp of the basics and want to take your Python skills to the next level, + or are a experienced programmer looking to add to your toolbelt. +name: Python Tricks +position: 4 +urls: +- icon: regular/link + url: https://realpython.com/products/python-tricks-book/ + color: teal +- icon: branding/amazon + url: https://www.amazon.com/Python-Tricks-Buffet-Awesome-Features/dp/1775093301 + color: amazon-orange diff --git a/pydis_site/apps/resources/resources/reading/books/think_python.yaml b/pydis_site/apps/resources/resources/reading/books/think_python.yaml new file mode 100644 index 00000000..6de87043 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/think_python.yaml @@ -0,0 +1,17 @@ +description: Think Python is an introduction to Python programming for beginners. + It starts with basic concepts of programming, + and is carefully designed to define all terms when they are first used and to develop each new concept in a logical progression. + Larger pieces, like recursion and object-oriented programming are divided into a sequence of smaller steps + and introduced over the course of several chapters. +name: Think Python +position: 10 +urls: + - icon: regular/link + url: https://greenteapress.com/wp/think-python-2e/ + color: teal + - icon: branding/amazon + url: https://www.amazon.com/gp/product/1491939362 + color: amazon-orange + - icon: branding/github + url: https://github.com/AllenDowney/ThinkPython2 + color: black diff --git a/pydis_site/apps/resources/resources/reading/books/two_scoops_of_django.yaml b/pydis_site/apps/resources/resources/reading/books/two_scoops_of_django.yaml new file mode 100644 index 00000000..7d83e7c4 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/books/two_scoops_of_django.yaml @@ -0,0 +1,14 @@ +description: Tips, tricks, and best practices for your Django project. + A highly recommended resource for Django web developers. +name: Two Scoops of Django +position: 9 +urls: +- icon: regular/link + url: https://twoscoopspress.com/products/two-scoops-of-django-1-11 + color: teal +- icon: branding/amazon + url: https://www.amazon.com/Two-Scoops-Django-Best-Practices/dp/0981467342 + color: amazon-orange +- icon: branding/github + url: https://github.com/twoscoops/two-scoops-of-django-2.0-code-examples + color: black diff --git a/pydis_site/apps/resources/resources/reading/tutorials/_category_info.yaml b/pydis_site/apps/resources/resources/reading/tutorials/_category_info.yaml new file mode 100644 index 00000000..a18b837d --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/tutorials/_category_info.yaml @@ -0,0 +1,5 @@ +description: Tutorials and references for those that are just getting started with Python. +name: Tutorials +default_icon: branding/python +default_icon_color: black +position: 1 diff --git a/pydis_site/apps/resources/resources/reading/tutorials/getting_started_with_kivy.yaml b/pydis_site/apps/resources/resources/reading/tutorials/getting_started_with_kivy.yaml new file mode 100644 index 00000000..d1d9a7d2 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/tutorials/getting_started_with_kivy.yaml @@ -0,0 +1,5 @@ +description: A big list of excellent resources for getting started making Kivy applications. +name: Getting Started with Kivy +title_url: https://blog.kivy.org/2019/12/getting-started-with-kivy/ +icon_image: https://raw.githubusercontent.com/kivy/kivy-website/master/logos/kivy-logo-black-256.png +position: 3 diff --git a/pydis_site/apps/resources/resources/reading/tutorials/getting_started_with_python_for_non_programmers.yaml b/pydis_site/apps/resources/resources/reading/tutorials/getting_started_with_python_for_non_programmers.yaml new file mode 100644 index 00000000..3250a7c4 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/tutorials/getting_started_with_python_for_non_programmers.yaml @@ -0,0 +1,5 @@ +description: A list of beginner resources for programmers with no prior developer experience, + from Python's official guide. +name: Getting Started with Python for Non-Programmers +title_url: https://wiki.python.org/moin/BeginnersGuide/NonProgrammers +position: 1 diff --git a/pydis_site/apps/resources/resources/reading/tutorials/getting_started_with_python_for_programmers.yaml b/pydis_site/apps/resources/resources/reading/tutorials/getting_started_with_python_for_programmers.yaml new file mode 100644 index 00000000..b65e0e12 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/tutorials/getting_started_with_python_for_programmers.yaml @@ -0,0 +1,5 @@ +description: A list of beginner resources for programmers coming from other languages, + from Python's official guide. +name: Getting Started with Python for Programmers +title_url: https://wiki.python.org/moin/BeginnersGuide/Programmers +position: 0 diff --git a/pydis_site/apps/resources/resources/reading/tutorials/python_cheat_sheet.yaml b/pydis_site/apps/resources/resources/reading/tutorials/python_cheat_sheet.yaml new file mode 100644 index 00000000..70ac49ef --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/tutorials/python_cheat_sheet.yaml @@ -0,0 +1,5 @@ +description: A Python 3 cheat sheet with useful information and tips, as well as common + pitfalls for beginners. This is a PDF. +name: Python Cheat Sheet +title_url: https://perso.limsi.fr/pointal/_media/python:cours:mementopython3-english.pdf +position: 6 diff --git a/pydis_site/apps/resources/resources/reading/tutorials/python_developer_guide.yaml b/pydis_site/apps/resources/resources/reading/tutorials/python_developer_guide.yaml new file mode 100644 index 00000000..625d57c8 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/tutorials/python_developer_guide.yaml @@ -0,0 +1,5 @@ +description: This guide is a comprehensive resource for contributing to Python – for both new and experienced contributors. + It is maintained by the same community that maintains Python. +name: Python Developer's Guide +title_url: https://devguide.python.org/ +position: 2 diff --git a/pydis_site/apps/resources/resources/reading/tutorials/simple_guide_to_git.yaml b/pydis_site/apps/resources/resources/reading/tutorials/simple_guide_to_git.yaml new file mode 100644 index 00000000..a505715d --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/tutorials/simple_guide_to_git.yaml @@ -0,0 +1,6 @@ +description: A simple, no-nonsense guide to the basics of using Git. +name: A Simple Guide to Git +title_url: http://rogerdudler.github.io/git-guide/ +title_icon: branding/github +title_icon_color: black +position: 4 diff --git a/pydis_site/apps/resources/resources/reading/tutorials/the_flask_mega_tutorial.yaml b/pydis_site/apps/resources/resources/reading/tutorials/the_flask_mega_tutorial.yaml new file mode 100644 index 00000000..8d61ea73 --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/tutorials/the_flask_mega_tutorial.yaml @@ -0,0 +1,4 @@ +description: Miguel Grinberg's fully featured mega-tutorial for learning how to create web applications with the Flask framework. +name: The Flask Mega-Tutorial +title_url: https://blog.miguelgrinberg.com/post/the-flask-mega-tutorial-part-i-hello-world +position: 5 diff --git a/pydis_site/apps/resources/resources/reading/tutorials/wtf_python.yaml b/pydis_site/apps/resources/resources/reading/tutorials/wtf_python.yaml new file mode 100644 index 00000000..a25a84fd --- /dev/null +++ b/pydis_site/apps/resources/resources/reading/tutorials/wtf_python.yaml @@ -0,0 +1,8 @@ +description: Python, being a beautifully designed high-level and interpreter-based programming language, + provides us with many features for the programmer's comfort. + But sometimes, the outcomes of a Python snippet may not seem obvious at first sight. + Here's a fun project attempting to explain what exactly is happening under the hood for some counter-intuitive snippets + and lesser-known features in Python. +name: WTF Python +title_url: https://github.com/satwikkansal/wtfpython +position: 7 diff --git a/pydis_site/apps/resources/resources/tools/_category_info.yaml b/pydis_site/apps/resources/resources/tools/_category_info.yaml new file mode 100644 index 00000000..6b16baa6 --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/_category_info.yaml @@ -0,0 +1,4 @@ +description: This page is a curated list of tools that we regularly recommend in the community. + If you have a suggestion for something to add to this page, please create an issue in + <a href="https://github.com/python-discord/meta/issues">our meta repo</a>, and we'll consider adding it. +name: Tools diff --git a/pydis_site/apps/resources/resources/tools/accessibility_tools/_category_info.yaml b/pydis_site/apps/resources/resources/tools/accessibility_tools/_category_info.yaml new file mode 100644 index 00000000..e770db07 --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/accessibility_tools/_category_info.yaml @@ -0,0 +1,5 @@ +description: Accessibility tools that help people write Python code. +name: Accessibility Tools +default_icon: branding/python +default_icon_color: black +position: 2 diff --git a/pydis_site/apps/resources/resources/tools/accessibility_tools/screen_readers.yaml b/pydis_site/apps/resources/resources/tools/accessibility_tools/screen_readers.yaml new file mode 100644 index 00000000..39372956 --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/accessibility_tools/screen_readers.yaml @@ -0,0 +1,7 @@ +description: Screen readers are software programs that allow blind + or visually impaired users to read the text displayed on a computer screen with a speech synthesizer or braille display. + There are many different screen reader program options, + with this link describing many of them and their capabilities. +name: Screen Readers - American Foundation for the Blind +title_url: https://www.afb.org/blindness-and-low-vision/using-technology/assistive-technology-products/screen-readers +position: 1 diff --git a/pydis_site/apps/resources/resources/tools/accessibility_tools/talon_voice.yaml b/pydis_site/apps/resources/resources/tools/accessibility_tools/talon_voice.yaml new file mode 100644 index 00000000..9df5f66f --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/accessibility_tools/talon_voice.yaml @@ -0,0 +1,6 @@ +description: Talon is a tool being built that aims to bring programming, + realtime video gaming, command line, and full desktop computer proficiency to people + who have limited or no use of their hands. +name: Talon Voice +title_url: https://talonvoice.com/ +position: 0 diff --git a/pydis_site/apps/resources/resources/tools/editors/_category_info.yaml b/pydis_site/apps/resources/resources/tools/editors/_category_info.yaml new file mode 100644 index 00000000..3cdfff3a --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/editors/_category_info.yaml @@ -0,0 +1,5 @@ +description: Lightweight code editors supporting Python +name: Editors +default_icon: branding/python +default_icon_color: black +position: 1 diff --git a/pydis_site/apps/resources/resources/tools/editors/atom.yaml b/pydis_site/apps/resources/resources/tools/editors/atom.yaml new file mode 100644 index 00000000..c44f9b5b --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/editors/atom.yaml @@ -0,0 +1,5 @@ +description: A free Electron-based editor, a "hackable text editor for the 21st century", maintained + by the GitHub team. +name: Atom +title_url: https://atom.io/ +position: 0 diff --git a/pydis_site/apps/resources/resources/tools/editors/google_collab.yaml b/pydis_site/apps/resources/resources/tools/editors/google_collab.yaml new file mode 100644 index 00000000..302c3e2e --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/editors/google_collab.yaml @@ -0,0 +1,7 @@ +description: Google Collab is a high-powered custom version of Jupyter Notebook which supports e.g. + !apt-get to install arbitrary Debian packages to the runtime, which is very generous with CPU and memory, + and well-integrated with Google Drive. + You can share your Collab Notebooks with other people and work collaboratively. +name: Google Collab +title_url: https://colab.research.google.com/notebooks/intro.ipynb +position: 4 diff --git a/pydis_site/apps/resources/resources/tools/editors/mu_editor.yaml b/pydis_site/apps/resources/resources/tools/editors/mu_editor.yaml new file mode 100644 index 00000000..b92bac9d --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/editors/mu_editor.yaml @@ -0,0 +1,7 @@ +description: An editor aimed at beginners for the purpose of learning how to code + without the distractions more advanced editors sometimes cause. + Particularly useful for use with microcontrollers, + with built-in tools to interact with Adafruit and Arduino boards. +name: Mu-Editor +title_url: https://codewith.mu/ +position: 3 diff --git a/pydis_site/apps/resources/resources/tools/editors/sublime_text.yaml b/pydis_site/apps/resources/resources/tools/editors/sublime_text.yaml new file mode 100644 index 00000000..3c6e7e84 --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/editors/sublime_text.yaml @@ -0,0 +1,5 @@ +description: A powerful Python-backed editor with great community support and a wealth + of extensions. +name: Sublime Text +title_url: https://www.sublimetext.com/ +position: 2 diff --git a/pydis_site/apps/resources/resources/tools/editors/visual_studio_code.yaml b/pydis_site/apps/resources/resources/tools/editors/visual_studio_code.yaml new file mode 100644 index 00000000..e3737ca7 --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/editors/visual_studio_code.yaml @@ -0,0 +1,4 @@ +description: A fully-featured editor based on Electron, extendable with plugins. +name: Visual Studio Code +title_url: https://code.visualstudio.com/ +position: 1 diff --git a/pydis_site/apps/resources/resources/tools/ides/_category_info.yaml b/pydis_site/apps/resources/resources/tools/ides/_category_info.yaml new file mode 100644 index 00000000..614625a6 --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/ides/_category_info.yaml @@ -0,0 +1,5 @@ +description: Fully-integrated development environments for serious Python work. +name: IDEs +default_icon: branding/python +default_icon_color: black +position: 0 diff --git a/pydis_site/apps/resources/resources/tools/ides/pycharm.yaml b/pydis_site/apps/resources/resources/tools/ides/pycharm.yaml new file mode 100644 index 00000000..b959b0f8 --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/ides/pycharm.yaml @@ -0,0 +1,5 @@ +description: The very best Python IDE, with a wealth of advanced features and convenience + functions. +name: PyCharm +title_url: https://www.jetbrains.com/pycharm/ +position: 0 diff --git a/pydis_site/apps/resources/resources/tools/ides/repl_it.yaml b/pydis_site/apps/resources/resources/tools/ides/repl_it.yaml new file mode 100644 index 00000000..8cd14e14 --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/ides/repl_it.yaml @@ -0,0 +1,5 @@ +description: A free, collaborative, in-browser IDE to code in 50+ languages — + without spending a second on setup. +name: repl.it +title_url: https://repl.it/ +position: 3 diff --git a/pydis_site/apps/resources/resources/tools/ides/spyder.yaml b/pydis_site/apps/resources/resources/tools/ides/spyder.yaml new file mode 100644 index 00000000..c2f9c2dc --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/ides/spyder.yaml @@ -0,0 +1,5 @@ +description: The Scientific Python Development Environment. + Simpler and lighter than PyCharm, but still packs a punch. +name: Spyder +title_url: https://www.spyder-ide.org/ +position: 1 diff --git a/pydis_site/apps/resources/resources/tools/ides/thonny.yaml b/pydis_site/apps/resources/resources/tools/ides/thonny.yaml new file mode 100644 index 00000000..3581e1cd --- /dev/null +++ b/pydis_site/apps/resources/resources/tools/ides/thonny.yaml @@ -0,0 +1,5 @@ +description: A Python IDE specifially aimed at learning programming. Has a lot of + helpful features to help you understand your code. +name: Thonny +title_url: https://thonny.org/ +position: 2 diff --git a/pydis_site/apps/resources/resources/videos/_category_info.yaml b/pydis_site/apps/resources/resources/videos/_category_info.yaml new file mode 100644 index 00000000..8192e021 --- /dev/null +++ b/pydis_site/apps/resources/resources/videos/_category_info.yaml @@ -0,0 +1,2 @@ +description: Excellent Youtube channels with content related to Python. +name: Videos diff --git a/pydis_site/apps/resources/resources/videos/corey_schafer.yaml b/pydis_site/apps/resources/resources/videos/corey_schafer.yaml new file mode 100644 index 00000000..a7cca18a --- /dev/null +++ b/pydis_site/apps/resources/resources/videos/corey_schafer.yaml @@ -0,0 +1,19 @@ +description: 'Corey has a number of exceptionally high quality tutorial series + on everything from Python basics to Django and Flask: + <ul> + <li><a href="https://www.youtube.com/playlist?list=PL-osiE80TeTskrapNbzXhwoFUiLCjGgY7">Python Programming Beginner Tutorials</a></li> + <li><a href="https://www.youtube.com/playlist?list=PL-osiE80TeTsqhIuOqKhwlXsIBIdSeYtc">Python OOP Tutorials - Working With Classes</a></li> + <li><a href="https://www.youtube.com/playlist?list=PL-osiE80TeTs4UjLw5MM6OjgkjFeUxCYH">Flask Tutorials</a></li> + <li><a href="https://www.youtube.com/playlist?list=PL-osiE80TeTtoQCKZ03TU5fNfx2UY6U4p">Django Tutorials</a></li> + </ul> + Check out his channel for more video series! + ' +title_image: https://i.imgur.com/KIfWw3b.png +position: 0 +urls: + - icon: branding/youtube + url: https://www.youtube.com/channel/UCCezIgC97PvUuR4_gbFUs5g + color: youtube-red + - icon: regular/link + url: https://coreyms.com/ + color: teal diff --git a/pydis_site/apps/resources/resources/videos/jetbrains.yaml b/pydis_site/apps/resources/resources/videos/jetbrains.yaml new file mode 100644 index 00000000..5d130db6 --- /dev/null +++ b/pydis_site/apps/resources/resources/videos/jetbrains.yaml @@ -0,0 +1,12 @@ +description: A collection of videos made by the PyCharm team at JetBrains on subjects such as TDD, + Django, pytest and much more!<br><br> + Episodes of their "What does this package do?" series go over all sorts of libraries in Python + both in the standard library and from the community and give a video explanation of the key concepts. +icon_image: https://upload.wikimedia.org/wikipedia/commons/thumb/1/1a/JetBrains_Logo_2016.svg/1200px-JetBrains_Logo_2016.svg.png +icon_size: 50 +title_image: https://resources.jetbrains.com/storage/products/pycharm/img/meta/pycharm_logo_300x300.png +position: 3 +urls: + - icon: branding/youtube + url: https://www.youtube.com/channel/UCak6beUTLlVmf0E4AmnQkmw + color: youtube-red diff --git a/pydis_site/apps/resources/resources/videos/jim_shaped_coding.yaml b/pydis_site/apps/resources/resources/videos/jim_shaped_coding.yaml new file mode 100644 index 00000000..488cfa83 --- /dev/null +++ b/pydis_site/apps/resources/resources/videos/jim_shaped_coding.yaml @@ -0,0 +1,13 @@ +description: 'JimShapedCoding contains a set of YouTube tutorials covering things from Flask to GUI development in Python: + <ul> + <li><a href="https://www.youtube.com/playlist?list=PLOkVupluCIjuPtTkhO6jmA76uQR994Wvi">Flask tutorials</a></li> + <li><a href="https://www.youtube.com/watch?v=0tqZ6rMcqGE&list=PLOkVupluCIjuAzAmDNUXcD-0Fsb8sbv9F">GUI tutorials</a></li> + <li><a href="https://www.youtube.com/watch?v=qMrAFscMBBc&list=PLOkVupluCIjvORWaF4kG-sXLgbVemYpEi">Django tutorials</a></li> + </ul> + Check out his channel for more videos!' +title_image: https://i.imgur.com/DlovZPf.png +position: 5 +urls: + - icon: branding/youtube + url: https://www.youtube.com/channel/UCU8d7rcShA7MGuDyYH1aWGg + color: youtube-red diff --git a/pydis_site/apps/resources/resources/videos/microsoft.yaml b/pydis_site/apps/resources/resources/videos/microsoft.yaml new file mode 100644 index 00000000..720ee202 --- /dev/null +++ b/pydis_site/apps/resources/resources/videos/microsoft.yaml @@ -0,0 +1,18 @@ +description: A trove of tutorials & guides for developers from Microsoft's Developer hub. + Follow the links below for a series of high-quality Python tutorials for beginners. + <ul> + <li><a href="https://www.youtube.com/playlist?list=PLlrxD0HtieHhS8VzuMCfQD4uJ9yne1mE6">Python for Beginners</a></li> + <li><a href="https://www.youtube.com/playlist?list=PLlrxD0HtieHiXd-nEby-TMCoUNwhbLUnj">More Python for Beginners</a></li> + <li><a href="https://www.youtube.com/playlist?list=PLlrxD0HtieHhHnCUVtR8UHS7eLl33zfJ-">Even More Python for Beginners - Data Tools</a></li> + </ul> + Microsoft's Python Development Team also runs a Discord Server for discussions of Python in the Microsoft ecosystem, + including Visual Studio Code and Azure. +title_image: http://img-prod-cms-rt-microsoft-com.akamaized.net/cms/api/am/imageFileData/RE2qVsJ?ver=3f74 +position: 4 +urls: + - icon: branding/youtube + url: https://www.youtube.com/channel/UCsMica-v34Irf9KVTh6xx-g + color: youtube-red + - icon: branding/discord + url: https://aka.ms/python-discord + color: blurple diff --git a/pydis_site/apps/resources/resources/videos/python_discord.yaml b/pydis_site/apps/resources/resources/videos/python_discord.yaml new file mode 100644 index 00000000..04235b08 --- /dev/null +++ b/pydis_site/apps/resources/resources/videos/python_discord.yaml @@ -0,0 +1,8 @@ +description: It's our channel! We are slowly gathering content here directly related to Python, + our community and the events we host. Come check us out! +title_image: https://raw.githubusercontent.com/python-discord/branding/master/logos/logo_banner/logo_site_banner_dark_512.png +position: 2 +urls: + - icon: branding/youtube + url: https://www.youtube.com/pythondiscord + color: youtube-red diff --git a/pydis_site/apps/resources/resources/videos/sentdex.yaml b/pydis_site/apps/resources/resources/videos/sentdex.yaml new file mode 100644 index 00000000..4e5f54c6 --- /dev/null +++ b/pydis_site/apps/resources/resources/videos/sentdex.yaml @@ -0,0 +1,22 @@ +description: 'An enormous amount of Python content for all skill levels + from the most popular Python YouTuber on the web. + <ul> + <li><a href="https://www.youtube.com/playlist?list=PLQVvvaa0QuDeAams7fkdcwOGBpGdHpXln">Learning to program with Python 3 (py 3.7)</a></li> + <li><a href="https://www.youtube.com/playlist?list=PLQVvvaa0QuDfwnDTZWw8H3hN_VRQfq8rF">Kivy - Mobile and Desktop App Dev w/ Python</a></li> + <li><a href="https://www.youtube.com/playlist?list=PLQVvvaa0QuDfSfqQuee6K8opKtZsh7sA9">Data Analysis w/ Python 3 and Pandas</a></li> + <li><a href="https://www.youtube.com/playlist?list=PLQVvvaa0QuDfKTOs3Keq_kaG2P55YRn5v">Machine Learning with Python</a></li> + </ul> + Check out his channel for more video series! + ' +title_image: https://i.imgur.com/kJgWZIu.png +position: 1 +urls: + - icon: branding/youtube + url: https://www.youtube.com/user/sentdex + color: youtube-red + - icon: branding/discord + url: https://discord.gg/sentdex + color: blurple + - icon: regular/link + url: https://pythonprogramming.net/ + color: teal diff --git a/pydis_site/apps/resources/templatetags/__init__.py b/pydis_site/apps/resources/templatetags/__init__.py new file mode 100644 index 00000000..2b266b94 --- /dev/null +++ b/pydis_site/apps/resources/templatetags/__init__.py @@ -0,0 +1,3 @@ +from .as_icon import as_icon + +__all__ = ["as_icon"] diff --git a/pydis_site/apps/resources/templatetags/as_icon.py b/pydis_site/apps/resources/templatetags/as_icon.py new file mode 100644 index 00000000..b211407c --- /dev/null +++ b/pydis_site/apps/resources/templatetags/as_icon.py @@ -0,0 +1,14 @@ +from django import template + +register = template.Library() + + +def as_icon(icon: str) -> str: + """Convert icon string in format 'type/icon' to fa-icon HTML classes.""" + icon_type, icon_name = icon.split("/") + if icon_type.lower() == "branding": + icon_type = "fab" + else: + icon_type = "fas" + return f'{icon_type} fa-{icon_name}' diff --git a/pydis_site/apps/resources/tests/__init__.py b/pydis_site/apps/resources/tests/__init__.py new file mode 100644 index 00000000..e69de29b --- /dev/null +++ b/pydis_site/apps/resources/tests/__init__.py diff --git a/pydis_site/apps/resources/tests/test_as_icon.py b/pydis_site/apps/resources/tests/test_as_icon.py new file mode 100644 index 00000000..5b33910d --- /dev/null +++ b/pydis_site/apps/resources/tests/test_as_icon.py @@ -0,0 +1,28 @@ +from django.test import TestCase + +from pydis_site.apps.resources.templatetags import as_icon + + +class TestAsIcon(TestCase): + """Tests for `as_icon` templatetag.""" + + def test_as_icon(self): + """Should return proper icon type class and icon class based on input.""" + test_cases = [ + { + "input": "regular/icon", + "output": "fas fa-icon", + }, + { + "input": "branding/brand", + "output": "fab fa-brand", + }, + { + "input": "fake/my-icon", + "output": "fas fa-my-icon", + } + ] + + for case in test_cases: + with self.subTest(input=case["input"], output=case["output"]): + self.assertEqual(case["output"], as_icon(case["input"])) diff --git a/pydis_site/apps/resources/tests/test_views.py b/pydis_site/apps/resources/tests/test_views.py new file mode 100644 index 00000000..53685eef --- /dev/null +++ b/pydis_site/apps/resources/tests/test_views.py @@ -0,0 +1,34 @@ +from pathlib import Path +from unittest.mock import patch + +from django.conf import settings +from django.test import TestCase +from django_hosts import reverse + +TESTING_RESOURCES_PATH = Path( + settings.BASE_DIR, "pydis_site", "apps", "resources", "tests", "testing_resources" +) + + +class TestResourcesView(TestCase): + def test_resources_index_200(self): + """Check does index of resources app return 200 HTTP response.""" + url = reverse("resources:index") + response = self.client.get(url) + self.assertEqual(response.status_code, 200) + + +class TestResourcesListView(TestCase): + @patch("pydis_site.apps.resources.views.resources_list.RESOURCES_PATH", TESTING_RESOURCES_PATH) + def test_valid_resource_list_200(self): + """Check does site return code 200 when visiting valid resource list.""" + url = reverse("resources:resources", ("testing",)) + response = self.client.get(url) + self.assertEqual(response.status_code, 200) + + @patch("pydis_site.apps.resources.views.resources_list.RESOURCES_PATH", TESTING_RESOURCES_PATH) + def test_invalid_resource_list_404(self): + """Check does site return code 404 when trying to visit invalid resource list.""" + url = reverse("resources:resources", ("invalid",)) + response = self.client.get(url) + self.assertEqual(response.status_code, 404) diff --git a/pydis_site/apps/resources/tests/testing_resources/testing/_category_info.yaml b/pydis_site/apps/resources/tests/testing_resources/testing/_category_info.yaml new file mode 100644 index 00000000..bae17ea3 --- /dev/null +++ b/pydis_site/apps/resources/tests/testing_resources/testing/_category_info.yaml @@ -0,0 +1 @@ +name: Testing diff --git a/pydis_site/apps/resources/tests/testing_resources/testing/foobar/_category_info.yaml b/pydis_site/apps/resources/tests/testing_resources/testing/foobar/_category_info.yaml new file mode 100644 index 00000000..eaac32d9 --- /dev/null +++ b/pydis_site/apps/resources/tests/testing_resources/testing/foobar/_category_info.yaml @@ -0,0 +1 @@ +name: Foobar diff --git a/pydis_site/apps/resources/tests/testing_resources/testing/foobar/resource_test.yaml b/pydis_site/apps/resources/tests/testing_resources/testing/foobar/resource_test.yaml new file mode 100644 index 00000000..22835090 --- /dev/null +++ b/pydis_site/apps/resources/tests/testing_resources/testing/foobar/resource_test.yaml @@ -0,0 +1 @@ +name: Resource Test diff --git a/pydis_site/apps/resources/tests/testing_resources/testing/my_resource.yaml b/pydis_site/apps/resources/tests/testing_resources/testing/my_resource.yaml new file mode 100644 index 00000000..61df6173 --- /dev/null +++ b/pydis_site/apps/resources/tests/testing_resources/testing/my_resource.yaml @@ -0,0 +1 @@ +name: My Resource diff --git a/pydis_site/apps/resources/urls.py b/pydis_site/apps/resources/urls.py new file mode 100644 index 00000000..19142081 --- /dev/null +++ b/pydis_site/apps/resources/urls.py @@ -0,0 +1,9 @@ +from django.urls import path + +from pydis_site.apps.resources import views + +app_name = "resources" +urlpatterns = [ + path("", views.ResourcesView.as_view(), name="index"), + path("<str:category>/", views.ResourcesListView.as_view(), name="resources") +] diff --git a/pydis_site/apps/resources/utils.py b/pydis_site/apps/resources/utils.py new file mode 100644 index 00000000..1855fc80 --- /dev/null +++ b/pydis_site/apps/resources/utils.py @@ -0,0 +1,42 @@ +import typing as t +from pathlib import Path + +import yaml + + +def get_resources(path: Path) -> t.List[t.Dict]: + """Loads resource YAMLs from provided path.""" + resources = [] + + for item in path.iterdir(): + if item.is_file() and item.suffix == ".yaml" and item.name != "_category_info.yaml": + resources.append(yaml.safe_load(item.read_text())) + + return resources + + +def get_subcategories(path: Path) -> t.List[t.Dict]: + """Loads resources subcategories with their resources by provided path.""" + subcategories = [] + + for item in path.iterdir(): + if item.is_dir() and item.joinpath("_category_info.yaml").exists(): + subcategories.append({ + "category_info": { + **yaml.safe_load( + item.joinpath("_category_info.yaml").read_text() + ), + "raw_name": item.name + }, + "resources": [ + yaml.safe_load(subitem.read_text()) + for subitem in item.iterdir() + if ( + subitem.is_file() + and subitem.suffix == ".yaml" + and subitem.name != "_category_info.yaml" + ) + ] + }) + + return subcategories diff --git a/pydis_site/apps/resources/views/__init__.py b/pydis_site/apps/resources/views/__init__.py new file mode 100644 index 00000000..8eb383b5 --- /dev/null +++ b/pydis_site/apps/resources/views/__init__.py @@ -0,0 +1,4 @@ +from .resources import ResourcesView +from .resources_list import ResourcesListView + +__all__ = ["ResourcesView", "ResourcesListView"] diff --git a/pydis_site/apps/resources/views/resources.py b/pydis_site/apps/resources/views/resources.py new file mode 100644 index 00000000..25ce3e50 --- /dev/null +++ b/pydis_site/apps/resources/views/resources.py @@ -0,0 +1,7 @@ +from django.views.generic import TemplateView + + +class ResourcesView(TemplateView): + """View for resources index page.""" + + template_name = "resources/resources.html" diff --git a/pydis_site/apps/resources/views/resources_list.py b/pydis_site/apps/resources/views/resources_list.py new file mode 100644 index 00000000..55f22993 --- /dev/null +++ b/pydis_site/apps/resources/views/resources_list.py @@ -0,0 +1,39 @@ +from pathlib import Path +from typing import Any, Dict + +import yaml +from django.conf import settings +from django.http import Http404 +from django.views.generic import TemplateView + +from pydis_site.apps.resources.utils import get_resources, get_subcategories + +RESOURCES_PATH = Path(settings.BASE_DIR, "pydis_site", "apps", "resources", "resources") + + +class ResourcesListView(TemplateView): + """Shows specific resources list.""" + + template_name = "resources/resources_list.html" + + def get_context_data(self, **kwargs) -> Dict[str, Any]: + """Add resources and subcategories data into context.""" + context = super().get_context_data(**kwargs) + + resource_path = RESOURCES_PATH / self.kwargs["category"] + if ( + not resource_path.is_dir() + or not resource_path.joinpath("_category_info.yaml").exists() + ): + raise Http404 + + context["resources"] = get_resources(resource_path) + context["subcategories"] = get_subcategories(resource_path) + context["category_info"] = { + **yaml.safe_load( + resource_path.joinpath("_category_info.yaml").read_text() + ), + "raw_name": resource_path.name + } + + return context |