mirror of
				https://github.com/go-gitea/gitea.git
				synced 2025-10-26 12:27:06 +00:00 
			
		
		
		
	Make external issue tracker regexp configurable via API (#21338)
Fixes #21336 Signed-off-by: Andrew Imeson <andrew@andrewimeson.com>
This commit is contained in:
		| @@ -56,9 +56,10 @@ func innerToRepo(repo *repo_model.Repository, mode perm.AccessMode, isParent boo | ||||
| 		config := unit.ExternalTrackerConfig() | ||||
| 		hasIssues = true | ||||
| 		externalTracker = &api.ExternalTracker{ | ||||
| 			ExternalTrackerURL:    config.ExternalTrackerURL, | ||||
| 			ExternalTrackerFormat: config.ExternalTrackerFormat, | ||||
| 			ExternalTrackerStyle:  config.ExternalTrackerStyle, | ||||
| 			ExternalTrackerURL:           config.ExternalTrackerURL, | ||||
| 			ExternalTrackerFormat:        config.ExternalTrackerFormat, | ||||
| 			ExternalTrackerStyle:         config.ExternalTrackerStyle, | ||||
| 			ExternalTrackerRegexpPattern: config.ExternalTrackerRegexpPattern, | ||||
| 		} | ||||
| 	} | ||||
| 	hasWiki := false | ||||
|   | ||||
| @@ -34,8 +34,10 @@ type ExternalTracker struct { | ||||
| 	ExternalTrackerURL string `json:"external_tracker_url"` | ||||
| 	// External Issue Tracker URL Format. Use the placeholders {user}, {repo} and {index} for the username, repository name and issue index. | ||||
| 	ExternalTrackerFormat string `json:"external_tracker_format"` | ||||
| 	// External Issue Tracker Number Format, either `numeric` or `alphanumeric` | ||||
| 	// External Issue Tracker Number Format, either `numeric`, `alphanumeric`, or `regexp` | ||||
| 	ExternalTrackerStyle string `json:"external_tracker_style"` | ||||
| 	// External Issue Tracker issue regular expression | ||||
| 	ExternalTrackerRegexpPattern string `json:"external_tracker_regexp_pattern"` | ||||
| } | ||||
|  | ||||
| // ExternalWiki represents setting for external wiki | ||||
|   | ||||
| @@ -755,9 +755,10 @@ func updateRepoUnits(ctx *context.APIContext, opts api.EditRepoOption) error { | ||||
| 				RepoID: repo.ID, | ||||
| 				Type:   unit_model.TypeExternalTracker, | ||||
| 				Config: &repo_model.ExternalTrackerConfig{ | ||||
| 					ExternalTrackerURL:    opts.ExternalTracker.ExternalTrackerURL, | ||||
| 					ExternalTrackerFormat: opts.ExternalTracker.ExternalTrackerFormat, | ||||
| 					ExternalTrackerStyle:  opts.ExternalTracker.ExternalTrackerStyle, | ||||
| 					ExternalTrackerURL:           opts.ExternalTracker.ExternalTrackerURL, | ||||
| 					ExternalTrackerFormat:        opts.ExternalTracker.ExternalTrackerFormat, | ||||
| 					ExternalTrackerStyle:         opts.ExternalTracker.ExternalTrackerStyle, | ||||
| 					ExternalTrackerRegexpPattern: opts.ExternalTracker.ExternalTrackerRegexpPattern, | ||||
| 				}, | ||||
| 			}) | ||||
| 			deleteUnitTypes = append(deleteUnitTypes, unit_model.TypeIssues) | ||||
|   | ||||
| @@ -16015,8 +16015,13 @@ | ||||
|           "type": "string", | ||||
|           "x-go-name": "ExternalTrackerFormat" | ||||
|         }, | ||||
|         "external_tracker_regexp_pattern": { | ||||
|           "description": "External Issue Tracker issue regular expression", | ||||
|           "type": "string", | ||||
|           "x-go-name": "ExternalTrackerRegexpPattern" | ||||
|         }, | ||||
|         "external_tracker_style": { | ||||
|           "description": "External Issue Tracker Number Format, either `numeric` or `alphanumeric`", | ||||
|           "description": "External Issue Tracker Number Format, either `numeric`, `alphanumeric`, or `regexp`", | ||||
|           "type": "string", | ||||
|           "x-go-name": "ExternalTrackerStyle" | ||||
|         }, | ||||
|   | ||||
| @@ -40,9 +40,10 @@ func getRepoEditOptionFromRepo(repo *repo_model.Repository) *api.EditRepoOption | ||||
| 		config := unit.ExternalTrackerConfig() | ||||
| 		hasIssues = true | ||||
| 		externalTracker = &api.ExternalTracker{ | ||||
| 			ExternalTrackerURL:    config.ExternalTrackerURL, | ||||
| 			ExternalTrackerFormat: config.ExternalTrackerFormat, | ||||
| 			ExternalTrackerStyle:  config.ExternalTrackerStyle, | ||||
| 			ExternalTrackerURL:           config.ExternalTrackerURL, | ||||
| 			ExternalTrackerFormat:        config.ExternalTrackerFormat, | ||||
| 			ExternalTrackerStyle:         config.ExternalTrackerStyle, | ||||
| 			ExternalTrackerRegexpPattern: config.ExternalTrackerRegexpPattern, | ||||
| 		} | ||||
| 	} | ||||
| 	hasWiki := false | ||||
| @@ -220,6 +221,17 @@ func TestAPIRepoEdit(t *testing.T) { | ||||
| 		assert.Equal(t, *repo1editedOption.HasWiki, true) | ||||
| 		assert.Equal(t, *repo1editedOption.ExternalWiki, *repoEditOption.ExternalWiki) | ||||
|  | ||||
| 		repoEditOption.ExternalTracker.ExternalTrackerStyle = "regexp" | ||||
| 		repoEditOption.ExternalTracker.ExternalTrackerRegexpPattern = `(\d+)` | ||||
| 		req = NewRequestWithJSON(t, "PATCH", url, &repoEditOption) | ||||
| 		resp = session.MakeRequest(t, req, http.StatusOK) | ||||
| 		DecodeJSON(t, resp, &repo) | ||||
| 		assert.NotNil(t, repo) | ||||
| 		repo1edited = unittest.AssertExistsAndLoadBean(t, &repo_model.Repository{ID: 1}) | ||||
| 		repo1editedOption = getRepoEditOptionFromRepo(repo1edited) | ||||
| 		assert.Equal(t, *repo1editedOption.HasIssues, true) | ||||
| 		assert.Equal(t, *repo1editedOption.ExternalTracker, *repoEditOption.ExternalTracker) | ||||
|  | ||||
| 		// Do some tests with invalid URL for external tracker and wiki | ||||
| 		repoEditOption.ExternalTracker.ExternalTrackerURL = "htp://www.somewebsite.com" | ||||
| 		req = NewRequestWithJSON(t, "PATCH", url, &repoEditOption) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Andrew Imeson
					Andrew Imeson