Skip to content

Commit fda67f2

Browse files
committed
Merge branch 'refs/heads/master' into docs-chinese
Conflicts: demo_app/data.db xadmin/plugins/__init__.py xadmin/sites.py xadmin/views/base.py xadmin/views/detail.py xadmin/views/edit.py xadmin/views/list.py
2 parents a3f6d33 + ace31dc commit fda67f2

File tree

264 files changed

+20869
-12225
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

264 files changed

+20869
-12225
lines changed

.gitignore

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,8 @@ nosetests.xml
4141

4242
_build
4343
xadmin/static/xadmin/components/
44+
xadmin/static/xadmin/bower_components/
4445

4546
.idea
4647
*~
48+
demo_app/data.db

README.rst

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,15 +72,18 @@ Install Requires
7272

7373
- `django-crispy-forms`_ >=1.2.3 (For xadmin crispy forms)
7474

75-
- `django-reversion`_ (For object history and reversion feature, please select right version by your django, see `changelog`_ )
75+
- `django-reversion`_ ([OPTION] For object history and reversion feature, please select right version by your django, see `changelog`_ )
7676

77-
- `xlwt`_ (For export xls files, option)
77+
- `xlwt`_ ([OPTION] For export xls files)
78+
79+
- `xlsxwriter`_ ([OPTION] For export xlsx files)
7880

7981
.. _django: http://djangoproject.com
8082
.. _django-crispy-forms: http://django-crispy-forms.rtfd.org
8183
.. _django-reversion: https://github.com/etianen/django-reversion
8284
.. _changelog: https://github.com/etianen/django-reversion/blob/master/CHANGELOG.markdown
8385
.. _xlwt: http://www.python-excel.org/
86+
.. _xlsxwriter: https://github.com/jmcnamara/XlsxWriter
8487

8588
Documentation
8689
-------------
@@ -90,6 +93,27 @@ Documentation
9093

9194
.. _Chinese: https://xadmin.readthedocs.org/en/latest/index.html
9295

96+
Changelogs
97+
-------------
98+
99+
0.5.0
100+
^^^^^
101+
102+
- Update fontawesome to 4.0.3
103+
- Update javascript files to compact fa icons new version
104+
- Update tests for the new instance method of the AdminSite class
105+
- Added demo graphs
106+
- Added quickfilter plugin.
107+
- Adding apps_icons with same logic of apps_label_title.
108+
- Add xlsxwriter for big data export.
109+
- Upgrade reversion models admin list page.
110+
- Fixed reverse many 2 many lookup giving FieldDoesNotExist error.
111+
- Fixed user permission check in inline model.
112+
113+
`Detail`_
114+
115+
.. _Detail: ./changelog.md
116+
93117
Online Group
94118
------------
95119

