aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Gareth Coles <[email protected]>2018-03-14 10:06:52 +0000
committerGravatar Gareth Coles <[email protected]>2018-03-14 10:06:52 +0000
commit663aff16b3c1c93fe40d596a60869131e3783ba4 (patch)
treecd5d370593f4bfa5adc75487728c7aa4a3482787
parentDatadog TCP logging (diff)
Add payment info for resources, and two more resources
* Code Combat * Corey Schafer's Python tutorials playlist
-rw-r--r--static/resources.json42
-rw-r--r--templates/main/info/resources.html41
2 files changed, 74 insertions, 9 deletions
diff --git a/static/resources.json b/static/resources.json
index 1e6bc503..b73cfb33 100644
--- a/static/resources.json
+++ b/static/resources.json
@@ -4,15 +4,33 @@
"resources": {
"Automate the Boring Stuff with Python": {
"description": "One of the best books out there for Python beginners. You can buy a copy, but there's also a free online version.",
- "url": "https://automatetheboringstuff.com/"
+ "url": "https://automatetheboringstuff.com/",
+ "payment": "optional",
+ "payment_description": "A free version is available online, with the option to buy a physical copy"
+ },
+ "Code Combat": {
+ "description": "Learn Python while gaming - an open-source project with thousands of contributors, which teaches you Python through a deep, top-down RPG.",
+ "url": "https://codecombat.com/",
+ "payment": "optional",
+ "payment_description": "A wealth of free content is available, but you can also pay for more"
},
"Getting Started for Non-Programmers": {
"description": "The list of resources for non-programmers from Python's official beginners' guide",
- "url": "https://wiki.python.org/moin/BeginnersGuide/NonProgrammers"
+ "url": "https://wiki.python.org/moin/BeginnersGuide/NonProgrammers",
+ "payment": "free",
+ "payment_description": null
},
"Getting Started for Programmers": {
"description": "The list of resources for programmers from Python's official beginners' guide",
- "url": "https://wiki.python.org/moin/BeginnersGuide/Programmers"
+ "url": "https://wiki.python.org/moin/BeginnersGuide/Programmers",
+ "payment": "free",
+ "payment_description": null
+ },
+ "Python Tutorials by Corey Schafer on YouTube": {
+ "description": "An in-depth look at the Python programming language, from one of YouTube's most popular Python tutors.",
+ "url": "https://www.youtube.com/playlist?list=PL-osiE80TeTt2d9bfVyTiXJA-UTHn6WwU",
+ "payment": "free",
+ "payment_description": null
}
}
},
@@ -21,24 +39,32 @@
"resources": {
"Visual Studio Code (Free)": {
"description": "A fully-featured editor based on Electron, extendable with plugins.",
- "url": "https://code.visualstudio.com/"
+ "url": "https://code.visualstudio.com/",
+ "payment": "free",
+ "payment_description": null
},
"Sublime Text (Paid, with shareware-style \"trial\")": {
"description": "A powerful Python-backed editor with great community support and a wealth of extensions.",
- "url": "https://www.sublimetext.com/"
+ "url": "https://www.sublimetext.com/",
+ "payment": "optional",
+ "payment_description": "Nagware; will ask you to buy the full version after every X saves"
}
}
},
"IDEs": {
"description": "Fully-integrated development environments for serious Python work",
"resources": {
- "PyCharm (Community and Professional editions available)": {
+ "PyCharm": {
"description": "The very best Python IDE, with a wealth of advanced features and convenience functions.",
- "url": "https://www.jetbrains.com/pycharm/"
+ "url": "https://www.jetbrains.com/pycharm/",
+ "payment": "optional",
+ "payment_description": "There's a free Community Edition and a paid-for Professional Edition with more features available"
},
"Spyder (Free)": {
"description": "The Scientific PYthon Development EnviRonment. Simpler and lighter than PyCharm, but still packs a punch.",
- "url": "https://pythonhosted.org/spyder/"
+ "url": "https://pythonhosted.org/spyder/",
+ "payment": "free",
+ "payment_description": null
}
}
}
diff --git a/templates/main/info/resources.html b/templates/main/info/resources.html
index 576d68ec..6e8a616d 100644
--- a/templates/main/info/resources.html
+++ b/templates/main/info/resources.html
@@ -21,6 +21,28 @@
if there's a great resource that you love and you don't see it on this page, feel free to submit a
pull request!
</p>
+ <p>
+ Some resources aren't free - the below key will help you figure out whether you need to pay for
+ a resource or not. You can also hover them for more information on the payment (or tap them on
+ mobile) where available.
+ </p>
+ <p class="uk-text-center">
+ <span class="fa-layers fa-fw">
+ <i class="fas fa-circle" style="color: green"></i>
+ <i class="fa-inverse fas fa-dollar-sign" data-fa-transform="shrink-6"></i>
+ </span>
+ Free
+ <span class="fa-layers fa-fw">
+ <i class="fas fa-circle" style="color: darkgoldenrod"></i>
+ <i class="fa-inverse fas fa-dollar-sign" data-fa-transform="shrink-6"></i>
+ </span>
+ Payment Optional
+ <span class="fa-layers fa-fw">
+ <i class="fas fa-circle" style="color: darkred"></i>
+ <i class="fa-inverse fas fa-dollar-sign" data-fa-transform="shrink-6"></i>
+ </span>
+ Paid
+ </p>
{% if categories is none %}
<div class="uk-alert-danger" uk-alert>
@@ -44,7 +66,24 @@
</h2>
{% for item, data in category_data.resources.items() %}
<p>
- <strong>{{ item }}</strong> &nbsp;<a href="{{ data.url }}"><i class="fas fa-link"></i></a><br />
+ {% if data["payment_description"] %}
+ <span class="fa-layers fa-fw" uk-tooltip="{{ data["payment_description"] }}">
+ {% else %}
+ <span class="fa-layers fa-fw">
+ {% endif %}
+
+ {% if data["payment"] == "optional" %}
+ <i class="fas fa-circle" style="color: darkgoldenrod"></i>
+ {% elif data["payment"] == "paid" %}
+ <i class="fas fa-circle" style="color: darkred"></i>
+ {% else %}
+ <i class="fas fa-circle" style="color: green"></i>
+ {% endif %}
+ <i class="fa-inverse fas fa-dollar-sign" data-fa-transform="shrink-6"></i>
+ </span>
+ <strong>{{ item }}</strong> &nbsp;<a href="{{ data.url }}"><i class="fas fa-link"></i></a>
+
+ <br />
<span class="uk-text-meta">{{ data.description }}</span>
</p>
{% endfor %}