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 frappe.model import no_value_fields
|
||||||
from pypika import Criterion
|
from pypika import Criterion
|
||||||
|
|
||||||
|
from crm.api.views import get_views
|
||||||
|
|
||||||
|
|
||||||
@frappe.whitelist()
|
@frappe.whitelist()
|
||||||
def sort_options(doctype: str):
|
def sort_options(doctype: str):
|
||||||
@ -164,14 +166,6 @@ def get_list_data(
|
|||||||
"row_count": len(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):
|
def get_doctype_fields(doctype):
|
||||||
not_allowed_fieldtypes = [
|
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",
|
"dt",
|
||||||
"route_name",
|
"route_name",
|
||||||
"pinned",
|
"pinned",
|
||||||
|
"public",
|
||||||
"columns_tab",
|
"columns_tab",
|
||||||
"load_default_columns",
|
"load_default_columns",
|
||||||
"columns",
|
"columns",
|
||||||
@ -97,11 +98,17 @@
|
|||||||
"fieldname": "load_default_columns",
|
"fieldname": "load_default_columns",
|
||||||
"fieldtype": "Check",
|
"fieldtype": "Check",
|
||||||
"label": "Load Default Columns"
|
"label": "Load Default Columns"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"default": "0",
|
||||||
|
"fieldname": "public",
|
||||||
|
"fieldtype": "Check",
|
||||||
|
"label": "Public"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"index_web_pages_for_search": 1,
|
"index_web_pages_for_search": 1,
|
||||||
"links": [],
|
"links": [],
|
||||||
"modified": "2024-01-03 16:54:52.195687",
|
"modified": "2024-01-19 19:55:14.876998",
|
||||||
"modified_by": "Administrator",
|
"modified_by": "Administrator",
|
||||||
"module": "FCRM",
|
"module": "FCRM",
|
||||||
"name": "CRM View Settings",
|
"name": "CRM View Settings",
|
||||||
|
|||||||
@ -1,29 +1,30 @@
|
|||||||
import { defineStore } from 'pinia'
|
import { defineStore } from 'pinia'
|
||||||
import { usersStore } from '@/stores/users'
|
import { createResource } from 'frappe-ui'
|
||||||
import { createListResource } from 'frappe-ui'
|
|
||||||
import { reactive, ref } from 'vue'
|
import { reactive, ref } from 'vue'
|
||||||
|
|
||||||
export const viewsStore = defineStore('crm-views', () => {
|
export const viewsStore = defineStore('crm-views', (doctype) => {
|
||||||
|
|
||||||
const { getUser } = usersStore()
|
|
||||||
|
|
||||||
let viewsByName = reactive({})
|
let viewsByName = reactive({})
|
||||||
let pinnedViews = ref([])
|
let pinnedViews = ref([])
|
||||||
|
let publicViews = ref([])
|
||||||
|
|
||||||
const views = createListResource({
|
// Views
|
||||||
doctype: 'CRM View Settings',
|
const views = createResource({
|
||||||
fields: ['*'],
|
url: 'crm.api.views.get_views',
|
||||||
filters: { user: getUser().email },
|
params: { doctype: doctype || '' },
|
||||||
cache: 'crm-views',
|
cache: "crm-views",
|
||||||
initialData: [],
|
initialData: [],
|
||||||
auto: true,
|
auto: true,
|
||||||
transform(views) {
|
transform(views) {
|
||||||
pinnedViews.value = []
|
pinnedViews.value = []
|
||||||
|
publicViews.value = []
|
||||||
for (let view of views) {
|
for (let view of views) {
|
||||||
viewsByName[view.name] = view
|
viewsByName[view.name] = view
|
||||||
if (view.pinned) {
|
if (view.pinned) {
|
||||||
pinnedViews.value?.push(view)
|
pinnedViews.value?.push(view)
|
||||||
}
|
}
|
||||||
|
if (view.public) {
|
||||||
|
publicViews.value?.push(view)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return views
|
return views
|
||||||
},
|
},
|
||||||
@ -42,13 +43,18 @@ export const viewsStore = defineStore('crm-views', () => {
|
|||||||
return pinnedViews.value
|
return pinnedViews.value
|
||||||
}
|
}
|
||||||
|
|
||||||
async function reload(wait = false) {
|
function getPublicViews() {
|
||||||
|
if (!publicViews.value?.length) return []
|
||||||
|
return publicViews.value
|
||||||
|
}
|
||||||
|
|
||||||
|
async function reload() {
|
||||||
await views.reload()
|
await views.reload()
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
views,
|
|
||||||
getPinnedViews,
|
getPinnedViews,
|
||||||
|
getPublicViews,
|
||||||
reload,
|
reload,
|
||||||
getView,
|
getView,
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user