permissions (#4227)
This commit is contained in:
Родитель
59a78a87bd
Коммит
70b3eba8c5
|
@ -13,6 +13,8 @@
|
|||
# See the License for the specific language governing permissions and
|
||||
# limitations under the License.
|
||||
|
||||
from chromestatus_openapi.models import (PermissionsResponse, UserPermissions)
|
||||
|
||||
import logging
|
||||
|
||||
from framework import basehandlers
|
||||
|
@ -38,9 +40,9 @@ class PermissionsAPI(basehandlers.APIHandler):
|
|||
else:
|
||||
paired_user = self.find_paired_user(user)
|
||||
if paired_user:
|
||||
user_data = self.get_all_perms(paired_user)
|
||||
user_data =self.get_all_perms(paired_user)
|
||||
|
||||
return {'user': user_data}
|
||||
return PermissionsResponse(user=user_data).to_dict()
|
||||
|
||||
def get_all_perms(self, user):
|
||||
"""Return a dict of permissions for the given user."""
|
||||
|
@ -54,15 +56,16 @@ class PermissionsAPI(basehandlers.APIHandler):
|
|||
editable_features = permissions.feature_edit_list(user)
|
||||
logging.info('got editable_features')
|
||||
|
||||
return {
|
||||
'can_create_feature': can_create_feature,
|
||||
'approvable_gate_types': approvable_gate_types,
|
||||
'can_comment': can_comment,
|
||||
'can_edit_all': can_edit_all,
|
||||
'is_admin': is_admin,
|
||||
'email': user.email(),
|
||||
'editable_features': editable_features,
|
||||
}
|
||||
response = UserPermissions(
|
||||
can_create_feature=can_create_feature,
|
||||
approvable_gate_types=approvable_gate_types,
|
||||
can_comment=can_comment,
|
||||
can_edit_all=can_edit_all,
|
||||
is_admin=is_admin,
|
||||
email=user.email(),
|
||||
editable_features=editable_features)
|
||||
|
||||
return response.to_dict()
|
||||
|
||||
def find_paired_user(self, user):
|
||||
"""If @google.com or @chromium.org, return the other one."""
|
||||
|
|
|
@ -37,10 +37,12 @@ src/models/LinkPreviewWebkitBug.ts
|
|||
src/models/MessageResponse.ts
|
||||
src/models/OutstandingReview.ts
|
||||
src/models/OwnersAndSubscribersOfComponent.ts
|
||||
src/models/PermissionsResponse.ts
|
||||
src/models/PostIntentRequest.ts
|
||||
src/models/ReviewLatency.ts
|
||||
src/models/SpecMentor.ts
|
||||
src/models/SuccessMessage.ts
|
||||
src/models/UserPermissions.ts
|
||||
src/models/index.ts
|
||||
src/runtime.ts
|
||||
tsconfig.esm.json
|
||||
|
|
|
@ -26,6 +26,7 @@ import type {
|
|||
GetDismissedCues400Response,
|
||||
GetIntentResponse,
|
||||
MessageResponse,
|
||||
PermissionsResponse,
|
||||
PostIntentRequest,
|
||||
ReviewLatency,
|
||||
SpecMentor,
|
||||
|
@ -54,6 +55,8 @@ import {
|
|||
GetIntentResponseToJSON,
|
||||
MessageResponseFromJSON,
|
||||
MessageResponseToJSON,
|
||||
PermissionsResponseFromJSON,
|
||||
PermissionsResponseToJSON,
|
||||
PostIntentRequestFromJSON,
|
||||
PostIntentRequestToJSON,
|
||||
ReviewLatencyFromJSON,
|
||||
|
@ -88,6 +91,10 @@ export interface GetIntentBodyRequest {
|
|||
gateId: number;
|
||||
}
|
||||
|
||||
export interface GetUserPermissionsRequest {
|
||||
returnPairedUser?: boolean;
|
||||
}
|
||||
|
||||
export interface ListExternalReviewsRequest {
|
||||
reviewGroup: ListExternalReviewsReviewGroupEnum;
|
||||
}
|
||||
|
@ -214,6 +221,21 @@ export interface DefaultApiInterface {
|
|||
*/
|
||||
getIntentBody(requestParameters: GetIntentBodyRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<GetIntentResponse>;
|
||||
|
||||
/**
|
||||
*
|
||||
* @summary Get the permissions and email of the user
|
||||
* @param {boolean} [returnPairedUser] If true, return the permissions of the paired user.
|
||||
* @param {*} [options] Override http request option.
|
||||
* @throws {RequiredError}
|
||||
* @memberof DefaultApiInterface
|
||||
*/
|
||||
getUserPermissionsRaw(requestParameters: GetUserPermissionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PermissionsResponse>>;
|
||||
|
||||
/**
|
||||
* Get the permissions and email of the user
|
||||
*/
|
||||
getUserPermissions(requestParameters: GetUserPermissionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PermissionsResponse>;
|
||||
|
||||
/**
|
||||
*
|
||||
* @summary List all components and possible users
|
||||
|
@ -547,6 +569,36 @@ export class DefaultApi extends runtime.BaseAPI implements DefaultApiInterface {
|
|||
return await response.value();
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the permissions and email of the user
|
||||
*/
|
||||
async getUserPermissionsRaw(requestParameters: GetUserPermissionsRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PermissionsResponse>> {
|
||||
const queryParameters: any = {};
|
||||
|
||||
if (requestParameters['returnPairedUser'] != null) {
|
||||
queryParameters['returnPairedUser'] = requestParameters['returnPairedUser'];
|
||||
}
|
||||
|
||||
const headerParameters: runtime.HTTPHeaders = {};
|
||||
|
||||
const response = await this.request({
|
||||
path: `/currentuser/permissions`,
|
||||
method: 'GET',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.JSONApiResponse(response, (jsonValue) => PermissionsResponseFromJSON(jsonValue));
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the permissions and email of the user
|
||||
*/
|
||||
async getUserPermissions(requestParameters: GetUserPermissionsRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PermissionsResponse> {
|
||||
const response = await this.getUserPermissionsRaw(requestParameters, initOverrides);
|
||||
return await response.value();
|
||||
}
|
||||
|
||||
/**
|
||||
* List all components and possible users
|
||||
*/
|
||||
|
|
|
@ -0,0 +1,68 @@
|
|||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* chomestatus API
|
||||
* The API for chromestatus.com. chromestatus.com is the official tool used for tracking feature launches in Blink (the browser engine that powers Chrome and many other web browsers). This tool guides feature owners through our launch process and serves as a primary source for developer information that then ripples throughout the web developer ecosystem. More details at: https://github.com/GoogleChrome/chromium-dashboard
|
||||
*
|
||||
* The version of the OpenAPI document: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
import { mapValues } from '../runtime';
|
||||
import type { UserPermissions } from './UserPermissions';
|
||||
import {
|
||||
UserPermissionsFromJSON,
|
||||
UserPermissionsFromJSONTyped,
|
||||
UserPermissionsToJSON,
|
||||
} from './UserPermissions';
|
||||
|
||||
/**
|
||||
*
|
||||
* @export
|
||||
* @interface PermissionsResponse
|
||||
*/
|
||||
export interface PermissionsResponse {
|
||||
/**
|
||||
*
|
||||
* @type {UserPermissions}
|
||||
* @memberof PermissionsResponse
|
||||
*/
|
||||
user: UserPermissions;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a given object implements the PermissionsResponse interface.
|
||||
*/
|
||||
export function instanceOfPermissionsResponse(value: object): value is PermissionsResponse {
|
||||
if (!('user' in value) || value['user'] === undefined) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
export function PermissionsResponseFromJSON(json: any): PermissionsResponse {
|
||||
return PermissionsResponseFromJSONTyped(json, false);
|
||||
}
|
||||
|
||||
export function PermissionsResponseFromJSONTyped(json: any, ignoreDiscriminator: boolean): PermissionsResponse {
|
||||
if (json == null) {
|
||||
return json;
|
||||
}
|
||||
return {
|
||||
|
||||
'user': UserPermissionsFromJSON(json['user']),
|
||||
};
|
||||
}
|
||||
|
||||
export function PermissionsResponseToJSON(value?: PermissionsResponse | null): any {
|
||||
if (value == null) {
|
||||
return value;
|
||||
}
|
||||
return {
|
||||
|
||||
'user': UserPermissionsToJSON(value['user']),
|
||||
};
|
||||
}
|
||||
|
|
@ -0,0 +1,115 @@
|
|||
/* tslint:disable */
|
||||
/* eslint-disable */
|
||||
/**
|
||||
* chomestatus API
|
||||
* The API for chromestatus.com. chromestatus.com is the official tool used for tracking feature launches in Blink (the browser engine that powers Chrome and many other web browsers). This tool guides feature owners through our launch process and serves as a primary source for developer information that then ripples throughout the web developer ecosystem. More details at: https://github.com/GoogleChrome/chromium-dashboard
|
||||
*
|
||||
* The version of the OpenAPI document: 1.0.0
|
||||
*
|
||||
*
|
||||
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
* https://openapi-generator.tech
|
||||
* Do not edit the class manually.
|
||||
*/
|
||||
|
||||
import { mapValues } from '../runtime';
|
||||
/**
|
||||
*
|
||||
* @export
|
||||
* @interface UserPermissions
|
||||
*/
|
||||
export interface UserPermissions {
|
||||
/**
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof UserPermissions
|
||||
*/
|
||||
can_create_feature: boolean;
|
||||
/**
|
||||
* each element should be unique as OAS does not support set
|
||||
* @type {Array<number>}
|
||||
* @memberof UserPermissions
|
||||
*/
|
||||
approvable_gate_types: Array<number>;
|
||||
/**
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof UserPermissions
|
||||
*/
|
||||
can_comment: boolean;
|
||||
/**
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof UserPermissions
|
||||
*/
|
||||
can_edit_all: boolean;
|
||||
/**
|
||||
*
|
||||
* @type {boolean}
|
||||
* @memberof UserPermissions
|
||||
*/
|
||||
is_admin: boolean;
|
||||
/**
|
||||
*
|
||||
* @type {string}
|
||||
* @memberof UserPermissions
|
||||
*/
|
||||
email: string;
|
||||
/**
|
||||
*
|
||||
* @type {Array<number>}
|
||||
* @memberof UserPermissions
|
||||
*/
|
||||
editable_features: Array<number>;
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a given object implements the UserPermissions interface.
|
||||
*/
|
||||
export function instanceOfUserPermissions(value: object): value is UserPermissions {
|
||||
if (!('can_create_feature' in value) || value['can_create_feature'] === undefined) return false;
|
||||
if (!('approvable_gate_types' in value) || value['approvable_gate_types'] === undefined) return false;
|
||||
if (!('can_comment' in value) || value['can_comment'] === undefined) return false;
|
||||
if (!('can_edit_all' in value) || value['can_edit_all'] === undefined) return false;
|
||||
if (!('is_admin' in value) || value['is_admin'] === undefined) return false;
|
||||
if (!('email' in value) || value['email'] === undefined) return false;
|
||||
if (!('editable_features' in value) || value['editable_features'] === undefined) return false;
|
||||
return true;
|
||||
}
|
||||
|
||||
export function UserPermissionsFromJSON(json: any): UserPermissions {
|
||||
return UserPermissionsFromJSONTyped(json, false);
|
||||
}
|
||||
|
||||
export function UserPermissionsFromJSONTyped(json: any, ignoreDiscriminator: boolean): UserPermissions {
|
||||
if (json == null) {
|
||||
return json;
|
||||
}
|
||||
return {
|
||||
|
||||
'can_create_feature': json['can_create_feature'],
|
||||
'approvable_gate_types': json['approvable_gate_types'],
|
||||
'can_comment': json['can_comment'],
|
||||
'can_edit_all': json['can_edit_all'],
|
||||
'is_admin': json['is_admin'],
|
||||
'email': json['email'],
|
||||
'editable_features': json['editable_features'],
|
||||
};
|
||||
}
|
||||
|
||||
export function UserPermissionsToJSON(value?: UserPermissions | null): any {
|
||||
if (value == null) {
|
||||
return value;
|
||||
}
|
||||
return {
|
||||
|
||||
'can_create_feature': value['can_create_feature'],
|
||||
'approvable_gate_types': value['approvable_gate_types'],
|
||||
'can_comment': value['can_comment'],
|
||||
'can_edit_all': value['can_edit_all'],
|
||||
'is_admin': value['is_admin'],
|
||||
'email': value['email'],
|
||||
'editable_features': value['editable_features'],
|
||||
};
|
||||
}
|
||||
|
|
@ -31,7 +31,9 @@ export * from './LinkPreviewWebkitBug';
|
|||
export * from './MessageResponse';
|
||||
export * from './OutstandingReview';
|
||||
export * from './OwnersAndSubscribersOfComponent';
|
||||
export * from './PermissionsResponse';
|
||||
export * from './PostIntentRequest';
|
||||
export * from './ReviewLatency';
|
||||
export * from './SpecMentor';
|
||||
export * from './SuccessMessage';
|
||||
export * from './UserPermissions';
|
||||
|
|
|
@ -43,10 +43,12 @@ chromestatus_openapi/models/link_preview_webkit_bug.py
|
|||
chromestatus_openapi/models/message_response.py
|
||||
chromestatus_openapi/models/outstanding_review.py
|
||||
chromestatus_openapi/models/owners_and_subscribers_of_component.py
|
||||
chromestatus_openapi/models/permissions_response.py
|
||||
chromestatus_openapi/models/post_intent_request.py
|
||||
chromestatus_openapi/models/review_latency.py
|
||||
chromestatus_openapi/models/spec_mentor.py
|
||||
chromestatus_openapi/models/success_message.py
|
||||
chromestatus_openapi/models/user_permissions.py
|
||||
chromestatus_openapi/openapi/openapi.yaml
|
||||
chromestatus_openapi/test/__init__.py
|
||||
chromestatus_openapi/test/test_default_controller.py
|
||||
|
|
|
@ -14,6 +14,7 @@ from chromestatus_openapi.models.feature_latency import FeatureLatency # noqa:
|
|||
from chromestatus_openapi.models.get_dismissed_cues400_response import GetDismissedCues400Response # noqa: E501
|
||||
from chromestatus_openapi.models.get_intent_response import GetIntentResponse # noqa: E501
|
||||
from chromestatus_openapi.models.message_response import MessageResponse # noqa: E501
|
||||
from chromestatus_openapi.models.permissions_response import PermissionsResponse # noqa: E501
|
||||
from chromestatus_openapi.models.post_intent_request import PostIntentRequest # noqa: E501
|
||||
from chromestatus_openapi.models.review_latency import ReviewLatency # noqa: E501
|
||||
from chromestatus_openapi.models.spec_mentor import SpecMentor # noqa: E501
|
||||
|
@ -111,6 +112,19 @@ def get_intent_body(feature_id, stage_id, gate_id): # noqa: E501
|
|||
return 'do some magic!'
|
||||
|
||||
|
||||
def get_user_permissions(return_paired_user=None): # noqa: E501
|
||||
"""Get the permissions and email of the user
|
||||
|
||||
# noqa: E501
|
||||
|
||||
:param return_paired_user: If true, return the permissions of the paired user.
|
||||
:type return_paired_user: bool
|
||||
|
||||
:rtype: Union[PermissionsResponse, Tuple[PermissionsResponse, int], Tuple[PermissionsResponse, int, Dict[str, str]]
|
||||
"""
|
||||
return 'do some magic!'
|
||||
|
||||
|
||||
def list_component_users(): # noqa: E501
|
||||
"""List all components and possible users
|
||||
|
||||
|
|
|
@ -31,7 +31,9 @@ from chromestatus_openapi.models.link_preview_webkit_bug import LinkPreviewWebki
|
|||
from chromestatus_openapi.models.message_response import MessageResponse
|
||||
from chromestatus_openapi.models.outstanding_review import OutstandingReview
|
||||
from chromestatus_openapi.models.owners_and_subscribers_of_component import OwnersAndSubscribersOfComponent
|
||||
from chromestatus_openapi.models.permissions_response import PermissionsResponse
|
||||
from chromestatus_openapi.models.post_intent_request import PostIntentRequest
|
||||
from chromestatus_openapi.models.review_latency import ReviewLatency
|
||||
from chromestatus_openapi.models.spec_mentor import SpecMentor
|
||||
from chromestatus_openapi.models.success_message import SuccessMessage
|
||||
from chromestatus_openapi.models.user_permissions import UserPermissions
|
||||
|
|
|
@ -0,0 +1,65 @@
|
|||
from datetime import date, datetime # noqa: F401
|
||||
|
||||
from typing import List, Dict # noqa: F401
|
||||
|
||||
from chromestatus_openapi.models.base_model import Model
|
||||
from chromestatus_openapi.models.user_permissions import UserPermissions
|
||||
from chromestatus_openapi import util
|
||||
|
||||
from chromestatus_openapi.models.user_permissions import UserPermissions # noqa: E501
|
||||
|
||||
class PermissionsResponse(Model):
|
||||
"""NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
|
||||
Do not edit the class manually.
|
||||
"""
|
||||
|
||||
def __init__(self, user=None): # noqa: E501
|
||||
"""PermissionsResponse - a model defined in OpenAPI
|
||||
|
||||
:param user: The user of this PermissionsResponse. # noqa: E501
|
||||
:type user: UserPermissions
|
||||
"""
|
||||
self.openapi_types = {
|
||||
'user': UserPermissions
|
||||
}
|
||||
|
||||
self.attribute_map = {
|
||||
'user': 'user'
|
||||
}
|
||||
|
||||
self._user = user
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, dikt) -> 'PermissionsResponse':
|
||||
"""Returns the dict as a model
|
||||
|
||||
:param dikt: A dict.
|
||||
:type: dict
|
||||
:return: The PermissionsResponse of this PermissionsResponse. # noqa: E501
|
||||
:rtype: PermissionsResponse
|
||||
"""
|
||||
return util.deserialize_model(dikt, cls)
|
||||
|
||||
@property
|
||||
def user(self) -> UserPermissions:
|
||||
"""Gets the user of this PermissionsResponse.
|
||||
|
||||
|
||||
:return: The user of this PermissionsResponse.
|
||||
:rtype: UserPermissions
|
||||
"""
|
||||
return self._user
|
||||
|
||||
@user.setter
|
||||
def user(self, user: UserPermissions):
|
||||
"""Sets the user of this PermissionsResponse.
|
||||
|
||||
|
||||
:param user: The user of this PermissionsResponse.
|
||||
:type user: UserPermissions
|
||||
"""
|
||||
if user is None:
|
||||
raise ValueError("Invalid value for `user`, must not be `None`") # noqa: E501
|
||||
|
||||
self._user = user
|
|
@ -0,0 +1,233 @@
|
|||
from datetime import date, datetime # noqa: F401
|
||||
|
||||
from typing import List, Dict # noqa: F401
|
||||
|
||||
from chromestatus_openapi.models.base_model import Model
|
||||
from chromestatus_openapi import util
|
||||
|
||||
|
||||
class UserPermissions(Model):
|
||||
"""NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
|
||||
|
||||
Do not edit the class manually.
|
||||
"""
|
||||
|
||||
def __init__(self, can_create_feature=None, approvable_gate_types=None, can_comment=None, can_edit_all=None, is_admin=None, email=None, editable_features=None): # noqa: E501
|
||||
"""UserPermissions - a model defined in OpenAPI
|
||||
|
||||
:param can_create_feature: The can_create_feature of this UserPermissions. # noqa: E501
|
||||
:type can_create_feature: bool
|
||||
:param approvable_gate_types: The approvable_gate_types of this UserPermissions. # noqa: E501
|
||||
:type approvable_gate_types: List[int]
|
||||
:param can_comment: The can_comment of this UserPermissions. # noqa: E501
|
||||
:type can_comment: bool
|
||||
:param can_edit_all: The can_edit_all of this UserPermissions. # noqa: E501
|
||||
:type can_edit_all: bool
|
||||
:param is_admin: The is_admin of this UserPermissions. # noqa: E501
|
||||
:type is_admin: bool
|
||||
:param email: The email of this UserPermissions. # noqa: E501
|
||||
:type email: str
|
||||
:param editable_features: The editable_features of this UserPermissions. # noqa: E501
|
||||
:type editable_features: List[int]
|
||||
"""
|
||||
self.openapi_types = {
|
||||
'can_create_feature': bool,
|
||||
'approvable_gate_types': List[int],
|
||||
'can_comment': bool,
|
||||
'can_edit_all': bool,
|
||||
'is_admin': bool,
|
||||
'email': str,
|
||||
'editable_features': List[int]
|
||||
}
|
||||
|
||||
self.attribute_map = {
|
||||
'can_create_feature': 'can_create_feature',
|
||||
'approvable_gate_types': 'approvable_gate_types',
|
||||
'can_comment': 'can_comment',
|
||||
'can_edit_all': 'can_edit_all',
|
||||
'is_admin': 'is_admin',
|
||||
'email': 'email',
|
||||
'editable_features': 'editable_features'
|
||||
}
|
||||
|
||||
self._can_create_feature = can_create_feature
|
||||
self._approvable_gate_types = approvable_gate_types
|
||||
self._can_comment = can_comment
|
||||
self._can_edit_all = can_edit_all
|
||||
self._is_admin = is_admin
|
||||
self._email = email
|
||||
self._editable_features = editable_features
|
||||
|
||||
@classmethod
|
||||
def from_dict(cls, dikt) -> 'UserPermissions':
|
||||
"""Returns the dict as a model
|
||||
|
||||
:param dikt: A dict.
|
||||
:type: dict
|
||||
:return: The UserPermissions of this UserPermissions. # noqa: E501
|
||||
:rtype: UserPermissions
|
||||
"""
|
||||
return util.deserialize_model(dikt, cls)
|
||||
|
||||
@property
|
||||
def can_create_feature(self) -> bool:
|
||||
"""Gets the can_create_feature of this UserPermissions.
|
||||
|
||||
|
||||
:return: The can_create_feature of this UserPermissions.
|
||||
:rtype: bool
|
||||
"""
|
||||
return self._can_create_feature
|
||||
|
||||
@can_create_feature.setter
|
||||
def can_create_feature(self, can_create_feature: bool):
|
||||
"""Sets the can_create_feature of this UserPermissions.
|
||||
|
||||
|
||||
:param can_create_feature: The can_create_feature of this UserPermissions.
|
||||
:type can_create_feature: bool
|
||||
"""
|
||||
if can_create_feature is None:
|
||||
raise ValueError("Invalid value for `can_create_feature`, must not be `None`") # noqa: E501
|
||||
|
||||
self._can_create_feature = can_create_feature
|
||||
|
||||
@property
|
||||
def approvable_gate_types(self) -> List[int]:
|
||||
"""Gets the approvable_gate_types of this UserPermissions.
|
||||
|
||||
each element should be unique as OAS does not support set # noqa: E501
|
||||
|
||||
:return: The approvable_gate_types of this UserPermissions.
|
||||
:rtype: List[int]
|
||||
"""
|
||||
return self._approvable_gate_types
|
||||
|
||||
@approvable_gate_types.setter
|
||||
def approvable_gate_types(self, approvable_gate_types: List[int]):
|
||||
"""Sets the approvable_gate_types of this UserPermissions.
|
||||
|
||||
each element should be unique as OAS does not support set # noqa: E501
|
||||
|
||||
:param approvable_gate_types: The approvable_gate_types of this UserPermissions.
|
||||
:type approvable_gate_types: List[int]
|
||||
"""
|
||||
if approvable_gate_types is None:
|
||||
raise ValueError("Invalid value for `approvable_gate_types`, must not be `None`") # noqa: E501
|
||||
|
||||
self._approvable_gate_types = approvable_gate_types
|
||||
|
||||
@property
|
||||
def can_comment(self) -> bool:
|
||||
"""Gets the can_comment of this UserPermissions.
|
||||
|
||||
|
||||
:return: The can_comment of this UserPermissions.
|
||||
:rtype: bool
|
||||
"""
|
||||
return self._can_comment
|
||||
|
||||
@can_comment.setter
|
||||
def can_comment(self, can_comment: bool):
|
||||
"""Sets the can_comment of this UserPermissions.
|
||||
|
||||
|
||||
:param can_comment: The can_comment of this UserPermissions.
|
||||
:type can_comment: bool
|
||||
"""
|
||||
if can_comment is None:
|
||||
raise ValueError("Invalid value for `can_comment`, must not be `None`") # noqa: E501
|
||||
|
||||
self._can_comment = can_comment
|
||||
|
||||
@property
|
||||
def can_edit_all(self) -> bool:
|
||||
"""Gets the can_edit_all of this UserPermissions.
|
||||
|
||||
|
||||
:return: The can_edit_all of this UserPermissions.
|
||||
:rtype: bool
|
||||
"""
|
||||
return self._can_edit_all
|
||||
|
||||
@can_edit_all.setter
|
||||
def can_edit_all(self, can_edit_all: bool):
|
||||
"""Sets the can_edit_all of this UserPermissions.
|
||||
|
||||
|
||||
:param can_edit_all: The can_edit_all of this UserPermissions.
|
||||
:type can_edit_all: bool
|
||||
"""
|
||||
if can_edit_all is None:
|
||||
raise ValueError("Invalid value for `can_edit_all`, must not be `None`") # noqa: E501
|
||||
|
||||
self._can_edit_all = can_edit_all
|
||||
|
||||
@property
|
||||
def is_admin(self) -> bool:
|
||||
"""Gets the is_admin of this UserPermissions.
|
||||
|
||||
|
||||
:return: The is_admin of this UserPermissions.
|
||||
:rtype: bool
|
||||
"""
|
||||
return self._is_admin
|
||||
|
||||
@is_admin.setter
|
||||
def is_admin(self, is_admin: bool):
|
||||
"""Sets the is_admin of this UserPermissions.
|
||||
|
||||
|
||||
:param is_admin: The is_admin of this UserPermissions.
|
||||
:type is_admin: bool
|
||||
"""
|
||||
if is_admin is None:
|
||||
raise ValueError("Invalid value for `is_admin`, must not be `None`") # noqa: E501
|
||||
|
||||
self._is_admin = is_admin
|
||||
|
||||
@property
|
||||
def email(self) -> str:
|
||||
"""Gets the email of this UserPermissions.
|
||||
|
||||
|
||||
:return: The email of this UserPermissions.
|
||||
:rtype: str
|
||||
"""
|
||||
return self._email
|
||||
|
||||
@email.setter
|
||||
def email(self, email: str):
|
||||
"""Sets the email of this UserPermissions.
|
||||
|
||||
|
||||
:param email: The email of this UserPermissions.
|
||||
:type email: str
|
||||
"""
|
||||
if email is None:
|
||||
raise ValueError("Invalid value for `email`, must not be `None`") # noqa: E501
|
||||
|
||||
self._email = email
|
||||
|
||||
@property
|
||||
def editable_features(self) -> List[int]:
|
||||
"""Gets the editable_features of this UserPermissions.
|
||||
|
||||
|
||||
:return: The editable_features of this UserPermissions.
|
||||
:rtype: List[int]
|
||||
"""
|
||||
return self._editable_features
|
||||
|
||||
@editable_features.setter
|
||||
def editable_features(self, editable_features: List[int]):
|
||||
"""Sets the editable_features of this UserPermissions.
|
||||
|
||||
|
||||
:param editable_features: The editable_features of this UserPermissions.
|
||||
:type editable_features: List[int]
|
||||
"""
|
||||
if editable_features is None:
|
||||
raise ValueError("Invalid value for `editable_features`, must not be `None`") # noqa: E501
|
||||
|
||||
self._editable_features = editable_features
|
|
@ -172,6 +172,27 @@ paths:
|
|||
description: Cue dismissed successfully
|
||||
summary: Dismiss a cue card for the signed-in user
|
||||
x-openapi-router-controller: chromestatus_openapi.controllers.default_controller
|
||||
/currentuser/permissions:
|
||||
get:
|
||||
operationId: get_user_permissions
|
||||
parameters:
|
||||
- description: "If true, return the permissions of the paired user."
|
||||
explode: true
|
||||
in: query
|
||||
name: returnPairedUser
|
||||
required: false
|
||||
schema:
|
||||
type: boolean
|
||||
style: form
|
||||
responses:
|
||||
"200":
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/PermissionsResponse'
|
||||
description: The permissions and email of the user.
|
||||
summary: Get the permissions and email of the user
|
||||
x-openapi-router-controller: chromestatus_openapi.controllers.default_controller
|
||||
/external_reviews/{review_group}:
|
||||
get:
|
||||
operationId: list_external_reviews
|
||||
|
@ -877,15 +898,77 @@ components:
|
|||
LinkPreviewSpecs:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/LinkPreviewOpenGraph'
|
||||
deleteAccount_200_response:
|
||||
PermissionsResponse:
|
||||
example:
|
||||
message: Done
|
||||
user:
|
||||
is_admin: true
|
||||
can_comment: true
|
||||
editable_features:
|
||||
- 6
|
||||
- 6
|
||||
can_create_feature: true
|
||||
can_edit_all: true
|
||||
email: email
|
||||
approvable_gate_types:
|
||||
- 0
|
||||
- 0
|
||||
properties:
|
||||
message:
|
||||
example: Done
|
||||
title: message
|
||||
user:
|
||||
$ref: '#/components/schemas/UserPermissions'
|
||||
required:
|
||||
- user
|
||||
title: PermissionsResponse
|
||||
type: object
|
||||
UserPermissions:
|
||||
example:
|
||||
is_admin: true
|
||||
can_comment: true
|
||||
editable_features:
|
||||
- 6
|
||||
- 6
|
||||
can_create_feature: true
|
||||
can_edit_all: true
|
||||
email: email
|
||||
approvable_gate_types:
|
||||
- 0
|
||||
- 0
|
||||
properties:
|
||||
can_create_feature:
|
||||
title: can_create_feature
|
||||
type: boolean
|
||||
approvable_gate_types:
|
||||
description: each element should be unique as OAS does not support set
|
||||
items:
|
||||
type: integer
|
||||
title: approvable_gate_types
|
||||
type: array
|
||||
can_comment:
|
||||
title: can_comment
|
||||
type: boolean
|
||||
can_edit_all:
|
||||
title: can_edit_all
|
||||
type: boolean
|
||||
is_admin:
|
||||
title: is_admin
|
||||
type: boolean
|
||||
email:
|
||||
format: email
|
||||
title: email
|
||||
type: string
|
||||
title: deleteAccount_200_response
|
||||
editable_features:
|
||||
items:
|
||||
type: integer
|
||||
title: editable_features
|
||||
type: array
|
||||
required:
|
||||
- approvable_gate_types
|
||||
- can_comment
|
||||
- can_create_feature
|
||||
- can_edit_all
|
||||
- editable_features
|
||||
- email
|
||||
- is_admin
|
||||
title: UserPermissions
|
||||
type: object
|
||||
DismissCueRequest:
|
||||
example:
|
||||
|
@ -916,6 +999,16 @@ components:
|
|||
example: Error
|
||||
type: string
|
||||
type: object
|
||||
deleteAccount_200_response:
|
||||
example:
|
||||
message: Done
|
||||
properties:
|
||||
message:
|
||||
example: Done
|
||||
title: message
|
||||
type: string
|
||||
title: deleteAccount_200_response
|
||||
type: object
|
||||
getDismissedCues_400_response:
|
||||
example:
|
||||
error: error
|
||||
|
|
|
@ -13,6 +13,7 @@ from chromestatus_openapi.models.feature_latency import FeatureLatency # noqa:
|
|||
from chromestatus_openapi.models.get_dismissed_cues400_response import GetDismissedCues400Response # noqa: E501
|
||||
from chromestatus_openapi.models.get_intent_response import GetIntentResponse # noqa: E501
|
||||
from chromestatus_openapi.models.message_response import MessageResponse # noqa: E501
|
||||
from chromestatus_openapi.models.permissions_response import PermissionsResponse # noqa: E501
|
||||
from chromestatus_openapi.models.post_intent_request import PostIntentRequest # noqa: E501
|
||||
from chromestatus_openapi.models.review_latency import ReviewLatency # noqa: E501
|
||||
from chromestatus_openapi.models.spec_mentor import SpecMentor # noqa: E501
|
||||
|
@ -125,6 +126,23 @@ class TestDefaultController(BaseTestCase):
|
|||
self.assert200(response,
|
||||
'Response body is : ' + response.data.decode('utf-8'))
|
||||
|
||||
def test_get_user_permissions(self):
|
||||
"""Test case for get_user_permissions
|
||||
|
||||
Get the permissions and email of the user
|
||||
"""
|
||||
query_string = [('returnPairedUser', True)]
|
||||
headers = {
|
||||
'Accept': 'application/json',
|
||||
}
|
||||
response = self.client.open(
|
||||
'/api/v0/currentuser/permissions',
|
||||
method='GET',
|
||||
headers=headers,
|
||||
query_string=query_string)
|
||||
self.assert200(response,
|
||||
'Response body is : ' + response.data.decode('utf-8'))
|
||||
|
||||
def test_list_component_users(self):
|
||||
"""Test case for list_component_users
|
||||
|
||||
|
|
|
@ -125,6 +125,38 @@ paths:
|
|||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/ComponentUsersRequest'
|
||||
/review-latency:
|
||||
get:
|
||||
summary: List recently reviewed features and their review latency
|
||||
operationId: listReviewsWithLatency
|
||||
responses:
|
||||
'200':
|
||||
description: >-
|
||||
List of recent reviews and their latency.
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/ReviewLatency'
|
||||
/currentuser/permissions:
|
||||
get:
|
||||
summary: Get the permissions and email of the user
|
||||
operationId: getUserPermissions
|
||||
parameters:
|
||||
- in: query
|
||||
name: returnPairedUser
|
||||
schema:
|
||||
type: boolean
|
||||
required: false
|
||||
description: If true, return the permissions of the paired user.
|
||||
responses:
|
||||
'200':
|
||||
description: The permissions and email of the user.
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/PermissionsResponse'
|
||||
/currentuser/cues:
|
||||
get:
|
||||
summary: Get dismissed cues for the current user
|
||||
|
@ -163,20 +195,6 @@ paths:
|
|||
application/json:
|
||||
schema:
|
||||
$ref: '#/components/schemas/SuccessMessage'
|
||||
/review-latency:
|
||||
get:
|
||||
summary: List recently reviewed features and their review latency
|
||||
operationId: listReviewsWithLatency
|
||||
responses:
|
||||
'200':
|
||||
description: >-
|
||||
List of recent reviews and their latency.
|
||||
content:
|
||||
application/json:
|
||||
schema:
|
||||
type: array
|
||||
items:
|
||||
$ref: '#/components/schemas/ReviewLatency'
|
||||
/external_reviews/{review_group}:
|
||||
get:
|
||||
summary: List features whose external reviews are incomplete
|
||||
|
@ -659,6 +677,44 @@ components:
|
|||
LinkPreviewSpecs:
|
||||
allOf:
|
||||
- $ref: '#/components/schemas/LinkPreviewOpenGraph'
|
||||
PermissionsResponse:
|
||||
type: object
|
||||
properties:
|
||||
user:
|
||||
$ref: '#/components/schemas/UserPermissions'
|
||||
required:
|
||||
- user
|
||||
UserPermissions:
|
||||
type: object
|
||||
properties:
|
||||
can_create_feature:
|
||||
type: boolean
|
||||
approvable_gate_types:
|
||||
type: array
|
||||
items:
|
||||
type: integer
|
||||
description: each element should be unique as OAS does not support set
|
||||
can_comment:
|
||||
type: boolean
|
||||
can_edit_all:
|
||||
type: boolean
|
||||
is_admin:
|
||||
type: boolean
|
||||
email:
|
||||
type: string
|
||||
format: email
|
||||
editable_features:
|
||||
type: array
|
||||
items:
|
||||
type: integer
|
||||
required:
|
||||
- can_create_feature
|
||||
- approvable_gate_types
|
||||
- can_comment
|
||||
- can_edit_all
|
||||
- is_admin
|
||||
- email
|
||||
- editable_features
|
||||
DismissCueRequest:
|
||||
type: object
|
||||
properties:
|
||||
|
|
Загрузка…
Ссылка в новой задаче