Git Product home page Git Product logo

djangocms-bootstrap4's People

Contributors

antwertinger avatar atterratio avatar bplociennik avatar christianbertschy avatar crydotsnake avatar czpython avatar dependabot[bot] avatar filwaitman avatar finalangel avatar florianrepenn avatar fsbraun avatar garetjax avatar joeyjurjens avatar johnfraney avatar jsma avatar julianjm avatar kaushal-dhungel avatar lionardo avatar lioshi avatar lory87 avatar marksweb avatar mikek avatar mkoistinen avatar mvaerle avatar nicolairidani avatar src-r-r avatar stefanfoulis avatar vxsx avatar wesleyboar avatar zemyatin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

djangocms-bootstrap4's Issues

RuntimeError: Model class easy_thumbnails.models.Source doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

Hi, I'm starting a new project and tring to use this package, I installed using pip install djangocms-bootstrap4 and I added

'djangocms_icon',
'djangocms_link',
'djangocms_picture',
'djangocms_bootstrap4',
'djangocms_bootstrap4.contrib.bootstrap4_alerts',
'djangocms_bootstrap4.contrib.bootstrap4_badge',
'djangocms_bootstrap4.contrib.bootstrap4_card',
'djangocms_bootstrap4.contrib.bootstrap4_carousel',
'djangocms_bootstrap4.contrib.bootstrap4_collapse',
'djangocms_bootstrap4.contrib.bootstrap4_content',
'djangocms_bootstrap4.contrib.bootstrap4_grid',
'djangocms_bootstrap4.contrib.bootstrap4_jumbotron',
'djangocms_bootstrap4.contrib.bootstrap4_link',
'djangocms_bootstrap4.contrib.bootstrap4_listgroup',
'djangocms_bootstrap4.contrib.bootstrap4_media',
'djangocms_bootstrap4.contrib.bootstrap4_picture',
'djangocms_bootstrap4.contrib.bootstrap4_tabs',
'djangocms_bootstrap4.contrib.bootstrap4_utilities',

to my INSTALLED_APPS as per the README.
But when I try and run python manage.py migrate I get the following error;

Traceback (most recent call last):
  File "manage.py", line 22, in <module>
    execute_from_command_line(sys.argv)
  File "/Users/jimmymona/Development/onBeat/TFS/USDSA/udsa_content_repository/venv/lib/python2.7/site-packages/django/core/management/__init__.py", line 364, in execute_from_command_line
    utility.execute()
  File "/Users/jimmymona/Development/onBeat/TFS/USDSA/udsa_content_repository/venv/lib/python2.7/site-packages/django/core/management/__init__.py", line 338, in execute
    django.setup()
  File "/Users/jimmymona/Development/onBeat/TFS/USDSA/udsa_content_repository/venv/lib/python2.7/site-packages/django/__init__.py", line 27, in setup
    apps.populate(settings.INSTALLED_APPS)
  File "/Users/jimmymona/Development/onBeat/TFS/USDSA/udsa_content_repository/venv/lib/python2.7/site-packages/django/apps/registry.py", line 108, in populate
    app_config.import_models()
  File "/Users/jimmymona/Development/onBeat/TFS/USDSA/udsa_content_repository/venv/lib/python2.7/site-packages/django/apps/config.py", line 202, in import_models
    self.models_module = import_module(models_module_name)
  File "/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/importlib/__init__.py", line 37, in import_module
    __import__(name)
  File "/Users/jimmymona/Development/onBeat/TFS/USDSA/udsa_content_repository/venv/lib/python2.7/site-packages/djangocms_picture/models.py", line 15, in <module>
    from easy_thumbnails.files import get_thumbnailer
  File "/Users/jimmymona/Development/onBeat/TFS/USDSA/udsa_content_repository/venv/lib/python2.7/site-packages/easy_thumbnails/files.py", line 14, in <module>
    from easy_thumbnails import engine, exceptions, models, utils, signals, storage
  File "/Users/jimmymona/Development/onBeat/TFS/USDSA/udsa_content_repository/venv/lib/python2.7/site-packages/easy_thumbnails/models.py", line 70, in <module>
    class Source(File):
  File "/Users/jimmymona/Development/onBeat/TFS/USDSA/udsa_content_repository/venv/lib/python2.7/site-packages/django/db/models/base.py", line 118, in __new__
    "INSTALLED_APPS." % (module, name)
RuntimeError: Model class easy_thumbnails.models.Source doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

I get the same error when I try to run the project in PyCharm. Any idea how I fix this?

Error when doing pip install

Could not find a version that satisfies the requirement djangocms-bootstrap4 (from versions: )
No matching distribution found for djangocms-bootstrap4

All requirements are satisfied. Checked on by one.

Extending carousel causes plugin fail to copy

I extended the carousel slide plugin so it can autofill the slide content from another internal model of my application. However, doing so seemingly causes the cms copy operation to fail when I publish and bug out when I try to add new slides after I publish.

class ArtCarouselSlide(Bootstrap4CarouselSlide):
    artwork = models.ForeignKey(
        Artwork,
        blank=True,
        null=True,
        on_delete=models.SET_NULL,
    )

    def save(self):
        self.carousel_image = self.artwork.picture
        self.carousel_content = (
            f"<p><em><strong>{self.artwork.title}</strong></em></p>"
            f"<p>{self.artwork.artist.first_name} {self.artwork.artist.last_name}, {self.artwork.year}</p>"
        )
        super().save()

Here's the plugin code:

@plugin_pool.register_plugin
class ArtCarouselSlidePlugin(Bootstrap4CarouselSlidePlugin):
    model = ArtCarouselSlide
    name = _('Art carousel slide')
    module = _('Gallery')
    parent_classes = ['ArtCarouselPlugin']

    fieldsets = [
        (None, {
            'fields': ('artwork', )
        }),
        (_('Link settings'), {
            'classes': ('collapse', ),
            'fields': (
                ('external_link', 'internal_link'),
                ('mailto', 'phone'),
                ('anchor', 'target'),
            )
        }),
        (_('Advanced settings'), {
            'classes': ('collapse', ),
            'fields': (
                'tag_type',
                'attributes',
            )
        }),
    ]

