X-Git-Url: https://git.mdrn.pl/redakcja.git/blobdiff_plain/b2d72160e2a68991c66ea6017b871d7f42c0b29d..7f81e731d07fa4bdd37887b77c0438395155ec91:/apps/api/utils.py diff --git a/apps/api/utils.py b/apps/api/utils.py index 67e8ea5a..93e54be0 100644 --- a/apps/api/utils.py +++ b/apps/api/utils.py @@ -1,25 +1,57 @@ # -*- encoding: utf-8 -*- -__author__= "Łukasz Rekucki" +__author__ = "Łukasz Rekucki" __date__ = "$2009-09-20 21:48:03$" __doc__ = "Module documentation." +from functools import wraps from piston.emitters import Emitter from piston.utils import rc +import api.response + +from wlrepo import MercurialLibrary +import settings + class TextEmitter(Emitter): def render(self, request): return unicode(self.construct()) -Emitter.register('text', TextEmitter, 'text/plain; 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): def is_authenticated(self, request): return request.user.is_authenticated() def challenge(self): - return rc.FORBIDDEN \ No newline at end of file + return rc.FORBIDDEN + + +def validate_form(formclass, source='GET'): + + def decorator(func): + @wraps(func) + def decorated(self, request, * args, ** kwargs): + form = formclass(getattr(request, source), request.FILES) + + if not form.is_valid(): + errorlist = [{'field': k, 'errors': str(e)} for k, e in form.errors.items()] + return api.response.BadRequest().django_response(errorlist) + + kwargs['form'] = form + return func(self, request, * args, ** kwargs) + return decorated + return decorator + +def hglibrary(func): + @wraps(func) + def decorated(self, *args, **kwargs): + l = MercurialLibrary(settings.REPOSITORY_PATH) + kwargs['lib'] = l + return func(self, *args, **kwargs) + return decorated +