Remove Twisted web server
Twisted web server is not used anymore and has been superseded by
pyramid many years ago. Furthermore, our usage is not compatible with
Python 3. So we drop the "etwist" sub-package.
As a consequence, "all-in-one" configuration type gets dropped as it was
Twisted-specific. We resurrect it in cubicweb/pyramid/config.py by only
keeping options used by the "pyramid". Similarly, we introduce a
AllInOneCreateHandler in cubicweb/pyramid/pyramidctl.py that is
basically the one that lived in cubicweb/etwist/twctl.py and is used to
create the "all-in-one" instance. Added a TODO here about "pyramid.ini"
that could be generated at the end of bootstrap() method.
In cubicweb/devtools/httptest.py, CubicWebServerTC is now equivalent to
CubicWebWsgiTC and the latter is dropped.
#!/usr/bin/python
"""usage: fix-po-encodings [filename...]
change the encoding of the po files passed as arguments to utf-8
"""
import sys
import re
import codecs
def change_encoding(filename, target='UTF-8'):
fdesc = open(filename)
data = fdesc.read()
fdesc.close()
encoding = find_encoding(data)
if encoding == target:
return
data = fix_encoding(data, target)
data = unicode(data, encoding)
fdesc = codecs.open(filename, 'wb', encoding=target)
fdesc.write(data)
fdesc.close()
def find_encoding(data):
regexp = re.compile(r'"Content-Type:.* charset=([a-zA-Z0-9-]+)\\n"', re.M)
mo = regexp.search(data)
if mo is None:
raise ValueError('No encoding declaration')
return mo.group(1)
def fix_encoding(data, target_encoding):
regexp = re.compile(r'("Content-Type:.* charset=)(.*)(\\n")', re.M)
return regexp.sub(r'\1%s\3' % target_encoding, data)
for filename in sys.argv[1:]:
print filename
change_encoding(filename)