X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/0b7e02cf796af7d3028efabeb37473f9198d0af2..c594f3c20b1c68cc056d2f674accba83bd3c63cd:/apps/api/utils.py?ds=sidebyside diff --git a/apps/api/utils.py b/apps/api/utils.py index 0e0468a0..c072d356 100644 --- a/apps/api/utils.py +++ b/apps/api/utils.py @@ -11,15 +11,16 @@ from piston.utils import rc import api.response -from wlrepo import MercurialLibrary +import wlrepo import settings class TextEmitter(Emitter): def render(self, request): return unicode(self.construct()) -Emitter.register('text', TextEmitter, 'text/plain; charset=utf-8') -Emitter.register('rawxml', TextEmitter, 'application/xml; charset=UTF-8') +Emitter.register('raw', TextEmitter, 'text/plain; charset=utf-8') +Emitter.register('rawhtml', TextEmitter, 'text/html; charset=utf-8') +Emitter.register('rawxml', TextEmitter, 'application/xml; charset=utf-8') class DjangoAuth(object): @@ -38,7 +39,7 @@ def validate_form(formclass, source='GET'): form = formclass(getattr(request, source), request.FILES) if not form.is_valid(): - errorlist = [{'field': k, 'errors': e} for k, e in form.errors.items()] + errorlist = [{'field': k, 'errors': str(e)} for k, e in form.errors.items()] return api.response.BadRequest().django_response(errorlist) kwargs['form'] = form @@ -49,11 +50,21 @@ def validate_form(formclass, source='GET'): def hglibrary(func): @wraps(func) def decorated(self, *args, **kwargs): - l = MercurialLibrary(settings.REPOSITORY_PATH) + l = wlrepo.open_library(settings.REPOSITORY_PATH, 'hg') kwargs['lib'] = l return func(self, *args, **kwargs) return decorated - - - + + + +import re +import locale + +NAT_EXPR = re.compile(r'(\d+)', re.LOCALE | re.UNICODE) +def natural_order(get_key=lambda x: x): + def getter(key): + key = [int(x) if n%2 else locale.strxfrm(x.encode('utf-8')) for (n,x) in enumerate(NAT_EXPR.split(get_key(key))) ] + return key + + return getter