Skip to content

Commit 9180402

Browse files
committed
Merge branch 'develop' of github.com:ChatFAQ/ChatFAQ into develop
2 parents 3ad8d78 + 121bfae commit 9180402

9 files changed

Lines changed: 41 additions & 47 deletions

File tree

admin/components/generic/InputSelect.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -119,7 +119,7 @@ function remoteSearch(query) {
119119
if (props.filterSchema.type === "ref")
120120
ref = true
121121
} else {
122-
url = props.schema.properties[props.fieldName].choices.next.split('?')[0]
122+
url = itemsStore.getPathFromSchemaName(props.schema.properties[props.fieldName].$ref.split("/").pop())
123123
resultHolder = props.schema.properties[props.fieldName].choices
124124
ref = true
125125
}

admin/components/generic/WriteView.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -207,7 +207,7 @@ async function initializeFormValues() {
207207
itemsStore.loading = true
208208
const {data} = await useAsyncData(
209209
props.apiUrl + "_" + itemsStore.editing,
210-
async () => await itemsStore.requestOrGetItem($axios, props.apiUrl, {id: itemsStore.editing})
210+
async () => await itemsStore.retrieveItems($axios, props.apiUrl, {id: itemsStore.editing}, false, true)
211211
)
212212
if (data.value) {
213213
for (const [fieldName, fieldValue] of Object.entries(data.value)) {

admin/components/labeling/GenerationReview.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ watch(() => props.messageId, async (_) => {
5454
5555
async function initGenReview() {
5656
itemsStore.loading = true
57-
review.value = await itemsStore.requestOrGetItem($axios, "/back/api/broker/admin-review/", {message: props.messageId}, {limit: 0, offset: 0, ordering: undefined}) || {}
57+
review.value = await itemsStore.retrieveItems($axios, "/back/api/broker/admin-review/", {message: props.messageId, limit: 0, offset: 0, ordering: undefined}, false, true) || {}
5858
reviewType.value = review.value.gen_review_type
5959
itemsStore.loading = false
6060
}

admin/components/labeling/KnowledgeItemReview.vue

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,16 +67,14 @@ async function initKIReview() {
6767
return
6868
}
6969
for (const ki_ref of references.knowledge_items) {
70-
const ki = await itemsStore.requestOrGetItem($axios, "/back/api/language-model/knowledge-items/", {
71-
id: ki_ref.knowledge_item_id
72-
}, {knowledge_base__id: references.knowledge_base_id, limit: 0, offset: 0, ordering: undefined})
70+
const ki = await itemsStore.retrieveItems($axios, "/back/api/language-model/knowledge-items/", {id: ki_ref.knowledge_item_id, limit: 0, offset: 0, ordering: undefined}, false, true)
7371
if (ki)
7472
reviewedKIs.value.kis.push(ki)
7573
}
76-
review.value = await itemsStore.requestOrGetItem($axios, "/back/api/broker/admin-review/", {message: props.message.id}, {limit: 0, offset: 0, ordering: undefined}) || {}
77-
ki_choices.value = await itemsStore.requestOrGetItems($axios, "/back/api/language-model/knowledge-items/", {
74+
review.value = await itemsStore.retrieveItems($axios, "/back/api/broker/admin-review/", {message: props.message.id, limit: 0, offset: 0, ordering: undefined}, false, true) || {}
75+
ki_choices.value = await itemsStore.retrieveItems($axios, "/back/api/language-model/knowledge-items/", {
7876
knowledge_base: references.knowledge_base_id
79-
}, {knowledge_base__id: references.knowledge_base_id, limit: 0, offset: 0, ordering: undefined})
77+
}, {knowledge_base__id: references.knowledge_base_id, limit: 0, offset: 0, ordering: undefined}, false)
8078
itemsStore.loading = false
8179
}
8280

admin/store/items.js

Lines changed: 9 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ export const useItemsStore = defineStore('items', {
2828
ordering: undefined,
2929
}),
3030
actions: {
31-
async retrieveItems($axios, apiUrl = undefined, params = {}, cache= true) {
31+
async retrieveItems($axios, apiUrl = undefined, params = {}, cache= true, one= false) {
3232
const cacheName = apiCacheName(apiUrl, params)
3333
// Would be nice to amke ordering dynamic as a parameter, perhaps one day
3434
if (!("limit" in params))
@@ -49,10 +49,17 @@ export const useItemsStore = defineStore('items', {
4949
if (Array.isArray(res)) { // When the endpoint is not paginated
5050
res = {results: res}
5151
}
52-
if (!cache)
52+
if (!cache) {
53+
if (one) {
54+
return res.results[0]
55+
}
5356
return res
57+
}
5458

5559
this.items[cacheName] = res
60+
if (one) {
61+
return this.items[cacheName][0]
62+
}
5663
return this.items[cacheName]
5764
},
5865
async deleteItem($axios, apiUrl, id) {
@@ -75,38 +82,6 @@ export const useItemsStore = defineStore('items', {
7582
return await this.resolveRefs($axios, this.schema[schemaName])
7683
return this.schema[schemaName]
7784
},
78-
async requestOrGetItem($axios, apiUrl, filter, params= {}, force = false) {
79-
const cacheName = apiCacheName(apiUrl, params)
80-
81-
if (force || !this.items[cacheName]) {
82-
await this.retrieveItems($axios, apiUrl, params)
83-
}
84-
return this.items[cacheName].results.find(item => {
85-
for (const [key, val] of Object.entries(filter)) {
86-
if (item[key] === null && val === null)
87-
continue
88-
if (item[key] !== null && item[key].toString() !== val.toString())
89-
return false
90-
}
91-
return true
92-
})
93-
},
94-
async requestOrGetItems($axios, apiUrl, filter, params= {}, force = false) {
95-
const cacheName = apiCacheName(apiUrl, params)
96-
97-
if (force || !this.items[cacheName]) {
98-
await this.retrieveItems($axios, apiUrl, params)
99-
}
100-
return this.items[cacheName].results.filter(item => {
101-
for (const [key, val] of Object.entries(filter)) {
102-
if (item[key] === null && val === null)
103-
continue
104-
if (item[key] !== null && val !== null && item[key].toString() !== val.toString())
105-
return false
106-
}
107-
return true
108-
})
109-
},
11085
async getNextItem($axios, apiUrl, itemId, direction = 1, params = {}, force= false) {
11186
const cacheName = apiCacheName(apiUrl, params)
11287

back/back/apps/broker/views/__init__.py

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ class Meta:
3636
model = Conversation
3737
fields = {
3838
'created_date': ['lte', 'gte'],
39+
'id': ['exact'],
3940
}
4041

4142
def filter_rag(self, queryset, name, value):
@@ -124,22 +125,28 @@ class MessageView(viewsets.ModelViewSet):
124125
queryset = Message.objects.all()
125126
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
126127
serializer_class = MessageSerializer
128+
filterset_fields = ["id"]
127129

128130

129131
class UserFeedbackAPIViewSet(viewsets.ModelViewSet):
130132
serializer_class = UserFeedbackSerializer
131133
queryset = UserFeedback.objects.all()
132134
permission_classes = [AllowAny]
133-
filterset_fields = ["message"]
135+
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
136+
filterset_fields = ["id", "message"]
134137

135138

136139
class AdminReviewAPIViewSet(viewsets.ModelViewSet):
137140
serializer_class = AdminReviewSerializer
138141
queryset = AdminReview.objects.all()
139-
filterset_fields = ["message"]
142+
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
143+
filterset_fields = ["id", "message"]
140144

141145

142146
class SenderAPIView(CreateAPIView, UpdateAPIView):
147+
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
148+
filterset_fields = ["id", "message"]
149+
143150
def get(self, request):
144151
return JsonResponse(
145152
list(

back/back/apps/language_model/views/data.py

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ class KnowledgeBaseFilter(django_filters.FilterSet):
2929
class Meta:
3030
model = KnowledgeBase
3131
fields = {
32+
'id': ['exact'],
3233
'name': ['exact'],
3334
}
3435

@@ -37,7 +38,7 @@ class KnowledgeBaseAPIViewSet(viewsets.ModelViewSet):
3738
queryset = KnowledgeBase.objects.all()
3839
serializer_class = KnowledgeBaseSerializer
3940
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
40-
search_fields = ['name']
41+
search_fields = ['id', 'name']
4142
filterset_class = KnowledgeBaseFilter
4243

4344
def get_queryset(self):
@@ -101,6 +102,7 @@ class KnowledgeItemFilterSet(django_filters.FilterSet):
101102
class Meta:
102103
model = KnowledgeItem
103104
fields = {
105+
'id': ['exact'],
104106
'knowledge_base__id': ['exact'],
105107
'knowledge_base__name': ['exact'],
106108
'created_date': ['lte', 'gte'],
@@ -148,6 +150,7 @@ class KnowledgeItemImageFilterSet(django_filters.FilterSet):
148150
class Meta:
149151
model = KnowledgeItemImage
150152
fields = {
153+
'id': ['exact'],
151154
'knowledge_item__knowledge_base__name': ['exact'],
152155
'knowledge_item__id': ['exact', 'in'],
153156
}
@@ -162,7 +165,7 @@ class KnowledgeItemImageAPIViewSet(viewsets.ModelViewSet):
162165
class AutoGeneratedTitleAPIViewSet(viewsets.ModelViewSet):
163166
queryset = AutoGeneratedTitle.objects.all()
164167
serializer_class = AutoGeneratedTitleSerializer
165-
filterset_fields = ["knowledge_item__id"]
168+
filterset_fields = ["id", "knowledge_item__id"]
166169

167170
@action(detail=True, url_name="generate", url_path="generate", methods=["POST"])
168171
def generate_titles(self, request, *args, **kwargs):
@@ -260,3 +263,5 @@ def list_knowledge_items(self, request, *args, **kwargs):
260263
class DataSourceAPIViewSet(viewsets.ModelViewSet):
261264
queryset = DataSource.objects.all()
262265
serializer_class = DataSourceSerializer
266+
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
267+
filterset_fields = ["id"]

back/back/apps/language_model/views/rag_pipeline.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ class RAGConfigAPIViewSet(viewsets.ModelViewSet):
1212
queryset = RAGConfig.objects.all()
1313
serializer_class = RAGConfigSerializer
1414
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
15+
filterset_fields = ["id"]
1516
search_fields = ['name']
1617

1718

@@ -38,25 +39,29 @@ class LLMConfigAPIViewSet(viewsets.ModelViewSet):
3839
queryset = LLMConfig.objects.all()
3940
serializer_class = LLMConfigSerializer
4041
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
42+
filterset_fields = ["id"]
4143
search_fields = ['name']
4244

4345

4446
class RetrieverConfigAPIViewSet(viewsets.ModelViewSet):
4547
queryset = RetrieverConfig.objects.all()
4648
serializer_class = RetrieverConfigSerializer
4749
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
50+
filterset_fields = ["id"]
4851
search_fields = ['name']
4952

5053

5154
class GenerationConfigAPIViewSet(viewsets.ModelViewSet):
5255
queryset = GenerationConfig.objects.all()
5356
serializer_class = GenerationConfigSerializer
5457
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
58+
filterset_fields = ["id"]
5559
search_fields = ['name']
5660

5761

5862
class PromptConfigAPIViewSet(viewsets.ModelViewSet):
5963
queryset = PromptConfig.objects.all()
6064
serializer_class = PromptConfigSerializer
6165
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
66+
filterset_fields = ["id"]
6267
search_fields = ['name']

back/back/apps/language_model/views/tasks.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
from django_celery_results.models import TaskResult
22
from rest_framework import viewsets
3+
from django_filters.rest_framework.backends import DjangoFilterBackend
4+
from rest_framework.filters import SearchFilter, OrderingFilter
35

46
from back.apps.language_model.serializers.tasks import TaskResultSerializer
57

@@ -10,3 +12,5 @@ def get_queryset(self):
1012

1113
queryset = TaskResult.objects.all()
1214
serializer_class = TaskResultSerializer
15+
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
16+
filterset_fields = ["id"]

0 commit comments

Comments
 (0)