Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Inclusion of rename organization api #33303

Merged
merged 7 commits into from
Feb 1, 2025

Conversation

bsofiato
Copy link
Contributor

This adds an endpoint (/orgs/{org}/rename) to rename organizations.

I've modeled the endpoint using the rename user endpoint -- /admin/users/{username}/rename -- as base.

It is the 1st time I wrote a new API endpoint (I've tried to follow the rename users endpoint code while writing it). So feel free to ping me if there is something wrong or missing.

Resolves #32995

@GiteaBot GiteaBot added the lgtm/need 2 This PR needs two approvals by maintainers to be considered for merging. label Jan 16, 2025
@pull-request-size pull-request-size bot added the size/L Denotes a PR that changes 100-499 lines, ignoring generated files. label Jan 16, 2025
@github-actions github-actions bot added modifies/api This PR adds API routes or modifies them modifies/go Pull requests that update Go code labels Jan 16, 2025
@bsofiato bsofiato force-pushed the feature/rename-org-api branch from b14c5e7 to ff24828 Compare January 16, 2025 15:01
@yp05327
Copy link
Contributor

yp05327 commented Jan 17, 2025

You can reference the implementation here:

if ctx.ContextUser.IsOrganization() {
ctx.Error(http.StatusUnprocessableEntity, "", fmt.Errorf("%s is an organization not a user", ctx.ContextUser.Name))
return
}
oldName := ctx.ContextUser.Name
newName := web.GetForm(ctx).(*api.RenameUserOption).NewName
// Check if user name has been changed
if err := user_service.RenameUser(ctx, ctx.ContextUser, newName); err != nil {
switch {
case user_model.IsErrUserAlreadyExist(err):
ctx.Error(http.StatusUnprocessableEntity, "", ctx.Tr("form.username_been_taken"))
case db.IsErrNameReserved(err):
ctx.Error(http.StatusUnprocessableEntity, "", ctx.Tr("user.form.name_reserved", newName))
case db.IsErrNamePatternNotAllowed(err):
ctx.Error(http.StatusUnprocessableEntity, "", ctx.Tr("user.form.name_pattern_not_allowed", newName))
case db.IsErrNameCharsNotAllowed(err):
ctx.Error(http.StatusUnprocessableEntity, "", ctx.Tr("user.form.name_chars_not_allowed", newName))
default:
ctx.ServerError("ChangeUserName", err)
}
return
}
log.Trace("User name changed: %s -> %s", oldName, newName)
ctx.Status(http.StatusNoContent)
}

@lunny
Copy link
Member

lunny commented Jan 17, 2025

It's better to have a test.

@bsofiato
Copy link
Contributor Author

It's better to have a test.

Hey @lunny, I've written a integration test to check for the new api :)

@bsofiato bsofiato requested a review from yp05327 January 29, 2025 13:43
@GiteaBot GiteaBot added lgtm/need 1 This PR needs approval from one additional maintainer to be merged. and removed lgtm/need 2 This PR needs two approvals by maintainers to be considered for merging. labels Jan 30, 2025
@lunny lunny added the type/enhancement An improvement of existing functionality label Jan 30, 2025
@lunny lunny added this to the 1.24.0 milestone Jan 30, 2025
routers/api/v1/org/org.go Outdated Show resolved Hide resolved
@GiteaBot GiteaBot added lgtm/done This PR has enough approvals to get merged. There are no important open reservations anymore. and removed lgtm/need 1 This PR needs approval from one additional maintainer to be merged. labels Jan 30, 2025
@wxiaoguang wxiaoguang marked this pull request as draft January 31, 2025 12:51
@wxiaoguang wxiaoguang self-assigned this Jan 31, 2025
@wxiaoguang
Copy link
Contributor

wxiaoguang commented Jan 31, 2025

Made some changes:

  1. use the same logic for RenameUser and RenameOrg
    • the known errors already provide good messages, so just use the "err" (then no ctx.Tr)
  2. remove the log.Trace from handlers
    • the "trace" log is only used for debugging purpose, here we do not need that
  3. remove all onGiteaRun from org tests
    • just use PrepareTestEnv, it's faster and simpler
  4. make RenameOrg to be a sub-test
    • it is faster because no need to create a new org
  5. by the way, found a buggy test case, added "FIXME" in code.
    • old code tests nothing .......

Diff with ignoring spaces: https://github.com/go-gitea/gitea/pull/33303/files?diff=unified&w=1

@wxiaoguang wxiaoguang marked this pull request as ready for review January 31, 2025 13:19
@wxiaoguang wxiaoguang removed their assignment Jan 31, 2025
@lunny lunny added the reviewed/wait-merge This pull request is part of the merge queue. It will be merged soon. label Feb 1, 2025
@lunny lunny enabled auto-merge (squash) February 1, 2025 00:13
@lunny lunny merged commit 040c830 into go-gitea:main Feb 1, 2025
26 checks passed
@GiteaBot GiteaBot removed the reviewed/wait-merge This pull request is part of the merge queue. It will be merged soon. label Feb 1, 2025
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
lgtm/done This PR has enough approvals to get merged. There are no important open reservations anymore. modifies/api This PR adds API routes or modifies them modifies/go Pull requests that update Go code size/L Denotes a PR that changes 100-499 lines, ignoring generated files. type/enhancement An improvement of existing functionality
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Add organization renaming API
6 participants