forked from gitea/gitea
		
	Add create repo feeds
This commit is contained in:
		
							parent
							
								
									9b845c1115
								
							
						
					
					
						commit
						6a75b1f7b3
					
				
							
								
								
									
										2
									
								
								gogs.go
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								gogs.go
									
									
									
									
									
								
							| @ -20,7 +20,7 @@ import ( | ||||
| // Test that go1.1 tag above is included in builds. main.go refers to this definition. | ||||
| const go11tag = true | ||||
| 
 | ||||
| const APP_VER = "0.0.5.0311" | ||||
| const APP_VER = "0.0.5.0313" | ||||
| 
 | ||||
| func init() { | ||||
| 	runtime.GOMAXPROCS(runtime.NumCPU()) | ||||
|  | ||||
							
								
								
									
										56
									
								
								models/action.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										56
									
								
								models/action.go
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,56 @@ | ||||
| // Copyright 2014 The Gogs Authors. All rights reserved. | ||||
| // Use of this source code is governed by a MIT-style | ||||
| // license that can be found in the LICENSE file. | ||||
| 
 | ||||
| package models | ||||
| 
 | ||||
| import ( | ||||
| 	"encoding/json" | ||||
| 	"time" | ||||
| ) | ||||
| 
 | ||||
| // Operation types of user action. | ||||
| const ( | ||||
| 	OP_CREATE_REPO = iota + 1 | ||||
| 	OP_DELETE_REPO | ||||
| 	OP_STAR_REPO | ||||
| 	OP_FOLLOW_REPO | ||||
| 	OP_COMMIT_REPO | ||||
| 	OP_PULL_REQUEST | ||||
| ) | ||||
| 
 | ||||
| // An Action represents | ||||
| type Action struct { | ||||
| 	Id      int64 | ||||
| 	UserId  int64 | ||||
| 	OpType  int | ||||
| 	RepoId  int64 | ||||
| 	Content string | ||||
| 	Created time.Time `xorm:"created"` | ||||
| } | ||||
| 
 | ||||
| type NewRepoContent struct { | ||||
| 	UserName string | ||||
| 	RepoName string | ||||
| } | ||||
| 
 | ||||
| // NewRepoAction inserts action for create repository. | ||||
| func NewRepoAction(user *User, repo *Repository) error { | ||||
| 	content, err := json.Marshal(&NewRepoContent{user.Name, repo.Name}) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	_, err = orm.InsertOne(&Action{ | ||||
| 		UserId:  user.Id, | ||||
| 		OpType:  OP_CREATE_REPO, | ||||
| 		RepoId:  repo.Id, | ||||
| 		Content: string(content), | ||||
| 	}) | ||||
| 	return err | ||||
| } | ||||
| 
 | ||||
| func GetFeeds(userid, offset int64) ([]Action, error) { | ||||
| 	actions := make([]Action, 0, 20) | ||||
| 	err := orm.Limit(20, int(offset)).Desc("id").Where("user_id=?", userid).Find(&actions) | ||||
| 	return actions, err | ||||
| } | ||||
| @ -92,7 +92,7 @@ func setEngine() { | ||||
| 
 | ||||
| func init() { | ||||
| 	setEngine() | ||||
| 	err := orm.Sync(new(User), new(PublicKey), new(Repository), new(Access)) | ||||
| 	err := orm.Sync(new(User), new(PublicKey), new(Repository), new(Access), new(Action)) | ||||
| 	if err != nil { | ||||
| 		fmt.Printf("sync database struct error: %s\n", err) | ||||
| 		os.Exit(2) | ||||
|  | ||||
| @ -137,7 +137,8 @@ func CreateRepository(user *User, repoName, desc, repoLang, license string, priv | ||||
| 		} | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	return repo, nil | ||||
| 
 | ||||
| 	return repo, NewRepoAction(user, repo) | ||||
| } | ||||
| 
 | ||||
| // InitRepository initializes README and .gitignore if needed. | ||||
|  | ||||
| @ -61,26 +61,6 @@ type Follow struct { | ||||
| 	Created  time.Time `xorm:"created"` | ||||
| } | ||||
| 
 | ||||
| // Operation types of repository. | ||||
| const ( | ||||
| 	OP_CREATE_REPO = iota + 1 | ||||
| 	OP_DELETE_REPO | ||||
| 	OP_STAR_REPO | ||||
| 	OP_FOLLOW_REPO | ||||
| 	OP_COMMIT_REPO | ||||
| 	OP_PULL_REQUEST | ||||
| ) | ||||
| 
 | ||||
| // An Action represents | ||||
| type Action struct { | ||||
| 	Id      int64 | ||||
| 	UserId  int64 | ||||
| 	OpType  int | ||||
| 	RepoId  int64 | ||||
| 	Content string | ||||
| 	Created time.Time `xorm:"created"` | ||||
| } | ||||
| 
 | ||||
| var ( | ||||
| 	ErrUserOwnRepos     = errors.New("User still have ownership of repositories") | ||||
| 	ErrUserAlreadyExist = errors.New("User already exist") | ||||
|  | ||||
| @ -90,6 +90,11 @@ func (f *LogInForm) Validate(errors *binding.Errors, req *http.Request, context | ||||
| 	validate(errors, data, f) | ||||
| } | ||||
| 
 | ||||
| type FeedsForm struct { | ||||
| 	UserId int64 `form:"userid" binding:"Required"` | ||||
| 	Offset int64 `form:"offset"` | ||||
| } | ||||
| 
 | ||||
| func getMinMaxSize(field reflect.StructField) string { | ||||
| 	for _, rule := range strings.Split(field.Tag.Get("binding"), ";") { | ||||
| 		if strings.HasPrefix(rule, "MinSize(") || strings.HasPrefix(rule, "MaxSize(") { | ||||
|  | ||||
| @ -5,6 +5,7 @@ | ||||
| package user | ||||
| 
 | ||||
| import ( | ||||
| 	"bytes" | ||||
| 	"net/http" | ||||
| 
 | ||||
| 	"github.com/codegangsta/martini" | ||||
| @ -140,7 +141,6 @@ func SignUp(form auth.RegisterForm, data base.TmplData, req *http.Request, r ren | ||||
| 	r.Redirect("/user/login") | ||||
| } | ||||
| 
 | ||||
| // TODO: unfinished | ||||
| func Delete(data base.TmplData, req *http.Request, session sessions.Session, r render.Render) { | ||||
| 	data["Title"] = "Delete Account" | ||||
| 
 | ||||
| @ -166,3 +166,21 @@ func Delete(data base.TmplData, req *http.Request, session sessions.Session, r r | ||||
| 
 | ||||
| 	r.HTML(200, "user/delete", data) | ||||
| } | ||||
| 
 | ||||
| func Feeds(form auth.FeedsForm, r render.Render) string { | ||||
| 	actions, err := models.GetFeeds(form.UserId, form.Offset) | ||||
| 	if err != nil { | ||||
| 		return err.Error() | ||||
| 	} | ||||
| 
 | ||||
| 	length := len(actions) | ||||
| 	buf := bytes.NewBuffer([]byte("[")) | ||||
| 	for i, action := range actions { | ||||
| 		buf.WriteString(action.Content) | ||||
| 		if i < length-1 { | ||||
| 			buf.WriteString(",") | ||||
| 		} | ||||
| 	} | ||||
| 	buf.WriteString("]") | ||||
| 	return buf.String() | ||||
| } | ||||
|  | ||||
							
								
								
									
										5
									
								
								web.go
									
									
									
									
									
								
							
							
						
						
									
										5
									
								
								web.go
									
									
									
									
									
								
							| @ -64,18 +64,19 @@ func runWeb(*cli.Context) { | ||||
| 	m.Any("/user/logout", auth.SignInRequire(true), user.SignOut) | ||||
| 	m.Any("/user/sign_up", auth.SignOutRequire(), binding.BindIgnErr(auth.RegisterForm{}), user.SignUp) | ||||
| 	m.Any("/user/delete", auth.SignInRequire(true), user.Delete) | ||||
| 	m.Get("/user/feeds", binding.Bind(auth.FeedsForm{}), user.Feeds) | ||||
| 
 | ||||
| 	m.Any("/user/setting", auth.SignInRequire(true), user.Setting) | ||||
| 	m.Any("/user/setting/ssh", auth.SignInRequire(true), binding.BindIgnErr(auth.AddSSHKeyForm{}), user.SettingSSHKeys) | ||||
| 
 | ||||
| 	m.Get("/user/:username", auth.SignInRequire(false), user.Profile) | ||||
| 
 | ||||
| 	m.Get("/:username/:reponame", repo.Repo) | ||||
| 
 | ||||
| 	m.Any("/repo/create", auth.SignInRequire(true), binding.BindIgnErr(auth.CreateRepoForm{}), repo.Create) | ||||
| 	m.Any("/repo/delete", auth.SignInRequire(true), repo.Delete) | ||||
| 	m.Any("/repo/list", auth.SignInRequire(false), repo.List) | ||||
| 
 | ||||
| 	m.Get("/:username/:reponame", repo.Repo) | ||||
| 
 | ||||
| 	listenAddr := fmt.Sprintf("%s:%s", | ||||
| 		base.Cfg.MustValue("server", "HTTP_ADDR"), | ||||
| 		base.Cfg.MustValue("server", "HTTP_PORT", "3000")) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user
	 Unknown
						Unknown