Exemplo n.º 1
0
 def update_what3words(self, user, changeset):
     from utils import get_what_3_words
     what3words = get_what_3_words(self.geom)
     if what3words != '':
         self.set_values({'what3words': what3words}, user, changeset)
Exemplo n.º 2
0
    def save_localities(self):
        from utils import get_what_3_words
        """
        Save every locality in the parsed_data dictionary
        """

        # generate a new changeset id
        tmp_changeset = Changeset.objects.create(social_user=self.user)

        for gen_upstream_id, values in self.parsed_data.iteritems():
            row_uuid = values['uuid']
            loc, _created = self._find_locality(row_uuid, gen_upstream_id)

            if _created:

                loc.changeset = tmp_changeset
                # change date created
                date_created = values['date_created']
                try:
                    if date_created:
                        loc.changeset = Changeset.objects.create(social_user=self.user)
                        loc.changeset.created = parse_datetime(date_created)
                        loc.changeset.save()
                except IntegrityError:
                    pass

                loc.domain = self.domain
                loc.uuid = row_uuid or uuid.uuid4().hex  # gen new uuid if None
                loc.upstream_id = gen_upstream_id
                loc.name = values['name']
                loc.source = values['source']

                loc.geom = Point(*values['geom'])
                # save Locality
                loc.save()
                LOG.info('Created %s (%s)', loc.uuid, loc.id)

                # save values for Locality
                # get what3word
                what3words = get_what_3_words(loc.geom)
                if what3words != '':
                    values['values']['what3words'] = what3words
                loc.set_values(values['values'], social_user=self.user, changeset=tmp_changeset)

                self.report['created'] += 1
            else:
                # check location duplication

                # apply mode
                loc.changeset = tmp_changeset
                # change date created
                date_created = values['date_created']
                try:
                    if date_created:
                        loc.changeset.created = parse_datetime(date_created)
                        loc.changeset.save()
                except IntegrityError:
                    pass

                loc.geom = Point(*values['geom'])
                loc.name = values['name']
                loc.source = values['source']

                loc.save()
                LOG.info('Updated %s (%s)', loc.uuid, loc.id)
                if self.mode == 1:
                    # replace
                    # delete old value
                    old_value = loc.repr_dict()['values']
                    for key in old_value.keys():
                        old_value[key] = ''
                    new_value = values['values']

                    merged_value = old_value.copy()
                    merged_value.update(new_value)

                    loc.set_values(merged_value, social_user=self.user, changeset=tmp_changeset)

                elif self.mode == 2:
                    # update
                    # merged old and new value
                    # set merged value
                    old_value = loc.repr_dict()['values']
                    new_value = values['values']
                    merged_value = old_value.copy()
                    merged_value.update(new_value)
                    loc.set_values(merged_value, social_user=self.user, changeset=tmp_changeset)
                else:
                    loc.set_values(
                        values['values'], social_user=self.user, changeset=tmp_changeset
                    )

                self.report['modified'] += 1
Exemplo n.º 3
0
    def save_localities(self):
        from utils import get_what_3_words
        """
        Save every locality in the parsed_data dictionary
        """

        # generate a new changeset id
        tmp_changeset = Changeset.objects.create(social_user=self.user)

        for gen_upstream_id, values in self.parsed_data.iteritems():
            row_uuid = values['uuid']
            loc, _created = self._find_locality(row_uuid, gen_upstream_id)

            if _created:

                loc.changeset = tmp_changeset
                # change date created
                date_created = values['date_created']
                try:
                    if date_created:
                        loc.changeset = Changeset.objects.create(
                            social_user=self.user)
                        loc.changeset.created = parse_datetime(date_created)
                        loc.changeset.save()
                except IntegrityError:
                    pass

                loc.domain = self.domain
                loc.uuid = row_uuid or uuid.uuid4().hex  # gen new uuid if None
                loc.upstream_id = gen_upstream_id
                loc.name = values['name']
                loc.source = values['source']

                loc.geom = Point(*values['geom'])
                # save Locality
                loc.save()
                LOG.info('Created %s (%s)', loc.uuid, loc.id)

                # save values for Locality
                # get what3word
                what3words = get_what_3_words(loc.geom)
                if what3words != "":
                    values['values']['what3words'] = what3words
                loc.set_values(values['values'],
                               social_user=self.user,
                               changeset=tmp_changeset)

                self.report['created'] += 1
            else:
                # check location duplication

                # apply mode
                loc.changeset = tmp_changeset
                # change date created
                date_created = values['date_created']
                try:
                    if date_created:
                        loc.changeset.created = parse_datetime(date_created)
                        loc.changeset.save()
                except IntegrityError:
                    pass

                loc.geom = Point(*values['geom'])
                loc.name = values['name']
                loc.source = values['source']

                loc.save()
                LOG.info('Updated %s (%s)', loc.uuid, loc.id)
                if self.mode == 1:
                    # replace
                    # delete old value
                    old_value = loc.repr_dict()['values']
                    for key in old_value.keys():
                        old_value[key] = ''
                    new_value = values['values']

                    merged_value = old_value.copy()
                    merged_value.update(new_value)

                    loc.set_values(merged_value,
                                   social_user=self.user,
                                   changeset=tmp_changeset)

                elif self.mode == 2:
                    # update
                    # merged old and new value
                    # set merged value
                    old_value = loc.repr_dict()['values']
                    new_value = values['values']
                    merged_value = old_value.copy()
                    merged_value.update(new_value)
                    loc.set_values(merged_value,
                                   social_user=self.user,
                                   changeset=tmp_changeset)
                else:
                    loc.set_values(values['values'],
                                   social_user=self.user,
                                   changeset=tmp_changeset)

                self.report['modified'] += 1
Exemplo n.º 4
0
 def update_what3words(self, user, changeset):
     from utils import get_what_3_words
     what3words = get_what_3_words(self.geom)
     if what3words != '':
         self.set_values({'what3words': what3words}, user, changeset)