diff --git a/.travis.yml b/.travis.yml index 6fe7fed..a6b559d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,11 +1,14 @@ language: python python: + - "2.6" - "2.7" + - "3.3" env: - DJANGO=1.5 - DJANGO=1.6 install: - pip install -r dev_requirements.txt --use-mirrors + - python setup.py install - pip install -q Django==$DJANGO --use-mirrors script: - coverage run --source=djqscsv test_app/manage.py test djqscsv_tests diff --git a/djqscsv/djqscsv.py b/djqscsv/djqscsv.py index ae6ada7..7c4563f 100644 --- a/djqscsv/djqscsv.py +++ b/djqscsv/djqscsv.py @@ -13,6 +13,8 @@ from django.db.models.query import ValuesQuerySet +import six + """ A simple python package for turning django models into csvs """ @@ -78,7 +80,10 @@ def write_csv(queryset, file_obj, field_header_map=None, # merge the custom field headers into the verbose/raw defaults, if provided _field_header_map = field_header_map or {} - merged_header_map = dict(name_map.items() + _field_header_map.items()) + merged_header_map = dict(list(name_map.items()) + list(_field_header_map.items())) + # try this later + # merged_header_map = name_map.copy() + # merged_header_map.update(_field_header_map) writer = csv.DictWriter(file_obj, field_names) writer.writerow(merged_header_map) @@ -126,7 +131,7 @@ def _sanitize_value(value): return localize(value) obj = {} - for key, val in record.iteritems(): + for key, val in six.iteritems(record): if val: obj[_sanitize_value(key)] = _sanitize_value(val) diff --git a/requirements.txt b/requirements.txt index f61efdb..3e1a4cc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1 +1,2 @@ django>=1.5 +six==1.5.2 diff --git a/setup.py b/setup.py index 46bc776..ae90c6e 100644 --- a/setup.py +++ b/setup.py @@ -18,5 +18,6 @@ "Framework :: Django", "License :: OSI Approved :: GNU General Public License (GPL)" ], - install_requires=['django>=1.5'], + install_requires=['django>=1.5', + 'six==1.5'], ) diff --git a/test_app/djqscsv_tests/tests.py b/test_app/djqscsv_tests/tests.py index 51f2aa0..c67c0a0 100644 --- a/test_app/djqscsv_tests/tests.py +++ b/test_app/djqscsv_tests/tests.py @@ -5,11 +5,17 @@ import csv -from StringIO import StringIO +from .context import djqscsv -from context import djqscsv +from .models import Person -from models import Person +import six + +if six.PY3: + from functools import filter + from io import StringIO +else: + from StringIO import StringIO class ValidateCleanFilenameTests(TestCase):