Skip to content

Instantly share code, notes, and snippets.

View jensens's full-sized avatar
🕶️
Available for training, coaching and trouble-shooting (as usual)..

Jens W. Klein jensens

🕶️
Available for training, coaching and trouble-shooting (as usual)..
View GitHub Profile
@jensens
jensens / bootstrap.py
Last active August 29, 2015 13:56
Jensens Plone Minimal buildout
##############################################################################
#
# Copyright (c) 2006 Zope Foundation and Contributors.
# All Rights Reserved.
#
# This software is subject to the provisions of the Zope Public License,
# Version 2.1 (ZPL). A copy of the ZPL should accompany this distribution.
# THIS SOFTWARE IS PROVIDED "AS IS" AND ANY AND ALL EXPRESS OR IMPLIED
# WARRANTIES ARE DISCLAIMED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
# WARRANTIES OF TITLE, MERCHANTABILITY, AGAINST INFRINGEMENT, AND FITNESS
@jensens
jensens / configure.zcml
Created May 7, 2014 12:54
disable set login time every time a a user logs in
<configure xmlns="http://namespaces.zope.org/zope"
xmlns:monkey="http://namespaces.plone.org/monkey">
<include package="collective.monkeypatcher" file="meta.zcml" />
<monkey:patch
description="Patch setLoginTimes to disable that feature."
class="Products.PlonePAS.tools.membership.MembershipTool"
original="setLoginTimes"
replacement=".patches.setLoginTimes"
@jensens
jensens / howto
Created December 15, 2014 17:33
avoid setuptools 8 in a buildout
1) use bootstrap.py from http://downloads.buildout.org/2/bootstrap.py
2) edit buildout.cfg and pin versions to:
[versions]
setuptools = 7.0
zc.buildout = 2.2.5
3) create a virtualenv as usal:
@jensens
jensens / example-1-after.xml
Created March 6, 2015 21:33
xml_pp formatting examples
<configure
xmlns="http://namespaces.zope.org/zope"
xmlns:browser="http://namespaces.zope.org/browser"
xmlns:security="http://namespaces.zope.org/security"
xmlns:zmi="http://namespaces.zope.org/zmi">
<!-- Standard configuration directives -->
<include
file="configuration-meta.zcml"
package=".Configuration"
/>
@jensens
jensens / xmlppformat.py
Last active August 29, 2015 14:16
Sublime 3 xml_pp (xmltwig) based xml auto formatter.
"""
Sublime 3 xml_pp (xmltwig) based xml auto formatter.
Setup in Sublime:
- sudo apt-get install xml-twig-tools
- in Sublime go to menu: Tools -> New Plugin...
- paste this file into the editor.
- save: use the preset location (~/.config/sublime-text-3/Packages/User)
and name it exactly "xmlppformat.py".
- in Sublime go to menu: Preferences -> Key Bindings - User
- add an keybinding i.e.:
# -*- coding: utf-8 -*-
import csv
import pprint
import memcache
import pylibmc
import random
import string
import time
CYCLES = 10000
@jensens
jensens / versionfinder.py
Created February 8, 2011 11:20
parses zopes instance file and returns versions used (for use in buildout)
# versionfinder
import re
regexp = re.compile('.*\/(.*)-(.*)-py')
with open('instance', 'r') as ins:
for line in ins.readlines():
res = regexp.match(line)
if res is None:
continue
print "%s = %s" % res.groups()
@jensens
jensens / actions.py
Created March 2, 2011 16:10
actions to set a Navigation Root
from zope.interface import Interface
from zope.interface import directlyProvides
from zope.interface import noLongerProvides
from Products.Five.browser import BrowserView
from Products.CMFPlone.interfaces import INavigationRoot
from Products.CMFPlone import PloneMessageFactory as _
class IPossibleNavigationRoot(Interface):
pass
from Products.Five.browser import BrowserView
class LangRedir(BrowserView):
"""language redirect"""
def __call__(self):
target = 'en-ie'
for lang in self.context.portal_languages.getRequestLanguages():
if lang in ('de-at', 'de-ch'):
target = 'de-at'
@jensens
jensens / dcwf2dot.py
Created March 1, 2012 22:57
generates dot file from workflows (zope python script)
context.REQUEST.response.setHeader('Content-Type', 'text/plain')
print "digraph %s {" % context.getId()
wf = context
state_to_trans = []
for state in wf.states.values():
roles = state.getAvailableRoles()
roles.sort()
permtable = [ ['<FONT POINT-SIZE="10">%s</FONT>' % _ for _ in ['permission', 'acquired'] + roles ] ]
for perm in state.getManagedPermissions():
pinfo = state.getPermissionInfo(perm)