I also subclassed Carousel plugin so it can accept my new child plugin:

@plugin_pool.register_plugin
class ArtCarouselPlugin(Bootstrap4CarouselPlugin):
    name = _('Art carousel')
    module = _('Gallery')
    child_classes = ['Bootstrap4CarouselSlidePlugin', 'ArtCarouselSlidePlugin']

I have a hard time finding out why because it doesn't throw any error and my only clue so far is when I looked into the cms_cmsplugin table in postgres the numchild property indicates a wrong value, which is the value it should have if it copied successfully. If I set the value to 0, which accurately reflects the number of children (since it failed to make copies of its children), I can then add new slides again. Nonetheless, if I press publish, the same problem will repeat again.

This is the error it throws when I try to add new slides after publishing:

Traceback (most recent call last):
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/django/contrib/staticfiles/handlers.py", line 63, in __call__
    return self.application(environ, start_response)
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/django/core/handlers/wsgi.py", line 157, in __call__
    response = self.get_response(request)
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/django/core/handlers/base.py", line 124, in get_response
    response = self._middleware_chain(request)
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/django/core/handlers/exception.py", line 43, in inner
    response = response_for_exception(request, exc)
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/django/core/handlers/exception.py", line 93, in response_for_exception
    response = handle_uncaught_exception(request, get_resolver(get_urlconf()), sys.exc_info())
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/django/core/handlers/exception.py", line 139, in handle_uncaught_exception
    return debug.technical_500_response(request, *exc_info)
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/django_extensions/management/technical_response.py", line 37, in null_technical_500_response
    six.reraise(exc_type, exc_value, tb)
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/six.py", line 692, in reraise
    raise value.with_traceback(tb)
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/django/core/handlers/exception.py", line 41, in inner
    response = get_response(request)
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/django/utils/decorators.py", line 149, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/django/views/decorators/cache.py", line 57, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/django/contrib/admin/sites.py", line 224, in inner
    return view(request, *args, **kwargs)
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/django/views/decorators/clickjacking.py", line 39, in wrapped_view
    resp = view_func(*args, **kwargs)
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/cms/admin/placeholderadmin.py", line 342, in add_plugin
    response = plugin_instance.add_view(request)
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/django/contrib/admin/options.py", line 1509, in add_view
    return self.changeform_view(request, None, form_url, extra_context)
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/django/utils/decorators.py", line 67, in _wrapper
    return bound_func(*args, **kwargs)
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/django/utils/decorators.py", line 149, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/django/utils/decorators.py", line 63, in bound_func
    return func.__get__(self, type(self))(*args2, **kwargs2)
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/django/contrib/admin/options.py", line 1409, in changeform_view
    return self._changeform_view(request, object_id, form_url, extra_context)
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/django/contrib/admin/options.py", line 1449, in _changeform_view
    self.save_model(request, new_object, form, not add)
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/cms/plugin_base.py", line 338, in save_model
    return super(CMSPluginBase, self).save_model(request, obj, form, change)
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/django/contrib/admin/options.py", line 980, in save_model
    obj.save()
  File "/Users/user01/Work/abc/website/abc/gallery/models/carousel.py", line 24, in save
    super().save()
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/cms/models/pluginmodel.py", line 262, in save
    self.parent.add_child(instance=self)
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/treebeard/mp_tree.py", line 1013, in add_child
    return MP_AddChildHandler(self, **kwargs).process()
  File "/Users/user01/Work/abc/website/env/lib/python3.7/site-packages/treebeard/mp_tree.py", line 387, in process
    newobj.path = self.node.get_last_child()._inc_path()
AttributeError: 'NoneType' object has no attribute '_inc_path'

Feature Request: Add Background Color or Image to containers

Hi!

First of all, thanks for this plugin. I am using it in one of my Django CMS projects and have been using the BS3 Version in other projects.

I would like to ask for a feature, if it doesn't exist yet:

If a user creates a container plugin instance, he should be able to set a background via CSS or other form. It can be a color, gradient, custom CSS, or a FilerImage. In general, one thing that could be improved with this plugin is a bite more flexibility when it comes to styling. Some modules already have an additional class variable. It would be nice if all could have that, containers, rows, etc.

Regards, ร–zer

How do you create a relative link that isn't a CMS page?

There are may cases where we'd like to make a link button to relative or absolute path on the same host (i.e. /accounts/signup/) that aren't CMS Pages. Not sure of the right way to do this.

EXTERNAL LINK fails with a url validation error and INTERNAL LINK only shows you CMS pages.

Is there a better way to accomplish this?

screen shot 2018-07-13 at 12 07 55 pm

[Alert] When "alert" type is span - it's cut in two lines

Steps to reproduce:
Add "Alert" plugin to page
Open "Advanced settings"
Select "tag type" as span
Hit save
Add "Text" plugin to "Alert" plugin
Observe the plugin in FE

Actual result:
The alert looks cut in two lines
screen5

Expected result:
The alert remains in one line

No field for alternative text in the image plugin

In the bootstrap3 images plugin there is a field for the alt-tag (alternative text):

grafik

In the bootstrap4 image plugin this is replaced throug the figcaption element (Legend-Field in the plugin) and a figure element is created when filling that form field:
grafik

I searched the web but didn't find some evidence that you should omit the alt-tag if you have a figcaption. The only thing I found is this:
https://www.w3.org/TR/2014/REC-html5-20141028/embedded-content-0.html#when-a-text-alternative-is-not-available-at-the-time-of-publication

Could you briefly explain what considerations led to the old tag field being omitted?
I now that I can add an alt-tag through the attribute button but don't want to complicate things for my users.

Thumbnails in a carousel

I created default carousel. Then I insert carousel slides in it. Pictures in slides are really wide so it is easy to notice any changes. But I got upscaled thumbnails instead of my original pictures. How to put pictures in the carousel as is?

Button/Link app Missing Template Error

