mirror of
https://github.com/TandoorRecipes/recipes.git
synced 2026-01-05 06:08:46 -05:00
space and user space api updates
This commit is contained in:
@@ -455,3 +455,9 @@ class IsReadOnlyDRF(permissions.BasePermission):
|
||||
|
||||
def has_permission(self, request, view):
|
||||
return request.method in SAFE_METHODS
|
||||
|
||||
class IsCreateDRF(permissions.BasePermission):
|
||||
message = 'You cannot interact with this object, you can only create'
|
||||
|
||||
def has_permission(self, request, view):
|
||||
return request.method == 'POST'
|
||||
@@ -46,13 +46,15 @@ class ScopeMiddleware:
|
||||
# get active user space, if for some reason more than one space is active select first (group permission checks will fail, this is not intended at this point)
|
||||
user_space = request.user.userspace_set.filter(active=True).first()
|
||||
|
||||
if not user_space:
|
||||
if request.user.userspace_set.count() > 0:
|
||||
if not user_space and request.user.userspace_set.count() > 0:
|
||||
# if the users has a userspace but nothing is active, activate the first one
|
||||
user_space = request.user.userspace_set.filter(active=True).first()
|
||||
user_space = request.user.userspace_set.first()
|
||||
if user_space:
|
||||
user_space.active = True
|
||||
user_space.save()
|
||||
elif 'signup_token' in request.session:
|
||||
|
||||
if not user_space:
|
||||
if 'signup_token' in request.session:
|
||||
# if user is authenticated, has no space but a signup token (InviteLink) is present, redirect to invite link logic
|
||||
return HttpResponseRedirect(reverse('view_invite', args=[request.session.pop('signup_token', '')]))
|
||||
else:
|
||||
|
||||
@@ -75,7 +75,7 @@ from cookbook.helper.permission_helper import (CustomIsAdmin, CustomIsOwner, Cus
|
||||
CustomTokenHasScope, CustomUserPermission, IsReadOnlyDRF,
|
||||
above_space_limit,
|
||||
group_required, has_group_permission, is_space_owner,
|
||||
switch_user_active_space, CustomAiProviderPermission
|
||||
switch_user_active_space, CustomAiProviderPermission, IsCreateDRF
|
||||
)
|
||||
from cookbook.helper.recipe_search import RecipeSearch
|
||||
from cookbook.helper.recipe_url_import import clean_dict, get_from_youtube_scraper, get_images_from_soup
|
||||
@@ -546,7 +546,7 @@ class GroupViewSet(LoggingMixin, viewsets.ModelViewSet):
|
||||
class SpaceViewSet(LoggingMixin, viewsets.ModelViewSet):
|
||||
queryset = Space.objects
|
||||
serializer_class = SpaceSerializer
|
||||
permission_classes = [IsReadOnlyDRF & CustomIsGuest | CustomIsOwner & CustomIsAdmin & CustomTokenHasReadWriteScope]
|
||||
permission_classes = [((IsReadOnlyDRF | IsCreateDRF) & CustomIsGuest) | CustomIsOwner & CustomIsAdmin & CustomTokenHasReadWriteScope]
|
||||
pagination_class = DefaultPagination
|
||||
http_method_names = ['get', 'post', 'put', 'patch']
|
||||
|
||||
@@ -567,7 +567,7 @@ class SpaceViewSet(LoggingMixin, viewsets.ModelViewSet):
|
||||
class UserSpaceViewSet(LoggingMixin, viewsets.ModelViewSet):
|
||||
queryset = UserSpace.objects
|
||||
serializer_class = UserSpaceSerializer
|
||||
permission_classes = [(CustomIsSpaceOwner | CustomIsOwnerReadOnly) & CustomTokenHasReadWriteScope]
|
||||
permission_classes = [(CustomIsSpaceOwner | (IsReadOnlyDRF & CustomIsUser) | CustomIsOwnerReadOnly) & CustomTokenHasReadWriteScope]
|
||||
http_method_names = ['get', 'put', 'patch', 'delete']
|
||||
pagination_class = DefaultPagination
|
||||
|
||||
@@ -581,10 +581,23 @@ class UserSpaceViewSet(LoggingMixin, viewsets.ModelViewSet):
|
||||
if internal_note is not None:
|
||||
self.queryset = self.queryset.filter(internal_note=internal_note)
|
||||
|
||||
if is_space_owner(self.request.user, self.request.space):
|
||||
# starting with users you can SEE all other users in a space, guests only see themselves
|
||||
if has_group_permission(self.request.user, ['user']):
|
||||
return self.queryset.filter(space=self.request.space)
|
||||
else:
|
||||
return self.queryset.filter(user=self.request.user, space=self.request.space)
|
||||
return self.queryset.filter(space=self.request.space, user=self.request.user)
|
||||
|
||||
@extend_schema(responses=UserSpaceSerializer(many=True))
|
||||
@decorators.action(detail=False, pagination_class=DefaultPagination, methods=['GET'], serializer_class=UserSpaceSerializer, )
|
||||
def all_personal(self, request):
|
||||
"""
|
||||
return all userspaces for the user requesting the endpoint
|
||||
:param request:
|
||||
:return:
|
||||
"""
|
||||
with scopes_disabled():
|
||||
self.queryset = self.queryset.filter(user=self.request.user)
|
||||
return Response(self.serializer_class(self.queryset.all(), many=True, context={'request': self.request}).data)
|
||||
|
||||
|
||||
class UserPreferenceViewSet(LoggingMixin, viewsets.ModelViewSet):
|
||||
|
||||
@@ -163,7 +163,7 @@ onMounted(() => {
|
||||
* global title update handler, might be overridden by page specific handlers
|
||||
*/
|
||||
router.afterEach((to, from) => {
|
||||
if(to.name != 'WelcomePage' && !useUserPreferenceStore().activeSpace.spaceSetupCompleted && useUserPreferenceStore().activeSpace.createdBy.id! == useUserPreferenceStore().userSettings.user.id!){
|
||||
if(to.name == 'StartPage' && !useUserPreferenceStore().activeSpace.spaceSetupCompleted && useUserPreferenceStore().activeSpace.createdBy.id! == useUserPreferenceStore().userSettings.user.id!){
|
||||
router.push({name: 'WelcomePage'})
|
||||
}
|
||||
nextTick(() => {
|
||||
|
||||
@@ -98,7 +98,7 @@
|
||||
<script setup lang="ts">
|
||||
|
||||
import {ApiApi, UserFile, UserFileFromJSON} from "@/openapi";
|
||||
import {onMounted, ref} from "vue";
|
||||
import {onMounted, ref, watch} from "vue";
|
||||
import {DateTime} from "luxon";
|
||||
import {ErrorMessageType, PreparedMessage, useMessageStore} from "@/stores/MessageStore";
|
||||
import {getCookie} from "@/utils/cookie";
|
||||
@@ -131,8 +131,13 @@ const tableHeaders = ref([
|
||||
])
|
||||
|
||||
onMounted(() => {
|
||||
//TODO move to open function of file tab
|
||||
|
||||
})
|
||||
|
||||
watch(() => dialog.value, (value, oldValue) => {
|
||||
if (value && !oldValue) {
|
||||
loadFiles()
|
||||
}
|
||||
})
|
||||
|
||||
function loadFiles() {
|
||||
|
||||
@@ -29,7 +29,7 @@
|
||||
|
||||
<v-textarea v-model="editingObj.message" :label="$t('Message')" clearable></v-textarea>
|
||||
|
||||
<space-limits-info :space="editingObj" :show-thank-you="false"></space-limits-info>
|
||||
<space-limits-info :space="editingObj" :show-thank-you="false" v-if="isUpdate()"></space-limits-info>
|
||||
|
||||
</v-form>
|
||||
</v-tabs-window-item>
|
||||
|
||||
@@ -162,6 +162,7 @@
|
||||
"Keyword": "",
|
||||
"Keyword_Alias": "",
|
||||
"Keywords": "",
|
||||
"LeaveSpace": "",
|
||||
"Link": "",
|
||||
"Load_More": "",
|
||||
"LogCredits": "",
|
||||
@@ -292,6 +293,7 @@
|
||||
"Sort_by_new": "",
|
||||
"Space": "",
|
||||
"SpaceHelp": "",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"Starting_Day": "",
|
||||
|
||||
@@ -157,6 +157,7 @@
|
||||
"Keyword": "Ключова дума",
|
||||
"Keyword_Alias": "Псевдоним на ключова дума",
|
||||
"Keywords": "Ключови думи",
|
||||
"LeaveSpace": "",
|
||||
"Link": "Връзка",
|
||||
"Load_More": "Зареди още",
|
||||
"LogCredits": "",
|
||||
@@ -285,6 +286,7 @@
|
||||
"Sort_by_new": "Сортиране по ново",
|
||||
"Space": "",
|
||||
"SpaceHelp": "",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"Starting_Day": "Начален ден от седмицата",
|
||||
|
||||
@@ -211,6 +211,7 @@
|
||||
"Language": "Llenguatge",
|
||||
"Last_name": "Cognoms",
|
||||
"Learn_More": "Saber-me més",
|
||||
"LeaveSpace": "",
|
||||
"Link": "Enllaç",
|
||||
"Load_More": "Carregueu-ne més",
|
||||
"LogCredits": "",
|
||||
@@ -370,6 +371,7 @@
|
||||
"Sort_by_new": "Ordenar a partir del més nou",
|
||||
"Space": "",
|
||||
"SpaceHelp": "",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"Space_Cosmetic_Settings": "Un administrador de l'espai podria canviar algunes configuracions estètiques i tindrien prioritat sobre la configuració dels usuaris per a aquest espai.",
|
||||
|
||||
@@ -209,6 +209,7 @@
|
||||
"Language": "Jazyk",
|
||||
"Last_name": "Příjmení",
|
||||
"Learn_More": "Zjistit víc",
|
||||
"LeaveSpace": "",
|
||||
"Link": "Odkaz",
|
||||
"Load_More": "Načíst další",
|
||||
"LogCredits": "",
|
||||
@@ -365,6 +366,7 @@
|
||||
"Sort_by_new": "Seřadit od nejnovějšího",
|
||||
"Space": "",
|
||||
"SpaceHelp": "",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"Space_Cosmetic_Settings": "Některá kosmetická nastavení mohou měnit správci prostoru a budou mít přednost před nastavením klienta pro daný prostor.",
|
||||
|
||||
@@ -211,6 +211,7 @@
|
||||
"Language": "Sprog",
|
||||
"Last_name": "Efternavn",
|
||||
"Learn_More": "Lær mere",
|
||||
"LeaveSpace": "",
|
||||
"Link": "Link",
|
||||
"Load_More": "Indlæs mere",
|
||||
"LogCredits": "",
|
||||
@@ -370,6 +371,7 @@
|
||||
"Sort_by_new": "Sorter efter nylige",
|
||||
"Space": "",
|
||||
"SpaceHelp": "",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"Space_Cosmetic_Settings": "Visse kosmetiske indstillinger kan ændres af område-administratorer og vil overskrive klient-indstillinger for pågældende område.",
|
||||
|
||||
@@ -290,6 +290,7 @@
|
||||
"Last": "Letztes",
|
||||
"Last_name": "Nachname",
|
||||
"Learn_More": "Mehr erfahren",
|
||||
"LeaveSpace": "Space verlassen",
|
||||
"Link": "Link",
|
||||
"Load": "Laden",
|
||||
"Load_More": "Weitere laden",
|
||||
@@ -515,7 +516,7 @@
|
||||
"SpaceLimitReached": "Dieser Space hat ein Limit erreicht. Es können keine neuen Objekte von diesem Typ angelegt werden.",
|
||||
"SpaceMemberHelp": "Füge Benutzer hinzu indem du Einladungen erstellst und Sie an die gewünschte Person sendest.",
|
||||
"SpaceMembers": "Space Mitglieder",
|
||||
"SpaceMembersHelp": "Benutzer und Ihre Rechte in einem Space. ",
|
||||
"SpaceMembersHelp": "Benutzer und Ihre Rechte in einem Space. Füge weitere Nutzer mit Einladungslinks hinzu.",
|
||||
"SpaceName": "Space Name",
|
||||
"SpacePrivateObjectsHelp": "Einige Objekte sind Standardmäßig privat, können aber mit Mitgliedern deines Spaces geteilt werden.",
|
||||
"SpaceSettings": "Space Einstellungen",
|
||||
|
||||
@@ -211,6 +211,7 @@
|
||||
"Language": "Γλώσσα",
|
||||
"Last_name": "Επίθετο",
|
||||
"Learn_More": "Μάθετε περισσότερα",
|
||||
"LeaveSpace": "",
|
||||
"Link": "Σύνδεσμος",
|
||||
"Load_More": "Φόρτωση περισσότερων",
|
||||
"LogCredits": "",
|
||||
@@ -370,6 +371,7 @@
|
||||
"Sort_by_new": "Ταξινόμηση κατά νέο",
|
||||
"Space": "",
|
||||
"SpaceHelp": "",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"Space_Cosmetic_Settings": "Ορισμένες ρυθμίσεις εμφάνισης μπορούν να αλλάξουν από τους διαχειριστές του χώρου και θα παρακάμψουν τις ρυθμίσεις πελάτη για αυτόν τον χώρο.",
|
||||
|
||||
@@ -288,6 +288,7 @@
|
||||
"Last": "Last",
|
||||
"Last_name": "Last Name",
|
||||
"Learn_More": "Learn More",
|
||||
"LeaveSpace": "Leave Space",
|
||||
"Link": "Link",
|
||||
"Load": "Load",
|
||||
"Load_More": "Load More",
|
||||
@@ -513,7 +514,7 @@
|
||||
"SpaceLimitReached": "This Space has reached a limit. No more objects of this type can be created.",
|
||||
"SpaceMemberHelp": "Add users to your space by creating an Invite Link and sending it to the person you want to add.",
|
||||
"SpaceMembers": "Space Members",
|
||||
"SpaceMembersHelp": "Users and their permissions in a space. ",
|
||||
"SpaceMembersHelp": "Users and their permissions in a space. Add additional users using invite links.",
|
||||
"SpaceName": "Space Name",
|
||||
"SpacePrivateObjectsHelp": " Some things are private by default an can be shared with members of your space.",
|
||||
"SpaceSettings": "Space Settings",
|
||||
|
||||
@@ -279,6 +279,7 @@
|
||||
"Last": "Último",
|
||||
"Last_name": "Apellidos",
|
||||
"Learn_More": "Saber Más",
|
||||
"LeaveSpace": "",
|
||||
"Link": "Enlace",
|
||||
"Load": "Cargar",
|
||||
"Load_More": "Cargar más",
|
||||
@@ -495,7 +496,7 @@
|
||||
"SpaceLimitReached": "Este espacio ha alcanzado un límite. No se pueden crear más objetos de este tipo.",
|
||||
"SpaceMemberHelp": "Agrega usuarios a tu espacio creando un enlace de invitación y enviándolo a la persona que quieras agregar.",
|
||||
"SpaceMembers": "Miembros del espacio",
|
||||
"SpaceMembersHelp": "Usuarios y sus permisos en un espacio. ",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"SpaceSettings": "Ajustes del espacio",
|
||||
|
||||
@@ -205,6 +205,7 @@
|
||||
"Language": "Kieli",
|
||||
"Last_name": "Sukunimi",
|
||||
"Learn_More": "Lisätietoja",
|
||||
"LeaveSpace": "",
|
||||
"Link": "Linkki",
|
||||
"Load_More": "Lataa Lisää",
|
||||
"LogCredits": "",
|
||||
@@ -358,6 +359,7 @@
|
||||
"Sort_by_new": "Lajittele uusien mukaan",
|
||||
"Space": "",
|
||||
"SpaceHelp": "",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"Split_All_Steps": "Jaa kaikki rivit erillisiin vaiheisiin.",
|
||||
|
||||
@@ -288,6 +288,7 @@
|
||||
"Last": "Dernier",
|
||||
"Last_name": "Nom",
|
||||
"Learn_More": "Apprenez-en plus",
|
||||
"LeaveSpace": "",
|
||||
"Link": "Lien",
|
||||
"Load": "Chargement",
|
||||
"Load_More": "Charger plus",
|
||||
@@ -510,7 +511,7 @@
|
||||
"SpaceLimitReached": "Ce groupe a atteint sa limite. Aucun nouvel objet de ce type ne peut être créé.",
|
||||
"SpaceMemberHelp": "Ajoutez des utilisateurs à votre espace en créant un lien d'invitation et en l'envoyant à la personne que vous souhaitez ajouter.",
|
||||
"SpaceMembers": "Membres du groupe",
|
||||
"SpaceMembersHelp": "Utilisateurs et permissions dans un groupe. ",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"SpaceSettings": "Paramètres du groupe",
|
||||
|
||||
@@ -211,6 +211,7 @@
|
||||
"Language": "שפה",
|
||||
"Last_name": "שם משפחה",
|
||||
"Learn_More": "למד עוד",
|
||||
"LeaveSpace": "",
|
||||
"Link": "קישור",
|
||||
"Load_More": "טען עוד",
|
||||
"LogCredits": "",
|
||||
@@ -370,6 +371,7 @@
|
||||
"Sort_by_new": "סדר ע\"י חדש",
|
||||
"Space": "",
|
||||
"SpaceHelp": "",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"Space_Cosmetic_Settings": "חלק מהגדרות הקוסמטיות יכולות להיות מעודכנות על ידי מנהל המרחב וידרסו את הגדרות הקליינט עבור מרחב זה.",
|
||||
|
||||
@@ -211,6 +211,7 @@
|
||||
"Language": "Jezik",
|
||||
"Last_name": "Prezime",
|
||||
"Learn_More": "Saznajte više",
|
||||
"LeaveSpace": "",
|
||||
"Link": "Poveznica",
|
||||
"Load_More": "Učitaj više",
|
||||
"LogCredits": "",
|
||||
@@ -370,6 +371,7 @@
|
||||
"Sort_by_new": "Poredaj po novom",
|
||||
"Space": "",
|
||||
"SpaceHelp": "",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"Space_Cosmetic_Settings": "Neke kozmetičke postavke mogu promijeniti administratori prostora i one će poništiti postavke klijenta za taj prostor.",
|
||||
|
||||
@@ -193,6 +193,7 @@
|
||||
"Language": "Nyelv",
|
||||
"Last_name": "Vezetéknév",
|
||||
"Learn_More": "Tudjon meg többet",
|
||||
"LeaveSpace": "",
|
||||
"Link": "Link",
|
||||
"Load_More": "Továbbiak betöltése",
|
||||
"LogCredits": "",
|
||||
@@ -337,6 +338,7 @@
|
||||
"Sort_by_new": "Rendezés legújabbak szerint",
|
||||
"Space": "",
|
||||
"SpaceHelp": "",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"Split_All_Steps": "Ossza fel az összes sort különálló lépésekbe.",
|
||||
|
||||
@@ -83,6 +83,7 @@
|
||||
"Information": "Տեղեկություն",
|
||||
"Ingredients": "",
|
||||
"Keywords": "",
|
||||
"LeaveSpace": "",
|
||||
"Link": "",
|
||||
"Load_More": "",
|
||||
"LogCredits": "",
|
||||
@@ -154,6 +155,7 @@
|
||||
"Sort_by_new": "Տեսակավորել ըստ նորերի",
|
||||
"Space": "",
|
||||
"SpaceHelp": "",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"StartsWith": "",
|
||||
|
||||
@@ -178,6 +178,7 @@
|
||||
"Keywords": "Kata Kunci",
|
||||
"Language": "",
|
||||
"Last_name": "",
|
||||
"LeaveSpace": "",
|
||||
"Link": "Link",
|
||||
"Load_More": "Muat lebih banyak",
|
||||
"LogCredits": "",
|
||||
@@ -314,6 +315,7 @@
|
||||
"Sort_by_new": "Urutkan berdasarkan baru",
|
||||
"Space": "",
|
||||
"SpaceHelp": "",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"Starting_Day": "",
|
||||
|
||||
@@ -210,6 +210,7 @@
|
||||
"Language": "",
|
||||
"Last_name": "",
|
||||
"Learn_More": "",
|
||||
"LeaveSpace": "",
|
||||
"Link": "",
|
||||
"Load_More": "",
|
||||
"LogCredits": "",
|
||||
@@ -368,6 +369,7 @@
|
||||
"Sort_by_new": "",
|
||||
"Space": "",
|
||||
"SpaceHelp": "",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"Space_Cosmetic_Settings": "",
|
||||
|
||||
@@ -288,6 +288,7 @@
|
||||
"Last": "Ultimo",
|
||||
"Last_name": "Cognome",
|
||||
"Learn_More": "Scopri altro",
|
||||
"LeaveSpace": "",
|
||||
"Link": "Collegamento",
|
||||
"Load": "Carica",
|
||||
"Load_More": "Carica altro",
|
||||
@@ -512,7 +513,7 @@
|
||||
"SpaceLimitReached": "Questo spazio ha raggiunto il limite. Non è possibile creare altri oggetti di questo tipo.",
|
||||
"SpaceMemberHelp": "Aggiungi utenti al tuo spazio creando un collegamento di invito e inviandolo alla persona che desideri aggiungere.",
|
||||
"SpaceMembers": "Membri dello spazio",
|
||||
"SpaceMembersHelp": "Utenti e relativi permessi in uno spazio. ",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"SpaceSettings": "Impostazioni spazio",
|
||||
|
||||
@@ -195,6 +195,7 @@
|
||||
"Language": "",
|
||||
"Last_name": "",
|
||||
"Learn_More": "",
|
||||
"LeaveSpace": "",
|
||||
"Link": "",
|
||||
"Load_More": "Įkelti daugiau",
|
||||
"LogCredits": "",
|
||||
@@ -342,6 +343,7 @@
|
||||
"Sort_by_new": "Rūšiuoti pagal naujumą",
|
||||
"Space": "",
|
||||
"SpaceHelp": "",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"Split_All_Steps": "",
|
||||
|
||||
@@ -211,6 +211,7 @@
|
||||
"Language": "",
|
||||
"Last_name": "",
|
||||
"Learn_More": "",
|
||||
"LeaveSpace": "",
|
||||
"Link": "",
|
||||
"Load_More": "",
|
||||
"LogCredits": "",
|
||||
@@ -370,6 +371,7 @@
|
||||
"Sort_by_new": "",
|
||||
"Space": "",
|
||||
"SpaceHelp": "",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"Space_Cosmetic_Settings": "",
|
||||
|
||||
@@ -202,6 +202,7 @@
|
||||
"Language": "Språk",
|
||||
"Last_name": "Etternavn",
|
||||
"Learn_More": "Lær mer",
|
||||
"LeaveSpace": "",
|
||||
"Link": "Lenke",
|
||||
"Load_More": "Last inn flere",
|
||||
"LogCredits": "",
|
||||
@@ -352,6 +353,7 @@
|
||||
"Sort_by_new": "Sorter etter nyest",
|
||||
"Space": "",
|
||||
"SpaceHelp": "",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"Split_All_Steps": "",
|
||||
|
||||
@@ -289,6 +289,7 @@
|
||||
"Last": "Laatste",
|
||||
"Last_name": "Achternaam",
|
||||
"Learn_More": "Meer informatie",
|
||||
"LeaveSpace": "",
|
||||
"Link": "Link",
|
||||
"Load": "Laden",
|
||||
"Load_More": "Laad meer",
|
||||
@@ -513,7 +514,7 @@
|
||||
"SpaceLimitReached": "Deze ruimte heeft een limiet bereikt. Er kunnen geen objecten van dit type meer worden aangemaakt.",
|
||||
"SpaceMemberHelp": "Voeg gebruikers toe aan je ruimte door een uitnodigingslink aan te maken en naar de persoon te sturen die je wilt toevoegen.",
|
||||
"SpaceMembers": "Gebruikers van de ruimte",
|
||||
"SpaceMembersHelp": "Gebruikers en hun rechten in een ruimte. ",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"SpaceSettings": "Ruimte-instellingen",
|
||||
|
||||
@@ -237,6 +237,7 @@
|
||||
"Language": "Język",
|
||||
"Last_name": "Nazwisko",
|
||||
"Learn_More": "Dowiedz się więcej",
|
||||
"LeaveSpace": "",
|
||||
"Link": "Link",
|
||||
"Load_More": "Załaduj więcej",
|
||||
"LogCredits": "",
|
||||
@@ -396,6 +397,7 @@
|
||||
"Sort_by_new": "Sortuj według nowych",
|
||||
"Space": "",
|
||||
"SpaceHelp": "",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"Space_Cosmetic_Settings": "Administratorzy przestrzeni mogą zmienić niektóre ustawienia kosmetyczne, które zastąpią ustawienia klienta dla tej przestrzeni.",
|
||||
|
||||
@@ -169,6 +169,7 @@
|
||||
"Keywords": "Palavras-chave",
|
||||
"Language": "Linguagem",
|
||||
"Learn_More": "Aprenda mais",
|
||||
"LeaveSpace": "",
|
||||
"Link": "Ligação",
|
||||
"Load_More": "Carregar Mais",
|
||||
"LogCredits": "",
|
||||
@@ -303,6 +304,7 @@
|
||||
"Sort_by_new": "Ordenar por mais recente",
|
||||
"Space": "",
|
||||
"SpaceHelp": "",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"StartDate": "Data de início",
|
||||
|
||||
@@ -287,6 +287,7 @@
|
||||
"Last": "Último",
|
||||
"Last_name": "Último Nome",
|
||||
"Learn_More": "Aprender Mais",
|
||||
"LeaveSpace": "",
|
||||
"Link": "Link",
|
||||
"Load": "Carregar",
|
||||
"Load_More": "Carregar mais",
|
||||
@@ -444,6 +445,7 @@
|
||||
"Sort_by_new": "Ordenar por novos",
|
||||
"Space": "",
|
||||
"SpaceHelp": "",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"Space_Cosmetic_Settings": "Algumas configurações cosméticas podem ser alteradas pelos administradores do espaço e substituirão as configurações do cliente para esse espaço.",
|
||||
|
||||
@@ -187,6 +187,7 @@
|
||||
"Keywords": "Cuvinte cheie",
|
||||
"Language": "Limba",
|
||||
"Last_name": "Nume de familie",
|
||||
"LeaveSpace": "",
|
||||
"Link": "Link",
|
||||
"Load_More": "Încărcați mai mult",
|
||||
"LogCredits": "",
|
||||
@@ -326,6 +327,7 @@
|
||||
"Sort_by_new": "Sortare după nou",
|
||||
"Space": "",
|
||||
"SpaceHelp": "",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"Split_All_Steps": "Împărțiți toate rândurile în pași separați.",
|
||||
|
||||
@@ -288,6 +288,7 @@
|
||||
"Last": "Последний",
|
||||
"Last_name": "Фамилия",
|
||||
"Learn_More": "Узнать больше",
|
||||
"LeaveSpace": "",
|
||||
"Link": "Гиперссылка",
|
||||
"Load": "Загрузить",
|
||||
"Load_More": "Загрузить еще",
|
||||
@@ -510,7 +511,7 @@
|
||||
"SpaceLimitReached": "В этом пространстве достигнут лимит. Новые объекты данного типа создавать нельзя.",
|
||||
"SpaceMemberHelp": "Для добавления пользователей создайте пригласительную ссылку и передайте её человеку, которого хотите пригласить.",
|
||||
"SpaceMembers": "Участники пространства",
|
||||
"SpaceMembersHelp": "Пользователи и их права доступа в пространстве. ",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"SpaceSettings": "Настройки пространства",
|
||||
|
||||
@@ -288,6 +288,7 @@
|
||||
"Last": "Zadnji",
|
||||
"Last_name": "Priimek",
|
||||
"Learn_More": "Preberite Več",
|
||||
"LeaveSpace": "",
|
||||
"Link": "Hiperpovezava",
|
||||
"Load": "Naloži",
|
||||
"Load_More": "Naloži več",
|
||||
@@ -512,7 +513,7 @@
|
||||
"SpaceLimitReached": "Ta prostor je dosegel omejitev. Te vrste predmetov ni mogoče ustvariti več.",
|
||||
"SpaceMemberHelp": "Dodajte uporabnike v svoj prostor tako, da ustvarite povezavo za povabilo in jo pošljete osebi, ki jo želite dodati.",
|
||||
"SpaceMembers": "Člani prostora",
|
||||
"SpaceMembersHelp": "Uporabniki in njihova dovoljenja v prostoru. ",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"SpaceSettings": "Nastavitve prostora",
|
||||
|
||||
@@ -248,6 +248,7 @@
|
||||
"Language": "Språk",
|
||||
"Last_name": "Efternamn",
|
||||
"Learn_More": "Läs mer",
|
||||
"LeaveSpace": "",
|
||||
"Link": "Länk",
|
||||
"Load_More": "Ladda mer",
|
||||
"LogCredits": "",
|
||||
@@ -407,6 +408,7 @@
|
||||
"Sort_by_new": "Sortera efter ny",
|
||||
"Space": "",
|
||||
"SpaceHelp": "",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"Space_Cosmetic_Settings": "Vissa kosmetiska inställningar kan ändras av hushålls-administratörer och skriver över klientinställningar för det hushållet.",
|
||||
|
||||
@@ -211,6 +211,7 @@
|
||||
"Language": "Dil",
|
||||
"Last_name": "Soyisim",
|
||||
"Learn_More": "Daha Fazla",
|
||||
"LeaveSpace": "",
|
||||
"Link": "Bağlantı",
|
||||
"Load_More": "Daha Fazla Yükle",
|
||||
"LogCredits": "",
|
||||
@@ -370,6 +371,7 @@
|
||||
"Sort_by_new": "Yeniye göre sırala",
|
||||
"Space": "",
|
||||
"SpaceHelp": "",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"Space_Cosmetic_Settings": "Bazı kozmetik ayarlar alan yöneticileri tarafından değiştirilebilir ve o alanın istemci ayarlarını geçersiz kılar.",
|
||||
|
||||
@@ -186,6 +186,7 @@
|
||||
"Keywords": "Ключові слова",
|
||||
"Language": "Мова",
|
||||
"Learn_More": "Дізнатися Більше",
|
||||
"LeaveSpace": "",
|
||||
"Link": "Посилання",
|
||||
"Load_More": "Завантажити більше",
|
||||
"LogCredits": "",
|
||||
@@ -327,6 +328,7 @@
|
||||
"Sort_by_new": "Сортувати за новими",
|
||||
"Space": "",
|
||||
"SpaceHelp": "",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"StartDate": "Початкова дата",
|
||||
|
||||
@@ -211,6 +211,7 @@
|
||||
"Language": "语言",
|
||||
"Last_name": "姓",
|
||||
"Learn_More": "了解更多",
|
||||
"LeaveSpace": "",
|
||||
"Link": "链接",
|
||||
"Load_More": "加载更多",
|
||||
"LogCredits": "",
|
||||
@@ -370,6 +371,7 @@
|
||||
"Sort_by_new": "按新旧排序",
|
||||
"Space": "",
|
||||
"SpaceHelp": "",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"Space_Cosmetic_Settings": "空间管理员可以更改某些装饰设置,并将覆盖该空间的客户端设置。",
|
||||
|
||||
@@ -287,6 +287,7 @@
|
||||
"Last": "最後",
|
||||
"Last_name": "姓",
|
||||
"Learn_More": "了解更多",
|
||||
"LeaveSpace": "",
|
||||
"Link": "連結",
|
||||
"Load": "載入",
|
||||
"Load_More": "載入更多",
|
||||
@@ -511,7 +512,7 @@
|
||||
"SpaceLimitReached": "此空間已達到限制。無法再建立此類型的物件。",
|
||||
"SpaceMemberHelp": "透過建立邀請連結並發送給您要新增的人來將使用者新增到您的空間。",
|
||||
"SpaceMembers": "空間成員",
|
||||
"SpaceMembersHelp": "空間中的使用者及其權限。 ",
|
||||
"SpaceMembersHelp": "",
|
||||
"SpaceName": "",
|
||||
"SpacePrivateObjectsHelp": "",
|
||||
"SpaceSettings": "空間設定",
|
||||
|
||||
@@ -2148,6 +2148,11 @@ export interface ApiUserRetrieveRequest {
|
||||
id: number;
|
||||
}
|
||||
|
||||
export interface ApiUserSpaceAllPersonalListRequest {
|
||||
page?: number;
|
||||
pageSize?: number;
|
||||
}
|
||||
|
||||
export interface ApiUserSpaceDestroyRequest {
|
||||
id: number;
|
||||
}
|
||||
@@ -16234,6 +16239,44 @@ export class ApiApi extends runtime.BaseAPI {
|
||||
return await response.value();
|
||||
}
|
||||
|
||||
/**
|
||||
* return all userspaces for the user requesting the endpoint :param request: :return:
|
||||
*/
|
||||
async apiUserSpaceAllPersonalListRaw(requestParameters: ApiUserSpaceAllPersonalListRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<PaginatedUserSpaceList>> {
|
||||
const queryParameters: any = {};
|
||||
|
||||
if (requestParameters['page'] != null) {
|
||||
queryParameters['page'] = requestParameters['page'];
|
||||
}
|
||||
|
||||
if (requestParameters['pageSize'] != null) {
|
||||
queryParameters['page_size'] = requestParameters['pageSize'];
|
||||
}
|
||||
|
||||
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/user-space/all_personal/`,
|
||||
method: 'GET',
|
||||
headers: headerParameters,
|
||||
query: queryParameters,
|
||||
}, initOverrides);
|
||||
|
||||
return new runtime.JSONApiResponse(response, (jsonValue) => PaginatedUserSpaceListFromJSON(jsonValue));
|
||||
}
|
||||
|
||||
/**
|
||||
* return all userspaces for the user requesting the endpoint :param request: :return:
|
||||
*/
|
||||
async apiUserSpaceAllPersonalList(requestParameters: ApiUserSpaceAllPersonalListRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<PaginatedUserSpaceList> {
|
||||
const response = await this.apiUserSpaceAllPersonalListRaw(requestParameters, initOverrides);
|
||||
return await response.value();
|
||||
}
|
||||
|
||||
/**
|
||||
* logs request counts to redis cache total/per user/
|
||||
*/
|
||||
|
||||
@@ -34,9 +34,12 @@
|
||||
</v-card-actions>
|
||||
|
||||
<v-card-text v-if="genericModel.model.name == 'AiLog'">
|
||||
{{ $t('MonthlyCreditsUsed') }} ({{ useUserPreferenceStore().activeSpace.aiMonthlyCreditsUsed }} / {{ useUserPreferenceStore().activeSpace.aiCreditsMonthly }})
|
||||
{{ $t('MonthlyCreditsUsed') }} ({{ useUserPreferenceStore().activeSpace.aiMonthlyCreditsUsed }} / {{
|
||||
useUserPreferenceStore().activeSpace.aiCreditsMonthly
|
||||
}})
|
||||
{{ $t('AiCreditsBalance') }} : {{ useUserPreferenceStore().activeSpace.aiCreditsBalance }}
|
||||
<v-progress-linear :model-value="useUserPreferenceStore().activeSpace.aiMonthlyCreditsUsed" :max="useUserPreferenceStore().activeSpace.aiCreditsMonthly"></v-progress-linear>
|
||||
<v-progress-linear :model-value="useUserPreferenceStore().activeSpace.aiMonthlyCreditsUsed"
|
||||
:max="useUserPreferenceStore().activeSpace.aiCreditsMonthly"></v-progress-linear>
|
||||
</v-card-text>
|
||||
</v-card>
|
||||
</v-col>
|
||||
@@ -83,7 +86,7 @@
|
||||
<v-chip label v-else color="info">{{ $t('Space') }}</v-chip>
|
||||
</template>
|
||||
<template v-slot:item.groups="{ item }" v-if="genericModel.model.name == 'UserSpace'">
|
||||
{{item.groups.flatMap((x: Group) => x.name).join(', ')}}
|
||||
{{ item.groups.flatMap((x: Group) => x.name).join(', ') }}
|
||||
</template>
|
||||
<template v-slot:item.action="{ item }">
|
||||
<v-btn class="float-right" icon="$menu" variant="plain">
|
||||
@@ -114,6 +117,11 @@
|
||||
<v-list-item prepend-icon="fa-solid fa-rotate" v-if="genericModel.model.name == 'RecipeImport'" @click="importRecipe(item)">
|
||||
{{ $t('Import') }}
|
||||
</v-list-item>
|
||||
<v-list-item prepend-icon="fa-solid fa-arrow-right-from-bracket"
|
||||
v-if="genericModel.model.name == 'Space' && item.createdBy.id != useUserPreferenceStore().userSettings.user.id!"
|
||||
@click="leaveSpace(item)">
|
||||
{{ $t('LeaveSpace') }}
|
||||
</v-list-item>
|
||||
</v-list>
|
||||
</v-menu>
|
||||
</v-btn>
|
||||
@@ -147,7 +155,7 @@ import {useUserPreferenceStore} from "@/stores/UserPreferenceStore";
|
||||
import ModelMergeDialog from "@/components/dialogs/ModelMergeDialog.vue";
|
||||
import {VDataTableUpdateOptions} from "@/vuetify";
|
||||
import SyncDialog from "@/components/dialogs/SyncDialog.vue";
|
||||
import {ApiApi, ApiRecipeListRequest, Group, RecipeImport} from "@/openapi";
|
||||
import {ApiApi, ApiRecipeListRequest, Group, RecipeImport, Space, UserSpace} from "@/openapi";
|
||||
import {useTitle} from "@vueuse/core";
|
||||
import RecipeShareDialog from "@/components/dialogs/RecipeShareDialog.vue";
|
||||
import AddToShoppingDialog from "@/components/dialogs/AddToShoppingDialog.vue";
|
||||
@@ -264,6 +272,26 @@ function importAllRecipes() {
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* leave the selected space as a user
|
||||
* @param space to leave
|
||||
*/
|
||||
function leaveSpace(space: Space) {
|
||||
let api = new ApiApi()
|
||||
useUserPreferenceStore().userSpaces.forEach((us: UserSpace) => {
|
||||
if (us.space == space.id!) {
|
||||
loading.value = true
|
||||
api.apiUserSpaceDestroy({id: us.id!}).then(r => {
|
||||
|
||||
}).catch(err => {
|
||||
useMessageStore().addError(ErrorMessageType.DELETE_ERROR, err)
|
||||
}).finally(() => {
|
||||
loading.value = false
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
|
||||
@@ -130,7 +130,7 @@ export const useUserPreferenceStore = defineStore('user_preference_store', () =>
|
||||
*/
|
||||
function loadUserSpaces() {
|
||||
let api = new ApiApi()
|
||||
return api.apiUserSpaceList().then(r => {
|
||||
return api.apiUserSpaceAllPersonalList().then(r => {
|
||||
userSpaces.value = r.results
|
||||
}).catch(err => {
|
||||
if (err.response.status != 403) {
|
||||
|
||||
Reference in New Issue
Block a user