Skip to content

Instantly share code, notes, and snippets.

View baxeico's full-sized avatar

Augusto Destrero baxeico

View GitHub Profile
@baxeico
baxeico / toggl_timesheet.py
Last active June 3, 2019 14:47
How to build a pretty Excel timesheet using Toggl API and Python. See https://www.guguweb.com/2014/03/13/build-excel-timesheet-toggl-api-python/
#!/usr/bin/python
import requests
from xlsxwriter import Workbook
import sys
from datetime import date, timedelta
import argparse
from math import floor, ceil
def toExcelTime(time, round_minutes=0, round_func=round):
# time is in milliseconds
@baxeico
baxeico / forms.py
Last active August 29, 2015 14:06
User profile ModelForm with a custom group field
from django import forms
from django.contrib.auth.models import User, Group
class UserProfileForm(forms.ModelForm):
group = forms.ModelChoiceField(queryset=Group.objects.all(),
required=True)
class Meta:
model = User
fields = ['first_name', 'last_name', 'email', 'group']
@baxeico
baxeico / views.py
Last active August 28, 2021 19:39
A custom UpdateView to set initial data and save the user profile with a custom group field
from django.contrib.auth.models import User
from django.views.generic import UpdateView
from .forms import UserProfileForm
class UserProfileUpdateView(UpdateView):
model = User
def get_initial(self):
initial = super(UserProfileUpdateView, self).get_initial()
@baxeico
baxeico / views.py
Last active August 29, 2015 14:06
Find and fix a django "memleak"
import objgraph
import sys
import logging
from django.http import HttpResponse
from .models import FirstModel
logger = logging.getLogger(__name__)
@baxeico
baxeico / views.py
Last active August 29, 2015 14:07
A huge "memleak" in a simple Django view
from django.http import HttpResponse
from .models import FirstModel
# this view will make crazy use of the RAM ;)
def my_view(request):
# this queryset contains about 100k records
# each of them has many ForeignKeys to other models
huge_queryset = FirstModel.objects.all()
@baxeico
baxeico / views.py
Created September 30, 2014 16:17
Fixing a memleak in a Django view
from django.http import HttpResponse
from .models import FirstModel
def my_view(request):
# this queryset contains about 100k records
# each of them has many ForeignKeys to other models
huge_queryset = FirstModel.objects.all().iterator()
f = open('dumb.dump', 'w')
@baxeico
baxeico / Code.gs
Created February 9, 2015 15:07
Google App Script to geocode a list of addresses in a Spreadsheet
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var range = sheet.getDataRange();
var cells = range.getValues();
var latitudes = [];
var longitudes = [];
for (var i = 0; i < cells.length; i++) {
angular.module('canvas_share', ['ionic', 'ngCordova'])
.controller('CanvasShareCtrl', function($scope, $cordovaSocialSharing, $q) {
var buildImage = function() {
var deferred = $q.defer();
// create the canvas
var canvas = document.createElement('canvas');
canvas.width = 400;
canvas.height = 120;
var context = canvas.getContext('2d');
// draw a rectangular white frame for our content
#!/bin/bash
if [ -z $1 ]; then
echo "Usage: $0 app_label"
exit 1
fi
app=$1 # this is the name of the app where we want to update the last migration
# get the list of known migrations for the app
@baxeico
baxeico / queryset_iterator.py
Last active February 9, 2018 09:45
queryset_iterator, a function to iterate over huge Django querysets without using too much memory
import gc
def queryset_iterator(qs, batchsize = 500, gc_collect = True):
iterator = qs.values_list('pk', flat=True).order_by('pk').distinct().iterator()
eof = False
while not eof:
primary_key_buffer = []
try:
while len(primary_key_buffer) < batchsize:
primary_key_buffer.append(iterator.next())