mirror of
https://github.com/jazzband/django-constance.git
synced 2026-04-24 00:44:43 +00:00
parent
15b9e73cb8
commit
23e8557c83
2 changed files with 22 additions and 7 deletions
|
|
@ -1,11 +1,13 @@
|
|||
from collections import OrderedDict
|
||||
from datetime import datetime, date, time, timedelta
|
||||
from decimal import Decimal
|
||||
import hashlib
|
||||
from operator import itemgetter
|
||||
from collections import OrderedDict
|
||||
import hashlib
|
||||
import os
|
||||
|
||||
from django import forms, VERSION
|
||||
from django.apps import apps
|
||||
from django.conf import settings as django_settings
|
||||
from django.conf.urls import url
|
||||
from django.contrib import admin, messages
|
||||
from django.contrib.admin import widgets
|
||||
|
|
@ -20,9 +22,9 @@ from django.utils.formats import localize
|
|||
from django.utils.module_loading import import_string
|
||||
from django.utils.translation import ugettext_lazy as _
|
||||
|
||||
|
||||
from . import LazyConfig, settings
|
||||
|
||||
|
||||
config = LazyConfig()
|
||||
|
||||
|
||||
|
|
@ -133,6 +135,14 @@ class ConstanceForm(forms.Form):
|
|||
self.initial['version'] = version_hash.hexdigest()
|
||||
|
||||
def save(self):
|
||||
for file_field in self.files:
|
||||
file = self.cleaned_data[file_field]
|
||||
file_path = os.path.join(django_settings.MEDIA_ROOT, file.name)
|
||||
with open(file_path, 'wb+') as destination:
|
||||
for chunk in file.chunks():
|
||||
destination.write(chunk)
|
||||
self.cleaned_data[file_field] = file.name
|
||||
|
||||
for name in settings.CONFIG:
|
||||
if getattr(config, name) != self.cleaned_data[name]:
|
||||
setattr(config, name, self.cleaned_data[name])
|
||||
|
|
@ -180,8 +190,10 @@ class ConstanceAdmin(admin.ModelAdmin):
|
|||
'value': localize(value),
|
||||
'modified': localize(value) != localize(default),
|
||||
'form_field': form[name],
|
||||
'is_file': isinstance(form[name].field.widget, forms.FileInput),
|
||||
'is_checkbox': isinstance(
|
||||
form[name].field.widget, forms.CheckboxInput),
|
||||
form[name].field.widget, forms.CheckboxInput
|
||||
),
|
||||
}
|
||||
|
||||
return config_value
|
||||
|
|
@ -202,7 +214,9 @@ class ConstanceAdmin(admin.ModelAdmin):
|
|||
form_cls = self.get_changelist_form(request)
|
||||
form = form_cls(initial=initial)
|
||||
if request.method == 'POST':
|
||||
form = form_cls(data=request.POST, initial=initial)
|
||||
form = form_cls(
|
||||
data=request.POST, files=request.FILES, initial=initial
|
||||
)
|
||||
if form.is_valid():
|
||||
form.save()
|
||||
messages.add_message(
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
{% load admin_static admin_list i18n %}
|
||||
{% load admin_static admin_list static i18n %}
|
||||
<table>
|
||||
<thead>
|
||||
<tr>
|
||||
|
|
@ -18,12 +18,13 @@
|
|||
</td>
|
||||
<td>
|
||||
{{ item.form_field.errors }}
|
||||
{% if item.is_file %}{% trans "Current file" %}: <a href="{% get_media_prefix as MEDIA_URL %}{{ MEDIA_URL }}{{ item.value }}" target="_blank">{{ item.value }}</a>{% endif %}
|
||||
{{ item.form_field }}
|
||||
<br>
|
||||
<a href="#" class="reset-link" data-field-id="{{ item.form_field.auto_id }}" data-default="{% spaceless %}
|
||||
{% if item.is_checkbox %}{% if item.raw_default %} true {% else %} false {% endif %}
|
||||
{% else %}{{ item.default }}{% endif %}
|
||||
{% endspaceless %}">Reset to default</a>
|
||||
{% endspaceless %}">{% trans "Reset to default" %}</a>
|
||||
</td>
|
||||
<td>
|
||||
{% if item.modified %}
|
||||
|
|
|
|||
Loading…
Reference in a new issue