Skip to content
New issue

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

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

Already on GitHub? # 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
Signed-off-by: Bruno Sofiato <bruno.sofiato@gmail.com>
@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
@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
Co-authored-by: delvh <dev.lh@web.de>
@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
zjjhot added a commit to zjjhot/gitea that referenced this pull request Feb 3, 2025
* giteaofficial/main: (53 commits)
  [skip ci] Updated licenses and gitignores
  Correct bot label `vertical-align` (go-gitea#33477)
  chore: fix some trivial problems and TODOs (go-gitea#33473)
  Worktime tracking for the organization level (go-gitea#19808)
  Skip deletion error for action artifacts (go-gitea#33476)
  Update .changelog file to add performance label group (go-gitea#33472)
  actions view: move loading of task attributes etc... into own func (go-gitea#31494)
  [skip ci] Updated translations via Crowdin
  Update feishu icon (go-gitea#33470)
  Inclusion of rename organization api (go-gitea#33303)
  [skip ci] Updated translations via Crowdin
  Hide/disable unusable UI elements when a repository is archived (go-gitea#33459)
  Fix SSH LFS memory usage (go-gitea#33455)
  Revert empty lfs ref name (go-gitea#33454)
  Update `@github/text-expander-element`, adapt type imports (go-gitea#33449)
  Support choose email when creating a commit via web UI (more) (go-gitea#33445)
  Fix issue sidebar dropdown keyboard support (go-gitea#33447)
  Fix "redirect link" handling (go-gitea#33440)
  Refactor repository transfer (go-gitea#33211)
  Enable two more strict options in tsconfig (go-gitea#33438)
  ...
project-mirrors-bot-tu bot pushed a commit to project-mirrors/forgejo-as-gitea-fork that referenced this pull request Feb 4, 2025
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 go-gitea#32995

---------

Signed-off-by: Bruno Sofiato <bruno.sofiato@gmail.com>
Co-authored-by: delvh <dev.lh@web.de>
Co-authored-by: wxiaoguang <wxiaoguang@gmail.com>
(cherry picked from commit 040c830)

Conflicts:
	routers/api/v1/admin/user.go
  ignore this unrelated change
	templates/swagger/v1_json.tmpl
  regenerate
	tests/integration/api_org_test.go
  port as a standalone test instead of refactoring the tests
# for free to join this conversation on GitHub. Already have an account? # 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