示例#1
0
 def quantity(self):
     model = get_model('shop', 'OrderDetail')
     quantity = model.objects.filter(order=self).aggregate(
         quantity=Sum('quantity'))['quantity']
     if not quantity:
         quantity = 0
     return quantity
示例#2
0
    class Meta:
        model = get_model('shop', 'ProductSection')
        exclude = ['catalog', 'sort']

        widgets = {'parent': HiddenInput()}

        fieldsets = (('main', {
            'fields': (
                'parent',
                'name',
                'description',
            ),
            'legend': _('Main')
        }), ('seo', {
            'fields': (
                'seo_keywords',
                'seo_description',
            ),
            'legend': _('SEO')
        }), ('advanced', {
            'fields': (
                'image',
                'is_visible',
            ),
            'legend': _('Advanced')
        }))
示例#3
0
文件: forms.py 项目: pc-mist/dartcms
    class Meta:
        model = get_model('shop', 'Product')
        exclude = ['section']

        fieldsets = (('main', {
            'fields': (
                'slug',
                'name',
                'code',
                'short_description',
                'description',
                'manufacturer',
                'residue',
                'price',
            ),
            'legend':
            _('Main')
        }), ('seo', {
            'fields': (
                'seo_keywords',
                'seo_description',
            ),
            'legend': _('SEO')
        }), ('advanced', {
            'fields': (
                'labels',
                'image',
                'is_visible',
            ),
            'legend': _('Advanced')
        }))
示例#4
0
 def sum_value(self):
     model = get_model('shop', 'OrderDetail')
     sum_value = model.objects.filter(order=self).aggregate(sum_value=Sum(
         F('price') *
         F('quantity'), output_field=models.DecimalField()))['sum_value']
     if not sum_value:
         sum_value = 0
     return sum_value
示例#5
0
文件: views.py 项目: pc-mist/dartcms
    def get_data(self, context):
        PageModule = get_model('pages', 'PageModule')
        Page = get_model('pages', 'Page')

        try:
            module = PageModule.objects.get(pk=self.request.GET.get('selected_module'))
        except PageModule.DoesNotExist:
            module = None

        if module and module.related_model:
            model_path = module.related_model.split('.')
            app = model_path[0]
            model = model_path[1]
            try:
                RelatedModel = get_model(app, model)
                data = RelatedModel.objects.all()
            except (LookupError, ImportError):
                data = []
        else:
            data = []

        page_pk = self.request.GET.get('pk', 0)

        if page_pk != 0:
            page = Page.objects.get(pk=page_pk)
        else:
            page = None

        params = []

        for item in data:
            if page is not None and page.module == module and str(page.module_params) == str(item.pk):
                params.append({'label': str(item), 'value': item.pk, 'selected': True})
            else:
                params.append({'label': str(item), 'value': item.pk})

        params = sorted(params, key=lambda k: k['label'])

        return {
            'result': True,
            'data': params
        }
示例#6
0
文件: views.py 项目: pc-mist/dartcms
    def get_pages(self):
        target_id = self.request.GET.get('target')
        source_id = self.request.GET.get('source')

        if target_id and source_id:
            Page = get_model('pages', 'Page')

            target = Page.objects.get(pk=target_id)
            source = Page.objects.get(pk=source_id)

            return target, source

        raise Http404
示例#7
0
    def get_sections(self):
        target_id = self.request.GET.get('target')
        source_id = self.request.GET.get('source')

        if target_id and source_id:
            ProductSection = get_model('shop', 'ProductSection')

            target = ProductSection.objects.get(
                pk=target_id) if target_id != '0' else None
            source = ProductSection.objects.get(pk=source_id)

            return target, source

        raise Http404
示例#8
0
def get_ads(context, place, limit):
    if not hasattr(context['request'],
                   'page') or context['request'].page is None:
        return {}

    section = context['request'].page.ad_section
    place = AdPlace.objects.get(slug=place)

    ad_model = get_model('ads', 'Ad')

    ads = ad_model.objects.filter(
        section=section,
        place=place,
        date_from__lt=datetime.now(),
        date_to__gt=datetime.now()).order_by('?')[0:limit]

    return {'object_list': ads}
示例#9
0
    class Meta:
        model = get_model('pages', 'Page')
        exclude = ['url', 'date_created', 'date_changed', 'sort']
        widgets = {'module_params': forms.Select()}

        fieldsets = (('main', {
            'fields': (
                'parent',
                'slug',
                'title',
                'header',
                'menu_name',
                'menu_url',
                'redirect_url',
                'module',
                'module_params',
            ),
            'legend':
            _('Main')
        }), ('content', {
            'fields': (
                'before_content',
                'after_content',
            ),
            'legend': _('Content')
        }), ('ads', {
            'fields': ('ad_section', ),
            'legend': _('Ads')
        }), ('seo', {
            'fields': (
                'seo_keywords',
                'seo_description',
            ),
            'legend': _('SEO')
        }), ('advanced', {
            'fields': (
                'security_type',
                'user_groups',
                'is_enabled',
                'is_in_menu',
            ),
            'legend':
            _('Advanced')
        }))
示例#10
0
    def dispatch(self, request, *args, **kwargs):
        self.module = get_current_module(request.path)
        if self.module and self.module.config:
            self.config = self.module.config

            model_label = self.config.get('model', self.model)
            if model_label:
                app_label, model_name = model_label.split('.')
                self.model = get_model(app_label, model_name)

            form_config = self.config.get('form')
            if form_config:
                if 'form_class' in form_config:
                    app_label, form_class_name = form_config[
                        'form_class'].split('.')
                    self.form_class = get_form_class(app_label,
                                                     form_class_name)
                form_fields = form_config.get('fields', '__all__')
                exclude_fields = form_config.get('exclude', [])
            else:
                form_fields = '__all__'
                exclude_fields = []

            if self.form_class is None:
                self.form_class = modelform_factory(self.model,
                                                    fields=form_fields,
                                                    exclude=exclude_fields)

            if hasattr(self, 'grid_columns'):
                grid_config = self.config.get('grid')
                if grid_config:
                    self.grid_columns = grid_config.get(
                        'grid_columns', self.grid_columns)

                    search_config = grid_config.get('search')
                    if search_config:
                        self.search = search_config

                    self.ordering = grid_config.get('ordering')
                    self.model_properties = grid_config.get('model_properties')

        return super(AdminMixin, self).dispatch(request, *args, **kwargs)
示例#11
0
    class Meta:
        model = get_model('shop', 'ProductCatalog')
        exclude = []

        fieldsets = (('main', {
            'fields': (
                'slug',
                'name',
                'description',
            ),
            'legend': _('Main')
        }), ('seo', {
            'fields': (
                'seo_keywords',
                'seo_description',
            ),
            'legend': _('SEO')
        }), ('advanced', {
            'fields': (
                'image',
                'is_visible',
            ),
            'legend': _('Advanced')
        }))
示例#12
0
 def setup_model(self):
     form_type = get_model(
         'feedback', 'FormType').objects.get(pk=self.kwargs['form_type'])
     self.model = MESSAGES_MODELS_MAPPING.get(form_type.slug)
示例#13
0
# coding: utf-8
from django.forms import modelform_factory

from dartcms.utils.loading import get_model
from dartcms.views import (DeleteObjectView, GridView, InsertObjectView,
                           UpdateObjectView)

MESSAGES_MODELS_MAPPING = {
    'contact': get_model('feedback', 'ContactMessage'),
    'question': get_model('feedback', 'QuestionMessage'),
}


class DynamicModelMixin(object):
    def setup_model(self):
        form_type = get_model(
            'feedback', 'FormType').objects.get(pk=self.kwargs['form_type'])
        self.model = MESSAGES_MODELS_MAPPING.get(form_type.slug)

    def get_queryset(self):
        self.setup_model()
        return super(DynamicModelMixin, self).get_queryset()


class FeedbackModelMixin(DynamicModelMixin):
    def get_form_class(self):
        self.setup_model()
        return modelform_factory(self.model, exclude=['type'])


class MessagesGridView(DynamicModelMixin, GridView):
示例#14
0
 class Meta:
     model = get_model('shop', 'Order')
     exclude = ['user']
示例#15
0
文件: views.py 项目: pc-mist/dartcms
 def check_object(self):
     Page = get_model('pages', 'Page')
     return Page.objects.get(pk=self.request.GET.get('source'))
示例#16
0
文件: forms.py 项目: pc-mist/dartcms
 class Meta:
     model = get_model('shop', 'OrderDetail')
     exclude = []
示例#17
0
# -*- coding: utf-8 -*-
from dartcms.utils.loading import get_model
from django.contrib import admin

PageModule = get_model('pages', 'PageModule')
Page = get_model('pages', 'Page')


class PageModuleAdmin(admin.ModelAdmin):
    pass


admin.site.register(PageModule, PageModuleAdmin)


class PageAdmin(admin.ModelAdmin):
    pass


admin.site.register(Page, PageAdmin)
示例#18
0
def set_homepage_security(apps, schema):
    Page = get_model('pages', 'Page')
    Page.objects.filter(module__slug='homepage').update(
        security_type='DEFAULT')
