Skip to content

Instantly share code, notes, and snippets.

View david-batranu's full-sized avatar

David Bătrânu david-batranu

View GitHub Profile
@david-batranu
david-batranu / rename.py
Created April 19, 2018 17:33
Rename and move Plone/Zope objects without triggering events
portal = app['Plone']
catalog = portal['portal_catalog']
src = portal['src_folder']
dst = portal['dst_folder']
orig = [
'name1',
@david-batranu
david-batranu / gist:d6b98eb76d96a05049f0b538204070d3
Created March 5, 2018 17:34
fucking piece of shit zc.async connection root
>>> app._p_jar
<Connection at 7f22fc01cb50>
>>> conn.root()
{'Application': <Application at >, 'zc.async': <zc.async.queue.Queues object at 0x7f22f757d320>}
>>> conn.root()['zc.async']
@david-batranu
david-batranu / buildout.cfg
Created February 22, 2018 13:02
buildout-annotate
[pip-requirements]
recipe = plone.recipe.command
command = ${buildout:bin-directory}/buildout annotate |\
sed -n -e '1,/^\[versions\]$/d' -e '/^\[/,$d' -e '/^ /d' -e 's/= /==/' -e 'p' > requirements.txt
update-command = ${:command}
stop-on-error = false
nginx:
image: nginx:1.13-alpine
environment:
TZ: "Europe/Bucharest"
NGINX_CONF: |-
server {
listen 80;
location / {
proxy_pass http://remote;
}
@david-batranu
david-batranu / list_handlers.py
Created January 8, 2018 16:24
list event handlers
from pprint import pprint
import zope.component
gsm = zope.component.getGlobalSiteManager()
from zope.lifecycleevent import IObjectModifiedEvent
from Products.Archetypes.interfaces import IObjectEditedEvent
select = set([
IObjectEditedEvent,
IObjectModifiedEvent,
@david-batranu
david-batranu / setup.py
Created November 23, 2017 20:06
basic cython compile everything
# to test:
# pip install Cython
# run with CYTHON_BUILD=true setup.py bdist_wheel
def ext_modules():
from setuptools import Extension
from setuptools.extension import _have_cython
cython_build = os.environ.get('CYTHON_BUILD')
if not _have_cython() or not cython_build:
@david-batranu
david-batranu / loader.js
Last active September 21, 2017 14:44
progressive-image-loader-helper
// Progressive images
window.loadProgressive = (function(){
function fetchAndUpdateTarget(target, url, doneClass) {
var img = new Image();
img.onload = function() {
if (target.tagName === 'IMG') {
target.src = url;
}
else {
@david-batranu
david-batranu / buildout.cfg
Last active September 19, 2017 09:26
plone-wsgi
# Install uwsgi>=2.0.15 (requires build-essential and python-dev)
# adding it to eggs should also work, assuming you have gcc
[buildout]
parts +=
instance
uwsgi-app
uwsgi-run
[uwsgi-run]
ssh -f -g -L 3689:127.0.0.1:3689 -N username@hostname
avahi-publish-service sharename _daap._tcp 3689 &
@david-batranu
david-batranu / year_validator.py
Created February 28, 2017 21:13
functional implementation of a year validator
from functools import reduce
from functools import wraps
def log_in_out(func):
@wraps(func)
def wrapper(*args, **kwargs):
result = func(*args, **kwargs)
print('{} in: {}, out: {}'.format(func.__name__, args, result))
return result