Skip to content

Instantly share code, notes, and snippets.

View victorusachev's full-sized avatar

Victor Usachev victorusachev

View GitHub Profile
from itertools import groupby
from operator import itemgetter
def get_subclasses(cls: type):
for subclass in cls.__subclasses__():
yield subclass
yield from get_subclasses(subclass)
SELECT
mcl.changes #>> '{name, old_value, repr}'
FROM history_modelchangelog as mcl
WHERE (
mcl.action = 'updated'
AND (mcl.changes #>> '{name, new_value, repr}') = %(new_name)s
AND (mcl.changes #>> '{name, old_value, repr}') IS NOT NULL
AND mcl.content_type_id = %(content_type_id)s
AND mcl.object_id = %(object_id)s
)
class SingletonMeta(type):
_instance = None
_args = None
_kwargs = None
def __call__(cls, *args, **kwargs):
if not cls._instance:
cls._args = args
cls._kwargs = kwargs
cls._instance = super(SingletonMeta, cls).__call__(*args, **kwargs)
import functools
import threading
from time import sleep
lock = threading.Lock()
class SingletonMeta(type):
_instance = None
_args = None
@victorusachev
victorusachev / audit_mixin.py
Created April 18, 2020 01:08 — forked from amancioandre/audit_mixin.py
Useful SQLAlchemy Mixins
from datetime import datetime
from sqlalchemy import Column, Integer, DateTime, ForeignKey
from sqlalchemy.orm import relationship
from sqlalchemy.ext.declarative import declared_attr
from flask_security import current_user
class AuditMixin(object):
created_at = Column(DateTime, default=datetime.now)
updated_at = Column(DateTime, default=datetime.now, onupdate=datetime.now)
@victorusachev
victorusachev / env_var.py
Created April 23, 2020 14:06
Declarative description of environment variables for environs
from typing import Any, Callable, Dict, Optional, Type, TypeVar
from environs import Env
__all__ = ('EnvVar',)
T = TypeVar('T')
class EnvVar:
def setup_audit(cls, level):
# some code
print(cls, level)
class AuditMeta(type):
def __new__(mcs, name, bases, attrs, **kwargs):
cls = super().__new__(mcs, name, bases, attrs)
level = kwargs.get('level', 0)
setup_audit(cls, level)
from graphene import InputObjectType, ObjectType, Schema, String, ID, Field, List
class UserSchema(ObjectType):
username = String()
first_name = String()
class PostSchema(ObjectType):
id = ID()
@victorusachev
victorusachev / docker-build.sh
Created August 5, 2020 13:57
My local scripts for docker
# shellcheck disable=SC2046
docker build -f docker/Dockerfile -t defmain/backend:latest . -t defmain/backend:$(git rev-parse --short HEAD)
@victorusachev
victorusachev / helpers.py
Created August 12, 2020 20:42
Application configuration and testability
# tests/helpers.py
from contextlib import contextmanager
from typing import TYPE_CHECKING, Any, Iterator
from defmain.settings import get_settings
if TYPE_CHECKING:
from defmain.settings import Settings