diff --git a/.project b/.project
new file mode 100644
index 0000000..7602df1
--- /dev/null
+++ b/.project
@@ -0,0 +1,17 @@
+
+
+ django-settings
+
+
+
+
+
+ org.python.pydev.PyDevBuilder
+
+
+
+
+
+ org.python.pydev.pythonNature
+
+
diff --git a/.pydevproject b/.pydevproject
new file mode 100644
index 0000000..a698950
--- /dev/null
+++ b/.pydevproject
@@ -0,0 +1,8 @@
+
+
+
+ /${PROJECT_DIR_NAME}
+
+ python interpreter
+ Planreforma Python 3
+
diff --git a/.settings/org.eclipse.core.resources.prefs b/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..dd0c2d6
--- /dev/null
+++ b/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,6 @@
+eclipse.preferences.version=1
+encoding//django_settings/admin.py=utf-8
+encoding//django_settings/cache.py=utf-8
+encoding//django_settings/dataapi.py=utf-8
+encoding//django_settings/forms.py=utf-8
+encoding//django_settings/templatetags/settings_admin_urls.py=utf-8
diff --git a/README.rst b/README.rst
index fd0792f..b0e304a 100644
--- a/README.rst
+++ b/README.rst
@@ -1,26 +1,14 @@
django-settings
===============
-
-.. image:: https://badge.fury.io/py/django-settings.png
- :target: https://badge.fury.io/py/django-settings
-
-.. image:: https://api.travis-ci.org/jqb/django-settings.png?branch=master
- :target: https://travis-ci.org/jqb/django-settings
-
-
-Django reusable application for storing global project settings in database.
-
-By project settings I mean things like admin mail, some default values like
-default_post_limit etc. Values are validated depending their type.
-Begining with ver 1.3 you can register your own settings values.
+Forked from https://github.com/jqb/django-settings to allow use in Django 2.x / Python 3.x
Supported versions
------------------
-* Python: 2.6, 2.7 (python 2.6 requires importlib)
-* Django: 1.3, 1.4, 1.5
+* Python: 3.6
+* Django: 2.2
API
diff --git a/django_settings/admin.py b/django_settings/admin.py
index fb5f1d3..ec94690 100644
--- a/django_settings/admin.py
+++ b/django_settings/admin.py
@@ -1,6 +1,6 @@
# -*- coding: utf-8 -*-
# framework
-from django.core.urlresolvers import reverse
+from django.urls import reverse
from django.contrib import admin
from django.contrib.admin.views import main as admin_views
from django.utils.translation import ugettext as _
@@ -50,7 +50,7 @@ def get_setting_model(self, obj, request):
if obj:
return obj.setting_object.__class__
try:
- typename = request.REQUEST['typename'] # NOTE: both lines might
+ typename = request.GET['typename'] # NOTE: both lines might
return dataapi.data.model_for_name(typename) # raise KeyError
except KeyError:
raise Http404
@@ -89,7 +89,7 @@ def response_add(self, request, obj, post_url_continue='../%s/'):
def response_change(self, request, obj):
response = super(SettingAdmin, self).response_change(request, obj)
app_label = obj._meta.app_label
- module_name = obj._meta.module_name
+ module_name = obj._meta.model_name
if '_addanother' in request.POST:
url_name = 'admin:%s_%s_add' % (app_label, module_name)
diff --git a/django_settings/api.py b/django_settings/api.py
index 5c43dc6..8c6810a 100644
--- a/django_settings/api.py
+++ b/django_settings/api.py
@@ -2,7 +2,7 @@
# Public module API
from .moduleregistry import RegisterError # noqa
from .dataapi import DataAPI, data # noqa
-from .lazyimport import lazyimport
+
# shortcuts
get = data.get
@@ -13,6 +13,7 @@
# django settings-dependent parts should be loadded lazily
+from .lazyimport import lazyimport
db = lazyimport({ # this is also part of public api
'Model': 'django_settings.models',
'Setting': 'django_settings.models',
@@ -20,15 +21,6 @@
})
# expose methods
-
-
-def register(*a, **kw):
- db.registry.register(*a, **kw)
-
-
-def unregister(*a, **kw):
- db.registry.unregister(*a, **kw)
-
-
-def unregister_all(*a, **kw):
- db.registry.unregister_all(*a, **kw)
+register = lambda *a, **kw: db.registry.register(*a, **kw)
+unregister = lambda *a, **kw: db.registry.unregister(*a, **kw)
+unregister_all = lambda *a, **kw: db.registry.unregister_all(*a, **kw)
diff --git a/django_settings/cache.py b/django_settings/cache.py
index 4a3ebb2..6011d19 100644
--- a/django_settings/cache.py
+++ b/django_settings/cache.py
@@ -23,10 +23,7 @@ def __init__(self, prefix):
self.prefix = prefix
def convert(self, arg):
- if isinstance(arg, unicode):
- return arg.encode(django.settings.DEFAULT_CHARSET)
- else:
- return str(arg)
+ return str(arg)
def args_to_key(self, args):
return ":".join(map(self.convert, args))
diff --git a/django_settings/forms.py b/django_settings/forms.py
index c8769ef..28c4a60 100644
--- a/django_settings/forms.py
+++ b/django_settings/forms.py
@@ -23,7 +23,7 @@ def __init__(self, *args, **kwargs):
self.fields['value'].initial = getattr(instance.setting_object, 'value', '')
def setting_changed(self, instance):
- django_settings.DataAPI.setting_changed(instance)
+ # django_settings.DataAPI.setting_changed(instance)
return instance
def save(self, *args, **kwargs):
diff --git a/django_settings/models.py b/django_settings/models.py
index 57913bd..6e5503a 100644
--- a/django_settings/models.py
+++ b/django_settings/models.py
@@ -2,12 +2,10 @@
# framework
from django.db import models
from django.contrib.contenttypes.models import ContentType
-from django.contrib.contenttypes import generic
+from django.contrib.contenttypes import fields
from django.utils.translation import ugettext_lazy as _
from django.dispatch import receiver
-from django.db.models.signals import post_syncdb
-
-from .moduleregistry import new_registry
+from django.db.models.signals import post_migrate
# app local
from . import conf
@@ -59,15 +57,16 @@ class Meta:
objects = SettingManager()
- setting_type = models.ForeignKey(ContentType)
+ setting_type = models.ForeignKey(ContentType, on_delete='CASCADE')
setting_id = models.PositiveIntegerField()
- setting_object = generic.GenericForeignKey('setting_type', 'setting_id')
+ setting_object = fields.GenericForeignKey('setting_type', 'setting_id')
name = models.CharField(max_length=255, unique=conf.DJANGO_SETTINGS_UNIQUE_NAMES)
# Extentions #######################################################
+from .moduleregistry import new_registry
# we will extend this module dynamicaly via "settingsmodels" modules
registry = new_registry(__name__)
@@ -111,7 +110,7 @@ class Meta:
# end ###################
-@receiver(post_syncdb)
+@receiver(post_migrate)
def handle_post_syncdb(sender, **kwargs):
from django_settings.dataapi import initialize_data
initialize_data()
diff --git a/django_settings/templatetags/settings_admin_urls.py b/django_settings/templatetags/settings_admin_urls.py
index e76e073..dfd105c 100644
--- a/django_settings/templatetags/settings_admin_urls.py
+++ b/django_settings/templatetags/settings_admin_urls.py
@@ -1,5 +1,5 @@
# -*- coding: utf-8 -*-
-from django.core.urlresolvers import reverse
+from django.urls import reverse
from django import template
register = template.Library()
@@ -8,7 +8,7 @@
@register.filter
def add_url_for_setting_type(admin_change_list, type_name):
cl = admin_change_list
- url_name = 'admin:%s_%s_%s' % (cl.opts.app_label, cl.opts.module_name, 'add')
+ url_name = 'admin:%s_%s_%s' % (cl.opts.app_label, cl.opts.model_name, 'add')
query = "typename=%(type)s%(popup)s" % dict(
type=type_name,
popup='_popup=1' if cl.is_popup else '',