ctxis/lather

View on GitHub
lather/decorators.py

Summary

Maintainability
A
1 hr
Test Coverage
# -*- coding: utf-8 -*-


def require_client(func):
    def wrapper(*args, **kwargs):
        if args[0].__class__.__name__ == 'BaseQuerySet' or \
                        args[0].__class__.__name__ == 'NavQuerySet' or \
                        args[0].__class__.__name__ == 'QuerySet':
            if args[0].model.client:
                return func(*args, **kwargs)
            else:
                raise Exception('Client not found')
        else:
            if args[0].client:
                return func(*args, **kwargs)
            else:
                raise Exception('Client not found')
    return wrapper


# TODO: Needs work
'''def require_key(func):
    def wrapper(*args, **kwargs):
        if not kwargs.get(args[0].model._meta.default_id):
            raise Exception('Primary key not found: %s',
                            args[0].model._meta.default_id)
        else:
            return func(*args, **kwargs)
    return wrapper'''


def require_default(func):
    def wrapper(*args, **kwargs):
        if not kwargs.get('defaults'):
            raise Exception('This function require an argument with name '
                            'defaults')
        else:
            return func(*args, **kwargs)
    return wrapper