changelog.md

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
2+
*0.5.0*
3+
---
4+
5+
- 2014-05-05 (sshwsfc) Update pump to version 0.5.0 -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/edcfde154d35d8aca9cd50486d940f68b0d62adc)
6+
- 2014-05-05 (sshwsfc) Fixed #120 change "datas" to "data". -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/8b9512448be5868c78672b9ef934a7cd049de552)
7+
- 2014-04-30 (paul) add support for url name in qbutton: if the string is a name of url, use reverse(url) else, use the url -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/0ceccb87deea5dcb14af8ffbab56dbad95d65d44)
8+
- 2014-04-29 (paul) Use methode(self, obj) in InlineModelAdmin for use in readonly_fields. see https://docs.djangoproject.com/en/1.6/ref/contrib/admin/#django.contrib.admin.ModelAdmin.readonly_fields """ A read-only field can not only display data from a model’s field, it can also display the output of a model’s method or a method of the ModelAdmin class itself. """ -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/1b86d15fc69534bc5a883019d6c964a2bd4c48b8)
9+
- 2014-04-17 (Andre Duarte) Adding apps_icons with same logic of apps_label_title -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/81e049f2d5cf64464f66d7ca943fb8758382c30a)
10+
- 2014-04-16 (cgcgbcbc) fix:global_(search/add)_models overriding -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/d50eea07f6f61ff4fdcfcbcb146a6c3452a79055)
11+
- 2014-04-10 (Jairus Martin) Added quickfilter plugin. Only made for in default menu style -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/5270606dc7fb8de99ab0eee59e59bcea65f3adea)
12+
- 2014-04-07 (Michał Szpadzik) Fixed user permission check in inline model, where only people who have 'add_permission' perm, should have '+' icon to add new elements. It's fix for #142 from main django-xadmin project. -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/a49214b48f194b3f4270e2650576f8cf14b8c2f7)
13+
- 2014-03-26 (Jairus Martin) Fixed it so you can display fields not in base_list_display -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/6c0f854a31be74320ce6f35d1bb51d453b53adf1)
14+
- 2014-03-26 (Jairus Martin) Made it make a copy if the data is not mutable -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/a0e268942bd0b1592d6b3917918353a39ae55ebb)
15+
- 2014-03-26 (Jairus Martin) Added ability to select specific fields -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/3a4a1f083f09998c380d5548f47066bad61aef40)
16+
- 2014-03-26 (sshwsfc) Update tests for the new instance method of the AdminSite class -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/b5b6ab7395687e5cdf3ca989669f4e81fae4867a)
17+
- 2014-03-26 (sshwsfc) Fixed #127 Enable simultaneous work of classical admin and xadmin sites -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/9f421ca0c67590ee878c7f5c6ecef89083bebb96)
18+
- 2014-03-26 (Jove Yu) add app_label trans -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/4f26691d27060845597143543f8fa8972252b4cb)
19+
- 2014-03-26 (Jove Yu) fix xadmin.widget.select-transfer.js -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/b6e9362e453afc084ffd2a1e9e4ff49b5aad4e28)
20+
- 2014-03-25 (Alexander Moiseenko) fixed typo in the icon style name of booleans -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/67b092f7deb9c43f982f5e0a3149dcf3d56d2615)
21+
- 2014-03-19 (Jairus Martin) fixed get_step_form() checking for instance when it should be checking for a class -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/ed915741e8d84d3bdb2cffad7cb02b667fd65fbd)
22+
- 2014-03-19 (sshwsfc) Fixed #146 Font-awesome version 4.0.3 compatibility problem -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/27c91870e514a749b6df00553b4901d28e936570)
23+
- 2014-03-12 (Jairus Martin) Fixed clicking checkbox not applying filter -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/7750e82c9e86a970f84a89900de482ff6d9673d3)
24+
- 2014-03-11 (Jairus Martin) Added MultiSelectFieldListFilter -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/7b4ea1fd2ed20932512a587f8891e44e7165de2f)
25+
- 2014-03-10 (sshwsfc) Export icons fix -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/7e3b14dfdf8d207ed7ed0c8439288df3223cdc47)
26+
- 2014-03-10 (sshwsfc) Fix inline icon bug -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/ede9011c842c4a0df898b7289ecd7205d3ae8957)
27+
- 2014-03-10 (sshwsfc) Update version to 4.0.4 -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/d4ca92665cc895ea3bc1f2ce163e1f7b68ddf03e)
28+
- 2014-03-10 (sshwsfc) Update fontawesome to 4.0.3 -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/d892fa8c587f2f0ba7ecf86eb8879f8eacf146d0)
29+
- 2014-03-10 (sshwsfc) Update javascript files to compact fa icons new version -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/94c2f548affa34c78c75125b4778a16dd1a12776)
30+
- 2014-03-10 (sshwsfc) Update fa icons version -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/affb27fe063452f8e732e8298b4b4b7f007b3e0f)
31+
- 2014-03-05 (Javier Cordero) Fixed when changing a field using BatchAction wasn't allowed when the value validated to False, even when the field allows it, e.g. BooleanField couldn't be set to False -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/d5fca423e3ae10e3ca086e5ae9ea7068872f0a29)
32+
- 2014-02-28 (marshalys) add xlsxwriter info to README -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/45eeea6ff6b839cc90f7b52438442441604e8598)
33+
- 2014-02-28 (marshalys) add xlsxwriter info to README -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/f77f94a9821685db5059c719556b38d1edcf199b)
34+
- 2014-02-27 (marshalys) 增加Excel xlsx格式导出数据,可以支持大数据量导出 -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/895630328e4af275b7a67026b2e1e5e91f149287)
35+
- 2014-02-19 (Jairus Martin) Fixed reverse many 2 many lookup giving FieldDoesNotExist error. -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/f067e92ace37a9e849623780f5a06ab9563bf361)
36+
- 2014-02-14 (Jairus Martin) Add related model name to spec title if it's a related field -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/0f4dd9e60ba03cb4679c77b5ddc391b66830f06c)
37+
- 2014-02-13 (Taras Nek) fix export format for Null fields -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/cc8f724f2e6e2655bd82bb434986e51e99804abf)
38+
- 2014-02-12 (Jairus) Added demo graphs -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/f79f4324f773abe5df18ee33655bf6288c43aa84)
39+
- 2014-02-12 (Jason Thaxter) Improve English usage: "Is Shared" -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/71251413261682d1baec8f64bad786f97901ef68)
40+
- 2014-02-12 (Jairus Martin) Removed unnecessary div -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/7a740ee490f7de13be74065d8b51af30246e8fc1)
41+
- 2014-02-12 (Jairus Martin) Added support for flot categories and flot aggregate. -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/29618640a77700601b89cb7e4aed334c16176c14)
42+
- 2014-02-10 (Jairus Martin) Made related name plural -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/f98bcacd4f637a393408d01fdebffdf5e5a84f83)
43+
- 2014-01-10 (sshwsfc) Update translate files. -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/7e40dbaf287ca3c26af6deedffeba274b9aead35)
44+
- 2014-01-09 (sshwsfc) Upgrade reversion models admin list page. -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/3f5c33deba2bb332f0c810e9c0207f3e0710210c)
45+
- 2014-01-09 (sshwsfc) Fix #90 _has_changed is Dropped in Django 1.6 -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/f3b2851b9f9be53349d6b896c53271a6e5813723)
46+
- 2014-01-09 (sshwsfc) Fix #89 Error in model admin list when there is not column selected. -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/29ddf96801a18098d67d77286ddae99734115678)
47+
- 2013-12-27 (allenhu) remove margin-top assigned to the quick-form -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/4f0a5bcca71141c3029ecba2aed3a94db77bd0c8)
48+
- 2013-12-26 (allenhu) fix Golbe -> Global -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/79483d8c484c97cda97311222827aced865d50df)
49+
- 2013-12-11 (sshwsfc) Add new view "FormAdminView" for easy creating settings view page. -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/fb3a32023e723339e59c3e8fd48acfcad9c01188)
50+
- 2013-11-25 (Javier Cordero) Removed call to Model._meta.get_ordered_objects(), it was removed from django 1.6 -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/8593ab2831b0e46481392dd1980ce940e1d39b92)
51+
- 2013-11-20 (fxiao) [fixes #84] Checkbox is not real-time editing -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/bbf58b83669d3f7eaa59038bd24b6481458fb55d)

changelog.sh

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
#!/bin/bash
2+
# Author: tim.tang
3+
rm -f changelog.md
4+
5+
git for-each-ref --sort='*authordate' --format='%(tag)' refs/tags | grep -v '^$' | tail -r | while read TAG ; do
6+
echo
7+
if [ $NEXT ];then
8+
echo ' ' >> changelog.md
9+
echo *$NEXT* >> changelog.md
10+
echo '---' >> changelog.md
11+
else
12+
echo ' ' >> changelog.md
13+
echo *CURRENT* >> changelog.md
14+
echo '---' >> changelog.md
15+
fi
16+
17+
echo ' ' >> changelog.md
18+
GIT_PAGER=cat git log --no-merges --date=short --pretty=format:'- %ad (%an) %s -> [view commit](https://github.com/sshwsfc/django-xadmin/commit/%H)' $TAG..$NEXT >> changelog.md
19+
echo ' ' >> changelog.md
20+
NEXT=$TAG
21+
done
22+
echo "DONE."

demo_app/app/adminx.py

Lines changed: 35 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,10 @@
11
import xadmin
22
from xadmin import views
3-
from models import *
4-
from xadmin.layout import *
5-
3+
from models import IDC, Host, MaintainLog, HostGroup, AccessRecord
4+
from xadmin.layout import Main, TabHolder, Tab, Fieldset, Row, Col, AppendedText, Side
65
from xadmin.plugins.inline import Inline
76
from xadmin.plugins.batch import BatchChangeAction
87

9-
108
class MainDashboard(object):
119
widgets = [
1210
[
@@ -29,12 +27,13 @@ class BaseSetting(object):
2927
xadmin.site.register(views.BaseAdminView, BaseSetting)
3028

3129

32-
class GolbeSetting(object):
33-
globe_search_models = [Host, IDC]
34-
globe_models_icon = {
35-
Host: 'laptop', IDC: 'cloud'
30+
class GlobalSetting(object):
31+
global_search_models = [Host, IDC]
32+
global_models_icon = {
33+
Host: 'fa fa-laptop', IDC: 'fa fa-cloud'
3634
}
37-
xadmin.site.register(views.CommAdminView, GolbeSetting)
35+
menu_style = 'default'#'accordion'
36+
xadmin.site.register(views.CommAdminView, GlobalSetting)
3837

3938

4039
class MaintainInline(object):
@@ -76,8 +75,9 @@ def open_web(self, instance):
7675

7776
search_fields = ['name', 'ip', 'description']
7877
list_filter = ['idc', 'guarantee_date', 'status', 'brand', 'model',
79-
'cpu', 'core_num', 'hard_disk', 'memory', 'service_type']
80-
78+
'cpu', 'core_num', 'hard_disk', 'memory', ('service_type',xadmin.filters.MultiSelectFieldListFilter)]
79+
80+
list_quick_filter = ['service_type',{'field':'idc__name','limit':10}]
8181
list_bookmarks = [{'title': "Need Guarantee", 'query': {'status__exact': 2}, 'order': ('-guarantee_date',), 'cols': ('brand', 'guarantee_date', 'service_type')}]
8282

8383
show_detail_fields = ('idc',)
@@ -86,18 +86,19 @@ def open_web(self, instance):
8686
save_as = True
8787

8888
aggregate_fields = {"guarantee_date": "min"}
89+
grid_layouts = ('table', 'thumbnails')
8990

9091
form_layout = (
9192
Main(
9293
TabHolder(
93-
Tab('Comm Fiels',
94+
Tab('Comm Fields',
9495
Fieldset('Company data',
9596
'name', 'idc',
9697
description="some comm fields, required"
9798
),
9899
Inline(MaintainLog),
99100
),
100-
Tab('Extend Fiedls',
101+
Tab('Extend Fields',
101102
Fieldset('Contact details',
102103
'service_type',
103104
Row('brand', 'model'),
@@ -117,8 +118,16 @@ def open_web(self, instance):
117118
)
118119
inlines = [MaintainInline]
119120
reversion_enable = True
120-
121-
121+
122+
data_charts = {
123+
"host_service_type_counts": {'title': u"Host service type count", "x-field": "service_type", "y-field": ("service_type",),
124+
"option": {
125+
"series": {"bars": {"align": "center", "barWidth": 0.8,'show':True}},
126+
"xaxis": {"aggregate": "count", "mode": "categories"},
127+
},
128+
},
129+
}
130+
122131
class HostGroupAdmin(object):
123132
list_display = ('name', 'description')
124133
list_display_links = ('name',)
@@ -173,8 +182,18 @@ def avg_count(self, instance):
173182
refresh_times = (3, 5, 10)
174183
data_charts = {
175184
"user_count": {'title': u"User Report", "x-field": "date", "y-field": ("user_count", "view_count"), "order": ('date',)},
176-
"avg_count": {'title': u"Avg Report", "x-field": "date", "y-field": ('avg_count',), "order": ('date',)}
185+
"avg_count": {'title': u"Avg Report", "x-field": "date", "y-field": ('avg_count',), "order": ('date',)},
186+
"per_month": {'title': u"Monthly Users", "x-field": "_chart_month", "y-field": ("user_count", ),
187+
"option": {
188+
"series": {"bars": {"align": "center", "barWidth": 0.8,'show':True}},
189+
"xaxis": {"aggregate": "sum", "mode": "categories"},
190+
},
191+
},
177192
}
193+
194+
def _chart_month(self,obj):
195+
return obj.date.strftime("%B")
196+
178197

179198
xadmin.site.register(Host, HostAdmin)
180199
xadmin.site.register(HostGroup, HostGroupAdmin)

demo_app/app/models.py

Lines changed: 19 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,6 @@
11
from django.db import models
22

33

4-
class IDC(models.Model):
5-
name = models.CharField(max_length=64)
6-
description = models.TextField()
7-
8-
contact = models.CharField(max_length=32)
9-
telphone = models.CharField(max_length=32)
10-
address = models.CharField(max_length=128)
11-
customer_id = models.CharField(max_length=128)
12-
13-
create_time = models.DateField(auto_now=True)
14-
15-
def __unicode__(self):
16-
return self.name
17-
18-
class Meta:
19-
verbose_name = u"IDC"
20-
verbose_name_plural = verbose_name
21-
224
SERVER_STATUS = (
235
(0, u"Normal"),
246
(1, u"Down"),
@@ -38,8 +20,26 @@ class Meta:
3820
)
3921

4022

41-
class Host(models.Model):
23+
class IDC(models.Model):
24+
name = models.CharField(max_length=64)
25+
description = models.TextField()
26+
27+
contact = models.CharField(max_length=32)
28+
telphone = models.CharField(max_length=32)
29+
address = models.CharField(max_length=128)
30+
customer_id = models.CharField(max_length=128)
31+
32+
create_time = models.DateField(auto_now=True)
4233

34+
def __unicode__(self):
35+
return self.name
36+
37+
class Meta:
38+
verbose_name = u"IDC"
39+
verbose_name_plural = verbose_name
40+
41+
42+
class Host(models.Model):
4343
idc = models.ForeignKey(IDC)
4444
name = models.CharField(max_length=64)
4545
nagios_name = models.CharField(u"Nagios Host ID", max_length=64, blank=True, null=True)

demo_app/demo/settings.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,10 +133,11 @@
133133
'django.contrib.sessions',
134134
'django.contrib.messages',
135135
'django.contrib.staticfiles',
136+
'django.contrib.admin',
136137

137138
'xadmin',
138139
'crispy_forms',
139-
'reversion',
140+
#'reversion',
140141

141142
'app',
142143
)

demo_app/demo/urls.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,13 @@
44
import xadmin
55
xadmin.autodiscover()
66

7-
from xadmin.plugins import xversion
8-
xversion.registe_models()
7+
# from xadmin.plugins import xversion
8+
# xversion.register_models()
9+
10+
from django.contrib import admin
11+
admin.autodiscover()
912

1013
urlpatterns = patterns('',
11-
url(r'', include(xadmin.site.urls)),
12-
)
14+
url(r'^admin/', include(admin.site.urls)),
15+
url(r'^', include(xadmin.site.urls))
16+
)

requirements.txt

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,2 @@
1-
django>=1.4
2-
xlwt
3-
django-crispy-forms>=1.2.3
4-
django-reversion
1+
django>=1.5
2+
django-crispy-forms>=1.4.0

setup.py

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,31 @@
11
#!/usr/bin/env python
2-
from setuptools import setup, find_packages
2+
from setuptools import setup
33

4-
#version_tuple = __import__('xadmin').VERSION
5-
#version = ".".join([str(v) for v in version_tuple])
4+
# version_tuple = __import__('xadmin.version').VERSION
5+
# version = ".".join([str(v) for v in version_tuple])
66

77
setup(
88
name='django-xadmin',
9-
version='0.1.12-dev',
9+
version='0.5.0',
1010
description='Drop-in replacement of Django admin comes with lots of goodies, fully extensible with plugin support, pretty UI based on Twitter Bootstrap.',
1111
long_description=open('README.rst').read(),
1212
author='sshwsfc',
1313
author_email='[email protected]',
14+
license=open('LICENSE').read(),
1415
url='http://www.xadmin.io',
15-
download_url='http://github.com/sshwsfc/django-xadmin/archive/%3Cspan%20class="x x-first x-last">0.1.12.dev.zip',
16+
download_url='http://github.com/sshwsfc/django-xadmin/archive/%3Cspan%20class="x x-first x-last">master.zip',
1617
packages=['xadmin', 'xadmin.plugins', 'xadmin.templatetags', 'xadmin.views'],
1718
include_package_data=True,
1819
install_requires=[
1920
'setuptools',
20-
'django>=1.4',
21-
'django-crispy-forms>=1.2.3',
22-
'django-reversion',
21+
'django>=1.5',
22+
'django-crispy-forms>=1.4.0',
2323
],
2424
extras_require={
25-
'Excel': ['xlwt'],
25+
'Excel': ['xlwt', 'xlsxwriter'],
26+
'Reversion': ['django-reversion'],
2627
},
27-
zip_safe=True,
28+
zip_safe=False,
2829
keywords=['admin', 'django', 'xadmin', 'bootstrap'],
2930
classifiers=[
3031
'Development Status :: 4 - Beta',
@@ -35,7 +36,6 @@
3536
'Operating System :: OS Independent',
3637
"Programming Language :: JavaScript",
3738
'Programming Language :: Python',
38-
"Programming Language :: Python :: 2.6",
3939
"Programming Language :: Python :: 2.7",
4040
"Topic :: Internet :: WWW/HTTP",
4141
"Topic :: Internet :: WWW/HTTP :: Dynamic Content",

0 commit comments

Comments
 (0)