Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Z
zmops-test
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
sanshi
zmops-test
Commits
9e27e899
Commit
9e27e899
authored
Dec 12, 2019
by
sanshi
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
资产创建
parent
ea0bc58f
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
108 additions
and
85 deletions
+108
-85
Administrator.xml
.idea/dictionaries/Administrator.xml
+1
-0
test_device_create.py
WorkCase/APP/Device/test_device_create.py
+23
-75
__init__.py
WorkCase/APP/__init__.py
+74
-0
__init__.py
WorkCase/__init__.py
+10
-10
No files found.
.idea/dictionaries/Administrator.xml
View file @
9e27e899
...
@@ -33,6 +33,7 @@
...
@@ -33,6 +33,7 @@
<w>
graphids
</w>
<w>
graphids
</w>
<w>
groupid
</w>
<w>
groupid
</w>
<w>
groupids
</w>
<w>
groupids
</w>
<w>
hostdiscovery
</w>
<w>
hostgroup
</w>
<w>
hostgroup
</w>
<w>
hostid
</w>
<w>
hostid
</w>
<w>
hostids
</w>
<w>
hostids
</w>
...
...
WorkCase/APP/Device/test_device_create.py
View file @
9e27e899
...
@@ -19,6 +19,7 @@ from WorkData.Argus.hosts import DataHosts
...
@@ -19,6 +19,7 @@ from WorkData.Argus.hosts import DataHosts
from
WorkData.Argus.alarm_rule
import
DataAlarmRule
from
WorkData.Argus.alarm_rule
import
DataAlarmRule
import
allure
import
allure
from
WorkCase.APP
import
AppBase
@allure.feature
(
"测试模块:device.create"
)
@allure.feature
(
"测试模块:device.create"
)
...
@@ -36,13 +37,13 @@ class TestDeviceCreate(object):
...
@@ -36,13 +37,13 @@ class TestDeviceCreate(object):
base_id
=
10
base_id
=
10
base_password
=
"123456"
base_password
=
"123456"
base_type_agent
=
12
6
base_type_agent
=
12
8
base_type_snmp
=
12
7
base_type_snmp
=
12
9
base_ip
=
"172.16.3.170"
base_ip
=
"172.16.3.170"
base_dns
=
"sanshi.zmops.com"
base_dns
=
"sanshi.zmops.com"
base_port
=
999
base_port
=
161
base_name
=
"SS
测试资产-创建
"
base_name
=
"SS
操作系统
"
base_business_id_1
=
"12"
base_business_id_1
=
"12"
base_business_id_2
=
"13"
base_business_id_2
=
"13"
...
@@ -61,19 +62,14 @@ class TestDeviceCreate(object):
...
@@ -61,19 +62,14 @@ class TestDeviceCreate(object):
self
.
update_members_del_flag
(
members_id
=
self
.
base_id
,
value
=
CaseBase
()
.
del_flag
[
"OFF"
])
self
.
update_members_del_flag
(
members_id
=
self
.
base_id
,
value
=
CaseBase
()
.
del_flag
[
"OFF"
])
self
.
update_members_status
(
members_id
=
self
.
base_id
,
value
=
CaseBase
()
.
status
[
"ON"
])
self
.
update_members_status
(
members_id
=
self
.
base_id
,
value
=
CaseBase
()
.
status
[
"ON"
])
self
.
app
=
AppBase
(
host
=
self
.
host
)
self
.
token
=
self
.
app
.
get_base_token
(
login_name
=
self
.
login_name
,
base_password
=
self
.
base_password
)
def
teardown_method
(
self
):
def
teardown_method
(
self
):
self
.
log
.
debug
(
"测试用例执行结束..."
)
self
.
log
.
debug
(
"测试用例执行结束..."
)
self
.
update_members_del_flag
(
members_id
=
self
.
base_id
,
value
=
CaseBase
()
.
del_flag
[
"OFF"
])
self
.
update_members_del_flag
(
members_id
=
self
.
base_id
,
value
=
CaseBase
()
.
del_flag
[
"OFF"
])
self
.
update_members_status
(
members_id
=
self
.
base_id
,
value
=
CaseBase
()
.
status
[
"ON"
])
self
.
update_members_status
(
members_id
=
self
.
base_id
,
value
=
CaseBase
()
.
status
[
"ON"
])
@allure.step
(
"调用接口:api.login"
)
def
api_login
(
self
,
name
=
None
,
password
=
None
):
api
=
ApiLogin
(
_host
=
self
.
host
)
api
.
name
=
name
api
.
password
=
password
api
.
get_response
()
return
api
.
response
@allure.step
(
"更新表数据:members -- del_flag"
)
@allure.step
(
"更新表数据:members -- del_flag"
)
def
update_members_del_flag
(
self
,
members_id
=
None
,
value
=
None
):
def
update_members_del_flag
(
self
,
members_id
=
None
,
value
=
None
):
session
=
self
.
db_session
()
session
=
self
.
db_session
()
...
@@ -86,46 +82,6 @@ class TestDeviceCreate(object):
...
@@ -86,46 +82,6 @@ class TestDeviceCreate(object):
sql
=
DataMembers
()
.
update_status
(
session
=
session
,
_id
=
members_id
,
value
=
value
)
sql
=
DataMembers
()
.
update_status
(
session
=
session
,
_id
=
members_id
,
value
=
value
)
return
sql
return
sql
@allure.step
(
"调用接口:device.create"
)
def
device_create
(
self
,
token
=
None
,
hostName
=
None
,
hostType
=
None
,
manageLevel
=
None
,
iplist
=
None
,
dns
=
None
,
monitorInterface
=
None
,
monitorType
=
None
,
port
=
None
,
businessTree
=
None
,
parentHost
=
None
,
businessIds
=
None
,
opsPerson
=
None
,
snmpCommunity
=
None
,
ipmiAuthtype
=
None
,
ipmiPrivilege
=
None
,
ipmiUsername
=
None
,
ipmiPassword
=
None
,
factoryId
=
None
,
model
=
None
,
version
=
None
,
serialnumber
=
None
,
description
=
None
,
monitorStatus
=
None
):
api
=
DeviceCreate
(
_host
=
self
.
host
)
api
.
token
=
token
api
.
hostName
=
hostName
api
.
hostType
=
hostType
api
.
manageLevel
=
manageLevel
api
.
iplist
=
iplist
api
.
port
=
port
api
.
dns
=
dns
api
.
monitorInterface
=
monitorInterface
api
.
monitorType
=
monitorType
api
.
parentHost
=
parentHost
api
.
businessIds
=
businessIds
api
.
businessTree
=
businessTree
api
.
opsPerson
=
opsPerson
api
.
snmpCommunity
=
snmpCommunity
api
.
ipmiAuthtype
=
ipmiAuthtype
api
.
ipmiPrivilege
=
ipmiPrivilege
api
.
ipmiUsername
=
ipmiUsername
api
.
ipmiPassword
=
ipmiPassword
api
.
factoryId
=
factoryId
api
.
model
=
model
api
.
version
=
version
api
.
serialnumber
=
serialnumber
api
.
description
=
description
api
.
monitorStatus
=
monitorStatus
api
.
get_response
()
return
api
.
response
@allure.step
(
"获取token"
)
def
get_base_token
(
self
):
response
=
self
.
api_login
(
name
=
self
.
login_name
,
password
=
self
.
base_password
)
self
.
token
=
UtilsResponse
()
.
get_data
(
response
=
response
)
@allure.step
(
"连接数据库:Argus"
)
@allure.step
(
"连接数据库:Argus"
)
def
db_session
(
self
):
def
db_session
(
self
):
session
=
UtilsDataBase
()
.
conn_mysql
(
db_url
=
self
.
db_url
,
db_port
=
self
.
db_port
,
db_base
=
self
.
db_base
,
db_user
=
self
.
db_user
,
db_pw
=
self
.
db_pw
)
session
=
UtilsDataBase
()
.
conn_mysql
(
db_url
=
self
.
db_url
,
db_port
=
self
.
db_port
,
db_base
=
self
.
db_base
,
db_user
=
self
.
db_user
,
db_pw
=
self
.
db_pw
)
...
@@ -197,9 +153,7 @@ class TestDeviceCreate(object):
...
@@ -197,9 +153,7 @@ class TestDeviceCreate(object):
@allure.story
(
"创建资产:token未传"
)
@allure.story
(
"创建资产:token未传"
)
@allure.severity
(
"blocker"
)
@allure.severity
(
"blocker"
)
def
test_case_01
(
self
):
def
test_case_01
(
self
):
self
.
get_base_token
()
response
=
self
.
app
.
device_create
()
response
=
self
.
device_create
()
self
.
check_code
(
response
=
response
,
code
=
2001
)
self
.
check_code
(
response
=
response
,
code
=
2001
)
self
.
check_msg
(
response
=
response
,
msg
=
"无token,请重新登录"
)
self
.
check_msg
(
response
=
response
,
msg
=
"无token,请重新登录"
)
...
@@ -207,9 +161,8 @@ class TestDeviceCreate(object):
...
@@ -207,9 +161,8 @@ class TestDeviceCreate(object):
@allure.story
(
"创建资产:token的用户已删除"
)
@allure.story
(
"创建资产:token的用户已删除"
)
@allure.severity
(
"blocker"
)
@allure.severity
(
"blocker"
)
def
test_case_02
(
self
):
def
test_case_02
(
self
):
self
.
get_base_token
()
self
.
update_members_del_flag
(
members_id
=
self
.
base_id
,
value
=
CaseBase
()
.
del_flag
[
"ON"
])
self
.
update_members_del_flag
(
members_id
=
self
.
base_id
,
value
=
CaseBase
()
.
del_flag
[
"ON"
])
response
=
self
.
device_create
(
token
=
self
.
token
)
response
=
self
.
app
.
device_create
(
token
=
self
.
token
)
self
.
check_code
(
response
=
response
,
code
=
2004
)
self
.
check_code
(
response
=
response
,
code
=
2004
)
self
.
check_msg
(
response
=
response
,
msg
=
"用户不存在"
)
self
.
check_msg
(
response
=
response
,
msg
=
"用户不存在"
)
...
@@ -217,9 +170,8 @@ class TestDeviceCreate(object):
...
@@ -217,9 +170,8 @@ class TestDeviceCreate(object):
@allure.story
(
"创建资产:token的用户已禁用"
)
@allure.story
(
"创建资产:token的用户已禁用"
)
@allure.severity
(
"blocker"
)
@allure.severity
(
"blocker"
)
def
test_case_03
(
self
):
def
test_case_03
(
self
):
self
.
get_base_token
()
self
.
update_members_status
(
members_id
=
self
.
base_id
,
value
=
CaseBase
()
.
status
[
"OFF"
])
self
.
update_members_status
(
members_id
=
self
.
base_id
,
value
=
CaseBase
()
.
status
[
"OFF"
])
response
=
self
.
device_create
(
token
=
self
.
token
)
response
=
self
.
app
.
device_create
(
token
=
self
.
token
)
self
.
check_code
(
response
=
response
,
code
=
2003
)
self
.
check_code
(
response
=
response
,
code
=
2003
)
self
.
check_msg
(
response
=
response
,
msg
=
"账户已被禁用"
)
self
.
check_msg
(
response
=
response
,
msg
=
"账户已被禁用"
)
...
@@ -227,10 +179,9 @@ class TestDeviceCreate(object):
...
@@ -227,10 +179,9 @@ class TestDeviceCreate(object):
@allure.story
(
"创建资产:创建agent资产,ip识别"
)
@allure.story
(
"创建资产:创建agent资产,ip识别"
)
@allure.severity
(
"blocker"
)
@allure.severity
(
"blocker"
)
def
test_case_04
(
self
):
def
test_case_04
(
self
):
self
.
get_base_token
()
name
=
self
.
base_name
+
"04"
name
=
self
.
base_name
+
"04"
response
=
self
.
device_create
(
token
=
self
.
token
,
hostName
=
name
,
hostType
=
self
.
base_type_agent
,
iplist
=
self
.
base_ip
,
monitorInterface
=
self
.
base_port
,
response
=
self
.
app
.
device_create
(
token
=
self
.
token
,
hostName
=
name
,
hostType
=
self
.
base_type_agent
,
iplist
=
self
.
base_ip
,
monitorInterface
=
self
.
base_port
,
monitorType
=
1
,
manageLevel
=
1
)
monitorType
=
1
,
manageLevel
=
1
)
self
.
check_code
(
response
=
response
,
code
=
0
)
self
.
check_code
(
response
=
response
,
code
=
0
)
self
.
check_monitor_type
(
response
=
response
,
name
=
name
,
monitor_type
=
1
)
self
.
check_monitor_type
(
response
=
response
,
name
=
name
,
monitor_type
=
1
)
...
@@ -239,10 +190,9 @@ class TestDeviceCreate(object):
...
@@ -239,10 +190,9 @@ class TestDeviceCreate(object):
@allure.story
(
"创建资产:创建agent资产,dns识别"
)
@allure.story
(
"创建资产:创建agent资产,dns识别"
)
@allure.severity
(
"blocker"
)
@allure.severity
(
"blocker"
)
def
test_case_05
(
self
):
def
test_case_05
(
self
):
self
.
get_base_token
()
name
=
self
.
base_name
+
"05"
name
=
self
.
base_name
+
"05"
response
=
self
.
device_create
(
token
=
self
.
token
,
hostName
=
name
,
hostType
=
self
.
base_type_agent
,
iplist
=
self
.
base_ip
,
dns
=
self
.
base_dns
,
response
=
self
.
app
.
device_create
(
token
=
self
.
token
,
hostName
=
name
,
hostType
=
self
.
base_type_agent
,
iplist
=
self
.
base_ip
,
dns
=
self
.
base_dns
,
monitorInterface
=
self
.
base_port
,
monitorType
=
2
,
manageLevel
=
1
)
monitorInterface
=
self
.
base_port
,
monitorType
=
2
,
manageLevel
=
1
)
self
.
check_code
(
response
=
response
,
code
=
0
)
self
.
check_code
(
response
=
response
,
code
=
0
)
self
.
check_monitor_type
(
response
=
response
,
name
=
name
,
monitor_type
=
2
)
self
.
check_monitor_type
(
response
=
response
,
name
=
name
,
monitor_type
=
2
)
...
@@ -251,10 +201,9 @@ class TestDeviceCreate(object):
...
@@ -251,10 +201,9 @@ class TestDeviceCreate(object):
@allure.story
(
"创建资产:创建snmp资产,ip识别"
)
@allure.story
(
"创建资产:创建snmp资产,ip识别"
)
@allure.severity
(
"blocker"
)
@allure.severity
(
"blocker"
)
def
test_case_06
(
self
):
def
test_case_06
(
self
):
self
.
get_base_token
()
name
=
self
.
base_name
+
"06"
name
=
self
.
base_name
+
"06"
response
=
self
.
device_create
(
token
=
self
.
token
,
hostName
=
name
,
hostType
=
self
.
base_type_snmp
,
iplist
=
self
.
base_ip
,
monitorInterface
=
self
.
base_port
,
response
=
self
.
app
.
device_create
(
token
=
self
.
token
,
hostName
=
name
,
hostType
=
self
.
base_type_snmp
,
iplist
=
self
.
base_ip
,
monitorInterface
=
self
.
base_port
,
monitorType
=
1
,
manageLevel
=
1
)
monitorType
=
1
,
manageLevel
=
1
)
self
.
check_code
(
response
=
response
,
code
=
0
)
self
.
check_code
(
response
=
response
,
code
=
0
)
self
.
check_monitor_type
(
response
=
response
,
name
=
name
,
monitor_type
=
1
)
self
.
check_monitor_type
(
response
=
response
,
name
=
name
,
monitor_type
=
1
)
...
@@ -263,10 +212,9 @@ class TestDeviceCreate(object):
...
@@ -263,10 +212,9 @@ class TestDeviceCreate(object):
@allure.story
(
"创建资产:创建snmp资产,dns识别"
)
@allure.story
(
"创建资产:创建snmp资产,dns识别"
)
@allure.severity
(
"blocker"
)
@allure.severity
(
"blocker"
)
def
test_case_07
(
self
):
def
test_case_07
(
self
):
self
.
get_base_token
()
name
=
self
.
base_name
+
"07"
name
=
self
.
base_name
+
"07"
response
=
self
.
device_create
(
token
=
self
.
token
,
hostName
=
name
,
hostType
=
self
.
base_type_snmp
,
iplist
=
self
.
base_ip
,
dns
=
self
.
base_dns
,
response
=
self
.
app
.
device_create
(
token
=
self
.
token
,
hostName
=
name
,
hostType
=
self
.
base_type_snmp
,
iplist
=
self
.
base_ip
,
dns
=
self
.
base_dns
,
monitorInterface
=
self
.
base_port
,
monitorType
=
2
,
manageLevel
=
1
)
monitorInterface
=
self
.
base_port
,
monitorType
=
2
,
manageLevel
=
1
)
self
.
check_code
(
response
=
response
,
code
=
0
)
self
.
check_code
(
response
=
response
,
code
=
0
)
self
.
check_monitor_type
(
response
=
response
,
name
=
name
,
monitor_type
=
2
)
self
.
check_monitor_type
(
response
=
response
,
name
=
name
,
monitor_type
=
2
)
...
@@ -274,10 +222,9 @@ class TestDeviceCreate(object):
...
@@ -274,10 +222,9 @@ class TestDeviceCreate(object):
@allure.title
(
"device.create:创建资产-所有字段"
)
@allure.title
(
"device.create:创建资产-所有字段"
)
@allure.story
(
"创建资产:创建资产-所有字段"
)
@allure.story
(
"创建资产:创建资产-所有字段"
)
def
test_case_08
(
self
):
def
test_case_08
(
self
):
self
.
get_base_token
()
name
=
self
.
base_name
+
"08"
name
=
self
.
base_name
+
"08"
response
=
self
.
device_create
(
token
=
self
.
token
,
hostName
=
name
,
hostType
=
self
.
base_type_agent
,
iplist
=
self
.
base_ip
,
monitorInterface
=
self
.
base_port
,
response
=
self
.
app
.
device_create
(
token
=
self
.
token
,
hostName
=
name
,
hostType
=
self
.
base_type_agent
,
iplist
=
self
.
base_ip
,
monitorInterface
=
self
.
base_port
,
monitorType
=
1
,
manageLevel
=
1
,
parentHost
=
1
,
monitorType
=
1
,
manageLevel
=
1
,
parentHost
=
1
,
businessIds
=
self
.
base_business_id_1
+
","
+
self
.
base_business_id_2
,
businessTree
=
"businessTree"
,
businessIds
=
self
.
base_business_id_1
+
","
+
self
.
base_business_id_2
,
businessTree
=
"businessTree"
,
opsPerson
=
11
,
snmpCommunity
=
"snmpCommunity"
,
opsPerson
=
11
,
snmpCommunity
=
"snmpCommunity"
,
...
@@ -306,4 +253,5 @@ if __name__ == "__main__":
...
@@ -306,4 +253,5 @@ if __name__ == "__main__":
# a = TestDeviceCreate()
# a = TestDeviceCreate()
# a.setup_class()
# a.setup_class()
# a.test_case_08()
# a.setup_method()
# a.test_case_04()
WorkCase/APP/__init__.py
View file @
9e27e899
from
WorkApi.APP.Api.api_login
import
ApiLogin
from
WorkApi.APP.Device.device_create
import
DeviceCreate
import
allure
from
WorkUtils.UtilsResponse
import
UtilsResponse
class
AppBase
(
object
):
def
__init__
(
self
,
host
):
self
.
host
=
host
self
.
token
=
None
self
.
host_id
=
None
@allure.step
(
"调用接口:api.login"
)
def
api_login
(
self
,
name
=
None
,
password
=
None
):
api
=
ApiLogin
(
_host
=
self
.
host
)
api
.
name
=
name
api
.
password
=
password
api
.
get_response
()
return
api
.
response
@allure.step
(
"获取token"
)
def
get_base_token
(
self
,
login_name
,
base_password
):
response
=
self
.
api_login
(
name
=
login_name
,
password
=
base_password
)
self
.
token
=
UtilsResponse
()
.
get_data
(
response
=
response
)
return
self
.
token
@allure.step
(
"调用接口:device.create"
)
def
device_create
(
self
,
token
=
None
,
hostName
=
None
,
hostType
=
None
,
manageLevel
=
None
,
iplist
=
None
,
dns
=
None
,
monitorInterface
=
None
,
monitorType
=
None
,
parentHost
=
None
,
businessIds
=
None
,
businessTree
=
None
,
opsPerson
=
None
,
snmpCommunity
=
None
,
ipmiAuthtype
=
None
,
ipmiPrivilege
=
None
,
ipmiUsername
=
None
,
ipmiPassword
=
None
,
factoryId
=
None
,
model
=
None
,
version
=
None
,
serialnumber
=
None
,
description
=
None
,
monitorStatus
=
None
):
api
=
DeviceCreate
(
_host
=
self
.
host
)
api
.
token
=
token
api
.
hostName
=
hostName
api
.
hostType
=
hostType
api
.
manageLevel
=
manageLevel
api
.
iplist
=
iplist
api
.
dns
=
dns
api
.
monitorInterface
=
monitorInterface
api
.
monitorType
=
monitorType
api
.
parentHost
=
parentHost
api
.
businessIds
=
businessIds
api
.
businessTree
=
businessTree
api
.
opsPerson
=
opsPerson
api
.
snmpCommunity
=
snmpCommunity
api
.
ipmiAuthtype
=
ipmiAuthtype
api
.
ipmiPrivilege
=
ipmiPrivilege
api
.
ipmiUsername
=
ipmiUsername
api
.
ipmiPassword
=
ipmiPassword
api
.
factoryId
=
factoryId
api
.
model
=
model
api
.
version
=
version
api
.
serialnumber
=
serialnumber
api
.
description
=
description
api
.
monitorStatus
=
monitorStatus
api
.
get_response
()
return
api
.
response
@allure.step
(
"创建测试数据"
)
def
case_create
(
self
,
base_name
,
num
,
host_type
,
iplist
,
port
,
businessIds
):
name
=
base_name
+
num
response
=
self
.
device_create
(
token
=
self
.
token
,
hostName
=
name
,
hostType
=
host_type
,
iplist
=
iplist
,
monitorInterface
=
port
,
monitorType
=
1
,
manageLevel
=
1
,
parentHost
=
1
,
businessIds
=
businessIds
,
opsPerson
=
11
,
snmpCommunity
=
"snmpCommunity"
,
ipmiAuthtype
=
1
,
ipmiPrivilege
=
1
,
ipmiUsername
=
"ipmiUsername"
,
ipmiPassword
=
"ipmiPassword"
,
factoryId
=
1
,
model
=
"model"
,
version
=
"version"
,
serialnumber
=
"serialnumber"
,
description
=
"description"
,
monitorStatus
=
1
)
self
.
host_id
=
UtilsResponse
()
.
get_data
(
response
=
response
)
return
self
.
host_id
WorkCase/__init__.py
View file @
9e27e899
...
@@ -9,17 +9,17 @@ class CaseBase:
...
@@ -9,17 +9,17 @@ class CaseBase:
self
.
environment
=
{
self
.
environment
=
{
# "host": "http://10.0.0.12:7070",
# "host": "http://10.0.0.12:7070",
# "db_url": "10.0.0.153",
"db_url"
:
"172.16.2.153"
,
# "db_port": 3306,
# "db_user": "zmops",
# "db_pw": "0VMoH%W7|h",
# "db_base": "zabbix",
"host"
:
"http://172.16.3.197:7070"
,
"db_url"
:
"172.16.2.155"
,
"db_port"
:
3306
,
"db_port"
:
3306
,
"db_user"
:
"root"
,
"db_user"
:
"zmops"
,
"db_pw"
:
"123456"
,
"db_pw"
:
"0VMoH
%
W7|h"
,
"db_base"
:
"zabbix"
"db_base"
:
"zabbix"
,
"host"
:
"http://172.16.3.197:7070"
,
# "db_url": "172.16.2.155",
# "db_port": 3306,
# "db_user": "root",
# "db_pw": "123456",
# "db_base": "zabbix"
}
}
self
.
app_environment
=
{
self
.
app_environment
=
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment