Skip to content

Instantly share code, notes, and snippets.

View danjac's full-sized avatar

Dan Jacob danjac

  • Finland
  • 02:25 (UTC -12:00)
View GitHub Profile
@danjac
danjac / download_csv.py
Created June 14, 2024 12:15
Django CSV download using StreamingHttpResponse
import csv
class CSVBuffer:
"""Handles CSV output."""
def write(self, value):
"""Handles file-like write, just returning the value"""
return value
def download_csv(request):
@danjac
danjac / docker-main.yml
Created February 5, 2025 14:54
Ansible role for provisioning Docker on a VM
- name: Install dependencies
ansible.builtin.apt:
name: "{{ item }}"
state: present
update_cache: true
loop:
- apt-transport-https
- ca-certificates
- curl
- gnupg-agent
@danjac
danjac / k3s-ansible.yaml
Created February 18, 2025 18:52
K3s ansible playbook
- name: Install K3s
hosts: kubernetes
remote_user: root
become: false
vars:
ansible_user: root
vars_files:
- vars/config.yml
- vars/secrets.yml
tasks:
class DeferredHTMLMiddleware):
"""Adds `deferred_html` to request.
Use with the defer and render_deferred template tags.
"""
def __init__(self, get_response: Callable):
self.get_response = get_resposne
def __call__(self, request: HttpRequest) -> HttpResponse:
@danjac
danjac / templatetags.py
Created May 20, 2025 09:53
Simple component tag using Django 5.2 simple_block_tag
@register.simple_block_tag(takes_context=True)
def fragment(
context: Context,
content: str,
fragment_name: str,
**extra_context,
) -> str:
"""Renders a block fragment.
Fragment name is resolved to a template name for example:
@danjac
danjac / blockinclude.py
Created September 25, 2025 08:10
Very simple Django block include tag using @simple_block_tag
@register.simple_block_tag(takes_context=True)
def blockinclude(
context: Context,
content: str,
template_name: str,
*,
only: bool = False,
**extra_context,
) -> str: