prevent the importer overwriting primary key fields
[bse.git] / site / cgi-bin / modules / BSE / Importer / Target / Article.pm
index f68781f828d7a036165c2509afe01322109b98fb..edf59ce3ec4feba623c642be33105925e33a791f 100644 (file)
@@ -6,7 +6,7 @@ use BSE::TB::Articles;
 use BSE::TB::Products;
 use BSE::TB::OtherParents;
 
-our $VERSION = "1.012";
+our $VERSION = "1.013";
 
 =head1 NAME
 
@@ -213,6 +213,8 @@ sub row {
     $leaf = $self->find_leaf($leaf_id, $importer);
   }
   if ($leaf) {
+    # make sure id, articleId etc aren't overwritten
+    delete @$entry{$self->primary_key_fields};
     @{$leaf}{keys %$entry} = values %$entry;
     $leaf->mark_modified(actor => $importer->actor);
     $leaf->save;
@@ -613,6 +615,17 @@ sub validate_make_leaf {
   }
 }
 
+=item primary_key_fields
+
+Fields we can't modify (or initialize) since the database generates
+them.
+
+=cut
+
+sub primary_key_fields {
+  qw(id);
+}
+
 1;
 
 =back