Beispiel #1
0
    def get_context_data(
            self, *args,
            **kwargs):  #add data not out of database or another mdoel
        context = super(TweetListView, self).get_context_data(
            *args, **kwargs)  #inherit data from class
        qs_user = User.objects.filter(username=self.request.user)
        from maintenance_mode.utils import get_client_ip_address
        client_ip_1 = get_client_ip_address(self.request)
        logger.info(client_ip_1)
        from ipware import get_client_ip
        client_ip, is_routable = get_client_ip(self.request)
        logger.info(client_ip)
        logger.info(is_routable)

        context['create_form'] = TweetModelForm()
        context['create_form_2'] = ProfileImage()
        context['create_form_3'] = ProfileName()
        context['create_url'] = reverse_lazy("tweet:create")
        context['create_url_2'] = str(self.request.user) + "/update/"
        qs = UserProfile.objects.filter(user__exact=self.request.user)
        context['points'] = qs.values('points').first()["points"]
        context['name'] = qs.values('name').first()["name"]
        context['image'] = qs.values('image').first()["image"]
        context['user_id_1'] = qs_user.values('id').first()["id"]
        context['user_id_2'] = qs.values('id').first()["id"]
        if context['image'] == "no_img":
            context['image'] = "static/Hiyoko.png"
        logger.info("what's happening???")
        try:
            qs = Payment.objects.filter(user=self.request.user)
            id = qs.values('purchase_id').first()["purchase_id"]
            logger.info(qs)
            logger.info(id)
            try:
                api = CoingateAPI(auth_token=auth_token, environment='live')
                result = api.checkout(
                    id
                )  # if there were no such an order, it would return error
                logger.info(result)
                if result['status'] == 'paid':
                    user_obj = UserProfile.objects.filter(
                        user=self.request.user).first()
                    points_add = qs.values('points').first()["points"]
                    points_original = user_obj.points
                    points = points_original + points_add
                    user_obj.points = points
                    user_obj.save()
                    qs.delete()
                else:
                    logger.info(result['status'])
            except api_error.APIError as e:
                logger.info(e)
        except TypeError as e:
            logger.info(e)
            logger.info(qs)
            logger.info("No data in queryset")
        return context
