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 '',