diff --git a/requirements.txt b/requirements.txt index 630e8435ba..a299b19ca3 100644 --- a/requirements.txt +++ b/requirements.txt @@ -6,3 +6,4 @@ Django>=1.5.8,<1.6 Djblets==0.6.14 django-compressor==1.4 django-statici18n==1.1.2 +django-constance[database]==1.1.1 diff --git a/thirdpart/constance/__init__.py b/thirdpart/constance/__init__.py deleted file mode 100644 index db2511f7f4..0000000000 --- a/thirdpart/constance/__init__.py +++ /dev/null @@ -1,13 +0,0 @@ -from django.utils.functional import LazyObject - -__version__ = '1.0.1' - -default_app_config = 'constance.apps.ConstanceConfig' - - -class LazyConfig(LazyObject): - def _setup(self): - from .base import Config - self._wrapped = Config() - -config = LazyConfig() diff --git a/thirdpart/constance/admin.py b/thirdpart/constance/admin.py deleted file mode 100644 index 6e68ee4342..0000000000 --- a/thirdpart/constance/admin.py +++ /dev/null @@ -1,187 +0,0 @@ -from datetime import datetime, date, time -from decimal import Decimal -import hashlib -from operator import itemgetter - -from django import forms -from django.contrib import admin, messages -from django.contrib.admin import widgets -from django.contrib.admin.options import csrf_protect_m -from django.core.exceptions import PermissionDenied, ImproperlyConfigured -from django.forms import fields -from django.http import HttpResponseRedirect -from django.shortcuts import render_to_response -from django.template.context import RequestContext -from django.utils import six -from django.utils.formats import localize -from django.utils.translation import ugettext_lazy as _ - -try: - from django.utils.encoding import smart_bytes -except ImportError: - from django.utils.encoding import smart_str as smart_bytes - -try: - from django.conf.urls import patterns, url -except ImportError: # Django < 1.4 - from django.conf.urls.defaults import patterns, url - - -from . import LazyConfig, settings - -config = LazyConfig() - - -NUMERIC_WIDGET = forms.TextInput(attrs={'size': 10}) - -INTEGER_LIKE = (fields.IntegerField, {'widget': NUMERIC_WIDGET}) -STRING_LIKE = (fields.CharField, { - 'widget': forms.Textarea(attrs={'rows': 3}), - 'required': False, -}) - -FIELDS = { - bool: (fields.BooleanField, {'required': False}), - int: INTEGER_LIKE, - Decimal: (fields.DecimalField, {'widget': NUMERIC_WIDGET}), - str: STRING_LIKE, - datetime: (fields.DateTimeField, {'widget': widgets.AdminSplitDateTime}), - date: (fields.DateField, {'widget': widgets.AdminDateWidget}), - time: (fields.TimeField, {'widget': widgets.AdminTimeWidget}), - float: (fields.FloatField, {'widget': NUMERIC_WIDGET}), -} - -if not six.PY3: - FIELDS.update({ - long: INTEGER_LIKE, - unicode: STRING_LIKE, - }) - - -class ConstanceForm(forms.Form): - version = forms.CharField(widget=forms.HiddenInput) - - def __init__(self, initial, *args, **kwargs): - super(ConstanceForm, self).__init__(*args, initial=initial, **kwargs) - version_hash = hashlib.md5() - - for name, (default, help_text) in settings.CONFIG.items(): - config_type = type(default) - if config_type not in FIELDS: - raise ImproperlyConfigured(_("Constance doesn't support " - "config values of the type " - "%(config_type)s. Please fix " - "the value of '%(name)s'.") - % {'config_type': config_type, - 'name': name}) - field_class, kwargs = FIELDS[config_type] - self.fields[name] = field_class(label=name, **kwargs) - - version_hash.update(smart_bytes(initial.get(name, ''))) - self.initial['version'] = version_hash.hexdigest() - - def save(self): - for name in settings.CONFIG: - setattr(config, name, self.cleaned_data[name]) - - def clean_version(self): - value = self.cleaned_data['version'] - if value != self.initial['version']: - raise forms.ValidationError(_('The settings have been modified ' - 'by someone else. Please reload the ' - 'form and resubmit your changes.')) - return value - - -class ConstanceAdmin(admin.ModelAdmin): - - def get_urls(self): - info = self.model._meta.app_label, self.model._meta.module_name - return patterns('', - url(r'^$', - self.admin_site.admin_view(self.changelist_view), - name='%s_%s_changelist' % info), - url(r'^$', - self.admin_site.admin_view(self.changelist_view), - name='%s_%s_add' % info), - ) - - @csrf_protect_m - def changelist_view(self, request, extra_context=None): - # First load a mapping between config name and default value - if not self.has_change_permission(request, None): - raise PermissionDenied - default_initial = ((name, default) - for name, (default, help_text) in settings.CONFIG.items()) - # Then update the mapping with actually values from the backend - initial = dict(default_initial, - **dict(config._backend.mget(settings.CONFIG.keys()))) - form = ConstanceForm(initial=initial) - if request.method == 'POST': - form = ConstanceForm(data=request.POST, initial=initial) - if form.is_valid(): - form.save() - # In django 1.5 this can be replaced with self.message_user - messages.add_message( - request, - messages.SUCCESS, - _('Live settings updated successfully.'), - ) - return HttpResponseRedirect('.') - context = { - 'config': [], - 'title': _('Constance config'), - 'app_label': 'constance', - 'opts': Config._meta, - 'form': form, - 'media': self.media + form.media, - } - for name, (default, help_text) in settings.CONFIG.items(): - # First try to load the value from the actual backend - value = initial.get(name) - # Then if the returned value is None, get the default - if value is None: - value = getattr(config, name) - context['config'].append({ - 'name': name, - 'default': localize(default), - 'help_text': _(help_text), - 'value': localize(value), - 'modified': value != default, - 'form_field': form[name], - }) - context['config'].sort(key=itemgetter('name')) - context_instance = RequestContext(request, - current_app=self.admin_site.name) - return render_to_response('admin/constance/change_list.html', - context, context_instance=context_instance) - - def has_add_permission(self, *args, **kwargs): - return False - - def has_delete_permission(self, *args, **kwargs): - return False - - def has_change_permission(self, request, obj=None): - if settings.SUPERUSER_ONLY: - return request.user.is_superuser - return super(ConstanceAdmin, self).has_change_permission(request, obj) - - -class Config(object): - class Meta(object): - app_label = 'constance' - object_name = 'Config' - model_name = module_name = 'config' - verbose_name_plural = _('config') - get_ordered_objects = lambda x: False - abstract = False - swapped = False - - def get_change_permission(self): - return 'change_%s' % self.model_name - - _meta = Meta() - - -admin.site.register([Config], ConstanceAdmin) diff --git a/thirdpart/constance/apps.py b/thirdpart/constance/apps.py deleted file mode 100644 index 77226f739a..0000000000 --- a/thirdpart/constance/apps.py +++ /dev/null @@ -1,7 +0,0 @@ -from django.apps import AppConfig -from django.utils.translation import ugettext_lazy as _ - - -class ConstanceConfig(AppConfig): - name = 'constance' - verbose_name = _('Constance') diff --git a/thirdpart/constance/backends/__init__.py b/thirdpart/constance/backends/__init__.py deleted file mode 100644 index a64905eb90..0000000000 --- a/thirdpart/constance/backends/__init__.py +++ /dev/null @@ -1,26 +0,0 @@ -""" -Defines the base constance backend -""" - - -class Backend(object): - - def get(self, key): - """ - Get the key from the backend store and return the value. - Return None if not found. - """ - raise NotImplementedError - - def mget(self, keys): - """ - Get the keys from the backend store and return a list of the values. - Return an empty list if not found. - """ - raise NotImplementedError - - def set(self, key, value): - """ - Add the value to the backend store given the key. - """ - raise NotImplementedError diff --git a/thirdpart/constance/backends/database/__init__.py b/thirdpart/constance/backends/database/__init__.py deleted file mode 100644 index aa1ceaad2d..0000000000 --- a/thirdpart/constance/backends/database/__init__.py +++ /dev/null @@ -1,94 +0,0 @@ -from django.core.exceptions import ImproperlyConfigured -from django.db.models.signals import post_save -from django.core.cache import get_cache - -try: - from django.core.cache.backends.locmem import LocMemCache -except ImportError: - from django.core.cache.backends.locmem import CacheClass as LocMemCache - -from .. import Backend -from ... import settings - - -class DatabaseBackend(Backend): - def __init__(self): - from .models import Constance - self._model = Constance - self._prefix = settings.DATABASE_PREFIX - self._autofill_timeout = settings.DATABASE_CACHE_AUTOFILL_TIMEOUT - self._autofill_cachekey = 'autofilled' - - if not self._model._meta.installed: - raise ImproperlyConfigured( - "The constance.backends.database app isn't installed " - "correctly. Make sure it's in your INSTALLED_APPS setting.") - - if settings.DATABASE_CACHE_BACKEND: - self._cache = get_cache(settings.DATABASE_CACHE_BACKEND) - if isinstance(self._cache, LocMemCache): - raise ImproperlyConfigured( - "The CONSTANCE_DATABASE_CACHE_BACKEND setting refers to a " - "subclass of Django's local-memory backend (%r). Please set " - "it to a backend that supports cross-process caching." - % settings.DATABASE_CACHE_BACKEND) - else: - self._cache = None - self.autofill() - # Clear simple cache. - post_save.connect(self.clear, sender=self._model) - - def add_prefix(self, key): - return "%s%s" % (self._prefix, key) - - def autofill(self): - if not self._autofill_timeout or not self._cache: - return - full_cachekey = self.add_prefix(self._autofill_cachekey) - if self._cache.get(full_cachekey): - return - autofill_values = {} - autofill_values[full_cachekey] = 1 - for key, value in self.mget(settings.CONFIG.keys()): - autofill_values[self.add_prefix(key)] = value - self._cache.set_many(autofill_values, timeout=self._autofill_timeout) - - def mget(self, keys): - if not keys: - return - keys = dict((self.add_prefix(key), key) for key in keys) - stored = self._model._default_manager.filter(key__in=keys.keys()) - for const in stored: - yield keys[const.key], const.value - - def get(self, key): - key = self.add_prefix(key) - if self._cache: - value = self._cache.get(key) - else: - value = None - if value is None: - try: - value = self._model._default_manager.get(key=key).value - except self._model.DoesNotExist: - pass - else: - if self._cache: - self._cache.add(key, value) - return value - - def set(self, key, value): - constance, created = self._model._default_manager.get_or_create( - key=self.add_prefix(key), defaults={'value': value} - ) - if not created: - constance.value = value - constance.save() - - def clear(self, sender, instance, created, **kwargs): - if self._cache and not created: - keys = [self.add_prefix(k) - for k in settings.CONFIG.keys()] - keys.append(self.add_prefix(self._autofill_cachekey)) - self._cache.delete_many(keys) - self.autofill() diff --git a/thirdpart/constance/backends/database/migrations/0001_initial.py b/thirdpart/constance/backends/database/migrations/0001_initial.py deleted file mode 100644 index e0ebd996c8..0000000000 --- a/thirdpart/constance/backends/database/migrations/0001_initial.py +++ /dev/null @@ -1,27 +0,0 @@ -# -*- coding: utf-8 -*- -from __future__ import unicode_literals - -from django.db import models, migrations -import picklefield.fields - - -class Migration(migrations.Migration): - dependencies = [] - - operations = [ - migrations.CreateModel( - name='Constance', - fields=[ - ('id', models.AutoField(verbose_name='ID', primary_key=True, - auto_created=True, serialize=False)), - ('key', models.CharField(unique=True, max_length=255)), - ('value', picklefield.fields.PickledObjectField(editable=False)), - ], - options={ - 'verbose_name': 'constance', - 'verbose_name_plural': 'constances', - 'db_table': 'constance_config', - }, - bases=(models.Model,), - ), - ] diff --git a/thirdpart/constance/backends/database/migrations/__init__.py b/thirdpart/constance/backends/database/migrations/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/thirdpart/constance/backends/database/models.py b/thirdpart/constance/backends/database/models.py deleted file mode 100644 index e9964e8370..0000000000 --- a/thirdpart/constance/backends/database/models.py +++ /dev/null @@ -1,24 +0,0 @@ -from django.db import models -from django.core.exceptions import ImproperlyConfigured - -from django.utils.translation import ugettext_lazy as _ - -try: - from picklefield import PickledObjectField -except ImportError: - raise ImproperlyConfigured("Couldn't find the the 3rd party app " - "django-picklefield which is required for " - "the constance database backend.") - - -class Constance(models.Model): - key = models.CharField(max_length=255, unique=True) - value = PickledObjectField() - - class Meta: - verbose_name = _('constance') - verbose_name_plural = _('constances') - db_table = 'constance_config' - - def __unicode__(self): - return self.key diff --git a/thirdpart/constance/backends/database/south_migrations/0001_initial.py b/thirdpart/constance/backends/database/south_migrations/0001_initial.py deleted file mode 100644 index f9b747327e..0000000000 --- a/thirdpart/constance/backends/database/south_migrations/0001_initial.py +++ /dev/null @@ -1,33 +0,0 @@ -# -*- coding: utf-8 -*- -from south.db import db -from south.v2 import SchemaMigration - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Adding model 'Constance' - db.create_table('constance_config', ( - ('id', self.gf('django.db.models.fields.AutoField')( - primary_key=True)), - ('key', self.gf('django.db.models.fields.TextField')()), - ('value', self.gf('picklefield.fields.PickledObjectField')()), - )) - db.send_create_signal('database', ['Constance']) - - def backwards(self, orm): - # Deleting model 'Constance' - db.delete_table('constance_config') - - models = { - 'database.constance': { - 'Meta': {'object_name': 'Constance', - 'db_table': "'constance_config'"}, - 'id': ('django.db.models.fields.AutoField', [], - {'primary_key': 'True'}), - 'key': ('django.db.models.fields.TextField', [], {}), - 'value': ('picklefield.fields.PickledObjectField', [], {}) - } - } - - complete_apps = ['database'] diff --git a/thirdpart/constance/backends/database/south_migrations/0002_auto__chg_field_constance_key__add_unique_constance_key.py b/thirdpart/constance/backends/database/south_migrations/0002_auto__chg_field_constance_key__add_unique_constance_key.py deleted file mode 100644 index ef8fb3ce72..0000000000 --- a/thirdpart/constance/backends/database/south_migrations/0002_auto__chg_field_constance_key__add_unique_constance_key.py +++ /dev/null @@ -1,36 +0,0 @@ -# -*- coding: utf-8 -*- -from south.db import db -from south.v2 import SchemaMigration - - -class Migration(SchemaMigration): - - def forwards(self, orm): - # Changing field 'Constance.key' - db.alter_column('constance_config', 'key', - self.gf('django.db.models.fields.CharField')( - max_length=255)) - # Adding unique constraint on 'Constance', fields ['key'] - db.create_unique('constance_config', ['key']) - - def backwards(self, orm): - # Removing unique constraint on 'Constance', fields ['key'] - db.delete_unique('constance_config', ['key']) - - # Changing field 'Constance.key' - db.alter_column('constance_config', 'key', - self.gf('django.db.models.fields.TextField')()) - - models = { - 'database.constance': { - 'Meta': {'object_name': 'Constance', - 'db_table': "'constance_config'"}, - 'id': ('django.db.models.fields.AutoField', [], - {'primary_key': 'True'}), - 'key': ('django.db.models.fields.CharField', [], - {'unique': 'True', 'max_length': '255'}), - 'value': ('picklefield.fields.PickledObjectField', [], {}) - } - } - - complete_apps = ['database'] diff --git a/thirdpart/constance/backends/database/south_migrations/__init__.py b/thirdpart/constance/backends/database/south_migrations/__init__.py deleted file mode 100644 index e69de29bb2..0000000000 diff --git a/thirdpart/constance/backends/redisd.py b/thirdpart/constance/backends/redisd.py deleted file mode 100644 index abf24f4606..0000000000 --- a/thirdpart/constance/backends/redisd.py +++ /dev/null @@ -1,51 +0,0 @@ -from django.core.exceptions import ImproperlyConfigured -from django.utils import six -from django.utils.six.moves import zip - -from . import Backend -from .. import settings, utils - -try: - from cPickle import loads, dumps -except ImportError: - from pickle import loads, dumps - - -class RedisBackend(Backend): - - def __init__(self): - super(RedisBackend, self).__init__() - self._prefix = settings.REDIS_PREFIX - connection_cls = settings.REDIS_CONNECTION_CLASS - if connection_cls is not None: - self._rd = utils.import_module_attr(connection_cls)() - else: - try: - import redis - except ImportError: - raise ImproperlyConfigured( - "The Redis backend requires redis-py to be installed.") - if isinstance(settings.REDIS_CONNECTION, six.string_types): - self._rd = redis.from_url(settings.REDIS_CONNECTION) - else: - self._rd = redis.Redis(**settings.REDIS_CONNECTION) - - def add_prefix(self, key): - return "%s%s" % (self._prefix, key) - - def get(self, key): - value = self._rd.get(self.add_prefix(key)) - if value: - return loads(value) - return None - - def mget(self, keys): - if not keys: - return - prefixed_keys = [self.add_prefix(key) for key in keys] - for key, value in zip(keys, self._rd.mget(prefixed_keys)): - if value: - yield key, loads(value) - - def set(self, key, value): - self._rd.set(self.add_prefix(key), dumps(value)) diff --git a/thirdpart/constance/base.py b/thirdpart/constance/base.py deleted file mode 100644 index 99afe62935..0000000000 --- a/thirdpart/constance/base.py +++ /dev/null @@ -1,30 +0,0 @@ -from . import settings, utils - - -class Config(object): - """ - The global config wrapper that handles the backend. - """ - def __init__(self): - super(Config, self).__setattr__('_backend', - utils.import_module_attr(settings.BACKEND)()) - - def __getattr__(self, key): - try: - default, help_text = settings.CONFIG[key] - except KeyError: - raise AttributeError(key) - result = self._backend.get(key) - if result is None: - result = default - setattr(self, key, default) - return result - return result - - def __setattr__(self, key, value): - if key not in settings.CONFIG: - raise AttributeError(key) - self._backend.set(key, value) - - def __dir__(self): - return settings.CONFIG.keys() diff --git a/thirdpart/constance/context_processors.py b/thirdpart/constance/context_processors.py deleted file mode 100644 index 3a3da33d7b..0000000000 --- a/thirdpart/constance/context_processors.py +++ /dev/null @@ -1,15 +0,0 @@ -import constance - - -def config(request): - """ - Simple context processor that puts the config into every - RequestContext. Just make sure you have a setting like this: - - TEMPLATE_CONTEXT_PROCESSORS = ( - # ... - 'constance.context_processors.config', - ) - - """ - return {"config": constance.config} diff --git a/thirdpart/constance/locale/cs_CZ/LC_MESSAGES/django.po b/thirdpart/constance/locale/cs_CZ/LC_MESSAGES/django.po deleted file mode 100644 index a08da79165..0000000000 --- a/thirdpart/constance/locale/cs_CZ/LC_MESSAGES/django.po +++ /dev/null @@ -1,79 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: django-constance\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-27 19:05+0100\n" -"PO-Revision-Date: 2014-11-27 18:13+0000\n" -"Last-Translator: Jannis Leidel \n" -"Language-Team: Czech (Czech Republic) (http://www.transifex.com/projects/p/django-constance/language/cs_CZ/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: cs_CZ\n" -"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n" - -#: admin.py:72 -#, python-format -msgid "" -"Constance doesn't support config values of the type %(config_type)s. Please " -"fix the value of '%(name)s'." -msgstr "" - -#: admin.py:91 -msgid "" -"The settings have been modified by someone else. Please reload the form and " -"resubmit your changes." -msgstr "" - -#: admin.py:129 -msgid "Live settings updated successfully." -msgstr "Nastavení bylo úspěšně uloženo." - -#: admin.py:134 -msgid "Constance config" -msgstr "Nastavení konstant" - -#: admin.py:177 -msgid "config" -msgstr "nastavení" - -#: apps.py:9 -msgid "Constance" -msgstr "" - -#: backends/database/models.py:19 -msgid "constance" -msgstr "konstanta" - -#: backends/database/models.py:20 -msgid "constances" -msgstr "konstanty" - -#: templates/admin/constance/change_list.html:50 -msgid "Name" -msgstr "Název" - -#: templates/admin/constance/change_list.html:51 -msgid "Default" -msgstr "Výchozí hodnota" - -#: templates/admin/constance/change_list.html:52 -msgid "Value" -msgstr "Hodnota" - -#: templates/admin/constance/change_list.html:53 -msgid "Is modified" -msgstr "Je změněna?" - -#: templates/admin/constance/change_list.html:79 -msgid "Save" -msgstr "Uložit" - -#: templates/admin/constance/change_list.html:89 -msgid "Home" -msgstr "Domů" diff --git a/thirdpart/constance/locale/de/LC_MESSAGES/django.po b/thirdpart/constance/locale/de/LC_MESSAGES/django.po deleted file mode 100644 index e7959df548..0000000000 --- a/thirdpart/constance/locale/de/LC_MESSAGES/django.po +++ /dev/null @@ -1,80 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -# Jannis Leidel , 2014 -msgid "" -msgstr "" -"Project-Id-Version: django-constance\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-27 19:05+0100\n" -"PO-Revision-Date: 2014-11-27 18:17+0000\n" -"Last-Translator: Jannis Leidel \n" -"Language-Team: German (http://www.transifex.com/projects/p/django-constance/language/de/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: de\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: admin.py:72 -#, python-format -msgid "" -"Constance doesn't support config values of the type %(config_type)s. Please " -"fix the value of '%(name)s'." -msgstr "Konstanze unterstützt die Konfigurationswerte vom Typ %(config_type)s nicht. Bitte den Ausgangswert von '%(name)s' ändern." - -#: admin.py:91 -msgid "" -"The settings have been modified by someone else. Please reload the form and " -"resubmit your changes." -msgstr "Die Konfiguration wurde seit Öffnen dieser Seite verändert. Bitte die Seite neuladen und die Änderungen erneut vornehmen." - -#: admin.py:129 -msgid "Live settings updated successfully." -msgstr "Die Livekonfiguration wurde erfolgreich aktualisiert." - -#: admin.py:134 -msgid "Constance config" -msgstr "Constance Konfiguration" - -#: admin.py:177 -msgid "config" -msgstr "Konfiguration" - -#: apps.py:9 -msgid "Constance" -msgstr "Konstanze" - -#: backends/database/models.py:19 -msgid "constance" -msgstr "Konstanze" - -#: backends/database/models.py:20 -msgid "constances" -msgstr "Konstanzes" - -#: templates/admin/constance/change_list.html:50 -msgid "Name" -msgstr "Name" - -#: templates/admin/constance/change_list.html:51 -msgid "Default" -msgstr "Voreinstellung" - -#: templates/admin/constance/change_list.html:52 -msgid "Value" -msgstr "Wert" - -#: templates/admin/constance/change_list.html:53 -msgid "Is modified" -msgstr "Ist modifiziert" - -#: templates/admin/constance/change_list.html:79 -msgid "Save" -msgstr "Sichern" - -#: templates/admin/constance/change_list.html:89 -msgid "Home" -msgstr "Start" diff --git a/thirdpart/constance/locale/en/LC_MESSAGES/django.po b/thirdpart/constance/locale/en/LC_MESSAGES/django.po deleted file mode 100644 index 1bb6893da6..0000000000 --- a/thirdpart/constance/locale/en/LC_MESSAGES/django.po +++ /dev/null @@ -1,79 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# FIRST AUTHOR , YEAR. -# -#, fuzzy -msgid "" -msgstr "" -"Project-Id-Version: PACKAGE VERSION\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-27 19:05+0100\n" -"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" -"Last-Translator: FULL NAME \n" -"Language-Team: LANGUAGE \n" -"Language: \n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" - -#: admin.py:72 -#, python-format -msgid "" -"Constance doesn't support config values of the type %(config_type)s. Please " -"fix the value of '%(name)s'." -msgstr "" - -#: admin.py:91 -msgid "" -"The settings have been modified by someone else. Please reload the form and " -"resubmit your changes." -msgstr "" - -#: admin.py:129 -msgid "Live settings updated successfully." -msgstr "" - -#: admin.py:134 -msgid "Constance config" -msgstr "" - -#: admin.py:177 -msgid "config" -msgstr "" - -#: apps.py:9 -msgid "Constance" -msgstr "" - -#: backends/database/models.py:19 -msgid "constance" -msgstr "" - -#: backends/database/models.py:20 -msgid "constances" -msgstr "" - -#: templates/admin/constance/change_list.html:50 -msgid "Name" -msgstr "" - -#: templates/admin/constance/change_list.html:51 -msgid "Default" -msgstr "" - -#: templates/admin/constance/change_list.html:52 -msgid "Value" -msgstr "" - -#: templates/admin/constance/change_list.html:53 -msgid "Is modified" -msgstr "" - -#: templates/admin/constance/change_list.html:79 -msgid "Save" -msgstr "" - -#: templates/admin/constance/change_list.html:89 -msgid "Home" -msgstr "" diff --git a/thirdpart/constance/locale/it/LC_MESSAGES/django.po b/thirdpart/constance/locale/it/LC_MESSAGES/django.po deleted file mode 100644 index f92dea6d1a..0000000000 --- a/thirdpart/constance/locale/it/LC_MESSAGES/django.po +++ /dev/null @@ -1,79 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: django-constance\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-27 19:05+0100\n" -"PO-Revision-Date: 2014-11-27 18:13+0000\n" -"Last-Translator: Jannis Leidel \n" -"Language-Team: Italian (http://www.transifex.com/projects/p/django-constance/language/it/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: it\n" -"Plural-Forms: nplurals=2; plural=(n != 1);\n" - -#: admin.py:72 -#, python-format -msgid "" -"Constance doesn't support config values of the type %(config_type)s. Please " -"fix the value of '%(name)s'." -msgstr "" - -#: admin.py:91 -msgid "" -"The settings have been modified by someone else. Please reload the form and " -"resubmit your changes." -msgstr "" - -#: admin.py:129 -msgid "Live settings updated successfully." -msgstr "Le impostazioni attive sono state aggiornate correttamente." - -#: admin.py:134 -msgid "Constance config" -msgstr "Configurazione Impostazioni" - -#: admin.py:177 -msgid "config" -msgstr "" - -#: apps.py:9 -msgid "Constance" -msgstr "" - -#: backends/database/models.py:19 -msgid "constance" -msgstr "impostazione" - -#: backends/database/models.py:20 -msgid "constances" -msgstr "impostazioni" - -#: templates/admin/constance/change_list.html:50 -msgid "Name" -msgstr "Nome" - -#: templates/admin/constance/change_list.html:51 -msgid "Default" -msgstr "Default" - -#: templates/admin/constance/change_list.html:52 -msgid "Value" -msgstr "Valore" - -#: templates/admin/constance/change_list.html:53 -msgid "Is modified" -msgstr "Modificato" - -#: templates/admin/constance/change_list.html:79 -msgid "Save" -msgstr "Salva" - -#: templates/admin/constance/change_list.html:89 -msgid "Home" -msgstr "Inizio" diff --git a/thirdpart/constance/locale/pl/LC_MESSAGES/django.po b/thirdpart/constance/locale/pl/LC_MESSAGES/django.po deleted file mode 100644 index 0c56643e6a..0000000000 --- a/thirdpart/constance/locale/pl/LC_MESSAGES/django.po +++ /dev/null @@ -1,79 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: django-constance\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-27 19:05+0100\n" -"PO-Revision-Date: 2014-11-27 18:13+0000\n" -"Last-Translator: Jannis Leidel \n" -"Language-Team: Polish (http://www.transifex.com/projects/p/django-constance/language/pl/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: pl\n" -"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" - -#: admin.py:72 -#, python-format -msgid "" -"Constance doesn't support config values of the type %(config_type)s. Please " -"fix the value of '%(name)s'." -msgstr "" - -#: admin.py:91 -msgid "" -"The settings have been modified by someone else. Please reload the form and " -"resubmit your changes." -msgstr "" - -#: admin.py:129 -msgid "Live settings updated successfully." -msgstr "Parametry zostały zaktualizowane" - -#: admin.py:134 -msgid "Constance config" -msgstr "Konfiguracja Constance" - -#: admin.py:177 -msgid "config" -msgstr "" - -#: apps.py:9 -msgid "Constance" -msgstr "" - -#: backends/database/models.py:19 -msgid "constance" -msgstr "parametr" - -#: backends/database/models.py:20 -msgid "constances" -msgstr "parametry" - -#: templates/admin/constance/change_list.html:50 -msgid "Name" -msgstr "Nazwa" - -#: templates/admin/constance/change_list.html:51 -msgid "Default" -msgstr "Domyślnie" - -#: templates/admin/constance/change_list.html:52 -msgid "Value" -msgstr "Wartość" - -#: templates/admin/constance/change_list.html:53 -msgid "Is modified" -msgstr "Zmodyfikowana" - -#: templates/admin/constance/change_list.html:79 -msgid "Save" -msgstr "Zapisz" - -#: templates/admin/constance/change_list.html:89 -msgid "Home" -msgstr "Początek" diff --git a/thirdpart/constance/locale/ru/LC_MESSAGES/django.po b/thirdpart/constance/locale/ru/LC_MESSAGES/django.po deleted file mode 100644 index 23bcc0d218..0000000000 --- a/thirdpart/constance/locale/ru/LC_MESSAGES/django.po +++ /dev/null @@ -1,79 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: django-constance\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-27 19:05+0100\n" -"PO-Revision-Date: 2014-11-27 18:13+0000\n" -"Last-Translator: Jannis Leidel \n" -"Language-Team: Russian (http://www.transifex.com/projects/p/django-constance/language/ru/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: ru\n" -"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n" - -#: admin.py:72 -#, python-format -msgid "" -"Constance doesn't support config values of the type %(config_type)s. Please " -"fix the value of '%(name)s'." -msgstr "" - -#: admin.py:91 -msgid "" -"The settings have been modified by someone else. Please reload the form and " -"resubmit your changes." -msgstr "" - -#: admin.py:129 -msgid "Live settings updated successfully." -msgstr "Настройки успешно сохранены" - -#: admin.py:134 -msgid "Constance config" -msgstr "Настройки" - -#: admin.py:177 -msgid "config" -msgstr "настройки" - -#: apps.py:9 -msgid "Constance" -msgstr "" - -#: backends/database/models.py:19 -msgid "constance" -msgstr "настройки" - -#: backends/database/models.py:20 -msgid "constances" -msgstr "настройки" - -#: templates/admin/constance/change_list.html:50 -msgid "Name" -msgstr "Название" - -#: templates/admin/constance/change_list.html:51 -msgid "Default" -msgstr "По умолчанию" - -#: templates/admin/constance/change_list.html:52 -msgid "Value" -msgstr "Текущее значение" - -#: templates/admin/constance/change_list.html:53 -msgid "Is modified" -msgstr "Было изменено" - -#: templates/admin/constance/change_list.html:79 -msgid "Save" -msgstr "Сохранить" - -#: templates/admin/constance/change_list.html:89 -msgid "Home" -msgstr "Главная" diff --git a/thirdpart/constance/locale/zh_CN/LC_MESSAGES/django.po b/thirdpart/constance/locale/zh_CN/LC_MESSAGES/django.po deleted file mode 100644 index c469e1ef35..0000000000 --- a/thirdpart/constance/locale/zh_CN/LC_MESSAGES/django.po +++ /dev/null @@ -1,79 +0,0 @@ -# SOME DESCRIPTIVE TITLE. -# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER -# This file is distributed under the same license as the PACKAGE package. -# -# Translators: -msgid "" -msgstr "" -"Project-Id-Version: django-constance\n" -"Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2014-11-27 19:05+0100\n" -"PO-Revision-Date: 2014-11-27 18:13+0000\n" -"Last-Translator: Jannis Leidel \n" -"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django-constance/language/zh_CN/)\n" -"MIME-Version: 1.0\n" -"Content-Type: text/plain; charset=UTF-8\n" -"Content-Transfer-Encoding: 8bit\n" -"Language: zh_CN\n" -"Plural-Forms: nplurals=1; plural=0;\n" - -#: admin.py:72 -#, python-format -msgid "" -"Constance doesn't support config values of the type %(config_type)s. Please " -"fix the value of '%(name)s'." -msgstr "" - -#: admin.py:91 -msgid "" -"The settings have been modified by someone else. Please reload the form and " -"resubmit your changes." -msgstr "" - -#: admin.py:129 -msgid "Live settings updated successfully." -msgstr "成功更新实时配置" - -#: admin.py:134 -msgid "Constance config" -msgstr "常量配置" - -#: admin.py:177 -msgid "config" -msgstr "配置" - -#: apps.py:9 -msgid "Constance" -msgstr "" - -#: backends/database/models.py:19 -msgid "constance" -msgstr "常量" - -#: backends/database/models.py:20 -msgid "constances" -msgstr "常量" - -#: templates/admin/constance/change_list.html:50 -msgid "Name" -msgstr "名称" - -#: templates/admin/constance/change_list.html:51 -msgid "Default" -msgstr "默认值" - -#: templates/admin/constance/change_list.html:52 -msgid "Value" -msgstr "值" - -#: templates/admin/constance/change_list.html:53 -msgid "Is modified" -msgstr "是否修改" - -#: templates/admin/constance/change_list.html:79 -msgid "Save" -msgstr "保存" - -#: templates/admin/constance/change_list.html:89 -msgid "Home" -msgstr "首页" diff --git a/thirdpart/constance/models.py b/thirdpart/constance/models.py deleted file mode 100644 index e341795b26..0000000000 --- a/thirdpart/constance/models.py +++ /dev/null @@ -1,24 +0,0 @@ -from django.db.models import signals - - -def create_perm(app, created_models, verbosity, db, **kwargs): - """ - Creates a fake content type and permission - to be able to check for permissions - """ - from django.contrib.auth.models import Permission - from django.contrib.contenttypes.models import ContentType - - if ContentType._meta.installed and Permission._meta.installed: - content_type, created = ContentType.objects.get_or_create( - name='config', - app_label='constance', - model='config') - - permission, created = Permission.objects.get_or_create( - name='Can change config', - content_type=content_type, - codename='change_config') - - -signals.post_syncdb.connect(create_perm, dispatch_uid="constance.create_perm") diff --git a/thirdpart/constance/settings.py b/thirdpart/constance/settings.py deleted file mode 100644 index 6f1350d452..0000000000 --- a/thirdpart/constance/settings.py +++ /dev/null @@ -1,24 +0,0 @@ -from django.conf import settings - -BACKEND = getattr(settings, 'CONSTANCE_BACKEND', - 'constance.backends.redisd.RedisBackend') - -CONFIG = getattr(settings, 'CONSTANCE_CONFIG', {}) - -DATABASE_CACHE_BACKEND = getattr(settings, 'CONSTANCE_DATABASE_CACHE_BACKEND', - None) - -DATABASE_CACHE_AUTOFILL_TIMEOUT = getattr(settings, - 'CONSTANCE_DATABASE_CACHE_AUTOFILL_TIMEOUT', - 60 * 60 * 24) - -DATABASE_PREFIX = getattr(settings, 'CONSTANCE_DATABASE_PREFIX', '') - -REDIS_PREFIX = getattr(settings, 'CONSTANCE_REDIS_PREFIX', 'constance:') - -REDIS_CONNECTION_CLASS = getattr(settings, 'CONSTANCE_REDIS_CONNECTION_CLASS', - None) - -REDIS_CONNECTION = getattr(settings, 'CONSTANCE_REDIS_CONNECTION', {}) - -SUPERUSER_ONLY = getattr(settings, 'CONSTANCE_SUPERUSER_ONLY', True) diff --git a/thirdpart/constance/templates/admin/constance/change_list.html b/thirdpart/constance/templates/admin/constance/change_list.html deleted file mode 100644 index 27e792cce6..0000000000 --- a/thirdpart/constance/templates/admin/constance/change_list.html +++ /dev/null @@ -1,100 +0,0 @@ -{% extends "admin/base_site.html" %} -{% load admin_static admin_list i18n %} -{% load url from future %} - - -{% block extrastyle %} - {{ block.super }} - - - {{ media.css }} - -{% endblock %} - -{% block extrahead %} -{% url 'admin:jsi18n' as jsi18nurl %} - -{{ block.super }} -{{ media.js }} -{% endblock %} - -{% block bodyclass %}change-list{% endblock %} - -{% block content %} -
-
-
{% csrf_token %} - {% if form.errors %} -
    - {% endif %} - {% for field in form.hidden_fields %} - {% for error in field.errors %} -
  • {{ error }}
  • - {% endfor %} - {{ field }} - {% endfor %} - {% if form.errors %} -
- {% endif %} - - - - - - - - - - {% for item in config %} - - - - - - - {% endfor %} -
{% trans "Name" %}
{% trans "Default" %}
{% trans "Value" %}
{% trans "Is modified" %}
{{ item.name }} -
{{ item.help_text }}
-
- {{ item.default }} - - {{ item.form_field.errors }} - {{ item.form_field }} - - {% if item.modified %} - {{ item.modified }} - {% else %} - {{ item.modified }} - {% endif %} -
-

- -

-
-
-
-{% endblock %} - -{% block breadcrumbs %} - -{% endblock %} diff --git a/thirdpart/constance/utils.py b/thirdpart/constance/utils.py deleted file mode 100644 index 96fc572e74..0000000000 --- a/thirdpart/constance/utils.py +++ /dev/null @@ -1,6 +0,0 @@ -from django.utils.importlib import import_module - - -def import_module_attr(path): - package, module = path.rsplit('.', 1) - return getattr(import_module(package), module)