Beispiel #2
0
    def test_middleware_ignore_ip_addresses(self):

        self.__reset_state()

        settings.MAINTENANCE_MODE = True
        request = self.__get_anonymous_user_request('/')

        settings.MAINTENANCE_MODE_IGNORE_IP_ADDRESSES = (utils.get_client_ip_address(request), )
        response = self.middleware.process_request(request)
        self.assertEqual(response, None)

        settings.MAINTENANCE_MODE_IGNORE_IP_ADDRESSES = None
        response = self.middleware.process_request(request)
        self.assertMaintenanceMode(response)
    def test_middleware_ignore_ip_addresses(self):

        self.__reset_state()

        settings.MAINTENANCE_MODE = True
        request = self.__get_anonymous_user_request('/')

        settings.MAINTENANCE_MODE_IGNORE_IP_ADDRESSES = (
            utils.get_client_ip_address(request), )
        response = self.middleware.process_request(request)
        self.assertEqual(response, None)

        settings.MAINTENANCE_MODE_IGNORE_IP_ADDRESSES = None
        response = self.middleware.process_request(request)
        self.assertMaintenanceResponse(response)
    def test_middleware_ignore_ip_addresses_get_client_ip_address(self):

        self.__reset_state()

        settings.MAINTENANCE_MODE = True
        request = self.__get_anonymous_user_request('/')
        request.META['CLIENT_IP_ADDRESS_FIELD'] = '127.0.0.2'

        settings.MAINTENANCE_MODE_IGNORE_IP_ADDRESSES = (
            request.META['CLIENT_IP_ADDRESS_FIELD'], )
        settings.MAINTENANCE_MODE_GET_CLIENT_IP_ADDRESS = \
            'tests.tests.get_client_ip_address'
        response = self.middleware.process_request(request)
        self.assertEqual(response, None)

        settings.MAINTENANCE_MODE_GET_CLIENT_IP_ADDRESS = \
            'tests.tests.get_client_ip_address_invalid'
        get_client_ip_address_error = False
        try:
            response = self.middleware.process_request(request)
        except ImproperlyConfigured:
            get_client_ip_address_error = True
        self.assertEqual(get_client_ip_address_error, True)

        settings.MAINTENANCE_MODE_GET_CLIENT_IP_ADDRESS = \
            'tests.tests_invalid.get_client_ip_address'
        get_client_ip_address_error = False
        try:
            response = self.middleware.process_request(request)
        except ImproperlyConfigured:
            get_client_ip_address_error = True
        self.assertEqual(get_client_ip_address_error, True)

        settings.MAINTENANCE_MODE_IGNORE_IP_ADDRESSES = (
            utils.get_client_ip_address(request), )
        settings.MAINTENANCE_MODE_GET_CLIENT_IP_ADDRESS = None
        response = self.middleware.process_request(request)
        self.assertEqual(response, None)

        settings.MAINTENANCE_MODE_IGNORE_IP_ADDRESSES = None
        settings.MAINTENANCE_MODE_GET_CLIENT_IP_ADDRESS = None
        response = self.middleware.process_request(request)
        self.assertMaintenanceResponse(response)
    def test_middleware_ignore_ip_addresses_get_client_ip_address(self):

        self.__reset_state()

        settings.MAINTENANCE_MODE = True
        request = self.__get_anonymous_user_request('/')
        request.META['CLIENT_IP_ADDRESS_FIELD'] = '127.0.0.2'

        settings.MAINTENANCE_MODE_IGNORE_IP_ADDRESSES = (
            request.META['CLIENT_IP_ADDRESS_FIELD'], )
        settings.MAINTENANCE_MODE_GET_CLIENT_IP_ADDRESS = \
            'tests.tests.get_client_ip_address'
        response = self.middleware.process_request(request)
        self.assertEqual(response, None)

        settings.MAINTENANCE_MODE_GET_CLIENT_IP_ADDRESS = \
            'tests.tests.get_client_ip_address_invalid'
        get_client_ip_address_error = False
        try:
            response = self.middleware.process_request(request)
        except ImproperlyConfigured:
            get_client_ip_address_error = True
        self.assertEqual(get_client_ip_address_error, True)

        settings.MAINTENANCE_MODE_GET_CLIENT_IP_ADDRESS = \
            'tests.tests_invalid.get_client_ip_address'
        get_client_ip_address_error = False
        try:
            response = self.middleware.process_request(request)
        except ImproperlyConfigured:
            get_client_ip_address_error = True
        self.assertEqual(get_client_ip_address_error, True)

        settings.MAINTENANCE_MODE_IGNORE_IP_ADDRESSES = (
            utils.get_client_ip_address(request), )
        settings.MAINTENANCE_MODE_GET_CLIENT_IP_ADDRESS = None
        response = self.middleware.process_request(request)
        self.assertEqual(response, None)

        settings.MAINTENANCE_MODE_IGNORE_IP_ADDRESSES = None
        settings.MAINTENANCE_MODE_GET_CLIENT_IP_ADDRESS = None
        response = self.middleware.process_request(request)
        self.assertMaintenanceResponse(response)
