fix: load public views
This commit is contained in:
parent
0dc0509be4
commit
d193c05c96
@ -3,6 +3,8 @@ from frappe.model.document import get_controller
|
||||
from frappe.model import no_value_fields
|
||||
from pypika import Criterion
|
||||
|
||||
from crm.api.views import get_views
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def sort_options(doctype: str):
|
||||
@ -164,14 +166,6 @@ def get_list_data(
|
||||
"row_count": len(data),
|
||||
}
|
||||
|
||||
def get_views(doctype):
|
||||
views = frappe.get_all(
|
||||
"CRM View Settings",
|
||||
fields=["*"],
|
||||
filters={"dt": doctype, "user": frappe.session.user}
|
||||
)
|
||||
return views
|
||||
|
||||
|
||||
def get_doctype_fields(doctype):
|
||||
not_allowed_fieldtypes = [
|
||||
|
||||
19
crm/api/views.py
Normal file
19
crm/api/views.py
Normal file
@ -0,0 +1,19 @@
|
||||
import frappe
|
||||
from pypika import Criterion
|
||||
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_views(doctype):
|
||||
if frappe.session.user == "Guest":
|
||||
frappe.throw("Authentication failed", exc=frappe.AuthenticationError)
|
||||
|
||||
View = frappe.qb.DocType("CRM View Settings")
|
||||
query = (
|
||||
frappe.qb.from_(View)
|
||||
.select("*")
|
||||
.where(Criterion.any([View.user == '', View.user == frappe.session.user]))
|
||||
)
|
||||
if doctype:
|
||||
query = query.where(View.dt == doctype)
|
||||
views = query.run(as_dict=True)
|
||||
return views
|
||||
@ -11,6 +11,7 @@
|
||||
"dt",
|
||||
"route_name",
|
||||
"pinned",
|
||||
"public",
|
||||
"columns_tab",
|
||||
"load_default_columns",
|
||||
"columns",
|
||||
@ -97,11 +98,17 @@
|
||||
"fieldname": "load_default_columns",
|
||||
"fieldtype": "Check",
|
||||
"label": "Load Default Columns"
|
||||
},
|
||||
{
|
||||
"default": "0",
|
||||
"fieldname": "public",
|
||||
"fieldtype": "Check",
|
||||
"label": "Public"
|
||||
}
|
||||
],
|
||||
"index_web_pages_for_search": 1,
|
||||
"links": [],
|
||||
"modified": "2024-01-03 16:54:52.195687",
|
||||
"modified": "2024-01-19 19:55:14.876998",
|
||||
"modified_by": "Administrator",
|
||||
"module": "FCRM",
|
||||
"name": "CRM View Settings",
|
||||
|
||||
@ -1,29 +1,30 @@
|
||||
import { defineStore } from 'pinia'
|
||||
import { usersStore } from '@/stores/users'
|
||||
import { createListResource } from 'frappe-ui'
|
||||
import { createResource } from 'frappe-ui'
|
||||
import { reactive, ref } from 'vue'
|
||||
|
||||
export const viewsStore = defineStore('crm-views', () => {
|
||||
|
||||
const { getUser } = usersStore()
|
||||
|
||||
export const viewsStore = defineStore('crm-views', (doctype) => {
|
||||
let viewsByName = reactive({})
|
||||
let pinnedViews = ref([])
|
||||
let publicViews = ref([])
|
||||
|
||||
const views = createListResource({
|
||||
doctype: 'CRM View Settings',
|
||||
fields: ['*'],
|
||||
filters: { user: getUser().email },
|
||||
cache: 'crm-views',
|
||||
// Views
|
||||
const views = createResource({
|
||||
url: 'crm.api.views.get_views',
|
||||
params: { doctype: doctype || '' },
|
||||
cache: "crm-views",
|
||||
initialData: [],
|
||||
auto: true,
|
||||
transform(views) {
|
||||
pinnedViews.value = []
|
||||
publicViews.value = []
|
||||
for (let view of views) {
|
||||
viewsByName[view.name] = view
|
||||
if (view.pinned) {
|
||||
pinnedViews.value?.push(view)
|
||||
}
|
||||
if (view.public) {
|
||||
publicViews.value?.push(view)
|
||||
}
|
||||
}
|
||||
return views
|
||||
},
|
||||
@ -42,13 +43,18 @@ export const viewsStore = defineStore('crm-views', () => {
|
||||
return pinnedViews.value
|
||||
}
|
||||
|
||||
async function reload(wait = false) {
|
||||
function getPublicViews() {
|
||||
if (!publicViews.value?.length) return []
|
||||
return publicViews.value
|
||||
}
|
||||
|
||||
async function reload() {
|
||||
await views.reload()
|
||||
}
|
||||
|
||||
return {
|
||||
views,
|
||||
getPinnedViews,
|
||||
getPublicViews,
|
||||
reload,
|
||||
getView,
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user