snapshot of https://github.com/cortezaproject/corteza.git (2024.9.x, 2026-09-18; blobs > 131072B omitted)
Some checks failed
SonarQube / SonarQube (push) Failing after 5m28s
E2e test on main branch push / server and client test (map[name:admin port:8080]) (push) Failing after 3m33s
Server and lib tests / Library test (js) (push) Failing after 1m36s
Server and lib tests / Library test (vue) (push) Successful in 2m24s
Server and lib tests / Web client test (admin) (push) Successful in 2m52s
Server and lib tests / Web client test (compose) (push) Successful in 3m23s
Server and lib tests / Web client test (discovery) (push) Successful in 2m49s
Server and lib tests / Web client test (one) (push) Successful in 2m52s
Server and lib tests / Web client test (privacy) (push) Successful in 2m44s
Server and lib tests / Web client test (reporter) (push) Successful in 2m56s
Server and lib tests / Web client test (workflow) (push) Successful in 3m0s
Server and lib tests / Server tests (push) Failing after 4m55s
E2e test on main branch push / notify-failure (push) Failing after 9s
Server and lib tests / Send matrix testing notification (push) Successful in 2s
Mark stale issues and pull requests / stale (push) Successful in 40s
Some checks failed
SonarQube / SonarQube (push) Failing after 5m28s
E2e test on main branch push / server and client test (map[name:admin port:8080]) (push) Failing after 3m33s
Server and lib tests / Library test (js) (push) Failing after 1m36s
Server and lib tests / Library test (vue) (push) Successful in 2m24s
Server and lib tests / Web client test (admin) (push) Successful in 2m52s
Server and lib tests / Web client test (compose) (push) Successful in 3m23s
Server and lib tests / Web client test (discovery) (push) Successful in 2m49s
Server and lib tests / Web client test (one) (push) Successful in 2m52s
Server and lib tests / Web client test (privacy) (push) Successful in 2m44s
Server and lib tests / Web client test (reporter) (push) Successful in 2m56s
Server and lib tests / Web client test (workflow) (push) Successful in 3m0s
Server and lib tests / Server tests (push) Failing after 4m55s
E2e test on main branch push / notify-failure (push) Failing after 9s
Server and lib tests / Send matrix testing notification (push) Successful in 2s
Mark stale issues and pull requests / stale (push) Successful in 40s
This commit is contained in:
3
server/pkg/envoy/yaml/testdata/application_1.yaml
vendored
Normal file
3
server/pkg/envoy/yaml/testdata/application_1.yaml
vendored
Normal file
@@ -0,0 +1,3 @@
|
||||
applications:
|
||||
- one
|
||||
- name: two
|
||||
48
server/pkg/envoy/yaml/testdata/compose_chart_1.yaml
vendored
Normal file
48
server/pkg/envoy/yaml/testdata/compose_chart_1.yaml
vendored
Normal file
@@ -0,0 +1,48 @@
|
||||
namespace: crm
|
||||
charts:
|
||||
AccountsByRating:
|
||||
name: Accounts by rating
|
||||
config:
|
||||
reports:
|
||||
- dimensions:
|
||||
- conditions: {}
|
||||
field: Rating
|
||||
meta: {}
|
||||
modifier: (no grouping / buckets)
|
||||
skipMissing: true
|
||||
filter: ""
|
||||
metrics:
|
||||
- aggregate: AVG
|
||||
field: count
|
||||
fill: true
|
||||
fixTooltips: false
|
||||
label: Number of Accounts
|
||||
lineTension: 0.4
|
||||
type: line
|
||||
module: Account
|
||||
renderer: {}
|
||||
yAxis:
|
||||
label: Accounts
|
||||
colorScheme: tableau.Tableau10
|
||||
SalesYTD:
|
||||
name: Sales YTD
|
||||
config:
|
||||
reports:
|
||||
- dimensions:
|
||||
- conditions: {}
|
||||
field: LeadSource
|
||||
meta:
|
||||
steps:
|
||||
- value: "150000"
|
||||
- value: "500000"
|
||||
- value: "1000000"
|
||||
modifier: (no grouping / buckets)
|
||||
filter: YEAR(created_at) = YEAR(NOW()) AND Amount IS NOT NULL
|
||||
metrics:
|
||||
- aggregate: SUM
|
||||
field: Amount
|
||||
type: gauge
|
||||
module: Opportunity
|
||||
renderer: {}
|
||||
colorScheme: tableau.Traffic9
|
||||
allow: { somerole: [ read ] }
|
||||
9
server/pkg/envoy/yaml/testdata/compose_chart_rbac.yaml
vendored
Normal file
9
server/pkg/envoy/yaml/testdata/compose_chart_rbac.yaml
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
namespace: crm
|
||||
charts:
|
||||
ChartHandle:
|
||||
allow:
|
||||
authenticated:
|
||||
- read
|
||||
deny:
|
||||
authenticated:
|
||||
- delete
|
||||
1634
server/pkg/envoy/yaml/testdata/compose_module_1.yaml
vendored
Normal file
1634
server/pkg/envoy/yaml/testdata/compose_module_1.yaml
vendored
Normal file
File diff suppressed because it is too large
Load Diff
17
server/pkg/envoy/yaml/testdata/compose_module_2.yaml
vendored
Normal file
17
server/pkg/envoy/yaml/testdata/compose_module_2.yaml
vendored
Normal file
@@ -0,0 +1,17 @@
|
||||
namespace: crm
|
||||
modules:
|
||||
Account:
|
||||
name: Expressions
|
||||
fields:
|
||||
full:
|
||||
expressions:
|
||||
valueExpr: "a > b"
|
||||
sanitizers: [ "trim(value)" ]
|
||||
validators:
|
||||
- test: 'a == ""'
|
||||
error: Value should not be empty
|
||||
disableDefaultValidators: true
|
||||
validatorKV:
|
||||
expressions:
|
||||
validators:
|
||||
'value == ""': Value should be filled
|
||||
10
server/pkg/envoy/yaml/testdata/compose_module_rbac.yaml
vendored
Normal file
10
server/pkg/envoy/yaml/testdata/compose_module_rbac.yaml
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
namespace: crm
|
||||
modules:
|
||||
Account:
|
||||
name: Account
|
||||
allow:
|
||||
authenticated:
|
||||
- read
|
||||
deny:
|
||||
authenticated:
|
||||
- delete
|
||||
11
server/pkg/envoy/yaml/testdata/compose_module_s_1.yaml
vendored
Normal file
11
server/pkg/envoy/yaml/testdata/compose_module_s_1.yaml
vendored
Normal file
@@ -0,0 +1,11 @@
|
||||
namespace: ns1
|
||||
modules:
|
||||
mod1:
|
||||
records:
|
||||
source: mod1.csv
|
||||
key: id
|
||||
mapping:
|
||||
- f1
|
||||
-
|
||||
- /
|
||||
- f2
|
||||
7
server/pkg/envoy/yaml/testdata/compose_module_s_2.yaml
vendored
Normal file
7
server/pkg/envoy/yaml/testdata/compose_module_s_2.yaml
vendored
Normal file
@@ -0,0 +1,7 @@
|
||||
namespace: ns1
|
||||
modules:
|
||||
mod1:
|
||||
records:
|
||||
key:
|
||||
- f1
|
||||
- f2
|
||||
9
server/pkg/envoy/yaml/testdata/compose_module_s_3.yaml
vendored
Normal file
9
server/pkg/envoy/yaml/testdata/compose_module_s_3.yaml
vendored
Normal file
@@ -0,0 +1,9 @@
|
||||
namespace: ns1
|
||||
modules:
|
||||
mod1:
|
||||
records:
|
||||
mapping:
|
||||
c1:
|
||||
field: f1
|
||||
c2:
|
||||
field: f2
|
||||
10
server/pkg/envoy/yaml/testdata/compose_namespace_1.yaml
vendored
Normal file
10
server/pkg/envoy/yaml/testdata/compose_namespace_1.yaml
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
namespaces:
|
||||
crm:
|
||||
name: CRM
|
||||
allow:
|
||||
authenticated:
|
||||
- module.create
|
||||
- read
|
||||
deny:
|
||||
authenticated:
|
||||
- delete
|
||||
206
server/pkg/envoy/yaml/testdata/compose_page_1.yaml
vendored
Normal file
206
server/pkg/envoy/yaml/testdata/compose_page_1.yaml
vendored
Normal file
@@ -0,0 +1,206 @@
|
||||
namespace: crm
|
||||
pages:
|
||||
- handle: Leads
|
||||
title: Leads
|
||||
allow: { somerole: [ read ] }
|
||||
blocks:
|
||||
- title: Leads by type
|
||||
options:
|
||||
chart: LeadsByType
|
||||
style:
|
||||
variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}
|
||||
kind: Chart
|
||||
xywh: [9, 0, 3, 8]
|
||||
- title: New Leads Per Month
|
||||
options:
|
||||
chart: LeadsPerMonth
|
||||
style:
|
||||
variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}
|
||||
kind: Chart
|
||||
xywh: [9, 8, 3, 8]
|
||||
- title: Leads
|
||||
options:
|
||||
allowExport: true
|
||||
draggable: false
|
||||
editFields: []
|
||||
editable: false
|
||||
fields:
|
||||
- name: FirstName
|
||||
- name: LastName
|
||||
- name: Email
|
||||
- name: Company
|
||||
- name: Rating
|
||||
- name: createdAt
|
||||
hideRecordCloneButton: true
|
||||
hideRecordEditButton: false
|
||||
hideRecordReminderButton: true
|
||||
hideRecordViewButton: true
|
||||
module: Lead
|
||||
perPage: 20
|
||||
prefilter: ""
|
||||
presort: createdAt DESC
|
||||
selectMode: multi
|
||||
selectable: true
|
||||
selectionButtons: []
|
||||
style:
|
||||
variants: {border: primary, headerText: primary}
|
||||
kind: RecordList
|
||||
xywh: [0, 0, 9, 16]
|
||||
children:
|
||||
- handle: RecordPageForModuleLead
|
||||
module: Lead
|
||||
title: Record page for module "Lead"
|
||||
blocks:
|
||||
- title: Personal Data
|
||||
options:
|
||||
fields:
|
||||
- name: FirstName
|
||||
- name: LastName
|
||||
- name: Salutation
|
||||
- name: Title
|
||||
- name: Phone
|
||||
- name: MobilePhone
|
||||
- name: Email
|
||||
- name: Website
|
||||
- name: Twitter
|
||||
- name: LinkedIn
|
||||
- name: Facebook
|
||||
style:
|
||||
variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}
|
||||
kind: Record
|
||||
xywh: [0, 0, 3, 15]
|
||||
- title: Twitter feed
|
||||
options:
|
||||
profileSourceField: Twitter
|
||||
profileUrl: ""
|
||||
style:
|
||||
variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}
|
||||
kind: SocialFeed
|
||||
xywh: [9, 0, 3, 31]
|
||||
- title: Company Data
|
||||
options:
|
||||
fields:
|
||||
- name: Company
|
||||
- name: Industry
|
||||
- name: AnnualRevenue
|
||||
- name: NumberOfEmployees
|
||||
- name: NumberOfEmployeesRange
|
||||
- name: Country
|
||||
- name: City
|
||||
- name: Street
|
||||
- name: State
|
||||
- name: PostalCode
|
||||
style:
|
||||
variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}
|
||||
kind: Record
|
||||
xywh: [3, 0, 3, 15]
|
||||
- title: Other Information
|
||||
options:
|
||||
fields:
|
||||
- name: Rating
|
||||
- name: CampaignId
|
||||
- name: Status
|
||||
- name: LeadSource
|
||||
- name: OwnerId
|
||||
- name: Description
|
||||
- name: ConvertedAccountId
|
||||
- name: ConvertedContactId
|
||||
- name: ConvertedOpportunityId
|
||||
- name: ConvertedDate
|
||||
style:
|
||||
variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}
|
||||
kind: Record
|
||||
xywh: [6, 0, 3, 15]
|
||||
- title: Notes
|
||||
options:
|
||||
allowExport: true
|
||||
draggable: false
|
||||
editFields: []
|
||||
editable: false
|
||||
fields:
|
||||
- name: Title
|
||||
- name: Body
|
||||
- name: createdAt
|
||||
hideRecordCloneButton: true
|
||||
hideRecordEditButton: false
|
||||
hideRecordReminderButton: true
|
||||
hideRecordViewButton: true
|
||||
module: Note
|
||||
perPage: 20
|
||||
prefilter: LeadId = ${recordID}
|
||||
presort: createdAt DESC
|
||||
selectMode: multi
|
||||
selectable: true
|
||||
selectionButtons: []
|
||||
style:
|
||||
variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}
|
||||
kind: RecordList
|
||||
xywh: [0, 15, 6, 8]
|
||||
- title: Events
|
||||
options:
|
||||
allowExport: true
|
||||
draggable: false
|
||||
editFields: []
|
||||
editable: false
|
||||
fields:
|
||||
- name: Type
|
||||
- name: Subject
|
||||
- name: ActivityDate
|
||||
hideRecordCloneButton: true
|
||||
hideRecordEditButton: false
|
||||
hideRecordReminderButton: true
|
||||
hideRecordViewButton: true
|
||||
module: Event
|
||||
perPage: 20
|
||||
prefilter: LeadId = ${recordID}
|
||||
presort: ActivityDate DESC
|
||||
selectMode: multi
|
||||
selectable: true
|
||||
selectionButtons: []
|
||||
style:
|
||||
variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}
|
||||
kind: RecordList
|
||||
xywh: [0, 23, 4, 8]
|
||||
- title: Tasks
|
||||
options:
|
||||
allowExport: true
|
||||
draggable: false
|
||||
editFields: []
|
||||
editable: false
|
||||
fields:
|
||||
- name: Type
|
||||
- name: Subject
|
||||
- name: Status
|
||||
- name: ActivityDate
|
||||
hideRecordCloneButton: true
|
||||
hideRecordEditButton: false
|
||||
hideRecordReminderButton: true
|
||||
hideRecordViewButton: true
|
||||
module: Task
|
||||
perPage: 20
|
||||
prefilter: LeadId = ${recordID}
|
||||
presort: ActivityDate DESC
|
||||
selectMode: multi
|
||||
selectable: true
|
||||
selectionButtons: []
|
||||
style:
|
||||
variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}
|
||||
kind: RecordList
|
||||
xywh: [4, 23, 5, 8]
|
||||
- title: Lead Actions
|
||||
options:
|
||||
buttons:
|
||||
- enabled: true
|
||||
label: Convert this Lead into an Account
|
||||
resourceType: compose:record
|
||||
script: /client-scripts/compose/crm/Lead/ToAccount.js:default
|
||||
- enabled: true
|
||||
label: Convert this Lead into an Account and Opportunity
|
||||
resourceType: compose:record
|
||||
script: /client-scripts/compose/crm/Lead/ToAccountAndOpportunity.js:default
|
||||
sealed: false
|
||||
style:
|
||||
variants: {bodyBg: white, border: primary, headerBg: white, headerText: primary}
|
||||
kind: Automation
|
||||
xywh: [6, 15, 3, 8]
|
||||
visible: true
|
||||
10
server/pkg/envoy/yaml/testdata/compose_rbac_1.yaml
vendored
Normal file
10
server/pkg/envoy/yaml/testdata/compose_rbac_1.yaml
vendored
Normal file
@@ -0,0 +1,10 @@
|
||||
modules:
|
||||
mod1:
|
||||
name: mod1 name
|
||||
|
||||
allow:
|
||||
authenticated:
|
||||
- op1
|
||||
deny:
|
||||
authenticated:
|
||||
- op2
|
||||
18
server/pkg/envoy/yaml/testdata/compose_record_1.yaml
vendored
Normal file
18
server/pkg/envoy/yaml/testdata/compose_record_1.yaml
vendored
Normal file
@@ -0,0 +1,18 @@
|
||||
namespace: service-solution
|
||||
records:
|
||||
Department:
|
||||
- values:
|
||||
Name: "Service"
|
||||
HourCost: "50"
|
||||
EmailTemplate:
|
||||
- values:
|
||||
Name: "Case Update"
|
||||
Description: "This is the default case update template"
|
||||
Subject: "Case: [{{Case.Number}}] {{Case.Subject}}"
|
||||
Body: |-
|
||||
<p><strong>Dear {{Contact.FirstName}}</strong></p>
|
||||
Settings:
|
||||
- values:
|
||||
KBNextNumber: "1"
|
||||
DefaultCostPerHour: "50"
|
||||
DefaultTimeUpdate: "0.25"
|
||||
14
server/pkg/envoy/yaml/testdata/compose_record_2.yaml
vendored
Normal file
14
server/pkg/envoy/yaml/testdata/compose_record_2.yaml
vendored
Normal file
@@ -0,0 +1,14 @@
|
||||
namespace: service-solution
|
||||
records:
|
||||
mod1:
|
||||
- values:
|
||||
f1: "mod1 f1 v1"
|
||||
f2: "mod1 f2 v1"
|
||||
mod2:
|
||||
- values:
|
||||
f1: "mod2 f1 v1"
|
||||
f2: "mod2 f2 v1"
|
||||
mod3:
|
||||
- values:
|
||||
f1: "mod3 f1 v1"
|
||||
f2: "mod3 f2 v1"
|
||||
52
server/pkg/envoy/yaml/testdata/global_rbac_1.yaml
vendored
Normal file
52
server/pkg/envoy/yaml/testdata/global_rbac_1.yaml
vendored
Normal file
@@ -0,0 +1,52 @@
|
||||
allow:
|
||||
authenticated:
|
||||
corteza::compose/:
|
||||
- access
|
||||
|
||||
corteza::compose:namespace/*:
|
||||
- read
|
||||
|
||||
corteza::compose:module/*/*:
|
||||
- read
|
||||
|
||||
corteza::compose:page/*/*:
|
||||
- read
|
||||
|
||||
corteza::compose:chart/*/*:
|
||||
- read
|
||||
|
||||
admins:
|
||||
corteza::compose/:
|
||||
- access
|
||||
- grant
|
||||
- settings.read
|
||||
- settings.manage
|
||||
- namespace.create
|
||||
|
||||
corteza::compose:namespace/*:
|
||||
- read
|
||||
- update
|
||||
- delete
|
||||
- manage
|
||||
- page.create
|
||||
- module.create
|
||||
- chart.create
|
||||
|
||||
corteza::compose:module/*/*:
|
||||
- read
|
||||
- update
|
||||
- delete
|
||||
- record.create
|
||||
- record.read
|
||||
- record.update
|
||||
- record.delete
|
||||
|
||||
corteza::compose:chart/*/*:
|
||||
- read
|
||||
- update
|
||||
- delete
|
||||
|
||||
corteza::compose:page/*/*:
|
||||
- read
|
||||
- update
|
||||
- delete
|
||||
8
server/pkg/envoy/yaml/testdata/messaging_channels_1.yaml
vendored
Normal file
8
server/pkg/envoy/yaml/testdata/messaging_channels_1.yaml
vendored
Normal file
@@ -0,0 +1,8 @@
|
||||
channels:
|
||||
- name: General
|
||||
topic: Talk about anything
|
||||
type: public
|
||||
- name: Random
|
||||
type: public
|
||||
- name: Secret
|
||||
type: private
|
||||
4
server/pkg/envoy/yaml/testdata/role_1.yaml
vendored
Normal file
4
server/pkg/envoy/yaml/testdata/role_1.yaml
vendored
Normal file
@@ -0,0 +1,4 @@
|
||||
roles:
|
||||
r1: Role1
|
||||
r2:
|
||||
name: Role2
|
||||
28
server/pkg/envoy/yaml/testdata/settings_1.yaml
vendored
Normal file
28
server/pkg/envoy/yaml/testdata/settings_1.yaml
vendored
Normal file
@@ -0,0 +1,28 @@
|
||||
settings:
|
||||
privacy.mask.email: true
|
||||
privacy.mask.name: true
|
||||
|
||||
auth.mail.email-confirmation.subject.en: Confirm your email address
|
||||
auth.mail.email-confirmation.body.en: |-
|
||||
{{.EmailHeaderEn}}
|
||||
<h2 style="color: #FF9661;text-align: center;">Confirm your email address</h2>
|
||||
<p>Hello,</p>
|
||||
<p>Follow <a href="{{ .URL }}" style="color:#FF9661;">this link</a> to confirm your email address.</p>
|
||||
<p>You will be logged in after successful confirmation.</p>
|
||||
{{.EmailFooterEn}}
|
||||
|
||||
auth.mail.password-reset.subject.en: Reset your password
|
||||
auth.mail.password-reset.body.en: |-
|
||||
{{.EmailHeaderEn}}
|
||||
<h2 style="color: #FF9661;text-align: center;">Reset your password</h2>
|
||||
<p>Hello,</p>
|
||||
<p>Follow <a href="{{ .URL }}" style="color:#FF9661;">this link</a> and reset your password.</p>
|
||||
<p>You will be logged in after successful reset.</p>
|
||||
{{.EmailFooterEn}}
|
||||
|
||||
compose.ui.namespace-switcher.enabled: false
|
||||
compose.record.attachments.max-size: 10
|
||||
compose.record.attachments.mimetypes: []
|
||||
|
||||
compose.page.attachments.max-size: 10
|
||||
compose.page.attachments.mimetypes: []
|
||||
5
server/pkg/envoy/yaml/testdata/user_1.yaml
vendored
Normal file
5
server/pkg/envoy/yaml/testdata/user_1.yaml
vendored
Normal file
@@ -0,0 +1,5 @@
|
||||
users:
|
||||
u1: u1@example.tld
|
||||
u2:
|
||||
name: John Doe
|
||||
email: jdoe@example.tld
|
||||
75
server/pkg/envoy/yaml/testdata/workflow_1.yaml
vendored
Normal file
75
server/pkg/envoy/yaml/testdata/workflow_1.yaml
vendored
Normal file
@@ -0,0 +1,75 @@
|
||||
workflows:
|
||||
testko_wf:
|
||||
enabled: true
|
||||
trace: true
|
||||
keepSessions: 2
|
||||
meta:
|
||||
name: name here
|
||||
description: description here
|
||||
|
||||
triggers:
|
||||
- enabled: true
|
||||
stepID: 101
|
||||
resourceType: "compose:module"
|
||||
eventType: "beforeCreate"
|
||||
constraints:
|
||||
- name: name
|
||||
op: op
|
||||
values:
|
||||
- values
|
||||
|
||||
meta:
|
||||
description: description
|
||||
visual: {}
|
||||
ownedBy: "219521853847258224"
|
||||
createdAt: "2021-02-23T09:53:41Z"
|
||||
createdBy: "219521853847258224"
|
||||
updatedAt: "2021-02-23T09:53:41Z"
|
||||
updatedBy: "219521853847258224"
|
||||
deletedAt: "2021-02-23T09:53:41Z"
|
||||
deletedBy: "219521853847258224"
|
||||
|
||||
steps:
|
||||
- stepID: 101
|
||||
kind: "termination"
|
||||
arguments:
|
||||
- target: target
|
||||
source: source
|
||||
expr: expr
|
||||
value: value
|
||||
type: type
|
||||
tests:
|
||||
- expr: expr
|
||||
error: error
|
||||
results:
|
||||
- target: target
|
||||
source: source
|
||||
expr: expr
|
||||
value: value
|
||||
type: type
|
||||
tests:
|
||||
- expr: expr
|
||||
error: error
|
||||
meta:
|
||||
name: name
|
||||
description: description
|
||||
visual: {}
|
||||
|
||||
paths:
|
||||
- expr: expr
|
||||
parentID: 101
|
||||
childID: 101
|
||||
meta:
|
||||
name: name
|
||||
description: description
|
||||
visual: {}
|
||||
|
||||
runAs: "219521853847258224"
|
||||
|
||||
ownedBy: "219521853847258224"
|
||||
createdAt: "2021-02-23T09:53:41Z"
|
||||
createdBy: "219521853847258224"
|
||||
updatedAt: "2021-02-23T09:53:41Z"
|
||||
updatedBy: "219521853847258224"
|
||||
deletedAt: "2021-02-23T09:53:41Z"
|
||||
deletedBy: "219521853847258224"
|
||||
Reference in New Issue
Block a user