Skip to content

Commit

Permalink
Merge remote-tracking branch 'jezdez/master' into custom_fields
Browse files Browse the repository at this point in the history
  • Loading branch information
PetrDlouhy committed Nov 13, 2015
2 parents 0e447ee + 6b04a31 commit 55ddbad
Show file tree
Hide file tree
Showing 24 changed files with 373 additions and 116 deletions.
28 changes: 9 additions & 19 deletions .travis.yml
@@ -1,31 +1,21 @@
sudo: false
language: python
cache:
directories:
- $HOME/.cache/pip
install:
- pip install tox
env:
- TOXENV=py26-django-14
- TOXENV=py27-django-14
- TOXENV=py26-django-15
- TOXENV=py26-django-16
- TOXENV=py27-django-15
- TOXENV=py27-django-16
- TOXENV=py32-django-15
- TOXENV=py32-django-16
- TOXENV=py33-django-15
- TOXENV=py33-django-16
- TOXENV=py34-django-15
- TOXENV=py34-django-16
- TOXENV=pypy-django-15
- TOXENV=pypy-django-16
- TOXENV=py27-django-17
- TOXENV=py27-django-master
- TOXENV=py32-django-17
- TOXENV=py32-django-master
- TOXENV=py27-django-18
- TOXENV=py33-django-17
- TOXENV=py33-django-master
- TOXENV=py33-django-18
- TOXENV=py34-django-17
- TOXENV=py34-django-master
- TOXENV=py34-django-18
- TOXENV=pypy-django-17
- TOXENV=pypy-django-18
- TOXENV=py27-django-master
- TOXENV=py34-django-master
- TOXENV=pypy-django-master
script:
- tox
42 changes: 37 additions & 5 deletions AUTHORS
@@ -1,7 +1,39 @@
Jiri Barton <jbar@hosting4u.cz>
Vojtech Jasny <voy@voy.cz>
Roman Krejcik <farin@farin.cz>
Jan Vesely <jave@janvesely.com>
Ales Zoulek <ales.zoulek@gmail.com>
Jannis Leidel <jannis@leidel.info>
Alexander frenzel <alex@relatedworks.com>
Bouke Haarsma <bouke@webatoom.nl>
Camilo Nova <camilo.nova@gmail.com>
Charlie Hornsby <charlie.hornsby@hotmail.co.uk>
Curtis Maloney <curtis@tinbrain.net>
Dan Poirier <dpoirier@caktusgroup.com>
David Burke <dmbst32@gmail.com>
Florian Apolloner <florian@apolloner.eu>
Igor Támara <igor@axiacore.com>
Jake Merdich <jmerdich@users.noreply.github.com>
Jannis Leidel <jannis@leidel.info>
Janusz Harkot <janusz.harkot@gmail.com>
Jiri Barton <jbar@hosting4u.cz>
Jonas <jvp@jonasundderwolf.de>
Kuba Zarzycki <jakubzarzycki@gmail.com>
Leandra Finger <leandra.finger@gmail.com>
Les Orchard <me@lmorchard.com>
Lin Xianyi <iynaix@gmail.com>
Marcin Baran <marcin.baran@agencjawmc.pl>
Mario Orlandi <morlandi@brainstorm.it>
Mario Rosa <mario@dwaiter.com>
Mattia Larentis <mattia@larentis.eu>
Merijn Bertels <merijn.bertels@gmail.com>
Omer Katz <omer.drow@gmail.com>
Petr Knap <dev@petrknap.cz>
Philip Neustrom <philipn@gmail.com>
Pierre-Olivier Marec <pomarec@free.fr>
Roman Krejcik <farin@farin.cz>
Silvan Spross <silvan.spross@gmail.com>
Sławek Ehlert <slafs@op.pl>
Vojtech Jasny <voy@voy.cz>
Yin Jifeng <jifeng.yin@gmail.com>
illumin-us-r3v0lution <luminaries@riseup.net>
mega <qoisone@gmail.com>
saw2th <stephen@saw2th.co.uk>
trbs <trbs@trbs.net>
vl <1844144@gmail.com>
vl <vl@u64.(none)>
2 changes: 1 addition & 1 deletion LICENSE
@@ -1,4 +1,4 @@
Copyright (c) 2009-2014, Comoga and individual contributors
Copyright (c) 2009-2015, Comoga and individual contributors
All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
Expand Down
2 changes: 1 addition & 1 deletion constance/__init__.py
@@ -1,6 +1,6 @@
from django.utils.functional import LazyObject

__version__ = '1.0.1'
__version__ = '1.1.1'

default_app_config = 'constance.apps.ConstanceConfig'

Expand Down
41 changes: 18 additions & 23 deletions constance/admin.py
Expand Up @@ -3,30 +3,21 @@
import hashlib
from operator import itemgetter

from django import forms
from django import forms, VERSION
from django.conf.urls import url
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.template.response import TemplateResponse
from django.utils import six
from django.utils.encoding import smart_bytes
from django.utils.formats import localize
from django.utils.translation import ugettext_lazy as _
import django

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

Expand Down Expand Up @@ -111,17 +102,18 @@ def clean_version(self):


class ConstanceAdmin(admin.ModelAdmin):
change_list_template = 'admin/constance/change_list.html'

