Skip to content

Commit

Permalink
Merge pull request #376 from davidbgk/dev
Browse files Browse the repository at this point in the history
Merge master to dev
  • Loading branch information
davidbgk committed Mar 10, 2016
2 parents 46e698d + 0dbb712 commit 7139ea1
Show file tree
Hide file tree
Showing 20 changed files with 135 additions and 13 deletions.
3 changes: 3 additions & 0 deletions js/admin.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ import '../less/admin.less';
// Catch all errors
import 'raven';

// ES6 environment
import 'babel-polyfill';

import $ from 'jquery';
import 'bootstrap';

Expand Down
3 changes: 3 additions & 0 deletions js/dashboard.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// ES6 environment
import 'babel-polyfill';

// Catch all errors
import 'raven';

Expand Down
3 changes: 3 additions & 0 deletions js/dataset/display.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
/**
* Dataset display page JS module
*/

// ES6 environment
import 'babel-polyfill';
import $ from 'jquery';
import config from 'config';
import log from 'logger';
Expand Down
3 changes: 3 additions & 0 deletions js/home.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,9 @@ import '../less/home.less';
// Catch all errors
// require('raven');

// ES6 environment
import 'babel-polyfill';

import $ from 'jquery';
import 'bootstrap';

Expand Down
4 changes: 4 additions & 0 deletions js/organization/display.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
/**
* Default JS module
*/

// ES6 environment
import 'babel-polyfill';

import $ from 'jquery';
import log from 'logger';
import Auth from 'auth';
Expand Down
3 changes: 3 additions & 0 deletions js/post/display.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,9 @@
* Post display page JS module
*/

// ES6 environment
import 'babel-polyfill';

import $ from 'jquery';
import log from 'logger';

Expand Down
4 changes: 4 additions & 0 deletions js/reuse/display.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
/**
* Reuse display page JS module
*/

// ES6 environment
import 'babel-polyfill';

import $ from 'jquery';
import log from 'logger';

Expand Down
4 changes: 4 additions & 0 deletions js/search.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
/**
* Common search features
*/

// ES6 environment
import 'babel-polyfill';

import $ from 'jquery';
import log from 'logger';
import 'search/temporal-coverage-facet';
Expand Down
3 changes: 3 additions & 0 deletions js/site.js
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@
*/
require('../less/site.less');

// ES6 environment
import 'babel-polyfill';

// Catch all errors
// require('raven');

Expand Down
3 changes: 3 additions & 0 deletions js/site/map.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// ES6 environment
import 'babel-polyfill';

import $ from 'jquery';
import log from 'logger';
import Map from 'dashboard/map';
Expand Down
3 changes: 3 additions & 0 deletions js/topic/display.js
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
// ES6 environment
import 'babel-polyfill';

import $ from 'jquery';
import 'jQuery.dotdotdot';

Expand Down
4 changes: 4 additions & 0 deletions js/user/display.js
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
/*
* User display page
*/

// ES6 environment
import 'babel-polyfill';

import log from 'logger';
import 'widgets/follow-btn';

Expand Down
5 changes: 2 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
"babel-core": "^6.4.0",
"babel-eslint": "^5.0.0-beta6",
"babel-loader": "^6.2.1",
"babel-plugin-transform-runtime": "^6.4.3",
"babel-preset-es2015": "^6.3.13",
"chai": "^3.4.0",
"chai-jquery": "^2.0.0",
Expand Down Expand Up @@ -64,7 +63,7 @@
"dependencies": {
"Chart.StackedBar.js": "regaddi/Chart.StackedBar.js#1.0.3",
"admin-lte": "^2.3.2",
"babel-runtime": "^5.6.25",
"babel-polyfill": "^6.5.0",
"bootstrap": "^3.3.5",
"bootstrap-datepicker": "^1.5.1",
"bootstrap-daterangepicker": "^2.1.17",
Expand Down Expand Up @@ -96,7 +95,7 @@
"sortablejs": "^1.4.2",
"source-sans-pro": "^2.0.10",
"spin.js": "^2.3.2",
"swagger-client": "^2.1.11",
"swagger-client": "2.1.11",
"swagger-ui": "2.1.4",
"tv4": "^1.2.7",
"typeahead.js": "^0.11.1",
Expand Down
5 changes: 1 addition & 4 deletions udata/core/spatial/tests/test_fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -31,13 +31,10 @@ def test_empty_data(self):
form = FakeForm()
self.assertEqual(form.spatial.zones._value(), '')
self.assertEqual(form.spatial.zones.data, [])
# self.assertEqual(form.spatial.granularity._value(), '')
self.assertEqual(form.spatial.granularity.data, 'other')
self.assertIsNone(form.spatial.geom.data)

self.assertEqual(form.spatial.data, {
'zones': [], 'granularity': 'other', 'geom': None
})
self.assertIsNone(form.spatial.data)

fake = Fake()
form.populate_obj(fake)
Expand Down
14 changes: 11 additions & 3 deletions udata/forms/fields.py
Original file line number Diff line number Diff line change
Expand Up @@ -201,7 +201,7 @@ def __init__(self, form_class, *args, **kwargs):
super(FormField, self).__init__(FormWrapper(form_class),
*args, **kwargs)
self.prefix = '{0}-'.format(self.name)
self.has_data = False
self._formdata = None

def process(self, formdata, data=unset_value):
self._formdata = formdata
Expand All @@ -213,8 +213,6 @@ def validate(self, form, extra_validators=tuple()):
'as it gets errors from the enclosed form.')