def need_maintenance_response(request):
    """
    Tells if the given request needs a maintenance response or not.
    """

    try:
        view_match = resolve(request.path)
        view_func = view_match[0]
        view_dict = view_func.__dict__

        view_force_maintenance_mode_off = view_dict.get(
            'force_maintenance_mode_off', False)
        if view_force_maintenance_mode_off:
            # view has 'force_maintenance_mode_off' decorator
            return False

        view_force_maintenance_mode_on = view_dict.get(
            'force_maintenance_mode_on', False)
        if view_force_maintenance_mode_on:
            # view has 'force_maintenance_mode_on' decorator
            return True

    except Resolver404:
        pass

    if not get_maintenance_mode():
        return False

    try:
        url_off = reverse('maintenance_mode_off')

        resolve(url_off)

        if url_off == request.path_info:
            return False

    except NoReverseMatch:
        # maintenance_mode.urls not added
        pass

    if hasattr(request, 'user'):

        if django.VERSION < (1, 10):
            if settings.MAINTENANCE_MODE_IGNORE_ANONYMOUS_USER \
                    and request.user.is_anonymous():
                return False

            if settings.MAINTENANCE_MODE_IGNORE_AUTHENTICATED_USER \
                    and request.user.is_authenticated():
                return False
        else:
            if settings.MAINTENANCE_MODE_IGNORE_ANONYMOUS_USER \
                    and request.user.is_anonymous:
                return False

            if settings.MAINTENANCE_MODE_IGNORE_AUTHENTICATED_USER \
                    and request.user.is_authenticated:
                return False

        if settings.MAINTENANCE_MODE_IGNORE_STAFF \
                and request.user.is_staff:
            return False

        if settings.MAINTENANCE_MODE_IGNORE_SUPERUSER \
                and request.user.is_superuser:
            return False

    if settings.MAINTENANCE_MODE_IGNORE_ADMIN_SITE:

        try:
            request_path = request.path if request.path else ''
            if not request_path.endswith('/'):
                request_path += '/'

            admin_url = reverse('admin:index')
            if request_path.startswith(admin_url):
                return False

        except NoReverseMatch:
            # admin.urls not added
            pass

    if settings.MAINTENANCE_MODE_IGNORE_TESTS:

        is_testing = False

        if (len(sys.argv) > 0 and 'runtests' in sys.argv[0]) \
                or (len(sys.argv) > 1 and sys.argv[1] == 'test'):
            # python runtests.py | python manage.py test | python
            # setup.py test | django-admin.py test
            is_testing = True

        if is_testing:
            return False

    if settings.MAINTENANCE_MODE_IGNORE_IP_ADDRESSES:

        if settings.MAINTENANCE_MODE_GET_CLIENT_IP_ADDRESS:
            try:
                get_client_ip_address_func = import_string(
                    settings.MAINTENANCE_MODE_GET_CLIENT_IP_ADDRESS)
            except ImportError:
                raise ImproperlyConfigured(
                    'settings.MAINTENANCE_MODE_GET_CLIENT_IP_ADDRESS '
                    'is not a valid function path.')
            else:
                client_ip_address = get_client_ip_address_func(request)
        else:
            client_ip_address = get_client_ip_address(request)

        for ip_address in settings.MAINTENANCE_MODE_IGNORE_IP_ADDRESSES:

            ip_address_re = re.compile(ip_address)

            if ip_address_re.match(client_ip_address):
                return False

    if settings.MAINTENANCE_MODE_IGNORE_URLS:

        for url in settings.MAINTENANCE_MODE_IGNORE_URLS:

            if not isinstance(url, pattern_class):
                url = str(url)
            url_re = re.compile(url)

            if url_re.match(request.path_info):
                return False

    if settings.MAINTENANCE_MODE_REDIRECT_URL:

        redirect_url_re = re.compile(
            settings.MAINTENANCE_MODE_REDIRECT_URL)

        if redirect_url_re.match(request.path_info):
            return False

    return True
