本文整理汇总了Golang中models.User.ImageBlobKey方法的典型用法代码示例。如果您正苦于以下问题:Golang User.ImageBlobKey方法的具体用法?Golang User.ImageBlobKey怎么用?Golang User.ImageBlobKey使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类models.User
的用法示例。
在下文中一共展示了User.ImageBlobKey方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: ProfileHandler
// Displays a users profile page and handles updates to a logged in users profile information
func ProfileHandler(w http.ResponseWriter, r *http.Request) {
vars := mux.Vars(r)
userKeyName := vars["userID"]
ctx := appengine.NewContext(r)
// Get the page user information
var pageUser models.User
pageUserKey := datastore.NewKey(ctx, "User", userKeyName, 0, nil)
err := datastore.Get(ctx, pageUserKey, &pageUser)
if err != nil {
controllers.ErrorHandler(w, r, "User was not found: "+err.Error(), http.StatusNotFound)
return
}
// Check to see if the logged in user matches the page user
userIsOwner := utils.IsOwner(userKeyName, ctx)
// If a user is just viewing the page
if r.Method == "GET" {
var simulations []models.SimulationData
// If viewing someone else's profile page, get their 8 most recent public simultions to display
if !userIsOwner {
// Build a query
q := datastore.NewQuery("Simulation").Filter("AuthorKeyName =", userKeyName).Filter("IsPrivate =", false).Order("-CreationDate").Limit(8)
simulations, err = utils.GetSimulationDataSlice(r, q)
if err != nil {
controllers.ErrorHandler(w, r, err.Error(), http.StatusInternalServerError)
return
}
}
// Nicely format the join date
prettyJoinDate := pageUser.JoinDate.Format("January _2, 2006")
var empty []models.Simulation
totalFavoritesReceived := 0
// Get the profile image they may or may not
var userProfileImageSrc string
if len(string(pageUser.ImageBlobKey)) > 0 {
userProfileImageSrc = "/api/img/" + string(pageUser.ImageBlobKey)
}
// Only want to generate an image upload user if it is the user's profile page
var imageUploadUrl string
if userIsOwner {
// The user's profile images need to be POSTed to specific appengine blobstore "action" paths.
// Have to specify a path to return to after the post succeeds
imageUpload, err := blobstore.UploadURL(ctx, r.URL.Path, nil)
if err != nil {
api.ApiErrorResponse(w, "Could not generate blobstore upload: "+err.Error(), http.StatusInternalServerError)
return
}
imageUploadUrl = imageUpload.Path
}
// Get a count of all favorites received on all simulations created by this user
q := datastore.NewQuery("Simulation").KeysOnly().Filter("AuthorKeyName =", userKeyName)
simKeys, err := q.GetAll(ctx, &empty) // Get all simulation keys made by this user
if err != nil {
controllers.ErrorHandler(w, r, err.Error(), http.StatusInternalServerError)
return
}
// Get a count of all of the favorites received for each simulation and add to total
for _, key := range simKeys {
q := datastore.NewQuery("Rating").Ancestor(key)
simFaves, err := q.Count(ctx)
if err != nil {
controllers.ErrorHandler(w, r, err.Error(), http.StatusInternalServerError)
return
}
totalFavoritesReceived += simFaves
}
data := map[string]interface{}{
"user": pageUser,
"userJoinDate": prettyJoinDate,
"userProfileImageSrc": userProfileImageSrc,
"imageUploadUrl": imageUploadUrl,
"userIsOwner": userIsOwner,
"simulations": simulations,
"totalFavoritesReceived": totalFavoritesReceived,
}
controllers.BaseHandler(w, r, "user/profile", data)
return
}
// When a user tries to post information
if r.Method == "POST" {
// Make sure only the owner is trying to update the information
if !userIsOwner {
controllers.ErrorHandler(w, r, "Unauthorized update attempt: "+err.Error(), http.StatusInternalServerError)
return
}
// Get all of the form values and blob image from the post
//.........这里部分代码省略.........