diff --git a/CHANGELOG.md b/CHANGELOG.md index 1f1e1413fd324c312d69d364272fb9e1b4d8b087..891cd2968474148fc5c952e076a891d9e2a57aa8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,11 @@ * Add `api::projects::variables` to list and delete project-level CI/CD variables. +## Changes + + * Add support for `Planner` access levels where necessary. This access level + is new in GitLab 17.7. + # v0.1707.0 ## Additions diff --git a/src/api/common.rs b/src/api/common.rs index 65cb01553509b161620542ca7c927ed771ad758f..6c0a8f6b1e916ff11081e1ef40da960937700577 100644 --- a/src/api/common.rs +++ b/src/api/common.rs @@ -29,6 +29,8 @@ pub enum AccessLevel { Minimal, /// Guest access (can see the project). Guest, + /// Planner access (can manage issues). + Planner, /// Reporter access (can open issues). Reporter, /// Developer access (can push branches, handle issues and merge requests). @@ -50,6 +52,7 @@ impl AccessLevel { AccessLevel::Maintainer => "maintainer", AccessLevel::Developer => "developer", AccessLevel::Reporter => "reporter", + AccessLevel::Planner => "planner", AccessLevel::Guest => "guest", AccessLevel::Minimal => "minimal", AccessLevel::Anonymous => "anonymous", @@ -64,6 +67,7 @@ impl AccessLevel { AccessLevel::Maintainer => 40, AccessLevel::Developer => 30, AccessLevel::Reporter => 20, + AccessLevel::Planner => 15, AccessLevel::Guest => 10, AccessLevel::Minimal => 5, AccessLevel::Anonymous => 0, @@ -464,6 +468,7 @@ mod tests { (AccessLevel::Anonymous, "anonymous", 0), (AccessLevel::Minimal, "minimal", 5), (AccessLevel::Guest, "guest", 10), + (AccessLevel::Planner, "planner", 15), (AccessLevel::Reporter, "reporter", 20), (AccessLevel::Developer, "developer", 30), (AccessLevel::Maintainer, "maintainer", 40), @@ -482,6 +487,7 @@ mod tests { let items = &[ AccessLevel::Anonymous, AccessLevel::Guest, + AccessLevel::Planner, AccessLevel::Reporter, AccessLevel::Developer, AccessLevel::Maintainer, diff --git a/src/api/groups/access_requests/approve.rs b/src/api/groups/access_requests/approve.rs index e9919581030ce13a3b97ea1041aa6a8dbd5788dc..5a66168ce8b68e59e7bee45f20c0abfb68c3c7b7 100644 --- a/src/api/groups/access_requests/approve.rs +++ b/src/api/groups/access_requests/approve.rs @@ -19,6 +19,8 @@ pub enum GroupAccessLevel { Minimal, /// Guest access (can see the project). Guest, + /// Planner access (can manage issues). + Planner, /// Reporter access (can open issues). Reporter, /// Developer access (can push branches, handle issues and merge requests). @@ -37,6 +39,7 @@ impl GroupAccessLevel { GroupAccessLevel::Maintainer => "maintainer", GroupAccessLevel::Developer => "developer", GroupAccessLevel::Reporter => "reporter", + GroupAccessLevel::Planner => "planner", GroupAccessLevel::Guest => "guest", GroupAccessLevel::Minimal => "minimal", GroupAccessLevel::Anonymous => "anonymous", @@ -50,6 +53,7 @@ impl GroupAccessLevel { GroupAccessLevel::Maintainer => 40, GroupAccessLevel::Developer => 30, GroupAccessLevel::Reporter => 20, + GroupAccessLevel::Planner => 15, GroupAccessLevel::Guest => 10, GroupAccessLevel::Minimal => 5, GroupAccessLevel::Anonymous => 0, @@ -123,6 +127,7 @@ mod tests { (GroupAccessLevel::Anonymous, AccessLevel::Anonymous), (GroupAccessLevel::Minimal, AccessLevel::Minimal), (GroupAccessLevel::Guest, AccessLevel::Guest), + (GroupAccessLevel::Planner, AccessLevel::Planner), (GroupAccessLevel::Reporter, AccessLevel::Reporter), (GroupAccessLevel::Developer, AccessLevel::Developer), (GroupAccessLevel::Maintainer, AccessLevel::Maintainer), @@ -141,6 +146,7 @@ mod tests { (GroupAccessLevel::Anonymous, "anonymous", 0), (GroupAccessLevel::Minimal, "minimal", 5), (GroupAccessLevel::Guest, "guest", 10), + (GroupAccessLevel::Planner, "planner", 15), (GroupAccessLevel::Reporter, "reporter", 20), (GroupAccessLevel::Developer, "developer", 30), (GroupAccessLevel::Maintainer, "maintainer", 40), @@ -159,6 +165,7 @@ mod tests { GroupAccessLevel::Anonymous, GroupAccessLevel::Minimal, GroupAccessLevel::Guest, + GroupAccessLevel::Planner, GroupAccessLevel::Reporter, GroupAccessLevel::Developer, GroupAccessLevel::Maintainer, diff --git a/src/api/paged.rs b/src/api/paged.rs index cba23e77ea846042a5a9ec4103f4ccf9f00d83d1..160f6f621549fe40c80b5a14f10ae98e050624c7 100644 --- a/src/api/paged.rs +++ b/src/api/paged.rs @@ -32,6 +32,9 @@ pub use self::link_header::LinkHeaderParseError; pub use self::pagination::Pagination; pub use self::pagination::PaginationError; +// pub use self::page::page; +// pub use self::page::Page; + pub use self::all_at_once::paged; pub use self::all_at_once::Paged; diff --git a/src/api/projects/access_requests/approve.rs b/src/api/projects/access_requests/approve.rs index 2a15cff087876c25967893705a00b733e38c1efe..b9570042efb7b862c0c619548a6e6b47b0351a49 100644 --- a/src/api/projects/access_requests/approve.rs +++ b/src/api/projects/access_requests/approve.rs @@ -15,6 +15,8 @@ use crate::api::endpoint_prelude::*; pub enum ProjectAccessLevel { /// Guest access (can see the project). Guest, + /// Planner access (can manage issues). + Planner, /// Reporter access (can open issues). Reporter, /// Developer access (can push branches, handle issues and merge requests). @@ -33,6 +35,7 @@ impl ProjectAccessLevel { ProjectAccessLevel::Maintainer => "maintainer", ProjectAccessLevel::Developer => "developer", ProjectAccessLevel::Reporter => "reporter", + ProjectAccessLevel::Planner => "planner", ProjectAccessLevel::Guest => "guest", } } @@ -44,6 +47,7 @@ impl ProjectAccessLevel { ProjectAccessLevel::Maintainer => 40, ProjectAccessLevel::Developer => 30, ProjectAccessLevel::Reporter => 20, + ProjectAccessLevel::Planner => 15, ProjectAccessLevel::Guest => 10, } } @@ -113,6 +117,7 @@ mod tests { fn common_access_level_consisent() { let items = &[ (ProjectAccessLevel::Guest, AccessLevel::Guest), + (ProjectAccessLevel::Planner, AccessLevel::Planner), (ProjectAccessLevel::Reporter, AccessLevel::Reporter), (ProjectAccessLevel::Developer, AccessLevel::Developer), (ProjectAccessLevel::Maintainer, AccessLevel::Maintainer), @@ -129,6 +134,7 @@ mod tests { fn access_level_as_str() { let items = &[ (ProjectAccessLevel::Guest, "guest", 10), + (ProjectAccessLevel::Planner, "planner", 15), (ProjectAccessLevel::Reporter, "reporter", 20), (ProjectAccessLevel::Developer, "developer", 30), (ProjectAccessLevel::Maintainer, "maintainer", 40), @@ -145,6 +151,7 @@ mod tests { fn access_level_ordering() { let items = &[ ProjectAccessLevel::Guest, + ProjectAccessLevel::Planner, ProjectAccessLevel::Reporter, ProjectAccessLevel::Developer, ProjectAccessLevel::Maintainer, diff --git a/src/api/projects/access_tokens/create.rs b/src/api/projects/access_tokens/create.rs index 6bbb6cc7fba0feaf57af03c8d370168a2ceb4959..55f8759f6ce42365fb2224466edd38f44083e2a1 100644 --- a/src/api/projects/access_tokens/create.rs +++ b/src/api/projects/access_tokens/create.rs @@ -66,6 +66,8 @@ impl ParamValue<'static> for ProjectAccessTokenScope { pub enum ProjectAccessTokenAccessLevel { /// Guest access (can see the project). Guest, + /// Planner access (can manage issues). + Planner, /// Reporter access (can open issues). Reporter, /// Developer access (can push branches, handle issues and merge requests). @@ -80,6 +82,7 @@ impl From for AccessLevel { fn from(p: ProjectAccessTokenAccessLevel) -> Self { match p { ProjectAccessTokenAccessLevel::Guest => Self::Guest, + ProjectAccessTokenAccessLevel::Planner => Self::Planner, ProjectAccessTokenAccessLevel::Reporter => Self::Reporter, ProjectAccessTokenAccessLevel::Developer => Self::Developer, ProjectAccessTokenAccessLevel::Maintainer => Self::Maintainer, @@ -197,6 +200,7 @@ mod tests { let items = &[ (ProjectAccessTokenAccessLevel::Guest, AccessLevel::Guest), + (ProjectAccessTokenAccessLevel::Planner, AccessLevel::Planner), ( ProjectAccessTokenAccessLevel::Reporter, AccessLevel::Reporter, diff --git a/src/systemhooks.rs b/src/systemhooks.rs index 922825b5cd274af241ec071a22d709f78b690600..ed381249948ab6d43cd369a378fbadbbd7ce7b91 100644 --- a/src/systemhooks.rs +++ b/src/systemhooks.rs @@ -102,6 +102,8 @@ pub enum ProjectMemberEvent { pub enum HumanAccessLevel { /// Guest access (can see the project). Guest, + /// Planner access (can manage issues). + Planner, /// Reporter access (can open issues). Reporter, /// Developer access (can push branches, handle issues and merge requests).