MCPcopy
hub / github.com/django/django / _save

Method _save

django/contrib/gis/utils/layermapping.py:620–702  ·  view source on GitHub ↗
(feat_range=default_range, num_feat=0, num_saved=0)

Source from the content-addressed store, hash-verified

618 progress_interval = progress
619
620 def _save(feat_range=default_range, num_feat=0, num_saved=0):
621 if feat_range:
622 layer_iter = self.layer[feat_range]
623 else:
624 layer_iter = self.layer
625
626 for feat in layer_iter:
627 num_feat += 1
628 # Getting the keyword arguments
629 try:
630 kwargs = self.feature_kwargs(feat)
631 except LayerMapError as msg:
632 # Something borked the validation
633 if strict:
634 raise
635 elif not silent:
636 stream.write(
637 "Ignoring Feature ID %s because: %s\n" % (feat.fid, msg)
638 )
639 else:
640 # Constructing the model using the keyword args
641 is_update = False
642 if self.unique:
643 # If we want unique models on a particular field,
644 # handle the geometry appropriately.
645 try:
646 # Getting the keyword arguments and retrieving
647 # the unique model.
648 u_kwargs = self.unique_kwargs(kwargs)
649 m = self.model.objects.using(self.using).get(**u_kwargs)
650 is_update = True
651
652 # Getting the geometry (in OGR form), creating
653 # one from the kwargs WKT, adding in additional
654 # geometries, and update the attribute with the
655 # just-updated geometry WKT.
656 geom_value = getattr(m, self.geom_field)
657 if geom_value is None:
658 geom = OGRGeometry(kwargs[self.geom_field])
659 else:
660 geom = geom_value.ogr
661 new = OGRGeometry(kwargs[self.geom_field])
662 for g in new:
663 geom.add(g)
664 setattr(m, self.geom_field, geom.wkt)
665 except ObjectDoesNotExist:
666 # No unique model exists yet, create.
667 m = self.model(**kwargs)
668 else:
669 m = self.model(**kwargs)
670
671 try:
672 # Attempting to save.
673 m.save(using=self.using)
674 num_saved += 1
675 if verbose:
676 stream.write(
677 "%s: %s\n" % ("Updated" if is_update else "Saved", m)

Callers 2

_post_processMethod · 0.45
save_manifestMethod · 0.45

Calls 9

feature_kwargsMethod · 0.95
unique_kwargsMethod · 0.95
OGRGeometryClass · 0.90
writeMethod · 0.45
getMethod · 0.45
usingMethod · 0.45
addMethod · 0.45
modelMethod · 0.45
saveMethod · 0.45

Tested by

no test coverage detected