Added event name to recent accomplishments.

This commit is contained in:
Patrick Fairbank
2015-08-31 23:21:55 -07:00
parent 8845629dd7
commit bcf7b965eb
8 changed files with 61 additions and 22 deletions

View File

@@ -22,7 +22,6 @@ CREATE TABLE event_settings (
switchpassword VARCHAR(255),
bandwidthmonitoringenabled bool,
tbadownloadenabled bool,
tbaawardsdownloadenabled bool,
adminpassword VARCHAR(255),
readerpassword VARCHAR(255)
);

View File

@@ -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

View File

@@ -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"

View File

@@ -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"

View File

@@ -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))
}
}

View File

@@ -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)

53
tba.go
View File

@@ -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

View File

@@ -100,12 +100,6 @@
<input type="checkbox" name="TBADownloadEnabled"{{if .TBADownloadEnabled}} checked{{end}}>
</div>
</div>
<div class="form-group">
<label class="col-lg-9 control-label">Enable Automatic Team Accomplishments Download (From TBA)</label>
<div class="col-lg-1 checkbox">
<input type="checkbox" name="TBADownloadEnabled"{{if .TBAAwardsDownloadEnabled}} checked{{end}}>
</div>
</div>
</fieldset>
<fieldset>
<legend>Publishing</legend>