Working on participants import

This commit is contained in:
Andrea Fazzi 2020-01-10 12:56:25 +01:00
parent c07bb4ded9
commit 359cca07ed
8 changed files with 1370 additions and 8978 deletions

View file

@ -7,6 +7,10 @@ import (
"github.com/jinzhu/gorm" "github.com/jinzhu/gorm"
) )
var (
categories = []string{"Junior", "Senior"}
)
type Category struct { type Category struct {
gorm.Model gorm.Model

View file

@ -25,8 +25,6 @@ var (
fns map[string]func(map[string]string, http.ResponseWriter, *http.Request) (interface{}, error) fns map[string]func(map[string]string, http.ResponseWriter, *http.Request) (interface{}, error)
currDB *gorm.DB currDB *gorm.DB
store = sessions.NewCookieStore([]byte(config.Config.Keys.CookieStoreKey)) store = sessions.NewCookieStore([]byte(config.Config.Keys.CookieStoreKey))
categories = []string{"Junior", "Senior"}
) )
func init() { func init() {

View file

@ -2,6 +2,8 @@ package orm
import ( import (
"fmt" "fmt"
"log"
"net/http" "net/http"
"strconv" "strconv"
"strings" "strings"
@ -13,6 +15,8 @@ import (
"github.com/jinzhu/gorm" "github.com/jinzhu/gorm"
) )
type ContestIDs []uint
type Participant struct { type Participant struct {
gorm.Model gorm.Model
@ -35,7 +39,7 @@ type Participant struct {
Responses []*Response Responses []*Response
ContestIDs []uint `schema:"contest_ids" gorm:"-"` ContestIDs ContestIDs `schema:"contest_ids" gorm:"-"`
Contests []*Contest `gorm:"many2many:subscriptions"` Contests []*Contest `gorm:"many2many:subscriptions"`
SelectedCategory map[uint]string `gorm:"-"` SelectedCategory map[uint]string `gorm:"-"`
@ -48,6 +52,19 @@ type Participant struct {
AllSchools []*School `gorm:"-"` AllSchools []*School `gorm:"-"`
} }
func (ids *ContestIDs) UnmarshalCSV(csv string) error {
splits := strings.Split(csv, ",")
for _, s := range splits {
id, err := strconv.Atoi(s)
if err != nil {
return err
}
log.Println(id)
*ids = append(*ids, uint(id))
}
return nil
}
func (model *Participant) sanitize(s string) string { func (model *Participant) sanitize(s string) string {
lower := strings.ToLower(s) lower := strings.ToLower(s)
r := strings.NewReplacer("'", "", "-", "", " ", "", "ò", "o", "ì", "i") r := strings.NewReplacer("'", "", "-", "", " ", "", "ò", "o", "ì", "i")
@ -390,7 +407,7 @@ func (model *Participant) Delete(args map[string]string, w http.ResponseWriter,
} }
func CreateParticipant(participant *Participant) (*Participant, error) { func CreateParticipant(participant *Participant) (*Participant, error) {
if err := DB().Where(participant.ContestIDs).Find(&participant.Contests).Error; err != nil { if err := DB().Where([]uint(participant.ContestIDs)).Find(&participant.Contests).Error; err != nil {
return nil, err return nil, err
} }
if err := DB().Create(participant).Error; err != nil { if err := DB().Create(participant).Error; err != nil {

View file

@ -24,8 +24,9 @@ func newImporter(c *client.Client) *importer {
return &importer{ return &importer{
c, c,
map[string]func(*client.Client, string) error{ map[string]func(*client.Client, string) error{
"contests": importContest, "contests": importContest,
"schools": importSchools, "schools": importSchools,
"participants": importParticipants,
}, },
} }
} }
@ -60,6 +61,28 @@ func importSchools(client *client.Client, filename string) error {
} }
func importParticipants(client *client.Client, filename string) error {
var participants []*orm.Participant
data, err := ioutil.ReadFile(filename)
if err != nil {
return err
}
if err := gocsv.Unmarshal(strings.NewReader(string(data)), &participants); err != nil {
panic(err)
}
for _, p := range participants {
id, err := client.Create(p)
if err != nil {
panic(err)
}
log.Println("Create participant with ID", id)
}
return nil
}
func importContest(client *client.Client, filename string) error { func importContest(client *client.Client, filename string) error {
log.Println("Reading contest data from toml file...") log.Println("Reading contest data from toml file...")
var contest *orm.Contest var contest *orm.Contest

View file

@ -1,4 +1,4 @@
name = "Test Contest" name = "JUNIOR Contest"
[[questions]] [[questions]]

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,320 @@
name = "SENIOR Contest"
[[questions]]
text = "Analizzando l'insieme delle entrate annuali di un soggetto economico, definiamo:"
[[questions.answers]]
text = "il suo reddito"
[[questions.answers]]
text = "il suo patrimonio"
[[questions.answers]]
text = "la sua ricchezza complessiva"
[[questions.answers]]
text = "la sua capacità di risparmio"
[[questions]]
text = "Ogni 20 € guadagnati, ne risparmiate 3, quanto ammonta la vostra propensione al consumo?"
[[questions.answers]]
text = "85%"
[[questions.answers]]
text = "75%"
[[questions.answers]]
text = "70%"
[[questions.answers]]
text = "80%"
[[questions]]
text = "Usualmente si individuano quali soggetto economici operanti nel sistema"
[[questions.answers]]
text = "famiglie, imprese, Stato, resto del mondo"
[[questions.answers]]
text = "famiglie, resto del mondo, Stato, banche"
[[questions.answers]]
text = "famiglie, imprese, banche e resto del mondo"
[[questions.answers]]
text = "famiglie, Stato, importazioni e imprese"
[[questions]]
text = "Ipotizzando una propensione pari al 70% in caso di aumento del vostro reddito di 500 €, la vostra spesa aumenterebbe di:"
[[questions.answers]]
text = "350 €"
[[questions.answers]]
text = "300 €"
[[questions.answers]]
text = "250 €"
[[questions.answers]]
text = "200 €"
[[questions]]
text = "Se per i miei investimenti ricevo un interesse, sarò probabilmente un"
[[questions.answers]]
text = "obbligazionista"
[[questions.answers]]
text = "lavoratore salariato"
[[questions.answers]]
text = "azionista"
[[questions.answers]]
text = "proprietario terriero"
[[questions]]
text = "In caso di aumento del prezzo di un bene la quantià offerta dello stesso"
[[questions.answers]]
text = "aumenta"
[[questions.answers]]
text = "diminuisce"
[[questions.answers]]
text = "rimane costante"
[[questions.answers]]
text = "diminusce in misura minore"
[[questions]]
text = "La quantità domandata di un bene da parte del singolo operatore economico dipende, a parità di altre condizioni"
[[questions.answers]]
text = "dall'utilità dell'ultima unità di bene che si sta per acquistare"
[[questions.answers]]
text = "dall'utilità in media del bene acquistato"
[[questions.answers]]
text = "dall'utilità totale fornita da quel tipo di bene"
[[questions.answers]]
text = "nessuna delle risposte indicate"
[[questions]]
text = "Dalla scarsità delle risorse, in contrapposizione alla tendenziale illimitatezza dei bisogni, ne consegue che"
[[questions.answers]]
text = "maggiore è la scarsità di un bene e maggiore diventa la sua utilità e quindi il suo valore"
[[questions.answers]]
text = "maggiore è la scarsità di un bene e maggiore è il suo consumo"
[[questions.answers]]
text = "maggiore è la scarsità di un bene e maggiore diventa la sua utilità e quindi il suo valore"
[[questions.answers]]
text = "maggioe è la scarsità di un bene e maggiore è l'interesse del consumatore"
[[questions]]
text = "A parità di offerta, se la domanda di un bene aumenta, il prezzo di mercato"
[[questions.answers]]
text = "aumenta"
[[questions.answers]]
text = "diminuisce"
[[questions.answers]]
text = "diminuisce per poi tornare al livello precedente"
[[questions.answers]]
text = "rimane invariato"
[[questions]]
text = "Aumentando la produzione, l'incidenza dei costi fissi unitari, ossia dei costi fissi su ciascun elemento prodotto"
[[questions.answers]]
text = "diminuisce"
[[questions.answers]]
text = "rimane fissa"
[[questions.answers]]
text = "aumenta"
[[questions.answers]]
text = "prima aumenta e poi inizia a diminuire"
[[questions]]
text = "Per combattere l'inflazione da costi è opportuno:"
[[questions.answers]]
text = "promuovere accordi sui prezzi delle materie prime con i paesi produttori"
[[questions.answers]]
text = "rimane fissa"
[[questions.answers]]
text = "aumenta"
[[questions.answers]]
text = "prima aumenta e poi inizia a diminuire"
[[questions]]
text = "Le banche svolgono una attività di creazione di moneta, nel senso che"
[[questions.answers]]
text = "concedono prestti agli operatori economici a fronte dei depositati ricevuti"
[[questions.answers]]
text = "raccolgono il risparmio e mettono a disposizione degli strumenti di pagamento come il bancomat"
[[questions.answers]]
text = "emettono moneta avente corso legale"
[[questions.answers]]
text = "emettono carte di credito continuamente ricaricabili"
[[questions]]
text = "Cosa si intende per domanda di moneta?"
[[questions.answers]]
text = "la quantità di moneta richiesta dai soggetti del sistema economico per transazioni, per ragioni speculative o prudenziali o per altri motivi"
[[questions.answers]]
text = "la quantità di moneta che viene richiesta dalle imprese sotto forma di prestiti richiesti al sistema bancario"
[[questions.answers]]
text = "la quantità di moneta richiesta dalla Banca Centrale quando mette in vendita dei titoli per ridurre la moneta in circolazione"
[[questions.answers]]
text = "la quantità di moneta richiesta dalle famiglie per mantenere in forma liquida i loro risparmi"
[[questions]]
text = "Un macchinario di un'impresa costituisce"
[[questions.answers]]
text = "un bene che fa parte del capitale fisso dell'impresa"
[[questions.answers]]
text = "un bene immobile"
[[questions.answers]]
text = "un bene di consumo"
[[questions.answers]]
text = "un bene che fa parte del capitale circolante dell'impresa"
[[questions]]
text = "In un sistema a economia mista"
[[questions.answers]]
text = "imprese e mezzi di produzione appartengono ai privati e allo Stato"
[[questions.answers]]
text = "imprese e mezzi di produzione appartengono ai privati"
[[questions.answers]]
text = "imprese e mezzi di produzione appartengono allo Stato"
[[questions.answers]]
text = "imprese e mezzi di produzione appartengono agli stranieri"
[[questions]]
text = "Quando nel bilancio dello Stato le spese superano le entrate si ha un:"
[[questions.answers]]
text = "deficit"
[[questions.answers]]
text = "utile"
[[questions.answers]]
text = "pareggio"
[[questions.answers]]
text = "avanzo"
[[questions]]
text = "Per il consumatore è preferibile:"
[[questions.answers]]
text = "la concorrenza perfetta"
[[questions.answers]]
text = "il monopolio"
[[questions.answers]]
text = "l'oligopolio"
[[questions.answers]]
text = "tutte e tre le forme di mercato a seconda dei casi"
[[questions]]
text = "L'offerta dipende"
[[questions.answers]]
text = "dal prezzo del prodotto e dai costi di produzione"
[[questions.answers]]
text = "dal prezzo del prodotto"
[[questions.answers]]
text = "dai costi di produzione"
[[questions.answers]]
text = "dall'andamento del mercato"
[[questions]]
text = "Nel monopolio il prezzo è:"
[[questions.answers]]
text = "più alto che in libera concorrenza"
[[questions.answers]]
text = "più basso che in libera concorrenza"
[[questions.answers]]
text = "identico a quello in libera concorrenza"
[[questions.answers]]
text = "variabile"
[[questions]]
text = "La produzione è:"
[[questions.answers]]
text = "l'attività di trasformazione materiale di beni e servizi (input) in altri (output) al fine di accrescerne l'utilità"
[[questions.answers]]
text = "un ciclo economico"
[[questions.answers]]
text = "l'insieme dei beni di produzione"
[[questions.answers]]
text = "il risultato del lavoro dei dipendenti dell'impresa"