.*?)[\\s\\/\\?]*(>|>)","sg"),func:process}]}Brush.prototype=new SyntaxHighlighter.Highlighter;Brush.aliases=["xml","xhtml","xslt","html"];SyntaxHighlighter.brushes.Xml=Brush;typeof exports!="undefined"?exports.Brush=Brush:null})();
diff --git a/datatableview/tests/example_project/example_project/example_app/static/syntaxhighlighter/shCore.css b/demo_app/example_app/static/syntaxhighlighter/shCore.css
similarity index 98%
rename from datatableview/tests/example_project/example_project/example_app/static/syntaxhighlighter/shCore.css
rename to demo_app/example_app/static/syntaxhighlighter/shCore.css
index bc8a5785..a22d8e4c 100644
--- a/datatableview/tests/example_project/example_project/example_app/static/syntaxhighlighter/shCore.css
+++ b/demo_app/example_app/static/syntaxhighlighter/shCore.css
@@ -7,11 +7,11 @@
*
* @version
* 3.0.83 (July 02 2010)
- *
+ *
* @copyright
* Copyright (C) 2004-2010 Alex Gorbatchev.
*
* @license
* Dual licensed under the MIT and GPL licenses.
*/
-.syntaxhighlighter a,.syntaxhighlighter div,.syntaxhighlighter code,.syntaxhighlighter table,.syntaxhighlighter table td,.syntaxhighlighter table tr,.syntaxhighlighter table tbody,.syntaxhighlighter table thead,.syntaxhighlighter table caption,.syntaxhighlighter textarea{-moz-border-radius:0 0 0 0 !important;-webkit-border-radius:0 0 0 0 !important;background:none !important;border:0 !important;bottom:auto !important;float:none !important;height:auto !important;left:auto !important;line-height:1.1em !important;margin:0 !important;outline:0 !important;overflow:visible !important;padding:0 !important;position:static !important;right:auto !important;text-align:left !important;top:auto !important;vertical-align:baseline !important;width:auto !important;box-sizing:content-box !important;font-family:"Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace !important;font-weight:normal !important;font-style:normal !important;font-size:1em !important;min-height:inherit !important;min-height:auto !important}.syntaxhighlighter{width:100% !important;margin:1em 0 1em 0 !important;position:relative !important;overflow:auto !important;font-size:1em !important}.syntaxhighlighter.source{overflow:hidden !important}.syntaxhighlighter .bold{font-weight:bold !important}.syntaxhighlighter .italic{font-style:italic !important}.syntaxhighlighter .line{white-space:pre !important}.syntaxhighlighter table{width:100% !important}.syntaxhighlighter table caption{text-align:left !important;padding:.5em 0 .5em 1em !important}.syntaxhighlighter table td.code{width:100% !important}.syntaxhighlighter table td.code .container{position:relative !important}.syntaxhighlighter table td.code .container textarea{box-sizing:border-box !important;position:absolute !important;left:0 !important;top:0 !important;width:100% !important;height:100% !important;border:none !important;background:white !important;padding-left:1em !important;overflow:hidden !important;white-space:pre !important}.syntaxhighlighter table td.gutter .line{text-align:right !important;padding:0 .5em 0 1em !important}.syntaxhighlighter table td.code .line{padding:0 1em !important}.syntaxhighlighter.nogutter td.code .container textarea,.syntaxhighlighter.nogutter td.code .line{padding-left:0 !important}.syntaxhighlighter.show{display:block !important}.syntaxhighlighter.collapsed table{display:none !important}.syntaxhighlighter.collapsed .toolbar{padding:.1em .8em 0 .8em !important;font-size:1em !important;position:static !important;width:auto !important;height:auto !important}.syntaxhighlighter.collapsed .toolbar span{display:inline !important;margin-right:1em !important}.syntaxhighlighter.collapsed .toolbar span a{padding:0 !important;display:none !important}.syntaxhighlighter.collapsed .toolbar span a.expandSource{display:inline !important}.syntaxhighlighter .toolbar{position:absolute !important;right:1px !important;top:1px !important;width:11px !important;height:11px !important;font-size:10px !important;z-index:10 !important}.syntaxhighlighter .toolbar span.title{display:inline !important}.syntaxhighlighter .toolbar a{display:block !important;text-align:center !important;text-decoration:none !important;padding-top:1px !important}.syntaxhighlighter .toolbar a.expandSource{display:none !important}.syntaxhighlighter.ie{font-size:.9em !important;padding:1px 0 1px 0 !important}.syntaxhighlighter.ie .toolbar{line-height:8px !important}.syntaxhighlighter.ie .toolbar a{padding-top:0 !important}.syntaxhighlighter.printing .line.alt1 .content,.syntaxhighlighter.printing .line.alt2 .content,.syntaxhighlighter.printing .line.highlighted .number,.syntaxhighlighter.printing .line.highlighted.alt1 .content,.syntaxhighlighter.printing .line.highlighted.alt2 .content{background:none !important}.syntaxhighlighter.printing .line .number{color:#bbb !important}.syntaxhighlighter.printing .line .content{color:black !important}.syntaxhighlighter.printing .toolbar{display:none !important}.syntaxhighlighter.printing a{text-decoration:none !important}.syntaxhighlighter.printing .plain,.syntaxhighlighter.printing .plain a{color:black !important}.syntaxhighlighter.printing .comments,.syntaxhighlighter.printing .comments a{color:#008200 !important}.syntaxhighlighter.printing .string,.syntaxhighlighter.printing .string a{color:blue !important}.syntaxhighlighter.printing .keyword{color:#069 !important;font-weight:bold !important}.syntaxhighlighter.printing .preprocessor{color:gray !important}.syntaxhighlighter.printing .variable{color:#a70 !important}.syntaxhighlighter.printing .value{color:#090 !important}.syntaxhighlighter.printing .functions{color:#ff1493 !important}.syntaxhighlighter.printing .constants{color:#06c !important}.syntaxhighlighter.printing .script{font-weight:bold !important}.syntaxhighlighter.printing .color1,.syntaxhighlighter.printing .color1 a{color:gray !important}.syntaxhighlighter.printing .color2,.syntaxhighlighter.printing .color2 a{color:#ff1493 !important}.syntaxhighlighter.printing .color3,.syntaxhighlighter.printing .color3 a{color:red !important}.syntaxhighlighter.printing .break,.syntaxhighlighter.printing .break a{color:black !important}
\ No newline at end of file
+.syntaxhighlighter a,.syntaxhighlighter div,.syntaxhighlighter code,.syntaxhighlighter table,.syntaxhighlighter table td,.syntaxhighlighter table tr,.syntaxhighlighter table tbody,.syntaxhighlighter table thead,.syntaxhighlighter table caption,.syntaxhighlighter textarea{-moz-border-radius:0 0 0 0 !important;-webkit-border-radius:0 0 0 0 !important;background:none !important;border:0 !important;bottom:auto !important;float:none !important;height:auto !important;left:auto !important;line-height:1.1em !important;margin:0 !important;outline:0 !important;overflow:visible !important;padding:0 !important;position:static !important;right:auto !important;text-align:left !important;top:auto !important;vertical-align:baseline !important;width:auto !important;box-sizing:content-box !important;font-family:"Consolas","Bitstream Vera Sans Mono","Courier New",Courier,monospace !important;font-weight:normal !important;font-style:normal !important;font-size:1em !important;min-height:inherit !important;min-height:auto !important}.syntaxhighlighter{width:100% !important;margin:1em 0 1em 0 !important;position:relative !important;overflow:auto !important;font-size:1em !important}.syntaxhighlighter.source{overflow:hidden !important}.syntaxhighlighter .bold{font-weight:bold !important}.syntaxhighlighter .italic{font-style:italic !important}.syntaxhighlighter .line{white-space:pre !important}.syntaxhighlighter table{width:100% !important}.syntaxhighlighter table caption{text-align:left !important;padding:.5em 0 .5em 1em !important}.syntaxhighlighter table td.code{width:100% !important}.syntaxhighlighter table td.code .container{position:relative !important}.syntaxhighlighter table td.code .container textarea{box-sizing:border-box !important;position:absolute !important;left:0 !important;top:0 !important;width:100% !important;height:100% !important;border:none !important;background:white !important;padding-left:1em !important;overflow:hidden !important;white-space:pre !important}.syntaxhighlighter table td.gutter .line{text-align:right !important;padding:0 .5em 0 1em !important}.syntaxhighlighter table td.code .line{padding:0 1em !important}.syntaxhighlighter.nogutter td.code .container textarea,.syntaxhighlighter.nogutter td.code .line{padding-left:0 !important}.syntaxhighlighter.show{display:block !important}.syntaxhighlighter.collapsed table{display:none !important}.syntaxhighlighter.collapsed .toolbar{padding:.1em .8em 0 .8em !important;font-size:1em !important;position:static !important;width:auto !important;height:auto !important}.syntaxhighlighter.collapsed .toolbar span{display:inline !important;margin-right:1em !important}.syntaxhighlighter.collapsed .toolbar span a{padding:0 !important;display:none !important}.syntaxhighlighter.collapsed .toolbar span a.expandSource{display:inline !important}.syntaxhighlighter .toolbar{position:absolute !important;right:1px !important;top:1px !important;width:11px !important;height:11px !important;font-size:10px !important;z-index:10 !important}.syntaxhighlighter .toolbar span.title{display:inline !important}.syntaxhighlighter .toolbar a{display:block !important;text-align:center !important;text-decoration:none !important;padding-top:1px !important}.syntaxhighlighter .toolbar a.expandSource{display:none !important}.syntaxhighlighter.ie{font-size:.9em !important;padding:1px 0 1px 0 !important}.syntaxhighlighter.ie .toolbar{line-height:8px !important}.syntaxhighlighter.ie .toolbar a{padding-top:0 !important}.syntaxhighlighter.printing .line.alt1 .content,.syntaxhighlighter.printing .line.alt2 .content,.syntaxhighlighter.printing .line.highlighted .number,.syntaxhighlighter.printing .line.highlighted.alt1 .content,.syntaxhighlighter.printing .line.highlighted.alt2 .content{background:none !important}.syntaxhighlighter.printing .line .number{color:#bbb !important}.syntaxhighlighter.printing .line .content{color:black !important}.syntaxhighlighter.printing .toolbar{display:none !important}.syntaxhighlighter.printing a{text-decoration:none !important}.syntaxhighlighter.printing .plain,.syntaxhighlighter.printing .plain a{color:black !important}.syntaxhighlighter.printing .comments,.syntaxhighlighter.printing .comments a{color:#008200 !important}.syntaxhighlighter.printing .string,.syntaxhighlighter.printing .string a{color:blue !important}.syntaxhighlighter.printing .keyword{color:#069 !important;font-weight:bold !important}.syntaxhighlighter.printing .preprocessor{color:gray !important}.syntaxhighlighter.printing .variable{color:#a70 !important}.syntaxhighlighter.printing .value{color:#090 !important}.syntaxhighlighter.printing .functions{color:#ff1493 !important}.syntaxhighlighter.printing .constants{color:#06c !important}.syntaxhighlighter.printing .script{font-weight:bold !important}.syntaxhighlighter.printing .color1,.syntaxhighlighter.printing .color1 a{color:gray !important}.syntaxhighlighter.printing .color2,.syntaxhighlighter.printing .color2 a{color:#ff1493 !important}.syntaxhighlighter.printing .color3,.syntaxhighlighter.printing .color3 a{color:red !important}.syntaxhighlighter.printing .break,.syntaxhighlighter.printing .break a{color:black !important}
diff --git a/datatableview/tests/example_project/example_project/example_app/static/syntaxhighlighter/shCore.js b/demo_app/example_app/static/syntaxhighlighter/shCore.js
similarity index 99%
rename from datatableview/tests/example_project/example_project/example_app/static/syntaxhighlighter/shCore.js
rename to demo_app/example_app/static/syntaxhighlighter/shCore.js
index b47b6454..effcf59d 100644
--- a/datatableview/tests/example_project/example_project/example_app/static/syntaxhighlighter/shCore.js
+++ b/demo_app/example_app/static/syntaxhighlighter/shCore.js
@@ -7,7 +7,7 @@
*
* @version
* 3.0.83 (July 02 2010)
- *
+ *
* @copyright
* Copyright (C) 2004-2010 Alex Gorbatchev.
*
diff --git a/datatableview/tests/example_project/example_project/example_app/static/syntaxhighlighter/shThemeDefault.css b/demo_app/example_app/static/syntaxhighlighter/shThemeDefault.css
similarity index 98%
rename from datatableview/tests/example_project/example_project/example_app/static/syntaxhighlighter/shThemeDefault.css
rename to demo_app/example_app/static/syntaxhighlighter/shThemeDefault.css
index 45cb5646..8f8f3925 100644
--- a/datatableview/tests/example_project/example_project/example_app/static/syntaxhighlighter/shThemeDefault.css
+++ b/demo_app/example_app/static/syntaxhighlighter/shThemeDefault.css
@@ -7,11 +7,11 @@
*
* @version
* 3.0.83 (July 02 2010)
- *
+ *
* @copyright
* Copyright (C) 2004-2010 Alex Gorbatchev.
*
* @license
* Dual licensed under the MIT and GPL licenses.
*/
-.syntaxhighlighter{background-color:white !important}.syntaxhighlighter .line.alt1{background-color:white !important}.syntaxhighlighter .line.alt2{background-color:white !important}.syntaxhighlighter .line.highlighted.alt1,.syntaxhighlighter .line.highlighted.alt2{background-color:#e0e0e0 !important}.syntaxhighlighter .line.highlighted.number{color:black !important}.syntaxhighlighter table caption{color:black !important}.syntaxhighlighter .gutter{color:#afafaf !important}.syntaxhighlighter .gutter .line{border-right:3px solid #6ce26c !important}.syntaxhighlighter .gutter .line.highlighted{background-color:#6ce26c !important;color:white !important}.syntaxhighlighter.printing .line .content{border:none !important}.syntaxhighlighter.collapsed{overflow:visible !important}.syntaxhighlighter.collapsed .toolbar{color:blue !important;background:white !important;border:1px solid #6ce26c !important}.syntaxhighlighter.collapsed .toolbar a{color:blue !important}.syntaxhighlighter.collapsed .toolbar a:hover{color:red !important}.syntaxhighlighter .toolbar{color:white !important;background:#6ce26c !important;border:none !important}.syntaxhighlighter .toolbar a{color:white !important}.syntaxhighlighter .toolbar a:hover{color:black !important}.syntaxhighlighter .plain,.syntaxhighlighter .plain a{color:black !important}.syntaxhighlighter .comments,.syntaxhighlighter .comments a{color:#008200 !important}.syntaxhighlighter .string,.syntaxhighlighter .string a{color:blue !important}.syntaxhighlighter .keyword{color:#069 !important}.syntaxhighlighter .preprocessor{color:gray !important}.syntaxhighlighter .variable{color:#a70 !important}.syntaxhighlighter .value{color:#090 !important}.syntaxhighlighter .functions{color:#ff1493 !important}.syntaxhighlighter .constants{color:#06c !important}.syntaxhighlighter .script{font-weight:bold !important;color:#069 !important;background-color:none !important}.syntaxhighlighter .color1,.syntaxhighlighter .color1 a{color:gray !important}.syntaxhighlighter .color2,.syntaxhighlighter .color2 a{color:#ff1493 !important}.syntaxhighlighter .color3,.syntaxhighlighter .color3 a{color:red !important}.syntaxhighlighter .keyword{font-weight:bold !important}
\ No newline at end of file
+.syntaxhighlighter{background-color:white !important}.syntaxhighlighter .line.alt1{background-color:white !important}.syntaxhighlighter .line.alt2{background-color:white !important}.syntaxhighlighter .line.highlighted.alt1,.syntaxhighlighter .line.highlighted.alt2{background-color:#e0e0e0 !important}.syntaxhighlighter .line.highlighted.number{color:black !important}.syntaxhighlighter table caption{color:black !important}.syntaxhighlighter .gutter{color:#afafaf !important}.syntaxhighlighter .gutter .line{border-right:3px solid #6ce26c !important}.syntaxhighlighter .gutter .line.highlighted{background-color:#6ce26c !important;color:white !important}.syntaxhighlighter.printing .line .content{border:none !important}.syntaxhighlighter.collapsed{overflow:visible !important}.syntaxhighlighter.collapsed .toolbar{color:blue !important;background:white !important;border:1px solid #6ce26c !important}.syntaxhighlighter.collapsed .toolbar a{color:blue !important}.syntaxhighlighter.collapsed .toolbar a:hover{color:red !important}.syntaxhighlighter .toolbar{color:white !important;background:#6ce26c !important;border:none !important}.syntaxhighlighter .toolbar a{color:white !important}.syntaxhighlighter .toolbar a:hover{color:black !important}.syntaxhighlighter .plain,.syntaxhighlighter .plain a{color:black !important}.syntaxhighlighter .comments,.syntaxhighlighter .comments a{color:#008200 !important}.syntaxhighlighter .string,.syntaxhighlighter .string a{color:blue !important}.syntaxhighlighter .keyword{color:#069 !important}.syntaxhighlighter .preprocessor{color:gray !important}.syntaxhighlighter .variable{color:#a70 !important}.syntaxhighlighter .value{color:#090 !important}.syntaxhighlighter .functions{color:#ff1493 !important}.syntaxhighlighter .constants{color:#06c !important}.syntaxhighlighter .script{font-weight:bold !important;color:#069 !important;background-color:none !important}.syntaxhighlighter .color1,.syntaxhighlighter .color1 a{color:gray !important}.syntaxhighlighter .color2,.syntaxhighlighter .color2 a{color:#ff1493 !important}.syntaxhighlighter .color3,.syntaxhighlighter .color3 a{color:red !important}.syntaxhighlighter .keyword{font-weight:bold !important}
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/500.html b/demo_app/example_app/templates/500.html
similarity index 100%
rename from datatableview/tests/example_project/example_project/example_app/templates/500.html
rename to demo_app/example_app/templates/500.html
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/base.html b/demo_app/example_app/templates/base.html
similarity index 99%
rename from datatableview/tests/example_project/example_project/example_app/templates/base.html
rename to demo_app/example_app/templates/base.html
index f2808b5a..dbf5958f 100644
--- a/datatableview/tests/example_project/example_project/example_app/templates/base.html
+++ b/demo_app/example_app/templates/base.html
@@ -5,7 +5,7 @@
{% block title %}{% endblock title %}
{% block static %}
{# jQuery #}
-
+
{# datatables.js #}
diff --git a/demo_app/example_app/templates/blank.html b/demo_app/example_app/templates/blank.html
new file mode 100644
index 00000000..e69de29b
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/custom_table_template.html b/demo_app/example_app/templates/custom_table_template.html
similarity index 100%
rename from datatableview/tests/example_project/example_project/example_app/templates/custom_table_template.html
rename to demo_app/example_app/templates/custom_table_template.html
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/demos/bootstrap_template.html b/demo_app/example_app/templates/demos/bootstrap_template.html
similarity index 98%
rename from datatableview/tests/example_project/example_project/example_app/templates/demos/bootstrap_template.html
rename to demo_app/example_app/templates/demos/bootstrap_template.html
index 37c1fc56..38e343ed 100644
--- a/datatableview/tests/example_project/example_project/example_app/templates/demos/bootstrap_template.html
+++ b/demo_app/example_app/templates/demos/bootstrap_template.html
@@ -6,5 +6,5 @@
-
+
{% endblock static %}
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/demos/col_reorder.html b/demo_app/example_app/templates/demos/col_reorder.html
similarity index 100%
rename from datatableview/tests/example_project/example_project/example_app/templates/demos/col_reorder.html
rename to demo_app/example_app/templates/demos/col_reorder.html
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/demos/columns_reference.html b/demo_app/example_app/templates/demos/columns_reference.html
similarity index 100%
rename from datatableview/tests/example_project/example_project/example_app/templates/demos/columns_reference.html
rename to demo_app/example_app/templates/demos/columns_reference.html
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/demos/configure_datatable_object.html b/demo_app/example_app/templates/demos/configure_datatable_object.html
similarity index 98%
rename from datatableview/tests/example_project/example_project/example_app/templates/demos/configure_datatable_object.html
rename to demo_app/example_app/templates/demos/configure_datatable_object.html
index 5a11ee93..82820293 100644
--- a/datatableview/tests/example_project/example_project/example_app/templates/demos/configure_datatable_object.html
+++ b/demo_app/example_app/templates/demos/configure_datatable_object.html
@@ -42,4 +42,4 @@
{% include "meta/hidden_columns.html" %}
{% include "meta/footer.html" %}
{% include "meta/structure_template.html" %}
-{% endblock description %}
\ No newline at end of file
+{% endblock description %}
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/demos/configure_values_datatable_object.html b/demo_app/example_app/templates/demos/configure_values_datatable_object.html
similarity index 94%
rename from datatableview/tests/example_project/example_project/example_app/templates/demos/configure_values_datatable_object.html
rename to demo_app/example_app/templates/demos/configure_values_datatable_object.html
index 78c8373a..e2514495 100644
--- a/datatableview/tests/example_project/example_project/example_app/templates/demos/configure_values_datatable_object.html
+++ b/demo_app/example_app/templates/demos/configure_values_datatable_object.html
@@ -21,7 +21,7 @@
# Aliases have been given to the object for column names that didn't match the actual
# ``sources`` names. Note how 'blog' is a list, because it had multiple sources.
- 'publication_date': datetime.date(2013, 1, 1),
+ 'publication_date': datetime.date(2013, 1, 1),
'blog': [2, u'Second Blog'],
}
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/demos/css_styling.html b/demo_app/example_app/templates/demos/css_styling.html
similarity index 95%
rename from datatableview/tests/example_project/example_project/example_app/templates/demos/css_styling.html
rename to demo_app/example_app/templates/demos/css_styling.html
index 03423f11..a080fd41 100644
--- a/datatableview/tests/example_project/example_project/example_app/templates/demos/css_styling.html
+++ b/demo_app/example_app/templates/demos/css_styling.html
@@ -21,4 +21,4 @@
}
</style>
-{% endblock description %}
\ No newline at end of file
+{% endblock description %}
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/demos/custom_model_fields.html b/demo_app/example_app/templates/demos/custom_model_fields.html
similarity index 100%
rename from datatableview/tests/example_project/example_project/example_app/templates/demos/custom_model_fields.html
rename to demo_app/example_app/templates/demos/custom_model_fields.html
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/demos/helpers_reference.html b/demo_app/example_app/templates/demos/helpers_reference.html
similarity index 100%
rename from datatableview/tests/example_project/example_project/example_app/templates/demos/helpers_reference.html
rename to demo_app/example_app/templates/demos/helpers_reference.html
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/demos/multi_filter.html b/demo_app/example_app/templates/demos/multi_filter.html
similarity index 100%
rename from datatableview/tests/example_project/example_project/example_app/templates/demos/multi_filter.html
rename to demo_app/example_app/templates/demos/multi_filter.html
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/demos/multiple_tables.html b/demo_app/example_app/templates/demos/multiple_tables.html
similarity index 100%
rename from datatableview/tests/example_project/example_project/example_app/templates/demos/multiple_tables.html
rename to demo_app/example_app/templates/demos/multiple_tables.html
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/demos/select_row.html b/demo_app/example_app/templates/demos/select_row.html
similarity index 100%
rename from datatableview/tests/example_project/example_project/example_app/templates/demos/select_row.html
rename to demo_app/example_app/templates/demos/select_row.html
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/demos/x_editable_columns.html b/demo_app/example_app/templates/demos/x_editable_columns.html
similarity index 100%
rename from datatableview/tests/example_project/example_project/example_app/templates/demos/x_editable_columns.html
rename to demo_app/example_app/templates/demos/x_editable_columns.html
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/example_base.html b/demo_app/example_app/templates/example_base.html
similarity index 100%
rename from datatableview/tests/example_project/example_project/example_app/templates/example_base.html
rename to demo_app/example_app/templates/example_base.html
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/index.html b/demo_app/example_app/templates/index.html
similarity index 100%
rename from datatableview/tests/example_project/example_project/example_app/templates/index.html
rename to demo_app/example_app/templates/index.html
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/javascript_initialization.html b/demo_app/example_app/templates/javascript_initialization.html
similarity index 99%
rename from datatableview/tests/example_project/example_project/example_app/templates/javascript_initialization.html
rename to demo_app/example_app/templates/javascript_initialization.html
index 79092a3c..868b447d 100644
--- a/datatableview/tests/example_project/example_project/example_app/templates/javascript_initialization.html
+++ b/demo_app/example_app/templates/javascript_initialization.html
@@ -29,7 +29,7 @@ Initialization
$(function(){
datatableview.initialize($('.mytable'));
-
+
// Or, if there are common options that should be given to all select elements,
// you can specify them now. data-* API attributes on the table columns will potentially
// override the individual options.
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/meta/columns.html b/demo_app/example_app/templates/meta/columns.html
similarity index 100%
rename from datatableview/tests/example_project/example_project/example_app/templates/meta/columns.html
rename to demo_app/example_app/templates/meta/columns.html
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/meta/footer.html b/demo_app/example_app/templates/meta/footer.html
similarity index 100%
rename from datatableview/tests/example_project/example_project/example_app/templates/meta/footer.html
rename to demo_app/example_app/templates/meta/footer.html
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/meta/hidden_columns.html b/demo_app/example_app/templates/meta/hidden_columns.html
similarity index 100%
rename from datatableview/tests/example_project/example_project/example_app/templates/meta/hidden_columns.html
rename to demo_app/example_app/templates/meta/hidden_columns.html
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/meta/model.html b/demo_app/example_app/templates/meta/model.html
similarity index 100%
rename from datatableview/tests/example_project/example_project/example_app/templates/meta/model.html
rename to demo_app/example_app/templates/meta/model.html
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/meta/ordering.html b/demo_app/example_app/templates/meta/ordering.html
similarity index 100%
rename from datatableview/tests/example_project/example_project/example_app/templates/meta/ordering.html
rename to demo_app/example_app/templates/meta/ordering.html
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/meta/page_length.html b/demo_app/example_app/templates/meta/page_length.html
similarity index 100%
rename from datatableview/tests/example_project/example_project/example_app/templates/meta/page_length.html
rename to demo_app/example_app/templates/meta/page_length.html
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/meta/search_fields.html b/demo_app/example_app/templates/meta/search_fields.html
similarity index 100%
rename from datatableview/tests/example_project/example_project/example_app/templates/meta/search_fields.html
rename to demo_app/example_app/templates/meta/search_fields.html
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/meta/structure_template.html b/demo_app/example_app/templates/meta/structure_template.html
similarity index 100%
rename from datatableview/tests/example_project/example_project/example_app/templates/meta/structure_template.html
rename to demo_app/example_app/templates/meta/structure_template.html
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/meta/unsortable_columns.html b/demo_app/example_app/templates/meta/unsortable_columns.html
similarity index 100%
rename from datatableview/tests/example_project/example_project/example_app/templates/meta/unsortable_columns.html
rename to demo_app/example_app/templates/meta/unsortable_columns.html
diff --git a/datatableview/tests/example_project/example_project/example_app/templates/migration_guide.html b/demo_app/example_app/templates/migration_guide.html
similarity index 99%
rename from datatableview/tests/example_project/example_project/example_app/templates/migration_guide.html
rename to demo_app/example_app/templates/migration_guide.html
index 81871a35..3fb5364e 100644
--- a/datatableview/tests/example_project/example_project/example_app/templates/migration_guide.html
+++ b/demo_app/example_app/templates/migration_guide.html
@@ -263,7 +263,7 @@
-
+
Be careful with virtual columns that might cause database queries per-row. That doesn't
scale very well!
diff --git a/demo_app/example_app/templatetags/__init__.py b/demo_app/example_app/templatetags/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/datatableview/tests/example_project/example_project/example_app/templatetags/example_app_tags.py b/demo_app/example_app/templatetags/example_app_tags.py
similarity index 79%
rename from datatableview/tests/example_project/example_project/example_app/templatetags/example_app_tags.py
rename to demo_app/example_app/templatetags/example_app_tags.py
index 3c49d2dd..102ee0eb 100644
--- a/datatableview/tests/example_project/example_project/example_app/templatetags/example_app_tags.py
+++ b/demo_app/example_app/templatetags/example_app_tags.py
@@ -1,4 +1,4 @@
-# -*- encoding: utf-8 -*-
+# -*- coding: utf-8 -*-
from django import template
from django import get_version
@@ -8,6 +8,6 @@
if get_version().split('.') < ['1', '5']:
- @register.simple_tag(name="url")
+ @register.simple_tag(name='url')
def django_1_4_url_simple(url_name):
return reverse(url_name)
diff --git a/datatableview/tests/example_project/example_project/example_app/urls.py b/demo_app/example_app/urls.py
similarity index 76%
rename from datatableview/tests/example_project/example_project/example_app/urls.py
rename to demo_app/example_app/urls.py
index ed2e4e4f..49e95832 100644
--- a/datatableview/tests/example_project/example_project/example_app/urls.py
+++ b/demo_app/example_app/urls.py
@@ -1,4 +1,4 @@
-# -*- encoding: utf-8 -*-
+# -*- coding: utf-8 -*-
import re
@@ -18,14 +18,14 @@
continue
if is_demo:
name = re.sub(r'([a-z]|[A-Z]+)(?=[A-Z])', r'\1-', attr).lower()
- name = name.replace("-datatable-view", "")
+ name = name.replace('-datatable-view', '')
urls.append(url(r'^{name}/$'.format(name=name), View.as_view(), name=name))
urlpatterns = [
- url(r'^$', views.IndexView.as_view(), name="index"),
+ url(r'^$', views.IndexView.as_view(), name='index'),
url(r'^reset/$', views.ResetView.as_view()),
- url(r'^migration-guide/$', views.MigrationGuideView.as_view(), name="migration-guide"),
- url(r'^column-formats/$', views.ValidColumnFormatsView.as_view(), name="column-formats"),
- url(r'^javascript-initialization/$', views.JavascriptInitializationView.as_view(), name="js-init"),
- url(r'^satellite/$', views.SatelliteDatatableView.as_view(), name="satellite"),
+ url(r'^migration-guide/$', views.MigrationGuideView.as_view(), name='migration-guide'),
+ url(r'^column-formats/$', views.ValidColumnFormatsView.as_view(), name='column-formats'),
+ url(r'^javascript-initialization/$', views.JavascriptInitializationView.as_view(), name='js-init'),
+ url(r'^satellite/$', views.SatelliteDatatableView.as_view(), name='satellite'),
] + urls
diff --git a/datatableview/tests/example_project/example_project/example_app/views.py b/demo_app/example_app/views.py
similarity index 96%
rename from datatableview/tests/example_project/example_project/example_app/views.py
rename to demo_app/example_app/views.py
index 4fd5ed47..da8f8608 100644
--- a/datatableview/tests/example_project/example_project/example_app/views.py
+++ b/demo_app/example_app/views.py
@@ -1,4 +1,4 @@
-# -*- encoding: utf-8 -*-
+# -*- coding: utf-8 -*-
from os import sep
import os.path
@@ -24,11 +24,11 @@ def get(self, request, *args, **kwargs):
from django.http import HttpResponse
call_command('syncdb')
call_command('loaddata', 'initial_data.json')
- return HttpResponse("Done.")
+ return HttpResponse('Done.')
class IndexView(TemplateView):
- template_name = "index.html"
+ template_name = 'index.html'
def get_context_data(self, **kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
@@ -56,15 +56,15 @@ def get_context_data(self, **kwargs):
class MigrationGuideView(TemplateView):
- template_name = "migration_guide.html"
+ template_name = 'migration_guide.html'
class JavascriptInitializationView(TemplateView):
- template_name = "javascript_initialization.html"
+ template_name = 'javascript_initialization.html'
class ValidColumnFormatsView(TemplateView):
- template_name = "valid_column_formats.html"
+ template_name = 'valid_column_formats.html'
class DemoMixin(object):
@@ -73,9 +73,9 @@ class DemoMixin(object):
def get_template_names(self):
""" Try the view's snake_case name, or else use default simple template. """
- name = self.__class__.__name__.replace("DatatableView", "")
+ name = self.__class__.__name__.replace('DatatableView', '')
name = re.sub(r'([a-z]|[A-Z]+)(?=[A-Z])', r'\1_', name)
- return ["demos/" + name.lower() + ".html", "example_base.html"]
+ return ['demos/' + name.lower() + '.html', 'example_base.html']
def get_context_data(self, **kwargs):
context = super(DemoMixin, self).get_context_data(**kwargs)
@@ -100,7 +100,7 @@ def get_context_data(self, **kwargs):
alert = True
else:
p.append(line)
- description = "\n\n".join(" ".join(p) for p in paragraphs)
+ description = '\n\n'.join(' '.join(p) for p in paragraphs)
context['description'] = re.sub(r'``(.*?)``', r'\1
', description)
return context
@@ -179,8 +179,8 @@ class ConfigureValuesDatatableObject(DemoMixin, DatatableView):
"""
model = Entry
class datatable_class(ValuesDatatable):
- blog = columns.CompoundColumn("Blog", sources=['blog__id', 'blog__name'])
- publication_date = columns.DateColumn("Publication Date", sources=['pub_date'])
+ blog = columns.CompoundColumn('Blog', sources=['blog__id', 'blog__name'])
+ publication_date = columns.DateColumn('Publication Date', sources=['pub_date'])
class Meta:
model = Entry
@@ -251,7 +251,7 @@ class ConfigureDatatableOptions(DemoMixin, LegacyDatatableView):
datatable_options = {
'columns': [
'id',
- ("Publication Date", 'pub_date'),
+ ('Publication Date', 'pub_date'),
'headline',
],
}
@@ -334,7 +334,7 @@ class datatable_class(Datatable):
class Meta:
columns = ['blog', 'headline', 'pub_date', 'n_comments', 'rating']
labels = {
- 'pub_date': "Publication date",
+ 'pub_date': 'Publication date',
}
implementation = u"""
@@ -407,8 +407,8 @@ class CustomColumnsDatatableView(DemoMixin, DatatableView):
"""
model = Entry
class datatable_class(Datatable):
- blog = columns.TextColumn("Blog", sources=['blog__name'])
- age = columns.TextColumn("Age", sources=None, processor='get_entry_age')
+ blog = columns.TextColumn('Blog', sources=['blog__name'])
+ age = columns.TextColumn('Age', sources=None, processor='get_entry_age')
class Meta:
columns = ['blog', 'headline', 'age']
@@ -455,7 +455,7 @@ class ColumnBackedByMethodDatatableView(DemoMixin, DatatableView):
"""
model = Entry
class datatable_class(Datatable):
- pub_date = columns.DateColumn("Publication date", sources=['get_pub_date'])
+ pub_date = columns.DateColumn('Publication date', sources=['get_pub_date'])
class Meta:
columns = ['blog', 'headline', 'pub_date']
@@ -507,7 +507,7 @@ class ProcessorsDatatableView(DemoMixin, DatatableView):
"""
model = Entry
class datatable_class(Datatable):
- age = columns.TextColumn("Age", sources=['pub_date'], processor='get_entry_age')
+ age = columns.TextColumn('Age', sources=['pub_date'], processor='get_entry_age')
class Meta:
columns = ['blog', 'headline', 'pub_date', 'age']
@@ -516,7 +516,7 @@ class Meta:
}
def format_pub_date(self, instance, **kwargs):
- return instance.pub_date.strftime("%m/%d/%Y")
+ return instance.pub_date.strftime('%m/%d/%Y')
def get_entry_age(self, instance, **kwargs):
return timesince(instance.pub_date)
@@ -599,12 +599,12 @@ class CompoundColumnsDatatableView(DemoMixin, DatatableView):
"""
model = Entry
class datatable_class(Datatable):
- headline_blog = columns.TextColumn("Headline (Blog)", sources=['headline', 'blog__name'],
- processor=helpers.format("{0[0]} ({0[1]})"))
- headline_pub = columns.CompoundColumn("Headline (Published)", sources=[
+ headline_blog = columns.TextColumn('Headline (Blog)', sources=['headline', 'blog__name'],
+ processor=helpers.format('{0[0]} ({0[1]})'))
+ headline_pub = columns.CompoundColumn('Headline (Published)', sources=[
columns.TextColumn(source='headline'),
columns.DateColumn(source='pub_date')
- ], processor=helpers.format("{0[0]} @ {0[1]}"))
+ ], processor=helpers.format('{0[0]} @ {0[1]}'))
class Meta:
columns = ['id', 'headline_blog', 'headline_pub']
@@ -644,17 +644,17 @@ class ManyToManyFieldsDatatableView(DemoMixin, DatatableView):
"""
model = Entry
class datatable_class(Datatable):
- author_names_text = columns.TextColumn("Author Names", sources=['authors__name'], processor='get_author_names')
- author_names_links = columns.TextColumn("Author Links", sources=['authors__name'], processor='get_author_names_as_links')
+ author_names_text = columns.TextColumn('Author Names', sources=['authors__name'], processor='get_author_names')
+ author_names_links = columns.TextColumn('Author Links', sources=['authors__name'], processor='get_author_names_as_links')
class Meta:
columns = ['id', 'headline', 'author_names_text', 'author_names_links']
def get_author_names(self, instance, *args, **kwargs):
- return ", ".join([author.name for author in instance.authors.all()])
+ return ', '.join([author.name for author in instance.authors.all()])
def get_author_names_as_links(self, instance, *args, **kwargs):
- return ", ".join([helpers.link_to_model(author) for author in instance.authors.all()])
+ return ', '.join([helpers.link_to_model(author) for author in instance.authors.all()])
implementation = u"""
class MyDatatable(Datatable):
@@ -713,7 +713,7 @@ def get_column_body_text_data(self, instance, *args, **kwargs):
return instance.body_text[:30]
def get_column_pub_date_data(self, instance, *args, **kwargs):
- return instance.pub_date.strftime("%m/%d/%Y")
+ return instance.pub_date.strftime('%m/%d/%Y')
implementation = u"""
class DefaultCallbackNamesDatatableView(DatatableView):
@@ -827,9 +827,9 @@ class HelpersReferenceDatatableView(DemoMixin, XEditableDatatableView):
"""
model = Entry
class datatable_class(Datatable):
- blog_name = columns.TextColumn("Blog name", sources=['blog__name'], processor=helpers.link_to_model)
- age = columns.TextColumn("Age", sources=['pub_date'], processor=helpers.through_filter(timesince))
- interaction = columns.IntegerColumn("Interaction", sources=['get_interaction_total'], processor=helpers.make_boolean_checkmark)
+ blog_name = columns.TextColumn('Blog name', sources=['blog__name'], processor=helpers.link_to_model)
+ age = columns.TextColumn('Age', sources=['pub_date'], processor=helpers.through_filter(timesince))
+ interaction = columns.IntegerColumn('Interaction', sources=['get_interaction_total'], processor=helpers.make_boolean_checkmark)
class Meta:
columns = ['id', 'blog_name', 'headline', 'body_text', 'pub_date', 'mod_date', 'age',
@@ -840,8 +840,8 @@ class Meta:
'headline': helpers.make_xeditable,
'body_text': helpers.itemgetter(slice(0, 30)),
'pub_date': helpers.format_date('%A, %b %d, %Y'),
- 'n_comments': helpers.format("{0:,}"),
- 'n_pingbacks': helpers.format("{0:,}"),
+ 'n_comments': helpers.format('{0:,}'),
+ 'n_pingbacks': helpers.format('{0:,}'),
}
implementation = u"""
@@ -892,7 +892,7 @@ class Meta:
def get_datatable(self):
datatable = super(PerRequestOptionsDatatableView, self).get_datatable()
- datatable.columns['blog'] = columns.TextColumn("Blog Name", sources=['blog__name'])
+ datatable.columns['blog'] = columns.TextColumn('Blog Name', sources=['blog__name'])
del datatable.columns['id']
return datatable
@@ -989,7 +989,7 @@ class CustomColumnQueriesDatatableView(DemoMixin, DatatableView):
model = Entry
class datatable_class(Datatable):
- headline = HeadlineColumn("Headline", sources=['headline'])
+ headline = HeadlineColumn('Headline', sources=['headline'])
class Meta:
columns = ['id', 'headline']
@@ -1030,12 +1030,12 @@ class ChoicesFieldsDatatableView(DemoMixin, DatatableView):
"""
model = Entry
class datatable_class(Datatable):
- status_display = columns.TextColumn("Status Display", sources=['get_status_display'])
+ status_display = columns.TextColumn('Status Display', sources=['get_status_display'])
class Meta:
columns = ['id', 'headline', 'status', 'status_display', 'is_published']
labels = {
- 'status': "Status Value",
+ 'status': 'Status Value',
}
implementation = u"""
@@ -1224,7 +1224,7 @@ class SatelliteDatatableView(DatatableView):
"""
External view powering the embedded table for ``EmbeddedTableDatatableView``.
"""
- template_name = "blank.html"
+ template_name = 'blank.html'
model = Entry
class datatable_class(Datatable):
class Meta:
@@ -1305,7 +1305,7 @@ class ColReorderDatatableView(DemoMixin, DatatableView):
model = Entry
class datatable_class(Datatable):
- blog = columns.TextColumn("Blog", sources=['blog__name'])
+ blog = columns.TextColumn('Blog', sources=['blog__name'])
class Meta:
columns = ['headline', 'blog']
@@ -1330,7 +1330,7 @@ class MultiFilterDatatableView(DemoMixin, DatatableView):
model = Entry
class datatable_class(Datatable):
- blog = columns.TextColumn("Blog", sources=['blog__name'])
+ blog = columns.TextColumn('Blog', sources=['blog__name'])
class Meta:
columns = ['headline', 'blog']
@@ -1353,7 +1353,7 @@ class SelectRowDatatableView(DemoMixin, DatatableView):
class datatable_class(Datatable):
select_data = columns.CheckBoxSelectColumn()
- blog = columns.TextColumn("Blog", sources=['blog__name'])
+ blog = columns.TextColumn('Blog', sources=['blog__name'])
class Meta:
columns = ['select_data', 'headline', 'blog']
@@ -1383,7 +1383,7 @@ class CustomizedTemplateDatatableView(DemoMixin, DatatableView):
class datatable_class(Datatable):
class Meta:
columns = ['id', 'headline', 'blog', 'pub_date']
- structure_template = "custom_table_template.html"
+ structure_template = 'custom_table_template.html'
implementation = u"""
class MyDatatable(Datatable):
@@ -1432,7 +1432,7 @@ class BootstrapTemplateDatatableView(DemoMixin, DatatableView):
class datatable_class(Datatable):
class Meta:
columns = ['id', 'headline', 'blog', 'pub_date']
- structure_template = "datatableview/bootstrap_structure.html",
+ structure_template = 'datatableview/bootstrap_structure.html',
implementation = u"""
class MyDatatable(Datatable):
@@ -1457,7 +1457,7 @@ class datatable_class(Datatable):
class Meta:
columns = ['id', 'headline', 'blog', 'pub_date']
labels = {
- 'pub_date': "Publication Date",
+ 'pub_date': 'Publication Date',
}
implementation = u"""
@@ -1472,5 +1472,3 @@ class CSSStylingDatatableView(DatatableView):
model = Entry
datatable_class = MyDatatable
"""
-
-
diff --git a/demo_app/manage.py b/demo_app/manage.py
new file mode 100755
index 00000000..07336e21
--- /dev/null
+++ b/demo_app/manage.py
@@ -0,0 +1,22 @@
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+"""Django's command-line utility for administrative tasks."""
+import os
+import sys
+
+
+def main():
+ os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'demo_app.settings')
+ try:
+ from django.core.management import execute_from_command_line
+ except ImportError as exc:
+ raise ImportError(
+ "Couldn't import Django. Are you sure it's installed and "
+ 'available on your PYTHONPATH environment variable? Did you '
+ 'forget to activate a virtual environment?'
+ ) from exc
+ execute_from_command_line(sys.argv)
+
+
+if __name__ == '__main__':
+ main()
diff --git a/demo_app/test_app/__init__.py b/demo_app/test_app/__init__.py
new file mode 100644
index 00000000..e69de29b
diff --git a/datatableview/tests/test_app/fixtures/test_data_legacy.json b/demo_app/test_app/fixtures/test_data.json
similarity index 100%
rename from datatableview/tests/test_app/fixtures/test_data_legacy.json
rename to demo_app/test_app/fixtures/test_data.json
diff --git a/datatableview/tests/test_app/models.py b/demo_app/test_app/models.py
similarity index 73%
rename from datatableview/tests/test_app/models.py
rename to demo_app/test_app/models.py
index 916b8b4b..2948038a 100644
--- a/datatableview/tests/test_app/models.py
+++ b/demo_app/test_app/models.py
@@ -1,4 +1,4 @@
-# -*- encoding: utf-8 -*-
+# -*- coding: utf-8 -*-
from django.db import models
@@ -9,17 +9,14 @@ class ExampleModel(models.Model):
related = models.ForeignKey('RelatedModel', blank=True, null=True, on_delete=models.CASCADE)
relateds = models.ManyToManyField('RelatedM2MModel', blank=True)
- def __unicode__(self):
- return "ExampleModel %d" % (self.pk,)
-
def __str__(self):
- return "ExampleModel %d" % (self.pk,)
+ return 'ExampleModel %d' % (self.pk,)
def __repr__(self):
return "" % (self.pk, self.name,)
def get_absolute_url(self):
- return "#{pk}".format(pk=self.pk)
+ return '#{pk}'.format(pk=self.pk)
def get_negative_pk(self):
return -1 * self.pk
@@ -28,14 +25,11 @@ def get_negative_pk(self):
class RelatedModel(models.Model):
name = models.CharField(max_length=15)
- def __unicode__(self):
- return "RelatedModel %d" % (self.pk,)
-
def __str__(self):
- return "RelatedModel %d" % (self.pk,)
+ return 'RelatedModel %d' % (self.pk,)
def get_absolute_url(self):
- return "#{pk}".format(pk=self.pk)
+ return '#{pk}'.format(pk=self.pk)
class RelatedM2MModel(models.Model):
diff --git a/docs/datatableview/datatables.rst b/docs/datatableview/datatables.rst
index 76224512..0829f2ef 100644
--- a/docs/datatableview/datatables.rst
+++ b/docs/datatableview/datatables.rst
@@ -236,5 +236,5 @@ ValuesLegacyDatatable
:py:attr:`~datatableview.columns.Column.processor` callback. The mapped values may be
direct references to callables, or strings that name a method on the Datatable or view.
- :Example:
+ :Example:
``processors = {'name': 'get_name_data'}``
diff --git a/docs/datatableview/views.rst b/docs/datatableview/views.rst
index 0c3d2025..1cd3e3e5 100644
--- a/docs/datatableview/views.rst
+++ b/docs/datatableview/views.rst
@@ -40,7 +40,7 @@ Use :py:class:`LegacyDatatableView` as your view's base class instead of :py:cla
.. autoattribute:: datatable_class
:annotation: = LegacyDatatable
-
+
The :py:class:`~datatableview.datatables.LegacyDatatable` will help convert the more
extravagant legacy tuple syntaxes into full :py:class:`~datatableview.columns.Column`
instances.
diff --git a/docs/index.rst b/docs/index.rst
index 1711e3c9..c6a04de3 100644
--- a/docs/index.rst
+++ b/docs/index.rst
@@ -23,4 +23,3 @@ Indices and tables
* :ref:`genindex`
* :ref:`modindex`
* :ref:`search`
-
diff --git a/requirements.txt b/requirements.txt
index 9e218e75..fcc7a122 100644
--- a/requirements.txt
+++ b/requirements.txt
@@ -1,2 +1,3 @@
-django>=1.11
-python-dateutil>=2.1
+python-decouple
+python-dateutil
+six
diff --git a/requirements_dev.txt b/requirements_dev.txt
new file mode 100644
index 00000000..e5e56fa5
--- /dev/null
+++ b/requirements_dev.txt
@@ -0,0 +1,10 @@
+psycopg2-binary
+jsonfield2
+python-decouple
+mock
+flake8
+tox
+isort
+coverage
+pre-commit
+coveralls
diff --git a/setup.py b/setup.py
index c5949bca..995224d9 100755
--- a/setup.py
+++ b/setup.py
@@ -1,4 +1,4 @@
-# -*- encoding: utf-8 -*-
+# -*- coding: utf-8 -*-
"""setup.py: Django django-datatables-view"""
from setuptools import setup, find_packages
@@ -7,7 +7,7 @@
long_description = f.read()
setup(name='django-datatable-view',
- version='0.9.0',
+ version='1.0.0',
description='This package is used in conjunction with the jQuery plugin '
'(http://http://datatables.net/), and supports state-saving detection'
' with (http://datatables.net/plug-ins/api). The package consists of '
@@ -18,7 +18,7 @@
author='Autumn Valenta',
author_email='avalenta@pivotalenergysolutions.com',
url='https://github.com/pivotal-energy-solutions/django-datatable-view',
- download_url='https://github.com/pivotal-energy-solutions/django-datatable-view/tarball/django-datatable-view-0.9.0',
+ # download_url='https://github.com/pivotal-energy-solutions/django-datatable-view/tarball/django-datatable-view-0.9.0',
license='Apache License (2.0)',
classifiers=[
'Development Status :: 2 - Pre-Alpha',
@@ -30,8 +30,8 @@
'Programming Language :: Python',
'Topic :: Software Development',
],
- packages=find_packages(exclude=['tests', 'tests.*']),
+ packages=find_packages(),
package_data={'datatableview': ['static/js/*.js', 'templates/datatableview/*.html']},
include_package_data=True,
- install_requires=['django>=1.11', 'python-dateutil>=2.1'],
+ install_requires=['django>=2.1', 'python-dateutil'],
)
diff --git a/tox.ini b/tox.ini
new file mode 100644
index 00000000..5878507e
--- /dev/null
+++ b/tox.ini
@@ -0,0 +1,69 @@
+# Tox (https://tox.readthedocs.io/) is a tool for running tests
+# in multiple virtualenvs. This configuration file will run the
+# test suite on all supported python versions. To use it, "pip install tox"
+# and then run "tox" from this directory.
+
+[tox]
+envlist =
+ {py37}-django{21,22,30}
+ {py38}-django{21,22,30}
+ {py39}-django{22,30,31}
+ {py310}-django{22,30,31}
+ pre-commit
+
+[cleanup]
+commands =
+ find {toxinidir} -type f -name "*.pyc" -delete
+ find {toxinidir} -type d -name "__pycache__" -delete
+ find {toxinidir} -type f -path "*.egg-info*" -delete
+ find {toxinidir} -type d -path "*.egg-info" -delete
+
+[testenv:pre-commit]
+skip_install = true
+deps = pre-commit
+commands =
+ pre-commit run --all-files --show-diff-on-failure
+ {[cleanup]commands}
+
+[testenv]
+passenv = TRAVIS TRAVIS_*
+whitelist_externals =
+ find
+setenv =
+ PYTHONWARNINGS=once::DeprecationWarning
+ GIT_AUTHOR_NAME = "test"
+ GIT_COMMITTER_NAME = "test"
+ GIT_AUTHOR_EMAIL = "test@example.com"
+ GIT_COMMITTER_EMAIL = "test@example.com"
+commands =
+ coverage erase
+ coverage run --source={envsitepackagesdir}/datatableview demo_app/manage.py test --noinput --settings=demo_app.settings_test datatableview.tests
+ coverage report -m
+ pre-commit install
+ {[cleanup]commands}
+deps =
+ django21: Django>=2.1,<2.2
+ django22: Django>=2.2,<2.3
+ django30: Django>=3.0
+ django31: Django>=3.1
+ -rrequirements.txt
+ -rrequirements_dev.txt
+
+[travis]
+python =
+ 3.7: py37
+ 3.8: py38
+ 3.9: py39
+ 3.10: py310
+
+[flake8]
+max-line-length = 120
+max-complexity = 20
+ignore = F403,F405,W504
+exclude =
+ .venv/*
+ demo_app/*
+ */migrations/*
+ */tests/*
+ manage.py
+ setup.py