|
@@ -287,7 +287,7 @@ func (repo *Repository) HTMLURL() string {
|
|
|
// This method assumes following fields have been assigned with valid values:
|
|
|
// Required - BaseRepo (if fork)
|
|
|
// Arguments that are allowed to be nil: permission
|
|
|
-func (repo *Repository) APIFormat(permission *api.Permission) *api.Repository {
|
|
|
+func (repo *Repository) APIFormat(permission *api.Permission, user ...*User) *api.Repository {
|
|
|
cloneLink := repo.CloneLink()
|
|
|
apiRepo := &api.Repository{
|
|
|
ID: repo.ID,
|
|
@@ -314,8 +314,12 @@ func (repo *Repository) APIFormat(permission *api.Permission) *api.Repository {
|
|
|
Permissions: permission,
|
|
|
}
|
|
|
if repo.IsFork {
|
|
|
- // FIXME: check precise permission for base repository
|
|
|
- apiRepo.Parent = repo.BaseRepo.APIFormat(nil)
|
|
|
+ p := &api.Permission{Pull: true}
|
|
|
+ if len(user) != 0 {
|
|
|
+ p.Admin = user[0].IsAdminOfRepo(repo)
|
|
|
+ p.Push = user[0].IsWriterOfRepo(repo)
|
|
|
+ }
|
|
|
+ apiRepo.Parent = repo.BaseRepo.APIFormat(p)
|
|
|
}
|
|
|
return apiRepo
|
|
|
}
|
|
@@ -2335,7 +2339,14 @@ func ForkRepository(doer, owner *User, baseRepo *Repository, name, desc string)
|
|
|
|
|
|
func (repo *Repository) GetForks() ([]*Repository, error) {
|
|
|
forks := make([]*Repository, 0, repo.NumForks)
|
|
|
- return forks, x.Find(&forks, &Repository{ForkID: repo.ID})
|
|
|
+ if err := x.Find(&forks, &Repository{ForkID: repo.ID}); err != nil {
|
|
|
+ return nil, err
|
|
|
+ }
|
|
|
+
|
|
|
+ for _, fork := range forks {
|
|
|
+ fork.BaseRepo = repo
|
|
|
+ }
|
|
|
+ return forks, nil
|
|
|
}
|
|
|
|
|
|
// __________ .__
|