41 lines
1.3 KiB
Python
41 lines
1.3 KiB
Python
from django.db import models
|
|
from django import forms
|
|
|
|
from app.base.forms.widgets.date_widget import DateWithNow
|
|
from app.base.forms.widgets.datetime_widget import DateTimeWithNow
|
|
|
|
from decimal import Decimal
|
|
|
|
|
|
class AutosizeTextarea(forms.Textarea):
|
|
template_name = 'forms/widgets/textarea.html'
|
|
|
|
|
|
class TextField(models.TextField):
|
|
def formfield(self, **kwargs):
|
|
if 'widget' not in kwargs: # only if no other is set (admin UI)
|
|
kwargs['widget'] = AutosizeTextarea
|
|
return super().formfield(**kwargs)
|
|
|
|
|
|
class DateTimeField(models.DateTimeField):
|
|
def formfield(self, **kwargs):
|
|
if 'widget' not in kwargs: # only if no other is set (admin UI)
|
|
kwargs['widget'] = DateTimeWithNow
|
|
return super().formfield(**kwargs)
|
|
|
|
|
|
class DateField(models.DateField):
|
|
def formfield(self, **kwargs):
|
|
if 'widget' not in kwargs: # only if no other is set (admin UI)
|
|
kwargs['widget'] = DateWithNow
|
|
return super().formfield(**kwargs)
|
|
|
|
|
|
class CurrencyField(models.DecimalField):
|
|
def __init__(self, *args, **kwargs) -> None:
|
|
kwargs['decimal_places'] = kwargs.get('decimal_places', 2)
|
|
kwargs['max_digits'] = kwargs.get('max_digits', 10)
|
|
kwargs['default'] = kwargs.get('default', Decimal(0))
|
|
super().__init__(*args, **kwargs)
|