view pkg/controllers/gmimports.go @ 1642:49c04bb64e0a

Import queue: Implemented auto-accept and email sending. TODO: Do actual email sending.
author Sascha L. Teichmann <sascha.teichmann@intevation.de>
date Thu, 20 Dec 2018 13:45:32 +0100
parents dd31be75ce6d
children a0982c38eac0
line wrap: on
line source

// This is Free Software under GNU Affero General Public License v >= 3.0
// without warranty, see README.md and license for details.
//
// SPDX-License-Identifier: AGPL-3.0-or-later
// License-Filename: LICENSES/AGPL-3.0.txt
//
// Copyright (C) 2018 by via donau
//   – Österreichische Wasserstraßen-Gesellschaft mbH
// Software engineering by Intevation GmbH
//
// Author(s):
//  * Raimund Renkert <raimund.renkert@intevation.de>

package controllers

import (
	"database/sql"
	"log"
	"net/http"

	"gemma.intevation.de/gemma/pkg/auth"
	"gemma.intevation.de/gemma/pkg/common"
	"gemma.intevation.de/gemma/pkg/imports"
	"gemma.intevation.de/gemma/pkg/models"
)

func importGaugeMeasurement(
	input interface{},
	req *http.Request,
	conn *sql.Conn,
) (jr JSONResult, err error) {

	bi := input.(*models.GaugeMeasurementImport)

	bn := &imports.GaugeMeasurement{
		URL:      bi.URL,
		Insecure: bi.Insecure,
	}

	var serialized string
	serialized, err = common.ToJSONString(bn)
	if err != nil {
		return
	}

	session, _ := auth.GetSession(req)

	jobID, err := imports.AddJob(
		imports.GMJobKind,
		session.User,
		false, true,
		serialized)

	if err != nil {
		return
	}

	log.Printf("info: added import #%d to queue\n", jobID)

	result := struct {
		ID int64 `json:"id"`
	}{
		ID: jobID,
	}

	jr = JSONResult{
		Code:   http.StatusCreated,
		Result: &result,
	}
	return
}