Mercurial > kallithea
view scripts/generate-ini.py @ 8588:210e76d69b62
mysql: bump charset to to 'utf8mb4' to get full UTF-8 support
We used to use 'utf8', but in MySQL, this is just an alias for 'utf8mb3' which
isn't full unicode. 'utf8mb4' has less surprises (especially if used with the
'utf8mb4_unicode_ci' collation).
MySQL character sets for server, database, tables, and connection are set
independently. Until now, we have specified 'utf8' when creating tables to
overrule the database charset and in the default MySQL connection URL.
For existing databases, it is recommended to change encoding (and collation) by
altering the each of the tables inside it as described on
https://stackoverflow.com/questions/6115612/how-to-convert-an-entire-mysql-database-characterset-and-collation-to-utf-8 .
author | Mads Kiilerich <mads@kiilerich.com> |
---|---|
date | Mon, 15 Jun 2020 16:57:20 +0200 |
parents | 6eb1f66ac23f |
children | 495dea7c2a13 |
line wrap: on
line source
#!/usr/bin/env python3 """ Based on kallithea/lib/paster_commands/template.ini.mako, generate development.ini """ import re from kallithea.lib import inifile # files to be generated from the mako template ini_files = [ ('development.ini', { '[server:main]': { 'host': '0.0.0.0', }, '[app:main]': { 'debug': 'true', 'app_instance_uuid': 'development-not-secret', 'session.secret': 'development-not-secret', }, '[logger_root]': { 'handlers': 'console_color', }, '[logger_routes]': { 'level': 'DEBUG', }, '[logger_beaker]': { 'level': 'DEBUG', }, '[logger_templates]': { 'level': 'INFO', }, '[logger_kallithea]': { 'level': 'DEBUG', }, '[logger_tg]': { 'level': 'DEBUG', }, '[logger_gearbox]': { 'level': 'DEBUG', }, '[logger_whoosh_indexer]': { 'level': 'DEBUG', }, }, ), ] def main(): # make sure all mako lines starting with '#' (the '##' comments) are marked up as <text> makofile = inifile.template_file print('reading:', makofile) mako_org = open(makofile).read() mako_no_text_markup = re.sub(r'</?%text>', '', mako_org) mako_marked_up = re.sub(r'\n##(.*)', r'\n<%text>##</%text>\1', mako_no_text_markup, flags=re.MULTILINE) if mako_marked_up != mako_org: print('writing:', makofile) open(makofile, 'w').write(mako_marked_up) lines = re.findall(r'\n(# [^ ].*)', mako_marked_up) if lines: print('ERROR: the template .ini file convention is to use "## Foo Bar" for text comments and "#foo = bar" for disabled settings') for line in lines: print(line) raise SystemExit(1) # create ini files for fn, settings in ini_files: print('updating:', fn) inifile.create(fn, None, settings) if __name__ == '__main__': main()