updated space api endpoint to list all spaces + addtional /current/ endpoint

This commit is contained in:
vabene1111
2024-08-20 13:49:12 +02:00
parent ad71804b70
commit 4ba769a49e
5 changed files with 54 additions and 7 deletions

View File

@@ -312,6 +312,7 @@ class UserFileViewSerializer(serializers.ModelSerializer):
class SpaceSerializer(WritableNestedModelSerializer): class SpaceSerializer(WritableNestedModelSerializer):
created_by = UserSerializer(read_only=True)
user_count = serializers.SerializerMethodField('get_user_count') user_count = serializers.SerializerMethodField('get_user_count')
recipe_count = serializers.SerializerMethodField('get_recipe_count') recipe_count = serializers.SerializerMethodField('get_recipe_count')
file_size_mb = serializers.SerializerMethodField('get_file_size_mb') file_size_mb = serializers.SerializerMethodField('get_file_size_mb')

View File

@@ -422,7 +422,13 @@ class SpaceViewSet(viewsets.ModelViewSet):
http_method_names = ['get', 'patch'] http_method_names = ['get', 'patch']
def get_queryset(self): def get_queryset(self):
return self.queryset.filter(id=self.request.space.id) return self.queryset.filter(id__in=UserSpace.objects.filter(user=self.request.user))
@extend_schema(responses=SpaceSerializer(many=False))
@decorators.action(detail=False, pagination_class=None, methods=['GET'], serializer_class=SpaceSerializer, )
def current(self, request):
self.queryset.filter(id=self.request.space.id)
return Response(self.serializer_class(self.request.space, many=False).data)
# TODO what is internal_note for? # TODO what is internal_note for?

View File

@@ -9300,6 +9300,34 @@ export class ApiApi extends runtime.BaseAPI {
return await response.value(); return await response.value();
} }
/**
*/
async apiSpaceCurrentRetrieveRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Space>> {
const queryParameters: any = {};
const headerParameters: runtime.HTTPHeaders = {};
if (this.configuration && this.configuration.apiKey) {
headerParameters["Authorization"] = await this.configuration.apiKey("Authorization"); // ApiKeyAuth authentication
}
const response = await this.request({
path: `/api/space/current/`,
method: 'GET',
headers: headerParameters,
query: queryParameters,
}, initOverrides);
return new runtime.JSONApiResponse(response, (jsonValue) => SpaceFromJSON(jsonValue));
}
/**
*/
async apiSpaceCurrentRetrieve(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<Space> {
const response = await this.apiSpaceCurrentRetrieveRaw(initOverrides);
return await response.value();
}
/** /**
*/ */
async apiSpaceListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Space>>> { async apiSpaceListRaw(initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<Array<Space>>> {

View File

@@ -31,6 +31,12 @@ import {
SpaceThemeEnumFromJSONTyped, SpaceThemeEnumFromJSONTyped,
SpaceThemeEnumToJSON, SpaceThemeEnumToJSON,
} from './SpaceThemeEnum'; } from './SpaceThemeEnum';
import type { User } from './User';
import {
UserFromJSON,
UserFromJSONTyped,
UserToJSON,
} from './User';
import type { UserFileView } from './UserFileView'; import type { UserFileView } from './UserFileView';
import { import {
UserFileViewFromJSON, UserFileViewFromJSON,
@@ -58,10 +64,10 @@ export interface PatchedSpace {
name?: string; name?: string;
/** /**
* *
* @type {number} * @type {User}
* @memberof PatchedSpace * @memberof PatchedSpace
*/ */
readonly createdBy?: number; readonly createdBy?: User;
/** /**
* *
* @type {Date} * @type {Date}
@@ -227,7 +233,7 @@ export function PatchedSpaceFromJSONTyped(json: any, ignoreDiscriminator: boolea
'id': json['id'] == null ? undefined : json['id'], 'id': json['id'] == null ? undefined : json['id'],
'name': json['name'] == null ? undefined : json['name'], 'name': json['name'] == null ? undefined : json['name'],
'createdBy': json['created_by'] == null ? undefined : json['created_by'], 'createdBy': json['created_by'] == null ? undefined : UserFromJSON(json['created_by']),
'createdAt': json['created_at'] == null ? undefined : (new Date(json['created_at'])), 'createdAt': json['created_at'] == null ? undefined : (new Date(json['created_at'])),
'message': json['message'] == null ? undefined : json['message'], 'message': json['message'] == null ? undefined : json['message'],
'maxRecipes': json['max_recipes'] == null ? undefined : json['max_recipes'], 'maxRecipes': json['max_recipes'] == null ? undefined : json['max_recipes'],

View File

@@ -31,6 +31,12 @@ import {
SpaceThemeEnumFromJSONTyped, SpaceThemeEnumFromJSONTyped,
SpaceThemeEnumToJSON, SpaceThemeEnumToJSON,
} from './SpaceThemeEnum'; } from './SpaceThemeEnum';
import type { User } from './User';
import {
UserFromJSON,
UserFromJSONTyped,
UserToJSON,
} from './User';
import type { UserFileView } from './UserFileView'; import type { UserFileView } from './UserFileView';
import { import {
UserFileViewFromJSON, UserFileViewFromJSON,
@@ -58,10 +64,10 @@ export interface Space {
name?: string; name?: string;
/** /**
* *
* @type {number} * @type {User}
* @memberof Space * @memberof Space
*/ */
readonly createdBy: number | null; readonly createdBy: User;
/** /**
* *
* @type {Date} * @type {Date}
@@ -238,7 +244,7 @@ export function SpaceFromJSONTyped(json: any, ignoreDiscriminator: boolean): Spa
'id': json['id'] == null ? undefined : json['id'], 'id': json['id'] == null ? undefined : json['id'],
'name': json['name'] == null ? undefined : json['name'], 'name': json['name'] == null ? undefined : json['name'],
'createdBy': json['created_by'], 'createdBy': UserFromJSON(json['created_by']),
'createdAt': (new Date(json['created_at'])), 'createdAt': (new Date(json['created_at'])),
'message': json['message'] == null ? undefined : json['message'], 'message': json['message'] == null ? undefined : json['message'],
'maxRecipes': json['max_recipes'], 'maxRecipes': json['max_recipes'],