From a7a85ff7ecefe5dc543a171534e5954433e78350 Mon Sep 17 00:00:00 2001 From: Antoine Durand-Gasselin Date: Wed, 8 Sep 2010 13:57:55 +0200 Subject: [PATCH] [wiki/patches] patches pour lee moinmoin du crans MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Ces patches sont pour la version 1.9.2 de moinmoin Pour le moinmoin du crans, récupérer les ressources statiques dans git et appliquer les patches Actuellement, on est encore sur le paquet custom du crans, mais avec les ressources statiques du git. On migrera sans doute un peu avant squeeze ? darcs-hash:20100908115755-bd074-f9fb78bcf8e62e8cee632acffe65b6d0d83907ab.gz --- wiki/patches/moin-changes-show-hostname.patch | 32 ++++++ wiki/patches/moin-more-icons.patch | 88 +++++++++++++++ .../moin1.9.2-categoriepagepublique.patch | 104 ++++++++++++++++++ wiki/patches/moin1.9.2-theme-vhost.patch | 31 ++++++ 4 files changed, 255 insertions(+) create mode 100644 wiki/patches/moin-changes-show-hostname.patch create mode 100644 wiki/patches/moin-more-icons.patch create mode 100644 wiki/patches/moin1.9.2-categoriepagepublique.patch create mode 100644 wiki/patches/moin1.9.2-theme-vhost.patch diff --git a/wiki/patches/moin-changes-show-hostname.patch b/wiki/patches/moin-changes-show-hostname.patch new file mode 100644 index 00000000..822474f7 --- /dev/null +++ b/wiki/patches/moin-changes-show-hostname.patch @@ -0,0 +1,32 @@ +diff -urN MoinMoin/user.py b/MoinMoin/user.py +--- a/MoinMoin/user.py 2008-07-14 21:11:24.000000000 +0200 ++++ b/MoinMoin/user.py 2009-10-11 01:11:52.000000000 +0200 +@@ -27,7 +27,9 @@ + from MoinMoin import config, caching, wikiutil, i18n, events + from MoinMoin.util import timefuncs, filesys, random_string + from MoinMoin.wikiutil import url_quote_plus +- ++### HACK SAUVAGE 1/2 ++import socket ++### FIN HACK 1/2 + + def getUserList(request): + """ Get a list of all (numerical) user IDs. +@@ -1023,7 +1025,16 @@ + if self.name: + return self.wikiHomeLink() + else: +- return self.host() ++ ### HACK SAUVAGE 2/2 ++ # return self.host() ++ try: ++ hostname = socket.gethostbyaddr(self.host())[0] ++ except socket.herror: ++ hostname = self.host() ++ if (hostname+'.').split('.', 1)[1] in ['crans.org.', 'wifi.crans.org.']: ++ hostname = hostname.split('.',1)[0] ++ return hostname ++ ### FIN HACK 2/2 + + def generate_recovery_token(self): + key = random_string(64, "abcdefghijklmnopqrstuvwxyz0123456789") diff --git a/wiki/patches/moin-more-icons.patch b/wiki/patches/moin-more-icons.patch new file mode 100644 index 00000000..45fe951e --- /dev/null +++ b/wiki/patches/moin-more-icons.patch @@ -0,0 +1,88 @@ +diff -urN MoinMoin/config/__init__.py b/MoinMoin/config/__init__.py +--- a/MoinMoin/config/__init__.py 2008-05-19 20:50:17.000000000 +0200 ++++ b/MoinMoin/config/__init__.py 2009-11-14 13:39:29.000000000 +0100 +@@ -1,4 +1,4 @@ +-# -*- coding: iso-8859-1 -*- ++# -*- coding: utf-8 -*- + """ + MoinMoin - site-wide configuration defaults (NOT per single wiki!) + +@@ -79,5 +79,7 @@ + 'notes', + ] + +-smileys = (r"X-( :D <:( :o :( :) B) :)) ;) /!\ (!) :-? :\ >:> |) " + +- r":-( :-) B-) :-)) ;-) |-) (./) {OK} {X} {i} {1} {2} {3} {*} {o}").split() ++smileys = (ur"X-( :D <:( :o :( :) B) :)) ;) /!\ (!) :-? :\ >:> |) " + ++ ur":-( :-) B-) :-)) ;-) |-) (./) {OK} {X} {i} {1} {2} {3} {*} {o} "+ ++ u"{~} {8} {A} {á¹½} " + ++ u"{da} {de} {en} {es} {fi} {fr} {it} {ja} {ko} {nl} {pt} {sv} {us} {zh}").split() +diff -urN MoinMoin/theme/__init__.py b/MoinMoin/theme/__init__.py +--- a/MoinMoin/theme/__init__.py 2008-07-05 22:21:26.000000000 +0200 ++++ b/MoinMoin/theme/__init__.py 2009-11-14 13:41:01.000000000 +0100 +@@ -1,4 +1,4 @@ +-# -*- coding: iso-8859-1 -*- ++# -*- coding: utf-8 -*- + """ + MoinMoin - Theme Package + +@@ -117,6 +117,29 @@ + # try {*}{*}{o} + '{*}': ("{*}", 'star_on.png', 15, 15), + '{o}': ("{o}", 'star_off.png', 15, 15), ++ ++ ### HACK SAUVAGE 1/2 ++ '{8}': ("{8}", 'tux16.png', 16, 16), ++ '{~}': ("{~}", 'win16.png', 16, 16), ++ u'{á¹½}': (u'{á¹½}', 'vista16.png', 16, 16), ++ '{A}': ('{A}', 'apple.png', 16, 16), ++ ++ '{da}': ('{da}', 'flag-da.png', 18, 12), ++ '{de}': ('{de}', 'flag-de.png', 18, 12), ++ '{en}': ('{en}', 'flag-en.png', 18, 12), ++ '{es}': ('{es}', 'flag-es.png', 18, 12), ++ '{fi}': ('{fi}', 'flag-fi.png', 18, 12), ++ '{fr}': ('{fr}', 'flag-fr.png', 18, 12), ++ '{it}': ('{it}', 'flag-it.png', 18, 12), ++ '{ja}': ('{ja}', 'flag-ja.png', 18, 12), ++ '{ko}': ('{ko}', 'flag-ko.png', 18, 12), ++ '{nl}': ('{nl}', 'flag-nl.png', 18, 12), ++ '{pt}': ('{pt}', 'flag-pt.png', 18, 12), ++ '{sv}': ('{sv}', 'flag-sv.png', 18, 12), ++ '{us}': ('{us}', 'flag-us.png', 18, 12), ++ '{zh}': ('{zh}', 'flag-zh.png', 18, 12) ++ ### FIN HACK 1/2 ++ + } + del _ + +@@ -532,7 +555,9 @@ + except KeyError, err: + alt = 'KeyError: %s' % str(err) + alt = self.request.getText(alt) +- tag = self.request.formatter.image(src=img, alt=alt, width=w, height=h, **kw) ++ #### HACK SAUVAGE 2/2 ++ tag = self.request.formatter.image(src=img, alt=alt, **kw) ++ #### FIN HACK 2/2 + return tag + + def make_iconlink(self, which, d): +@@ -1577,10 +1602,18 @@ + + meta_keywords = request.getPragma('keywords') + meta_desc = request.getPragma('description') ++ meta_scripts = request.getPragma('scripts') ++ meta_stylesheets = request.getPragma('stylesheets') + if meta_keywords: + user_head.append('\n' % wikiutil.escape(meta_keywords, 1)) + if meta_desc: + user_head.append('\n' % wikiutil.escape(meta_desc, 1)) ++ if meta_scripts: ++ for meta_script in meta_scripts.split(): ++ user_head.append('\n' % wikiutil.escape(meta_script, 1)) ++ if meta_stylesheets: ++ for meta_stylesheet in meta_stylesheets.split(): ++ user_head.append('' % wikiutil.escape(meta_stylesheet, 1)) + + # search engine precautions / optimization: + # if it is an action or edit/search, send query headers (noindex,nofollow): diff --git a/wiki/patches/moin1.9.2-categoriepagepublique.patch b/wiki/patches/moin1.9.2-categoriepagepublique.patch new file mode 100644 index 00000000..c4cddd35 --- /dev/null +++ b/wiki/patches/moin1.9.2-categoriepagepublique.patch @@ -0,0 +1,104 @@ +--- a/MoinMoin/security/__init__.py 2010-02-28 16:28:46.000000000 +0100 ++++ b/MoinMoin/security/__init__.py 2010-06-03 18:10:16.000000000 +0200 +@@ -24,6 +24,12 @@ + from MoinMoin import wikiutil, user + from MoinMoin.Page import Page + ++### HACK SAUVAGE 1/5 ++import sys ++sys.path.append('/usr/scripts/gestion/') ++from iptools import is_crans ++### FIN HACK 1/5 ++ + ############################################################################# + ### Basic Permissions Interface -- most features enabled by default + ############################################################################# +@@ -251,7 +257,10 @@ + Default: ["read", "write", "delete", "admin"] + ''' + +- special_users = ["All", "Known", "Trusted"] # order is important ++ #special_users = ["All", "Known", "Trusted"] # order is important ++ ### HACK SAUVAGE 2/5 ++ special_users = ["All", "Known", "Trusted", "Crans", "NoCrans"] # order is important ++ ### FIN HACK 2/5 + + def __init__(self, cfg, lines=[]): + """Initialize an ACL, starting from . +@@ -343,6 +352,10 @@ + return acl_lines + + def _special_All(self, request, name, dowhat, rightsdict): ++ ### HACK SAUVAGE 3/5 ++ if dowhat == "read" and is_page_public(request): ++ return True ++ ### FIN HACK 3/5 + return rightsdict.get(dowhat) + + def _special_Known(self, request, name, dowhat, rightsdict): +@@ -365,6 +378,29 @@ + return rightsdict.get(dowhat) + return None + ++ ### HACK SAUVAGE 4/5 ++ def _requete_interne(self, request): ++ try: ++ if is_crans(request.remote_addr): ++ return True ++ except: ++ pass ++ ++ return False ++ ++ def _special_Crans(self, request, name, dowhat, rightsdict): ++ if self._requete_interne(request): ++ return rightsdict.get(dowhat) ++ return None ++ ++ def _special_NoCrans(self, request, name, dowhat, rightsdict): ++ if dowhat == "read" and is_page_public(request): ++ return True ++ if not self._requete_interne(request): ++ return rightsdict.get(dowhat) ++ return None ++ ### FIN HACK 4/5 ++ + def __eq__(self, other): + return self.acl_lines == other.acl_lines + +@@ -456,3 +492,9 @@ + pi, dummy = wikiutil.get_processing_instructions(text) + acl_lines = [args for verb, args in pi if verb == 'acl'] + return AccessControlList(request.cfg, acl_lines) ++ ++### HACK SAUVAGE 5/5 ++def is_page_public(request): ++ ## On recherche si la page est publique ++ return u'CatégoriePagePublique' in request.page.getCategories(request) ++### FIN HACK 5/5 +--- a/MoinMoin/Page.py 2010-02-28 16:28:45.000000000 +0100 ++++ b/MoinMoin/Page.py 2010-06-03 18:07:14.000000000 +0200 +@@ -1082,8 +1082,10 @@ + if emit_headers: + request.content_type = "%s; charset=%s" % (self.output_mimetype, self.output_charset) + if page_exists: +- if not request.user.may.read(self.page_name): ++ ### HACK SAUVAGE 1/2 ++ if not request.user.may.read(self.page_name) and not request.mode_getpagelinks: + request.status_code = 403 ++ ### FIN HACK 1/2 + else: + request.status_code = 200 + if not request.cacheable: +@@ -1177,8 +1179,10 @@ + if not send_special: + if not page_exists and not body: + special = 'missing' +- elif not request.user.may.read(self.page_name): ++ ### HACK SAUVAGE 2/2 ++ elif not request.user.may.read(self.page_name) and not request.mode_getpagelinks: + special = 'denied' ++ ### FIN HACK 2/2 + + # if we have a special page, output it, unless + # - we should only output content (this is for say the pagelinks formatter) diff --git a/wiki/patches/moin1.9.2-theme-vhost.patch b/wiki/patches/moin1.9.2-theme-vhost.patch new file mode 100644 index 00000000..dc8efeb6 --- /dev/null +++ b/wiki/patches/moin1.9.2-theme-vhost.patch @@ -0,0 +1,31 @@ +--- a/MoinMoin/config/multiconfig.py 2010-04-03 16:28:21.000000000 +0200 ++++ b/MoinMoin/config/multiconfig.py 2010-06-03 18:27:43.000000000 +0200 +@@ -855,6 +855,7 @@ + + ('theme_default', 'modernized', + "the name of the theme that is used by default (see HelpOnThemes)"), ++ ('theme_vhost', {}, "If a key matches the vhost, forces its value as the theme."), + ('theme_force', False, + "if True, do not allow to change the theme"), + +--- a/MoinMoin/web/contexts.py 2010-06-03 18:29:00.000000000 +0200 ++++ b/MoinMoin/web/contexts.py 2010-06-03 18:42:47.000000000 +0200 +@@ -10,7 +10,7 @@ + + import time, inspect, StringIO, sys, warnings + +-from werkzeug import Headers, http_date, create_environ, redirect, abort ++from werkzeug import Headers, http_date, create_environ, redirect, abort, get_host + from werkzeug.exceptions import Unauthorized, NotFound + + from MoinMoin import i18n, error, user, config, wikiutil +@@ -184,6 +184,9 @@ + theme_name = self.cfg.theme_default + else: + theme_name = self.user.theme_name ++ ### HACK SAUVAGE 1/1 ++ theme_name = self.cfg.theme_vhost.get(get_host(self.environ), theme_name) ++ ### FIN HACK 1/1 + load_theme_fallback(self, theme_name) + +