# Run normal validation only if there is data for this form
self.has_data = bool(self._formdata)
self.has_data &= any(k.startswith(self.prefix) for k in self._formdata)
if self.has_data:
return self.form.validate()
return True
Expand All @@ -226,6 +224,16 @@ def populate_obj(self, obj, name):
self._obj = self.form_class.model_class()
super(FormField, self).populate_obj(obj, name)

@property
def data(self):
return self.form.data if self.has_data else None

@property
def has_data(self):
return self._formdata and any(
k.startswith(self.prefix) for k in self._formdata
)


def nullable_text(value):
return None if value == 'None' else fields.core.text_type(value)
Expand Down
36 changes: 36 additions & 0 deletions udata/migrations/2016-03-02-fix-resources-checksums.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/*
* Ensure all resources with checksum have a checksum type
*
* Same migration as udata:2016-01-25-fix-resources-checksums.js just optimized.
*
* Needed to reapply because of https://github.com/etalab/udata/pull/328
* not fixing the creation case and data corruption was still happening
* until https://github.com/etalab/udata/pull/371
*/

var datasets = db.dataset.find({
resources: {$elemMatch: {
'checksum.value': {$exists: true},
'checksum.type': {$exists: false}
}}
});

print('Candidates: ' + datasets.count());

var counter = 0;
var count = 0;

datasets.forEach(function(dataset) {
var resources = dataset.resources.map(function(resource) {
if (resource.checksum && resource.checksum.value && !resource.checksum.type) {
resource.checksum.type = 'sha1';
count++;
}
return resource;
});
var result = db.dataset.update({_id: dataset._id},
{$set: {resources: resources}});
counter += result.nModified;
});
print(count, 'resources modified.');
print(counter, 'datasets modified.');
17 changes: 16 additions & 1 deletion udata/tests/dataset/test_dataset_model.py
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@

from mongoengine import post_save

from udata.models import db, Dataset
from udata.models import db, Dataset, Resource

from .. import TestCase, DBTestMixin
from ..factories import (
Expand Down Expand Up @@ -67,6 +67,21 @@ def test_add_resource(self):
self.assertEqual(len(dataset.resources), 2)
self.assertEqual(dataset.resources[0].id, resource.id)

def test_add_resource_without_checksum(self):
user = UserFactory()
dataset = DatasetFactory(owner=user)
resource = ResourceFactory(checksum=None)
expected_signals = post_save, Dataset.after_save, Dataset.on_update

with self.assert_emit(*expected_signals):
dataset.add_resource(ResourceFactory(checksum=None))
self.assertEqual(len(dataset.resources), 1)

with self.assert_emit(*expected_signals):
dataset.add_resource(resource)
self.assertEqual(len(dataset.resources), 2)
self.assertEqual(dataset.resources[0].id, resource.id)

def test_add_resource_missing_checksum_type(self):
user = UserFactory()
dataset = DatasetFactory(owner=user)
Expand Down
13 changes: 12 additions & 1 deletion udata/tests/forms/test_form_field.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@

class Nested(db.EmbeddedDocument):
id = db.AutoUUIDField()
name = db.StringField()
name = db.StringField(required=True)


class Fake(db.Document):
Expand Down Expand Up @@ -116,3 +116,14 @@ def test_update_initial_elements(self):

self.assertEqual(fake.nested.id, initial_id)
self.assertEqual(fake.nested.name, new_name)

def test_create_with_non_submitted_elements(self):
form = self.factory({'name': faker.word()})

form.validate()
self.assertEqual(form.errors, {})

fake = form.save()

self.assertIsNotNone(fake.name)
self.assertIsNone(fake.nested)
17 changes: 16 additions & 1 deletion udata/tests/forms/test_nested_model_list_field.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@


class SubNested(db.EmbeddedDocument):
name = db.StringField()
name = db.StringField(required=True)


class Nested(db.EmbeddedDocument):
Expand Down Expand Up @@ -244,6 +244,21 @@ def test_update_initial_elements(self):
self.assertEqual(nested.name, names[idx])
self.assertIsNotNone(fake.nested[2].id)

def test_non_submitted_subnested(self):
form = self.factory({'nested': [
{'name': faker.name()},
{'name': faker.name(), 'sub': {'name': faker.name()}},
]}, sub=True)

form.validate()
self.assertEqual(form.errors, {})

fake = form.save()

self.assertEqual(len(fake.nested), 2)
self.assertIsNone(fake.nested[0].sub)
self.assertIsNotNone(fake.nested[1].sub)

def test_reorder_initial_elements(self):
fake = Fake.objects.create(nested=[
Nested(name=faker.name()),
Expand Down
1 change: 1 addition & 0 deletions webpack.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -66,6 +66,7 @@ module.exports = {
loaders: {
css: css_loader,
less: less_loader,
js: 'babel'
}
},
babel: {
Expand Down

0 comments on commit 7139ea1

Please sign in to comment.