Attempting to add a Button shows the following error:
image

If I comment out the djangocms_bootstrap4.contrib.bootstrap4_link app I get the djangocms_link app with works correctly.

django-cms 3.5.2

Wrong Installation Guide on Readme

Error while running following command:

python manage.py migrate djangocms_bootstrap4
CommandError: App 'djangocms_bootstrap4' does not have migrations.

After run python manage.py runserver

You have 23 unapplied migration(s). Your project may not work properly until you apply the migrations for app(s): bootstrap4_alerts, bootstrap4_badge, bootstrap4_card, bootstrap4_carousel, bootstrap4_collapse, bootstrap4_content, bootstrap4_grid, bootstrap4_jumbotron, bootstrap4_link, bootstrap4_listgroup, bootstrap4_media, bootstrap4_picture, bootstrap4_tabs, bootstrap4_utilities, djangocms_icon.
Run 'python manage.py migrate' to apply them.

Have it working after run:

python manage.py migrate

I think the Readme should update to the correct command.

Offset-0 not rendered

It seems there is a small bug in the current implementation of the column plugin:

If I select an offset value of 0 no class "offset-xx-0" is added to the column. This is important, e.g., if I have an offset for smaller breakpoints but need no offset for a larger breakpoint.

Example Offsets: 2 for xs, 0 for md should generate "offset-2 offset-md-0" but generates "offset-2" instead. It seems that no offset and 0 offset are treated the same way.

card_content / card_context is there a typo/autocorrect issue ?

I noticed that some of the plugins defined in djangocms-bootstrap4 have a xxx_content member in the model and a xxx_content.html in the templates such as the carousel one.

For the cards, I see a card_context member in the model and a card_content.html template that doesn't seem to be referenced anywhere.

Is this an error or did I missed something ?

I'm asking because I'm doing my first plugins to create custom navbar and I model it from the card plugin and it seems a bit odd.

Exception when inserting new card under a tab item

I have a "Tabs" containing two "Tab items". Beneath one of the tab items, there are five "Cards". When I insert a new Card below the existing ones, I get the following exception:

Exception while resolving variable 'disabled_child' in template 'cms/toolbar/dragitem.html'.
Traceback (most recent call last):
File "/home/oekf/.virtualenvs/oekfpy35/lib/python3.5/site-packages/django/template/base.py", line 829, in _resolve_lookup
current = current[bit]
File "/home/oekf/.virtualenvs/oekfpy35/lib/python3.5/site-packages/django/template/context.py", line 83, in getitem
raise KeyError(key)
KeyError: 'disabled_child'
NO MATCH
During handling of the above exception, another exception occurred:
NO MATCH
Traceback (most recent call last):
File "/home/oekf/.virtualenvs/oekfpy35/lib/python3.5/site-packages/django/template/base.py", line 835, in _resolve_lookup
if isinstance(current, BaseContext) and getattr(type(current), bit):
AttributeError: type object 'Context' has no attribute 'disabled_child'
NO MATCH
During handling of the above exception, another exception occurred:
NO MATCH
Traceback (most recent call last):
File "/home/oekf/.virtualenvs/oekfpy35/lib/python3.5/site-packages/django/template/base.py", line 843, in _resolve_lookup
current = current[int(bit)]
ValueError: invalid literal for int() with base 10: 'disabled_child'
NO MATCH
During handling of the above exception, another exception occurred:
NO MATCH
Traceback (most recent call last):
File "/home/oekf/.virtualenvs/oekfpy35/lib/python3.5/site-packages/django/template/base.py", line 850, in _resolve_lookup
(bit, current)) # missing attribute
django.template.base.VariableDoesNotExist: Failed lookup for key [disabled_child] in [{'False': False, 'True': True, 'None': None}, {'plugin': <djangocms_bootstrap4.contrib.bootstrap4_tabs.models.Bootstrap4TabItem id=1737 plugin_type='Bootstrap4TabItemPlugin' object at 0x7f7dae357940>, 'cms_toolbar': <cms.toolbar.toolbar.CMSToolbar object at 0x7f7dae488198>, 'clipboard': False, 'request': <WSGIRequest: POST '/da/admin/cms/page/add-plugin/?placeholder_id=20&plugin_type=Bootstrap4CardPlugin&cms_path=/da/kontakt/?edit&plugin_language=da&plugin_parent=1737'>}, {'allow_children': True, 'disable_child_plugins': False}]

grid column dialog: include margin top and margin bottom ui edits

You provide the margin left and margin right ui edits in the Column dialog. But it feels odd, when there are no edits for margin top and margin bottom. That would make it much more fluent, if one can specify all margins from within this dialog. One (like me) might think, he / she needs to add responsive spacing tags. But that is quite another thing and can lead to confusion.

Up to now one must know the secret of possibly extending the class attribute by the bootstrap's specific names to work around this. Is that your intention?

Support for accordion?

aldryn-bootstrap3 had support for accordions. Will there be support for accordions (via card/collapse) in this project?

carousel image default size not changeabel

I need to set the image settings for the carousel to be changed, so that the images doesn't get downsized to 1024 width. I created a template with the following content:

{% with 1440 as width %}

grafik

But the image always get downscaled to 1024 x 768px.

I also tried to set the settings configuration to:

DJANGOCMS_BOOTSTRAP4_CAROUSEL_DEFAULT_SIZE = [1440, 593]
from here https://github.com/wanaryytel/djangocms-bootstrap4/blob/2c1f05008f0825348e4540f9bf06722b29c09ea6/README.rst

but didn't worked.

What can I do?

djangocms_bootstrap4.contrib.bootstrap4_picture returns errors on publish

Hi All
I was trying your addon to Django-CMS and what to see if I could use it but sadly after a new install and creating a first page it doesn't allow me to publish this is my finding and hoping someone understands my crazy brain and knows how to fix this.

the error I get is the following.

