Skip to content

Instantly share code, notes, and snippets.

@danjac
danjac / form_views.py
Created June 26, 2023 07:25
Tidier form validation
# example from Django docs https://docs.djangoproject.com/en/4.2/topics/forms/
def get_name(request):
# if this is a POST request we need to process the form data
if request.method == "POST":
# create a form instance and populate it with data from the request:
form = NameForm(request.POST)
# check whether it's valid:
if form.is_valid():
# process the data in form.cleaned_data as required
# ...
@danjac
danjac / method_dispatcher.py
Created June 25, 2023 10:37
Decorator to dispatch to different functions based on HTTP methods
def method_dispatcher(view: Callable) -> Callable:
"""Dispatch for method. Turns view into decorator so you can do:
@method_dispatcher
def my_view(request):
return HttpResponse()
@method_dispatcher("POST", "PUT")
def submit(request):
<?xml version='1.0' encoding='UTF-8'?>
<rss version="2.0" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:podcast="https://podcastindex.org/namespace/1.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel><atom:link href="https://feeds.buzzsprout.com/1889177.rss" rel="self" type="application/rss+xml" /><atom:link href="https://pubsubhubbub.appspot.com/" rel="hub" xmlns="http://www.w3.org/2005/Atom" /><title>4 Legal English Podcast</title><lastBuildDate>Sat, 11 Feb 2023 07:35:34 -0500</lastBuildDate><link>http://www.4legalenglish.com</link><language>en-us</language><copyright>© 2023 4 Legal English Podcast</copyright><podcast:locked>yes</podcast:locked><podcast:guid>081a03d5-b634-521a-b546-ed83ff470077</podcast:guid><itunes:author>Timothy Barrett</itunes:author><itunes:type>episodic</itunes:type><itunes:explicit>false</itunes:explicit><description><![CDATA[4 Legal English Podcast is for lawyers, law students, and other professionals fro
@danjac
danjac / tailwind.config.js
Last active March 30, 2021 08:10
Typography+dark mode
module.exports = {
darkMode: 'class',
future: {
removeDeprecatedGapUtilities: true,
purgeLayersByDefault: true,
},
purge: {
content: ['./templates/**/*.html', './static/src/js/**/*.js', './safelist.txt'],
keyframes: true,
},
@login_required
@community_required
@add_messages_to_response_header
def comment_update_view(request, pk):
comment = get_object_or_404(
Comment.objects.for_community(request.community).select_related(
"owner", "community"
),
pk=pk,
)
@danjac
danjac / init.vim
Created May 13, 2020 13:46
nvim/vim config
syntax on
filetype plugin indent on
set nocompatible
set encoding=utf-8
set fileencodings=utf-8
" prevent shada loading
" set shada="NONE"
# We assume 2 top level dirs for backend (Django app) and frontend (VueJS app).
# This is for a development setup NOT PRODUCTION-SAFE
# Django app uses django-configurations
# Environment variables are stored locally in .env file (IGNORE IN REPO)
#### docker-compose.yml ####
version: '3.4'
x-env:
import re
CASE_RE = r'^Case-(?P<case_id>\d+)'
MERGE_RE = r'^(merge|merged) (?P<branch_name>[\w-]+)'
def prefix_commit_message(repo, **kwargs):
commitctx = repo.commitctx
"""
@danjac
danjac / docker-compose.yml
Created May 12, 2018 11:22
docker-compose for typical Django+VueJS+PostgreSQL project
version: '2'
services:
db:
image: postgres
redis:
image: redis

Gnome desktop perfect install

  • Adwaita Dark

    • Firefox config: about:config: widget.content.gtk-theme-override: Adwaita:light
  • Firefox

    • set minimal view Addons