Skip to content

Instantly share code, notes, and snippets.

Avatar

Karthik Ravindra karthikbgl

  • New York, NY
View GitHub Profile
@karthikbgl
karthikbgl / save_as_new.py
Last active Aug 29, 2015
Django ModelAdmin "Save as New"
View save_as_new.py
class MyModelAdminForm(forms.ModelForm):
'''
To add the option 'Save as New', by default does not work for reverse
ManyToMany/ForeignKey fields. In other words, does not copy over the
reverse attributes. A simple workaround to make this happen is:
update the cleaned_data and returning it in the context.
Something like this:
'''
def clean(self, *args, **kwargs):
cd = self.cleaned_data
@karthikbgl
karthikbgl / sunsigns.py
Last active Aug 29, 2015
Sunsigns models and create view using django
View sunsigns.py
#models.py
CAPRICORN = 'Capricorn'
AQUARIUS = 'Aquarius'
PISCES = 'Pisces'
ARIES = 'Aries'
TAURUS = 'Taurus'
GEMINI = 'Gemini'
CANCER = 'Cancer'
LEO = 'Leo'
@karthikbgl
karthikbgl / migrations.py
Last active Aug 29, 2015
Editing south migrations to run custom sql
View migrations.py
# -*- coding: utf-8 -*-
import datetime
from south.db import db
from south.v2 import DataMigration
from django.db import models
class Migration(DataMigration):
def forwards(self, orm):
db.start_transaction()
View functools_partials.py
'''
This is an example of functools.partials
Typical usage is when you have a function that needs multiple parameters,
of which one is a constant, you can use a partial.
Example:
Return only the values in an iterable which match the regex 'c.t' where . is a single character.
Input:
['cat', 'cut', 'abc', 'def']
@karthikbgl
karthikbgl / seconds_to_string
Created Oct 23, 2014
Time elapsed in seconds
View seconds_to_string
def secondsToStr(t):
'''
This snippet converts the time elapsed in
seconds to HH:MM:SS.mmm
Example:
>>> secondsToStr(123456)
'34:17:36.000'
'''
@karthikbgl
karthikbgl / handler_500.py
Created Jun 25, 2015
Override the standard 500 error page to display the stack trace if certain conditions are met. The advantage of overriding the server error handler is, it keeps everything else intact - example all the error emails, etc.
View handler_500.py
from django.views.debug import technical_500_response
from django.views.defaults import server_error
def server_error_handler(request):
ip_address = request.META.get("HTTP_X_FORWARDED_FOR", request.META.get("REMOTE_ADDR"))
if ip_address in settings.ALLOWED_IPS_FOR_DEBUG_SCREEN: #or request.user.is_staff
return technical_500_response(request, *sys.exc_info())
return server_error(request)
@karthikbgl
karthikbgl / console_log_ie_fix.js
Last active Aug 29, 2015
console.log messages in code are bad for Internet Explorer <= 9. This plugin would avoid the application from crashing when console.log messages are present in the javascript code.
View console_log_ie_fix.js
;(function () {
// console.log statements cause issues in Internet Explorer <= 9.
// This piece of code prevents the application to fail
// Source for console: https://developer.mozilla.org/en-US/docs/Web/API/Console
var fns = [
"assert",
"count",
"debug",
"dir",
"dirxml",
View smallest_multiple.py
import fractions
def smallest_multiple( n):
return reduce(lambda x, y: x*y/fractions.gcd(x, y), range(2, n+1))
@karthikbgl
karthikbgl / combinations_substring.py
Created Oct 24, 2015
All possible combinations of substrings
View combinations_substring.py
import itertools
def yieldSubset(s):
return sorted(list(set([''.join(c) for i in range(len(s)+1) for c in itertools.combinations(s, i) if c])))
@karthikbgl
karthikbgl / regex_matcher.js
Last active Jul 22, 2017
Regex pattern matches using jquery
View regex_matcher.js
(function($) {
$.fn.regexFinder = function(text) {
/*
Phone number formats
XXX-XXX-XXXX
XXX.XXX.XXXX
XXX XXX XXXX
*/
var cc_re = /(?:4[0-9]{12}(?:[0-9]{3})?|[25][1-7][0-9]{14}|6(?:011|5[0-9][0-9])[0-9]{12}|3[47][0-9]{13}|3(?:0[0-5]|[68][0-9])[0-9]{11}|(?:2131|1800|35\d{3})\d{11})/g;
var date_re = /\d{2}\/\d{4}/g;