Internal Server Error: /en/admin/cms/page/1/en/publish/
Traceback (most recent call last):
  File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/django/core/handlers/exception.py", line 41, in inner
    response = get_response(request)
  File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/django/core/handlers/base.py", line 187, in _get_response
    response = self.process_exception_by_middleware(e, request)
  File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/django/core/handlers/base.py", line 185, in _get_response
    response = wrapped_callback(request, *callback_args, **callback_kwargs)
  File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/django/utils/decorators.py", line 149, in _wrapped_view
    response = view_func(request, *args, **kwargs)
  File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/django/views/decorators/cache.py", line 57, in _wrapped_view_func
    response = view_func(request, *args, **kwargs)
  File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/django/contrib/admin/sites.py", line 224, in inner
    return view(request, *args, **kwargs)
  File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/django/utils/decorators.py", line 67, in _wrapper
    return bound_func(*args, **kwargs)
  File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/django/views/decorators/http.py", line 40, in inner
    return func(request, *args, **kwargs)
  File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/django/utils/decorators.py", line 63, in bound_func
    return func.__get__(self, type(self))(*args2, **kwargs2)
  File "/usr/lib/python3.6/contextlib.py", line 52, in inner
    return func(*args, **kwds)
  File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/cms/admin/pageadmin.py", line 1125, in publish_page
    all_published = page.publish(language)
  File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/cms/models/pagemodel.py", line 987, in publish
    self._copy_contents(public_page, language)
  File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/cms/models/pagemodel.py", line 633, in _copy_contents
    placeholder.copy_plugins(target_placeholder, language=language)
  File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/cms/models/placeholdermodel.py", line 580, in copy_plugins
    root_plugin=root_plugin,
  File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/cms/utils/plugins.py", line 190, in copy_plugins_to_placeholder
    for source_plugin in get_bound_plugins(plugins):
  File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/cms/utils/plugins.py", line 242, in get_bound_plugins
    plugin_model = get_plugin(plugin_type).model
  File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/cms/plugin_pool.py", line 189, in get_plugin
    return self.plugins[name]
KeyError: 'PicturePlugin'
[30/Apr/2019 08:24:08] "POST /en/admin/cms/page/1/en/publish/ HTTP/1.1" 500 21089

At first I thought this was the Whole Bootstrap4 addon but it seems that if I remove "djangocms_bootstrap4.contrib.bootstrap4_picture" out of the INSTALLED_APPS it works fine but I just don't have pictures working.

I wonder if it's conflicting with the djangocms-picture addon or is it something else.

I also think I got the tiny black box error on the page, well most of what I could highlight before it runs away.

