コード例 #1
0
    def get_default_processor(cls):
        default = lazy_str_setting('CART_DEFAULT_PROCESSOR',
                                   default={
                                       'module':
                                       'quokka.modules.cart.processors.Dummy',
                                       'identifier': 'dummy',
                                       'published': True,
                                       'title': "Test"
                                   })

        try:
            return cls.objects.get(identifier=default['identifier'])
        except:
            return cls.objects.create(**default)
コード例 #2
0
ファイル: models.py プロジェクト: mrshinobi/quokka-cart
    def get_default_processor(cls):
        default = lazy_str_setting(
            'CART_DEFAULT_PROCESSOR',
            default={
                'module': 'quokka.modules.cart.processors.Dummy',
                'identifier': 'dummy',
                'published': True,
                'title': "Test"
            }
        )

        try:
            return cls.objects.get(identifier=default['identifier'])
        except:
            return cls.objects.create(**default)
コード例 #3
0
ファイル: admin.py プロジェクト: mfer/quokka
class ImageAdmin(MediaAdmin):
    roles_accepted = ('admin', 'editor', 'author')
    column_list = ('title', 'path', 'thumb', 'published')
    form_columns = ['title', 'slug', 'path', 'channel', 'content_format',
                    'comments_enabled', 'summary', 'published']

    def _list_thumbnail(self, context, model, name):
        if not model.path:
            return ''

        return Markup(
            '<img src="%s" width="100">' % url_for(
                'media',
                filename=form.thumbgen_filename(model.path)
            )
        )

    column_formatters = {
        'thumb': _list_thumbnail
    }

    form_extra_fields = {
        'path': ImageUploadField(
            'Image',
            base_path=lazy_media_path(),
            thumbnail_size=lazy_str_setting('MEDIA_IMAGE_THUMB_SIZE',
                                            default=(200, 200, True)),
            endpoint="media",
            namegen=dated_path,
            permission=0o777,
            allowed_extensions="MEDIA_IMAGE_ALLOWED_EXTENSIONS",
        )
    }

    form_ajax_refs = {
        'channel': AjaxModelLoader(
            'channel',
            Channel,
            fields=['title', 'slug', 'long_slug'],
            filters={"long_slug__startswith": "media/image"}
        )
    }
コード例 #4
0
ファイル: models.py プロジェクト: mfer/quokka
class BaseContentAdmin(ModelAdmin):
    """
    All attributes added here for example
    more info in admin source
    github.com/mrjoes/flask-admin/blob/master/flask_admin/model/base.py
    or Flask-admin documentation
    """

    roles_accepted = ('admin', 'editor', 'author')
    can_create = True
    can_edit = True
    can_delete = True

    # list_template = 'admin/model/list.html'
    # edit_template = 'admin/custom/edit.html'
    # create_template = 'admin/custom/create.html'

    column_list = ('title', 'slug', 'channel', 'published', 'created_at',
                   'available_at', 'view_on_site')

    column_formatters = {
        'view_on_site': ModelAdmin.formatters.get('view_on_site'),
        'created_at': ModelAdmin.formatters.get('datetime'),
        'available_at': ModelAdmin.formatters.get('datetime')
    }

    # column_type_formatters = {}
    # column_labels = {}
    # column_descriptions = {}
    # column_sortable_list = [] / ('name', ('user', 'user.username'))
    # column_default_sort = 'pk'
    # column_choices = {'column': ('value', 'display')}
    # column_display_pk = True

    column_filters = [
        'published', 'title', 'summary', 'created_at', 'available_at'
    ]
    column_searchable_list = ('title', 'summary')

    form_columns = [
        'title', 'slug', 'channel', 'related_channels', 'summary', 'published',
        'add_image', 'contents', 'show_on_channel', 'available_at',
        'available_until', 'tags', 'values', 'template_type', 'license',
        'authors'
    ]
    # form_excluded_columns = []
    # form = None
    # form_overrides = None

    form_widget_args = {
        'summary': {
            'style': 'width: 400px; height: 100px;'
        },
        'title': {
            'style': 'width: 400px'
        },
        'slug': {
            'style': 'width: 400px'
        },
    }

    form_args = {
        # 'body': {'widget': TextEditor()},
        'slug': {
            'widget': PrepopulatedText(master='title')
        }
    }

    form_subdocuments = {
        'contents': {
            'form_subdocuments': {
                None: {
                    'form_columns':
                    ('content', 'caption', 'purpose', 'order', 'thumb'),
                    'form_ajax_refs': {
                        'content': {
                            'fields': ['title', 'long_slug', 'summary']
                        }
                    },
                    'form_extra_fields': {
                        'thumb': ThumbField('thumb', endpoint="media")
                    }
                }
            }
        },
    }
    # form_extra_fields = {}
    form_extra_fields = {
        'add_image':
        ContentImageField(
            'Add new image',
            base_path=lazy_media_path(),
            thumbnail_size=lazy_str_setting('MEDIA_IMAGE_THUMB_SIZE',
                                            default=(100, 100, True)),
            endpoint="media",
            namegen=dated_path,
            permission=0o777,
            allowed_extensions="MEDIA_IMAGE_ALLOWED_EXTENSIONS",
        )
    }

    # action_disallowed_list

    # page_size = 20
    # form_ajax_refs = {
    #     'main_image': {"fields": ('title',)}
    # }

    def after_model_change(self, form, model, is_created):
        if not hasattr(form, 'add_image'):
            return

        form.add_image.save_contents(model)