Compare commits

..

19 Commits

Author SHA1 Message Date
Fabio Caccamo 07c38baa83 Updated version 2017-07-13 18:01:10 +02:00
Fabio Caccamo ed669a88be Fixed django 1.7 and django 1.9 compatibility 2017-07-13 18:00:56 +02:00
Fabio Caccamo 71ad991ba7 Fixed modals closing in older django versions. 2017-07-13 15:53:00 +02:00
Fabio Caccamo 05128a997e Added version parameter to prevent css/js caching. 2017-07-13 15:50:58 +02:00
Fabio Caccamo 92a816b9ae Updated README.md [ci skip] 2017-06-13 12:57:07 +02:00
Fabio Caccamo 4a9b6e5e5c Updated version 2017-06-13 11:45:28 +02:00
Fabio Caccamo 0e69ccdba6 Changed dependencies versions from strict to ranges 2017-06-13 11:45:17 +02:00
Fabio Caccamo 3f9dc0c58e Merge pull request #26 from 18F/uswds-theme
Add USWDS color scheme.
2017-06-13 10:38:12 +02:00
CM Lubinski cbd414485f Add USWDS color scheme.
As a first draft of a U.S. Web Design Standards theme, this selects uses
reasonable colors from its 508-compliant color pallet.
2017-06-12 17:48:42 -04:00
Fabio Caccamo ccb818043c Merge pull request #23 from 18F/bytes2unicode
Add migration to convert bytes to unicode.
2017-06-12 15:50:37 +02:00
Fabio Caccamo 07d4fd65ef Merge pull request #21 from 18F/future-safe
Specify a max_length on all ColorFields.
2017-06-12 15:49:44 +02:00
Fabio Caccamo 4dd7a9dd3d Merge pull request #20 from founders4schools/deprecation-warnings
Fix a Django deprecation warning
2017-06-12 11:42:05 +02:00
CM Lubinski 9ecaa3836c Add migration to convert bytes to unicode.
Python 2 and 3 treat strings differently; in 2 they are bytes and in 3 they
are unicode objects. The Theme fields' attributes were encoded as bytes in the
initial migration (0001) but should be unicode values, leading to a missing
migration whenever the code is ran on Python 3. This changeset "alters" all
the fields to set them to have unicode attributes rather than bytes.

For more context, we've more or less followed the steps outlined here:
https://docs.djangoproject.com/en/1.11/topics/migrations/#supporting-python-2-and-3
2017-06-09 11:41:15 -04:00
Bruno Alla 511ad909bf Run tests on Python 3.6 for Django 1.11+ 2017-06-09 16:27:13 +01:00
CM Lubinski 8fe6ffd3b2 Specify a max_length on all ColorFields.
Django-colorfield bumped up its default max_length from 10 to 18 characters in
bfe421b8. Though we've pinned the version of colorfields we're depending on,
we can make the future version upgrade easier now by locking our fields to
having a max length of 10 chars.
2017-06-09 11:26:46 -04:00
Bruno Alla d0f8d7514a Fix allow_failures 2017-06-09 15:56:05 +01:00
Bruno Alla 78d80bc129 Run tests against Django master 2017-06-09 15:49:54 +01:00
Bruno Alla 09bd082759 Fix the error on older versions of Django 2017-06-09 15:44:23 +01:00
Bruno Alla 70b4be757d Fix a Django deprecation warning
Replace deprecated assignment_tag:

`python/lib/python3.5/site-packages/admin_interface/templatetags/admin_interface_tags.py:11: RemovedInDjango20Warning: assignment_tag() is deprecated. Use simple_tag() instead`
2017-06-09 15:12:00 +01:00
13 changed files with 318 additions and 54 deletions
+13 -4
View File
@@ -9,14 +9,23 @@ env:
- TOX_ENV=py34-18
- TOX_ENV=py34-19
- TOX_ENV=py34-110
- TOX_ENV=py34-master
- TOX_ENV=py35-18
- TOX_ENV=py35-19
- TOX_ENV=py35-110
#- TOX_ENV=py36-18
#- TOX_ENV=py36-19
#- TOX_ENV=py36-110
- TOX_ENV=py35-master
matrix:
include:
- python: "3.6"
env: TOX_ENV=py36-111
- python: "3.6"
env: TOX_ENV=py36-master
allow_failures:
- env: TOX_ENV=py34-master
- env: TOX_ENV=py35-master
- env: TOX_ENV=py36-master
install:
- pip install tox
script:
- tox -e $TOX_ENV
sudo: false
sudo: false
+6 -3
View File
@@ -47,15 +47,18 @@ INSTALLED_APPS = (
## Optional themes
This package ships with optional themes as fixtures, they can be installed using the [loaddata admin command](https://docs.djangoproject.com/en/1.11/ref/django-admin/#django-admin-loaddata). Optional themes are activated on installation.
##### Django theme (default):
##### [Django](https://www.djangoproject.com/) theme (default):
Run ``python manage.py loaddata admin_interface_theme_django.json``
##### Bootstrap theme:
##### [Bootstrap](http://getbootstrap.com/) theme:
Run ``python manage.py loaddata admin_interface_theme_bootstrap.json``
##### Foundation theme:
##### [Foundation](http://foundation.zurb.com/) theme:
Run ``python manage.py loaddata admin_interface_theme_foundation.json``
##### [U.S. Web Design Standards](https://standards.usa.gov/) theme:
Run ``python manage.py loaddata admin_interface_theme_uswds.json``
### Add more themes
You can add a theme you've created through the admin to this repository by [sending us a PR](http://makeapullrequest.com/). Here are the steps to follow to add :
@@ -0,0 +1,39 @@
[
{
"model": "admin_interface.theme",
"fields": {
"name": "USWDS",
"active": true,
"title": "Site administration",
"title_color": "#FFFFFF",
"title_visible": true,
"logo": "",
"logo_color": "#FFFFFF",
"logo_visible": false,
"css_header_background_color": "#112E51",
"css_header_text_color": "#FFFFFF",
"css_header_link_color": "#FFFFFF",
"css_header_link_hover_color": "#E1F3F8",
"css_module_background_color": "#205493",
"css_module_text_color": "#FFFFFF",
"css_module_link_color": "#FFFFFF",
"css_module_link_hover_color": "#E1F3F8",
"css_module_rounded_corners": true,
"css_generic_link_color": "#205493",
"css_generic_link_hover_color": "#0071BC",
"css_save_button_background_color": "#205493",
"css_save_button_background_hover_color": "#112E51",
"css_save_button_text_color": "#FFFFFF",
"css_delete_button_background_color": "#CD2026",
"css_delete_button_background_hover_color": "#981B1E",
"css_delete_button_text_color": "#FFFFFF",
"css": "",
"related_modal_active": true,
"related_modal_background_color": "#000000",
"related_modal_background_opacity": 0.8,
"related_modal_rounded_corners": true,
"list_filter_dropdown": false,
"recent_actions_visible": true
}
}
]
@@ -0,0 +1,151 @@
# -*- coding: utf-8 -*-
# Generated by Django 1.11.2 on 2017-06-09 14:52
from __future__ import unicode_literals
import colorfield.fields
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('admin_interface', '0005_add_recent_actions_visible'),
]
operations = [
migrations.AlterField(
model_name='theme',
name='css_delete_button_background_color',
field=colorfield.fields.ColorField(blank=True, default='#BA2121', help_text='#BA2121', max_length=10, verbose_name='background color'),
),
migrations.AlterField(
model_name='theme',
name='css_delete_button_background_hover_color',
field=colorfield.fields.ColorField(blank=True, default='#A41515', help_text='#A41515', max_length=10, verbose_name='background hover color'),
),
migrations.AlterField(
model_name='theme',
name='css_delete_button_text_color',
field=colorfield.fields.ColorField(blank=True, default='#FFFFFF', help_text='#FFFFFF', max_length=10, verbose_name='text color'),
),
migrations.AlterField(
model_name='theme',
name='css_generic_link_color',
field=colorfield.fields.ColorField(blank=True, default='#0C3C26', help_text='#0C3C26', max_length=10, verbose_name='link color'),
),
migrations.AlterField(
model_name='theme',
name='css_generic_link_hover_color',
field=colorfield.fields.ColorField(blank=True, default='#156641', help_text='#156641', max_length=10, verbose_name='link hover color'),
),
migrations.AlterField(
model_name='theme',
name='css_header_background_color',
field=colorfield.fields.ColorField(blank=True, default='#0C4B33', help_text='#0C4B33', max_length=10, verbose_name='background color'),
),
migrations.AlterField(
model_name='theme',
name='css_header_link_color',
field=colorfield.fields.ColorField(blank=True, default='#FFFFFF', help_text='#FFFFFF', max_length=10, verbose_name='link color'),
),
migrations.AlterField(
model_name='theme',
name='css_header_link_hover_color',
field=colorfield.fields.ColorField(blank=True, default='#C9F0DD', help_text='#C9F0DD', max_length=10, verbose_name='link hover color'),
),
migrations.AlterField(
model_name='theme',
name='css_header_text_color',
field=colorfield.fields.ColorField(blank=True, default='#44B78B', help_text='#44B78B', max_length=10, verbose_name='text color'),
),
migrations.AlterField(
model_name='theme',
name='css_module_background_color',
field=colorfield.fields.ColorField(blank=True, default='#44B78B', help_text='#44B78B', max_length=10, verbose_name='background color'),
),
migrations.AlterField(
model_name='theme',
name='css_module_link_color',
field=colorfield.fields.ColorField(blank=True, default='#FFFFFF', help_text='#FFFFFF', max_length=10, verbose_name='link color'),
),
migrations.AlterField(
model_name='theme',
name='css_module_link_hover_color',
field=colorfield.fields.ColorField(blank=True, default='#C9F0DD', help_text='#C9F0DD', max_length=10, verbose_name='link hover color'),
),
migrations.AlterField(
model_name='theme',
name='css_module_rounded_corners',
field=models.BooleanField(default=True, verbose_name='rounded corners'),
),
migrations.AlterField(
model_name='theme',
name='css_module_text_color',
field=colorfield.fields.ColorField(blank=True, default='#FFFFFF', help_text='#FFFFFF', max_length=10, verbose_name='text color'),
),
migrations.AlterField(
model_name='theme',
name='css_save_button_background_color',
field=colorfield.fields.ColorField(blank=True, default='#0C4B33', help_text='#0C4B33', max_length=10, verbose_name='background color'),
),
migrations.AlterField(
model_name='theme',
name='css_save_button_background_hover_color',
field=colorfield.fields.ColorField(blank=True, default='#0C3C26', help_text='#0C3C26', max_length=10, verbose_name='background hover color'),
),
migrations.AlterField(
model_name='theme',
name='css_save_button_text_color',
field=colorfield.fields.ColorField(blank=True, default='#FFFFFF', help_text='#FFFFFF', max_length=10, verbose_name='text color'),
),
migrations.AlterField(
model_name='theme',
name='list_filter_dropdown',
field=models.BooleanField(default=False, verbose_name='use dropdown'),
),
migrations.AlterField(
model_name='theme',
name='logo_visible',
field=models.BooleanField(default=True, verbose_name='visible'),
),
migrations.AlterField(
model_name='theme',
name='name',
field=models.CharField(default='Django', max_length=50),
),
migrations.AlterField(
model_name='theme',
name='related_modal_active',
field=models.BooleanField(default=True, verbose_name='active'),
),
migrations.AlterField(
model_name='theme',
name='related_modal_background_color',
field=colorfield.fields.ColorField(blank=True, default='#000000', help_text='#000000', max_length=10, verbose_name='background color'),
),
migrations.AlterField(
model_name='theme',
name='related_modal_background_opacity',
field=models.FloatField(choices=[(0.1, '10%'), (0.2, '20%'), (0.3, '30%'), (0.4, '40%'), (0.5, '50%'), (0.6, '60%'), (0.7, '70%'), (0.8, '80%'), (0.9, '90%')], default=0.2, help_text='20%', verbose_name='background opacity'),
),
migrations.AlterField(
model_name='theme',
name='related_modal_rounded_corners',
field=models.BooleanField(default=True, verbose_name='rounded corners'),
),
migrations.AlterField(
model_name='theme',
name='title',
field=models.CharField(blank=True, default='Django administration', max_length=50),
),
migrations.AlterField(
model_name='theme',
name='title_color',
field=colorfield.fields.ColorField(blank=True, default='#F5DD5D', help_text='#F5DD5D', max_length=10, verbose_name='title color'),
),
migrations.AlterField(
model_name='theme',
name='title_visible',
field=models.BooleanField(default=True, verbose_name='visible'),
),
]
+19 -19
View File
@@ -51,39 +51,39 @@ class Theme(models.Model):
active = models.BooleanField( default = True )
title = models.CharField( max_length = 50, default = 'Django administration', blank = True )
title_color = ColorField( blank = True, default = '#F5DD5D', help_text = '#F5DD5D', verbose_name = 'title color' )
title_color = ColorField( blank = True, default = '#F5DD5D', help_text = '#F5DD5D', max_length = 10, verbose_name = 'title color' )
title_visible = models.BooleanField( default = True, verbose_name = 'visible' )
logo = models.FileField( upload_to = 'admin-interface/logo/', blank = True, help_text = '(leave blank to use the default Django logo)' )
logo_color = ColorField( blank = True, default = '#FFFFFF', help_text = '#FFFFFF', verbose_name = 'logo color' )
logo_color = ColorField( blank = True, default = '#FFFFFF', help_text = '#FFFFFF', max_length = 10, verbose_name = 'logo color' )
logo_visible = models.BooleanField( default = True, verbose_name = 'visible' )
css_header_background_color = ColorField( blank = True, default = '#0C4B33', help_text = '#0C4B33', verbose_name = 'background color' )
css_header_text_color = ColorField( blank = True, default = '#44B78B', help_text = '#44B78B', verbose_name = 'text color' )
css_header_link_color = ColorField( blank = True, default = '#FFFFFF', help_text = '#FFFFFF', verbose_name = 'link color' )
css_header_link_hover_color = ColorField( blank = True, default = '#C9F0DD', help_text = '#C9F0DD', verbose_name = 'link hover color' )
css_header_background_color = ColorField( blank = True, default = '#0C4B33', help_text = '#0C4B33', max_length = 10, verbose_name = 'background color' )
css_header_text_color = ColorField( blank = True, default = '#44B78B', help_text = '#44B78B', max_length = 10, verbose_name = 'text color' )
css_header_link_color = ColorField( blank = True, default = '#FFFFFF', help_text = '#FFFFFF', max_length = 10, verbose_name = 'link color' )
css_header_link_hover_color = ColorField( blank = True, default = '#C9F0DD', help_text = '#C9F0DD', max_length = 10, verbose_name = 'link hover color' )
css_module_background_color = ColorField( blank = True, default = '#44B78B', help_text = '#44B78B', verbose_name = 'background color' )
css_module_text_color = ColorField( blank = True, default = '#FFFFFF', help_text = '#FFFFFF', verbose_name = 'text color' )
css_module_link_color = ColorField( blank = True, default = '#FFFFFF', help_text = '#FFFFFF', verbose_name = 'link color' )
css_module_link_hover_color = ColorField( blank = True, default = '#C9F0DD', help_text = '#C9F0DD', verbose_name = 'link hover color' )
css_module_background_color = ColorField( blank = True, default = '#44B78B', help_text = '#44B78B', max_length = 10, verbose_name = 'background color' )
css_module_text_color = ColorField( blank = True, default = '#FFFFFF', help_text = '#FFFFFF', max_length = 10, verbose_name = 'text color' )
css_module_link_color = ColorField( blank = True, default = '#FFFFFF', help_text = '#FFFFFF', max_length = 10, verbose_name = 'link color' )
css_module_link_hover_color = ColorField( blank = True, default = '#C9F0DD', help_text = '#C9F0DD', max_length = 10, verbose_name = 'link hover color' )
css_module_rounded_corners = models.BooleanField( default = True, verbose_name = 'rounded corners' )
css_generic_link_color = ColorField( blank = True, default = '#0C3C26', help_text = '#0C3C26', verbose_name = 'link color' )
css_generic_link_hover_color = ColorField( blank = True, default = '#156641', help_text = '#156641', verbose_name = 'link hover color' )
css_generic_link_color = ColorField( blank = True, default = '#0C3C26', help_text = '#0C3C26', max_length = 10, verbose_name = 'link color' )
css_generic_link_hover_color = ColorField( blank = True, default = '#156641', help_text = '#156641', max_length = 10, verbose_name = 'link hover color' )
css_save_button_background_color = ColorField( blank = True, default = '#0C4B33', help_text = '#0C4B33', verbose_name = 'background color' )
css_save_button_background_hover_color = ColorField( blank = True, default = '#0C3C26', help_text = '#0C3C26', verbose_name = 'background hover color' )
css_save_button_text_color = ColorField( blank = True, default = '#FFFFFF', help_text = '#FFFFFF', verbose_name = 'text color' )
css_save_button_background_color = ColorField( blank = True, default = '#0C4B33', help_text = '#0C4B33', max_length = 10, verbose_name = 'background color' )
css_save_button_background_hover_color = ColorField( blank = True, default = '#0C3C26', help_text = '#0C3C26', max_length = 10, verbose_name = 'background hover color' )
css_save_button_text_color = ColorField( blank = True, default = '#FFFFFF', help_text = '#FFFFFF', max_length = 10, verbose_name = 'text color' )
css_delete_button_background_color = ColorField( blank = True, default = '#BA2121', help_text = '#BA2121', verbose_name = 'background color' )
css_delete_button_background_hover_color = ColorField( blank = True, default = '#A41515', help_text = '#A41515', verbose_name = 'background hover color' )
css_delete_button_text_color = ColorField( blank = True, default = '#FFFFFF', help_text = '#FFFFFF', verbose_name = 'text color' )
css_delete_button_background_color = ColorField( blank = True, default = '#BA2121', help_text = '#BA2121', max_length = 10, verbose_name = 'background color' )
css_delete_button_background_hover_color = ColorField( blank = True, default = '#A41515', help_text = '#A41515', max_length = 10, verbose_name = 'background hover color' )
css_delete_button_text_color = ColorField( blank = True, default = '#FFFFFF', help_text = '#FFFFFF', max_length = 10, verbose_name = 'text color' )
css = models.TextField( blank = True )
related_modal_active = models.BooleanField( default = True, verbose_name = 'active' )
related_modal_background_color = ColorField( blank = True, default = '#000000', help_text = '#000000', verbose_name = 'background color' )
related_modal_background_color = ColorField( blank = True, default = '#000000', help_text = '#000000', max_length = 10, verbose_name = 'background color' )
related_modal_background_opacity_choices = (
(0.1, '10%', ),
(0.2, '20%', ),
@@ -22,13 +22,23 @@
var initData = JSON.parse(document.getElementById('django-admin-popup-response-constants').dataset.popupResponse);
switch(initData.action){
case 'change':
openerRef.dismissChangeRelatedObjectPopup(modalRef, initData.value, initData.obj, initData.new_value);
if( typeof(openerRef.dismissChangeRelatedObjectPopup) == 'function' ){
openerRef.dismissChangeRelatedObjectPopup(modalRef, initData.value, initData.obj, initData.new_value);
}
break;
case 'delete':
openerRef.dismissDeleteRelatedObjectPopup(modalRef, initData.value);
if( typeof(openerRef.dismissDeleteRelatedObjectPopup) == 'function' ){
openerRef.dismissDeleteRelatedObjectPopup(modalRef, initData.value);
}
break;
default:
openerRef.dismissAddRelatedObjectPopup(modalRef, initData.value, initData.obj);
if( typeof(openerRef.dismissAddRelatedObjectPopup) == 'function' ){
openerRef.dismissAddRelatedObjectPopup(modalRef, initData.value, initData.obj);
}
else if( typeof(openerRef.dismissAddAnotherPopup) == 'function' ){
// django 1.7 compatibility
openerRef.dismissAddAnotherPopup(modalRef, initData.value, initData.obj);
}
break;
}
})();
@@ -7,18 +7,23 @@ if(typeof django !== 'undefined' && typeof django.jQuery !== 'undefined' )
// create the function that will close the modal
function dismissRelatedObjectModal()
{
// close the popup
// close the popup as modal
$.magnificPopup.close();
}
// assign the function to a global variable
window.dismissRelatedObjectModal = dismissRelatedObjectModal;
// listen click events on related links
// (:link prevents to listen click event if href is not defined)
$('a.related-widget-wrapper-link:link').click(function(e){
function presentRelatedObjectModal(e)
{
var href = ($(this).attr('href') || '');
if( href == '' ){
return;
}
// open the popup as modal
e.preventDefault();
e.stopImmediatePropagation();
// remove focus from clicked link
$(this).blur();
@@ -26,16 +31,23 @@ if(typeof django !== 'undefined' && typeof django.jQuery !== 'undefined' )
// use the clicked link id as iframe name
// it will be available as window.name in the loaded iframe
var iframeName = $(this).attr('id');
//var iframeName = String(window.name + '____' + $(this).attr('id'));
//console.log('open modal with name: "' + iframeName + '"');
// var iframeName = String(window.name + '____' + $(this).attr('id'));
// console.log('open modal with name: "' + iframeName + '"');
// browsers stop loading nested iframes having the same src url
// create a random parameter and append it to the src url to prevent it
var iframeSrcRandom = String(Math.round(Math.random() * 999999));
var iframeSrc = $(this).attr('href') + '&_modal=' + iframeSrcRandom;
var iframeSrc = href;
// fix for django 1.7
if( iframeSrc.indexOf('_popup=1') == -1 ){
iframeSrc += '&_popup=1';
}
iframeSrc += '&_modal=' + iframeSrcRandom;
// build the iframe html
//var iframeHTML = '<iframe id="related-modal" name="' + iframeName + '" src="' + iframeSrc + '"></iframe>';
// var iframeHTML = '<iframe id="related-modal" name="' + iframeName + '" src="' + iframeSrc + '"></iframe>';
var iframeHTML = '<iframe id="related-modal-iframe" name="' + iframeName + '" src="' + iframeSrc + '"></iframe>';
// create the iframe jquery element
@@ -61,7 +73,16 @@ if(typeof django !== 'undefined' && typeof django.jQuery !== 'undefined' )
});
return false;
});
}
// listen click events on related links
// django 1.7 compatibility
$('a.add-another').removeAttr('onclick');
$('a.add-another').click( presentRelatedObjectModal );
// django 1.8 and above
$('a.related-widget-wrapper-link').click( presentRelatedObjectModal );
});
})(django.jQuery);
+11 -6
View File
@@ -8,8 +8,12 @@
{% block extrastyle %}
{% get_admin_interface_theme as theme %}
{% get_admin_interface_version as version %}
<style type="text/css">
/*
django-admin-interface {{ version }}
https://github.com/fabiocaccamo/django-admin-interface
*/
{% include "admin_interface/css/admin-interface.css" %}
{% include "admin_interface/css/admin-interface-fix.css" %}
{% include "admin_interface/css/list-filter-dropdown.css" %}
@@ -29,14 +33,15 @@
{% block blockbots %}
{{ block.super }}
{% get_admin_interface_theme as theme %}
{% get_admin_interface_version as version %}
{# https://github.com/elky/django-flat-responsive#important-note #}
<meta name="viewport" content="user-scalable=no, width=device-width, initial-scale=1.0, maximum-scale=1.0">
<link rel="stylesheet" type="text/css" href="{% static 'admin/css/responsive.css' %}" />
{% get_admin_interface_theme as theme %}
<link rel="stylesheet" type="text/css" href="{% static 'admin/css/responsive.css' %}?v={{ version }}" />
{% if theme.related_modal_active %}
<link rel="stylesheet" type="text/css" href="{% static 'admin_interface/magnific-popup/magnific-popup.css' %}" />
<script type="text/javascript" src="{% static 'admin_interface/magnific-popup/jquery.magnific-popup.js' %}"></script>
<script type="text/javascript" src="{% static 'admin_interface/related-modal/related-modal.js' %}"></script>
<link rel="stylesheet" type="text/css" href="{% static 'admin_interface/magnific-popup/magnific-popup.css' %}?v={{ version }}" />
<script type="text/javascript" src="{% static 'admin_interface/magnific-popup/jquery.magnific-popup.js' %}?v={{ version }}"></script>
<script type="text/javascript" src="{% static 'admin_interface/related-modal/related-modal.js' %}?v={{ version }}"></script>
{% endif %}
{% endblock %}
@@ -0,0 +1,15 @@
{% load i18n static %}<!DOCTYPE html>
<html>
<head><title>{% trans 'Popup closing...' %}</title></head>
<body>
<script type="text/javascript"
id="django-admin-popup-response-constants"
src="{% static "admin/js/popup_response.js" %}"
{% if popup_response_data %}
data-popup-response="{{ popup_response_data }}"
{% else %}
data-popup-response='{"action":"{{ action|escape }}","value":"{{ value|escape }}","obj":"{{ obj|escape }}","new_value":"{{ new_value|escape }}"}'
{% endif %}>
</script>
</body>
</html>
@@ -3,12 +3,17 @@
from django import template
from admin_interface.models import Theme
from admin_interface.version import __version__
register = template.Library()
try:
assignment_tag = register.assignment_tag
except AttributeError:
assignment_tag = register.simple_tag
@register.assignment_tag(takes_context = True)
@assignment_tag(takes_context = True)
def get_admin_interface_theme(context):
theme = None
@@ -25,3 +30,8 @@ def get_admin_interface_theme(context):
return theme
@assignment_tag(takes_context = True)
def get_admin_interface_version(context):
return __version__
+1 -1
View File
@@ -1,4 +1,4 @@
# -*- coding: utf-8 -*-
__version__ = '0.4.6'
__version__ = '0.5.1'
+3 -3
View File
@@ -17,9 +17,9 @@ setup(
keywords=['django', 'admin', 'interface', 'responsive', 'flat', 'theme', 'custom', 'ui'],
requires=['django(>=1.7)'],
install_requires=[
'django-colorfield==0.1.12',
'django-flat-theme==1.1.4',
'django-flat-responsive==1.3.0'
'django-colorfield>=0.1,<1.0',
'django-flat-theme>=1.0,<2.0',
'django-flat-responsive>=1.0,<2.0',
],
classifiers=[
'Development Status :: 5 - Production/Stable',
+5 -4
View File
@@ -1,9 +1,9 @@
[tox]
envlist =
py27-{17,18,19,110,111},
py34-{17,18,19,110,111},
py35-{18,19,110,111},
py36-{18,19,110,111},
py34-{17,18,19,110,111,master},
py35-{18,19,110,111,master},
py36-{18,19,110,111,master},
[testenv]
passenv = CI TRAVIS TRAVIS_*
deps =
@@ -12,9 +12,10 @@ deps =
19: Django >= 1.9, < 1.10
110: Django >= 1.10, < 1.11
111: Django >= 1.11, < 1.12
master: https://github.com/django/django/archive/master.tar.gz
coverage
codecov
commands =
coverage run --append --source=admin_interface setup.py test
coverage report -m
codecov
codecov