KeyError at /en/admin/cms/page/1/en/publish/ 'PicturePlugin' Request Method: POST Request URL: http://127.0.0.1:8000/en/admin/cms/page/1/en/publish/ Django Version: 1.11.20 Python Executable: /home/graeme/PycharmProjects/mosberger/venv/bin/python Python Version: 3.6.7 Python Path: ['/home/graeme/PycharmProjects/mosberger/mysite', '/usr/lib/python36.zip', '/usr/lib/python3.6', '/usr/lib/python3.6/lib-dynload', '/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages', '/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/setuptools-40.8.0-py3.6.egg', '/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/pip-19.0.3-py3.6.egg'] Server time: Tue, 30 Apr 2019 08:07:01 +0100 Installed Applications: ['djangocms_admin_style', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.admin', 'django.contrib.sites', 'django.contrib.sitemaps', 'django.contrib.staticfiles', 'django.contrib.messages', 'cms', 'menus', 'sekizai', 'treebeard', 'djangocms_text_ckeditor', 'filer', 'easy_thumbnails', 'djangocms_column', 'djangocms_file', 'djangocms_style', 'djangocms_snippet', 'djangocms_googlemap', 'djangocms_video', 'djangocms_icon', 'djangocms_link', 'djangocms_picture', 'djangocms_bootstrap4', 'djangocms_bootstrap4.contrib.bootstrap4_alerts', 'djangocms_bootstrap4.contrib.bootstrap4_badge', 'djangocms_bootstrap4.contrib.bootstrap4_card', 'djangocms_bootstrap4.contrib.bootstrap4_carousel', 'djangocms_bootstrap4.contrib.bootstrap4_collapse', 'djangocms_bootstrap4.contrib.bootstrap4_content', 'djangocms_bootstrap4.contrib.bootstrap4_grid', 'djangocms_bootstrap4.contrib.bootstrap4_jumbotron', 'djangocms_bootstrap4.contrib.bootstrap4_link', 'djangocms_bootstrap4.contrib.bootstrap4_listgroup', 'djangocms_bootstrap4.contrib.bootstrap4_media', 'djangocms_bootstrap4.contrib.bootstrap4_picture', 'djangocms_bootstrap4.contrib.bootstrap4_tabs', 'djangocms_bootstrap4.contrib.bootstrap4_utilities', 'mysite'] Installed Middleware: ['cms.middleware.utils.ApphookReloadMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'cms.middleware.user.CurrentUserMiddleware', 'cms.middleware.page.CurrentPageMiddleware', 'cms.middleware.toolbar.ToolbarMiddleware', 'cms.middleware.language.LanguageCookieMiddleware'] Traceback: File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/django/core/handlers/exception.py" in inner 41. response = get_response(request) File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response 187. response = self.process_exception_by_middleware(e, request) File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/django/core/handlers/base.py" in _get_response 185. response = wrapped_callback(request, *callback_args, **callback_kwargs) File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/django/utils/decorators.py" in _wrapped_view 149. response = view_func(request, *args, **kwargs) File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/django/views/decorators/cache.py" in _wrapped_view_func 57. response = view_func(request, *args, **kwargs) File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/django/contrib/admin/sites.py" in inner 224. return view(request, *args, **kwargs) File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/django/utils/decorators.py" in _wrapper 67. return bound_func(*args, **kwargs) File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/django/views/decorators/http.py" in inner 40. return func(request, *args, **kwargs) File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/django/utils/decorators.py" in bound_func 63. return func.__get__(self, type(self))(*args2, **kwargs2) File "/usr/lib/python3.6/contextlib.py" in inner 52. return func(*args, **kwds) File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/cms/admin/pageadmin.py" in publish_page 1125. all_published = page.publish(language) File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/cms/models/pagemodel.py" in publish 987. self._copy_contents(public_page, language) File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/cms/models/pagemodel.py" in _copy_contents 633. placeholder.copy_plugins(target_placeholder, language=language) File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/cms/models/placeholdermodel.py" in copy_plugins 580. root_plugin=root_plugin, File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/cms/utils/plugins.py" in copy_plugins_to_placeholder 190. for source_plugin in get_bound_plugins(plugins): File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/cms/utils/plugins.py" in get_bound_plugins 242. plugin_model = get_plugin(plugin_type).model File "/home/graeme/PycharmProjects/mosberger/venv/lib/python3.6/site-packages/cms/plugin_pool.py" in get_plugin 189. return self.plugins[name] Exception Type: KeyError at /en/admin/cms/page/1/en/publish/ Exception Value: 'PicturePlugin' Request information: USER: graeme GET: No GET data POST: placeholders[] = '2' csrfmiddlewaretoken = 'GCFZWVa1aQXgZUByYxSWV4SNp1uLbYcF33Z6QmsVs0AxthOFR95tW72eZMT4gwJ7' FILES: No FILES data COOKIES: csrftoken = 'YcdMciPbsIs3FieZIwj6HOiNiXrLmEO1lDxT6J75KS5k9Fr6B8wDIRseSIQ4rclt' django_language = 'en' sessionid = 'n37hv7ktm0477wenj1irwjx0r7sfn63w' META: ANT_HOME = '/usr/local/ant' CLUTTER_BACKEND = 'x11' COMPIZ_CONFIG_PROFILE = 'mate' CONTENT_LENGTH = '105' CONTENT_TYPE = 'application/x-www-form-urlencoded; charset=UTF-8' CSRF_COOKIE = 'YcdMciPbsIs3FieZIwj6HOiNiXrLmEO1lDxT6J75KS5k9Fr6B8wDIRseSIQ4rclt' DBUS_SESSION_BUS_ADDRESS = 'unix:path=/run/user/1000/bus,guid=9580930f425d45fc9a6a22c75cbd8032' DBUS_STARTER_ADDRESS = 'unix:path=/run/user/1000/bus,guid=9580930f425d45fc9a6a22c75cbd8032' DBUS_STARTER_BUS_TYPE = 'session' DEFAULTS_PATH = '/usr/share/gconf/mate.default.path' DESKTOP_SESSION = 'mate' DISPLAY = ':0' DJANGO_SETTINGS_MODULE = 'mysite.settings' GATEWAY_INTERFACE = 'CGI/1.1' GDMSESSION = 'mate' GDM_LANG = 'en_GB' GPG_AGENT_INFO = '/run/user/1000/gnupg/S.gpg-agent:0:1' GTK_MODULES = 'gail:atk-bridge' GTK_OVERLAY_SCROLLING = '0' HOME = '/home/graeme' HTTP_ACCEPT = '*/*' HTTP_ACCEPT_ENCODING = 'gzip, deflate' HTTP_ACCEPT_LANGUAGE = 'en-GB,en;q=0.5' HTTP_CONNECTION = 'keep-alive' HTTP_COOKIE = 'csrftoken=YcdMciPbsIs3FieZIwj6HOiNiXrLmEO1lDxT6J75KS5k9Fr6B8wDIRseSIQ4rclt; django_language=en; sessionid=n37hv7ktm0477wenj1irwjx0r7sfn63w' HTTP_DNT = '1' HTTP_HOST = '127.0.0.1:8000' HTTP_REFERER = 'http://127.0.0.1:8000/en/?edit' HTTP_USER_AGENT = 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:66.0) Gecko/20100101 Firefox/66.0' HTTP_X_REQUESTED_WITH = 'XMLHttpRequest' IM_CONFIG_PHASE = '1' INVOCATION_ID = '75640522371346b6af716ba7069866cc' JAVA_HOME = '/usr/lib/jvm/jdk-11.0.1' JOURNAL_STREAM = '9:27513' LANG = 'en_GB.UTF-8' LANGUAGE = 'en_GB:en' LESSCLOSE = '/usr/bin/lesspipe %s %s' LESSOPEN = '| /usr/bin/lesspipe %s' LOGNAME = 'graeme' LS_COLORS = 'rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=00:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.zst=01;31:*.tzst=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.wim=01;31:*.swm=01;31:*.dwm=01;31:*.esd=01;31:*.jpg=01;35:*.jpeg=01;35:*.mjpg=01;35:*.mjpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=00;36:*.au=00;36:*.flac=00;36:*.m4a=00;36:*.mid=00;36:*.midi=00;36:*.mka=00;36:*.mp3=00;36:*.mpc=00;36:*.ogg=00;36:*.ra=00;36:*.wav=00;36:*.oga=00;36:*.opus=00;36:*.spx=00;36:*.xspf=00;36:' MANAGERPID = '1188' MANDATORY_PATH = '/usr/share/gconf/mate.mandatory.path' MATE_DESKTOP_SESSION_ID = 'this-is-deprecated' OLDPWD = '/home/graeme/PycharmProjects/mosberger' PATH = '/home/graeme/PycharmProjects/mosberger/venv/bin:/home/graeme/.local/bin:/usr/lib/jvm/jdk-11.0.1/bin:/usr/local/ant/bin:/usr/local/android-sdk/tools:/usr/local/android-sdk/tools/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/usr/lib/jvm/jdk-11.0.1/bin' PATH_INFO = '/en/admin/cms/page/1/en/publish/' PS1 = '(venv) \\[\\e]0;\\u@\\h: \\w\\a\\]${debian_chroot:+($debian_chroot)}\\[\\033[01;32m\\]\\u@\\h\\[\\033[00m\\]:\\[\\033[01;34m\\]\\w\\[\\033[00m\\]\\$ ' PWD = '/home/graeme/PycharmProjects/mosberger/mysite' QT_ACCESSIBILITY = '1' QT_AUTO_SCREEN_SCALE_FACTOR = '0' QT_QPA_PLATFORMTHEME = 'qt5ct' QT_SCALE_FACTOR = '1' QUERY_STRING = '' REMOTE_ADDR = '127.0.0.1' REMOTE_HOST = '' REQUEST_METHOD = 'POST' RUN_MAIN = 'true' SCRIPT_NAME = '' SERVER_NAME = 'localhost' SERVER_PORT = '8000' SERVER_PROTOCOL = 'HTTP/1.1' SERVER_SOFTWARE = 'WSGIServer/0.2' SESSION_MANAGER = 'local/graeme-Latitude-E5440:@/tmp/.ICE-unix/1209,unix/graeme-Latitude-E5440:/tmp/.ICE-unix/1209' SHELL = '/bin/bash' SHLVL = '1' SSH_AGENT_PID = '1552' SSH_AUTH_SOCK = '/run/user/1000/keyring/ssh' TERM = 'xterm-256color' TERMINAL_EMULATOR = 'JetBrains-JediTerm' TZ = 'Europe/London' USER = 'graeme' VIRTUAL_ENV = '/home/graeme/PycharmProjects/mosberger/venv' XAUTHORITY = '/home/graeme/.Xauthority' XDG_CONFIG_DIRS = '/etc/xdg/xdg-mate:/etc/xdg' XDG_CURRENT_DESKTOP = 'MATE' XDG_DATA_DIRS = '/usr/share/mate:/home/graeme/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share' XDG_GREETER_DATA_DIR = '/var/lib/lightdm-data/graeme' XDG_RUNTIME_DIR = '/run/user/1000' XDG_SEAT = 'seat0' XDG_SEAT_PATH = '/org/freedesktop/DisplayManager/Seat0' XDG_SESSION_DESKTOP = 'mate' XDG_SESSION_ID = 'c2' XDG_SESSION_PATH = '/org/freedesktop/DisplayManager/Session0' XDG_SESSION_TYPE = 'x11' XDG_VTNR = '7' _ = '/home/graeme/PycharmProjects/mosberger/venv/bin/python' wsgi.errors = <_io.TextIOWrapper name='' mode='w' encoding='UTF-8'> wsgi.file_wrapper = '' wsgi.input = <_io.BufferedReader name=5> wsgi.multiprocess = False wsgi.multithread = True wsgi.run_once = False wsgi.url_scheme = 'http' wsgi.version = '(1, 0)' Settings: Using settings module mysite.settings ABSOLUTE_URL_OVERRIDES = {} ADMINS = [] ALLOWED_HOSTS = [] APPEND_SLASH = True AUTHENTICATION_BACKENDS = ['django.contrib.auth.backends.ModelBackend'] AUTH_PASSWORD_VALIDATORS = '********************' AUTH_USER_MODEL = 'auth.User' BASE_DIR = '/home/graeme/PycharmProjects/mosberger/mysite' CACHES = {'default': {'BACKEND': 'django.core.cache.backends.locmem.LocMemCache'}} CACHE_MIDDLEWARE_ALIAS = 'default' CACHE_MIDDLEWARE_KEY_PREFIX = '********************' CACHE_MIDDLEWARE_SECONDS = 600 CMS_LANGUAGES = {1: [{'code': 'en', 'name': 'en', 'redirect_on_fallback': True, 'public': True, 'hide_untranslated': False, 'fallbacks': []}], 'default': {'redirect_on_fallback': True, 'public': True, 'hide_untranslated': False}, : True} CMS_PERMISSION = True CMS_PLACEHOLDER_CONF = {} CMS_TEMPLATES = "(('fullwidth.html', 'Fullwidth'), ('sidebar_left.html', 'Sidebar Left'), ('sidebar_right.html', 'Sidebar Right'))" CSRF_COOKIE_AGE = 31449600 CSRF_COOKIE_DOMAIN = None CSRF_COOKIE_HTTPONLY = False CSRF_COOKIE_NAME = 'csrftoken' CSRF_COOKIE_PATH = '/' CSRF_COOKIE_SECURE = False CSRF_FAILURE_VIEW = 'django.views.csrf.csrf_failure' CSRF_HEADER_NAME = 'HTTP_X_CSRFTOKEN' CSRF_TRUSTED_ORIGINS = [] CSRF_USE_SESSIONS = False DATABASES = {'default': {'CONN_MAX_AGE': 0, 'ENGINE': 'django.db.backends.sqlite3', 'HOST': 'localhost', 'NAME': 'project.db', 'PASSWORD': '********************', 'PORT': '', 'USER': '', 'ATOMIC_REQUESTS': False, 'AUTOCOMMIT': True, 'OPTIONS': {}, 'TIME_ZONE': None, 'TEST': {'CHARSET': None, 'COLLATION': None, 'NAME': None, 'MIRROR': None}}} DATABASE_ROUTERS = [] DATA_DIR = '/home/graeme/PycharmProjects/mosberger/mysite' DATA_UPLOAD_MAX_MEMORY_SIZE = 2621440 DATA_UPLOAD_MAX_NUMBER_FIELDS = 1000 DATETIME_FORMAT = 'N j, Y, P' DATETIME_INPUT_FORMATS = ['%Y-%m-%d %H:%M:%S', '%Y-%m-%d %H:%M:%S.%f', '%Y-%m-%d %H:%M', '%Y-%m-%d', '%m/%d/%Y %H:%M:%S', '%m/%d/%Y %H:%M:%S.%f', '%m/%d/%Y %H:%M', '%m/%d/%Y', '%m/%d/%y %H:%M:%S', '%m/%d/%y %H:%M:%S.%f', '%m/%d/%y %H:%M', '%m/%d/%y'] DATE_FORMAT = 'N j, Y' DATE_INPUT_FORMATS = ['%Y-%m-%d', '%m/%d/%Y', '%m/%d/%y', '%b %d %Y', '%b %d, %Y', '%d %b %Y', '%d %b, %Y', '%B %d %Y', '%B %d, %Y', '%d %B %Y', '%d %B, %Y'] DEBUG = True DEBUG_PROPAGATE_EXCEPTIONS = False DECIMAL_SEPARATOR = '.' DEFAULT_CHARSET = 'utf-8' DEFAULT_CONTENT_TYPE = 'text/html' DEFAULT_EXCEPTION_REPORTER_FILTER = 'django.views.debug.SafeExceptionReporterFilter' DEFAULT_FILE_STORAGE = 'django.core.files.storage.FileSystemStorage' DEFAULT_FROM_EMAIL = 'webmaster@localhost' DEFAULT_INDEX_TABLESPACE = '' DEFAULT_TABLESPACE = '' DISALLOWED_USER_AGENTS = [] EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' EMAIL_HOST = 'localhost' EMAIL_HOST_PASSWORD = '********************' EMAIL_HOST_USER = '' EMAIL_PORT = 25 EMAIL_SSL_CERTFILE = None EMAIL_SSL_KEYFILE = '********************' EMAIL_SUBJECT_PREFIX = '[Django] ' EMAIL_TIMEOUT = None EMAIL_USE_LOCALTIME = False EMAIL_USE_SSL = False EMAIL_USE_TLS = False FILER_IMAGE_MODEL = 'filer.Image' FILE_CHARSET = 'utf-8' FILE_UPLOAD_DIRECTORY_PERMISSIONS = None FILE_UPLOAD_HANDLERS = ['django.core.files.uploadhandler.MemoryFileUploadHandler', 'django.core.files.uploadhandler.TemporaryFileUploadHandler'] FILE_UPLOAD_MAX_MEMORY_SIZE = 2621440 FILE_UPLOAD_PERMISSIONS = None FILE_UPLOAD_TEMP_DIR = None FIRST_DAY_OF_WEEK = 0 FIXTURE_DIRS = [] FORCE_SCRIPT_NAME = None FORMAT_MODULE_PATH = None FORM_RENDERER = 'django.forms.renderers.DjangoTemplates' IGNORABLE_404_URLS = [] INSTALLED_APPS = ['djangocms_admin_style', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.admin', 'django.contrib.sites', 'django.contrib.sitemaps', 'django.contrib.staticfiles', 'django.contrib.messages', 'cms', 'menus', 'sekizai', 'treebeard', 'djangocms_text_ckeditor', 'filer', 'easy_thumbnails', 'djangocms_column', 'djangocms_file', 'djangocms_style', 'djangocms_snippet', 'djangocms_googlemap', 'djangocms_video', 'djangocms_icon', 'djangocms_link', 'djangocms_picture', 'djangocms_bootstrap4', 'djangocms_bootstrap4.contrib.bootstrap4_alerts', 'djangocms_bootstrap4.contrib.bootstrap4_badge', 'djangocms_bootstrap4.contrib.bootstrap4_card', 'djangocms_bootstrap4.contrib.bootstrap4_carousel', 'djangocms_bootstrap4.contrib.bootstrap4_collapse', 'djangocms_bootstrap4.contrib.bootstrap4_content', 'djangocms_bootstrap4.contrib.bootstrap4_grid', 'djangocms_bootstrap4.contrib.bootstrap4_jumbotron', 'djangocms_bootstrap4.contrib.bootstrap4_link', 'djangocms_bootstrap4.contrib.bootstrap4_listgroup', 'djangocms_bootstrap4.contrib.bootstrap4_media', 'djangocms_bootstrap4.contrib.bootstrap4_picture', 'djangocms_bootstrap4.contrib.bootstrap4_tabs', 'djangocms_bootstrap4.contrib.bootstrap4_utilities', 'mysite'] INTERNAL_IPS = [] LANGUAGES = "(('en', 'en'),)" LANGUAGES_BIDI = ['he', 'ar', 'fa', 'ur'] LANGUAGE_CODE = 'en' LANGUAGE_COOKIE_AGE = None LANGUAGE_COOKIE_DOMAIN = None LANGUAGE_COOKIE_NAME = 'django_language' LANGUAGE_COOKIE_PATH = '/' LOCALE_PATHS = [] LOGGING = {} LOGGING_CONFIG = 'logging.config.dictConfig' LOGIN_REDIRECT_URL = '/accounts/profile/' LOGIN_URL = '/accounts/login/' LOGOUT_REDIRECT_URL = None MANAGERS = [] MEDIA_ROOT = '/home/graeme/PycharmProjects/mosberger/mysite/media' MEDIA_URL = '/media/' MESSAGE_STORAGE = 'django.contrib.messages.storage.fallback.FallbackStorage' MIDDLEWARE = ['cms.middleware.utils.ApphookReloadMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.locale.LocaleMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', 'cms.middleware.user.CurrentUserMiddleware', 'cms.middleware.page.CurrentPageMiddleware', 'cms.middleware.toolbar.ToolbarMiddleware', 'cms.middleware.language.LanguageCookieMiddleware'] MIDDLEWARE_CLASSES = ['django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware'] MIGRATION_MODULES = {} MONTH_DAY_FORMAT = 'F j' NUMBER_GROUPING = 0 PASSWORD_HASHERS = '********************' PASSWORD_RESET_TIMEOUT_DAYS = '********************' PREPEND_WWW = False ROOT_URLCONF = 'mysite.urls' SECRET_KEY = '********************' SECURE_BROWSER_XSS_FILTER = False SECURE_CONTENT_TYPE_NOSNIFF = False SECURE_HSTS_INCLUDE_SUBDOMAINS = False SECURE_HSTS_PRELOAD = False SECURE_HSTS_SECONDS = 0 SECURE_PROXY_SSL_HEADER = None SECURE_REDIRECT_EXEMPT = [] SECURE_SSL_HOST = None SECURE_SSL_REDIRECT = False SERVER_EMAIL = 'root@localhost' SESSION_CACHE_ALIAS = 'default' SESSION_COOKIE_AGE = 1209600 SESSION_COOKIE_DOMAIN = None SESSION_COOKIE_HTTPONLY = True SESSION_COOKIE_NAME = 'sessionid' SESSION_COOKIE_PATH = '/' SESSION_COOKIE_SECURE = False SESSION_ENGINE = 'django.contrib.sessions.backends.db' SESSION_EXPIRE_AT_BROWSER_CLOSE = False SESSION_FILE_PATH = None SESSION_SAVE_EVERY_REQUEST = False SESSION_SERIALIZER = 'django.contrib.sessions.serializers.JSONSerializer' SETTINGS_MODULE = 'mysite.settings' SHORT_DATETIME_FORMAT = 'm/d/Y P' SHORT_DATE_FORMAT = 'm/d/Y' SIGNING_BACKEND = 'django.core.signing.TimestampSigner' SILENCED_SYSTEM_CHECKS = [] SITE_ID = 1 STATICFILES_DIRS = "('/home/graeme/PycharmProjects/mosberger/mysite/mysite/static',)" STATICFILES_FINDERS = ['django.contrib.staticfiles.finders.FileSystemFinder', 'django.contrib.staticfiles.finders.AppDirectoriesFinder'] STATICFILES_STORAGE = 'django.contrib.staticfiles.storage.StaticFilesStorage' STATIC_ROOT = '/home/graeme/PycharmProjects/mosberger/mysite/static' STATIC_URL = '/static/' TEMPLATES = [{'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': ['/home/graeme/PycharmProjects/mosberger/mysite/mysite/templates'], 'OPTIONS': {'context_processors': ['django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', 'django.template.context_processors.i18n', 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.template.context_processors.media', 'django.template.context_processors.csrf', 'django.template.context_processors.tz', 'sekizai.context_processors.sekizai', 'django.template.context_processors.static', 'cms.context_processors.cms_settings'], 'loaders': ['django.template.loaders.filesystem.Loader', 'django.template.loaders.app_directories.Loader', 'django.template.loaders.eggs.Loader']}}] TEST_NON_SERIALIZED_APPS = [] TEST_RUNNER = 'django.test.runner.DiscoverRunner' THOUSAND_SEPARATOR = ',' THUMBNAIL_PROCESSORS = "('easy_thumbnails.processors.colorspace', 'easy_thumbnails.processors.autocrop', 'filer.thumbnail_processors.scale_and_crop_with_subject_location', 'easy_thumbnails.processors.filters')" TIME_FORMAT = 'P' TIME_INPUT_FORMATS = ['%H:%M:%S', '%H:%M:%S.%f', '%H:%M'] TIME_ZONE = 'Europe/London' USE_ETAGS = False USE_I18N = True USE_L10N = True USE_THOUSAND_SEPARATOR = False USE_TZ = True USE_X_FORWARDED_HOST = False USE_X_FORWARDED_PORT = False WSGI_APPLICATION = None X_FRAME_OPTIONS = 'SAMEORIGIN' YEAR_MONTH_FORMAT = 'F Y' You're seeing this error because you have DEBUG = True in your Django settings file. Change that to False, and Django will display a standard page generated by the handler for this status code. | 500 Internal Server Error

