def create_changeset(changeset_id): """Analyse and create the changeset in the database.""" ch = Analyse(changeset_id) ch.full_analysis() # remove suspicion_reasons ch_dict = ch.get_dict() ch_dict.pop('suspicion_reasons') # remove bbox field if it is not a valid geometry if ch.bbox == 'GEOMETRYCOLLECTION EMPTY': ch_dict.pop('bbox') # save changeset changeset, created = Changeset.objects.update_or_create(id=ch_dict['id'], defaults=ch_dict) if ch.suspicion_reasons: for reason in ch.suspicion_reasons: reason, created = SuspicionReasons.objects.get_or_create( name=reason) reason.changesets.add(changeset) print('{c[id]} created'.format(c=ch_dict)) return changeset
def test_get_dict(): """Test if get_dict function return only the fields that osmcha-django needs to save in the database. """ # An iD changeset ch = Analyse(46286980) ch.full_analysis() assert 'id' in ch.get_dict().keys() assert 'user' in ch.get_dict().keys() assert 'uid' in ch.get_dict().keys() assert 'editor' in ch.get_dict().keys() assert 'bbox' in ch.get_dict().keys() assert 'date' in ch.get_dict().keys() assert 'comment' in ch.get_dict().keys() assert 'source' in ch.get_dict().keys() assert 'imagery_used' in ch.get_dict().keys() assert 'is_suspect' in ch.get_dict().keys() assert 'powerfull_editor' in ch.get_dict().keys() assert 'suspicion_reasons' in ch.get_dict().keys() assert 'create' in ch.get_dict().keys() assert 'modify' in ch.get_dict().keys() assert 'delete' in ch.get_dict().keys() assert len(ch.get_dict().keys()) == 15 # A JOSM changeset ch = Analyse(46315321) ch.full_analysis() assert 'id' in ch.get_dict().keys() assert 'user' in ch.get_dict().keys() assert 'uid' in ch.get_dict().keys() assert 'editor' in ch.get_dict().keys() assert 'bbox' in ch.get_dict().keys() assert 'date' in ch.get_dict().keys() assert 'comment' in ch.get_dict().keys() assert 'source' in ch.get_dict().keys() assert 'imagery_used' in ch.get_dict().keys() assert 'is_suspect' in ch.get_dict().keys() assert 'powerfull_editor' in ch.get_dict().keys() assert 'suspicion_reasons' in ch.get_dict().keys() assert 'create' in ch.get_dict().keys() assert 'modify' in ch.get_dict().keys() assert 'delete' in ch.get_dict().keys() assert len(ch.get_dict().keys()) == 15
def test_get_dict(): """Test if get_dict function return only the fields that osmcha-django needs to save in the database. """ # An iD changeset ch = Analyse(46286980) ch.full_analysis() assert 'id' in ch.get_dict().keys() assert 'user' in ch.get_dict().keys() assert 'uid' in ch.get_dict().keys() assert 'editor' in ch.get_dict().keys() assert 'bbox' in ch.get_dict().keys() assert 'date' in ch.get_dict().keys() assert 'comment' in ch.get_dict().keys() assert 'comments_count' in ch.get_dict().keys() assert 'source' in ch.get_dict().keys() assert 'imagery_used' in ch.get_dict().keys() assert 'is_suspect' in ch.get_dict().keys() assert 'powerfull_editor' in ch.get_dict().keys() assert 'suspicion_reasons' in ch.get_dict().keys() assert 'create' in ch.get_dict().keys() assert 'modify' in ch.get_dict().keys() assert 'delete' in ch.get_dict().keys() assert 'metadata' in ch.get_dict().keys() assert ch.get_dict( )['metadata']['host'] == 'https://www.openstreetmap.org/id' assert len(ch.get_dict().keys()) == 17 # An iD changeset with warnings: ch = Analyse(72783703) ch.full_analysis() assert 'id' in ch.get_dict().keys() assert 'user' in ch.get_dict().keys() assert 'uid' in ch.get_dict().keys() assert 'editor' in ch.get_dict().keys() assert 'bbox' in ch.get_dict().keys() assert 'date' in ch.get_dict().keys() assert 'comment' in ch.get_dict().keys() assert 'comments_count' in ch.get_dict().keys() assert 'source' in ch.get_dict().keys() assert 'imagery_used' in ch.get_dict().keys() assert 'is_suspect' in ch.get_dict().keys() assert 'powerfull_editor' in ch.get_dict().keys() assert 'suspicion_reasons' in ch.get_dict().keys() assert 'create' in ch.get_dict().keys() assert 'modify' in ch.get_dict().keys() assert 'delete' in ch.get_dict().keys() assert 'metadata' in ch.get_dict().keys() assert ch.get_dict( )['metadata']['host'] == 'https://www.openstreetmap.org/edit' assert ch.get_dict()['metadata']['locale'] == 'en-US' assert ch.get_dict()['metadata']['warnings:crossing_ways'] == 1 assert ch.get_dict()['metadata']['changesets_count'] == 5970 assert ch.get_dict()['comments_count'] == 2 assert len(ch.get_dict().keys()) == 17 # A JOSM changeset ch = Analyse(46315321) ch.full_analysis() assert 'id' in ch.get_dict().keys() assert 'user' in ch.get_dict().keys() assert 'uid' in ch.get_dict().keys() assert 'editor' in ch.get_dict().keys() assert 'bbox' in ch.get_dict().keys() assert 'date' in ch.get_dict().keys() assert 'comment' in ch.get_dict().keys() assert 'comments_count' in ch.get_dict().keys() assert 'source' in ch.get_dict().keys() assert 'imagery_used' in ch.get_dict().keys() assert 'is_suspect' in ch.get_dict().keys() assert 'powerfull_editor' in ch.get_dict().keys() assert 'suspicion_reasons' in ch.get_dict().keys() assert 'create' in ch.get_dict().keys() assert 'modify' in ch.get_dict().keys() assert 'delete' in ch.get_dict().keys() assert 'metadata' in ch.get_dict().keys() assert ch.get_dict()['metadata'] == {} assert len(ch.get_dict().keys()) == 17