Handle justified MCQ in admin and sync part
This commit is contained in:
parent
488a032eba
commit
d7553f0392
4 changed files with 59 additions and 25 deletions
|
|
@ -23,6 +23,7 @@ type myTeamHint struct {
|
|||
}
|
||||
type myTeamMCQ struct {
|
||||
Title string `json:"title"`
|
||||
Justify bool `json:"justify,omitempty"`
|
||||
Choices map[int64]string `json:"choices,omitempty"`
|
||||
Solved *time.Time `json:"solved,omitempty"`
|
||||
}
|
||||
|
|
@ -146,6 +147,28 @@ func MyJSONTeam(t *Team, started bool) (interface{}, error) {
|
|||
}
|
||||
}
|
||||
|
||||
// Expose exercice flags
|
||||
|
||||
var justifiedMCQ map[string]bool
|
||||
exercice.Flags = []string{}
|
||||
|
||||
if flags, err := e.GetFlags(); err != nil {
|
||||
return nil, err
|
||||
} else {
|
||||
for _, k := range flags {
|
||||
if k.Label[0] == '%' {
|
||||
justifiedMCQ[k.Label[1:]] = true
|
||||
} else if t == nil {
|
||||
exercice.Flags = append(exercice.Flags, fmt.Sprintf("%x", k.Checksum)+k.Label)
|
||||
} else {
|
||||
exercice.Flags = append(exercice.Flags, k.Label)
|
||||
if PartialValidation {
|
||||
exercice.SolvedMat = append(exercice.SolvedMat, t.HasPartiallySolved(k) != nil)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Expose exercice MCQs
|
||||
|
||||
exercice.MCQs = []myTeamMCQ{}
|
||||
|
|
@ -155,33 +178,18 @@ func MyJSONTeam(t *Team, started bool) (interface{}, error) {
|
|||
} else {
|
||||
for _, mcq := range mcqs {
|
||||
choices := map[int64]string{}
|
||||
justified := false
|
||||
for _, e := range mcq.Entries {
|
||||
choices[e.Id] = e.Label
|
||||
}
|
||||
if t == nil {
|
||||
exercice.MCQs = append(exercice.MCQs, myTeamMCQ{mcq.Title, choices, nil})
|
||||
} else {
|
||||
exercice.MCQs = append(exercice.MCQs, myTeamMCQ{mcq.Title, choices, t.HasPartiallyRespond(mcq)})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Expose exercice flags
|
||||
|
||||
exercice.Flags = []string{}
|
||||
|
||||
if flags, err := e.GetFlags(); err != nil {
|
||||
return nil, err
|
||||
} else {
|
||||
for _, k := range flags {
|
||||
if t == nil {
|
||||
exercice.Flags = append(exercice.Flags, fmt.Sprintf("%x", k.Checksum)+k.Label)
|
||||
} else {
|
||||
exercice.Flags = append(exercice.Flags, k.Label)
|
||||
if PartialValidation {
|
||||
exercice.SolvedMat = append(exercice.SolvedMat, t.HasPartiallySolved(k) != nil)
|
||||
if _, ok := justifiedMCQ[m.Title + "%" + e.Label]; ok {
|
||||
justified = true
|
||||
}
|
||||
}
|
||||
if t == nil {
|
||||
exercice.MCQs = append(exercice.MCQs, myTeamMCQ{mcq.Title, justified, choices, nil})
|
||||
} else {
|
||||
exercice.MCQs = append(exercice.MCQs, myTeamMCQ{mcq.Title, justified, choices, t.HasPartiallyRespond(mcq)})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
Reference in a new issue