Skip to content

Instantly share code, notes, and snippets.

View ikhomutov's full-sized avatar

Ivan Khomutov ikhomutov

View GitHub Profile
@ikhomutov
ikhomutov / resume.json
Last active March 2, 2025 17:55
resume
{
"basics": {
"name": "Ivan Khomutov",
"label": "Software developer",
"email": "i.khomutov@protonmail.com",
"url": "https://ivankhomutov.netlify.app",
"summary": "Highly skilled and experienced Software Developer with over 8 years in the industry, specializing in backend, as well as DevOps and System Design.",
"profiles": [{
"network": "github",
"username": "ikhomutov",
"""
This is a demo of arbitrary data not working with custom webhook
Prerequisites:
pip install starlette uvicorn python-telegram-bot[callback-data]
Change the values of DOMAIN and TOKEN variables with an appropriate data
To see the actual behaviour:
1. Start the bot
2. Send the /test command
@ikhomutov
ikhomutov / admin.py
Last active May 26, 2023 11:03
How to add action button to a record in Django Admin changelist view
from django.contrib import admin
from django.urls.conf import path
from django.shortcuts import reverse, redirect
from django.utils.html import format_html
@admin.register(models.MyModel)
class MyModelAdmin(admin.ModelAdmin):
list_display = ('field_1', '_actions')
@ikhomutov
ikhomutov / flow.puml
Last active May 21, 2023 15:47
OAuth flow (google example)
@startuml
actor "User\n(resource owner)" as U
participant Browser as B
participant "Application\n(client)" as A
box "Google"
participant "Authentication server" as AS
participant "GPhoto\n(resource server)" as RS
end box
@ikhomutov
ikhomutov / parser.py
Created March 11, 2023 03:59
ibls parser
import os
import logging
import re
import json
from time import sleep
from urllib.parse import urljoin
import snakemd
import requests
from dotenv import load_dotenv
basic:
name: John Doe
title: The Developer
photo: https://upload.wikimedia.org/wikipedia/commons/7/7c/Profile_avatar_placeholder_large.png
summary: |
CVue example resume. I need to put extra text here to check that layout can handle this.
Not sure how long the summary can ever be.
contacts:
website: johndoe.example
email: john@doe.com
@ikhomutov
ikhomutov / admin.py
Created November 27, 2022 12:18
Add preview button for html content in field for admin inline
class SomeInline(EntityTranslationInline):
model = models.SomeEntity
form = forms.SomeInlineForm
readonly_fields = ('_preview',)
def _preview(self, obj):
return mark_safe(
f'<a href="" '
f'class="show-preview-field" '
@ikhomutov
ikhomutov / main.py
Created October 27, 2022 13:32
ibls school parser
import os
from time import sleep
from urllib.parse import urljoin
import requests
from dotenv import load_dotenv
from pymongo import MongoClient
load_dotenv()
@ikhomutov
ikhomutov / main.py
Last active October 10, 2022 18:58
Test assignment for Yandex.Praktikum
# общие замечания:
# 1. к методам и классам нет описаний
# 2. в целом нет никакой проверки на типы данных, которые передаются
# запросто можно в amount при инициализации Record передать строку,
# а в limit в калькуляторе - Decimal. и тогда все упадет
import datetime as dt
# pro tip: когда у тебя есть класс, который только и делает что хранит
@ikhomutov
ikhomutov / script.py
Last active January 31, 2022 10:00
Заполнение декларации 3НДФЛ для учета дивидендов от иностранных компаний
import csv
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.by import By
COUNTRY_MAPPER = {
'США': '840',
'Великобритания': '826',
}