def get_urls(self):
info = self.model._meta.app_label, self.model._meta.module_name
return patterns('',
return [
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):
Expand All @@ -146,7 +138,7 @@ def changelist_view(self, request, extra_context=None):
)
return HttpResponseRedirect('.')
context = {
'config': [],
'config_values': [],
'title': _('Constance config'),
'app_label': 'constance',
'opts': Config._meta,
Expand All @@ -160,19 +152,20 @@ def changelist_view(self, request, extra_context=None):
# Then if the returned value is None, get the default
if value is None:
value = getattr(config, name)
context['config'].append({
context['config_values'].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)
context['config_values'].sort(key=itemgetter('name'))
request.current_app = self.admin_site.name
# compatibility to be removed when 1.7 is deprecated
extra = {'current_app': self.admin_site.name} if VERSION < (1, 8) else {}
return TemplateResponse(request, self.change_list_template, context,
**extra)

def has_add_permission(self, *args, **kwargs):
return False
Expand All @@ -192,10 +185,12 @@ class Meta(object):
object_name = 'Config'
model_name = module_name = 'config'
verbose_name_plural = _('config')
get_ordered_objects = lambda x: False
abstract = False
swapped = False

def get_ordered_objects(self):
return False

def get_change_permission(self):
return 'change_%s' % self.model_name

Expand Down
27 changes: 27 additions & 0 deletions constance/apps.py
@@ -1,7 +1,34 @@
from django.db.models import signals
from django import VERSION
from django.apps import AppConfig
from django.utils.translation import ugettext_lazy as _


class ConstanceConfig(AppConfig):
name = 'constance'
verbose_name = _('Constance')

def ready(self):
super(ConstanceConfig, self).ready()
signals.post_migrate.connect(self.create_perm,
dispatch_uid='constance.create_perm')

def create_perm(self, *args, **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:
extra = {} if VERSION >= (1, 8) else {'name': 'config'}
content_type, created = ContentType.objects.get_or_create(
app_label='constance',
model='config',
**extra)

permission, created = Permission.objects.get_or_create(
name='Can change config',
content_type=content_type,
codename='change_config')
10 changes: 3 additions & 7 deletions constance/backends/database/__init__.py
@@ -1,11 +1,7 @@
from django.core.cache import caches
from django.core.cache.backends.locmem import LocMemCache
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
Expand All @@ -25,7 +21,7 @@ def __init__(self):
"correctly. Make sure it's in your INSTALLED_APPS setting.")

if settings.DATABASE_CACHE_BACKEND:
self._cache = get_cache(settings.DATABASE_CACHE_BACKEND)
self._cache = caches[settings.DATABASE_CACHE_BACKEND]
if isinstance(self._cache, LocMemCache):
raise ImproperlyConfigured(
"The CONSTANCE_DATABASE_CACHE_BACKEND setting refers to a "
Expand Down
Binary file modified constance/locale/zh_CN/LC_MESSAGES/django.mo
Binary file not shown.
21 changes: 11 additions & 10 deletions constance/locale/zh_CN/LC_MESSAGES/django.po
Expand Up @@ -3,14 +3,15 @@
# This file is distributed under the same license as the PACKAGE package.
#
# Translators:
# Yifu Yu <root@jackyyf.com>, 2015
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 <jannis@leidel.info>\n"
"Language-Team: Chinese (China) (http://www.transifex.com/projects/p/django-constance/language/zh_CN/)\n"
"PO-Revision-Date: 2015-03-15 18:40+0000\n"
"Last-Translator: Yifu Yu <root@jackyyf.com>\n"
"Language-Team: Chinese (China) (http://www.transifex.com/jezdez/django-constance/language/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
Expand All @@ -22,37 +23,37 @@ msgstr ""
msgid ""
"Constance doesn't support config values of the type %(config_type)s. Please "
"fix the value of '%(name)s'."
msgstr ""
msgstr "Constance不支持保存类型为%(config_type)s的值,请修正%(name)s的值。"

#: admin.py:91
msgid ""
"The settings have been modified by someone else. Please reload the form and "
"resubmit your changes."
msgstr ""
msgstr "设置已经被他人修改过,请刷新页面并重新提交您的更改。"

#: admin.py:129
msgid "Live settings updated successfully."
msgstr "成功更新实时配置"

#: admin.py:134
msgid "Constance config"
msgstr "常量配置"
msgstr "Constance 配置页面"

#: admin.py:177
msgid "config"
msgstr "配置"

#: apps.py:9
msgid "Constance"
msgstr ""
msgstr "Constance模块"

#: backends/database/models.py:19
msgid "constance"
msgstr "常量"
msgstr "Constance模块"

#: backends/database/models.py:20
msgid "constances"
msgstr "常量"
msgstr "Constance模块"

#: templates/admin/constance/change_list.html:50
msgid "Name"
Expand All @@ -68,7 +69,7 @@ msgstr "值"

#: templates/admin/constance/change_list.html:53
msgid "Is modified"
msgstr "是否修改"
msgstr "是否修改过"

#: templates/admin/constance/change_list.html:79
msgid "Save"
Expand Down
24 changes: 0 additions & 24 deletions constance/models.py

This file was deleted.

5 changes: 2 additions & 3 deletions constance/templates/admin/constance/change_list.html
@@ -1,6 +1,5 @@
{% extends "admin/base_site.html" %}
{% load admin_static admin_list i18n %}
{% load url from future %}


{% block extrastyle %}
Expand Down Expand Up @@ -61,10 +60,10 @@
<th><div class="text">{% trans "Is modified" %}</div></th>
</tr>
</thead>
{% for item in config %}
{% for item in config_values %}
<tr class="{% cycle 'row1' 'row2' %}">
<th>{{ item.name }}
<div class="help">{{ item.help_text }}</div>
<div class="help">{{ item.help_text|linebreaksbr }}</div>
</th>
<td>
{{ item.default }}
Expand Down
1 change: 1 addition & 0 deletions constance/test/__init__.py
@@ -0,0 +1 @@
from .utils import override_config

0 comments on commit 55ddbad

Please sign in to comment.