示例#19
0
 class Meta:
     model = get_model('feeds', 'FeedItem')
     exclude = ['feed', 'slug']
示例#20
0
def get_user_model():
    app_label, model_name = getattr(settings, 'AUTH_USER_MODEL',
                                    'auth.User').split('.')
    return get_model(app_label, model_name)
示例#21
0
文件: urls.py 项目: pc-mist/dartcms
# -*- coding: utf-8 -*-
from django.conf.urls import url

from dartcms.utils.config import DartCMSConfig
from dartcms.utils.loading import get_model
from dartcms.views import (DeleteObjectView, GridView, InsertObjectView,
                           UpdateObjectView)

from .forms import FeedItemForm

FeedItem = get_model('feeds', 'FeedItem')

config = DartCMSConfig({
    'model': FeedItem,
    'parent_kwarg_name': 'feed',
    'parent_model_fk': 'feed_id',
    'grid': {
        'grid_columns': [
            {
                'field': 'name',
                'width': '60%'
            },
            {
                'field': 'is_visible',
                'width': '20%'
            },
            {
                'field': 'date_published',
                'width': '20%'
            },
        ],
示例#22
0
文件: admin.py 项目: pc-mist/dartcms
# -*- coding: utf-8 -*-
from django.contrib import admin

from dartcms.utils.loading import get_model

AdPlace = get_model('ads', 'AdPlace')
AdSection = get_model('ads', 'AdSection')


class AdPlaceAdmin(admin.ModelAdmin):
    pass


admin.site.register(AdPlace, AdPlaceAdmin)


class AdSectionAdmin(admin.ModelAdmin):
    pass


admin.site.register(AdSection, AdSectionAdmin)
示例#23
0
# -*- coding: utf-8 -*-
from dartcms.utils.config import DartCMSConfig
from dartcms.utils.loading import get_model
from django.forms import modelform_factory

app_name = 'feeds'

Feed = get_model('feeds', 'Feed')

config = DartCMSConfig({
    'model': Feed,
    'grid': {
        'grid_columns': [
            {
                'field': 'type',
                'width': '10%'
            },
            {
                'field': 'name',
                'width': '90%'
            },
        ],
        'additional_grid_actions': [{
            'url':
            'items',
            'kwarg_name':
            'feed',
            'include_urls':
            'dartcms.apps.feeds.items.urls'
        }]
    },
示例#24
0
文件: urls.py 项目: pc-mist/dartcms
# -*- coding: utf-8 -*-
from django.conf.urls import url
from django.views.decorators.csrf import csrf_exempt

from dartcms.utils.config import DartCMSConfig
from dartcms.utils.loading import get_model
from dartcms.views import GridView

from .forms import PageForm
from .views import (AppendPageView, DeletePageView, GetTreeView,
                    InsertPageView, LoadModuleParamsView, MovePageView,
                    UpdatePageView)

Page = get_model('pages', 'Page')

config = DartCMSConfig({
    'model': Page,
    'grid': {
        'grid_columns': [
            {
                'field': 'title',
                'width': '60%'
            },
            {
                'field': 'url',
                'width': '20%'
            },
            {
                'field': 'module',
                'width': '20%'
            },
示例#25
0
# coding: utf-8
from django import forms
from django.utils.translation import ugettext_lazy as _
from form_utils.forms import BetterModelForm

from dartcms.apps.users.models import UserGroup
from dartcms.utils.loading import get_model

PageModule = get_model('pages', 'PageModule')
AdSection = get_model('ads', 'AdSection')


class PageForm(BetterModelForm):
    class Meta:
        model = get_model('pages', 'Page')
        exclude = ['url', 'date_created', 'date_changed', 'sort']
        widgets = {
            'module_params': forms.Select()
        }

        fieldsets = (
            ('main', {'fields': (
                'parent',
                'slug',
                'title',
                'header',
                'menu_name',
                'menu_url',
                'redirect_url',
                'module',
                'module_params',
示例#26
0
文件: models.py 项目: pc-mist/dartcms
# coding: utf-8

from django.db.models.signals import post_save, pre_delete, pre_save

from dartcms.utils.loading import get_model, is_model_registered

from .abstract_models import *
from .signals import *

__all__ = [
    'PageModule'
]

if is_model_registered('pages', 'Page'):
    page_model = get_model('pages', 'Page')
else:
    class Page(AbstractPage):
        pass

    __all__.append('Page')

    page_model = Page

pre_save.connect(pre_save_handler, sender=page_model)
post_save.connect(post_save_handler, sender=page_model)
pre_delete.connect(pre_delete_handler, sender=page_model)