# -*- coding: utf-8 -*-
from __future__ import absolute_import, print_function, unicode_literals

import sys
from distutils.version import LooseVersion

import cms
from cms.utils.permissions import current_user

from .base import BaseTest

try:
    from unittest import skipIf
except ImportError:
    from unittest2 import skipIf


class WizardTest(BaseTest):

    def setUp(self):
        try:
            from cms.wizards.wizard_pool import wizard_pool
            delete = [
                'djangocms_blog',
                'djangocms_blog.cms_wizards',
            ]
            for module in delete:
                if module in sys.modules:
                    del sys.modules[module]
            wizard_pool._reset()
        except ImportError:
            # Not in django CMS 3.2+, no cleanup needed
            pass

    @skipIf(LooseVersion(cms.__version__) < LooseVersion('3.2'),
            reason='Wizards not available for django CMS < 3.2')
    def test_wizard(self):
        """
        Test that Blog wizard is present and contains all items
        """
        from cms.wizards.wizard_pool import wizard_pool
        self.get_pages()

        titles = [entry.title for entry in wizard_pool.get_entries()]
        self.assertTrue('New Blog' in titles)
        self.assertTrue('New Article' in titles)

    @skipIf(LooseVersion(cms.__version__) < LooseVersion('3.2'),
            reason='Wizards not available for django CMS < 3.2')
    def test_wizard_init(self):
        from cms.wizards.wizard_pool import wizard_pool
        from djangocms_blog.models import Post
        self.get_pages()

        with current_user(self.user_staff):
            wizs = [entry for entry in wizard_pool.get_entries() if entry.model == Post]
            for index, wiz in enumerate(wizs):
                app_config = self.app_config_1.pk if wiz.title == 'New Blog' else self.app_config_2.pk
                form = wiz.form()
                self.assertTrue(form.initial.get('app_config', False), app_config)
                self.assertTrue(form.fields['app_config'].widget.attrs['disabled'])

                form = wiz.form(data={
                    '1-title': 'title{0}'.format(index),
                    '1-abstract': 'abstract{0}'.format(index),
                    '1-categories': [self.category_1.pk],
                }, prefix=1)
                self.assertEqual(form.default_appconfig, app_config)
                self.assertTrue(form.is_valid())
                self.assertTrue(form.cleaned_data['app_config'], app_config)
                instance = form.save()
                self.assertEqual(instance.author, self.user_staff)

            with self.settings(BLOG_AUTHOR_DEFAULT='normal'):
                for index, wiz in enumerate(wizs):
                    app_config = self.app_config_1.pk if wiz.title == 'New Blog' else self.app_config_2.pk
                    form = wiz.form(data={
                        '1-title': 'title-2{0}'.format(index),
                        '1-abstract': 'abstract-2{0}'.format(index),
                        '1-categories': [self.category_1.pk],
                    }, prefix=1)
                    self.assertEqual(form.default_appconfig, app_config)
                    self.assertTrue(form.is_valid())
                    self.assertTrue(form.cleaned_data['app_config'], app_config)
                    instance = form.save()
                    self.assertEqual(instance.author, self.user_normal)

    def test_wizard_import(self):
        # The following import should not fail in any django CMS version
        from djangocms_blog import cms_wizards  # NOQA

@@ -160,55 +160,8 @@
  cms
-%0Afrom cms.utils.permissions import current_user
 %0A%0Afr
@@ -1420,32 +1420,87 @@
 ard_init(self):%0A
+        from cms.utils.permissions import current_user%0A
         from cms

Fix import