Skip to content

Instantly share code, notes, and snippets.

@Julian-Nash
Julian-Nash / flask_sitemap_generator.py
Last active April 16, 2024 12:32
Flask dynamic sitemap generator
@app.route("/sitemap")
@app.route("/sitemap/")
@app.route("/sitemap.xml")
def sitemap():
"""
Route to dynamically generate a sitemap of your website/application.
lastmod and priority tags omitted on static pages.
lastmod included on dynamic content such as blog posts.
"""
from flask import make_response, request, render_template
@Julian-Nash
Julian-Nash / upload.html
Created February 22, 2019 19:56
File upload with progress bar, cancel and percent complete - XMLHTTPRequest (Bootstrap 4)
<!doctype html>
<html lang="en">
<head>
<!-- Required meta tags -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<!-- Bootstrap CSS -->
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.2.1/css/bootstrap.min.css" integrity="sha384-GJzZqFGwb1QTTN6wy59ffF1BuGJpLSa9DkKMp0DgiMDm4iYMj70gZWKYbI706tWS" crossorigin="anonymous">
@Julian-Nash
Julian-Nash / json_response.py
Last active December 26, 2022 00:26
Flask JSON responder class - Class with static methods for returning JSON data by calling methods mapping to RFC HTTP status codes
from flask import jsonify, make_response, Response
from typing import Optional, Any
from http import HTTPStatus
class JSONResponse(object):
@classmethod
def _send_response(cls, status: int, data: Any, headers: Optional[dict] = None):
@Julian-Nash
Julian-Nash / cprint.py
Last active December 26, 2022 00:25
Print colored objects in the console depending on their type. Useful for development & debugging requests.
import click
import json
def cprint(x=None):
"""
Pass any object into cprint to have it printed to the console in color!
json = yellow (json is pretty printed by default)
Python collections [list, dict, tuple] = green
Integers & floats = magenta
@Julian-Nash
Julian-Nash / darkstyle.py
Last active June 3, 2022 02:55
vs code dark style pygments class
# Version 1 - Not tested
from pygments.style import Style
from pygments.token import (Keyword, Name, Comment, String,
Error, Number, Operator, Generic)
class DarkStyle(Style):
default_style = ""
styles = {
Comment: '#608b4e',
@Julian-Nash
Julian-Nash / user_management.py
Last active August 19, 2021 21:50
Query MongoDB for account (Mongoengine) / Bcrypt password hashing / Hashed password validation
def has_account(email):
email = email.strip()
user_query = User.objects(email=email)
status = False
for user in user_query:
if user.email == email:
status = True
else:
status = False
return status
@Julian-Nash
Julian-Nash / __init__.py
Created July 21, 2021 16:18
Sanic Motor Example
from pathlib import Path
import os
from sanic import Sanic
from motor.motor_asyncio import AsyncIOMotorClient
from app.config import get_config
from app.blueprints import view, ws, api
from pygments import highlight
from pygments.formatters.html import HtmlFormatter
from pygments.lexers import guess_lexer, get_lexer_for_filename, get_lexer_by_name
class HTMLCodeHighlighter:
""" Generate highlighted HTML snippets of code (pip install Pygments)"""
@classmethod
def _highlight(cls, code: str, lexer):
@Julian-Nash
Julian-Nash / doubly_linked_list.py
Last active December 22, 2020 14:39
Doubly Linked List. Python implementation
from typing import Optional, Union
class DoublyLinkedListNode:
def __init__(self, value: Optional = None, prev: Optional = None, next: Optional = None):
self.value = value
self.prev = prev
self.next = next
@Julian-Nash
Julian-Nash / profiler.py
Created December 13, 2020 17:49
Flask profiler
""" Flask application profiler
Will run the Flask application and log profile data to stdout.
The `restrictions` parameter passed to `ProfilerMiddleware` is used to limit the number of items listed
in the report.
"""
import os
from werkzeug.middleware.profiler import ProfilerMiddleware