documentation for collapse

I'm having difficulty understanding how the collapse behavior works. What is the relationship between the three plugins? I'd be happy to contribute some unit tests and/or examples. Even a screen shot of structure view of a working example would be helpful.

bootstrap4_link undefined icon prefix

I found an issue when using the Link/Button plugin: when I try to set an icon (left or right) the iconpicker works correctly but the preview doesn't show the correct icon. From what I gathered the preview doesn't set a correct icon prefix (it sets it to undefined).

bootstrap4_link-issue

This issue then breaks the plugin when it tries to render the icon after saving. In this case is the djangocms_icon module that crashes because it is trying to find the prefix (which is not set). The djangocms_icon plugin works correctly though.

I am using DjangoCMS 3.6 with Django 1.11.20 and djangocms-bootstrap4 1.3.1

Inline render creates an empty link in DjangoCMS CKEDITOR

Hi

I tested this issue in django-cms (3.5.2) with djangocms-text-ckeditor (3.6.0) and every time I insert a bootstrap 4 link into Text plugin the preview render fails and in some cases when I press save the cms plugin it's not saved.

Steps to reproduce:

  • Create text plugin and insert some lorem ipsum text.
  • Select a word, click CMS Plugin and select Bootstrap4 Link/Button.
    selecting-text
  • In ckeditor you can see an empty text or cutted word.
    error-screenshot

