Compare commits

...

102 Commits

Author SHA1 Message Date
Fabio Caccamo 97ac8268b6 Updated version and CHANGELOG. 2020-09-04 15:35:54 +02:00
Fabio Caccamo 941835b5ee Removed old import. 2020-09-04 15:32:58 +02:00
Fabio Caccamo b050d7cb61 Added conditional imports to avoid Django deprecation warnings. #92 2020-09-04 15:30:03 +02:00
Fabio Caccamo 7d64545031 Updated header user-tools margins. 2020-09-04 11:43:42 +02:00
Fabio Caccamo 892bfa5e16 Changed header content vertical align to top. 2020-09-02 18:08:48 +02:00
Fabio Caccamo b165e6d27c Updated version. 2020-09-02 14:53:28 +02:00
Fabio Caccamo f0a72d5e40 Added django-json-widget theming support. 2020-09-02 14:53:19 +02:00
Fabio Caccamo 869d4c31ad Updated README testing section. [ci skip] 2020-08-27 12:52:48 +02:00
Fabio Caccamo a7788b98ed Updated requirements. [ci skip] 2020-08-27 12:52:38 +02:00
Fabio Caccamo 1045690678 Updated changelog and version. 2020-08-21 17:49:29 +02:00
Fabio Caccamo 09548dbcdc Fixed related modal not closing on edit save and create with django 3.1 - #96 2020-08-21 17:48:27 +02:00
Fabio Caccamo 0a4949c75a Updated CHANGELOG and version. 2020-08-18 17:53:37 +02:00
Fabio Caccamo f36e904faf Resized toogle-nav-sidebar button. 2020-08-18 17:51:10 +02:00
Fabio Caccamo f9a6f501e1 Added border when there is not breadcrumbs module. 2020-08-18 17:50:34 +02:00
Fabio Caccamo f9629f5ef1 Added max-width to logo. 2020-08-18 17:16:43 +02:00
Fabio Caccamo 084b0d65f3 Increased sidebar padding-top. 2020-08-18 16:41:32 +02:00
Fabio Caccamo 5935ee9d40 Added requirements-dev.txt 2020-08-18 16:39:45 +02:00
Fabio Caccamo ac66bfddb9 Added views badge to README. [ci skip] 2020-08-06 11:29:40 +02:00
Fabio Caccamo 62ccb31793 Updated CHANGELOG. 2020-08-05 21:24:30 +02:00
Fabio Caccamo 4e243962d1 Updated version. 2020-08-05 21:21:52 +02:00
Fabio Caccamo 51202a1def Improved header style. 2020-08-05 21:21:37 +02:00
Fabio Caccamo d799242714 Improved nav-sidebar style. 2020-08-05 21:19:22 +02:00
Fabio Caccamo e37142e0f4 Fixed tox django version error. 2020-08-04 17:43:03 +02:00
Fabio Caccamo 79dcc111da Added django 3.1 to CI. 2020-08-04 17:38:33 +02:00
Fabio Caccamo 651557bfc2 Updated CHANGELOG.md [ci skip] 2020-07-20 17:57:22 +02:00
Fabio Caccamo 5456e7ac53 Updated version. 2020-07-20 17:14:49 +02:00
Fabio Caccamo 03f8a2704e Fixed unreadable text in autocomplete multi-selects. #83 2020-07-20 17:14:40 +02:00
Fabio Caccamo ceab3232ad Unmerged admin-index PR. 2020-07-13 14:41:53 +02:00
Fabio Caccamo 6a0576cb7a Merge pull request #87 from carlosmonari/master
Hi again Mr Fabio, add suport a django-admin-index
2020-07-01 13:47:11 +02:00
carlosmonari 2935c890cf include stylishment to package django-admin-index
include stylishment to package https://github.com/maykinmedia/django-admin-index
2020-06-28 18:16:30 -03:00
carlosmonari 36f13ce164 include stylishment to package django-admin-index
include stylishment to package https://github.com/maykinmedia/django-admin-index
2020-06-28 18:13:02 -03:00
Fabio Caccamo 6aec3c0c7b Updated version and CHANGELOG.md. 2020-04-07 15:50:01 +02:00
Fabio Caccamo 147a2a6abf Fixed popup javascript error when related modal is inactive. #76 2020-04-07 15:49:19 +02:00
Fabio Caccamo f7ec79eb75 Fixed js self invoking anonymous function expression. 2020-04-07 15:48:42 +02:00
Fabio Caccamo 32e4afd90f Updated tox and .travis config. 2020-03-01 13:12:44 +01:00
Fabio Caccamo bf40b1f36b Updated version. 2020-02-21 17:48:18 +01:00
Fabio Caccamo 94ba6c1813 Updated CHANGELOG. 2020-02-21 17:47:45 +01:00
Fabio Caccamo ca57425525 Updated .travis config. 2020-02-21 17:47:34 +01:00
Fabio Caccamo 535a7c0490 Fixed custom django admin header. #75 2020-02-21 17:47:21 +01:00
Fabio Caccamo d97fc38a88 Bumped django-colorfield version to 0.2. 2020-02-17 21:29:28 +01:00
Fabio Caccamo 1caca70e0f Improved setup.py. 2020-02-17 13:00:17 +01:00
Fabio Caccamo 427c1c2a00 Fixed README codacy badge. 2020-02-13 14:46:30 +01:00
Fabio Caccamo 01f4254f05 Updated README. [ci skip] 2020-02-11 14:51:56 +01:00
Fabio Caccamo 8bf78d3ba0 Updated README. [ci skip] 2020-02-11 14:39:25 +01:00
Fabio Caccamo 10a4ceaf90 Updated installation instructions in README. [ci skip] 2020-02-10 14:49:59 +01:00
Fabio Caccamo df66fa49a4 Removed unused variables. 2020-02-07 15:51:35 +01:00
Fabio Caccamo d689ba43af Improved code quality. 2020-02-07 15:16:36 +01:00
Fabio Caccamo dc43ff1b0a Merge pull request #74 from ishakoktn/master
Adding TR language for localization
2020-02-07 14:59:04 +01:00
İshak Okutan 49ae15ce98 editing translating info's and improvement translations 2020-01-29 04:56:58 +03:00
Fabio Caccamo 1e26e5ff6c Updated README.md 2020-01-25 12:42:26 +01:00
İshak Okutan 8391d2ebd2 Merge pull request #1 from ishakoktn/add-tr-language
add tr language
2020-01-24 06:19:14 +03:00
İshak Okutan fd81e75729 add tr language 2020-01-24 06:18:23 +03:00
Fabio Caccamo e51e4e3ae6 Merge pull request #73 from merwok-forks/cleanup-markup
Don't hard-code media type for favicon
2020-01-20 16:37:06 +01:00
Éric Araujo b3ac5df522 don't use xml/sgml style tags in html 2020-01-20 09:24:59 -05:00
Éric Araujo 11944eb07c remove hard-coded favicon type 2020-01-20 09:24:44 -05:00
Fabio Caccamo 42dda3d91d Updated README. [ci skip] 2020-01-14 11:56:26 +01:00
Fabio Caccamo fb0582ded7 Updated bug report template. [ci skip] 2019-12-07 23:23:10 +01:00
Fabio Caccamo 1e7fa33527 Added issue templates. [ci skip] 2019-12-05 12:14:14 +01:00
Fabio Caccamo 8bdbf31465 Improved code quality. 2019-12-03 11:34:26 +01:00
Fabio Caccamo e739b784ec Updated README requirements. [ci skip] 2019-12-03 11:07:47 +01:00
Fabio Caccamo 4a6cb3601e Updated version. 2019-12-03 11:05:16 +01:00
Fabio Caccamo 7993467346 Updated .travis 2019-12-02 18:56:36 +01:00
Fabio Caccamo 287e4421c9 Added python 3.8 and django 3.0 compatibility. 2019-12-02 18:51:35 +01:00
Fabio Caccamo aa57797297 Fixed input file thumbnail display. 2019-12-02 18:51:09 +01:00
Fabio Caccamo 2667e96549 Removed open-collective from README. [ci skip] 2019-12-02 18:50:29 +01:00
Fabio Caccamo 22dbcd206b Create FUNDING.yml 2019-11-12 15:54:53 +01:00
Fabio Caccamo aaf586721d Merge pull request #66 from opencollective/opencollective
Activating Open Collective
2019-10-15 12:33:41 +02:00
Fabio Caccamo d5c14ef3f4 Updated CHANGELOG and version. 2019-09-27 12:08:25 +02:00
Fabio Caccamo 93dfb07af9 Fixed select2 background color. 2019-09-27 11:59:29 +02:00
Fabio Caccamo 8e734864c2 Merge pull request #69 from lorenzomorandini/select2-theme-color
Autocomplete selected color:
2019-09-27 09:29:31 +02:00
Lorenzo Morandini d1cb3c11aa Autocomplete selected color:
set select2 selected color based on css_header_background_color
2019-09-25 15:00:16 +02:00
Fabio Caccamo 82923f9e98 Optimized language chooser template tag. 2019-09-05 10:15:29 +02:00
Fabio Caccamo 235d51ed9a Updated CHANGELOG. [ci skip] 2019-09-04 11:25:21 +02:00
Fabio Caccamo 1baebf9d62 Added language chooser display option. 2019-09-04 11:24:02 +02:00
Fabio Caccamo 56cdbe5d2f Updated README and CHANGELOG. [ci skip] 2019-09-03 18:58:17 +02:00
Fabio Caccamo 06de101ded Added language chooser. 2019-09-03 18:46:31 +02:00
Fabio Caccamo 59ab83538f Removed FUNDING.yml [ci skip] 2019-07-23 18:24:50 +02:00
Fabio Caccamo b04c17a4fd Updated FUNDING.yml [ci skip] 2019-07-23 18:22:47 +02:00
Fabio Caccamo 5b0490b352 Updated FUNDING.yml [ci skip] 2019-07-23 18:19:27 +02:00
Jess 8de47f2ecb Added financial contributors to the README 2019-07-15 15:20:36 -07:00
Fabio Caccamo 783464c065 Removed python 3.4 from travis. 2019-07-03 15:49:31 +02:00
Fabio Caccamo 6b3f59788b Updated .travis.yml 2019-07-03 15:18:14 +02:00
Fabio Caccamo 45ab7066cc Merge commit 'bb83f74fb4524b708e3f10f4a0b669b4e80fd70a' 2019-07-03 14:32:04 +02:00
Fabio Caccamo df013b9ba3 Removed README.rst 2019-07-03 14:31:57 +02:00
Fabio Caccamo bb83f74fb4 Create FUNDING.yml 2019-06-03 11:15:23 +02:00
Fabio Caccamo da044864d1 Added Codacy badge to README. [ci skip] 2019-05-20 10:44:31 +02:00
Fabio Caccamo db7c12fdb4 Added CHANGELOG and updated version. [ci skip] 2019-05-09 11:26:03 +02:00
Fabio Caccamo 5b0a5e4c46 Merge pull request #62 from pooyamb/master
Fix #52: Broken migration on postgres/windows
2019-05-09 10:41:27 +02:00
Pouya Mobasher Behrouz 0f1dde545e Fix #52: Broken migration on postgres/windows 2019-05-07 18:44:00 +04:30
Fabio Caccamo b45e357418 Updated .travis 2019-04-29 18:44:29 +02:00
Fabio Caccamo fa6c79c367 Updated .travis 2019-04-29 18:37:34 +02:00
Fabio Caccamo 760609cafd Updated .travis 2019-04-29 18:27:26 +02:00
Fabio Caccamo cb3443aa4c Added django 2.2 to tox and travis and updated README. 2019-04-29 17:51:51 +02:00
Fabio Caccamo 9384c6db79 Updated version. 2019-04-29 17:36:47 +02:00
Fabio Caccamo 1a800d7d6a Fixed admin duplicated count query. 2019-04-29 17:36:36 +02:00
Fabio Caccamo 352701ae7d Added admin theme caching to remove duplicated queries. Fixed #19 2019-04-29 17:35:24 +02:00
Fabio Caccamo b4d0b4c985 Added django-dynamic-raw-id support - #61 2019-04-29 16:38:28 +02:00
Fabio Caccamo 26e67dab66 Updated app title italian localization. 2019-04-29 16:37:56 +02:00
Fabio Caccamo e604dcdffa Updated version [ci skip] 2019-03-28 12:15:30 +01:00
Fabio Caccamo 9b56343a81 Added idempotent deploy support. 2019-03-28 12:08:17 +01:00
Fabio Caccamo aef2d56fba Updated version. 2019-03-22 11:41:40 +01:00
Fabio Caccamo cb7a358c6c Fixed raw-id-field whith django-admin-interface #58 2019-03-22 11:41:31 +01:00
40 changed files with 1365 additions and 517 deletions
+6
View File
@@ -0,0 +1,6 @@
github: [fabiocaccamo]
patreon: fabiocaccamo
ko_fi: fabiocaccamo
liberapay: fabiocaccamo
issuehunt: fabiocaccamo
custom: ['https://www.paypal.me/fabiocaccamo']
+23
View File
@@ -0,0 +1,23 @@
---
name: Bug report
about: Report a bug for this project
title: ''
labels: bug
assignees: fabiocaccamo
---
**Python version**
?
**Django version**
?
**Package version**
?
**Current behavior (bug description)**
?
**Expected behavior**
?
+10
View File
@@ -0,0 +1,10 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: enhancement
assignees: fabiocaccamo
---
+118 -74
View File
@@ -1,87 +1,132 @@
os: linux
dist: xenial
language: python language: python
cache: pip cache: pip
python: 3.5 jobs:
env:
- TOX_ENV=py27-dj17-sqlite
- TOX_ENV=py27-dj17-postgres
- TOX_ENV=py27-dj18-sqlite
- TOX_ENV=py27-dj18-postgres
- TOX_ENV=py27-dj19-sqlite
- TOX_ENV=py27-dj19-postgres
- TOX_ENV=py27-dj110-sqlite
- TOX_ENV=py27-dj110-postgres
- TOX_ENV=py27-dj111-sqlite
- TOX_ENV=py27-dj111-postgres
- TOX_ENV=py34-dj17-sqlite
- TOX_ENV=py34-dj17-postgres
- TOX_ENV=py34-dj18-sqlite
- TOX_ENV=py34-dj18-postgres
- TOX_ENV=py34-dj19-sqlite
- TOX_ENV=py34-dj19-postgres
- TOX_ENV=py34-dj110-sqlite
- TOX_ENV=py34-dj110-postgres
- TOX_ENV=py34-dj111-sqlite
- TOX_ENV=py34-dj111-postgres
- TOX_ENV=py34-dj20-sqlite
- TOX_ENV=py34-dj20-postgres
- TOX_ENV=py35-dj18-sqlite
- TOX_ENV=py35-dj18-postgres
- TOX_ENV=py35-dj19-sqlite
- TOX_ENV=py35-dj19-postgres
- TOX_ENV=py35-dj110-sqlite
- TOX_ENV=py35-dj110-postgres
- TOX_ENV=py35-dj111-sqlite
- TOX_ENV=py35-dj111-postgres
- TOX_ENV=py35-dj20-sqlite
- TOX_ENV=py35-dj20-postgres
- TOX_ENV=py35-dj21-sqlite
- TOX_ENV=py35-dj21-postgres
matrix:
include: include:
- python: "2.7"
env: TOX_ENV=py27-dj17-sqlite
- python: "2.7"
env: TOX_ENV=py27-dj17-postgres
- python: "2.7"
env: TOX_ENV=py27-dj18-sqlite
- python: "2.7"
env: TOX_ENV=py27-dj18-postgres
- python: "2.7"
env: TOX_ENV=py27-dj19-sqlite
- python: "2.7"
env: TOX_ENV=py27-dj19-postgres
- python: "2.7"
env: TOX_ENV=py27-dj110-sqlite
- python: "2.7"
env: TOX_ENV=py27-dj110-postgres
- python: "2.7"
env: TOX_ENV=py27-dj111-sqlite
- python: "2.7"
env: TOX_ENV=py27-dj111-postgres
- python: "3.5"
env: TOX_ENV=py35-dj18-sqlite
- python: "3.5"
env: TOX_ENV=py35-dj18-postgres
- python: "3.5"
env: TOX_ENV=py35-dj19-sqlite
- python: "3.5"
env: TOX_ENV=py35-dj19-postgres
- python: "3.5"
env: TOX_ENV=py35-dj110-sqlite
- python: "3.5"
env: TOX_ENV=py35-dj110-postgres
- python: "3.5"
env: TOX_ENV=py35-dj111-sqlite
- python: "3.5"
env: TOX_ENV=py35-dj111-postgres
- python: "3.5"
env: TOX_ENV=py35-dj20-sqlite
- python: "3.5"
env: TOX_ENV=py35-dj20-postgres
- python: "3.5"
env: TOX_ENV=py35-dj21-sqlite
- python: "3.5"
env: TOX_ENV=py35-dj21-postgres
# - python: "3.5"
# env: TOX_ENV=py35-dj22-sqlite
- python: "3.5"
env: TOX_ENV=py35-dj22-postgres
- python: "3.6" - python: "3.6"
env: env: TOX_ENV=py36-dj111-sqlite
- TOX_ENV=py36-dj111-sqlite
- TOX_ENV=py36-dj111-postgres
- python: "3.6" - python: "3.6"
env: env: TOX_ENV=py36-dj111-postgres
- TOX_ENV=py36-dj20-sqlite
- TOX_ENV=py36-dj20-postgres
- python: "3.6" - python: "3.6"
env: env: TOX_ENV=py36-dj20-sqlite
- TOX_ENV=py36-dj21-sqlite
- TOX_ENV=py36-dj21-postgres
- python: "3.6" - python: "3.6"
env: env: TOX_ENV=py36-dj20-postgres
- TOX_ENV=py36-djmaster-sqlite - python: "3.6"
- TOX_ENV=py36-djmaster-postgres env: TOX_ENV=py36-dj21-sqlite
- python: "3.6"
env: TOX_ENV=py36-dj21-postgres
- python: "3.6"
env: TOX_ENV=py36-dj22-sqlite
- python: "3.6"
env: TOX_ENV=py36-dj22-postgres
- python: "3.6"
env: TOX_ENV=py36-dj30-sqlite
- python: "3.6"
env: TOX_ENV=py36-dj30-postgres
- python: "3.6"
env: TOX_ENV=py36-dj31-sqlite
- python: "3.6"
env: TOX_ENV=py36-dj31-postgres
- python: "3.6"
env: TOX_ENV=py36-djmaster-sqlite
- python: "3.6"
env: TOX_ENV=py36-djmaster-postgres
- python: "3.7" - python: "3.7"
env: env: TOX_ENV=py37-dj20-sqlite
- TOX_ENV=py37-dj20-sqlite
- TOX_ENV=py37-dj20-postgres
dist: xenial
language: python
sudo: required
- python: "3.7" - python: "3.7"
env: env: TOX_ENV=py37-dj20-postgres
- TOX_ENV=py37-dj21-sqlite
- TOX_ENV=py37-dj21-postgres
dist: xenial
language: python
sudo: required
- python: "3.7" - python: "3.7"
env: env: TOX_ENV=py37-dj21-sqlite
- TOX_ENV=py37-djmaster-sqlite - python: "3.7"
- TOX_ENV=py37-djmaster-postgres env: TOX_ENV=py37-dj21-postgres
dist: xenial - python: "3.7"
language: python env: TOX_ENV=py37-dj22-sqlite
sudo: required - python: "3.7"
env: TOX_ENV=py37-dj22-postgres
- python: "3.7"
env: TOX_ENV=py37-dj30-sqlite
- python: "3.7"
env: TOX_ENV=py37-dj30-postgres
- python: "3.7"
env: TOX_ENV=py37-dj31-sqlite
- python: "3.7"
env: TOX_ENV=py37-dj31-postgres
- python: "3.7"
env: TOX_ENV=py37-djmaster-sqlite
- python: "3.7"
env: TOX_ENV=py37-djmaster-postgres
- python: "3.8"
env: TOX_ENV=py38-dj22-sqlite
- python: "3.8"
env: TOX_ENV=py38-dj22-postgres
- python: "3.8"
env: TOX_ENV=py38-dj30-sqlite
- python: "3.8"
env: TOX_ENV=py38-dj30-postgres
- python: "3.8"
env: TOX_ENV=py38-dj31-sqlite
- python: "3.8"
env: TOX_ENV=py38-dj31-postgres
- python: "3.8"
env: TOX_ENV=py38-djmaster-sqlite
- python: "3.8"
env: TOX_ENV=py38-djmaster-postgres
allow_failures: allow_failures:
- env: - env: TOX_ENV=py36-djmaster-sqlite
- TOX_ENV=py36-djmaster-sqlite - env: TOX_ENV=py36-djmaster-postgres
- TOX_ENV=py36-djmaster-postgres - env: TOX_ENV=py37-djmaster-sqlite
- env: - env: TOX_ENV=py37-djmaster-postgres
- TOX_ENV=py37-djmaster-sqlite - env: TOX_ENV=py38-djmaster-sqlite
- TOX_ENV=py37-djmaster-postgres - env: TOX_ENV=py38-djmaster-postgres
install: install:
- pip install tox - pip install tox
services: services:
@@ -90,4 +135,3 @@ before_script:
- psql -c 'create database admin_interface;' -U postgres - psql -c 'create database admin_interface;' -U postgres
script: script:
- tox -e $TOX_ENV - tox -e $TOX_ENV
sudo: false
+135
View File
@@ -0,0 +1,135 @@
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [0.13.4](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.13.4) - 2020-??-??
- Added conditional imports to avoid Django deprecation warnings. #92
- Changed admin header content vertical align to top.
## [0.13.3](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.13.3) - 2020-09-02
- Added `django-json-widget` theming support.
## [0.13.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.13.2) - 2020-08-21
- Fixed related modal not closing on edit save and create with django 3.1 - #96
## [0.13.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.13.1) - 2020-08-18
- Improved header and nav-sidebar style.
- Added `max-width` to logo.
- Added `requirements-dev.txt`
## [0.13.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.13.0) - 2020-08-05
- Improved nav-sidebar style (`django>=3.1` support).
- Improved header style.
## [0.12.3](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.12.3) - 2020-07-20
- Fixed unreadable text in autocomplete multi-selects. #83
## [0.12.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.12.2) - 2020-04-07
- Fixed popup javascript error when related modal is inactive. #76
- Fixed js self invoking anonymous function expression.
## [0.12.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.12.1) - 2020-02-21
- Updated `.travis` config.
- Fixed custom django admin header. #75
- Bumped `django-colorfield` version to `0.2.0`.
- Added `tr` language.
- Removed hard-coded favicon type.
- Improved code-quality.
## [0.12.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.12.0) - 2019-12-02
- Added `python 3.8` and `django 3.0` compatibility.
## [0.11.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.11.2) - 2019-09-27
- Fixed `select2` background color.
## [0.11.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.11.1) - 2019-09-04
- Added language chooser display option.
## [0.11.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.11.0) - 2019-09-03
- Added language chooser.
## [0.10.5](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.10.5) - 2019-05-09
- Fixed broken migration on postgres/windows. #52
## [0.10.4](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.10.4) - 2019-03-29
- Added `django 2.2` to `tox` and `travis`.
- Fixed admin duplicated count query.
- Added admin theme caching to remove duplicated queries. #19
- Added `django-dynamic-raw-id` support. #61
- Updated `it` localization.
## [0.10.3](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.10.3) - 2019-03-28
- Fixed idempotent deploy support. #40
## [0.10.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.10.2) - 2019-03-22
- Fixed `raw-id-field` whith `django-admin-interface`. #58
## [0.10.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.10.1) - 2019-03-20
- Updated `fr` localization.
## [0.10.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.10.0) - 2019-02-21
- Updated messages.
- Added related modal close button. #45
- Updated fields verbose names.
- Added environment options. #56
## [0.9.3](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.9.3) - 2019-02-06
- Enabled travis pip cache.
- Splitted tests to multiple files.
- Added env badge to favicon.
## [0.9.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.9.2) - 2019-01-11
- Fixed cancel button does not work. #53
- Fixed IntegrityError on postgres
## [0.9.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.9.1) - 2019-01-11
- Fixed missing migration. #51
## [0.9.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.9.0) - 2018-11-13
- Added French localization.
- Added Italian localization.
- Added Spanish localization.
- Added internationalization support.
## [0.8.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.8.2) - 2018-10-24
## [0.8.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.8.1) - 2018-10-11
## [0.8.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.8.0) - 2018-08-31
## [0.7.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.7.0) - 2018-02-06
## [0.6.3](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.6.3) - 2018-02-05
## [0.6.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.6.2) - 2018-02-01
## [0.6.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.6.1) - 2018-01-31
## [0.6.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.6.0) - 2017-11-23
## [0.5.9](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.5.9) - 2017-10-04
## [0.5.8](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.5.8) - 2017-09-29
## [0.5.7](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.5.7) - 2017-09-29
## [0.5.6](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.5.6) - 2017-09-29
## [0.5.5](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.5.5) - 2017-09-27
## [0.5.4](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.5.4) - 2017-09-27
## [0.5.3](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.5.3) - 2017-08-24
## [0.5.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.5.2) - 2017-07-13
## [0.5.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.5.1) - 2017-06-13
## [0.5.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.5.0) - 2017-06-09
## [0.4.6](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.4.6) - 2017-05-24
## [0.4.5](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.4.5) - 2017-05-19
## [0.4.4](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.4.4) - 2017-05-18
## [0.4.3](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.4.3) - 2017-05-16
## [0.4.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.4.2) - 2017-05-11
## [0.4.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.4.1) - 2017-05-04
## [0.4.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.4.0) - 2017-04-14
## [0.3.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.3.2) - 2017-03-29
## [0.3.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.3.1) - 2017-03-29
## [0.3.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.3.0) - 2017-02-09
## [0.2.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.2.1) - 2016-11-08
## [0.2.0](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.2.0) - 2016-09-10
## [0.1.9](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.1.9) - 2016-09-04
## [0.1.8](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.1.8) - 2016-08-05
## [0.1.7](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.1.7) - 2016-06-29
## [0.1.6](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.1.6) - 2016-04-13
## [0.1.5](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.1.5) - 2016-02-24
## [0.1.4](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.1.4) - 2016-02-15
## [0.1.3](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.1.3) - 2015-12-03
## [0.1.2](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.1.2) - 2015-11-25
## [0.1.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.1.1) - 2015-11-13
## [0.0.1](https://github.com/fabiocaccamo/django-admin-interface/releases/tag/0.0.1) - 2015-11-13
+42 -12
View File
@@ -1,10 +1,17 @@
[![Build Status](https://travis-ci.org/fabiocaccamo/django-admin-interface.svg?branch=master)](https://travis-ci.org/fabiocaccamo/django-admin-interface) [![](https://img.shields.io/pypi/pyversions/django-admin-interface.svg?color=3776AB&logo=python&logoColor=white)](https://www.python.org/)
[![codecov](https://codecov.io/gh/fabiocaccamo/django-admin-interface/branch/master/graph/badge.svg)](https://codecov.io/gh/fabiocaccamo/django-admin-interface) [![](https://img.shields.io/pypi/djversions/django-admin-interface?color=0C4B33&logo=django&logoColor=white&label=django)](https://www.djangoproject.com/)
[![Code Health](https://landscape.io/github/fabiocaccamo/django-admin-interface/master/landscape.svg?style=flat)](https://landscape.io/github/fabiocaccamo/django-admin-interface/master)
[![PyPI version](https://badge.fury.io/py/django-admin-interface.svg)](https://badge.fury.io/py/django-admin-interface) [![](https://img.shields.io/pypi/v/django-admin-interface.svg?color=blue&logo=pypi&logoColor=white)](https://pypi.org/project/django-admin-interface/)
[![PyPI downloads](https://img.shields.io/pypi/dm/django-admin-interface.svg)](https://img.shields.io/pypi/dm/django-admin-interface.svg) [![](https://pepy.tech/badge/django-admin-interface)](https://pepy.tech/project/django-admin-interface)
[![Py versions](https://img.shields.io/pypi/pyversions/django-admin-interface.svg)](https://img.shields.io/pypi/pyversions/django-admin-interface.svg) [![](https://img.shields.io/github/stars/fabiocaccamo/django-admin-interface?logo=github)](https://github.com/fabiocaccamo/django-admin-interface/)
[![License](https://img.shields.io/pypi/l/django-admin-interface.svg)](https://img.shields.io/pypi/l/django-admin-interface.svg) [![](https://badges.pufler.dev/visits/fabiocaccamo/django-admin-interface?label=visitors&color=blue)](https://badges.pufler.dev)
[![](https://img.shields.io/pypi/l/django-admin-interface.svg?color=blue)](https://github.com/fabiocaccamo/django-admin-interface/blob/master/LICENSE.txt)
[![](https://img.shields.io/travis/fabiocaccamo/django-admin-interface?logo=travis&label=build)](https://travis-ci.org/fabiocaccamo/django-admin-interface)
[![](https://img.shields.io/codecov/c/gh/fabiocaccamo/django-admin-interface?logo=codecov)](https://codecov.io/gh/fabiocaccamo/django-admin-interface)
[![](https://img.shields.io/codacy/grade/21cb657283c04e70b56fb935277a1ad1?logo=codacy)](https://www.codacy.com/app/fabiocaccamo/django-admin-interface)
[![](https://img.shields.io/codeclimate/maintainability/fabiocaccamo/django-admin-interface?logo=code-climate)](https://codeclimate.com/github/fabiocaccamo/django-admin-interface/)
[![](https://requires.io/github/fabiocaccamo/django-admin-interface/requirements.svg?branch=master)](https://requires.io/github/fabiocaccamo/django-admin-interface/requirements/?branch=master)
# django-admin-interface # django-admin-interface
django-admin-interface is a modern **responsive flat admin interface customizable by the admin itself**. django-admin-interface is a modern **responsive flat admin interface customizable by the admin itself**.
@@ -18,16 +25,15 @@ django-admin-interface is a modern **responsive flat admin interface customizabl
- List filter dropdown *(optional)* - List filter dropdown *(optional)*
- `NEW` **Related modal** *(instead of the old popup window, optional)* - `NEW` **Related modal** *(instead of the old popup window, optional)*
- `NEW` **Environment name/marker** - `NEW` **Environment name/marker**
- Style optimizations for: - `NEW` **Language chooser**
- Compatibility / Style optimizations for:
- `django-ckeditor` - `django-ckeditor`
- `django-dynamic-raw-id`
- `django-json-widget`
- `django-modeltranslation` - `django-modeltranslation`
- `django-tabbed-admin` - `django-tabbed-admin`
- `sorl-thumbnail` - `sorl-thumbnail`
## Requirements
- Python 2.7, 3.4, 3.5, 3.6, 3.7
- Django 1.7, 1.8, 1.9, 1.10, 1.11, 2.0, 2.1
## Installation ## Installation
- Run `pip install django-admin-interface` - Run `pip install django-admin-interface`
- Add `admin_interface`, `flat_responsive`, `flat` and `colorfield` to `settings.INSTALLED_APPS` **before** `django.contrib.admin` - Add `admin_interface`, `flat_responsive`, `flat` and `colorfield` to `settings.INSTALLED_APPS` **before** `django.contrib.admin`
@@ -42,6 +48,8 @@ INSTALLED_APPS = (
'django.contrib.admin', 'django.contrib.admin',
#... #...
) )
X_FRAME_OPTIONS='SAMEORIGIN' # only if django version >= 3.0
``` ```
- Run ``python manage.py migrate`` - Run ``python manage.py migrate``
- Run ``python manage.py collectstatic`` - Run ``python manage.py collectstatic``
@@ -98,6 +106,28 @@ You can add a theme you've created through the admin to this repository by [send
You can use [django-apptemplates](https://github.com/bittner/django-apptemplates), then add `{% extends "admin_interface:admin/base_site.html" %}` to your `base_site.html` You can use [django-apptemplates](https://github.com/bittner/django-apptemplates), then add `{% extends "admin_interface:admin/base_site.html" %}` to your `base_site.html`
## Testing
```bash
# create python virtual environment
virtualenv testing_django_admin_interface
# activate virtualenv
cd testing_django_admin_interface && . bin/activate
# clone repo
git clone https://github.com/fabiocaccamo/django-admin-interface.git src && cd src
# install dependencies
pip install -r requirements.txt
# run tests
tox
# or
python setup.py test
# or
python -m django test --settings "tests.settings"
```
--- ---
## License ## License
-154
View File
@@ -1,154 +0,0 @@
|Build Status| |codecov| |Code Health| |PyPI version| |PyPI downloads| |Py versions| |License|
django-admin-interface
======================
django-admin-interface is a modern **responsive flat admin interface
customizable by the admin itself**.
|django-admin-interface_preview|
---------------------------------
Features
--------
- Beautiful default **django-theme**
- Themes management and customization *(you can customize admin title, logo and colors)*
- Responsive
- List filter dropdown *(optional)*
- ``NEW`` **Related modal** (instead of the old popup window, optional)
- ``NEW`` **Environment name/marker**
- Style optimizations for:
- `django-ckeditor`
- `django-modeltranslation`
- `django-tabbed-admin`
- `sorl-thumbnail`
Requirements
------------
- Python 2.7, 3.4, 3.5, 3.6, 3.7
- Django 1.7, 1.8, 1.9, 1.10, 1.11, 2.0, 2.1
Installation
------------
- Run ``pip install django-admin-interface``
- Add ``admin_interface``, ``flat_responsive`` *(only if django version < 2.0)*, ``flat`` *(only if django version < 1.9)* and ``colorfield`` to ``settings.INSTALLED_APPS`` **before** ``django.contrib.admin``
- Run ``python manage.py migrate``
- Run ``python manage.py collectstatic``
- Restart your application server
Upgrade
^^^^^^^
- Run ``pip install django-admin-interface --upgrade``
- Run ``python manage.py migrate`` *(add* ``--fake-initial`` *if you are upgrading from 0.1.0 version)*
- Run ``python manage.py collectstatic --clear``
- Restart your application server
Optional themes
^^^^^^^^^^^^^^^
This package ships with optional themes as fixtures, they can be
installed using the ``loaddata`` admin command.
Optional themes are activated on installation.
**Django theme** (default):
Run ``python manage.py loaddata admin_interface_theme_django.json``
**Bootstrap theme**:
Run ``python manage.py loaddata admin_interface_theme_bootstrap.json``
**Foundation theme**:
Run ``python manage.py loaddata admin_interface_theme_foundation.json``
**U.S. Web Design Standards 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**. Here are the steps to follow to add:
1. Export your exact theme as fixture using the ``dumpdata`` admin command:
``python manage.py dumpdata admin_interface.Theme --indent 4 -o admin_interface_theme_{{name}}.json --pks=N``
2. Copy the generated json file into the fixtures folder *(making sure
its name starts with ``admin_interface_theme_`` to avoid clashes with
fixtures that might be provided by other third party apps)*.
3. Remove the ``pk`` from the fixture and make sure the ``active``
field is set to ``true`` *(in this way a theme is automatically
activated when installed)*.
4. Edit the section above to document your theme.
Screenshots
-----------
Admin login
|django-admin-interface_login|
-------------------------------
Admin dashboard
|django-admin-interface_dashboard|
-----------------------------------
Admin themes management
|django-admin-interface_themes_management|
--------------------------------------------
Admin theme customization
|django-admin-interface_theme_customization|
---------------------------------------------
FAQ
---
**I already have a custom** ``base_site.html`` **, how can I make it work?**
You can use ``django-apptemplates`, then add ``{% extends "admin_interface:admin/base_site.html" %}`` to your ``base_site.html``
License
-------
Released under **MIT License**.
.. |Build Status| image:: https://travis-ci.org/fabiocaccamo/django-admin-interface.svg?branch=master
.. |codecov| image:: https://codecov.io/gh/fabiocaccamo/django-admin-interface/branch/master/graph/badge.svg
.. |Code Health| image:: https://landscape.io/github/fabiocaccamo/django-admin-interface/master/landscape.svg?style=flat
.. |PyPI version| image:: https://badge.fury.io/py/django-admin-interface.svg
.. |PyPI downloads| image:: https://img.shields.io/pypi/dm/django-admin-interface.svg
.. |Py versions| image:: https://img.shields.io/pypi/pyversions/django-admin-interface.svg
.. |License| image:: https://img.shields.io/pypi/l/django-admin-interface.svg
.. |django-admin-interface_preview| image:: https://user-images.githubusercontent.com/1035294/35631521-64b0cab8-06a4-11e8-8f57-c04fdfbb7e8b.gif
.. |django-admin-interface_login| image:: https://cloud.githubusercontent.com/assets/1035294/11240233/55c8d4ba-8df1-11e5-9568-00fdc987ede8.gif
.. |django-admin-interface_dashboard| image:: https://cloud.githubusercontent.com/assets/1035294/11240239/627c0362-8df1-11e5-81fa-216366a5d8da.gif
.. |django-admin-interface_themes_management| image:: https://cloud.githubusercontent.com/assets/1035294/11240245/6cd1c342-8df1-11e5-928b-f22217474d3d.gif
.. |django-admin-interface_theme_customization| image:: https://cloud.githubusercontent.com/assets/1035294/11240250/7350d942-8df1-11e5-9b28-f2f54c333cdc.gif
+16 -3
View File
@@ -1,15 +1,21 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
from django.contrib import admin
from django.utils.translation import ugettext_lazy as _
from admin_interface.models import Theme from admin_interface.models import Theme
import django
from django.contrib import admin
if django.VERSION < (2, 0):
from django.utils.translation import ugettext_lazy as _
else:
from django.utils.translation import gettext_lazy as _
class ThemeAdmin(admin.ModelAdmin): class ThemeAdmin(admin.ModelAdmin):
list_display = ('name', 'active', ) list_display = ('name', 'active', )
list_editable = ('active', ) list_editable = ('active', )
list_per_page = 100
show_full_result_count = False
fieldsets = ( fieldsets = (
(None, { (None, {
@@ -25,6 +31,13 @@ class ThemeAdmin(admin.ModelAdmin):
'env_visible_in_favicon', 'env_visible_in_favicon',
) )
}), }),
(_('Language chooser'), {
'classes': ('wide', ),
'fields': (
'language_chooser_active',
'language_chooser_display',
)
}),
(_('Logo'), { (_('Logo'), {
'classes': ('wide', ), 'classes': ('wide', ),
'fields': ( 'fields': (
+5 -1
View File
@@ -1,8 +1,12 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import django
from django.apps import AppConfig from django.apps import AppConfig
from django.db.models.signals import post_migrate from django.db.models.signals import post_migrate
from django.utils.translation import ugettext_lazy as _ if django.VERSION < (2, 0):
from django.utils.translation import ugettext_lazy as _
else:
from django.utils.translation import gettext_lazy as _
class AdminInterfaceConfig(AppConfig): class AdminInterfaceConfig(AppConfig):
+20
View File
@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
from django.conf import settings
from django.core.cache import cache, caches
def app_cache():
return caches['admin_interface'] if 'admin_interface' in settings.CACHES else cache
def del_cached_active_theme():
app_cache().delete('admin_interface_theme')
def get_cached_active_theme():
return app_cache().get('admin_interface_theme', None)
def set_cached_active_theme(theme):
app_cache().set('admin_interface_theme', theme)
Binary file not shown.
+59 -45
View File
@@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: django-admin-interface\n" "Project-Id-Version: django-admin-interface\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-03-20 16:12+0000\n" "POT-Creation-Date: 2019-09-04 09:18+0000\n"
"PO-Revision-Date: 2018-12-30 19:13-0500\n" "PO-Revision-Date: 2018-12-30 19:13-0500\n"
"Last-Translator: Martin Vuelta <martin.vuelta@softbutterfly.io>\n" "Last-Translator: Martin Vuelta <martin.vuelta@softbutterfly.io>\n"
"Language-Team: Spanish <dev@softbutterfly.io>\n" "Language-Team: Spanish <dev@softbutterfly.io>\n"
@@ -19,51 +19,55 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: admin_interface/admin.py:19 #: admin_interface/admin.py:21
msgid "Environment" msgid "Environment"
msgstr "Ambiente" msgstr "Ambiente"
#: admin_interface/admin.py:28 #: admin_interface/admin.py:30
msgid "Language chooser"
msgstr ""
#: admin_interface/admin.py:37
msgid "Logo" msgid "Logo"
msgstr "Logo" msgstr "Logo"
#: admin_interface/admin.py:36 #: admin_interface/admin.py:45
msgid "Favicon" msgid "Favicon"
msgstr "Favicon" msgstr "Favicon"
#: admin_interface/admin.py:40 #: admin_interface/admin.py:49
msgid "Title" msgid "Title"
msgstr "Título" msgstr "Título"
#: admin_interface/admin.py:48 #: admin_interface/admin.py:57
msgid "Header" msgid "Header"
msgstr "Encabezado" msgstr "Encabezado"
#: admin_interface/admin.py:57 #: admin_interface/admin.py:66
msgid "Breadcrumbs / Module headers" msgid "Breadcrumbs / Module headers"
msgstr "Breadcrumbs / Encabezados de módulos" msgstr "Breadcrumbs / Encabezados de módulos"
#: admin_interface/admin.py:67 #: admin_interface/admin.py:76
msgid "Generic Links" msgid "Generic Links"
msgstr "Enlaces genéricos" msgstr "Enlaces genéricos"
#: admin_interface/admin.py:74 #: admin_interface/admin.py:83
msgid "Save Buttons" msgid "Save Buttons"
msgstr "Botones de guardar" msgstr "Botones de guardar"
#: admin_interface/admin.py:82 #: admin_interface/admin.py:91
msgid "Delete Buttons" msgid "Delete Buttons"
msgstr "Botones de borrar" msgstr "Botones de borrar"
#: admin_interface/admin.py:90 #: admin_interface/admin.py:99
msgid "Related Modal" msgid "Related Modal"
msgstr "Modal para objetos relacionados" msgstr "Modal para objetos relacionados"
#: admin_interface/admin.py:99 #: admin_interface/admin.py:109
msgid "List Filter" msgid "List Filter"
msgstr "Lista de filtros" msgstr "Lista de filtros"
#: admin_interface/admin.py:103 #: admin_interface/admin.py:113
msgid "Recent Actions" msgid "Recent Actions"
msgstr "Acciones recientes" msgstr "Acciones recientes"
@@ -71,113 +75,123 @@ msgstr "Acciones recientes"
msgid "Admin Interface" msgid "Admin Interface"
msgstr "Interfaz de administración" msgstr "Interfaz de administración"
#: admin_interface/models.py:56 admin_interface/models.py:100 #: admin_interface/models.py:72 admin_interface/models.py:116
#: admin_interface/models.py:135
msgid "name" msgid "name"
msgstr "Nombre" msgstr "Nombre"
#: admin_interface/models.py:59 admin_interface/models.py:224 #: admin_interface/models.py:75 admin_interface/models.py:132
#: admin_interface/models.py:253
msgid "active" msgid "active"
msgstr "Activo" msgstr "Activo"
#: admin_interface/models.py:63 #: admin_interface/models.py:79
#: admin_interface/templates/admin/base_site.html:6 #: admin_interface/templates/admin/base_site.html:6
#: admin_interface/templates/admin/base_site.html:60 #: admin_interface/templates/admin/base_site.html:60
msgid "Django administration" msgid "Django administration"
msgstr "Administración de Django" msgstr "Administración de Django"
#: admin_interface/models.py:65 #: admin_interface/models.py:81
msgid "title" msgid "title"
msgstr "Título" msgstr "Título"
#: admin_interface/models.py:71 admin_interface/models.py:86 #: admin_interface/models.py:87 admin_interface/models.py:102
#: admin_interface/models.py:106 #: admin_interface/models.py:122
#, fuzzy #, fuzzy
#| msgid "logo color" #| msgid "logo color"
msgid "color" msgid "color"
msgstr "color de logo" msgstr "color de logo"
#: admin_interface/models.py:74 admin_interface/models.py:89 #: admin_interface/models.py:90 admin_interface/models.py:105
#: admin_interface/models.py:260 #: admin_interface/models.py:289
msgid "visible" msgid "visible"
msgstr "Visible" msgstr "Visible"
#: admin_interface/models.py:79 #: admin_interface/models.py:95
msgid "Leave blank to use the default Django logo" msgid "Leave blank to use the default Django logo"
msgstr "Dejar en blanco para usaer el logo por defecto de Django" msgstr "Dejar en blanco para usaer el logo por defecto de Django"
#: admin_interface/models.py:80 #: admin_interface/models.py:96
msgid "logo" msgid "logo"
msgstr "logo" msgstr "logo"
#: admin_interface/models.py:94 #: admin_interface/models.py:110
msgid "(.ico|.png|.gif - 16x16|32x32 px)" msgid "(.ico|.png|.gif - 16x16|32x32 px)"
msgstr "Formatos ico, png o gif. Tamaños de 16x16 o 32x32 pixeles" msgstr "Formatos ico, png o gif. Tamaños de 16x16 o 32x32 pixeles"
#: admin_interface/models.py:95 #: admin_interface/models.py:111
msgid "favicon" msgid "favicon"
msgstr "favicon" msgstr "favicon"
#: admin_interface/models.py:104 #: admin_interface/models.py:120
msgid "" msgid ""
"(red: #E74C3C, orange: #E67E22, yellow: #F1C40F, green: #2ECC71, blue: " "(red: #E74C3C, orange: #E67E22, yellow: #F1C40F, green: #2ECC71, blue: "
"#3498DB)" "#3498DB)"
msgstr "" msgstr ""
#: admin_interface/models.py:109 #: admin_interface/models.py:125
msgid "visible in header (marker and name)" msgid "visible in header (marker and name)"
msgstr "" msgstr ""
#: admin_interface/models.py:112 #: admin_interface/models.py:128
msgid "visible in favicon (marker)" msgid "visible in favicon (marker)"
msgstr "" msgstr ""
#: admin_interface/models.py:119 admin_interface/models.py:144 #: admin_interface/models.py:134
#: admin_interface/models.py:185 admin_interface/models.py:204 msgid "code"
#: admin_interface/models.py:230 msgstr ""
#: admin_interface/models.py:141
msgid "display"
msgstr ""
#: admin_interface/models.py:148 admin_interface/models.py:173
#: admin_interface/models.py:214 admin_interface/models.py:233
#: admin_interface/models.py:259
msgid "background color" msgid "background color"
msgstr "color de fondo" msgstr "color de fondo"
#: admin_interface/models.py:125 admin_interface/models.py:150 #: admin_interface/models.py:154 admin_interface/models.py:179
#: admin_interface/models.py:197 admin_interface/models.py:216 #: admin_interface/models.py:226 admin_interface/models.py:245
#: admin_interface/models.py:220 #: admin_interface/models.py:249
msgid "text color" msgid "text color"
msgstr "color de texto" msgstr "color de texto"
#: admin_interface/models.py:131 admin_interface/models.py:156 #: admin_interface/models.py:160 admin_interface/models.py:185
#: admin_interface/models.py:172 #: admin_interface/models.py:201
msgid "link color" msgid "link color"
msgstr "color de enlace" msgstr "color de enlace"
#: admin_interface/models.py:137 admin_interface/models.py:162 #: admin_interface/models.py:166 admin_interface/models.py:191
#: admin_interface/models.py:178 #: admin_interface/models.py:207
msgid "link hover color" msgid "link hover color"
msgstr "color de enlace (hover)" msgstr "color de enlace (hover)"
#: admin_interface/models.py:165 admin_interface/models.py:250 #: admin_interface/models.py:194 admin_interface/models.py:279
msgid "rounded corners" msgid "rounded corners"
msgstr "esquinas redondas" msgstr "esquinas redondas"
#: admin_interface/models.py:191 admin_interface/models.py:210 #: admin_interface/models.py:220 admin_interface/models.py:239
msgid "background hover color" msgid "background hover color"
msgstr "color de fondo (hover)" msgstr "color de fondo (hover)"
#: admin_interface/models.py:247 #: admin_interface/models.py:276
msgid "background opacity" msgid "background opacity"
msgstr "opacidad de fondo" msgstr "opacidad de fondo"
#: admin_interface/models.py:253 #: admin_interface/models.py:282
msgid "close button visible" msgid "close button visible"
msgstr "" msgstr ""
#: admin_interface/models.py:257 #: admin_interface/models.py:286
msgid "use dropdown" msgid "use dropdown"
msgstr "Usar lista desplegable" msgstr "Usar lista desplegable"
#: admin_interface/models.py:269 #: admin_interface/models.py:298
msgid "Theme" msgid "Theme"
msgstr "Tema" msgstr "Tema"
#: admin_interface/models.py:270 #: admin_interface/models.py:299
msgid "Themes" msgid "Themes"
msgstr "Temas" msgstr "Temas"
Binary file not shown.
+59 -45
View File
@@ -8,7 +8,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: PACKAGE VERSION\n" "Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-03-20 14:12-0400\n" "POT-Creation-Date: 2019-09-04 09:18+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -18,51 +18,55 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n" "Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: admin_interface/admin.py:19 #: admin_interface/admin.py:21
msgid "Environment" msgid "Environment"
msgstr "Environnment" msgstr "Environnment"
#: admin_interface/admin.py:28 #: admin_interface/admin.py:30
msgid "Language chooser"
msgstr ""
#: admin_interface/admin.py:37
msgid "Logo" msgid "Logo"
msgstr "Logo" msgstr "Logo"
#: admin_interface/admin.py:36 #: admin_interface/admin.py:45
msgid "Favicon" msgid "Favicon"
msgstr "Favicon" msgstr "Favicon"
#: admin_interface/admin.py:40 #: admin_interface/admin.py:49
msgid "Title" msgid "Title"
msgstr "Titre" msgstr "Titre"
#: admin_interface/admin.py:48 #: admin_interface/admin.py:57
msgid "Header" msgid "Header"
msgstr "Bannière" msgstr "Bannière"
#: admin_interface/admin.py:57 #: admin_interface/admin.py:66
msgid "Breadcrumbs / Module headers" msgid "Breadcrumbs / Module headers"
msgstr "Fil d'ariane / en-têtes de module" msgstr "Fil d'ariane / en-têtes de module"
#: admin_interface/admin.py:67 #: admin_interface/admin.py:76
msgid "Generic Links" msgid "Generic Links"
msgstr "Liens génériques" msgstr "Liens génériques"
#: admin_interface/admin.py:74 #: admin_interface/admin.py:83
msgid "Save Buttons" msgid "Save Buttons"
msgstr "Boutons sauvegarder" msgstr "Boutons sauvegarder"
#: admin_interface/admin.py:82 #: admin_interface/admin.py:91
msgid "Delete Buttons" msgid "Delete Buttons"
msgstr "Boutons supprimer" msgstr "Boutons supprimer"
#: admin_interface/admin.py:90 #: admin_interface/admin.py:99
msgid "Related Modal" msgid "Related Modal"
msgstr "Modale pour objet reliés" msgstr "Modale pour objet reliés"
#: admin_interface/admin.py:100 #: admin_interface/admin.py:109
msgid "List Filter" msgid "List Filter"
msgstr "Filtre de liste" msgstr "Filtre de liste"
#: admin_interface/admin.py:104 #: admin_interface/admin.py:113
msgid "Recent Actions" msgid "Recent Actions"
msgstr "Actions récentes" msgstr "Actions récentes"
@@ -70,51 +74,53 @@ msgstr "Actions récentes"
msgid "Admin Interface" msgid "Admin Interface"
msgstr "Interface Admin" msgstr "Interface Admin"
#: admin_interface/models.py:56 admin_interface/models.py:100 #: admin_interface/models.py:72 admin_interface/models.py:116
#: admin_interface/models.py:135
msgid "name" msgid "name"
msgstr "nom" msgstr "nom"
#: admin_interface/models.py:59 admin_interface/models.py:224 #: admin_interface/models.py:75 admin_interface/models.py:132
#: admin_interface/models.py:253
msgid "active" msgid "active"
msgstr "actif" msgstr "actif"
#: admin_interface/models.py:63 #: admin_interface/models.py:79
#: admin_interface/templates/admin/base_site.html:6 #: admin_interface/templates/admin/base_site.html:6
#: admin_interface/templates/admin/base_site.html:60 #: admin_interface/templates/admin/base_site.html:60
msgid "Django administration" msgid "Django administration"
msgstr "Administration Django" msgstr "Administration Django"
#: admin_interface/models.py:65 #: admin_interface/models.py:81
msgid "title" msgid "title"
msgstr "titre" msgstr "titre"
#: admin_interface/models.py:71 admin_interface/models.py:86 #: admin_interface/models.py:87 admin_interface/models.py:102
#: admin_interface/models.py:106 #: admin_interface/models.py:122
msgid "color" msgid "color"
msgstr "couleur" msgstr "couleur"
#: admin_interface/models.py:74 admin_interface/models.py:89 #: admin_interface/models.py:90 admin_interface/models.py:105
#: admin_interface/models.py:260 #: admin_interface/models.py:289
msgid "visible" msgid "visible"
msgstr "visible" msgstr "visible"
#: admin_interface/models.py:79 #: admin_interface/models.py:95
msgid "Leave blank to use the default Django logo" msgid "Leave blank to use the default Django logo"
msgstr "Laisser vide pour utiliser le logo Django par défaut" msgstr "Laisser vide pour utiliser le logo Django par défaut"
#: admin_interface/models.py:80 #: admin_interface/models.py:96
msgid "logo" msgid "logo"
msgstr "logo" msgstr "logo"
#: admin_interface/models.py:94 #: admin_interface/models.py:110
msgid "(.ico|.png|.gif - 16x16|32x32 px)" msgid "(.ico|.png|.gif - 16x16|32x32 px)"
msgstr "(.ico|.png|.gif - 16x16|32x32 px)" msgstr "(.ico|.png|.gif - 16x16|32x32 px)"
#: admin_interface/models.py:95 #: admin_interface/models.py:111
msgid "favicon" msgid "favicon"
msgstr "favicon" msgstr "favicon"
#: admin_interface/models.py:104 #: admin_interface/models.py:120
msgid "" msgid ""
"(red: #E74C3C, orange: #E67E22, yellow: #F1C40F, green: #2ECC71, blue: " "(red: #E74C3C, orange: #E67E22, yellow: #F1C40F, green: #2ECC71, blue: "
"#3498DB)" "#3498DB)"
@@ -122,61 +128,69 @@ msgstr ""
"(rouge: #E74C3C, orange: #E67E22, jaune: #F1C40F, vert: #2ECC71, bleu: " "(rouge: #E74C3C, orange: #E67E22, jaune: #F1C40F, vert: #2ECC71, bleu: "
"#3498DB)" "#3498DB)"
#: admin_interface/models.py:109 #: admin_interface/models.py:125
msgid "visible in header (marker and name)" msgid "visible in header (marker and name)"
msgstr "visible dans len-tête (marqueur et nom)" msgstr "visible dans len-tête (marqueur et nom)"
#: admin_interface/models.py:112 #: admin_interface/models.py:128
msgid "visible in favicon (marker)" msgid "visible in favicon (marker)"
msgstr "visible dans la favicon (marqueur)" msgstr "visible dans la favicon (marqueur)"
#: admin_interface/models.py:119 admin_interface/models.py:144 #: admin_interface/models.py:134
#: admin_interface/models.py:185 admin_interface/models.py:204 msgid "code"
#: admin_interface/models.py:230 msgstr ""
#: admin_interface/models.py:141
msgid "display"
msgstr ""
#: admin_interface/models.py:148 admin_interface/models.py:173
#: admin_interface/models.py:214 admin_interface/models.py:233
#: admin_interface/models.py:259
msgid "background color" msgid "background color"
msgstr "couleur d'arrière-plan" msgstr "couleur d'arrière-plan"
#: admin_interface/models.py:125 admin_interface/models.py:150 #: admin_interface/models.py:154 admin_interface/models.py:179
#: admin_interface/models.py:197 admin_interface/models.py:216 #: admin_interface/models.py:226 admin_interface/models.py:245
#: admin_interface/models.py:220 #: admin_interface/models.py:249
msgid "text color" msgid "text color"
msgstr "couleur du texte" msgstr "couleur du texte"
#: admin_interface/models.py:131 admin_interface/models.py:156 #: admin_interface/models.py:160 admin_interface/models.py:185
#: admin_interface/models.py:172 #: admin_interface/models.py:201
msgid "link color" msgid "link color"
msgstr "couleur de lien" msgstr "couleur de lien"
#: admin_interface/models.py:137 admin_interface/models.py:162 #: admin_interface/models.py:166 admin_interface/models.py:191
#: admin_interface/models.py:178 #: admin_interface/models.py:207
msgid "link hover color" msgid "link hover color"
msgstr "couleur de lien au survol" msgstr "couleur de lien au survol"
#: admin_interface/models.py:165 admin_interface/models.py:250 #: admin_interface/models.py:194 admin_interface/models.py:279
msgid "rounded corners" msgid "rounded corners"
msgstr "coins arrondis" msgstr "coins arrondis"
#: admin_interface/models.py:191 admin_interface/models.py:210 #: admin_interface/models.py:220 admin_interface/models.py:239
msgid "background hover color" msgid "background hover color"
msgstr "couleur de fond au survol" msgstr "couleur de fond au survol"
#: admin_interface/models.py:247 #: admin_interface/models.py:276
msgid "background opacity" msgid "background opacity"
msgstr "opacité de l'arrière-plan" msgstr "opacité de l'arrière-plan"
#: admin_interface/models.py:253 #: admin_interface/models.py:282
msgid "close button visible" msgid "close button visible"
msgstr "bouton fermer visible" msgstr "bouton fermer visible"
#: admin_interface/models.py:257 #: admin_interface/models.py:286
msgid "use dropdown" msgid "use dropdown"
msgstr "utiliser un menu déroulant" msgstr "utiliser un menu déroulant"
#: admin_interface/models.py:269 #: admin_interface/models.py:298
msgid "Theme" msgid "Theme"
msgstr "Thème" msgstr "Thème"
#: admin_interface/models.py:270 #: admin_interface/models.py:299
msgid "Themes" msgid "Themes"
msgstr "Thèmes" msgstr "Thèmes"
Binary file not shown.
+60 -46
View File
@@ -9,7 +9,7 @@ msgid ""
msgstr "" msgstr ""
"Project-Id-Version: django-admin-interface\n" "Project-Id-Version: django-admin-interface\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2019-03-20 16:12+0000\n" "POT-Creation-Date: 2019-09-04 09:19+0000\n"
"PO-Revision-Date: 2018-12-30 19:13-0500\n" "PO-Revision-Date: 2018-12-30 19:13-0500\n"
"Last-Translator: Fabio Caccamo <fabio.caccamo@gmail.com>\n" "Last-Translator: Fabio Caccamo <fabio.caccamo@gmail.com>\n"
"Language-Team: Italian <LL@li.org>\n" "Language-Team: Italian <LL@li.org>\n"
@@ -19,103 +19,109 @@ msgstr ""
"Content-Transfer-Encoding: 8bit\n" "Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n" "Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: admin_interface/admin.py:19 #: admin_interface/admin.py:21
msgid "Environment" msgid "Environment"
msgstr "Ambiente" msgstr "Ambiente"
#: admin_interface/admin.py:28 #: admin_interface/admin.py:30
msgid "Language chooser"
msgstr "Selettore di lingua"
#: admin_interface/admin.py:37
msgid "Logo" msgid "Logo"
msgstr "Logo" msgstr "Logo"
#: admin_interface/admin.py:36 #: admin_interface/admin.py:45
msgid "Favicon" msgid "Favicon"
msgstr "Favicon" msgstr "Favicon"
#: admin_interface/admin.py:40 #: admin_interface/admin.py:49
msgid "Title" msgid "Title"
msgstr "Titolo" msgstr "Titolo"
#: admin_interface/admin.py:48 #: admin_interface/admin.py:57
msgid "Header" msgid "Header"
msgstr "Header" msgstr "Header"
#: admin_interface/admin.py:57 #: admin_interface/admin.py:66
msgid "Breadcrumbs / Module headers" msgid "Breadcrumbs / Module headers"
msgstr "Breadcrumbs / Header dei moduli" msgstr "Breadcrumbs / Header dei moduli"
#: admin_interface/admin.py:67 #: admin_interface/admin.py:76
msgid "Generic Links" msgid "Generic Links"
msgstr "Link generici" msgstr "Link generici"
#: admin_interface/admin.py:74 #: admin_interface/admin.py:83
msgid "Save Buttons" msgid "Save Buttons"
msgstr "Pulsanti per salvare" msgstr "Pulsanti per salvare"
#: admin_interface/admin.py:82 #: admin_interface/admin.py:91
msgid "Delete Buttons" msgid "Delete Buttons"
msgstr "Pulsanti per eliminare" msgstr "Pulsanti per eliminare"
#: admin_interface/admin.py:90 #: admin_interface/admin.py:99
msgid "Related Modal" msgid "Related Modal"
msgstr "Modale per gli oggetti correlati" msgstr "Modale per gli oggetti correlati"
#: admin_interface/admin.py:99 #: admin_interface/admin.py:109
msgid "List Filter" msgid "List Filter"
msgstr "Filtro listato" msgstr "Filtro listato"
#: admin_interface/admin.py:103 #: admin_interface/admin.py:113
msgid "Recent Actions" msgid "Recent Actions"
msgstr "Azioni recenti" msgstr "Azioni recenti"
#: admin_interface/apps.py:11 #: admin_interface/apps.py:11
msgid "Admin Interface" msgid "Admin Interface"
msgstr "Interfaccia di admin" msgstr "Interfaccia di amministrazione"
#: admin_interface/models.py:56 admin_interface/models.py:100 #: admin_interface/models.py:72 admin_interface/models.py:116
#: admin_interface/models.py:135
msgid "name" msgid "name"
msgstr "nome" msgstr "nome"
#: admin_interface/models.py:59 admin_interface/models.py:224 #: admin_interface/models.py:75 admin_interface/models.py:132
#: admin_interface/models.py:253
msgid "active" msgid "active"
msgstr "attivo" msgstr "attivo"
#: admin_interface/models.py:63 #: admin_interface/models.py:79
#: admin_interface/templates/admin/base_site.html:6 #: admin_interface/templates/admin/base_site.html:6
#: admin_interface/templates/admin/base_site.html:60 #: admin_interface/templates/admin/base_site.html:60
msgid "Django administration" msgid "Django administration"
msgstr "Amministrazione di Django" msgstr "Amministrazione di Django"
#: admin_interface/models.py:65 #: admin_interface/models.py:81
msgid "title" msgid "title"
msgstr "titolo" msgstr "titolo"
#: admin_interface/models.py:71 admin_interface/models.py:86 #: admin_interface/models.py:87 admin_interface/models.py:102
#: admin_interface/models.py:106 #: admin_interface/models.py:122
msgid "color" msgid "color"
msgstr "colore" msgstr "colore"
#: admin_interface/models.py:74 admin_interface/models.py:89 #: admin_interface/models.py:90 admin_interface/models.py:105
#: admin_interface/models.py:260 #: admin_interface/models.py:289
msgid "visible" msgid "visible"
msgstr "visibile" msgstr "visibile"
#: admin_interface/models.py:79 #: admin_interface/models.py:95
msgid "Leave blank to use the default Django logo" msgid "Leave blank to use the default Django logo"
msgstr "Lasciare vuoto per usare il logo Django di default" msgstr "Lasciare vuoto per usare il logo Django di default"
#: admin_interface/models.py:80 #: admin_interface/models.py:96
msgid "logo" msgid "logo"
msgstr "logo" msgstr "logo"
#: admin_interface/models.py:94 #: admin_interface/models.py:110
msgid "(.ico|.png|.gif - 16x16|32x32 px)" msgid "(.ico|.png|.gif - 16x16|32x32 px)"
msgstr "(formato ico, png o gif - dimensioni 16x16 o 32x32 px)" msgstr "(formato ico, png o gif - dimensioni 16x16 o 32x32 px)"
#: admin_interface/models.py:95 #: admin_interface/models.py:111
msgid "favicon" msgid "favicon"
msgstr "favicon" msgstr "favicon"
#: admin_interface/models.py:104 #: admin_interface/models.py:120
msgid "" msgid ""
"(red: #E74C3C, orange: #E67E22, yellow: #F1C40F, green: #2ECC71, blue: " "(red: #E74C3C, orange: #E67E22, yellow: #F1C40F, green: #2ECC71, blue: "
"#3498DB)" "#3498DB)"
@@ -123,61 +129,69 @@ msgstr ""
"(rosso: #E74C3C, arancione: #E67E22, giallo: #F1C40F, verde: #2ECC71, blu: " "(rosso: #E74C3C, arancione: #E67E22, giallo: #F1C40F, verde: #2ECC71, blu: "
"#3498DB)" "#3498DB)"
#: admin_interface/models.py:109 #: admin_interface/models.py:125
msgid "visible in header (marker and name)" msgid "visible in header (marker and name)"
msgstr "visibile nell'header (marker e nome)" msgstr "visibile nell'header (marker e nome)"
#: admin_interface/models.py:112 #: admin_interface/models.py:128
msgid "visible in favicon (marker)" msgid "visible in favicon (marker)"
msgstr "visibile nella favicon (marker)" msgstr "visibile nella favicon (marker)"
#: admin_interface/models.py:119 admin_interface/models.py:144 #: admin_interface/models.py:134
#: admin_interface/models.py:185 admin_interface/models.py:204 msgid "code"
#: admin_interface/models.py:230 msgstr "codice"
#: admin_interface/models.py:141
msgid "display"
msgstr "visualizzazione"
#: admin_interface/models.py:148 admin_interface/models.py:173
#: admin_interface/models.py:214 admin_interface/models.py:233
#: admin_interface/models.py:259
msgid "background color" msgid "background color"
msgstr "colore di sfondo" msgstr "colore di sfondo"
#: admin_interface/models.py:125 admin_interface/models.py:150 #: admin_interface/models.py:154 admin_interface/models.py:179
#: admin_interface/models.py:197 admin_interface/models.py:216 #: admin_interface/models.py:226 admin_interface/models.py:245
#: admin_interface/models.py:220 #: admin_interface/models.py:249
msgid "text color" msgid "text color"
msgstr "colore del testo" msgstr "colore del testo"
#: admin_interface/models.py:131 admin_interface/models.py:156 #: admin_interface/models.py:160 admin_interface/models.py:185
#: admin_interface/models.py:172 #: admin_interface/models.py:201
msgid "link color" msgid "link color"
msgstr "colore dei link" msgstr "colore dei link"
#: admin_interface/models.py:137 admin_interface/models.py:162 #: admin_interface/models.py:166 admin_interface/models.py:191
#: admin_interface/models.py:178 #: admin_interface/models.py:207
msgid "link hover color" msgid "link hover color"
msgstr "colore dei link in hover" msgstr "colore dei link in hover"
#: admin_interface/models.py:165 admin_interface/models.py:250 #: admin_interface/models.py:194 admin_interface/models.py:279
msgid "rounded corners" msgid "rounded corners"
msgstr "bordi arrotondati" msgstr "bordi arrotondati"
#: admin_interface/models.py:191 admin_interface/models.py:210 #: admin_interface/models.py:220 admin_interface/models.py:239
msgid "background hover color" msgid "background hover color"
msgstr "colore di sfondo in hover" msgstr "colore di sfondo in hover"
#: admin_interface/models.py:247 #: admin_interface/models.py:276
msgid "background opacity" msgid "background opacity"
msgstr "opacità dello sfondo" msgstr "opacità dello sfondo"
#: admin_interface/models.py:253 #: admin_interface/models.py:282
msgid "close button visible" msgid "close button visible"
msgstr "pulsante chiudi visibile" msgstr "pulsante chiudi visibile"
#: admin_interface/models.py:257 #: admin_interface/models.py:286
msgid "use dropdown" msgid "use dropdown"
msgstr "usa dropdown" msgstr "usa dropdown"
#: admin_interface/models.py:269 #: admin_interface/models.py:298
msgid "Theme" msgid "Theme"
msgstr "Tema" msgstr "Tema"
#: admin_interface/models.py:270 #: admin_interface/models.py:299
msgid "Themes" msgid "Themes"
msgstr "Temi" msgstr "Temi"
Binary file not shown.
@@ -0,0 +1,208 @@
# This file is distributed under the same license as the
# django-admin-interface package.
#
# Translators:
# Ishak Okutan <ishak.oktn@gmail.com>, 2020
#
msgid ""
msgstr ""
"Project-Id-Version: django-admin-interface\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2020-01-24 06:07+0300\n"
"PO-Revision-Date: 2020-01-29 04:53+0300\n"
"Last-Translator: Ishak Okutan <ishak.oktn@gmail.com>\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: tr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Poedit 2.2.4\n"
#: admin_interface/admin.py:21
msgid "Environment"
msgstr "Ortam"
#: admin_interface/admin.py:30
msgid "Language chooser"
msgstr "Dil seçimi"
#: admin_interface/admin.py:37
msgid "Logo"
msgstr "Logo"
#: admin_interface/admin.py:45
msgid "Favicon"
msgstr "Favicon"
#: admin_interface/admin.py:49
msgid "Title"
msgstr "Başlık"
#: admin_interface/admin.py:57
msgid "Header"
msgstr "Üst Kısım"
#: admin_interface/admin.py:66
msgid "Breadcrumbs / Module headers"
msgstr "Link alanı / Modül başlıkları"
#: admin_interface/admin.py:76
msgid "Generic Links"
msgstr "Genel Bağlantılar"
#: admin_interface/admin.py:83
msgid "Save Buttons"
msgstr "Kaydet Butonları"
#: admin_interface/admin.py:91
msgid "Delete Buttons"
msgstr "Kaldır Butonları"
#: admin_interface/admin.py:99
msgid "Related Modal"
msgstr "İlgili Modal"
#: admin_interface/admin.py:109
msgid "List Filter"
msgstr "Liste Filtresi"
#: admin_interface/admin.py:113
msgid "Recent Actions"
msgstr "Son İşlemler"
#: admin_interface/apps.py:11
msgid "Admin Interface"
msgstr "Yönetici Arayüzü"
#: admin_interface/models.py:72 admin_interface/models.py:116
#: admin_interface/models.py:135
msgid "name"
msgstr "adı"
#: admin_interface/models.py:75 admin_interface/models.py:132
#: admin_interface/models.py:253
msgid "active"
msgstr "aktif"
#: admin_interface/models.py:79
#: admin_interface/templates/admin/base_site.html:6
#: admin_interface/templates/admin/base_site.html:60
msgid "Django administration"
msgstr "Django yönetimi"
#: admin_interface/models.py:81
msgid "title"
msgstr "başlık"
#: admin_interface/models.py:87 admin_interface/models.py:102
#: admin_interface/models.py:122
msgid "color"
msgstr "renk"
#: admin_interface/models.py:90 admin_interface/models.py:105
#: admin_interface/models.py:289
msgid "visible"
msgstr "göster"
#: admin_interface/models.py:95
msgid "Leave blank to use the default Django logo"
msgstr "Varsayılan Django logosunu kullanmak için boş bırakın"
#: admin_interface/models.py:96
msgid "logo"
msgstr "logo"
#: admin_interface/models.py:110
msgid "(.ico|.png|.gif - 16x16|32x32 px)"
msgstr ""
"(favicon simgesi, png veya (GIF 16x16) veya (32x32) piksel "
"boyutlarında olmalıdır)"
#: admin_interface/models.py:111
msgid "favicon"
msgstr "favicon"
#: admin_interface/models.py:120
msgid ""
"(red: #E74C3C, orange: #E67E22, yellow: #F1C40F, green: #2ECC71, blue: "
"#3498DB)"
msgstr ""
"(kırmızı: # E74C3C, turuncu: # E67E22, sarı: # F1C40F, yeşil: # "
"2ECC71, mavi: # 3498DB)"
#: admin_interface/models.py:125
msgid "visible in header (marker and name)"
msgstr "üst kısım da görünsün (yuvarlak işaret ve ad)"
#: admin_interface/models.py:128
msgid "visible in favicon (marker)"
msgstr "faviconda görünsün (yuvarlak işaret)"
#: admin_interface/models.py:134
msgid "code"
msgstr "kod"
#: admin_interface/models.py:141
msgid "display"
msgstr "görüntüle"
#: admin_interface/models.py:148 admin_interface/models.py:173
#: admin_interface/models.py:214 admin_interface/models.py:233
#: admin_interface/models.py:259
msgid "background color"
msgstr "arka plan rengi"
#: admin_interface/models.py:154 admin_interface/models.py:179
#: admin_interface/models.py:226 admin_interface/models.py:245
#: admin_interface/models.py:249
msgid "text color"
msgstr "metin rengi"
#: admin_interface/models.py:160 admin_interface/models.py:185
#: admin_interface/models.py:201
msgid "link color"
msgstr "bağlantı rengi"
#: admin_interface/models.py:166 admin_interface/models.py:191
#: admin_interface/models.py:207
msgid "link hover color"
msgstr "bağlantı üzerine gelindiğindeki rengi"
#: admin_interface/models.py:194 admin_interface/models.py:279
msgid "rounded corners"
msgstr "köşeleri ovalleştir"
#: admin_interface/models.py:220 admin_interface/models.py:239
msgid "background hover color"
msgstr "arka planın üzerine gelindiğindeki renk"
#: admin_interface/models.py:276
msgid "background opacity"
msgstr "arka plan şeffaflığı"
#: admin_interface/models.py:282
msgid "close button visible"
msgstr "kapat düğmesi görünsün"
#: admin_interface/models.py:286
msgid "use dropdown"
msgstr "açılır listeyi kullan"
#: admin_interface/models.py:298
msgid "Theme"
msgstr "Tema"
#: admin_interface/models.py:299
msgid "Themes"
msgstr "Temalar"
#: admin_interface/templates/admin/filter.html:13
#: admin_interface/templates/admin_interface/dropdown_filter.html:4
#, python-format
msgid " By %(filter_title)s "
msgstr " %(filter_title)s tarafından "
#: admin_interface/templates/admin/popup_response.html:3
msgid "Popup closing..."
msgstr "Popup kapanıyor..."
@@ -12,7 +12,11 @@ class Migration(migrations.Migration):
] ]
operations = [ operations = [
migrations.AlterField( migrations.RemoveField(
model_name='theme',
name='related_modal_background_opacity'
),
migrations.AddField(
model_name='theme', model_name='theme',
name='related_modal_background_opacity', name='related_modal_background_opacity',
field=models.CharField( field=models.CharField(
@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('admin_interface', '0013_add_related_modal_close_button'),
]
operations = [
migrations.AlterField(
model_name='theme',
name='name',
field=models.CharField(default='Django', max_length=50, unique=True, verbose_name='name'),
),
]
@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('admin_interface', '0014_name_unique'),
]
operations = [
migrations.AddField(
model_name='theme',
name='language_chooser_active',
field=models.BooleanField(default=True, verbose_name='active'),
),
]
@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('admin_interface', '0015_add_language_chooser_active'),
]
operations = [
migrations.AddField(
model_name='theme',
name='language_chooser_display',
field=models.CharField(choices=[('code', 'code'), ('name', 'name')], default='code', max_length=10, verbose_name='display'),
),
]
+42 -5
View File
@@ -2,31 +2,53 @@
from __future__ import unicode_literals from __future__ import unicode_literals
from django.db import models from admin_interface.cache import del_cached_active_theme
from django.db.models.signals import post_delete, post_save
from django.utils.encoding import python_2_unicode_compatible, force_text
from django.utils.translation import ugettext_lazy as _
from colorfield.fields import ColorField from colorfield.fields import ColorField
import django
from django.db import models
from django.db.models.signals import post_delete, post_save, pre_save
if django.VERSION < (2, 0):
from django.utils.encoding import force_text as force_str
from django.utils.translation import ugettext_lazy as _
else:
from django.utils.encoding import force_str
from django.utils.translation import gettext_lazy as _
from six import python_2_unicode_compatible
@python_2_unicode_compatible @python_2_unicode_compatible
class Theme(models.Model): class Theme(models.Model):
@staticmethod @staticmethod
def post_migrate_handler(**kwargs): def post_migrate_handler(**kwargs):
del_cached_active_theme()
Theme.get_active_theme() Theme.get_active_theme()
@staticmethod @staticmethod
def post_delete_handler(**kwargs): def post_delete_handler(**kwargs):
del_cached_active_theme()
Theme.get_active_theme() Theme.get_active_theme()
@staticmethod @staticmethod
def post_save_handler(instance, **kwargs): def post_save_handler(instance, **kwargs):
del_cached_active_theme()
if instance.active: if instance.active:
Theme.objects.exclude(pk=instance.pk).update(active=False) Theme.objects.exclude(pk=instance.pk).update(active=False)
Theme.get_active_theme() Theme.get_active_theme()
@staticmethod
def pre_save_handler(instance, **kwargs):
if instance.pk is None:
try:
obj = Theme.objects.get(name=instance.name)
if obj:
instance.pk = obj.pk
except Theme.DoesNotExist:
pass
@staticmethod @staticmethod
def get_active_theme(): def get_active_theme():
objs_manager = Theme.objects objs_manager = Theme.objects
@@ -51,6 +73,7 @@ class Theme(models.Model):
return obj return obj
name = models.CharField( name = models.CharField(
unique=True,
max_length=50, max_length=50,
default='Django', default='Django',
verbose_name=_('name')) verbose_name=_('name'))
@@ -111,6 +134,19 @@ class Theme(models.Model):
default=True, default=True,
verbose_name=_('visible in favicon (marker)')) verbose_name=_('visible in favicon (marker)'))
language_chooser_active = models.BooleanField(
default=True,
verbose_name=_('active'))
language_chooser_display_choices = (
('code', _('code'), ),
('name', _('name'), ),
)
language_chooser_display = models.CharField(
max_length=10,
choices=language_chooser_display_choices,
default='code',
verbose_name=_('display'))
css_header_background_color = ColorField( css_header_background_color = ColorField(
blank=True, blank=True,
default='#0C4B33', default='#0C4B33',
@@ -270,8 +306,9 @@ class Theme(models.Model):
verbose_name_plural = _('Themes') verbose_name_plural = _('Themes')
def __str__(self): def __str__(self):
return force_text(self.name) return force_str(self.name)
post_delete.connect(Theme.post_delete_handler, sender=Theme) post_delete.connect(Theme.post_delete_handler, sender=Theme)
post_save.connect(Theme.post_save_handler, sender=Theme) post_save.connect(Theme.post_save_handler, sender=Theme)
pre_save.connect(Theme.pre_save_handler, sender=Theme)
+15 -24
View File
@@ -5,33 +5,24 @@ from django.conf import settings
from django.core.exceptions import ImproperlyConfigured from django.core.exceptions import ImproperlyConfigured
def check_installed_apps(): def check_installed_app(app, app_dj_version_limit):
dj_version = django.VERSION dj_version = django.VERSION
installed_apps = settings.INSTALLED_APPS installed_apps = settings.INSTALLED_APPS
if dj_version < app_dj_version_limit:
if 'colorfield' not in installed_apps: if app not in installed_apps:
raise ImproperlyConfigured(
'\'colorfield\' needed, '
'add it to settings.INSTALLED_APPS.')
if dj_version < (1, 9):
if 'flat' not in installed_apps:
raise ImproperlyConfigured( raise ImproperlyConfigured(
'\'flat\' needed before django 1.9, ' '\'{}\' needed before django {}.{}, '
'add it to settings.INSTALLED_APPS.') 'add it to settings.INSTALLED_APPS.'.format(
app, *app_dj_version_limit))
else: else:
if 'flat' in installed_apps: if app in installed_apps:
raise ImproperlyConfigured( raise ImproperlyConfigured(
'\'flat\' not needed since django 1.9, ' '\'{}\' not needed since django {}.{}, '
'remove it from settings.INSTALLED_APPS.') 'remove it from settings.INSTALLED_APPS.'.format(
app, *app_dj_version_limit))
if dj_version < (2, 0):
if 'flat_responsive' not in installed_apps: def check_installed_apps():
raise ImproperlyConfigured( check_installed_app('colorfield', (4, 0))
'\'flat_responsive\' needed before django 2.0, ' check_installed_app('flat', (1, 9))
'add it to settings.INSTALLED_APPS.') check_installed_app('flat_responsive', (2, 0))
else:
if 'flat_responsive' in installed_apps:
raise ImproperlyConfigured(
'\'flat_responsive\' not needed since django 2.0, '
'remove it from settings.INSTALLED_APPS.')
@@ -1,3 +1,5 @@
/** global: django */
if (typeof(django) !== 'undefined' && typeof(django.jQuery) !== 'undefined') { if (typeof(django) !== 'undefined' && typeof(django.jQuery) !== 'undefined') {
(function($) { (function($) {
'use strict'; 'use strict';
@@ -2,49 +2,46 @@
'use strict'; 'use strict';
function getModalWindowData() var windowRef = window;
{ var windowName, widgetName;
var windowRef = window; var openerRef = windowRef.opener;
var windowName = windowRef.name; if (!openerRef) {
var widgetName = windowName.replace(/^(change|add|delete|lookup)_/, ''); // related modal is active
var modalRef = {}; openerRef = windowRef.parent;
var openerRef = windowRef.opener; windowName = windowRef.name;
if (!openerRef) { widgetName = windowName.replace(/^(change|add|delete|lookup)_/, '');
openerRef = windowRef.parent; if (typeof(openerRef.id_to_windowname) === 'function') {
modalRef = { // django < 3.1 compatibility
name: openerRef.id_to_windowname(widgetName), widgetName = openerRef.id_to_windowname(widgetName);
close: function(){
openerRef.dismissRelatedObjectModal();
}
};
} }
return { opener:openerRef, modal:modalRef }; windowRef = {
name: widgetName,
close: function() {
openerRef.dismissRelatedObjectModal();
}
};
} }
var modalData = getModalWindowData(); // default django popup_response.js
var modalRef = modalData['modal'];
var openerRef = modalData['opener'];
var initData = JSON.parse(document.getElementById('django-admin-popup-response-constants').dataset.popupResponse); var initData = JSON.parse(document.getElementById('django-admin-popup-response-constants').dataset.popupResponse);
// console.log(initData);
switch (initData.action) { switch (initData.action) {
case 'change': case 'change':
if (typeof(openerRef.dismissChangeRelatedObjectPopup) === 'function') { if (typeof(openerRef.dismissChangeRelatedObjectPopup) === 'function') {
openerRef.dismissChangeRelatedObjectPopup(modalRef, initData.value, initData.obj, initData.new_value); openerRef.dismissChangeRelatedObjectPopup(windowRef, initData.value, initData.obj, initData.new_value);
} }
break; break;
case 'delete': case 'delete':
if (typeof(openerRef.dismissDeleteRelatedObjectPopup) === 'function') { if (typeof(openerRef.dismissDeleteRelatedObjectPopup) === 'function') {
openerRef.dismissDeleteRelatedObjectPopup(modalRef, initData.value); openerRef.dismissDeleteRelatedObjectPopup(windowRef, initData.value);
} }
break; break;
default: default:
if (typeof(openerRef.dismissAddRelatedObjectPopup) === 'function') { if (typeof(openerRef.dismissAddRelatedObjectPopup) === 'function') {
openerRef.dismissAddRelatedObjectPopup(modalRef, initData.value, initData.obj); openerRef.dismissAddRelatedObjectPopup(windowRef, initData.value, initData.obj);
} }
else if (typeof(openerRef.dismissAddAnotherPopup) === 'function') { else if (typeof(openerRef.dismissAddAnotherPopup) === 'function') {
// django 1.7 compatibility // django 1.7 compatibility
openerRef.dismissAddAnotherPopup(modalRef, initData.value, initData.obj); openerRef.dismissAddAnotherPopup(windowRef, initData.value, initData.obj);
} }
break; break;
} }
@@ -1,3 +1,5 @@
/** global: django */
if (typeof(django) !== 'undefined' && typeof(django.jQuery) !== 'undefined') if (typeof(django) !== 'undefined' && typeof(django.jQuery) !== 'undefined')
{ {
(function($) { (function($) {
@@ -39,7 +41,7 @@ if (typeof(django) !== 'undefined' && typeof(django.jQuery) !== 'undefined')
var linkEl = $(this); var linkEl = $(this);
var href = (linkEl.attr('href') || ''); var href = (linkEl.attr('href') || '');
if (href == '') { if (href === '') {
return; return;
} }
@@ -78,12 +80,10 @@ if (typeof(django) !== 'undefined' && typeof(django.jQuery) !== 'undefined')
} }
// build the iframe html // build the iframe html
var iframeHTML = '<div class="related-modal-iframe-container">' + var iframeHTML = '<iframe id="related-modal-iframe" name="' + iframeName + '" src="' + iframeSrc + '"></iframe>';
'<iframe id="related-modal-iframe" name="' + iframeName + '" src="' + iframeSrc + '"></iframe>' + var modalHTML = '<div class="related-modal-iframe-container">' + iframeHTML + '</div>';
'</div>'; var modalEl = $(modalHTML);
var iframeEl = modalEl.find('#related-modal-iframe');
// create the iframe jquery element
var iframeEl = $(iframeHTML);
if (e.data.lookup === true) if (e.data.lookup === true)
{ {
@@ -101,7 +101,7 @@ if (typeof(django) !== 'undefined' && typeof(django.jQuery) !== 'undefined')
// if the current window is inside an iframe, it means that it is already in a modal, // if the current window is inside an iframe, it means that it is already in a modal,
// append an additional css class to the modal to offer more customization // append an additional css class to the modal to offer more customization
if (window.top != window.self) { if (window.top !== window.self) {
iframeInternalModalClass += ' related-modal__nested'; iframeInternalModalClass += ' related-modal__nested';
} }
@@ -111,7 +111,7 @@ if (typeof(django) !== 'undefined' && typeof(django.jQuery) !== 'undefined')
showCloseBtn: true, showCloseBtn: true,
closeBtnInside: true, closeBtnInside: true,
items: { items: {
src: iframeEl, src: modalEl,
type: 'inline' type: 'inline'
} }
}); });
@@ -120,17 +120,31 @@ if (typeof(django) !== 'undefined' && typeof(django.jQuery) !== 'undefined')
} }
// listen click events on related links // listen click events on related links
function presentRelatedObjectModalOnClickOn(selector, lookup) {
var data = {
lookup:(lookup === true ? true : false)
};
var el = $(selector);
el.removeAttr('onclick');
el.unbind('click');
el.click(data, presentRelatedObjectModal);
}
// django 1.7 compatibility // django 1.7 compatibility
$('a.add-another').removeAttr('onclick'); // $('a.add-another').removeAttr('onclick').click({ lookup:false }, presentRelatedObjectModal);
$('a.add-another').click({ lookup:false }, presentRelatedObjectModal); presentRelatedObjectModalOnClickOn('a.add-another');
// django 1.8 and above // django 1.8 and above
$('a.related-widget-wrapper-link').click({ lookup:false }, presentRelatedObjectModal); // $('a.related-widget-wrapper-link').click({ lookup:false }, presentRelatedObjectModal);
presentRelatedObjectModalOnClickOn('a.related-widget-wrapper-link');
// raw_id_fields support // raw_id_fields support
$('a.related-lookup').unbind('click'); // $('a.related-lookup').unbind('click').click({ lookup:true }, presentRelatedObjectModal);
$('a.related-lookup').click({ lookup:true }, presentRelatedObjectModal); presentRelatedObjectModalOnClickOn('a.related-lookup', true);
// django-dynamic-raw-id support - #61
// https://github.com/lincolnloop/django-dynamic-raw-id
presentRelatedObjectModalOnClickOn('a.dynamic_raw_id-related-lookup', true);
}); });
})(django.jQuery); })(django.jQuery);
+10 -5
View File
@@ -25,6 +25,7 @@ https://github.com/fabiocaccamo/django-admin-interface
{% include "admin_interface/css/tabbed-admin.css" %} {% include "admin_interface/css/tabbed-admin.css" %}
{% include "admin_interface/css/ckeditor.css" %} {% include "admin_interface/css/ckeditor.css" %}
{% include "admin_interface/css/tinymce.css" %} {% include "admin_interface/css/tinymce.css" %}
{% include "admin_interface/css/json-widget.css" %}
{% if theme.css %} {% if theme.css %}
{{ theme.css|safe }} {{ theme.css|safe }}
@@ -39,7 +40,7 @@ https://github.com/fabiocaccamo/django-admin-interface
{% get_admin_interface_version as version %} {% get_admin_interface_version as version %}
{# https://github.com/elky/django-flat-responsive#important-note #} {# 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"> <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' %}?v={{ version }}" /> <link rel="stylesheet" href="{% static 'admin/css/responsive.css' %}?v={{ version }}">
{% include "admin_interface/favicon.html" %} {% include "admin_interface/favicon.html" %}
{% include "admin_interface/related-modal.html" %} {% include "admin_interface/related-modal.html" %}
{% endblock %} {% endblock %}
@@ -51,18 +52,22 @@ https://github.com/fabiocaccamo/django-admin-interface
<h1 id="site-name"> <h1 id="site-name">
{% if theme.logo_visible %} {% if theme.logo_visible %}
{% if theme.logo %} {% if theme.logo %}
<img class="logo" style="display:none;" src="{{ theme.logo.url }}" {% if theme.logo.width %}width="{{ theme.logo.width }}"{% endif %} {% if theme.logo.height %}height="{{ theme.logo.height }}"{% endif %} /> <img class="logo" style="display:none;" src="{{ theme.logo.url }}" {% if theme.logo.width %}width="{{ theme.logo.width }}"{% endif %} {% if theme.logo.height %}height="{{ theme.logo.height }}"{% endif %}>
{% else %} {% else %}
<img class="logo default" style="display:none;" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" width="104" height="36" /> <img class="logo default" style="display:none;" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" width="104" height="36">
{% endif %} {% endif %}
{% endif %} {% endif %}
{% if theme.title_visible %} {% if theme.title_visible %}
<span>{% if theme.title %}{% trans theme.title %}{% else %}{% trans 'Django administration' %}{% endif %}</span> <span>{% if theme.title %}{% trans theme.title %}{% else %}{{ site_header|default:_('Django administration') }}{% endif %}</span>
{% endif %} {% endif %}
</h1> </h1>
{% endblock %} {% endblock %}
{% block welcome-msg %} {% block welcome-msg %}
{% get_admin_interface_theme as theme %} {% get_admin_interface_theme as theme %}
{% if theme.env_visible_in_header %}<span class="environment-label {{ theme.env_name }}"></span> - {% endif %}{{ block.super }}<br> {% if theme.language_chooser_active %}
{% get_admin_interface_languages as languages %}
{% include "admin_interface/language_chooser.html" %}
{% endif %}
{% if theme.env_visible_in_header %}<span class="environment-label {{ theme.env_name }}"></span><br>{% endif %}{{ block.super }}<br>
{% endblock %} {% endblock %}
@@ -1,68 +1,89 @@
/* fix login */
.admin-interface.login #container { .admin-interface.login #container {
width:320px; width: 100%;
margin:90px auto; max-width: 360px;
box-sizing:border-box; margin: 15px auto;
-moz-box-sizing:border-box; box-sizing: border-box;
-webkit-box-sizing:border-box; -moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
} }
.admin-interface.login #content { .admin-interface.login #content {
padding:15px 30px 10px 30px; padding: 15px 30px 30px 30px;
} }
@media (max-width:767px){ @media (min-width:768px){
.admin-interface.login #container { .admin-interface.login #container {
margin:0px auto; margin: 90px auto;
}
.admin-interface.login #content {
padding:20px 30px 30px 30px;
} }
} }
.admin-interface.login #header { .admin-interface.login #header {
padding:15px 30px 10px; padding: 10px 30px;
line-height:30px; line-height: 30px;
align-items: flex-start;
justify-content: flex-start;
} }
.admin-interface.login #branding h1 { .admin-interface.login #header #branding h1 {
margin-right:0; margin-right:0;
} }
.admin-interface.login #branding h1 img.logo { .admin-interface.login #header #branding h1 img.logo {
max-width:100%; max-width: 100%;
margin-right:0; margin-right: 0;
} }
.admin-interface.login #header #branding h1 img.logo+span { .admin-interface.login #header #branding h1 img.logo+span {
display:block; display: block;
margin-bottom: 5px; margin-bottom: 5px;
} }
.admin-interface.login .submit-row { .admin-interface.login #login-form {
padding-left:0; display: flex;
text-align:right; flex-direction: column;
} }
@media (max-width:767px){ .admin-interface.login .submit-row {
.admin-interface.login .submit-row label { float: left;
display:none; width: 100%;
} margin-top: 20px;
.admin-interface.login .submit-row { padding-top: 0;
float: left; padding-left: 0;
width: 100%; text-align: right;
margin-top: 20px;
margin-bottom: 30px;
}
} }
.admin-interface.login .submit-row label {
display: none;
}
.admin-interface.login .submit-row input[type="submit"] {
width: 100%;
text-transform: uppercase;
}
.admin-interface.login #footer {
display: none;
}
/* end login fix*/
.admin-interface #header { .admin-interface #header {
height:auto; height:auto;
min-height:40px; min-height:40px;
display: flex;
justify-content: space-between;
align-items: start;
}
@media (max-width:1024px) {
.admin-interface #header {
align-items: flex-start;
}
} }
.admin-interface #branding h1 img.logo { .admin-interface #branding h1 img.logo {
max-width: 400px;
max-height:100px; max-height:100px;
margin-top:10px; margin-top:10px;
margin-bottom:10px; margin-bottom:10px;
@@ -70,6 +91,11 @@
display:inline-block !important; /* override inline display:none; */ display:inline-block !important; /* override inline display:none; */
} }
.admin-interface #branding h1 span {
display: inline-block;
margin-bottom: 5px;
}
.admin-interface #branding h1 img.logo+span { .admin-interface #branding h1 img.logo+span {
white-space:nowrap; white-space:nowrap;
} }
@@ -135,6 +161,10 @@ body.admin-interface .paginator a.showall:visited {
margin-left: 5px; margin-left: 5px;
} }
.admin-interface .file-thumbnail > a {
display: inline-block;
}
.admin-interface .aligned p.file-upload { .admin-interface .aligned p.file-upload {
display:table; display:table;
} }
@@ -236,10 +266,13 @@ body.admin-interface .paginator a.showall:visited {
/* begin fix lateral padding to align text with field labels */ /* begin fix lateral padding to align text with field labels */
.admin-interface .module h2, .admin-interface .module h2,
.admin-interface.dashboard .module caption, .admin-interface.dashboard .module caption,
.admin-interface.dashboard .module th,
.admin-interface .module.filtered h2, .admin-interface .module.filtered h2,
.admin-interface .inline-group h2 { .admin-interface .inline-group h2,
padding-left:10px; .admin-interface #nav-sidebar .module caption,
padding-right:10px; .admin-interface #nav-sidebar .module th {
padding-left: 10px;
padding-right: 10px;
} }
/* end fix */ /* end fix */
@@ -333,3 +366,100 @@ body.admin-interface .paginator a.showall:visited {
.admin-interface .selector:not(.stacked) .selector-chosen select { .admin-interface .selector:not(.stacked) .selector-chosen select {
height: calc(46px + 17.2em) !important; height: calc(46px + 17.2em) !important;
} }
/* fix nav-sidebar (added in django 3.1.0) */
.admin-interface #toggle-nav-sidebar {
top: 10px;
left: 0;
z-index: 20;
flex: 0 0 30px;
width: 30px;
height: 45px;
margin-top: 10px;
margin-right: 10px;
background-color: #FFFFFF;
font-size: 16px;
border: 1px solid #eaeaea;
border-left: none;
outline: none;
-webkit-box-shadow: 4px 2px 8px -4px #DBDBDB;
-moz-box-shadow: 4px 2px 8px -4px #DBDBDB;
box-shadow: 4px 2px 8px -4px #DBDBDB;
}
.admin-interface .toggle-nav-sidebar::before {
margin-top: -2px;
}
/* hide nav-sidebar below 1280px to prevent horizontal overflow issues */
@media (max-width:1279px) {
.admin-interface #nav-sidebar,
.admin-interface #toggle-nav-sidebar {
display: none;
}
}
.admin-interface #nav-sidebar {
flex: 0 0 320px;
left: -320px;
margin-left: -360px;
box-sizing: border-box;
-moz-box-sizing: border-box;
-webkit-box-sizing: border-box;
padding: 40px 40px 40px 0px;
border-top: none;
border-bottom: none;
border-left: none;
}
@media (min-width:1280px) {
.admin-interface #main.shifted > #toggle-nav-sidebar {
left: 359px;
}
.admin-interface #main.shifted > #nav-sidebar {
left: 0px;
margin-left: 0;
}
.admin-interface.change-list:not(.popup) #main.shifted > .content,
.admin-interface.change-form:not(.popup) #main.shifted > .content {
max-width: calc(100% - 360px);
}
}
/* fix related-widget when the nav-sidebar is collapsed */
@media (max-width:1100px) {
.admin-interface.change-form #main .related-widget-wrapper {
clear: left;
margin-top: 5px;
}
.admin-interface.change-form #main .related-widget-wrapper + .help {
margin-top: 10px;
margin-left: 0;
padding-left: 0;
padding-right: 0;
}
}
/* fix related-widget when the nav-sidebar is expanded */
@media (min-width:1280px) and (max-width:1480px) {
.admin-interface.change-form:not(.popup) .related-widget-wrapper {
clear: left;
margin-top: 5px;
}
.admin-interface.change-form #main.shifted .related-widget-wrapper + .help {
margin-top: 10px;
margin-left: 0;
padding-left: 0;
padding-right: 0;
}
}
.admin-interface #nav-sidebar .current-app .section:link,
.admin-interface #nav-sidebar .current-app .section:visited {
color: #FFFFCC;
font-weight: normal;
}
.admin-interface #nav-sidebar .current-model {
background: #FFFFCC;
}
File diff suppressed because one or more lines are too long
@@ -0,0 +1,29 @@
/*
django-json-widget support
https://github.com/jmrivas86/django-json-widget
*/
.admin-interface div.jsoneditor {
border: 1px solid {{ theme.css_module_background_color }};
{% if theme.css_module_rounded_corners %}
border-radius: 4px;
overflow: hidden;
{% endif %}
}
.admin-interface div.jsoneditor-menu {
background-color: {{ theme.css_module_background_color }};
border-bottom: 1px solid {{ theme.css_module_background_color }};
}
.admin-interface div.jsoneditor-menu a.jsoneditor-poweredBy {
color: {{ theme.css_module_link_color }};
}
.admin-interface div.jsoneditor-contextmenu ul li button.jsoneditor-selected,
.admin-interface div.jsoneditor-contextmenu ul li button.jsoneditor-selected:focus,
.admin-interface div.jsoneditor-contextmenu ul li button.jsoneditor-selected:hover {
background-color: #FFFFCC;
color: #000000;
font-weight: bold;
}
@@ -1,7 +1,7 @@
{% load static %} {% load static %}
{% if theme.favicon %} {% if theme.favicon %}
<link rel="icon" type="image/x-icon" href="{{ theme.favicon.url }}?v={{ version }}" /> <link rel="icon" href="{{ theme.favicon.url }}?v={{ version }}">
{% if theme.env_visible_in_favicon %} {% if theme.env_visible_in_favicon %}
<script type="text/javascript" src="{% static 'admin_interface/favico/favico-0.3.10-patched.min.js' %}?v={{ version }}"></script> <script type="text/javascript" src="{% static 'admin_interface/favico/favico-0.3.10-patched.min.js' %}?v={{ version }}"></script>
<script type="text/javascript"> <script type="text/javascript">
@@ -0,0 +1,20 @@
{% load admin_interface_tags %}
{% if languages %}
<div class="language-chooser">
{% for language in languages %}
<form class="language-chooser-hidden-form" id="language-chooser-hidden-form-{{ language.code }}" action="{{ language.activation_url }}" method="POST">
{% csrf_token %}
<input name="language" type="hidden" value="{{ language.code }}">
</form>
{% endfor %}
<form class="language-chooser-select-form">
{% csrf_token %}
<select name="language" onchange="document.getElementById(String('language-chooser-hidden-form-' + this.value)).submit();">
{% for language in languages %}
<option value="{{ language.code }}" {% if language.active %}selected{% endif %}>{% if theme.language_chooser_display == 'code' %}{{ language.code|upper }}{% elif theme.language_chooser_display == 'name' %}{{ language.name }}{% endif %}</option>
{% endfor %}
</select>
</form>
</div>
{% endif %}
@@ -1,7 +1,7 @@
{% load static %} {% load static %}
{% if theme.related_modal_active %} {% if theme.related_modal_active %}
<link rel="stylesheet" type="text/css" href="{% static 'admin_interface/magnific-popup/magnific-popup.css' %}?v={{ version }}" /> <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/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> <script type="text/javascript" src="{% static 'admin_interface/related-modal/related-modal.js' %}?v={{ version }}"></script>
{% endif %} {% endif %}
@@ -1,10 +1,21 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
import django
from django import template, VERSION from django import template, VERSION
from django.conf import settings
if django.VERSION < (1, 10):
from django.core.urlresolvers import NoReverseMatch, reverse
else:
from django.urls import NoReverseMatch, reverse
from django.utils import translation
from admin_interface.cache import get_cached_active_theme, set_cached_active_theme
from admin_interface.models import Theme from admin_interface.models import Theme
from admin_interface.version import __version__ from admin_interface.version import __version__
import re
register = template.Library() register = template.Library()
if VERSION < (1, 9): if VERSION < (1, 9):
@@ -14,19 +25,53 @@ else:
@simple_tag(takes_context=True) @simple_tag(takes_context=True)
def get_admin_interface_theme(context): def get_admin_interface_languages(context):
theme = None if not settings.USE_I18N:
# i18n disabled
return None
if len(settings.LANGUAGES) < 2:
# less than 2 languages
return None
try:
set_language_url = reverse('set_language')
except NoReverseMatch:
# ImproperlyConfigured - must include i18n urls:
# urlpatterns += [url(r'^i18n/', include('django.conf.urls.i18n')),]
return None
request = context.get('request', None) request = context.get('request', None)
if not request:
return None
full_path = request.get_full_path()
admin_nolang_url = re.sub(r'^\/([\w]{2})([\-\_]{1}[\w]{2})?\/', '/', full_path)
if admin_nolang_url == full_path:
# ImproperlyConfigured - must include admin urls using i18n_patterns:
# from django.conf.urls.i18n import i18n_patterns
# urlpatterns += i18n_patterns(url(r'^admin/', admin.site.urls))
return None
langs_data = []
default_lang_code = settings.LANGUAGE_CODE
current_lang_code = translation.get_language() or default_lang_code
for language in settings.LANGUAGES:
lang_code = language[0].lower()
lang_name = language[1].title()
lang_data = {
'code': lang_code,
'name': lang_name,
'default': lang_code == default_lang_code,
'active': lang_code == current_lang_code,
'activation_url': '{}?next=/{}{}'.format(
set_language_url, lang_code, admin_nolang_url)
}
langs_data.append(lang_data)
return langs_data
if request:
theme = getattr(request, 'admin_interface_theme', None)
@simple_tag(takes_context=True)
def get_admin_interface_theme(context):
theme = get_cached_active_theme()
if not theme: if not theme:
theme = Theme.get_active_theme() theme = Theme.get_active_theme()
set_cached_active_theme(theme)
if request:
request.admin_interface_theme = theme
return theme return theme
+1 -1
View File
@@ -1,3 +1,3 @@
# -*- coding: utf-8 -*- # -*- coding: utf-8 -*-
__version__ = '0.10.1' __version__ = '0.13.4'
+8
View File
@@ -0,0 +1,8 @@
codecov
coverage
django>=1.7
django-colorfield
django-flat-theme
django-flat-responsive
six>=1.9.0
tox
+12 -4
View File
@@ -9,8 +9,10 @@ exec(open('admin_interface/version.py').read())
github_url = 'https://github.com/fabiocaccamo' github_url = 'https://github.com/fabiocaccamo'
package_name = 'django-admin-interface' package_name = 'django-admin-interface'
package_url = '{}/{}'.format(github_url, package_name)
package_path = os.path.abspath(os.path.dirname(__file__)) package_path = os.path.abspath(os.path.dirname(__file__))
long_description_file_path = os.path.join(package_path, 'README.rst') long_description_file_path = os.path.join(package_path, 'README.md')
long_description_content_type = 'text/markdown'
long_description = '' long_description = ''
try: try:
with open(long_description_file_path) as f: with open(long_description_file_path) as f:
@@ -25,16 +27,18 @@ setup(
version=__version__, version=__version__,
description='django-admin-interface is a modern responsive flat admin interface customizable by the admin itself.', description='django-admin-interface is a modern responsive flat admin interface customizable by the admin itself.',
long_description=long_description, long_description=long_description,
long_description_content_type=long_description_content_type,
author='Fabio Caccamo', author='Fabio Caccamo',
author_email='fabio.caccamo@gmail.com', author_email='fabio.caccamo@gmail.com',
url='%s/%s' % (github_url, package_name, ), url=package_url,
download_url='%s/%s/archive/%s.tar.gz' % (github_url, package_name, __version__, ), download_url='{}/archive/{}.tar.gz'.format(package_url, __version__),
keywords=['django', 'admin', 'interface', 'responsive', 'flat', 'theme', 'custom', 'ui'], keywords=['django', 'admin', 'interface', 'responsive', 'flat', 'theme', 'custom', 'ui'],
requires=['django(>=1.7)'], requires=['django(>=1.7)'],
install_requires=[ install_requires=[
'django-colorfield >= 0.1, < 1.0', 'django-colorfield >= 0.2, < 1.0',
'django-flat-theme >= 1.0, < 2.0', 'django-flat-theme >= 1.0, < 2.0',
'django-flat-responsive >= 1.0, < 3.0', 'django-flat-responsive >= 1.0, < 3.0',
'six >= 1.9.0, < 2.0.0',
], ],
classifiers=[ classifiers=[
'Development Status :: 5 - Production/Stable', 'Development Status :: 5 - Production/Stable',
@@ -47,6 +51,9 @@ setup(
'Framework :: Django :: 1.11', 'Framework :: Django :: 1.11',
'Framework :: Django :: 2.0', 'Framework :: Django :: 2.0',
'Framework :: Django :: 2.1', 'Framework :: Django :: 2.1',
'Framework :: Django :: 2.2',
'Framework :: Django :: 3.0',
'Framework :: Django :: 3.1',
'Intended Audience :: Developers', 'Intended Audience :: Developers',
'License :: OSI Approved :: MIT License', 'License :: OSI Approved :: MIT License',
'Natural Language :: English', 'Natural Language :: English',
@@ -58,6 +65,7 @@ setup(
'Programming Language :: Python :: 3.5', 'Programming Language :: Python :: 3.5',
'Programming Language :: Python :: 3.6', 'Programming Language :: Python :: 3.6',
'Programming Language :: Python :: 3.7', 'Programming Language :: Python :: 3.7',
'Programming Language :: Python :: 3.8',
'Topic :: Software Development :: Build Tools', 'Topic :: Software Development :: Build Tools',
], ],
license='MIT', license='MIT',
+46
View File
@@ -0,0 +1,46 @@
# -*- coding: utf-8 -*-
from django.core.management import call_command
from django.test import TestCase
from admin_interface.models import Theme
class AdminInterfaceFixturesTestCase(TestCase):
def setUp(self):
pass
def tearDown(self):
pass
def __load_theme(self, theme_name):
call_command('loaddata', 'admin_interface_theme_%s.json' % (theme_name, ))
def test_import_all(self):
self.__load_theme('django')
self.__load_theme('bootstrap')
self.__load_theme('foundation')
self.__load_theme('uswds')
self.assertEqual(Theme.objects.count(), 4);
def test_import_idempotency(self):
self.__load_theme('django')
self.__load_theme('django')
self.__load_theme('django')
self.__load_theme('django')
self.__load_theme('django')
self.assertEqual(Theme.objects.count(), 1);
self.__load_theme('bootstrap')
self.__load_theme('bootstrap')
self.__load_theme('bootstrap')
self.assertEqual(Theme.objects.count(), 2);
def test_import_override(self):
obj1 = Theme.get_active_theme()
obj1.title = 'Custom 1'
obj1.save()
self.__load_theme('django')
obj2 = Theme.get_active_theme()
self.assertEqual(obj1.pk, obj2.pk)
self.assertTrue(obj1.title != obj2.title)
+14 -10
View File
@@ -2,19 +2,23 @@
envlist = envlist =
py27-{dj17,dj18,dj19,dj110,dj111}-{sqlite,postgres}, py27-{dj17,dj18,dj19,dj110,dj111}-{sqlite,postgres},
py34-{dj17,dj18,dj19,dj110,dj111,dj20}-{sqlite,postgres}, py34-{dj17,dj18,dj19,dj110,dj111,dj20}-{sqlite,postgres},
py35-{dj18,dj19,dj110,dj111,dj20,dj21}-{sqlite,postgres}, py35-{dj18,dj19,dj110,dj111,dj20,dj21,dj22}-{sqlite,postgres},
py36-{dj18,dj19,dj110,dj111,dj20,dj21,djmaster}-{sqlite,postgres}, py36-{dj18,dj19,dj110,dj111,dj20,dj21,dj22,dj30,dj31,djmaster}-{sqlite,postgres},
py37-{dj20,dj21,djmaster}-{sqlite,postgres}, py37-{dj20,dj21,dj22,dj30,dj31,djmaster}-{sqlite,postgres},
py38-{dj22,dj30,dj31,djmaster}-{sqlite,postgres},
[testenv] [testenv]
passenv = CI TRAVIS TRAVIS_* passenv = CI TRAVIS TRAVIS_*
deps = deps =
dj17: Django >= 1.7, < 1.8 dj17: Django == 1.7.*
dj18: Django >= 1.8, < 1.9 dj18: Django == 1.8.*
dj19: Django >= 1.9, < 1.10 dj19: Django == 1.9.*
dj110: Django >= 1.10, < 1.11 dj110: Django == 1.10.*
dj111: Django >= 1.11, < 1.12 dj111: Django == 1.11.*
dj20: Django >= 2.0, < 2.1 dj20: Django == 2.0.*
dj21: Django >= 2.1, < 2.2 dj21: Django == 2.1.*
dj22: Django == 2.2.*
dj30: Django == 3.0.*
dj31: Django == 3.1.*
djmaster: https://github.com/django/django/archive/master.tar.gz djmaster: https://github.com/django/django/archive/master.tar.gz
# mysql: mysqlclient # mysql: mysqlclient
postgres: psycopg2-binary postgres: psycopg2-binary