Compare commits
21 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 9f22ce4b70 | |||
| 12078589aa | |||
| 98d7153b24 | |||
| d702b0a328 | |||
| 8bc899f107 | |||
| 48a226ca9f | |||
| 8752520ebe | |||
| a006fef0e0 | |||
| a18ec73656 | |||
| 40cf1daa84 | |||
| 15ca13c98a | |||
| 5b8ad7b04b | |||
| 690924df51 | |||
| 7a57b35554 | |||
| 6b92499395 | |||
| f38ca148e6 | |||
| 01e7f05ca1 | |||
| 385602ac5f | |||
| e392341591 | |||
| ea36322ca1 | |||
| 4a45afed18 |
@@ -0,0 +1 @@
|
|||||||
|
admin_interface/static/ckeditor/* linguist-vendored
|
||||||
+1
-1
@@ -1,6 +1,6 @@
|
|||||||
The MIT License (MIT)
|
The MIT License (MIT)
|
||||||
|
|
||||||
Copyright (c) 2015 Fabio Cacccamo - fabio.caccamo@gmail.com
|
Copyright (c) 2015 Fabio Caccamo - fabio.caccamo@gmail.com
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
of this software and associated documentation files (the "Software"), to deal
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
|||||||
@@ -1 +1,66 @@
|
|||||||
# django-admin-interface
|
#django-admin-interface
|
||||||
|
django-admin-interface is a modern **flat admin interface customizable by the admin itself**.
|
||||||
|
|
||||||
|
You can use the builtin **django-theme** or create your own and **customize** **title, logo and colors**.
|
||||||
|
|
||||||
|
##Requirements
|
||||||
|
- Python 2.6, Python 2.7
|
||||||
|
- Django 1.6.5 through Django 1.8.4
|
||||||
|
|
||||||
|
##Installation
|
||||||
|
- Run `pip install django-admin-interface`
|
||||||
|
- Add `admin_interface`, `flat` and `colorfield` to `settings.INSTALLED_APPS` **before** `django.contrib.admin`
|
||||||
|
```python
|
||||||
|
INSTALLED_APPS = (
|
||||||
|
#...
|
||||||
|
'flat',
|
||||||
|
'colorfield',
|
||||||
|
'admin_interface',
|
||||||
|
#...
|
||||||
|
'django.contrib.admin',
|
||||||
|
#...
|
||||||
|
)
|
||||||
|
```
|
||||||
|
- Run ``python manage.py migrate`` *(add ``--fake-initial`` if you are upgrading from 0.1.0 to 0.1.1 version)*
|
||||||
|
- Run ``python manage.py collectstatic``
|
||||||
|
- Restart your application server
|
||||||
|
|
||||||
|
##Screenshots
|
||||||
|
######Admin login
|
||||||
|

|
||||||
|
---
|
||||||
|
######Admin dashboard
|
||||||
|

|
||||||
|
---
|
||||||
|
######Admin themes management
|
||||||
|

|
||||||
|
---
|
||||||
|
######Admin theme customization
|
||||||
|

|
||||||
|
|
||||||
|
####Thanks
|
||||||
|
- [django-flat-theme](https://github.com/elky/django-flat-theme/)
|
||||||
|
- [django-colorfield](https://github.com/jaredly/django-colorfield/)
|
||||||
|
|
||||||
|
##License
|
||||||
|
The MIT License (MIT)
|
||||||
|
|
||||||
|
Copyright (c) 2015 Fabio Caccamo - fabio.caccamo@gmail.com
|
||||||
|
|
||||||
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
|
of this software and associated documentation files (the "Software"), to deal
|
||||||
|
in the Software without restriction, including without limitation the rights
|
||||||
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||||
|
copies of the Software, and to permit persons to whom the Software is
|
||||||
|
furnished to do so, subject to the following conditions:
|
||||||
|
|
||||||
|
The above copyright notice and this permission notice shall be included in
|
||||||
|
all copies or substantial portions of the Software.
|
||||||
|
|
||||||
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||||
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||||
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||||
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||||
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||||
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||||
|
THE SOFTWARE.
|
||||||
|
|||||||
@@ -0,0 +1,50 @@
|
|||||||
|
# -*- coding: utf-8 -*-
|
||||||
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
|
from django.db import models, migrations
|
||||||
|
import colorfield.fields
|
||||||
|
|
||||||
|
|
||||||
|
class Migration(migrations.Migration):
|
||||||
|
|
||||||
|
dependencies = [
|
||||||
|
]
|
||||||
|
|
||||||
|
operations = [
|
||||||
|
migrations.CreateModel(
|
||||||
|
name='Theme',
|
||||||
|
fields=[
|
||||||
|
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||||
|
('name', models.CharField(default=b'Django', max_length=50)),
|
||||||
|
('active', models.BooleanField(default=True)),
|
||||||
|
('title', models.CharField(default=b'Django administration', max_length=50, blank=True)),
|
||||||
|
('title_visible', models.BooleanField(default=True, verbose_name=b'visible')),
|
||||||
|
('logo', models.FileField(upload_to=b'admin-interface/logo/', blank=True)),
|
||||||
|
('logo_visible', models.BooleanField(default=True, verbose_name=b'visible')),
|
||||||
|
('css_header_background_color', colorfield.fields.ColorField(default=b'#0C4B33', help_text=b'#0C4B33', max_length=10, verbose_name=b'background color', blank=True)),
|
||||||
|
('css_header_title_color', colorfield.fields.ColorField(default=b'#F5DD5D', help_text=b'#F5DD5D', max_length=10, verbose_name=b'title color', blank=True)),
|
||||||
|
('css_header_text_color', colorfield.fields.ColorField(default=b'#44B78B', help_text=b'#44B78B', max_length=10, verbose_name=b'text color', blank=True)),
|
||||||
|
('css_header_link_color', colorfield.fields.ColorField(default=b'#FFFFFF', help_text=b'#FFFFFF', max_length=10, verbose_name=b'link color', blank=True)),
|
||||||
|
('css_header_link_hover_color', colorfield.fields.ColorField(default=b'#C9F0DD', help_text=b'#C9F0DD', max_length=10, verbose_name=b'link hover color', blank=True)),
|
||||||
|
('css_module_background_color', colorfield.fields.ColorField(default=b'#44B78B', help_text=b'#44B78B', max_length=10, verbose_name=b'background color', blank=True)),
|
||||||
|
('css_module_text_color', colorfield.fields.ColorField(default=b'#FFFFFF', help_text=b'#FFFFFF', max_length=10, verbose_name=b'text color', blank=True)),
|
||||||
|
('css_module_link_color', colorfield.fields.ColorField(default=b'#FFFFFF', help_text=b'#FFFFFF', max_length=10, verbose_name=b'link color', blank=True)),
|
||||||
|
('css_module_link_hover_color', colorfield.fields.ColorField(default=b'#C9F0DD', help_text=b'#C9F0DD', max_length=10, verbose_name=b'link hover color', blank=True)),
|
||||||
|
('css_module_rounded_corners', models.BooleanField(default=True, verbose_name=b'rounded corners')),
|
||||||
|
('css_generic_link_color', colorfield.fields.ColorField(default=b'#0C3C26', help_text=b'#0C3C26', max_length=10, verbose_name=b'link color', blank=True)),
|
||||||
|
('css_generic_link_hover_color', colorfield.fields.ColorField(default=b'#156641', help_text=b'#156641', max_length=10, verbose_name=b'link hover color', blank=True)),
|
||||||
|
('css_save_button_background_color', colorfield.fields.ColorField(default=b'#0C4B33', help_text=b'#0C4B33', max_length=10, verbose_name=b'background color', blank=True)),
|
||||||
|
('css_save_button_background_hover_color', colorfield.fields.ColorField(default=b'#0C3C26', help_text=b'#0C3C26', max_length=10, verbose_name=b'background hover color', blank=True)),
|
||||||
|
('css_save_button_text_color', colorfield.fields.ColorField(default=b'#FFFFFF', help_text=b'#FFFFFF', max_length=10, verbose_name=b'text color', blank=True)),
|
||||||
|
('css_delete_button_background_color', colorfield.fields.ColorField(default=b'#BA2121', help_text=b'#BA2121', max_length=10, verbose_name=b'background color', blank=True)),
|
||||||
|
('css_delete_button_background_hover_color', colorfield.fields.ColorField(default=b'#A41515', help_text=b'#A41515', max_length=10, verbose_name=b'background hover color', blank=True)),
|
||||||
|
('css_delete_button_text_color', colorfield.fields.ColorField(default=b'#FFFFFF', help_text=b'#FFFFFF', max_length=10, verbose_name=b'text color', blank=True)),
|
||||||
|
('css', models.TextField(blank=True)),
|
||||||
|
('list_filter_dropdown', models.BooleanField(default=False)),
|
||||||
|
],
|
||||||
|
options={
|
||||||
|
'verbose_name': 'Theme',
|
||||||
|
'verbose_name_plural': 'Themes',
|
||||||
|
},
|
||||||
|
),
|
||||||
|
]
|
||||||
@@ -41,9 +41,21 @@
|
|||||||
|
|
||||||
.module h2,
|
.module h2,
|
||||||
.module caption,
|
.module caption,
|
||||||
.inline-group h2,
|
.module.filtered h2 {
|
||||||
.module.filtered h2,
|
background:{{ theme.css_module_background_color }};
|
||||||
.inline-group h2,
|
color:{{ theme.css_module_text_color }};
|
||||||
|
}
|
||||||
|
|
||||||
|
.module a.section:link,
|
||||||
|
.module a.section:visited {
|
||||||
|
color:{{ theme.css_module_link_color }};
|
||||||
|
}
|
||||||
|
|
||||||
|
.module a.section:active,
|
||||||
|
.module a.section:hover {
|
||||||
|
color:{{ theme.css_module_link_hover_color }};
|
||||||
|
}
|
||||||
|
|
||||||
div.breadcrumbs {
|
div.breadcrumbs {
|
||||||
background:{{ theme.css_module_background_color }};
|
background:{{ theme.css_module_background_color }};
|
||||||
color:{{ theme.css_module_text_color }};
|
color:{{ theme.css_module_text_color }};
|
||||||
@@ -63,9 +75,12 @@
|
|||||||
color:{{ theme.css_module_background_color }} !important;
|
color:{{ theme.css_module_background_color }} !important;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* same color as above, but this requires !important */
|
.inline-group h2,
|
||||||
/* support for modeltranslation tabs */
|
.inline-group h2 {
|
||||||
.ui-tabs .ui-tabs-nav li.ui-tabs-active a, .ui-tabs .ui-tabs-nav li.ui-tabs-selected a,
|
background:{{ theme.css_module_background_color }};
|
||||||
|
color:{{ theme.css_module_text_color }};
|
||||||
|
}
|
||||||
|
|
||||||
.selector-chosen h2 {
|
.selector-chosen h2 {
|
||||||
background:{{ theme.css_module_background_color }} !important;
|
background:{{ theme.css_module_background_color }} !important;
|
||||||
color:{{ theme.css_module_text_color }} !important;
|
color:{{ theme.css_module_text_color }} !important;
|
||||||
@@ -445,5 +460,7 @@
|
|||||||
</h1>
|
</h1>
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|
||||||
|
{% block bodyclass %}admin-interface flat-theme{% endblock %}
|
||||||
|
|
||||||
{% block sidebar %}
|
{% block sidebar %}
|
||||||
{% endblock %}
|
{% endblock %}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
|
||||||
__version__ = '0.1.0'
|
__version__ = '0.1.2'
|
||||||
|
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ setup(
|
|||||||
include_package_data=True,
|
include_package_data=True,
|
||||||
license='MIT License',
|
license='MIT License',
|
||||||
version=__version__,
|
version=__version__,
|
||||||
description='django-admin-interface is a modern admin interface customizable by the admin itself.',
|
description='django-admin-interface is a modern flat admin interface customizable by the admin itself.',
|
||||||
author='Fabio Caccamo',
|
author='Fabio Caccamo',
|
||||||
author_email='fabio.caccamo@gmail.com',
|
author_email='fabio.caccamo@gmail.com',
|
||||||
url='https://github.com/fabiocaccamo/django-admin-interface',
|
url='https://github.com/fabiocaccamo/django-admin-interface',
|
||||||
|
|||||||
Reference in New Issue
Block a user