diff pkg/models/imports.go @ 3171:c8ded555c2a8

Sections import: Added a sections import. Derived from the stretches import w/o the countries.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Mon, 06 May 2019 16:36:03 +0200
parents eb1d119f253f
children 2ac52d89619e
line wrap: on
line diff
--- a/pkg/models/imports.go	Mon May 06 16:18:41 2019 +0200
+++ b/pkg/models/imports.go	Mon May 06 16:36:03 2019 +0200
@@ -107,6 +107,19 @@
 		Date      Date            `json:"date-info"`
 		Countries UniqueCountries `json:"countries"`
 	}
+
+	SectionImport struct {
+		EmailType
+
+		Name      string  `json:"name"`
+		From      Isrs    `json:"from"`
+		To        Isrs    `json:"to"`
+		Tolerance float32 `json:"tolerance"`
+		ObjNam    string  `json:"objnam"`
+		NObjNam   *string `json:"nobjnam"`
+		Source    string  `json:"source-organization"`
+		Date      Date    `json:"date-info"`
+	}
 )
 
 func (cui *ConfigurableURLImport) MarshalAttributes(attrs common.Attributes) error {
@@ -294,3 +307,69 @@
 	}
 	return nil
 }
+
+func (seci *SectionImport) MarshalAttributes(attrs common.Attributes) error {
+	if err := seci.EmailType.MarshalAttributes(attrs); err != nil {
+		return err
+	}
+	attrs.Set("name", seci.Name)
+	attrs.Set("from", seci.From.String())
+	attrs.Set("to", seci.To.String())
+	attrs.Set("objnam", seci.ObjNam)
+	if seci.NObjNam != nil {
+		attrs.Set("nobjnam", *seci.NObjNam)
+	}
+	attrs.Set("source-organization", seci.Source)
+	attrs.SetDate("date-info", seci.Date.Time)
+
+	return nil
+}
+
+func (seci *SectionImport) UnmarshalAttributes(attrs common.Attributes) error {
+	if err := seci.EmailType.UnmarshalAttributes(attrs); err != nil {
+		return err
+	}
+	name, found := attrs.Get("name")
+	if !found {
+		return errors.New("missing 'name' attribute")
+	}
+	seci.Name = name
+	from, found := attrs.Get("from")
+	if !found {
+		return errors.New("missing 'from' attribute")
+	}
+	f, err := IsrsFromString(from)
+	if err != nil {
+		return err
+	}
+	seci.From = *f
+	to, found := attrs.Get("to")
+	if !found {
+		return errors.New("missing 'to' attribute")
+	}
+	t, err := IsrsFromString(to)
+	if err != nil {
+		return err
+	}
+	seci.To = *t
+	objnam, found := attrs.Get("objnam")
+	if !found {
+		return errors.New("missing 'objnam' attribute")
+	}
+	seci.ObjNam = objnam
+	nobjnam, found := attrs.Get("nobjnam")
+	if found {
+		seci.NObjNam = &nobjnam
+	}
+	source, found := attrs.Get("source-organization")
+	if !found {
+		return errors.New("missing 'source' attribute")
+	}
+	seci.Source = source
+	date, found := attrs.Date("date-info")
+	if !found {
+		return errors.New("missing 'date-info' attribute")
+	}
+	seci.Date = Date{date}
+	return nil
+}