from django.core.exceptions import PermissionDenied
from social_core.exceptions import AuthException


class AjaxError(Exception):
    """You've tried to do something over AJAX but misago blurped"""

    def __init__(self, message=None, code=406):
        self.message = message
        self.code = code


class Banned(PermissionDenied):
    def __init__(self, ban=None):
        if ban:
            self.ban = ban


class SocialAuthFailed(AuthException):
    """Exception used to return error messages from Misago's social auth to user."""
    def __init__(self, backend, message):
        self.backend = backend
        self.message = message


class SocialAuthBanned(AuthException):
    """Exception used to return ban message from Misago's social auth to user."""
    def __init__(self, backend, ban):
        self.backend = backend
        self.ban = ban


class ExplicitFirstPage(Exception):
    """The url that was used to reach view contained explicit first page"""
    pass


class OutdatedSlug(Exception):
    """The url that was used to reach view contained outdated slug"""
    pass
