Add export_credentials script

This commit is contained in:
Andrea Fazzi 2021-11-10 05:45:53 +01:00
parent f72b65409b
commit cb841a8b01
3 changed files with 80 additions and 1 deletions

5
scripts/export_credentials/.gitignore vendored Normal file
View file

@ -0,0 +1,5 @@
test_credentials
*.csv
*.xlsx
export_credentials

View file

@ -0,0 +1,55 @@
package main
import (
"flag"
"log"
"os"
"git.andreafazzi.eu/andrea/oef/client"
"git.andreafazzi.eu/andrea/oef/orm"
"github.com/gocarina/gocsv"
)
type Credential struct {
ID uint
Username string
Password string
}
func main() {
username := flag.String("username", "admin", "Username")
password := flag.String("password", "admin", "Password")
output := flag.String("output", "rank.csv", "Output filename")
flag.Parse()
client, err := client.Dial(flag.Arg(0), *username, *password)
if err != nil {
panic(err)
}
users := make([]*orm.User, 0)
credentials := make([]*Credential, 0)
log.Println("Get all users...")
err = client.ReadAll(&users)
if err != nil {
panic(err)
}
for _, user := range users {
if user.Role == "participant" {
credentials = append(credentials, &Credential{user.ID, user.Username, user.Password})
}
}
f, err := os.Create(*output)
if err != nil {
panic(err)
}
defer f.Close()
gocsv.MarshalFile(credentials, f)
}

View file

@ -78,6 +78,7 @@ func main() {
password := flag.String("password", "admin", "Password")
output := flag.String("output", "rank.csv", "Output filename")
contestId := flag.Int("id", 0, "Contest ID")
all := flag.Bool("all", false, "Rank all participants")
flag.Parse()
@ -119,7 +120,7 @@ func main() {
panic(err)
}
if r.Score > 0 && r.Duration > 0 {
if r.Score > 0 && r.Duration > 0 && !*all {
school, err := findSchool(schools, r.Participant.SchoolID)
if err != nil {
panic(err)
@ -136,6 +137,24 @@ func main() {
Duration: uint(r.Duration / time.Second),
},
)
} else {
school, err := findSchool(schools, r.Participant.SchoolID)
if err != nil {
panic(err)
}
csvResponses = append(
csvResponses,
&Response{
Firstname: r.Participant.Firstname,
Lastname: r.Participant.Lastname,
FiscalCode: r.Participant.FiscalCode,
School: school.String(),
Region: school.Region.String(),
Score: r.Score,
Duration: uint(r.Duration / time.Second),
},
)
}
}