I disabled djangocms_bootstrap4 link and tested with default djangocms_text and is working fine.

I'm the only one with this issue?

Thanks

English i18n messages are broken

If I am not mistaken, just after installing the package one can find the following:

In file: ...venv/lib/python3.5/site-packages/djangocms_bootstrap4/locale/en/LC_MESSAGES/django.po

# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
(...)
"Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"

That Plural-Forms entry is incomplete, and thus the system breaks. Because it happens in english, it breaks in all translated-including-english sites AFAICT.

I have just started doing internationalization, so I may be missing something. Once I fixed that line and executed the compilemessages, the site works as expected.

No base.html template for Pages.

On Divio cloud there is a base template ready for BS4 but I'm not sure where it come from.
It seems to be missing in djangocms-bootstrap4.

Carousel-indicators data-slide-to= should use a 0 based index

The carousel template currently has this for carousel-indicators links:

data-slide-to="{{ forloop.counter }}"

I believe it should be this in order to work correctly:

data-slide-to="{{ forloop.counter0 }}"

The template the way it is now results in data-slide-to starting with 1, and causes clicking on the indicator to instead select the next slide. The first indicator is left un-clickable.

Error on carousel template

Hi,

The pypi version of djangocms_bootstrap4 have and error in default template file "carousel.html"

`


    {% for plugin in instance.child_plugin_instances %}
    <li data-target="#carousel-{{ instance.pk }}"
    data-slide-to="{{ forloop.counter }}" # replace by forloop.counter0
    {% if forloop.first %} class="active"{% endif %}>

    {% endfor %}

` thanks

original size image corousel

I have a problem with the size of my carousel slide, it dont take the original size of the image.

How can I solve ?

captura carousel

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.