import suit.widgets from django import forms from django.contrib.admin.options import FORMFIELD_FOR_DBFIELD_DEFAULTS from django.db import models FORMFIELD_FOR_DBFIELD_DEFAULTS.update({ models.DateTimeField: { 'form_class': forms.SplitDateTimeField, 'widget': suit.widgets.SuitSplitDateTimeWidget }, models.DateField: {'widget': suit.widgets.SuitDateWidget}, models.TimeField: {'widget': suit.widgets.SuitTimeWidget}, })
from ella.newman.models import DenormalizedCategoryUserRole, AdminUserDraft, AdminHelpItem from ella.newman.decorators import require_AJAX from ella.newman.permission import is_category_model, model_category_fk, model_category_fk_value, applicable_categories from ella.newman.permission import has_category_permission, get_permission, permission_filtered_model_qs, is_category_fk from ella.newman.forms import DraftForm from ella.newman.xoptions import XModelAdmin from ella.newman.licenses.models import License from ella.newman.config import STATUS_OK, STATUS_FORM_ERROR, STATUS_VAR_MISSING, STATUS_OBJECT_NOT_FOUND, AUTOSAVE_MAX_AMOUNT DEFAULT_LIST_PER_PAGE = getattr(settings, 'NEWMAN_LIST_PER_PAGE', 25) log = logging.getLogger('ella.newman') # update standard FORMFIELD_FOR_DBFIELD_DEFAULTS FORMFIELD_FOR_DBFIELD_DEFAULTS.update({ models.DateTimeField: {'widget': widgets.DateTimeWidget}, models.DateField: {'widget': widgets.DateWidget}, }) def formfield_for_dbfield_factory(cls, db_field, **kwargs): formfield_overrides = dict(FORMFIELD_FOR_DBFIELD_DEFAULTS, **cls.formfield_overrides) custom_param_names = ('request', 'user', 'model', 'super_field', 'instance') custom_params = {} # move custom kwargs from kwargs to custom_params for key in kwargs: if key not in custom_param_names: continue custom_params[key] = kwargs[key] if key == 'request': custom_params['user'] = custom_params[key].user for key in custom_param_names: kwargs.pop(key, None)
from django.views.decorators.csrf import csrf_protect from real_estate_app import widgets from real_estate_app.admin.actions import delete_selected_popup, make_enabled, make_disabled from real_estate_app.conf.settings import REAL_ESTATE_APP_AJAX_SEARCH, MEDIA_PREFIX as MEDIA_PREFIX_REAL_ESTATE from real_estate_app.utils import AutoCompleteObject from real_estate_app.apps.propertys.models import Property #TODO: make a wrapp function for delete elements with Property references. csrf_protect_m = method_decorator(csrf_protect) FORMFIELD_FOR_DBFIELD_DEFAULTS.update({ models.DateTimeField: { 'form_class': forms.SplitDateTimeField, 'widget': widgets.CustomAdminSplitDateTime }, models.DateField: {'widget':widgets.CustomAdminDateWidget}, }) class FaceBoxModelAdmin(ModelAdmin): def _media(self): from django.conf import settings from real_estate_app.conf.settings import MEDIA_REAL_ESTATE js = ['js/core.js', 'js/admin/RelatedObjectLookups.js', 'js/jquery.min.js', 'js/jquery.init.js'] jscustom = [] if self.actions is not None:
class AdvancedImageField(AdvancedFileField, ImageField): attr_class = AdvancedImageFieldFile form_class = ClearableFormImageField def __init__(self, verbose_name=None, name=None, show_image=True, **kwargs): self.show_image = show_image super().__init__(verbose_name, name, **kwargs) def formfield(self, **kwargs): kwargs['form_class'] = self.form_class kwargs['clearable'] = self.clearable kwargs['show_image'] = self.show_image return super().formfield(**kwargs) # Register fields to use custom widgets in the Admin FORMFIELD_FOR_DBFIELD_DEFAULTS.update({ AdvancedFileField: { 'widget': ClearableFileInput, }, AdvancedImageField: { 'widget': ClearableImageFileInput, }, })
User.objects.create_superuser('admin', '*****@*****.**', 'admin') # Unauth # Fix datetime for slect django-suit from django.db import models as django_models from django import forms from django.contrib.admin.options import FORMFIELD_FOR_DBFIELD_DEFAULTS import suit.widgets FORMFIELD_FOR_DBFIELD_DEFAULTS.update({ django_models.DateTimeField: { 'form_class': forms.SplitDateTimeField, 'widget': suit.widgets.SuitSplitDateTimeWidget }, django_models.DateField: { 'widget': suit.widgets.SuitDateWidget }, django_models.TimeField: { 'widget': suit.widgets.SuitTimeWidget }, }) # End fix datetime for slect django-suit # Register your models here. from .models import Choice, Question class ChoiceInline(admin.TabularInline): model = Choice extra = 3
# Leaving commented lines for currently unsupported fields FORMFIELD_FOR_DBFIELD_DEFAULTS.update({ rest_fields.DateTimeField: { # 'form_class': forms.SplitDateTimeField, 'widget': widgets.AdminSplitDateTime }, rest_fields.DateField: { 'widget': widgets.AdminDateWidget }, # rest_fields.TimeField: {'widget': widgets.AdminTimeWidget}, rest_fields.TextField: { 'widget': widgets.AdminTextareaWidget }, rest_fields.URLField: { 'widget': widgets.AdminURLFieldWidget }, rest_fields.IntegerField: { 'widget': widgets.AdminIntegerFieldWidget }, # rest_fields.BigIntegerField: {'widget': widgets.AdminBigIntegerFieldWidget}, rest_fields.CharField: { 'widget': widgets.AdminTextInputWidget }, rest_fields.JSONField: { 'widget': widgets.AdminTextareaWidget }, # rest_fields.ImageField: {'widget': widgets.AdminFileWidget}, # rest_fields.FileField: {'widget': widgets.AdminFileWidget}, # rest_fields.EmailField: {'widget': widgets.AdminEmailInputWidget}, })
return value return self.markdown_value_class(value) def pre_save(self, instance, add): value = getattr(instance, self.name, None) if self.markdown_cache_field and value: setattr(instance, self.markdown_cache_field, value.markdown()) return super().pre_save(instance, add) def formfield(self, **kwargs): return super().formfield(**{ 'form_class': self.markdown_form_class, 'value_class': self.markdown_value_class, **kwargs, }) class MarkdownCharField(BaseMarkdownModelField, models.CharField): pass class MarkdownTextField(BaseMarkdownModelField, models.TextField): pass # Register fields to use custom widgets in the Admin FORMFIELD_FOR_DBFIELD_DEFAULTS.update({ MarkdownCharField: {'widget': MarkdownTextInput,}, MarkdownTextField: {'widget': MarkdownTextarea,}, })
from django.conf import settings from django.contrib.admin.options import FORMFIELD_FOR_DBFIELD_DEFAULTS from django.db import models as django_models from django.core.exceptions import ValidationError import suit.widgets from teams.models import * from match.models import * from research.models import * DEBUG_COMPUTE_RANKING = False FORMFIELD_FOR_DBFIELD_DEFAULTS.update({ django_models.TimeField: { 'widget': suit.widgets.SuitTimeWidget }, }) PLANNING_SLOT_MINUTES = settings.PJC['planning_slot_minutes'] PLANNING_SLOT_SECONDS = PLANNING_SLOT_MINUTES * 60 SCHEDULE_MIN = arrow.get(settings.PJC['start_time'], 'HH:mm').time() SCHEDULE_MAX = arrow.get(settings.PJC['end_time'], 'HH:mm').replace(seconds=-2 * PLANNING_SLOT_SECONDS).time() time_validators = [ validators.MinValueValidator( SCHEDULE_MIN, message=SCHEDULE_MIN.strftime( "L'heure de passage doit être après %H:%M")),
from real_estate_app import widgets from real_estate_app.admin.actions import delete_selected_popup, make_enabled, make_disabled from real_estate_app.conf.settings import REAL_ESTATE_APP_AJAX_SEARCH, MEDIA_PREFIX as MEDIA_PREFIX_REAL_ESTATE from real_estate_app.utils import AutoCompleteObject from real_estate_app.apps.propertys.models import Property #TODO: make a wrapp function for delete elements with Property references. csrf_protect_m = method_decorator(csrf_protect) FORMFIELD_FOR_DBFIELD_DEFAULTS.update({ models.DateTimeField: { 'form_class': forms.SplitDateTimeField, 'widget': widgets.CustomAdminSplitDateTime }, models.DateField: { 'widget': widgets.CustomAdminDateWidget }, }) class FaceBoxModelAdmin(ModelAdmin): def _media(self): from django.conf import settings from real_estate_app.conf.settings import MEDIA_REAL_ESTATE js = [ 'js/core.js', 'js/admin/RelatedObjectLookups.js', 'js/jquery.min.js', 'js/jquery.init.js' ]
# if no other object of this type references the file # and it's not the default value for future objects, # delete it from the backend if not count and file.name != self.default and self.erasable: file.delete(save=save) # try to close the file, so it doesn't tie up resources. file.closed or file.close() class AdvancedImageField(AdvancedFileField, ImageField): attr_class = AdvancedImageFieldFile form_class = ClearableFormImageField def __init__(self, verbose_name=None, name=None, show_image=True, **kwargs): self.show_image = show_image super().__init__(verbose_name, name, **kwargs) def formfield(self, **kwargs): kwargs['form_class'] = self.form_class kwargs['clearable'] = self.clearable kwargs['show_image'] = self.show_image return super().formfield(**kwargs) # Register fields to use custom widgets in the Admin FORMFIELD_FOR_DBFIELD_DEFAULTS.update({ AdvancedFileField: {'widget': ClearableFileInput,}, AdvancedImageField: {'widget': ClearableImageFileInput,}, })
if self.markdown_cache_field and value: setattr(instance, self.markdown_cache_field, value.markdown()) return super().pre_save(instance, add) def formfield(self, **kwargs): return super().formfield( **{ 'form_class': self.markdown_form_class, 'value_class': self.markdown_value_class, **kwargs, }) class MarkdownCharField(BaseMarkdownModelField, models.CharField): pass class MarkdownTextField(BaseMarkdownModelField, models.TextField): pass # Register fields to use custom widgets in the Admin FORMFIELD_FOR_DBFIELD_DEFAULTS.update({ MarkdownCharField: { 'widget': MarkdownTextInput, }, MarkdownTextField: { 'widget': MarkdownTextarea, }, })