Skip to content

Instantly share code, notes, and snippets.

View ulgens's full-sized avatar
⚙️
In Progress

Ülgen Sarıkavak ulgens

⚙️
In Progress
View GitHub Profile
@ulgens
ulgens / find_versions.py
Created February 26, 2024 15:27
Find versions of packages installed in TouchDesigner
from pkgutil import iter_modules
from pprint import pprint
from importlib import import_module
from importlib.metadata import version as version_il
from importlib.metadata import PackageNotFoundError
modules = list(iter_modules())
packages = filter(lambda x: x.ispkg, modules)
packages = list(packages) # The filter needs to be iterated more than once
import time
from django.db import connections
def management_command_profiler(func):
"""
This decorator shows the execution time and query count of the function passed.
Output is designed to use with methods of management commands.
"""
from datetime import datetime
start_time = datetime.now()
# Your code runs here
time_elapsed = datetime.now() - start_time
print(f"Time elapsed: {time_elapsed}")
# pip install "httpx>=0.16.1"
# Make a dismiss request from https://www.kadenze.com/notifications page manually.
# Get x-csrf-token and cookie from that request, fill HEADERS with them.
import httpx
from pprint import pprint
HEADERS = {
"accept": "application/json, text/javascript, */*; q=0.01",
@ulgens
ulgens / instance_count.py
Created September 11, 2020 06:42
Get counts from all models in Django
import django.apps
models = django.apps.apps.get_models()
for model in models:
print(model, model.objects.count())
@ulgens
ulgens / jwt_auth_stack.py
Created March 5, 2020 10:00
JWT (headers) auth stack for django-channels
import jwt
from channels.auth import AuthMiddlewareStack
from django.conf import settings
from django.contrib.auth.models import AnonymousUser
from django.db import close_old_connections
from rest_framework.authtoken.models import Token
from members.models import MemberProfile
@ulgens
ulgens / debug_toolbar_middleware.py
Created February 29, 2020 08:39
GQL Debug Toolbar Fix
import json
from debug_toolbar.middleware import DebugToolbarMiddleware as BaseMiddleware
from debug_toolbar.middleware import get_show_toolbar
from debug_toolbar.toolbar import DebugToolbar
from django.template.loader import render_to_string
from graphiql_debug_toolbar.middleware import get_payload, set_content_length
from graphiql_debug_toolbar.serializers import CallableJSONEncoder
__all__ = ['DebugToolbarMiddleware']
@ulgens
ulgens / humble_bundle_download.py
Last active February 2, 2019 01:11
Humble Bundle Book Download
# pip install wget
# Save purchase/download page to index.html first
from lxml import html
import wget
book_list_xpath = """//*[@id="papers-content"]/div[11]/div[4]/div/div/div/div"""
book_name_xpath = """//*[@id="papers-content"]/div[11]/div[4]/div/div/div/div[{index}]/div/div[2]/div[1]/a/text()"""
download_links_path = """//*[@id="papers-content"]/div[11]/div[4]/div/div/div/div[{index}]/div/div[3]/div/div/div/div[1]/a/@href"""
@ulgens
ulgens / middlewares.py
Created June 12, 2018 15:41
Profile non HTML responses with debug_toolbar
class NonHtmlDebugToolbarMiddleware(MiddlewareMixin):
"""
Converts non-HTML responses to HTML,
for being able to profile them with django debug toolbar.
Usage: /<endpoint>/?format=json&profile=1
"""
def process_response(self, request, response):
profile = request.GET.get('profile')
@ulgens
ulgens / gist:3f4a5e33d6bbf414a2e6ac18c6f4ee2f
Created January 21, 2017 20:15 — forked from datagrok/gist:2199506
Virtualenv's `bin/activate` is Doing It Wrong

Virtualenv's bin/activate is Doing It Wrong

I'm a Python programmer and frequently work with the excellent [virtualenv][] tool by Ian Bicking.

Virtualenv is a great tool on the whole but there is one glaring problem: the activate script that virtualenv provides as a convenience to enable its functionality requires you to source it with your shell to invoke it. The activate script sets some environment variables in your current environment and defines for you a deactivate shell function which will (attempt to) help you to undo those changes later.

This pattern is abhorrently wrong and un-unix-y. activate should instead do what ssh-agent does, and launch a sub-shell or sub-command with a modified environment.

Problems