diff --git a/db/migrations/20140524160241_CreateEventSettings.sql b/db/migrations/20140524160241_CreateEventSettings.sql index f2de4b6..5dfa342 100644 --- a/db/migrations/20140524160241_CreateEventSettings.sql +++ b/db/migrations/20140524160241_CreateEventSettings.sql @@ -22,7 +22,6 @@ CREATE TABLE event_settings ( switchpassword VARCHAR(255), bandwidthmonitoringenabled bool, tbadownloadenabled bool, - tbaawardsdownloadenabled bool, adminpassword VARCHAR(255), readerpassword VARCHAR(255) ); diff --git a/event_settings.go b/event_settings.go index 41fd3c4..0f8c482 100644 --- a/event_settings.go +++ b/event_settings.go @@ -14,7 +14,6 @@ type EventSettings struct { SelectionRound2Order string SelectionRound3Order string TBADownloadEnabled bool - TBAAwardsDownloadEnabled bool RedGoalLightsAddress string BlueGoalLightsAddress string TbaPublishingEnabled bool @@ -46,7 +45,6 @@ func (database *Database) GetEventSettings() (*EventSettings, error) { eventSettings.SelectionRound2Order = "L" eventSettings.SelectionRound3Order = "" eventSettings.TBADownloadEnabled = true - eventSettings.TBAAwardsDownloadEnabled = true err = database.eventSettingsMap.Insert(eventSettings) if err != nil { return nil, err diff --git a/event_settings_test.go b/event_settings_test.go index 65f89c8..cff2b96 100644 --- a/event_settings_test.go +++ b/event_settings_test.go @@ -19,7 +19,7 @@ func TestEventSettingsReadWrite(t *testing.T) { assert.Nil(t, err) assert.Equal(t, EventSettings{Id: 0, Name: "Untitled Event", Code: "UE", DisplayBackgroundColor: "#00ff00", NumElimAlliances: 8, SelectionRound2Order: "L", SelectionRound3Order: "", - TBADownloadEnabled: true, TBAAwardsDownloadEnabled: true}, *eventSettings) + TBADownloadEnabled: true}, *eventSettings) eventSettings.Name = "Chezy Champs" eventSettings.Code = "cc" diff --git a/setup_settings.go b/setup_settings.go index 4a29843..bcb62c2 100644 --- a/setup_settings.go +++ b/setup_settings.go @@ -51,7 +51,6 @@ func SettingsPostHandler(w http.ResponseWriter, r *http.Request) { eventSettings.SelectionRound2Order = r.PostFormValue("selectionRound2Order") eventSettings.SelectionRound3Order = r.PostFormValue("selectionRound3Order") eventSettings.TBADownloadEnabled = r.PostFormValue("TBADownloadEnabled") == "on" - eventSettings.TBAAwardsDownloadEnabled = r.PostFormValue("TBAAwardsDownloadEnabled") == "on" eventSettings.RedGoalLightsAddress = r.PostFormValue("redGoalLightsAddress") eventSettings.BlueGoalLightsAddress = r.PostFormValue("blueGoalLightsAddress") eventSettings.TbaPublishingEnabled = r.PostFormValue("tbaPublishingEnabled") == "on" diff --git a/setup_teams.go b/setup_teams.go index 0c5a0c8..8f16713 100644 --- a/setup_teams.go +++ b/setup_teams.go @@ -275,12 +275,9 @@ func getOfficialTeamInfo(teamId int) (*Team, error) { if tbaTeam.TeamNumber == 0 { team = Team{Id: teamId} } else { - var recentAwards []TbaAward - if eventSettings.TBAAwardsDownloadEnabled { - recentAwards, err = getTeamAwardsFromTba(teamId) - if err != nil { - return nil, err - } + recentAwards, err := getTeamAwardsFromTba(teamId) + if err != nil { + return nil, err } var accomplishmentsBuffer bytes.Buffer @@ -288,7 +285,7 @@ func getOfficialTeamInfo(teamId int) (*Team, error) { // Generate accomplishments string for _, award := range recentAwards { if time.Now().Year()-award.Year <= 2 { - accomplishmentsBuffer.WriteString(fmt.Sprint(award.Year, " - ", award.Name, "\n")) + accomplishmentsBuffer.WriteString(fmt.Sprintf("%d %s - %s\n", award.Year, award.EventName, award.Name)) } } diff --git a/setup_teams_test.go b/setup_teams_test.go index 5a3395c..9bd3d4a 100644 --- a/setup_teams_test.go +++ b/setup_teams_test.go @@ -74,6 +74,13 @@ func TestSetupTeams(t *testing.T) { defer teamAwardsServer.Close() tbaTeamAwardsBaseUrl = teamAwardsServer.URL + eventBody := `{ "name": "Championship" }` + eventServer := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + fmt.Fprintln(w, eventBody) + })) + defer eventServer.Close() + tbaEventBaseUrl = eventServer.URL + // Add some teams. recorder = postHttpResponse("/setup/teams", "teamNumbers=254\r\nnotateam\r\n1114\r\n") assert.Equal(t, 302, recorder.Code) diff --git a/tba.go b/tba.go index 7add9c7..3d5232b 100644 --- a/tba.go +++ b/tba.go @@ -19,6 +19,10 @@ import ( var tbaBaseUrl = "http://www.thebluealliance.com" var tbaTeamBaseUrl = tbaBaseUrl var tbaTeamAwardsBaseUrl = tbaBaseUrl +var tbaEventBaseUrl = tbaBaseUrl + +// Cache of event codes to names. +var tbaEventNames = make(map[string]string) // MODELS @@ -71,6 +75,11 @@ type TbaAward struct { EventKey string `json:"event_key"` Year int `json:"year"` AwardType int `json:"award_type"` + EventName string +} + +type TbaEvent struct { + Name string `json:"name"` } // DATA RETRIEVAL @@ -94,7 +103,7 @@ func getTeamFromTba(teamNumber int) (*TbaTeam, error) { return &teamData, err } -func getTeamAwardsFromTba(teamNumber int) ([]TbaAward, error) { +func getTeamAwardsFromTba(teamNumber int) ([]*TbaAward, error) { url := fmt.Sprintf("%s/api/v2/team/%s/history/awards", tbaTeamAwardsBaseUrl, getTbaTeam(teamNumber)) resp, err := getTbaRequest(url) if err != nil { @@ -108,10 +117,46 @@ func getTeamAwardsFromTba(teamNumber int) ([]TbaAward, error) { return nil, err } - var awardData []TbaAward - err = json.Unmarshal(body, &awardData) + var awards []*TbaAward + err = json.Unmarshal(body, &awards) + if err != nil { + return nil, err + } - return awardData, err + for _, award := range awards { + if _, ok := tbaEventNames[award.EventKey]; !ok { + tbaEventNames[award.EventKey], err = getEventNameFromTba(award.EventKey) + if err != nil { + return nil, err + } + } + award.EventName = tbaEventNames[award.EventKey] + } + + return awards, nil +} + +func getEventNameFromTba(eventCode string) (string, error) { + url := fmt.Sprintf("%s/api/v2/event/%s", tbaEventBaseUrl, eventCode) + resp, err := getTbaRequest(url) + if err != nil { + return "", err + } + + // Get the response and handle errors + defer resp.Body.Close() + body, err := ioutil.ReadAll(resp.Body) + if err != nil { + return "", err + } + + var event TbaEvent + err = json.Unmarshal(body, &event) + if err != nil { + return "", err + } + + return event.Name, err } // PUBLISHING diff --git a/templates/setup_settings.html b/templates/setup_settings.html index e57358b..f8a7af6 100644 --- a/templates/setup_settings.html +++ b/templates/setup_settings.html @@ -100,12 +100,6 @@ -
- -
- -
-
Publishing