Add errors package and improve style
This commit is contained in:
parent
43dd305835
commit
2fb6cda55c
8 changed files with 47 additions and 9 deletions
2
dist/main.bundle.js
vendored
2
dist/main.bundle.js
vendored
File diff suppressed because one or more lines are too long
4
dist/styles.css
vendored
4
dist/styles.css
vendored
|
@ -15443,4 +15443,8 @@ ul.karmen-related-elements {
|
|||
color: white;
|
||||
}
|
||||
|
||||
.uppercase:valid {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
/*# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsImZpbGUiOiJzdHlsZXMuY3NzIiwic291cmNlUm9vdCI6IiJ9*/
|
5
errors/errors.go
Normal file
5
errors/errors.go
Normal file
|
@ -0,0 +1,5 @@
|
|||
package errors
|
||||
|
||||
import "errors"
|
||||
|
||||
var RecordExists = errors.New("Record already exists!")
|
|
@ -6,6 +6,7 @@ import (
|
|||
"net/http"
|
||||
"strings"
|
||||
|
||||
"git.andreafazzi.eu/andrea/oef/errors"
|
||||
"git.andreafazzi.eu/andrea/oef/renderer"
|
||||
"github.com/jinzhu/gorm"
|
||||
)
|
||||
|
@ -38,7 +39,8 @@ func (model *Participant) sanitize(s string) string {
|
|||
}
|
||||
|
||||
func (model *Participant) username() string {
|
||||
return strings.Join([]string{model.sanitize(model.Firstname), model.sanitize(model.Lastname)}, ".")
|
||||
// return strings.Join([]string{model.sanitize(model.Firstname), model.sanitize(model.Lastname)}, ".")
|
||||
return strings.ToUpper(model.FiscalCode)
|
||||
}
|
||||
|
||||
func (model *Participant) GetID() uint { return model.ID }
|
||||
|
@ -48,8 +50,20 @@ func (model *Participant) String() string {
|
|||
}
|
||||
|
||||
func (model *Participant) BeforeSave(tx *gorm.DB) error {
|
||||
users := make([]*User, 0)
|
||||
if err := tx.Where("username = ?", model.FiscalCode).Find(&users).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
if len(users) > 0 {
|
||||
return errors.RecordExists
|
||||
}
|
||||
|
||||
var user User
|
||||
if err := tx.FirstOrCreate(&user, &User{Username: model.username()}).Error; err != nil {
|
||||
if err := tx.FirstOrCreate(&user, &User{
|
||||
Username: model.username(),
|
||||
Role: "participant",
|
||||
}).Error; err != nil {
|
||||
return err
|
||||
}
|
||||
model.UserID = user.ID
|
||||
|
@ -92,6 +106,7 @@ func (model *Participant) Create(args map[string]string, r *http.Request) (inter
|
|||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
participant, err = CreateParticipant(participant)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
@ -192,6 +207,8 @@ func CreateParticipant(participant *Participant) (*Participant, error) {
|
|||
}
|
||||
|
||||
func SaveParticipant(participant interface{}) (interface{}, error) {
|
||||
participant.(*Participant).FiscalCode = strings.ToUpper(participant.(*Participant).FiscalCode)
|
||||
|
||||
if err := DB(). /*.Omit("Something")*/ Save(participant).Error; err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
|
|
@ -54,7 +54,7 @@ var (
|
|||
)
|
||||
|
||||
func username(claims jwt.MapClaims) string {
|
||||
return claims["name"].(string)
|
||||
return claims["username"].(string)
|
||||
}
|
||||
|
||||
func isAdmin(claims jwt.MapClaims) bool {
|
||||
|
|
|
@ -36,6 +36,7 @@ type htmlTemplateData struct {
|
|||
Data interface{}
|
||||
Options url.Values
|
||||
Claims jwt.MapClaims
|
||||
Error error
|
||||
}
|
||||
|
||||
type JsonResponse struct {
|
||||
|
@ -240,12 +241,12 @@ func (rend *HTMLRenderer) writeError(w http.ResponseWriter, r *http.Request, dat
|
|||
|
||||
func (rend *HTMLRenderer) Render(w http.ResponseWriter, r *http.Request, data interface{}, options ...url.Values) {
|
||||
if data != nil && isErrorType(data) {
|
||||
rend.writeError(w, r, &htmlTemplateData{data.(error), nil, nil})
|
||||
rend.writeError(w, r, &htmlTemplateData{data.(error), nil, nil, data.(error)})
|
||||
} else {
|
||||
t, ok := rend.templates[options[0]["tpl_content"][0]]
|
||||
if !ok {
|
||||
err := fmt.Errorf("Template %s not found", options[0]["tpl_content"][0])
|
||||
rend.writeError(w, r, &htmlTemplateData{err, nil, nil})
|
||||
rend.writeError(w, r, &htmlTemplateData{err, nil, nil, err})
|
||||
}
|
||||
|
||||
var claims jwt.MapClaims
|
||||
|
@ -255,9 +256,9 @@ func (rend *HTMLRenderer) Render(w http.ResponseWriter, r *http.Request, data in
|
|||
}
|
||||
|
||||
w.Header().Set("Content-Type", "text/html; charset=utf-8")
|
||||
err := t.ExecuteTemplate(w, options[0]["tpl_layout"][0], &htmlTemplateData{data, options[0], claims})
|
||||
err := t.ExecuteTemplate(w, options[0]["tpl_layout"][0], &htmlTemplateData{data, options[0], claims, nil})
|
||||
if err != nil {
|
||||
rend.writeError(w, r, &htmlTemplateData{err, nil, nil})
|
||||
rend.writeError(w, r, &htmlTemplateData{err, nil, nil, err})
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -93,3 +93,7 @@ ul.karmen-related-elements {
|
|||
background-color: black;
|
||||
color: white;
|
||||
}
|
||||
|
||||
.uppercase:valid {
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
|
|
@ -30,7 +30,14 @@
|
|||
</div>
|
||||
</div>
|
||||
|
||||
{{$options := ` { name: "FiscalCode",id: "participant_fiscalcode",label: "Codice fiscale del partecipante",placeholder: "Inserire il codice fiscale",type: "text",required: "true"} `}}
|
||||
{{$options := `
|
||||
name: "FiscalCode"
|
||||
id: "participant_fiscalcode"
|
||||
label: "Codice fiscale del partecipante"
|
||||
placeholder: "Inserire il codice fiscale"
|
||||
type: "text"
|
||||
inputClass: "form-control uppercase"
|
||||
required: "true" `}}
|
||||
{{template "input" dict "options" ($options|yaml) "value" (.Data|field "FiscalCode") "update" $update}}
|
||||
|
||||
{{$options := ` { name: "contest_ids", id: "contest_ids", label: "Gare a cui il partecipante è iscritto", title: "Seleziona le gare", multiple: "true"}`}}
|
||||
|
|
Loading…
Reference in a new issue