예제 #1
0
파일: home.go 프로젝트: ssysun/gomgoweb2
func ByGenre(r http.ResponseWriter, rq *http.Request) {
	values := rq.URL.Query()
	id := values["id"][0]
	genreId := gomgoweb2_src.ToObjectId(id)
	genreName := gomgoweb2_src.GetGenreName(genreId)
	title := fmt.Sprintf("%s Albums", genreName)
	bands := gomgoweb2_src.GetBandsByGenre(genreId)
	t, err := template.ParseFiles("src/gomgoweb2_src/views/home/bygenre.html")
	if err != nil {
		panic(err)
	} else {
		t.Execute(r, Params{Bands: bands, Title: title})
	}
}
예제 #2
0
파일: album.go 프로젝트: ssysun/gomgoweb2
func AlbumIndex(r http.ResponseWriter, rq *http.Request) {
	value := rq.URL.Query()
	rawId := value["id"][0]
	bandId := gomgoweb2_src.ToObjectId(rawId)
	bandDoc := gomgoweb2_src.GetDoc(bandId, gomgoweb2_src.BAND_COL)
	t, err := template.ParseFiles("src/gomgoweb2_src/views/album/index.html")
	if err != nil {
		panic(err)
	} else {
		t.Execute(r, struct {
			Id    string
			Title string
			Band  gomgoweb2_src.MyDoc
		}{Id: rawId, Title: bandDoc.Value["Name"].(string), Band: bandDoc})
	}
}
예제 #3
0
파일: band.go 프로젝트: ssysun/gomgoweb2
func BandVerify(r http.ResponseWriter, rq *http.Request) {
	name := rq.FormValue("name")
	locType := rq.FormValue("loctype")
	var locationId bson.ObjectId
	errorString := "no errors"
	switch locType {
	case "existing":
		if rq.FormValue("location_id") == "" {
			errorString = "No location was selected"
		} else {
			locationId = gomgoweb2_src.ToObjectId(rq.FormValue("location_id"))
		}
		break
	case "new":
		if rq.FormValue("country") != "" {
			locationId = gomgoweb2_src.GenerateId()
			location := gomgoweb2_src.Location{
				City:    rq.FormValue("city"),
				State:   rq.FormValue("state"),
				Country: rq.FormValue("country"),
			}
			doc := gomgoweb2_src.MyDoc{Id: locationId, Value: bson.M{"City": location.City, "State": location.State, "Country": location.Country}}
			err := gomgoweb2_src.AddDoc(doc, gomgoweb2_src.LOCATION_COL)
			if err != nil {
				errorString = "error on location add: " + err.Error()
			}
		} else {
			errorString = "Country is required"
		}
		break
	}
	if errorString == "no errors" {
		id := gomgoweb2_src.GenerateId()
		band := gomgoweb2_src.Band{Name: name, LocationId: locationId, Albums: []gomgoweb2_src.Album{}}
		doc := gomgoweb2_src.MyDoc{Id: id, Value: bson.M{"Name": band.Name, "LocationId": band.LocationId, "Albums": band.Albums}}
		err := gomgoweb2_src.AddDoc(doc, gomgoweb2_src.BAND_COL)
		if err != nil {
			errorString = "error on band add: " + err.Error()
		}
		t, err := template.ParseFiles("src/gomgoweb2_src/views/band/verify.html")
		if err != nil {
			panic(err)
		} else {
			t.Execute(r, errorString)
		}
	}
}
예제 #4
0
파일: album.go 프로젝트: ssysun/gomgoweb2
func AlbumVerify(r http.ResponseWriter, rq *http.Request) {
	// implement
	rawId := gomgoweb2_src.ToObjectId(rq.URL.Query()["id"][0])
	id := rawId
	name := rq.FormValue("name")
	yearString := rq.FormValue("year")
	year, _ := strconv.Atoi(yearString)
	genreType := rq.FormValue("genretype")
	var genreId bson.ObjectId
	errorString := "no errors"
	switch genreType {
	case "existing":
		if rq.FormValue("genre_id") == "" {
			errorString = "No genre was selected"
		} else {
			genreId = gomgoweb2_src.ToObjectId(rq.FormValue("genre_id"))
		}
		break
	case "new":
		genre_name := strings.ToUpper(rq.FormValue("genre_name"))
		if rq.FormValue("genre_name") == "" {
			errorString = "Genre name is required to create a genre"
		} else {
			database, session := gomgoweb2_src.GetDB()
			col := database.C(gomgoweb2_src.GENRE_COL)
			query := col.Find(bson.M{"Values.Name": genre_name})
			if q, _ := query.Count(); q == 0 {
				session.Close()
				genreId = gomgoweb2_src.GenerateId()
				genre := gomgoweb2_src.Genre{Name: genre_name}
				doc := gomgoweb2_src.MyDoc{Id: genreId, Value: bson.M{"Name": genre.Name}}
				err := gomgoweb2_src.AddDoc(doc, gomgoweb2_src.GENRE_COL)
				if err != nil {
					errorString = "Genre add error: " + err.Error()
				}
			} else {
				var genres []gomgoweb2_src.MyDoc
				query.All(&genres)
				genreId = genres[0].Id
				session.Close()
			}
		}
		break
	}

	if errorString == "no errors" {
		bandDoc := gomgoweb2_src.GetDoc(rawId, gomgoweb2_src.BAND_COL)
		album := gomgoweb2_src.Album{Name: name, Year: year, GenreId: genreId}
		err := bandDoc.AddAlbum(album)
		if err != nil {
			errorString = "Album add error: " + err.Error()
		}
	}
	t, err := template.ParseFiles("src/gomgoweb2_src/views/album/verify.html")
	if err != nil {
		panic(err)
	} else {
		t.Execute(r, struct {
			Id      string
			Message string
		}{Id: id.String(), Message: errorString})
	}
}