Skip to content

Commit

Permalink
Merge pull request #72 from valdergallo/django_19_support
Browse files Browse the repository at this point in the history
Django 19 support
  • Loading branch information
valdergallo committed Dec 11, 2015
2 parents 5d993c9 + dc3fb92 commit 96af8ce
Show file tree
Hide file tree
Showing 31 changed files with 344 additions and 176 deletions.
3 changes: 1 addition & 2 deletions .coveragerc
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
[run]
source = data_importer
omit = */migrations/*

omit = */migrations/*, */tests/*

[report]
# Regexes for lines to exclude from consideration
Expand Down
9 changes: 9 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,7 +1,10 @@
.DS_Store
*.c
*.pyo
dist/*
example/media/*
.eggs/
.vagrant
*.pyc
.coverage
.tox/*
Expand All @@ -11,3 +14,9 @@ docs/_build/*
/media
*.zip
README.rst
*.sqlite
.cache/*
htmlcov/*
test.txt
pytestdebug.log
build/*
4 changes: 3 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,11 @@ python:
before_install:
- sudo apt-get install -y libxml2-dev libxslt-dev

script: python example/manage.py test data_importer -v 2 --with-coverage
script: "py.test ."

env:
- DJANGO=1.4
- DJANGO=1.5
- DJANGO=1.6
- DJANGO=1.7

Expand Down
6 changes: 3 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,13 @@ help:


setup:
pip install -r example/requirements.txt
pip install -r example/requirements-dev.txt

test:
python example/manage.py test data_importer -v 2
py.test

coverage:
python example/manage.py test data_importer -v 2 --with-coverage
py.test --cov=data_importer --cov-report html

send_package:
python setup.py register sdist upload
Expand Down
97 changes: 97 additions & 0 deletions Vagrantfile
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
# -*- mode: ruby -*-
# vi: set ft=ruby :

# All Vagrant configuration is done below. The "2" in Vagrant.configure
# configures the configuration version (we support older styles for
# backwards compatibility). Please don't change it unless you know what
# you're doing.
Vagrant.configure(2) do |config|

# proxy config
if Vagrant.has_plugin?("vagrant-proxyconf")
config.proxy.http = "http://87.254.212.121:8080"
config.proxy.https = "http://87.254.212.121:8080"
config.proxy.no_proxy = "localhost,127.0.0.1"
end

# The most common configuration options are documented and commented below.
# For a complete reference, please see the online documentation at
# https://docs.vagrantup.com.

# Every Vagrant development environment requires a box. You can search for
# boxes at https://atlas.hashicorp.com/search.
config.vm.box = "ubuntu/trusty64"

# Disable automatic box update checking. If you disable this, then
# boxes will only be checked for updates when the user runs
# `vagrant box outdated`. This is not recommended.
# config.vm.box_check_update = false

# Create a forwarded port mapping which allows access to a specific port
# within the machine from a port on the host machine. In the example below,
# accessing "localhost:8080" will access port 80 on the guest machine.
config.vm.network "forwarded_port", guest: 8000, host: 8000
config.vm.network "forwarded_port", guest: 8010, host: 8010

# Create a private network, which allows host-only access to the machine
# using a specific IP.
# config.vm.network "private_network", ip: "192.168.33.10"

# Create a public network, which generally matched to bridged network.
# Bridged networks make the machine appear as another physical device on
# your network.
# config.vm.network "public_network"

# Share an additional folder to the guest VM. The first argument is
# the path on the host to the actual folder. The second argument is
# the path on the guest to mount the folder. And the optional third
# argument is a set of non-required options.
# config.vm.synced_folder "../data", "/vagrant_data"

# Provider-specific configuration so you can fine-tune various
# backing providers for Vagrant. These expose provider-specific options.
# Example for VirtualBox:
#
# config.vm.provider "virtualbox" do |vb|
# # Display the VirtualBox GUI when booting the machine
# vb.gui = true
#
# # Customize the amount of memory on the VM:
# vb.memory = "1024"
# end
#
# View the documentation for the provider you are using for more
# information on available options.

# Define a Vagrant Push strategy for pushing to Atlas. Other push strategies
# such as FTP and Heroku are also available. See the documentation at
# https://docs.vagrantup.com/v2/push/atlas.html for more information.
# config.push.define "atlas" do |push|
# push.app = "YOUR_ATLAS_USERNAME/YOUR_APPLICATION_NAME"
# end

# Enable provisioning with a shell script. Additional provisioners such as
# Puppet, Chef, Ansible, Salt, and Docker are also available. Please see the
# documentation for more information about their specific syntax and use.
config.vm.provision "shell", inline: <<-SHELL
sudo apt-get update -y
sudo apt-get install -y python-setuptools
sudo apt-get install -y python-dev
sudo apt-get install -y build-essential
sudo apt-get install -y git
sudo apt-get install -y sqlite
sudo apt-get install -y vim
sudo apt-get install -y pandoc
sudo easy_install virtualenv
sudo easy_install pip
sudo easy_install virtualenvwrapper
# config default programs
wget -O /home/vagrant/.vimrc https://gist.githubusercontent.com/valdergallo/2979412/raw/84f99d85dcc7d8 9d38cb79ad58e1a08a99db58ad/vimrc
wget -O /home/vagrant/.screenrc https://gist.githubusercontent.com/valdergallo/2979409/raw/59d3e9c14d417977bed5071c6226d55acf43cec6/screenrc
wget -O /home/vagrant/.gitconfig https://gist.githubusercontent.com/valdergallo/3427676/raw/da8224e818d12fdbaa366747b92a02b25f2fa70d/.gitconfig
mkdir /home/vagrant/.vim
source /usr/local/bin/virtualenvwrapper.sh
echo "source /usr/local/bin/virtualenvwrapper.sh " >> /home/vagrant/.bashrc
ln -s /vagrant work_home
SHELL
end
10 changes: 5 additions & 5 deletions data_importer/importers/base.py
Original file line number Diff line number Diff line change
Expand Up @@ -224,15 +224,15 @@ def process_row(self, row, values):
return (row, values)

def get_error_message(self, error, row=None, error_type=None):
messages = error
messages = ''

if not error_type:
error_type = u"%s" % type(error).__name__

if hasattr(error, 'message'):
if error.message:
messages = u'%s' % error.message
elif hasattr(error, 'messages'):
if hasattr(error, 'message') and error.message:
messages = u'%s' % error.message

if hasattr(error, 'messages') and not messages:
if error.messages:
messages = u','.join(error.messages)

Expand Down
70 changes: 33 additions & 37 deletions data_importer/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,38 +1,34 @@
# -*- coding: utf-8 -*-
import datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models


class Migration(SchemaMigration):

def forwards(self, orm):
# Adding model 'FileHistory'
db.create_table(u'data_importer_filehistory', (
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('created_at', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
('updated_at', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
('active', self.gf('django.db.models.fields.BooleanField')(default=True, db_index=True)),
('content', self.gf('django.db.models.fields.files.FileField')(max_length=100)),
))
db.send_create_signal(u'data_importer', ['FileHistory'])


def backwards(self, orm):
# Deleting model 'FileHistory'
db.delete_table(u'data_importer_filehistory')


models = {
u'data_importer.filehistory': {
'Meta': {'object_name': 'FileHistory'},
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}),
'content': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
}
}

complete_apps = ['data_importer']
# Generated by Django 1.9 on 2015-12-11 11:55
from __future__ import unicode_literals

import data_importer.models
from django.conf import settings
from django.db import migrations, models
import django.db.models.deletion


class Migration(migrations.Migration):

initial = True

operations = [
migrations.CreateModel(
name='FileHistory',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('created_at', models.DateTimeField(auto_now_add=True)),
('updated_at', models.DateTimeField(auto_now=True)),
('active', models.BooleanField(db_index=True, default=True)),
('file_upload', models.FileField(upload_to=data_importer.models.get_random_filename)),
('is_task', models.BooleanField(default=0)),
('status', models.IntegerField(choices=[(1, b'Imported'), (2, b'Waiting'), (3, b'Cancelled'), (-1, b'Error')], default=1)),
('object_id', models.PositiveIntegerField(blank=True, null=True)),
('content_type', models.ForeignKey(blank=True, null=True, on_delete=django.db.models.deletion.CASCADE, to='contenttypes.ContentType')),
('owner', models.ForeignKey(null=True, on_delete=django.db.models.deletion.CASCADE, to=settings.AUTH_USER_MODEL)),
],
options={
'verbose_name_plural': 'File Histories',
},
),
]
13 changes: 11 additions & 2 deletions data_importer/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -7,11 +7,20 @@
import zipfile
from datetime import date
from uuid import uuid4
from django.core.servers.basehttp import FileWrapper

try:
from django.core.servers.basehttp import FileWrapper
except ImportError:
from wsgiref.util import FileWrapper

from django.http import HttpResponse
from django.conf import settings
from django.contrib.contenttypes.models import ContentType

# port settings.AUTH_USER_MODEL
# from django.contrib.auth import get_user_model
User = settings.AUTH_USER_MODEL

try:
from django.contrib.contenttypes.fields import GenericForeignKey
except ImportError:
Expand Down Expand Up @@ -44,7 +53,7 @@ class FileHistory(models.Model):
updated_at = models.DateTimeField(auto_now=True)
active = models.BooleanField(default=True, db_index=True)
file_upload = models.FileField(upload_to=get_random_filename)
owner = models.ForeignKey(settings.AUTH_USER_MODEL, null=True)
owner = models.ForeignKey(User, null=True)
is_task = models.BooleanField(default=DATA_IMPORTER_TASK)
status = models.IntegerField(choices=CELERY_STATUS, default=1)

Expand Down
45 changes: 0 additions & 45 deletions data_importer/models_test.py

This file was deleted.

38 changes: 38 additions & 0 deletions data_importer/south_migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
# -*- coding: utf-8 -*-
import datetime
from south.db import db
from south.v2 import SchemaMigration
from django.db import models


class Migration(SchemaMigration):

def forwards(self, orm):
# Adding model 'FileHistory'
db.create_table(u'data_importer_filehistory', (
(u'id', self.gf('django.db.models.fields.AutoField')(primary_key=True)),
('created_at', self.gf('django.db.models.fields.DateTimeField')(auto_now_add=True, blank=True)),
('updated_at', self.gf('django.db.models.fields.DateTimeField')(auto_now=True, blank=True)),
('active', self.gf('django.db.models.fields.BooleanField')(default=True, db_index=True)),
('content', self.gf('django.db.models.fields.files.FileField')(max_length=100)),
))
db.send_create_signal(u'data_importer', ['FileHistory'])


def backwards(self, orm):
# Deleting model 'FileHistory'
db.delete_table(u'data_importer_filehistory')


models = {
u'data_importer.filehistory': {
'Meta': {'object_name': 'FileHistory'},
'active': ('django.db.models.fields.BooleanField', [], {'default': 'True', 'db_index': 'True'}),
'content': ('django.db.models.fields.files.FileField', [], {'max_length': '100'}),
'created_at': ('django.db.models.fields.DateTimeField', [], {'auto_now_add': 'True', 'blank': 'True'}),
u'id': ('django.db.models.fields.AutoField', [], {'primary_key': 'True'}),
'updated_at': ('django.db.models.fields.DateTimeField', [], {'auto_now': 'True', 'blank': 'True'})
}
}

complete_apps = ['data_importer']
Empty file.
1 change: 1 addition & 0 deletions data_importer/tests/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
# python
10 changes: 5 additions & 5 deletions data_importer/tests/test_base_mode.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@
from data_importer.importers import CSVImporter
import os
from django.core.files import File as DjangoFile
from data_importer.models_test import Person
from data_importer.models_test import Mercado
from data_importer.models_test import PersonFile
from data_importer.models_test import Invoice
from example.models import Person
from example.models import Mercado
from example.models import PersonFile
from example.models import Invoice
import django


Expand Down Expand Up @@ -137,7 +137,7 @@ def test_values_is_valid(self):

def test_errors_values(self):
self.importer.is_valid()
if django.VERSION < (1, 4):
if float(django.get_version()) < 1.4:
error = [(1, 'ValidationError', u'Field (price) This value must be a float.')]
else:
error = [(1, 'ValidationError', u'Field (price) 23,98 value must be a float.')]
Expand Down

0 comments on commit 96af8ce

Please sign in to comment.