Beispiel #7
0
def need_maintenance_response(request):
    """
    Tells if the given request needs a maintenance response or not.
    """

    try:
        view_match = resolve(request.path)
        view_func = view_match[0]
        view_dict = view_func.__dict__

        view_force_maintenance_mode_off = view_dict.get(
            'force_maintenance_mode_off', False)
        if view_force_maintenance_mode_off:
            # view has 'force_maintenance_mode_off' decorator
            return False

        view_force_maintenance_mode_on = view_dict.get(
            'force_maintenance_mode_on', False)
        if view_force_maintenance_mode_on:
            # view has 'force_maintenance_mode_on' decorator
            return True

    except Resolver404:
        pass

    if not get_maintenance_mode():
        return False

    try:
        url_off = reverse('maintenance_mode_off')

        resolve(url_off)

        if url_off == request.path_info:
            return False

    except NoReverseMatch:
        # maintenance_mode.urls not added
        pass

    if hasattr(request, 'user'):

        if django.VERSION < (1, 10):
            if settings.MAINTENANCE_MODE_IGNORE_ANONYMOUS_USER \
                    and request.user.is_anonymous():
                return False

            if settings.MAINTENANCE_MODE_IGNORE_AUTHENTICATED_USER \
                    and request.user.is_authenticated():
                return False
        else:
            if settings.MAINTENANCE_MODE_IGNORE_ANONYMOUS_USER \
                    and request.user.is_anonymous:
                return False

            if settings.MAINTENANCE_MODE_IGNORE_AUTHENTICATED_USER \
                    and request.user.is_authenticated:
                return False

        if settings.MAINTENANCE_MODE_IGNORE_STAFF \
                and request.user.is_staff:
            return False

        if settings.MAINTENANCE_MODE_IGNORE_SUPERUSER \
                and request.user.is_superuser:
            return False

    if settings.MAINTENANCE_MODE_IGNORE_ADMIN_SITE:

        try:
            request_path = request.path if request.path else ''
            if not request_path.endswith('/'):
                request_path += '/'

            admin_url = reverse('admin:index')
            if request_path.startswith(admin_url):
                return False

        except NoReverseMatch:
            # admin.urls not added
            pass

    if settings.MAINTENANCE_MODE_IGNORE_TESTS:

        is_testing = False

        if (len(sys.argv) > 0 and 'runtests' in sys.argv[0]) \
                or (len(sys.argv) > 1 and sys.argv[1] == 'test'):
            # python runtests.py | python manage.py test | python
            # setup.py test | django-admin.py test
            is_testing = True

        if is_testing:
            return False

    if settings.MAINTENANCE_MODE_IGNORE_IP_ADDRESSES:

        if settings.MAINTENANCE_MODE_GET_CLIENT_IP_ADDRESS:
            try:
                get_client_ip_address_func = import_string(
                    settings.MAINTENANCE_MODE_GET_CLIENT_IP_ADDRESS)
            except ImportError:
                raise ImproperlyConfigured(
                    'settings.MAINTENANCE_MODE_GET_CLIENT_IP_ADDRESS '
                    'is not a valid function path.')
            else:
                client_ip_address = get_client_ip_address_func(request)
        else:
            client_ip_address = get_client_ip_address(request)

        for ip_address in settings.MAINTENANCE_MODE_IGNORE_IP_ADDRESSES:

            ip_address_re = re.compile(ip_address)

            if ip_address_re.match(client_ip_address):
                return False

    if settings.MAINTENANCE_MODE_IGNORE_URLS:

        for url in settings.MAINTENANCE_MODE_IGNORE_URLS:

            if not isinstance(url, pattern_class):
                url = str(url)
            url_re = re.compile(url)

            if url_re.match(request.path_info):
                return False

    if settings.MAINTENANCE_MODE_REDIRECT_URL:

        redirect_url_re = re.compile(settings.MAINTENANCE_MODE_REDIRECT_URL)

        if redirect_url_re.match(request.path_info):
            return False

    return True
