Example #1
0
class AdminExportCSVMap(BaseModel):
    admin_models = get_admin_models()

    model = models.CharField(
        max_length=255,
        choices=((model_name, model_name)
                 for model_name in sorted(admin_models.keys())),
        verbose_name=pgettext_lazy('AdminExportCSVMap', 'model'))
    title = models.CharField(max_length=255,
                             verbose_name=pgettext_lazy(
                                 'AdminExportCSVMap', 'title'))
    field = models.CharField(max_length=255,
                             verbose_name=pgettext_lazy(
                                 'AdminExportCSVMap', 'field'))
    order = models.PositiveIntegerField(
        verbose_name=pgettext_lazy('AdminExportCSVMap', 'order'))
    enabled = models.BooleanField(default=True,
                                  verbose_name=pgettext_lazy(
                                      'AdminExportCSVMap', 'enabled'))

    class Meta:
        # Define the database table
        db_table = 'website_admin_export_csv_maps'
        ordering = ['model', 'order', 'title', 'field']
        unique_together = (('model', 'title'), ('model', 'order'))
        verbose_name = pgettext_lazy('AdminExportCSVMap',
                                     'Admin Export CSV Map')
        verbose_name_plural = pgettext_lazy('AdminExportCSVMap',
                                            'Admin Export CSV Maps')

    def __str__(self):
        return '{MODEL} - {FIELD}'.format(MODEL=self.model, FIELD=self.field)
Example #2
0
class AdminListDisplayLink(BaseModel):
    admin_models = get_admin_models()

    model = models.CharField(
        max_length=255,
        choices=((model_name, model_name)
                 for model_name in sorted(admin_models.keys())),
        verbose_name=pgettext_lazy('AdminListDisplayLink', 'model'))
    field = models.CharField(max_length=255,
                             verbose_name=pgettext_lazy(
                                 'AdminListDisplayLink', 'field'))
    order = models.PositiveIntegerField(
        verbose_name=pgettext_lazy('AdminListDisplayLink', 'order'))
    enabled = models.BooleanField(default=True,
                                  verbose_name=pgettext_lazy(
                                      'AdminListDisplayLink', 'enabled'))

    class Meta:
        # Define the database table
        db_table = 'utility_admin_list_display_links'
        ordering = ['model', 'order']
        unique_together = (('model', 'field'), ('model', 'order'))
        verbose_name = pgettext_lazy('AdminListDisplayLink',
                                     'Admin List Display Link')
        verbose_name_plural = pgettext_lazy('AdminListDisplayLink',
                                            'Admin List Display Links')

    def __str__(self):
        return '{MODEL} - {FIELD}'.format(MODEL=self.model, FIELD=self.field)
Example #3
0
class AdminSearchable(BaseModel):
    admin_models = get_admin_models()

    model = models.CharField(
        max_length=255,
        choices=((model_name, model_name)
                 for model_name in sorted(admin_models.keys())),
        verbose_name=pgettext_lazy('AdminSearchable', 'model'))
    field = models.CharField(max_length=255,
                             verbose_name=pgettext_lazy(
                                 'AdminSearchable', 'field'))
    ref_model = models.CharField(
        max_length=255,
        choices=((model_name, model_name)
                 for model_name in sorted(admin_models.keys())),
        verbose_name=pgettext_lazy('AdminSearchable', 'referenced model'))
    ref_field = models.CharField(max_length=255,
                                 verbose_name=pgettext_lazy(
                                     'AdminSearchable', 'referenced field'))
    description = models.TextField(blank=True,
                                   verbose_name=pgettext_lazy(
                                       'AdminSearchable', 'description'))
    use_select2 = models.BooleanField(
        verbose_name=pgettext_lazy('AdminSearchable', 'use select 2'))

    class Meta:
        # Define the database table
        db_table = 'website_admin_searchable'
        ordering = ['model', 'field']
        unique_together = ('model', 'field')
        verbose_name = pgettext_lazy('AdminSearchable', 'Admin Searchable')
        verbose_name_plural = pgettext_lazy('AdminSearchable',
                                            'Admin Searchables')

    def __str__(self):
        return '{MODEL} - {FIELD}'.format(MODEL=self.model, FIELD=self.field)
Example #4
0
##

from django.contrib import admin
from django.db.utils import OperationalError

from .models import (AdminListDisplay, AdminListDisplayAdmin,
                     AdminListDisplayLink, AdminListDisplayLinkAdmin,
                     AdminListFilter, AdminListFilterAdmin)

from utility.misc import get_admin_models, get_class_from_module

admin.site.register(AdminListDisplay, AdminListDisplayAdmin)
admin.site.register(AdminListDisplayLink, AdminListDisplayLinkAdmin)
admin.site.register(AdminListFilter, AdminListFilterAdmin)

admin_models = get_admin_models()

# Customize list_display
try:
    # Clear or initialize the model list_display
    for model_name in admin_models:
        admin_models[model_name].list_display = []
    # Add the fields to model list_display
    for item in AdminListDisplay.objects.filter(enabled=True).order_by(
            'model', 'order'):
        # Include only existing models
        if item.model in admin_models:
            admin_models[item.model].list_display.append(item.field)
except OperationalError:
    # If the model AdminListDisplay doesn't yet exist skip the customization
    pass