Beispiel #8
0
    def process_request(self, request):

        if settings.MAINTENANCE_MODE or core.get_maintenance_mode():

            try:
                url_off = reverse('maintenance_mode_off')

                resolve(url_off)

                if url_off == request.path_info:
                    return None

            except NoReverseMatch:
                #maintenance_mode.urls not added
                pass

            if hasattr(request, 'user'):

                if settings.MAINTENANCE_MODE_IGNORE_STAFF and request.user.is_staff:
                    return None

                if settings.MAINTENANCE_MODE_IGNORE_SUPERUSER and request.user.is_superuser:
                    return None

            if settings.MAINTENANCE_MODE_IGNORE_TESTS:

                is_testing = False

                if (len(sys.argv) > 0 and 'runtests' in sys.argv[0]) or (
                        len(sys.argv) > 1 and sys.argv[1] == 'test'):
                    #python runtests.py | python manage.py test | python setup.py test | django-admin.py test
                    is_testing = True

                if is_testing:
                    return None

            if settings.MAINTENANCE_MODE_IGNORE_IP_ADDRESSES:

                if settings.MAINTENANCE_MODE_GET_CLIENT_IP_ADDRESS:

                    get_client_ip_address_func = utils.import_function(
                        settings.MAINTENANCE_MODE_GET_CLIENT_IP_ADDRESS)

                    if get_client_ip_address_func:
                        client_ip_address = get_client_ip_address_func(request)
                    else:
                        raise ImproperlyConfigured(
                            'settings.MAINTENANCE_MODE_GET_CLIENT_IP_ADDRESS is not a valid function path.'
                        )
                else:
                    client_ip_address = utils.get_client_ip_address(request)

                for ip_address in settings.MAINTENANCE_MODE_IGNORE_IP_ADDRESSES:

                    ip_address_re = re.compile(ip_address)

                    if ip_address_re.match(client_ip_address):
                        return None

            if settings.MAINTENANCE_MODE_IGNORE_URLS:

                for url in settings.MAINTENANCE_MODE_IGNORE_URLS:

                    url_re = re.compile(url)

                    if url_re.match(request.path_info):
                        return None

            if settings.MAINTENANCE_MODE_REDIRECT_URL:

                redirect_url_re = re.compile(
                    settings.MAINTENANCE_MODE_REDIRECT_URL)

                if redirect_url_re.match(request.path_info):
                    return None

                return HttpResponseRedirect(
                    settings.MAINTENANCE_MODE_REDIRECT_URL)

            else:

                request_context = {}

                if settings.MAINTENANCE_MODE_GET_TEMPLATE_CONTEXT:

                    get_request_context_func = utils.import_function(
                        settings.MAINTENANCE_MODE_GET_TEMPLATE_CONTEXT)

                    if get_request_context_func:
                        request_context = get_request_context_func(
                            request=request)
                    else:
                        raise ImproperlyConfigured(
                            'settings.MAINTENANCE_MODE_GET_TEMPLATE_CONTEXT is not a valid function path.'
                        )

                if django.VERSION < (1, 8):
                    response = render_to_response(
                        settings.MAINTENANCE_MODE_TEMPLATE,
                        request_context,
                        context_instance=RequestContext(request),
                        content_type='text/html')
                else:
                    response = render(request,
                                      settings.MAINTENANCE_MODE_TEMPLATE,
                                      context=request_context,
                                      content_type='text/html',
                                      status=503)

                add_never_cache_headers(response)
                return response
        else:
            return None
Beispiel #9
0
    def process_request(self, request):

        if not core.get_maintenance_mode():
            return None

        try:
            url_off = reverse('maintenance_mode_off')

            resolve(url_off)

            if url_off == request.path_info:
                return None

        except NoReverseMatch:
            # maintenance_mode.urls not added
            pass

        if hasattr(request, 'user'):

            if settings.MAINTENANCE_MODE_IGNORE_STAFF \
                    and request.user.is_staff:
                return None

            if settings.MAINTENANCE_MODE_IGNORE_SUPERUSER \
                    and request.user.is_superuser:
                return None

        if settings.MAINTENANCE_MODE_IGNORE_TESTS:

            is_testing = False

            if (len(sys.argv) > 0 and 'runtests' in sys.argv[0]) \
                    or (len(sys.argv) > 1 and sys.argv[1] == 'test'):
                # python runtests.py | python manage.py test | python
                # setup.py test | django-admin.py test
                is_testing = True

            if is_testing:
                return None

        if settings.MAINTENANCE_MODE_IGNORE_IP_ADDRESSES:

            if settings.MAINTENANCE_MODE_GET_CLIENT_IP_ADDRESS:
                try:
                    get_client_ip_address_func = import_string(
                        settings.MAINTENANCE_MODE_GET_CLIENT_IP_ADDRESS)
                except ImportError:
                    raise ImproperlyConfigured(
                        'settings.MAINTENANCE_MODE_GET_CLIENT_IP_ADDRESS '
                        'is not a valid function path.')
                else:
                    client_ip_address = get_client_ip_address_func(request)
            else:
                client_ip_address = utils.get_client_ip_address(request)

            for ip_address in settings.MAINTENANCE_MODE_IGNORE_IP_ADDRESSES:

                ip_address_re = re.compile(ip_address)

                if ip_address_re.match(client_ip_address):
                    return None

        if settings.MAINTENANCE_MODE_IGNORE_URLS:

            for url in settings.MAINTENANCE_MODE_IGNORE_URLS:

                url_re = re.compile(url)

                if url_re.match(request.path_info):
                    return None

        if settings.MAINTENANCE_MODE_REDIRECT_URL:

            redirect_url_re = re.compile(
                settings.MAINTENANCE_MODE_REDIRECT_URL)

            if redirect_url_re.match(request.path_info):
                return None

        return get_maintenance_response(request)