Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
E
evm-store
Project overview
Project overview
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
wanli
evm-store
Commits
b4570cc6
Commit
b4570cc6
authored
Jul 15, 2021
by
wanli
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update
parent
4ff82ce3
Changes
76
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
76 changed files
with
73806 additions
and
1230 deletions
+73806
-1230
README.md
README.md
+14
-0
backend/apiData.json
backend/apiData.json
+227
-0
backend/app/signal_manager.py
backend/app/signal_manager.py
+2
-15
backend/backupData.json
backend/backupData.json
+1
-1
backend/controller/__init__.py
backend/controller/__init__.py
+2
-9
backend/controller/annex_manager.py
backend/controller/annex_manager.py
+0
-124
backend/controller/api_manager.py
backend/controller/api_manager.py
+16
-15
backend/controller/app_logs_manager.py
backend/controller/app_logs_manager.py
+1
-6
backend/controller/apps_manager.py
backend/controller/apps_manager.py
+2
-2
backend/controller/build_logs_manager.py
backend/controller/build_logs_manager.py
+1
-7
backend/controller/device_manager.py
backend/controller/device_manager.py
+1
-6
backend/controller/dictionary_manager.py
backend/controller/dictionary_manager.py
+1
-6
backend/controller/download_manager.py
backend/controller/download_manager.py
+9
-16
backend/controller/login_logs_manager.py
backend/controller/login_logs_manager.py
+1
-6
backend/controller/login_manager.py
backend/controller/login_manager.py
+2
-8
backend/controller/monitor.py
backend/controller/monitor.py
+8
-7
backend/controller/netdisc_manager.py
backend/controller/netdisc_manager.py
+0
-140
backend/controller/role_manager.py
backend/controller/role_manager.py
+0
-114
backend/controller/upload_manager.py
backend/controller/upload_manager.py
+1
-13
backend/controller/user_manager.py
backend/controller/user_manager.py
+15
-14
backend/deploy.py
backend/deploy.py
+8
-2
backend/fullstack/login/auth.py
backend/fullstack/login/auth.py
+5
-7
backend/model/annex.py
backend/model/annex.py
+1
-1
backend/model/app_logs.py
backend/model/app_logs.py
+1
-1
backend/model/app_users.py
backend/model/app_users.py
+1
-1
backend/model/apps.py
backend/model/apps.py
+1
-1
backend/model/build_logs.py
backend/model/build_logs.py
+1
-1
backend/model/device.py
backend/model/device.py
+1
-1
backend/model/dictionary.py
backend/model/dictionary.py
+1
-1
backend/model/download.py
backend/model/download.py
+1
-1
backend/model/login_logs.py
backend/model/login_logs.py
+1
-1
backend/model/monitor.py
backend/model/monitor.py
+34
-10
backend/model/netdisc.py
backend/model/netdisc.py
+0
-30
backend/model/user.py
backend/model/user.py
+1
-1
backend/runoob.log
backend/runoob.log
+44568
-9
backend/start.py
backend/start.py
+4
-8
backend/utils/__init__.py
backend/utils/__init__.py
+0
-1
backend/utils/ccode.py
backend/utils/ccode.py
+1
-2
backend/view/__init__.py
backend/view/__init__.py
+1
-3
backend/view/annex.py
backend/view/annex.py
+0
-96
backend/view/api.py
backend/view/api.py
+72
-0
backend/view/app_logs.py
backend/view/app_logs.py
+9
-4
backend/view/apps.py
backend/view/apps.py
+1
-2
backend/view/device.py
backend/view/device.py
+9
-4
backend/view/download.py
backend/view/download.py
+10
-10
backend/view/files.py
backend/view/files.py
+1
-4
backend/view/login.py
backend/view/login.py
+9
-1
backend/view/monitor.py
backend/view/monitor.py
+119
-28
backend/view/netdisc.py
backend/view/netdisc.py
+0
-162
backend/view/user.py
backend/view/user.py
+4
-6
backend/view/ws.py
backend/view/ws.py
+3
-3
frontend/public/index.html
frontend/public/index.html
+0
-1
frontend/src/api/index.js
frontend/src/api/index.js
+0
-31
frontend/src/layout/index.vue
frontend/src/layout/index.vue
+3
-1
frontend/src/main.js
frontend/src/main.js
+2
-2
frontend/src/permission.js
frontend/src/permission.js
+4
-4
frontend/src/router/index.js
frontend/src/router/index.js
+1
-1
frontend/src/settings.js
frontend/src/settings.js
+15
-1
frontend/src/utils/eventBus.js
frontend/src/utils/eventBus.js
+1
-1
frontend/src/views/system/monitor.vue
frontend/src/views/system/monitor.vue
+559
-254
frontend/vue.config.js
frontend/vue.config.js
+3
-4
tools/build_out/controllers/__init__.py
tools/build_out/controllers/__init__.py
+4
-0
tools/build_out/controllers/area.py
tools/build_out/controllers/area.py
+11
-0
tools/build_out/controllers/package.py
tools/build_out/controllers/package.py
+17
-0
tools/build_out/controllers/user.py
tools/build_out/controllers/user.py
+14
-0
tools/build_out/logs/running.log
tools/build_out/logs/running.log
+27819
-0
tools/build_out/views/login.py
tools/build_out/views/login.py
+14
-0
tools/build_out/views/package.py
tools/build_out/views/package.py
+14
-0
tools/frontend/src/views/Application/Form.vue
tools/frontend/src/views/Application/Form.vue
+0
-1
tools/gen_code.py
tools/gen_code.py
+25
-0
tools/modules/file.py
tools/modules/file.py
+81
-18
tools/resources/application/__init__.py
tools/resources/application/__init__.py
+8
-0
tools/resources/manager.py
tools/resources/manager.py
+8
-0
tools/resources/models/__init__.py
tools/resources/models/__init__.py
+8
-0
tools/resources/webcreator/event.py
tools/resources/webcreator/event.py
+15
-0
tools/resources/webcreator/log.py
tools/resources/webcreator/log.py
+8
-0
No files found.
README.md
View file @
b4570cc6
<!--
*
@Author: your name
*
@Date: 2021-04-14 14:12:18
*
@LastEditTime: 2021-07-03 11:33:36
*
@LastEditors: Please set LastEditors
*
@Description: In User Settings Edit
*
@FilePath:
\e
vm-store
\R
EADME.md
-->
# evm-store
EVM应用商店
...
...
@@ -25,3 +33,9 @@ pip3 install -r requirements.txt
```
pip freeze > requirements.txt
```
# 应用商店
# 运营平台用户前端
> https://appstore.huawei.com/
backend/apiData.json
0 → 100644
View file @
b4570cc6
{
"appList"
:
[
{
"uuid"
:
"001"
,
"img"
:
"alipay.png"
,
"title"
:
"支付宝"
,
"arrow"
:
"setup.png"
,
"download"
:
120
,
"like"
:
76
,
"category"
:
"1016"
,
"details"
:
{
"version"
:
"1.0.1"
,
"update"
:
"2021-04-01"
,
"size"
:
20
,
"log"
:
"优化性能,提高稳定性和安全性"
,
"desc"
:
"生活好,支付宝"
}
},
{
"uuid"
:
"123"
,
"img"
:
"qq.png"
,
"title"
:
"腾讯QQ"
,
"arrow"
:
"setup.png"
,
"download"
:
111
,
"like"
:
70
,
"category"
:
"1016"
,
"details"
:
{
"version"
:
"0.0.2"
,
"update"
:
"2021-04-02"
,
"size"
:
22
,
"log"
:
"修复若干已知问题"
,
"desc"
:
"QQ,乐在沟通"
}
},
{
"uuid"
:
"456"
,
"img"
:
"qq_music.png"
,
"title"
:
"QQ音乐"
,
"arrow"
:
"setup.png"
,
"download"
:
100
,
"like"
:
71
,
"category"
:
"1012"
,
"details"
:
{
"version"
:
"0.0.3"
,
"update"
:
"2021-04-03"
,
"size"
:
32
,
"log"
:
"优化性能,提高稳定性和安全性"
,
"desc"
:
"十五年的陪伴,国民音乐平台"
}
},
{
"uuid"
:
"789"
,
"img"
:
"360kids.png"
,
"title"
:
"360儿童卫士"
,
"arrow"
:
"setup.png"
,
"download"
:
100
,
"like"
:
56
,
"category"
:
"1016"
,
"details"
:
{
"version"
:
"0.0.5"
,
"update"
:
"2021-04-05"
,
"size"
:
36
,
"log"
:
"优化性能,提高稳定性和安全性"
,
"desc"
:
"千万家长信任的育学助手"
}
},
{
"uuid"
:
"1011"
,
"img"
:
"baidutieba.png"
,
"title"
:
"百度贴吧"
,
"arrow"
:
"setup.png"
,
"download"
:
100
,
"like"
:
78
,
"category"
:
"1016"
,
"details"
:
{
"version"
:
"0.0.4"
,
"update"
:
"2021-04-04"
,
"size"
:
25
,
"log"
:
"优化性能,提高稳定性和安全性"
,
"desc"
:
"聊兴趣,上贴吧"
}
},
{
"uuid"
:
"1012"
,
"img"
:
"aiqiyi.png"
,
"title"
:
"爱奇艺"
,
"arrow"
:
"setup.png"
,
"download"
:
79
,
"like"
:
76
,
"category"
:
"1013"
,
"details"
:
{
"version"
:
"0.0.3"
,
"update"
:
"2021-04-03"
,
"size"
:
41
,
"log"
:
"优化性能,提高稳定性和安全性"
,
"desc"
:
"欧洲杯免费直播"
}
},
{
"uuid"
:
"1013"
,
"img"
:
"yy.png"
,
"title"
:
"YY语音"
,
"arrow"
:
"setup.png"
,
"download"
:
120
,
"like"
:
45
,
"category"
:
"1015"
,
"details"
:
{
"version"
:
"0.0.3"
,
"update"
:
"2021-04-03"
,
"size"
:
32
,
"log"
:
"优化性能,提高稳定性和安全性"
,
"desc"
:
"和附近的聊天看直播"
}
},
{
"uuid"
:
"1014"
,
"img"
:
"didi.png"
,
"title"
:
"滴滴打车"
,
"arrow"
:
"setup.png"
,
"download"
:
34
,
"like"
:
55
,
"category"
:
"1016"
,
"details"
:
{
"version"
:
"0.0.3"
,
"update"
:
"2021-04-03"
,
"size"
:
32
,
"log"
:
"优化性能,提高稳定性和安全性"
,
"desc"
:
"滴滴一下,美好出行"
}
},
{
"uuid"
:
"1015"
,
"img"
:
"gaode.png"
,
"title"
:
"高德地图"
,
"arrow"
:
"setup.png"
,
"download"
:
29
,
"like"
:
59
,
"category"
:
"1016"
,
"details"
:
{
"version"
:
"0.0.3"
,
"update"
:
"2021-04-03"
,
"size"
:
32
,
"log"
:
"优化性能,提高稳定性和安全性"
,
"desc"
:
"专享88元打车礼包"
}
}
],
"categoryList"
:
[
{
"uuid"
:
"1012"
,
"img"
:
"music.png"
,
"title"
:
"音乐"
},
{
"uuid"
:
"1013"
,
"img"
:
"movie.png"
,
"title"
:
"视频"
},
{
"uuid"
:
"1014"
,
"img"
:
"camera.png"
,
"title"
:
"相机"
},
{
"uuid"
:
"1015"
,
"img"
:
"voice.png"
,
"title"
:
"语音"
},
{
"uuid"
:
"1016"
,
"img"
:
"tool.png"
,
"title"
:
"工具"
}
],
"downloadList"
:
[
{
"icon"
:
"360kids.png"
,
"time"
:
1625648308210
,
"iconUrl"
:
"http://store.evmiot.com/application/360kids.png"
,
"apkId"
:
"789"
,
"version"
:
"v1.0"
,
"homePage"
:
"evue_album"
,
"apkDownloadUrl"
:
"evue_album"
,
"fileList"
:
"360kids"
},
{
"icon"
:
"qq_music.png"
,
"time"
:
1625648308210
,
"iconUrl"
:
"http://store.evmiot.com/application/qq_music.png"
,
"apkId"
:
"456"
,
"version"
:
"v1.0"
,
"homePage"
:
"evue_music"
,
"apkDownloadUrl"
:
"evue_music"
,
"fileList"
:
"qq_music"
},
{
"icon"
:
"gaode.png"
,
"time"
:
1625648308210
,
"iconUrl"
:
"http://store.evmiot.com/application/gaode.png"
,
"apkId"
:
"1015"
,
"version"
:
"v1.0"
,
"homePage"
:
"evue_dial"
,
"apkDownloadUrl"
:
"evue_dial"
,
"fileList"
:
"gaode"
},
{
"icon"
:
"didi.png"
,
"time"
:
1625648308210
,
"iconUrl"
:
"http://store.evmiot.com/application/didi.png"
,
"apkId"
:
"1014"
,
"version"
:
"v1.0"
,
"homePage"
:
"evue_setting"
,
"apkDownloadUrl"
:
"evue_setting"
,
"fileList"
:
"didi"
},
{
"icon"
:
"alipay.png"
,
"time"
:
1625648308210
,
"iconUrl"
:
"http://store.evmiot.com/application/zhifubao.png"
,
"apkId"
:
"001"
,
"version"
:
"v1.0"
,
"homePage"
:
"evue_calculator"
,
"apkDownloadUrl"
:
"evue_calculator"
,
"fileList"
:
"alipay"
}
]
}
\ No newline at end of file
backend/app/signal_manager.py
View file @
b4570cc6
'''
Author: your name
Date: 2021-04-14 14:12:18
LastEditTime: 2021-0
6-22 12:40:5
3
LastEditTime: 2021-0
7-03 11:53:4
3
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath:
\
evm-store
\b
ackend
\a
pp
\
signal_manager.py
...
...
@@ -39,19 +39,13 @@ class SignalManager(object):
actionDeleteBuildLog
=
PySignal
()
# 用户模块
actionCheckUser
=
PySignal
()
actionAddUser
=
PySignal
()
actionDeleteUser
=
PySignal
()
actionGetUser
=
PySignal
()
actionGetUserList
=
PySignal
()
actionUpdateUser
=
PySignal
()
# 文件附件模块
actionAddAnnex
=
PySignal
()
actionDeleteAnnex
=
PySignal
()
actionGetAnnex
=
PySignal
()
actionGetAnnexList
=
PySignal
()
actionUpdateAnnex
=
PySignal
()
# 系统框架模块
actionAddDevice
=
PySignal
()
actionDeleteDevice
=
PySignal
()
...
...
@@ -80,13 +74,6 @@ class SignalManager(object):
actionGetLoginLogsList
=
PySignal
()
actionUpdateLoginLogs
=
PySignal
()
# 系统菜单
actionAddMenu
=
PySignal
()
actionDeleteMenu
=
PySignal
()
actionGetMenu
=
PySignal
()
actionGetMenuList
=
PySignal
()
actionUpdateMenu
=
PySignal
()
def
__init__
(
self
):
super
(
SignalManager
,
self
)
.
__init__
()
...
...
backend/backupData.json
View file @
b4570cc6
{
"lastModifyDateTime"
:
1624973031
}
\ No newline at end of file
{
"lastModifyDateTime"
:
1625808079
}
\ No newline at end of file
backend/controller/__init__.py
View file @
b4570cc6
'''
Author: your name
Date: 2021-04-14 14:12:18
LastEditTime: 2021-0
6-29 19:55:00
LastEditTime: 2021-0
7-03 11:53:04
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath:
\
evm-store
\b
ackend
\
controller
\
__init__.py
...
...
@@ -14,7 +14,6 @@ from app import signalManager
from
.api_manager
import
apiManager
from
.user_manager
import
userManager
from
.login_manager
import
loginManager
from
.annex_manager
import
annexManager
from
.apps_manager
import
appsManager
from
.device_manager
import
deviceManager
from
.download_manager
import
downloadManager
...
...
@@ -65,19 +64,13 @@ def initConnect():
signalManager
.
actionUpdateLoginLogs
.
connect
(
loginLogsManager
.
update
)
# 用户模块
signalManager
.
actionCheckUser
.
connect
(
userManager
.
check
)
signalManager
.
actionAddUser
.
connect
(
userManager
.
add
)
signalManager
.
actionDeleteUser
.
connect
(
userManager
.
delete
)
signalManager
.
actionGetUser
.
connect
(
userManager
.
get
)
signalManager
.
actionGetUserList
.
connect
(
userManager
.
getList
)
signalManager
.
actionUpdateUser
.
connect
(
userManager
.
update
)
# 文件附件模块
signalManager
.
actionAddAnnex
.
connect
(
annexManager
.
add
)
signalManager
.
actionDeleteAnnex
.
connect
(
annexManager
.
delete
)
signalManager
.
actionGetAnnex
.
connect
(
annexManager
.
get
)
signalManager
.
actionGetAnnexList
.
connect
(
annexManager
.
getList
)
signalManager
.
actionUpdateAnnex
.
connect
(
annexManager
.
update
)
# 应用下载统计模块
signalManager
.
actionAddDownload
.
connect
(
downloadManager
.
add
)
signalManager
.
actionDeleteDownload
.
connect
(
downloadManager
.
delete
)
...
...
backend/controller/annex_manager.py
deleted
100644 → 0
View file @
4ff82ce3
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import
copy
import
time
import
types
import
json
import
logging
import
traceback
from
datetime
import
datetime
from
pony.orm
import
*
from
flask
import
request
from
model
import
fullStackDB
from
model.annex
import
Annex
from
model.user
import
User
from
utils
import
sql_filter
logger
=
logging
.
getLogger
(
"AnnexManager"
)
class
AnnexManager
(
object
):
def
__init__
(
self
):
super
(
AnnexManager
,
self
)
.
__init__
()
def
add
(
self
,
data
):
editor
=
User
.
get
(
id
=
request
.
current_user
.
get
(
"id"
))
if
not
editor
:
return
False
,
"current user is not exists"
if
data
.
get
(
"flow"
):
flow
=
Flow
.
get
(
uuid
=
data
.
get
(
"flow"
))
if
not
flow
:
return
False
,
"flow does not exists."
data
.
update
({
"flow"
:
flow
})
elif
data
.
get
(
"project"
):
project
=
Project
.
get
(
uuid
=
data
.
get
(
"project"
))
if
not
project
:
return
False
,
"project does not exists."
data
.
update
({
"project"
:
project
})
data
.
update
({
'title'
:
data
.
get
(
"title"
),
'path'
:
data
.
get
(
"path"
),
'size'
:
data
.
get
(
"size"
),
'create_by'
:
editor
,
'create_at'
:
datetime
.
now
(),
'update_by'
:
editor
,
'update_at'
:
datetime
.
now
(),
})
result
=
fullStackDB
.
add
(
Annex
,
**
data
)
return
result
,
"add annex {}."
.
format
(
"success"
if
result
else
"fail"
)
def
delete
(
self
,
uuid
):
result
=
False
with
db_session
:
editor
=
User
.
get
(
id
=
request
.
current_user
.
get
(
"id"
))
if
not
editor
:
return
False
,
"current user is not exists"
result
=
Annex
.
get
(
uuid
=
uuid
)
if
result
:
if
result
.
project
:
count
=
Annex
.
select
(
project
=
result
.
project
,
remarks
=
result
.
remarks
,
is_delete
=
False
)
.
count
()
if
count
==
1
:
project
=
Project
.
get
(
id
=
result
.
project
.
id
)
if
project
:
condition
=
dict
()
if
result
.
remarks
==
"bidding"
:
# 中标通知书
condition
.
update
({
"is_bidding"
:
False
})
elif
result
.
remarks
==
"acceptance"
:
# 验收表
condition
.
update
({
"is_acceptance"
:
False
})
elif
result
.
remarks
==
"evaluation"
:
# 评价表
condition
.
update
({
"is_evaluation"
:
False
})
elif
result
.
remarks
==
"contract"
:
# 合同
condition
.
update
({
"is_contract"
:
False
})
project
.
extend1
.
get
(
"uploads"
)
.
update
({
result
.
remarks
:
False
})
project
.
set
(
extend1
=
project
.
extend1
,
**
condition
)
result
.
set
(
is_delete
=
True
,
delete_at
=
datetime
.
now
(),
delete_by
=
editor
)
commit
()
result
=
True
return
result
,
"delete annex {}."
.
format
(
"success"
if
result
else
"fail"
)
def
get
(
self
,
data
):
result
=
Annex
.
get
(
**
data
)
if
result
:
result
=
result
.
to_dict
(
with_collections
=
True
,
related_objects
=
True
,
only
=
[
"uuid"
,
"title"
,
"create_at"
,
"update_at"
,
"delete_at"
])
return
result
,
"get annex {}."
.
format
(
"success"
if
result
else
"fail"
)
def
getList
(
self
,
data
):
if
not
data
or
len
(
data
)
<=
0
:
return
False
,
0
,
"parameters can not be null."
result
=
Annex
.
select
()
.
where
(
is_delete
=
False
,
**
data
)
if
len
(
result
):
temp
=
[]
for
item
in
result
:
# t = item.to_dict(with_collections=True, only=["uuid", "title", "project", "path", "remarks"])
# temp.append(t)
temp
.
append
({
"uuid"
:
item
.
uuid
,
"name"
:
item
.
title
,
"project"
:
item
.
project
.
id
,
"url"
:
item
.
path
,
"type"
:
item
.
remarks
})
result
=
temp
return
result
,
len
(
result
),
"get annex {}."
.
format
(
"success"
if
result
else
"no data"
)
def
update
(
self
,
uuid
,
data
):
# 当参数为空时,直接返回错误
if
len
(
data
)
<=
0
or
(
len
(
data
.
keys
())
==
1
and
"id"
in
data
):
return
False
,
"parameters can not be null."
# 查询请求者是否存在
editor
=
User
.
get
(
id
=
request
.
current_user
.
get
(
"id"
))
if
not
editor
:
return
False
,
"current user is not exists"
result
=
fullStackDB
.
update
(
Annex
,
{
'uuid'
:
uuid
},
update_at
=
datetime
.
now
(),
update_by
=
editor
,
**
data
)
return
result
,
"update annex {}."
.
format
(
"success"
if
result
else
"fail"
)
annexManager
=
AnnexManager
()
backend/controller/api_manager.py
View file @
b4570cc6
'''
Author: your name
Date: 2021-04-14 14:12:18
LastEditTime: 2021-0
6-29 20:21:46
LastEditTime: 2021-0
7-01 11:39:27
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath:
\
evm-store
\b
ackend
\
controller
\a
pi_manager.py
...
...
@@ -17,6 +17,7 @@ from pony.orm import *
from
app.setting
import
config
from
model.user
import
User
from
utils
import
md5_salt
from
utils.ccode
import
convert_string
logger
=
logging
.
getLogger
(
__name__
)
...
...
@@ -51,27 +52,27 @@ class ApiManager(object):
return
True
,
"success"
def
get_escape_text
(
self
,
data
):
fname
=
"./a.c"
target
=
os
.
sep
.
join
([
"out"
,
fname
])
#
fname = "./a.c"
#
target = os.sep.join(["out", fname])
if
os
.
path
.
exists
(
fname
):
os
.
remove
(
fname
)
#
if os.path.exists(fname):
#
os.remove(fname)
if
os
.
path
.
exists
(
target
):
os
.
remove
(
target
)
#
if os.path.exists(target):
#
os.remove(target)
with
open
(
fname
,
"w+"
)
as
f
:
f
.
write
(
data
[
'string'
])
#
with open(fname, "w+") as f:
#
f.write(data['string'])
result
=
os
.
system
(
"./opqcp {i} ./out"
.
format
(
i
=
fname
))
print
(
result
)
#
result = os.system("./opqcp {i} ./out".format(i=fname))
#
print(result)
with
open
(
target
)
as
f
:
result
=
f
.
read
()
#
with open(target) as f:
#
result = f.read()
return
result
#
return result
#
return convert_string(data['string'])
return
convert_string
(
data
[
'string'
])
def
opqcp
(
self
,
params
):
target_file
=
os
.
path
.
normpath
(
os
.
sep
.
join
([
config
.
get
(
"UPLOAD_PATH"
),
params
.
get
(
"filename"
)]))
...
...
backend/controller/app_logs_manager.py
View file @
b4570cc6
...
...
@@ -2,19 +2,14 @@
# -*- coding: utf_8 -*-
import
copy
import
time
import
types
import
json
import
logging
import
traceback
from
datetime
import
datetime
from
pony.orm
import
*
from
model
import
fullStackDB
from
model.app_logs
import
AppLogs
from
model.user
import
User
from
utils
import
sql_filter
logger
=
logging
.
getLogger
(
"AppLogsManager"
)
logger
=
logging
.
getLogger
(
__name__
)
class
AppLogsManager
(
object
):
def
__init__
(
self
):
...
...
backend/controller/apps_manager.py
View file @
b4570cc6
...
...
@@ -17,10 +17,10 @@ from model.apps import Apps
from
model.user
import
User
from
model.app_logs
import
AppLogs
from
model.build_logs
import
BuildLogs
from
utils
import
sql_filter
,
ThreadMaker
from
utils
import
ThreadMaker
from
utils.epk
import
EpkApp
logger
=
logging
.
getLogger
(
"AppsManager"
)
logger
=
logging
.
getLogger
(
__name__
)
@
ThreadMaker
def
build_application
(
user
,
uuid
):
...
...
backend/controller/build_logs_manager.py
View file @
b4570cc6
...
...
@@ -4,13 +4,8 @@
import
os
import
re
import
copy
import
time
import
types
import
json
import
shutil
import
logging
import
traceback
from
urllib.parse
import
urlparse
,
urljoin
from
datetime
import
datetime
from
pony.orm
import
*
from
app.setting
import
config
...
...
@@ -20,10 +15,9 @@ from model.annex import Annex
from
model.app_logs
import
AppLogs
from
model.build_logs
import
BuildLogs
from
model.user
import
User
from
utils
import
sql_filter
from
utils.epk
import
EpkApp
logger
=
logging
.
getLogger
(
"BuildLogsManager"
)
logger
=
logging
.
getLogger
(
__name__
)
class
BuildLogsManager
(
object
):
def
__init__
(
self
):
...
...
backend/controller/device_manager.py
View file @
b4570cc6
...
...
@@ -2,19 +2,14 @@
# -*- coding: utf_8 -*-
import
copy
import
time
import
types
import
json
import
logging
import
traceback
from
datetime
import
datetime
from
pony.orm
import
*
from
model
import
fullStackDB
from
model.device
import
Device
from
model.user
import
User
from
utils
import
sql_filter
logger
=
logging
.
getLogger
(
"DeviceManager"
)
logger
=
logging
.
getLogger
(
__name__
)
class
DeviceManager
(
object
):
def
__init__
(
self
):
...
...
backend/controller/dictionary_manager.py
View file @
b4570cc6
...
...
@@ -2,20 +2,15 @@
# -*- coding: utf_8 -*-
import
copy
import
time
import
types
import
json
import
logging
import
traceback
from
datetime
import
datetime
from
pony.orm
import
select
,
desc
from
flask
import
request
from
model
import
fullStackDB
from
model.dictionary
import
Dict
from
model.user
import
User
from
utils
import
sql_filter
logger
=
logging
.
getLogger
(
"DictManager"
)
logger
=
logging
.
getLogger
(
__name__
)
class
DictManager
(
object
):
def
__init__
(
self
):
...
...
backend/controller/download_manager.py
View file @
b4570cc6
...
...
@@ -2,30 +2,23 @@
# -*- coding: utf_8 -*-
import
os
import
re
import
copy
import
time
import
types
import
json
import
logging
import
traceback
import
shutil
from
collections
import
OrderedDict
import
urllib
from
pathlib
import
Path
from
urllib
import
parse
,
request
from
urllib.parse
import
urlparse
,
urljoin
,
urlencode
from
urllib.parse
import
urlparse
from
datetime
import
datetime
from
pony.orm
import
*
from
flask
import
request
as
flask_request
from
app.setting
import
config
,
conf
from
model
import
fullStackDB
from
app.setting
import
config
from
model.download
import
AppDownload
from
model.device
import
Device
from
model.apps
import
Apps
from
model.user
import
User
from
utils
import
sql_filter
,
ThreadMaker
from
utils
import
ThreadMaker
logger
=
logging
.
getLogger
(
"DownloadManager"
)
logger
=
logging
.
getLogger
(
__name__
)
@
ThreadMaker
def
update_download_information
(
ip
,
id
):
...
...
@@ -141,15 +134,15 @@ class DownloadManager(object):
app
=
app
[:]
epk_path
=
""
if
app
[
0
]
.
app_build_log
:
epk_path
=
os
.
sep
.
join
([
os
.
getcwd
(),
app
[
0
]
.
app_build_log
.
app_path
])
if
not
os
.
path
.
exists
(
epk_path
):
epk_path
=
os
.
path
.
normpath
(
os
.
sep
.
join
([
config
.
get
(
"UPLOAD_PATH"
),
app
[
0
]
.
app_build_log
.
app_path
]))
epk_path
=
Path
(
epk_path
)
if
not
epk_path
.
exists
():
return
False
,
"epk file not found"
down
=
AppDownload
(
app
=
app
[
0
],
imei
=
data
.
get
(
"imei"
))
commit
()
if
down
:
real_ip
=
flask_request
.
headers
[
'X-Forwarded-For'
]
update_download_information
(
real_ip
,
down
.
id
)
update_download_information
(
data
.
get
(
'real_ip'
,
'127.0.0.1'
),
down
.
id
)
return
epk_path
,
"get dictionary {}."
.
format
(
"success"
if
epk_path
else
"no data"
)
...
...
backend/controller/login_logs_manager.py
View file @
b4570cc6
...
...
@@ -2,19 +2,14 @@
# -*- coding: utf_8 -*-
import
copy
import
time
import
types
import
json
import
logging
import
traceback
from
datetime
import
datetime
from
pony.orm
import
*
from
model
import
fullStackDB
from
model.login_logs
import
LoginLogs
from
model.user
import
User
from
utils
import
sql_filter
logger
=
logging
.
getLogger
(
"LoginLogsManager"
)
logger
=
logging
.
getLogger
(
__name__
)
class
LoginLogsManager
(
object
):
def
__init__
(
self
):
...
...
backend/controller/login_manager.py
View file @
b4570cc6
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import
copy
import
time
import
types
import
json
import
logging
import
traceback
import
urllib
from
urllib
import
parse
,
request
from
urllib.parse
import
urlparse
,
urljoin
,
urlencode
from
datetime
import
datetime
from
threading
import
Thread
from
werkzeug.security
import
check_password_hash
from
flask
import
request
as
flask_request
from
pony.orm
import
*
from
model
import
fullStackDB
from
model.user
import
User
from
model.login_logs
import
LoginLogs
from
fullstack.login
import
Auth
from
fullstack.response
import
ResponseCode
from
utils
import
md5_salt
,
ThreadMaker
logger
=
logging
.
getLogger
(
"LoginManager"
)
logger
=
logging
.
getLogger
(
__name__
)
@
ThreadMaker
def
update_login_information
(
ip
,
user_id
):
...
...
@@ -88,7 +82,7 @@ class LoginManager(object):
update_login_information
(
real_ip
,
result
.
id
)
# 返回token
token
=
Auth
.
encode_auth_token
(
result
.
id
,
result
.
username
)
# 生成 token
token
=
Auth
.
encode_auth_token
(
result
.
id
,
result
.
username
,
str
(
result
.
uuid
)
)
# 生成 token
# setattr(result, 'token', token)
return
{
'token'
:
token
,
'id'
:
result
.
id
,
'username'
:
result
.
username
},
ResponseCode
.
OK
...
...
backend/controller/monitor.py
View file @
b4570cc6
'''
Author: your name
Date: 2021-06-29 19:24:32
LastEditTime: 2021-07-
01 10:01:48
LastEditTime: 2021-07-
14 21:25:39
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath:
\
evm-store
\b
ackend
\
controller
\
monitor.py
'''
from
model.monitor
import
session
,
System
,
Lvgl
,
Evm
,
Image
,
Watch
,
Request
from
model.monitor
import
session
,
System
,
Lvgl
,
Evm
,
Image
,
Device
,
Request
,
User
class
SystemResource
(
object
):
def
get
(
self
):
...
...
@@ -93,16 +93,17 @@ def insert_data(msg):
# 先判断手表imei是否存在,不存在则先注册手表IMEI
watch_id
=
-
1
if
msg
.
get
(
"imei"
):
result
=
session
.
query
(
Watch
)
.
filter_by
(
imei
=
msg
.
get
(
"imei"
))
.
first
()
result
=
session
.
query
(
Device
)
.
filter_by
(
imei
=
msg
.
get
(
"imei"
))
.
first
()
if
result
:
watch_id
=
result
.
id
else
:
result
=
Watch
(
imei
=
msg
.
get
(
"imei"
))
user
=
session
.
query
(
User
)
.
filter
(
User
.
account
==
"evm"
)
.
first
()
result
=
Device
(
imei
=
msg
.
get
(
"imei"
),
name
=
"watch_{}"
.
format
(
msg
.
get
(
"imei"
)),
type
=
"watch"
,
create_by
=
user
.
id
,
update_by
=
user
.
id
)
session
.
add
(
result
)
session
.
flush
()
session
.
commit
()
result
=
session
.
query
(
Watch
)
.
filter_by
(
imei
=
msg
.
get
(
"imei"
))
.
first
()
result
=
session
.
query
(
Device
)
.
filter_by
(
imei
=
msg
.
get
(
"imei"
))
.
first
()
if
result
:
watch_id
=
result
.
id
...
...
@@ -129,7 +130,7 @@ def insert_data(msg):
imageResource
.
post_array
(
msg
.
get
(
"image"
),
watch_id
)
def
get_watch_list
():
result
=
session
.
query
(
Watch
)
.
all
()
result
=
session
.
query
(
Device
)
.
all
()
tmp
=
[]
for
item
in
result
:
tmp
.
append
({
...
...
@@ -188,7 +189,7 @@ def image_data(watch, start, end):
def
get_monitor_list
(
watch
,
category
,
start
,
end
):
# 判断watch是否存在
w
=
session
.
query
(
Watch
)
.
filter
(
Watch
.
id
==
watch
)
.
first
()
w
=
session
.
query
(
Device
)
.
filter
(
Device
.
id
==
watch
)
.
first
()
if
not
w
:
return
[]
...
...
backend/controller/netdisc_manager.py
deleted
100644 → 0
View file @
4ff82ce3
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import
os
import
copy
import
time
import
types
import
json
import
logging
import
traceback
from
datetime
import
datetime
from
pony.orm
import
*
from
flask
import
request
from
model
import
fullStackDB
from
model.netdisc
import
Netdisc
from
model.user
import
User
from
app.setting
import
config
logger
=
logging
.
getLogger
(
"NetDiscManager"
)
class
NetDiscManager
(
object
):
def
__init__
(
self
):
super
(
NetDiscManager
,
self
)
.
__init__
()
def
add
(
self
,
data
):
editor
=
User
.
get
(
id
=
request
.
current_user
.
get
(
"id"
))
if
not
editor
:
return
False
,
"current user is not exists"
data
.
update
({
'create_by'
:
editor
,
'create_at'
:
datetime
.
now
(),
'update_by'
:
editor
,
'update_at'
:
datetime
.
now
(),
})
result
=
fullStackDB
.
add
(
Netdisc
,
**
data
)
return
result
,
"add netdisc {}."
.
format
(
"success"
if
result
else
"fail"
)
def
delete
(
self
,
data
):
# 通过uuid查询出所有的文件列表,然后全部删除
editor
=
User
.
get
(
id
=
request
.
current_user
.
get
(
"id"
))
if
not
editor
:
return
False
,
"current user is not exists"
count
=
0
result
=
[]
with
db_session
:
for
uuid
in
data
.
get
(
"uuids"
):
nd
=
Netdisc
.
get
(
uuid
=
uuid
)
if
nd
:
# nd.is_delete = True
# nd.delete_at = datetime.now()
# nd.delete_by = editor
nd
.
set
(
is_delete
=
True
,
delete_at
=
datetime
.
now
(),
delete_by
=
editor
)
count
=
count
+
1
result
.
append
([
nd
.
is_dir
,
nd
.
real_path
])
commit
()
return
result
,
"delete {} netdisc {}."
.
format
(
count
,
"success"
if
result
else
"fail"
)
def
get
(
self
,
data
):
result
=
Netdisc
.
get
(
**
data
)
if
result
:
result
=
result
.
to_dict
(
only
=
[
"uuid"
,
"name"
,
"real_path"
])
return
result
,
"get netdisc {}."
.
format
(
"success"
if
result
else
"no data"
)
def
getList
(
self
,
data
):
data
.
update
({
"is_delete"
:
False
})
count
=
0
result
=
[]
with
db_session
:
editor
=
User
.
get
(
id
=
request
.
current_user
.
get
(
"id"
))
if
not
editor
:
return
False
,
"current user is not exists"
if
editor
.
role
.
name
!=
"超级管理员"
:
data
.
update
({
"create_by"
:
editor
})
result
=
Netdisc
.
select
()
.
where
(
**
data
)
.
order_by
(
Netdisc
.
name
)
count
=
len
(
result
)
files
=
[]
folders
=
[]
for
item
in
result
:
t
=
item
.
to_dict
(
with_collections
=
True
,
related_objects
=
True
,
only
=
[
"uuid"
,
"name"
,
"size"
,
"is_dir"
,
"parent_dir"
,
"file_type"
,
"create_at"
,
"update_at"
])
if
item
.
is_dir
:
t
.
update
({
"is_dir"
:
1
if
item
.
is_dir
else
0
,
"real_path"
:
os
.
path
.
relpath
(
item
.
real_path
,
config
.
get
(
"UPLOAD_PATH"
))
.
replace
(
'
\\
'
,
'/'
),
"create_by"
:
item
.
create_by
.
to_dict
(
only
=
[
"uuid"
,
"username"
]),
"update_by"
:
item
.
update_by
.
to_dict
(
only
=
[
"uuid"
,
"username"
]),
"create_at"
:
item
.
create_at
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
),
"update_at"
:
item
.
update_at
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
})
folders
.
append
(
t
)
else
:
t
.
update
({
"is_dir"
:
1
if
item
.
is_dir
else
0
,
"real_path"
:
os
.
path
.
relpath
(
item
.
real_path
,
config
.
get
(
"UPLOAD_PATH"
))
.
replace
(
'
\\
'
,
'/'
),
"create_by"
:
item
.
create_by
.
to_dict
(
only
=
[
"uuid"
,
"username"
]),
"update_by"
:
item
.
update_by
.
to_dict
(
only
=
[
"uuid"
,
"username"
]),
"create_at"
:
item
.
create_at
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
),
"update_at"
:
item
.
update_at
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
})
files
.
append
(
t
)
result
=
folders
+
files
return
result
,
count
,
"get netdisc {}."
.
format
(
"success"
if
result
else
"no data"
)
def
update
(
self
,
uuid
,
data
):
# 当参数为空时,直接返回错误
if
len
(
data
)
<=
0
or
(
len
(
data
.
keys
())
==
1
and
"id"
in
data
):
return
False
,
"parameters can not be null."
result
=
None
with
db_session
:
# 查询请求者是否存在
editor
=
User
.
get
(
id
=
request
.
current_user
.
get
(
"id"
))
if
not
editor
:
return
False
,
"current user is not exists"
result
=
Netdisc
.
get
(
uuid
=
uuid
)
if
result
:
_real
=
result
.
real_path
result
.
set
(
update_at
=
datetime
.
now
(),
update_by
=
editor
,
**
data
)
commit
()
_ext
=
os
.
path
.
splitext
(
result
.
real_path
)[
-
1
]
_dir
=
os
.
path
.
dirname
(
result
.
real_path
)
filename
=
data
.
get
(
"name"
)
+
_ext
data
.
update
({
"real_path"
:
os
.
path
.
normpath
(
os
.
sep
.
join
([
_dir
,
filename
]))
})
result
=
{
"src"
:
_real
,
"dst"
:
data
.
get
(
"real_path"
)
}
return
result
,
"update netdisc {}."
.
format
(
"success"
if
result
else
"fail"
)
netDiscManager
=
NetDiscManager
()
backend/controller/role_manager.py
deleted
100644 → 0
View file @
4ff82ce3
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import
copy
import
time
import
types
import
json
import
logging
import
traceback
from
datetime
import
datetime
from
pony.orm
import
*
from
flask
import
request
from
model
import
fullStackDB
from
model.depot
import
Depot
from
model.role
import
Role
from
model.user
import
User
from
utils
import
sql_filter
logger
=
logging
.
getLogger
(
"RoleManager"
)
class
RoleManager
(
object
):
def
__init__
(
self
):
super
(
RoleManager
,
self
)
.
__init__
()
def
add
(
self
,
data
):
# 判断角色名是否存在
result
=
Role
.
get
(
name
=
data
.
get
(
"name"
))
if
result
:
return
False
,
"role name has been exists."
editor
=
User
.
get
(
id
=
request
.
current_user
.
get
(
"id"
))
if
not
editor
:
return
False
,
"current user is not exists"
data
.
update
({
'create_by'
:
editor
,
'create_at'
:
datetime
.
now
(),
'update_by'
:
editor
,
'update_at'
:
datetime
.
now
(),
})
result
=
fullStackDB
.
add
(
Role
,
**
data
)
return
result
,
"add role {}."
.
format
(
"success"
if
result
else
"fail"
)
def
delete
(
self
,
uuid
):
editor
=
User
.
get
(
id
=
request
.
current_user
.
get
(
"id"
))
if
not
editor
:
return
False
,
"current user is not exists"
result
=
fullStackDB
.
update
(
Role
,
{
'uuid'
:
uuid
},
is_delete
=
True
,
delete_at
=
datetime
.
now
(),
delete_by
=
editor
)
return
result
,
"delete role {}."
.
format
(
"success"
if
result
else
"fail"
)
def
get
(
self
,
data
):
result
=
Role
.
get
(
**
data
)
if
result
:
result
=
result
.
to_dict
(
with_collections
=
True
,
related_objects
=
True
,
only
=
[
"uuid"
,
"name"
,
"create_at"
,
"update_at"
,
"delete_at"
])
return
result
,
"get role {}."
.
format
(
"success"
if
result
else
"fail"
)
def
getList
(
self
,
data
):
if
not
data
or
len
(
data
)
<=
0
:
return
False
,
0
,
"parameters can not be null."
temp
=
copy
.
deepcopy
(
data
)
if
'pagenum'
in
temp
:
temp
.
pop
(
'pagenum'
)
if
'pagesize'
in
temp
:
temp
.
pop
(
'pagesize'
)
if
'scope_type'
in
temp
:
temp
.
pop
(
'scope_type'
)
temp
.
setdefault
(
"is_delete"
,
False
)
if
"scope_type"
in
data
and
data
.
get
(
"scope_type"
)
==
"list"
:
result
=
Role
.
select
()
.
where
(
**
temp
)
.
order_by
(
desc
(
Role
.
create_at
))
temp
=
[]
for
item
in
result
:
temp
.
append
(
item
.
to_dict
(
only
=
[
"uuid"
,
"name"
]))
return
temp
,
len
(
temp
),
"get select {}."
.
format
(
"success"
if
temp
else
"no data"
)
result
=
fullStackDB
.
pagination
(
Role
,
Role
.
create_at
,
pagenum
=
data
.
get
(
"pagenum"
,
1
),
pagesize
=
data
.
get
(
"pagesize"
,
10
),
**
temp
)
count
=
fullStackDB
.
count
(
Role
,
**
temp
)
if
result
and
len
(
result
):
temp
=
[]
for
item
in
result
:
t
=
item
.
to_dict
(
with_collections
=
True
,
related_objects
=
True
,
only
=
[
"uuid"
,
"name"
,
"permission"
,
"is_system"
,
"create_by"
,
"update_by"
])
t
.
update
({
"create_at"
:
item
.
create_at
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
})
t
.
update
({
"update_at"
:
item
.
update_at
.
strftime
(
"
%
Y-
%
m-
%
d
%
H:
%
M:
%
S"
)
})
t
.
update
({
"create_by"
:
item
.
create_by
.
to_dict
(
only
=
[
"uuid"
,
"username"
])
})
t
.
update
({
"update_by"
:
item
.
update_by
.
to_dict
(
only
=
[
"uuid"
,
"username"
])
})
temp
.
append
(
t
)
result
=
temp
return
result
,
count
,
"get role {}."
.
format
(
"success"
if
result
else
"no data"
)
def
update
(
self
,
uuid
,
data
):
# 当参数为空时,直接返回错误
if
len
(
data
)
<=
0
or
(
len
(
data
.
keys
())
==
1
and
"id"
in
data
):
return
False
,
"parameters can not be null."
# 查询请求者是否存在
editor
=
User
.
get
(
id
=
request
.
current_user
.
get
(
"id"
))
if
not
editor
:
return
False
,
"current user is not exists"
result
=
None
with
db_session
:
result
=
Role
.
get
(
uuid
=
uuid
)
if
result
:
result
.
set
(
update_at
=
datetime
.
now
(),
update_by
=
editor
,
**
data
)
commit
()
# result = fullStackDB.update(Role, { 'uuid': uuid }, update_at=datetime.now(), update_by=editor, **data)
return
result
,
"update role {}."
.
format
(
"success"
if
result
else
"fail"
)
roleManager
=
RoleManager
()
backend/controller/upload_manager.py
View file @
b4570cc6
...
...
@@ -2,27 +2,15 @@
# -*- coding: utf_8 -*-
import
os
import
sys
import
copy
import
time
import
types
import
json
import
logging
import
traceback
import
re
import
tempfile
import
shutil
import
base64
import
uuid
from
hashlib
import
md5
as
fmd5
from
urllib
import
parse
from
datetime
import
datetime
from
threading
import
Thread
from
werkzeug.security
import
check_password_hash
from
app.setting
import
config
from
utils
import
md5_salt
,
random_string
logger
=
logging
.
getLogger
(
"UploadManager"
)
logger
=
logging
.
getLogger
(
__name__
)
FileStoragePath
=
os
.
getcwd
()
...
...
backend/controller/user_manager.py
View file @
b4570cc6
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import
time
import
json
import
logging
import
traceback
import
copy
import
uuid
from
datetime
import
datetime
from
pony.orm
import
*
from
flask
import
request
from
app.setting
import
config
from
model
import
fullStackDB
from
model.user
import
User
from
utils
import
md5_salt
,
filter_dict
,
sql_filter
from
utils
import
md5_salt
logger
=
logging
.
getLogger
(
"UserManager"
)
logger
=
logging
.
getLogger
(
__name__
)
class
UserManager
(
object
):
'''
...
...
@@ -25,7 +19,14 @@ class UserManager(object):
def
__init__
(
self
):
super
(
UserManager
,
self
)
.
__init__
()
def
add
(
self
,
data
):
def
check
(
self
,
data
):
with
db_session
:
user
=
User
.
get
(
uuid
=
data
.
get
(
"uuid"
))
if
not
user
:
return
False
return
True
def
add
(
self
,
uuid
,
data
):
'''
添加用户
'''
...
...
@@ -35,7 +36,7 @@ class UserManager(object):
if
isExists
:
return
False
,
"user already exists"
editor
=
User
.
get
(
id
=
request
.
current_user
.
get
(
"id"
)
)
editor
=
User
.
get
(
id
=
uuid
)
if
not
editor
:
return
False
,
"current user is not exists"
...
...
@@ -60,7 +61,7 @@ class UserManager(object):
删除用户
'''
with
db_session
:
editor
=
User
.
get
(
id
=
request
.
current_user
.
get
(
"id"
)
)
editor
=
User
.
get
(
uuid
=
uuid
)
if
not
editor
:
return
False
,
"current user is not exists"
...
...
@@ -82,7 +83,7 @@ class UserManager(object):
with
db_session
:
# 查询请求者是否存在
editor
=
User
.
get
(
id
=
request
.
current_user
.
get
(
"id"
)
)
editor
=
User
.
get
(
uuid
=
uuid
)
if
not
editor
:
return
False
,
"current user is not exists"
...
...
@@ -99,12 +100,12 @@ class UserManager(object):
else
:
return
None
,
"user does not exists"
def
get
(
self
):
def
get
(
self
,
user
):
'''
查询单用户
'''
result
=
User
.
get
(
id
=
request
.
current_user
.
get
(
"id"
)
,
is_delete
=
False
)
result
=
User
.
get
(
id
=
user
,
is_delete
=
False
)
if
result
:
temp
=
result
.
to_dict
(
with_collections
=
True
,
related_objects
=
True
,
only
=
[
"uuid"
,
"username"
,
"account"
,
"role"
,
"phone"
,
"email"
,
"gender"
,
"create_at"
,
"update_at"
])
temp
.
update
({
...
...
backend/deploy.py
View file @
b4570cc6
'''
Author: your name
Date: 2021-04-14 14:12:18
LastEditTime: 2021-07-01 14:46:22
LastEditors: your name
Description: In User Settings Edit
FilePath:
\
evm-store
\b
ackend
\
deploy.py
'''
import
os
import
sys
import
json
import
getopt
import
shutil
import
configparser
from
datetime
import
datetime
...
...
backend/fullstack/login/auth.py
View file @
b4570cc6
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import
sys
import
re
import
logging
import
traceback
import
time
from
datetime
import
datetime
,
timedelta
,
timezone
from
datetime
import
datetime
,
timedelta
from
functools
import
wraps
import
jwt
from
flask
import
jsonify
,
current_app
,
request
from
flask
import
current_app
,
request
logger
=
logging
.
getLogger
(
"auth"
)
logger
=
logging
.
getLogger
(
__name__
)
class
Auth
(
object
):
...
...
@@ -36,7 +33,7 @@ class Auth(object):
return
inner
@
staticmethod
def
encode_auth_token
(
user_id
,
username
):
def
encode_auth_token
(
user_id
,
username
,
uuid
):
"""
生成认证Token
:param user_id: int
...
...
@@ -52,6 +49,7 @@ class Auth(object):
'sub'
:
user_id
,
# token所属者
'data'
:
{
# payload
'id'
:
user_id
,
'uuid'
:
uuid
,
'username'
:
username
}
}
...
...
backend/model/annex.py
View file @
b4570cc6
...
...
@@ -3,7 +3,7 @@
import
uuid
from
datetime
import
datetime
from
pony.orm
import
PrimaryKey
,
Required
,
Optional
,
Set
,
LongStr
,
Json
from
pony.orm
import
PrimaryKey
,
Required
,
Optional
,
LongStr
from
app
import
config
from
.
import
fullStackDB
...
...
backend/model/app_logs.py
View file @
b4570cc6
...
...
@@ -3,7 +3,7 @@
import
uuid
from
datetime
import
datetime
from
pony.orm
import
PrimaryKey
,
Required
,
Optional
,
Set
,
Json
from
pony.orm
import
PrimaryKey
,
Required
,
Optional
,
Json
from
app
import
config
from
.
import
fullStackDB
...
...
backend/model/app_users.py
View file @
b4570cc6
...
...
@@ -3,7 +3,7 @@
import
uuid
from
datetime
import
datetime
from
pony.orm
import
PrimaryKey
,
Required
,
Optional
,
Set
from
pony.orm
import
PrimaryKey
,
Required
,
Optional
from
app
import
config
from
.
import
fullStackDB
...
...
backend/model/apps.py
View file @
b4570cc6
...
...
@@ -3,7 +3,7 @@
import
uuid
from
datetime
import
datetime
from
pony.orm
import
PrimaryKey
,
Required
,
Optional
,
Set
,
LongStr
,
Json
from
pony.orm
import
PrimaryKey
,
Required
,
Optional
,
Set
from
app
import
config
from
.
import
fullStackDB
...
...
backend/model/build_logs.py
View file @
b4570cc6
...
...
@@ -3,7 +3,7 @@
import
uuid
from
datetime
import
datetime
from
pony.orm
import
PrimaryKey
,
Required
,
Optional
,
Set
,
LongStr
,
Json
from
pony.orm
import
PrimaryKey
,
Required
,
Optional
,
Json
from
app
import
config
from
.
import
fullStackDB
...
...
backend/model/device.py
View file @
b4570cc6
...
...
@@ -3,7 +3,7 @@
import
uuid
from
datetime
import
datetime
from
pony.orm
import
PrimaryKey
,
Required
,
Optional
,
Set
,
LongStr
,
Json
from
pony.orm
import
PrimaryKey
,
Required
,
Optional
,
Set
from
app
import
config
from
.
import
fullStackDB
...
...
backend/model/dictionary.py
View file @
b4570cc6
...
...
@@ -3,7 +3,7 @@
import
uuid
from
datetime
import
datetime
from
pony.orm
import
PrimaryKey
,
Required
,
Optional
,
Set
from
pony.orm
import
PrimaryKey
,
Required
,
Optional
from
app
import
config
from
.
import
fullStackDB
...
...
backend/model/download.py
View file @
b4570cc6
...
...
@@ -3,7 +3,7 @@
import
uuid
from
datetime
import
datetime
from
pony.orm
import
PrimaryKey
,
Required
,
Optional
,
Set
from
pony.orm
import
PrimaryKey
,
Required
,
Optional
from
app
import
config
from
.
import
fullStackDB
...
...
backend/model/login_logs.py
View file @
b4570cc6
...
...
@@ -3,7 +3,7 @@
import
uuid
from
datetime
import
datetime
from
pony.orm
import
PrimaryKey
,
Required
,
Optional
,
Set
,
Json
from
pony.orm
import
PrimaryKey
,
Required
,
Optional
from
app
import
config
from
.
import
fullStackDB
...
...
backend/model/monitor.py
View file @
b4570cc6
'''
Author: your name
Date: 2021-04-14 14:12:18
LastEditTime: 2021-06-30 23:52:39
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath:
\
evm-store
\b
ackend
\
model
\
monitor.py
'''
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import
json
import
uuid
from
app.setting
import
config
from
datetime
import
datetime
from
sqlalchemy
import
create_engine
from
sqlalchemy
import
func
,
Column
,
Integer
,
String
,
Float
,
DateTime
,
Numeric
from
sqlalchemy
import
func
,
Column
,
Integer
,
String
,
DateTime
,
Boolean
from
sqlalchemy.ext.declarative
import
declarative_base
from
sqlalchemy.orm
import
sessionmaker
,
class_mapper
,
object_mapper
from
sqlalchemy.orm
import
sessionmaker
,
class_mapper
engine
=
create_engine
(
'sqlite:///{}?check_same_thread=False'
.
format
(
config
.
get
(
"DATABASE"
)),
echo
=
False
)
...
...
@@ -24,6 +17,9 @@ Base = declarative_base()
def
get_current_datetime
():
return
datetime
.
now
()
def
gen_id
():
return
uuid
.
uuid4
()
.
hex
def
object_to_dict
(
obj
):
columns
=
[
column
.
key
for
column
in
class_mapper
(
obj
.
__class__
)
.
columns
]
get_key_value
=
lambda
c
:
(
c
,
getattr
(
obj
,
c
)
.
isoformat
())
if
isinstance
(
getattr
(
obj
,
c
),
datetime
)
else
(
c
,
getattr
(
obj
,
c
))
...
...
@@ -136,6 +132,34 @@ class Image(Base):
def
to_dict
(
self
):
return
{
c
.
name
:
getattr
(
self
,
c
.
name
)
for
c
in
self
.
__table__
.
columns
}
class
User
(
Base
):
__tablename__
=
"{}"
.
format
(
config
[
'TABLE_PREFIX'
])
+
"user"
id
=
Column
(
Integer
,
primary_key
=
True
,
autoincrement
=
True
)
uuid
=
Column
(
String
(
64
),
default
=
gen_id
,
index
=
True
)
account
=
Column
(
String
(
256
))
class
Device
(
Base
):
__tablename__
=
"{}"
.
format
(
config
[
'TABLE_PREFIX'
])
+
"device"
id
=
Column
(
Integer
,
primary_key
=
True
,
autoincrement
=
True
)
uuid
=
Column
(
String
(
64
),
default
=
gen_id
,
index
=
True
)
name
=
Column
(
String
,
default
=
""
)
imei
=
Column
(
String
)
desc
=
Column
(
String
,
default
=
""
)
type
=
Column
(
String
,
default
=
"watch"
)
create_at
=
Column
(
DateTime
(
timezone
=
True
),
default
=
get_current_datetime
,
onupdate
=
func
.
now
())
create_by
=
Column
(
Integer
,
default
=
None
,
nullable
=
True
)
update_at
=
Column
(
DateTime
(
timezone
=
True
),
default
=
get_current_datetime
,
onupdate
=
func
.
now
())
update_by
=
Column
(
Integer
,
default
=
None
)
delete_at
=
Column
(
DateTime
(
timezone
=
True
),
default
=
get_current_datetime
,
onupdate
=
func
.
now
())
delete_by
=
Column
(
Integer
,
default
=
None
)
is_delete
=
Column
(
Boolean
,
default
=
False
)
sort
=
Column
(
Integer
,
default
=
1
)
remarks
=
Column
(
String
,
default
=
""
)
def
to_dict
(
self
):
return
{
c
.
name
:
getattr
(
self
,
c
.
name
)
for
c
in
self
.
__table__
.
columns
}
Base
.
metadata
.
create_all
(
engine
,
checkfirst
=
True
)
# engine是2.2中创建的连接
...
...
backend/model/netdisc.py
deleted
100644 → 0
View file @
4ff82ce3
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import
uuid
from
datetime
import
datetime
from
pony.orm
import
PrimaryKey
,
Required
,
Optional
,
Set
,
LongStr
,
Json
from
app
import
config
from
.
import
fullStackDB
db
=
fullStackDB
.
db
class
Netdisc
(
db
.
Entity
):
_table_
=
"{}"
.
format
(
config
[
'TABLE_PREFIX'
])
+
"netdisc"
id
=
PrimaryKey
(
int
,
auto
=
True
)
uuid
=
Required
(
uuid
.
UUID
,
unique
=
True
,
default
=
uuid
.
uuid1
,
index
=
True
)
name
=
Required
(
str
,
max_len
=
200
)
# 文件名
size
=
Required
(
int
,
default
=
0
)
# 文件大小
file_type
=
Required
(
str
)
# 文件类型
is_dir
=
Required
(
bool
,
default
=
False
)
# 是否是目录
parent_dir
=
Required
(
str
,
default
=
'/'
)
# 上级目录
real_path
=
Required
(
str
)
# 真实路径
create_at
=
Required
(
datetime
,
default
=
datetime
.
now
)
create_by
=
Required
(
"User"
,
reverse
=
'netdisc_creator'
)
# NetDisc与User一对一关系
update_at
=
Required
(
datetime
,
default
=
datetime
.
now
)
update_by
=
Required
(
"User"
,
reverse
=
'netdisc_updater'
)
# NetDisc与User一对一关系
delete_at
=
Optional
(
datetime
)
delete_by
=
Optional
(
"User"
,
reverse
=
'netdisc_deleter'
)
# NetDisc与User一对一关系
is_delete
=
Required
(
bool
,
default
=
False
)
sort
=
Optional
(
int
,
size
=
32
,
default
=
0
)
remarks
=
Optional
(
str
,
max_len
=
255
,
default
=
""
,
nullable
=
True
)
\ No newline at end of file
backend/model/user.py
View file @
b4570cc6
...
...
@@ -3,7 +3,7 @@
import
uuid
from
datetime
import
datetime
,
date
from
pony.orm
import
PrimaryKey
,
Required
,
Optional
,
Set
,
Json
from
pony.orm
import
PrimaryKey
,
Required
,
Optional
,
Set
from
app
import
config
from
.
import
fullStackDB
...
...
backend/runoob.log
View file @
b4570cc6
This diff is collapsed.
Click to expand it.
backend/start.py
View file @
b4570cc6
'''
Author: your name
Date: 2021-04-14 14:12:18
LastEditTime: 2021-07-
01 00:06:01
LastEditTime: 2021-07-
14 21:37:53
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath:
\
evm-store
\b
ackend
\
start.py
...
...
@@ -16,7 +16,6 @@ from tornado.wsgi import WSGIContainer
from
tornado.web
import
Application
,
RequestHandler
,
FallbackHandler
from
tornado.ioloop
import
IOLoop
from
tornado.autoreload
import
watch
from
fullstack.log
import
logger
from
view
import
app
from
view.monitor
import
DeviceMessageHandler
,
NotifyHandler
,
WatchHandler
from
app
import
config
...
...
@@ -26,9 +25,7 @@ class GracefulExit(SystemExit):
class
VueHandler
(
RequestHandler
):
def
get
(
self
):
remote_ip
=
self
.
request
.
remote_ip
logger
.
info
(
"remote_ip
%
s"
%
remote_ip
)
self
.
render
(
"index.html"
)
self
.
write
(
json
.
dumps
({
'code'
:
200
,
'msg'
:
'success'
,
'data'
:
self
.
request
.
remote_ip
}))
def
raise_graceful_exit
(
*
args
):
IOLoop
.
current
()
.
stop
()
...
...
@@ -38,15 +35,14 @@ def raise_graceful_exit(*args):
def
start
():
settings
=
{
'debug'
:
config
[
'DEBUG'
],
'template_path'
:
config
[
'TEMPLATE_PATH'
],
'static_path'
:
config
[
'STATIC_PATH'
],
#
'template_path': config['TEMPLATE_PATH'],
#
'static_path': config['STATIC_PATH'],
'static_url_path'
:
''
,
}
watch
(
os
.
sep
.
join
([
os
.
getcwd
(),
"restart.json"
]))
wsgi_app
=
WSGIContainer
(
app
)
application
=
Application
([
(
r'/'
,
VueHandler
),
(
r'/index'
,
VueHandler
),
(
r"/api/v1/evm_store/monitor"
,
DeviceMessageHandler
),
(
r"/api/v1/evm_store/watch"
,
WatchHandler
),
(
r"/ws/v1/notify"
,
NotifyHandler
),
...
...
backend/utils/__init__.py
View file @
b4570cc6
...
...
@@ -13,7 +13,6 @@ import string
import
datetime
import
threading
import
decimal
import
uuid
class
DecimalEncoder
(
json
.
JSONEncoder
):
def
default
(
self
,
o
):
...
...
backend/utils/ccode.py
View file @
b4570cc6
'''
Author: your name
Date: 2021-04-29 12:12:01
LastEditTime: 2021-07-1
2 00:56:10
LastEditTime: 2021-07-1
4 21:26:39
LastEditors: your name
Description: In User Settings Edit
FilePath:
\
evm-store
\b
ackend
\
utils
\
ccode.py
'''
# -*- coding: utf-8 -*-
import
sys
...
...
backend/view/__init__.py
View file @
b4570cc6
'''
Author: your name
Date: 2021-04-14 14:12:18
LastEditTime: 2021-0
6-29 19:37:32
LastEditTime: 2021-0
7-03 11:43:10
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath:
\
evm-store
\b
ackend
\v
iew
\
__init__.py
...
...
@@ -18,7 +18,6 @@ from .api import api
from
.files
import
file_api
from
.login
import
login_api
from
.user
import
user_api
from
.annex
import
annex_api
from
.apps
import
apps_api
from
.device
import
device_api
from
.download
import
download_api
...
...
@@ -48,7 +47,6 @@ def create_app():
app
.
register_blueprint
(
login_api
)
app
.
register_blueprint
(
file_api
)
app
.
register_blueprint
(
user_api
)
app
.
register_blueprint
(
annex_api
)
app
.
register_blueprint
(
apps_api
)
app
.
register_blueprint
(
download_api
)
app
.
register_blueprint
(
device_api
)
...
...
backend/view/annex.py
deleted
100644 → 0
View file @
4ff82ce3
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import
os
import
json
import
datetime
import
logging
import
traceback
from
flask
import
Blueprint
,
request
from
app
import
config
,
signalManager
from
fullstack.login
import
Auth
from
fullstack.validation
import
validate_schema
from
fullstack.response
import
ResponseCode
,
response_result
from
schema.annex
import
AddSchema
,
DeleteSchema
,
QuerySchema
,
UpdateSchema
,
ResponseSchema
logger
=
logging
.
getLogger
(
__name__
)
annex_api
=
Blueprint
(
"annex_api"
,
__name__
,
url_prefix
=
"/api/v1/
%
s/annex"
%
config
[
'NAME'
])
@
annex_api
.
route
(
"/add"
,
methods
=
[
'POST'
])
@
validate_schema
(
AddSchema
)
@
Auth
.
auth_required
def
add
():
try
:
isSuccess
,
message
=
signalManager
.
actionAddAnnex
.
emit
(
request
.
schema_data
)
if
isSuccess
:
return
response_result
(
ResponseCode
.
OK
,
msg
=
message
)
else
:
return
response_result
(
ResponseCode
.
REQUEST_ERROR
,
msg
=
message
)
except
Exception
as
e
:
traceback
.
print_exc
()
logger
.
error
(
str
(
e
))
return
response_result
(
ResponseCode
.
SERVER_ERROR
,
msg
=
str
(
e
))
@
annex_api
.
route
(
"/delete/<uuid:id>"
,
methods
=
[
'POST'
])
@
validate_schema
(
DeleteSchema
)
@
Auth
.
auth_required
def
delete
(
id
):
try
:
isSuccess
,
message
=
signalManager
.
actionDeleteAnnex
.
emit
(
id
)
if
isSuccess
:
return
response_result
(
ResponseCode
.
OK
,
msg
=
message
)
else
:
return
response_result
(
ResponseCode
.
REQUEST_ERROR
,
msg
=
message
)
except
Exception
as
e
:
traceback
.
print_exc
()
logger
.
error
(
str
(
e
))
return
response_result
(
ResponseCode
.
SERVER_ERROR
)
@
annex_api
.
route
(
"/get"
,
methods
=
[
"POST"
])
@
validate_schema
(
QuerySchema
)
@
Auth
.
auth_required
def
get
():
try
:
result
,
message
=
signalManager
.
actionGetAnnex
.
emit
(
request
.
schema_data
)
if
result
:
return
response_result
(
ResponseCode
.
OK
,
data
=
result
,
msg
=
message
)
else
:
return
response_result
(
ResponseCode
.
REQUEST_ERROR
,
msg
=
message
)
except
Exception
as
e
:
traceback
.
print_exc
()
logger
.
error
(
str
(
e
))
return
response_result
(
ResponseCode
.
SERVER_ERROR
,
msg
=
str
(
e
))
@
annex_api
.
route
(
"/list"
,
methods
=
[
'POST'
])
@
validate_schema
(
QuerySchema
)
@
Auth
.
auth_required
def
get_list
():
try
:
result
,
count
,
message
=
signalManager
.
actionGetAnnexList
.
emit
(
request
.
schema_data
)
if
result
:
return
response_result
(
ResponseCode
.
OK
,
data
=
result
,
msg
=
message
,
count
=
count
)
else
:
return
response_result
(
ResponseCode
.
REQUEST_ERROR
,
msg
=
message
)
except
Exception
as
e
:
traceback
.
print_exc
()
logger
.
error
(
str
(
e
))
return
response_result
(
ResponseCode
.
SERVER_ERROR
)
@
annex_api
.
route
(
"/update/<uuid:id>"
,
methods
=
[
'POST'
])
@
validate_schema
(
UpdateSchema
)
@
Auth
.
auth_required
def
update
(
id
):
try
:
isSuccess
,
message
=
signalManager
.
actionUpdateAnnex
.
emit
(
id
,
request
.
schema_data
)
if
isSuccess
:
return
response_result
(
ResponseCode
.
OK
,
msg
=
message
)
else
:
return
response_result
(
ResponseCode
.
REQUEST_ERROR
,
msg
=
message
)
except
Exception
as
e
:
traceback
.
print_exc
()
logger
.
error
(
str
(
e
))
return
response_result
(
ResponseCode
.
SERVER_ERROR
)
backend/view/api.py
View file @
b4570cc6
...
...
@@ -5,6 +5,7 @@ import json
import
logging
import
traceback
import
uuid
import
time
import
sqlite3
from
datetime
import
datetime
...
...
@@ -55,6 +56,77 @@ def hello_evm():
return
json
.
dumps
(
result
)
@
api
.
route
(
"/store"
,
methods
=
[
'GET'
,
'POST'
])
def
get_store
():
result
=
{}
with
open
(
"./apiData.json"
,
"r"
,
encoding
=
"utf-8"
)
as
f
:
result
=
json
.
loads
(
f
.
read
())
logger
.
info
(
request
.
args
)
# logger.info(request.query_string)
if
request
.
args
and
request
.
args
.
get
(
"category"
):
res
=
[]
for
item
in
result
.
get
(
"appList"
,
[]):
if
item
.
get
(
"category"
)
==
request
.
args
.
get
(
"category"
):
res
.
append
(
item
)
result
[
"appList"
]
=
res
result
=
{
'appList'
:
result
[
"appList"
],
'categoryList'
:
result
[
"categoryList"
]
}
return
response_result
(
ResponseCode
.
OK
,
data
=
result
)
@
api
.
route
(
"/store/app/<uuid>"
,
methods
=
[
'GET'
,
'POST'
])
def
get_store_app
(
uuid
):
logger
.
info
(
uuid
)
result
=
{}
with
open
(
"./apiData.json"
,
"r"
,
encoding
=
"utf-8"
)
as
f
:
result
=
json
.
loads
(
f
.
read
())
res
=
{}
for
item
in
result
.
get
(
"appList"
,
[]):
if
item
.
get
(
"uuid"
)
==
uuid
:
res
=
item
break
return
response_result
(
ResponseCode
.
OK
,
data
=
res
)
@
api
.
route
(
"/store/appInfo/<uuid>"
,
methods
=
[
'GET'
,
'POST'
])
def
get_app_info
(
uuid
):
result
=
{}
with
open
(
"./apiData.json"
,
"r"
,
encoding
=
"utf-8"
)
as
f
:
result
=
json
.
loads
(
f
.
read
())
res
=
None
for
item
in
result
.
get
(
"downloadList"
,
[]):
if
item
.
get
(
"apkId"
)
==
uuid
:
res
=
item
break
print
(
res
)
return
response_result
(
ResponseCode
.
OK
,
data
=
res
)
@
api
.
route
(
"/store/downloadEpk/<uuid>"
,
methods
=
[
'GET'
,
'POST'
])
def
download_epk
(
uuid
):
# 这里要做一些业务处理,根据应用ID和版本号,判断是否有新的应用更新
result
=
{}
with
open
(
"./apiData.json"
,
"r"
,
encoding
=
"utf-8"
)
as
f
:
result
=
json
.
loads
(
f
.
read
())
res
=
{}
for
item
in
result
.
get
(
"downloadList"
,
[]):
if
item
.
get
(
"apkId"
)
==
uuid
:
res
.
update
(
item
)
break
res
.
update
({
'status'
:
0
,
'time'
:
int
(
time
.
time
())
})
print
(
res
)
return
response_result
(
ResponseCode
.
OK
,
data
=
res
)
@
api
.
route
(
"/opqcp"
,
methods
=
[
'POST'
])
def
action_opqcp
():
params
=
request
.
json
...
...
backend/view/app_logs.py
View file @
b4570cc6
'''
Author: your name
Date: 2021-04-14 14:12:18
LastEditTime: 2021-07-01 14:45:00
LastEditors: your name
Description: In User Settings Edit
FilePath:
\
evm-store
\b
ackend
\v
iew
\a
pp_logs.py
'''
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import
os
import
json
import
datetime
import
logging
import
traceback
from
flask
import
Blueprint
,
request
...
...
@@ -10,7 +15,7 @@ from app import config, signalManager
from
fullstack.login
import
Auth
from
fullstack.validation
import
validate_schema
from
fullstack.response
import
ResponseCode
,
response_result
from
schema.app_logs
import
AddSchema
,
DeleteSchema
,
QuerySchema
,
UpdateSchema
,
ResponseSchema
from
schema.app_logs
import
AddSchema
,
DeleteSchema
,
QuerySchema
,
UpdateSchema
logger
=
logging
.
getLogger
(
__name__
)
...
...
backend/view/apps.py
View file @
b4570cc6
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import
os
import
json
import
logging
import
traceback
from
datetime
import
datetime
...
...
@@ -13,7 +12,7 @@ from app import config, signalManager
from
fullstack.login
import
Auth
from
fullstack.validation
import
validate_schema
from
fullstack.response
import
ResponseCode
,
response_result
from
schema.apps
import
AddSchema
,
DeleteSchema
,
QuerySchema
,
UpdateSchema
from
schema.apps
import
AddSchema
,
QuerySchema
,
UpdateSchema
from
schema.build_logs
import
AddSchema
as
LogAddScheme
,
QuerySchema
as
LogQuerySchema
logger
=
logging
.
getLogger
(
__name__
)
...
...
backend/view/device.py
View file @
b4570cc6
'''
Author: your name
Date: 2021-04-14 14:12:18
LastEditTime: 2021-07-01 14:44:36
LastEditors: your name
Description: In User Settings Edit
FilePath:
\
evm-store
\b
ackend
\v
iew
\
device.py
'''
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import
os
import
json
import
datetime
import
logging
import
traceback
from
flask
import
Blueprint
,
request
...
...
@@ -10,7 +15,7 @@ from app import config, signalManager
from
fullstack.login
import
Auth
from
fullstack.validation
import
validate_schema
from
fullstack.response
import
ResponseCode
,
response_result
from
schema.device
import
AddSchema
,
DeleteSchema
,
QuerySchema
,
UpdateSchema
from
schema.device
import
AddSchema
,
QuerySchema
,
UpdateSchema
logger
=
logging
.
getLogger
(
__name__
)
...
...
backend/view/download.py
View file @
b4570cc6
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import
os
import
json
import
datetime
import
logging
import
traceback
from
flask
import
Blueprint
,
request
...
...
@@ -54,15 +51,18 @@ def delete(id):
@
validate_schema
(
DownloadSchema
)
def
get
():
try
:
result
,
message
=
signalManager
.
actionGetDownload
.
emit
(
request
.
schema_data
)
print
(
message
)
data
=
request
.
schema_data
data
.
update
({
'real_ip'
:
request
.
headers
.
get
(
'X-Forwarded-For'
,
'127.0.0.1'
)
})
result
,
message
=
signalManager
.
actionGetDownload
.
emit
(
data
)
# 读取epk文件,按照格式返回相应结构体数据
ret
=
""
if
isinstance
(
result
,
str
)
and
os
.
path
.
exists
(
result
):
with
open
(
result
,
"rb"
)
as
f
:
ret
=
f
.
read
()
logger
.
info
(
data
)
if
result
:
ret
=
result
.
read_bytes
()
# with open(result.as_posix(), "rb") as f:
# ret = f.read()
# logger.info(type(ret))
return
ret
return
response_result
(
ResponseCode
.
SERVER_ERROR
,
msg
=
"file not found"
)
return
response_result
(
ResponseCode
.
SERVER_ERROR
,
msg
=
message
)
except
Exception
as
e
:
traceback
.
print_exc
()
logger
.
error
(
str
(
e
))
...
...
backend/view/files.py
View file @
b4570cc6
...
...
@@ -2,15 +2,12 @@
# -*- coding: utf_8 -*-
import
os
import
re
import
sys
import
traceback
import
tempfile
import
shutil
import
base64
import
logging
from
hashlib
import
md5
as
fmd5
from
flask
import
Blueprint
,
request
,
redirect
,
url_for
,
json
from
flask
import
Blueprint
,
request
,
json
from
app.setting
import
config
from
pony.orm
import
*
...
...
backend/view/login.py
View file @
b4570cc6
'''
Author: your name
Date: 2021-04-14 14:12:18
LastEditTime: 2021-07-01 14:45:53
LastEditors: your name
Description: In User Settings Edit
FilePath:
\
evm-store
\b
ackend
\v
iew
\
login.py
'''
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import
logging
import
traceback
from
flask
import
Blueprint
,
request
,
redirect
,
url_for
,
json
,
Response
from
flask
import
Blueprint
,
request
,
redirect
,
url_for
from
app
import
config
,
signalManager
from
fullstack.login
import
Auth
from
fullstack.validation
import
validate_schema
...
...
backend/view/monitor.py
View file @
b4570cc6
This diff is collapsed.
Click to expand it.
backend/view/netdisc.py
deleted
100644 → 0
View file @
4ff82ce3
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import
os
import
json
import
datetime
import
logging
import
traceback
from
flask
import
Blueprint
,
request
from
app
import
config
,
signalManager
from
fullstack.login
import
Auth
from
fullstack.validation
import
validate_schema
from
fullstack.response
import
ResponseCode
,
response_result
from
schema.netdisc
import
AddSchema
,
DeleteSchema
,
QuerySchema
,
UpdateSchema
from
utils
import
random_string
logger
=
logging
.
getLogger
(
__name__
)
netdisc_api
=
Blueprint
(
"netdisc_api"
,
__name__
,
url_prefix
=
"/api/v1/
%
s/netdisc"
%
config
[
'NAME'
])
FileStoragePath
=
os
.
path
.
normpath
(
os
.
path
.
join
(
config
.
get
(
"UPLOAD_PATH"
),
config
.
get
(
"NETDISC"
)))
if
not
os
.
path
.
exists
(
FileStoragePath
):
os
.
mkdir
(
FileStoragePath
)
@
netdisc_api
.
route
(
"/add"
,
methods
=
[
'POST'
])
@
validate_schema
(
AddSchema
)
@
Auth
.
auth_required
def
add
():
try
:
binfile
=
request
.
files
.
get
(
"binfile"
)
information
=
{
"name"
:
""
,
"size"
:
0
,
"is_dir"
:
False
,
"file_type"
:
request
.
schema_data
.
get
(
"file_type"
),
"parent_dir"
:
request
.
schema_data
.
get
(
"parent_dir"
),
"real_path"
:
""
,
}
if
not
binfile
and
not
request
.
schema_data
.
get
(
"file_type"
)
and
not
request
.
schema_data
.
get
(
"parent_dir"
)
and
not
request
.
schema_data
.
get
(
"name"
):
return
response_result
(
ResponseCode
.
NO_DATA
,
msg
=
"file can not be null"
)
if
os
.
path
.
normpath
(
information
[
'parent_dir'
])
.
replace
(
'
\\
'
,
'/'
)
==
"/"
:
result
=
{
"real_path"
:
FileStoragePath
}
else
:
t
=
os
.
path
.
normpath
(
information
[
'parent_dir'
])
.
replace
(
'
\\
'
,
'/'
)
b
=
os
.
path
.
basename
(
t
)
d
=
os
.
path
.
dirname
(
t
)
result
,
message
=
signalManager
.
actionGetNetDisc
.
emit
({
"name"
:
b
,
"parent_dir"
:
d
})
if
not
result
:
return
response_result
(
ResponseCode
.
NO_DATA_FOUND
,
msg
=
"parent directory does not exists."
)
if
not
binfile
:
information
[
'is_dir'
]
=
True
information
[
'file_type'
]
=
'dir'
information
[
'name'
]
=
request
.
schema_data
.
get
(
"name"
)
information
[
'real_path'
]
=
os
.
path
.
normpath
(
os
.
sep
.
join
([
result
.
get
(
"real_path"
),
information
[
'name'
]]))
information
[
'parent_dir'
]
=
os
.
path
.
normpath
(
information
[
'parent_dir'
])
.
replace
(
'
\\
'
,
'/'
)
# os.path.relpath()
if
os
.
path
.
exists
(
information
[
'real_path'
]):
return
response_result
(
ResponseCode
.
EXISTS_ERROR
,
msg
=
"File [
%
s] is existed! Please remove firstly"
%
information
[
'real_path'
])
print
(
result
.
get
(
"real_path"
),
information
[
'name'
])
os
.
chdir
(
result
.
get
(
"real_path"
))
# 切换目录
os
.
mkdir
(
information
[
'name'
])
# 创建目录
else
:
information
[
'name'
]
=
binfile
.
filename
saveFile
=
os
.
path
.
normpath
(
os
.
sep
.
join
([
result
.
get
(
"real_path"
),
information
[
'name'
]]))
if
os
.
path
.
exists
(
saveFile
):
return
response_result
(
ResponseCode
.
EXISTS_ERROR
,
msg
=
"File [
%
s] is existed! Please remove firstly"
%
saveFile
)
with
open
(
saveFile
,
'wb'
)
as
f
:
f
.
write
(
binfile
.
stream
.
read
())
information
[
'size'
]
=
os
.
path
.
getsize
(
saveFile
)
if
not
information
[
'file_type'
]:
information
[
'file_type'
]
=
os
.
path
.
splitext
(
information
[
'name'
])[
-
1
]
information
[
'real_path'
]
=
saveFile
information
[
'parent_dir'
]
=
os
.
path
.
normpath
(
information
[
'parent_dir'
])
.
replace
(
'
\\
'
,
'/'
)
isSuccess
,
message
=
signalManager
.
actionAddNetDisc
.
emit
(
information
)
if
isSuccess
:
return
response_result
(
ResponseCode
.
OK
,
msg
=
message
)
else
:
return
response_result
(
ResponseCode
.
REQUEST_ERROR
,
msg
=
message
)
except
Exception
as
e
:
traceback
.
print_exc
()
logger
.
error
(
str
(
e
))
return
response_result
(
ResponseCode
.
SERVER_ERROR
,
msg
=
str
(
e
))
@
netdisc_api
.
route
(
"/delete"
,
methods
=
[
'POST'
])
@
validate_schema
(
DeleteSchema
)
@
Auth
.
auth_required
def
delete
():
try
:
result
,
message
=
signalManager
.
actionDeleteNetDisc
.
emit
(
request
.
schema_data
)
if
result
:
for
f
in
result
:
if
f
[
0
]:
os
.
rmdir
(
f
[
1
])
else
:
os
.
remove
(
f
[
1
])
return
response_result
(
ResponseCode
.
OK
,
msg
=
message
)
else
:
return
response_result
(
ResponseCode
.
REQUEST_ERROR
,
msg
=
message
)
except
Exception
as
e
:
traceback
.
print_exc
()
logger
.
error
(
str
(
e
))
return
response_result
(
ResponseCode
.
SERVER_ERROR
)
@
netdisc_api
.
route
(
"/get"
,
methods
=
[
"POST"
])
@
validate_schema
(
QuerySchema
)
@
Auth
.
auth_required
def
get
():
try
:
result
,
message
=
signalManager
.
actionGetNetDisc
.
emit
(
request
.
schema_data
)
if
result
:
return
response_result
(
ResponseCode
.
OK
,
data
=
result
,
msg
=
message
)
else
:
return
response_result
(
ResponseCode
.
REQUEST_ERROR
,
msg
=
message
)
except
Exception
as
e
:
traceback
.
print_exc
()
logger
.
error
(
str
(
e
))
return
response_result
(
ResponseCode
.
SERVER_ERROR
,
msg
=
str
(
e
))
@
netdisc_api
.
route
(
"/list"
,
methods
=
[
'POST'
])
@
validate_schema
(
QuerySchema
)
@
Auth
.
auth_required
def
get_list
():
try
:
result
,
count
,
message
=
signalManager
.
actionGetNetDiscList
.
emit
(
request
.
schema_data
)
if
result
:
return
response_result
(
ResponseCode
.
OK
,
data
=
result
,
msg
=
message
,
count
=
count
)
else
:
return
response_result
(
ResponseCode
.
REQUEST_ERROR
,
msg
=
message
)
except
Exception
as
e
:
traceback
.
print_exc
()
logger
.
error
(
str
(
e
))
return
response_result
(
ResponseCode
.
SERVER_ERROR
)
@
netdisc_api
.
route
(
"/update/<uuid:id>"
,
methods
=
[
'POST'
])
@
validate_schema
(
UpdateSchema
)
@
Auth
.
auth_required
def
update
(
id
):
try
:
result
,
message
=
signalManager
.
actionUpdateNetDisc
.
emit
(
id
,
request
.
schema_data
)
if
result
:
print
(
result
)
os
.
rename
(
result
.
get
(
"src"
),
result
.
get
(
"dst"
))
return
response_result
(
ResponseCode
.
OK
,
msg
=
message
)
else
:
return
response_result
(
ResponseCode
.
REQUEST_ERROR
,
msg
=
message
)
except
Exception
as
e
:
traceback
.
print_exc
()
logger
.
error
(
str
(
e
))
return
response_result
(
ResponseCode
.
SERVER_ERROR
)
backend/view/user.py
View file @
b4570cc6
...
...
@@ -2,13 +2,12 @@
# -*- coding: utf_8 -*-
import
logging
import
traceback
from
flask
import
Blueprint
,
request
,
redirect
,
url_for
,
json
,
Response
from
flask
import
Blueprint
,
request
from
app
import
config
,
signalManager
from
utils
import
filter_dict
from
fullstack.login
import
Auth
from
fullstack.validation
import
validate_schema
from
fullstack.response
import
ResponseCode
,
response_result
from
schema.user
import
AddSchema
,
DeleteSchema
,
UpdateSchema
,
QuerySchema
,
ResponseSchema
from
schema.user
import
AddSchema
,
DeleteSchema
,
UpdateSchema
,
QuerySchema
logger
=
logging
.
getLogger
(
__name__
)
...
...
@@ -22,14 +21,13 @@ def add():
新增用户
'''
try
:
isSuccess
,
message
=
signalManager
.
actionAddUser
.
emit
(
request
.
schema_data
)
isSuccess
,
message
=
signalManager
.
actionAddUser
.
emit
(
request
.
current_user
.
get
(
"id"
),
request
.
schema_data
)
if
isSuccess
:
return
response_result
(
ResponseCode
.
OK
,
msg
=
message
)
else
:
return
response_result
(
ResponseCode
.
REQUEST_ERROR
,
msg
=
message
)
except
Exception
as
e
:
traceback
.
print_exc
()
logger
.
error
(
str
(
e
))
return
response_result
(
ResponseCode
.
SERVER_ERROR
,
msg
=
str
(
e
))
...
...
@@ -59,7 +57,7 @@ def get():
查找单个用户
'''
try
:
result
,
message
=
signalManager
.
actionGetUser
.
emit
()
result
,
message
=
signalManager
.
actionGetUser
.
emit
(
request
.
current_user
.
get
(
"id"
)
)
if
result
:
return
response_result
(
ResponseCode
.
OK
,
data
=
result
,
msg
=
message
)
else
:
...
...
backend/view/ws.py
View file @
b4570cc6
'''
Author: your name
Date: 2021-04-14 14:12:18
LastEditTime: 2021-0
6-29 19:39:04
LastEditors:
your name
LastEditTime: 2021-0
7-03 11:57:41
LastEditors:
Please set LastEditors
Description: In User Settings Edit
FilePath:
\
evm-store
\b
ackend
\v
iew
\
ws.py
'''
...
...
@@ -36,7 +36,7 @@ def pushmessage(func):
try
:
if
isinstance
(
msg
,
WebsocketResponse
)
or
isinstance
(
msg
,
dict
):
self
.
write_message
(
json
.
dumps
(
msg
),
binary
)
elif
isinstance
(
msg
,
str
)
or
isinstance
(
msg
,
unicode
):
elif
isinstance
(
msg
,
str
)
or
isinstance
(
msg
,
str
):
self
.
write_message
(
msg
,
binary
)
else
:
self
.
write_message
(
repr
(
msg
),
binary
)
...
...
frontend/public/index.html
View file @
b4570cc6
...
...
@@ -15,7 +15,6 @@
<strong>
We're sorry but
<
%=
htmlWebpackPlugin
.
options
.
title
%
>
doesn't work properly without JavaScript enabled. Please enable it to continue.
</strong>
</noscript>
<div
id=
"app"
></div>
<script
src=
"https://cdn.jsdelivr.net/npm/gsap@3.1.1/dist/gsap.min.js"
></script>
</body>
</html>
\ No newline at end of file
frontend/src/api/index.js
View file @
b4570cc6
...
...
@@ -323,37 +323,6 @@ export function getPaybackList(params) {
});
}
export
function
addAnnex
(
params
)
{
return
request
({
url
:
"
/api/v1/evm_store/annex/add
"
,
method
:
"
post
"
,
data
:
params
,
});
}
export
function
deleteAnnex
(
id
)
{
return
request
({
url
:
`/api/v1/evm_store/annex/delete/
${
id
}
`
,
method
:
"
post
"
,
});
}
export
function
getAnnexList
(
params
)
{
return
request
({
url
:
"
/api/v1/evm_store/annex/list
"
,
method
:
"
post
"
,
data
:
params
,
});
}
export
function
updateAnnex
(
id
,
params
)
{
return
request
({
url
:
`/api/v1/evm_store/annex/update/
${
id
}
`
,
method
:
"
post
"
,
data
:
params
,
});
}
export
function
deleteProjectUser
(
params
)
{
return
request
({
url
:
"
/api/v1/evm_store/system/deleteProjectUser
"
,
...
...
frontend/src/layout/index.vue
View file @
b4570cc6
...
...
@@ -433,7 +433,7 @@
<div
class=
"dropdown"
v-show=
"userShow"
style=
"right: 20px;"
>
<ul>
<li
@
click=
"redirectTo('/profile')"
>
<li
@
click=
"redirectTo('/profile
/index
')"
>
<i
aria-label=
"图标: user"
class=
"webicon"
>
<svg
viewBox=
"64 64 896 896"
data-icon=
"user"
width=
"1em"
height=
"1em"
fill=
"currentColor"
aria-hidden=
"true"
focusable=
"false"
><path
d=
"M858.5 763.6a374 374 0 0 0-80.6-119.5 375.63 375.63 0 0 0-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 0 0-80.6 119.5A371.7 371.7 0 0 0 136 901.8a8 8 0 0 0 8 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 0 0 8-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z"
></path></svg>
</i>
个人中心
...
...
@@ -507,6 +507,8 @@ export default {
if
(
path
==
"
/login
"
)
{
this
.
$store
.
dispatch
(
"
user/removeRole
"
)
this
.
$store
.
dispatch
(
"
user/removeToken
"
)
}
else
if
(
path
==
"
/profile/index
"
&&
this
.
$route
.
path
==
"
/profile/index
"
)
{
return
false
;
}
this
.
$router
.
push
(
path
)
},
...
...
frontend/src/main.js
View file @
b4570cc6
/*
* @Author: your name
* @Date: 2021-04-14 14:12:19
* @LastEditTime: 2021-07-
01 00:41:19
* @LastEditTime: 2021-07-
14 21:29:01
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: \evm-store\frontend\src\main.js
*/
import
Vue
from
"
vue
"
;
import
"
normalize.css/normalize.css
"
;
// A modern alternative to CSS resets
import
"
normalize.css/normalize.css
"
;
import
ElementUI
from
"
element-ui
"
;
import
"
element-ui/lib/theme-chalk/index.css
"
;
...
...
frontend/src/permission.js
View file @
b4570cc6
import
router
from
"
.
/router
"
;
import
store
from
"
@/store
"
;
// get token from cookie
import
NProgress
from
"
nprogress
"
;
// progress bar
import
"
nprogress/nprogress.css
"
;
// progress bar style
import
router
from
"
@
/router
"
;
import
store
from
"
@/store
"
;
import
NProgress
from
"
nprogress
"
;
import
"
nprogress/nprogress.css
"
;
import
{
getPageTitle
}
from
"
@/utils/index
"
;
const
whiteList
=
[
"
/login
"
,
"
/register
"
];
...
...
frontend/src/router/index.js
View file @
b4570cc6
...
...
@@ -238,7 +238,7 @@ export const constantRoutes = [
path
:
'
index
'
,
name
:
'
Monitor
'
,
component
:
()
=>
import
(
'
@/views/system/monitor
'
),
meta
:
{
title
:
'
monitor
'
,
icon
:
'
home
'
}
meta
:
{
title
:
'
资源监视
'
,
icon
:
'
home
'
}
}]
},
{
...
...
frontend/src/settings.js
View file @
b4570cc6
/*
* @Author: your name
* @Date: 2021-04-14 14:12:19
* @LastEditTime: 2021-07-
01 11:26:51
* @LastEditTime: 2021-07-
14 21:28:48
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: \evm-store\frontend\src\settings.js
...
...
@@ -71,6 +71,20 @@ export default {
icon
:
"
gongzuotai
"
,
path
:
"
monitor/index
"
,
},
// {
// vue: "system/chart.vue",
// title: "实时曲线",
// name: "AppChart",
// icon: "gongzuotai",
// path: "chart/index",
// },
// {
// vue: "system/history.vue",
// title: "历史曲线",
// name: "AppHistoryChart",
// icon: "gongzuotai",
// path: "history/index",
// },
{
vue
:
"
system/chart.vue
"
,
title
:
"
实时曲线
"
,
...
...
frontend/src/utils/eventBus.js
View file @
b4570cc6
/*
* @Author: your name
* @Date: 2021-04-14 14:12:19
* @LastEditTime: 2021-07-
01 01:11:46
* @LastEditTime: 2021-07-
14 21:27:18
* @LastEditors: Please set LastEditors
* @Description: In User Settings Edit
* @FilePath: \evm-store\frontend\src\utils\wsNotify.js
...
...
frontend/src/views/system/monitor.vue
View file @
b4570cc6
This diff is collapsed.
Click to expand it.
frontend/vue.config.js
View file @
b4570cc6
...
...
@@ -31,15 +31,14 @@ module.exports = {
// change xxx-api/login => mock/login
// detail: https://cli.vuejs.org/config/#devserver-proxy
"
/api/v1
"
:
{
target
:
"
http://127.0.0.1:
5001
/
"
,
target
:
"
http://127.0.0.1:
3000
/
"
,
changeOrigin
:
true
,
pathRewrite
:
{},
},
"
/api/v1/
kxpms
"
:
{
target
:
"
http://
192.168.1.106:5000
/
"
,
"
/api/v1/
evm_store
"
:
{
target
:
"
http://
store.evmiot.com
/
"
,
changeOrigin
:
true
,
pathRewrite
:
{
"
^/online
"
:
"
/
"
,
// 这里理解成用/api代替target里面的地址,后面组件中我们调用接口时直接用api代替
// 比如我要调用'http://40.00.100.100:3002/user/add',直接写'/api/user/add'即可
},
...
...
tools/build_out/controllers/__init__.py
View file @
b4570cc6
'''
Author: your name
Date: 2021-06-30 17:43:46
<<<<<<< HEAD
LastEditTime: 2021-07-09 13:10:51
=======
LastEditTime: 2021-07-14 19:05:56
>>>>>>> eddff974ce207e3e9de5b4a25fc8c30e1d2283ae
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath:
\
evm-store
\t
ools
\b
uild_out
\
controllers
\
__init__.py
...
...
tools/build_out/controllers/area.py
View file @
b4570cc6
<<<<<<<
HEAD
=======
'''
Author: your name
Date: 2021-06-30 18:03:41
LastEditTime: 2021-07-14 19:06:40
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath:
\
evm-store
\t
ools
\b
uild_out
\
controllers
\a
rea.py
'''
>>>>>>>
eddff974ce207e3e9de5b4a25fc8c30e1d2283ae
from
datetime
import
datetime
from
application.app
import
db
from
models.area
import
AreaModel
...
...
tools/build_out/controllers/package.py
View file @
b4570cc6
<<<<<<<
HEAD
=======
'''
Author: your name
Date: 2021-06-30 18:03:41
LastEditTime: 2021-07-14 19:08:22
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath:
\
evm-store
\t
ools
\b
uild_out
\
controllers
\
package.py
'''
#!/usr/bin/env python
# -*- coding: utf_8 -*-
import
os
import
re
import
shutil
>>>>>>>
eddff974ce207e3e9de5b4a25fc8c30e1d2283ae
from
datetime
import
datetime
from
application.app
import
db
from
models.package
import
PackageModel
...
...
tools/build_out/controllers/user.py
View file @
b4570cc6
<<<<<<<
HEAD
=======
'''
Author: your name
Date: 2021-06-30 18:03:41
LastEditTime: 2021-07-14 19:08:34
LastEditors: your name
Description: In User Settings Edit
FilePath:
\
evm-store
\t
ools
\b
uild_out
\
controllers
\
user.py
'''
#!/usr/bin/env python
# -*- coding: utf_8 -*-
>>>>>>>
eddff974ce207e3e9de5b4a25fc8c30e1d2283ae
from
datetime
import
datetime
from
application.app
import
db
from
models.user
import
UserModel
...
...
tools/build_out/logs/running.log
View file @
b4570cc6
This diff is collapsed.
Click to expand it.
tools/build_out/views/login.py
View file @
b4570cc6
<<<<<<<
HEAD
=======
'''
Author: your name
Date: 2021-06-30 18:03:41
LastEditTime: 2021-07-14 19:10:44
LastEditors: your name
Description: In User Settings Edit
FilePath:
\
evm-store
\t
ools
\b
uild_out
\v
iews
\
login.py
'''
#!/usr/bin/env python
# -*- coding: utf_8 -*-
>>>>>>>
eddff974ce207e3e9de5b4a25fc8c30e1d2283ae
from
flask
import
current_app
,
jsonify
,
request
from
flask_restful
import
Resource
from
flask_restful.reqparse
import
RequestParser
...
...
tools/build_out/views/package.py
View file @
b4570cc6
<<<<<<<
HEAD
=======
'''
Author: your name
Date: 2021-06-30 18:03:41
LastEditTime: 2021-07-14 19:11:10
LastEditors: your name
Description: In User Settings Edit
FilePath:
\
evm-store
\t
ools
\b
uild_out
\v
iews
\
package.py
'''
#!/usr/bin/env python
# -*- coding: utf_8 -*-
>>>>>>>
eddff974ce207e3e9de5b4a25fc8c30e1d2283ae
from
flask
import
current_app
,
jsonify
,
request
from
flask_restful
import
Resource
from
flask_restful.reqparse
import
RequestParser
...
...
tools/frontend/src/views/Application/Form.vue
View file @
b4570cc6
...
...
@@ -103,7 +103,6 @@ import PageHeaderWrapper from "@/components/PageHeaderWrapper";
import
DescriptionItem
from
"
@/components/DescriptionItem
"
;
export
default
{
name
:
'
BasicForm
'
,
i18n
:
require
(
'
./i18n
'
),
data
()
{
return
{
value
:
1
...
...
tools/gen_code.py
View file @
b4570cc6
...
...
@@ -131,6 +131,31 @@ def handleModules(config):
else
:
log
.
logger
.
error
(
"文件:
%
s 不存在"
)
def
handleModuleConfig
(
config
):
# 处理每一项配置文件
# 入口文件名
# 实例对象,根据这个实例连接对应请求
# 实例方法,需要根据实例方法生成事件函数
'''
'''
pass
def
handleModules
(
config
):
global
output_dir
# 遍历modules结构,判断文件是否存在,并且enable已经打开
# 如果文件不存在,则直接报错
# 本质上这是一个文件拷贝的操作
for
mod
in
config
:
p
=
Path
(
mod
.
get
(
"config"
))
if
not
p
.
exists
()
or
not
mod
.
get
(
"enable"
):
continue
shutil
.
copyfile
(
mod
.
get
(
"config"
),
os
.
sep
.
join
([
output_dir
,
"controllers"
,
p
.
name
]))
for
d
in
mod
.
get
(
"dependencies"
):
if
Path
(
d
)
.
exists
():
shutil
.
copyfile
(
d
,
os
.
sep
.
join
([
output_dir
,
"controllers"
,
Path
(
d
)
.
name
]))
else
:
log
.
logger
.
error
(
"文件:
%
s 不存在"
)
def
handleResources
(
config
):
# 处理路由页面
# 遍历config文件,收集所有的action和name,action和name的首字母必须大写
...
...
tools/modules/file.py
View file @
b4570cc6
...
...
@@ -2,8 +2,14 @@ import pprint
import
base64
from
pathlib
import
Path
import
json
import
mimetypes
from
webcreator.log
import
logger
from
application.config
import
config
from
webcreator.response
import
ResponseCode
disk_root
=
"D:
\\
projects
\\
scriptiot
\\
evm_app_store_files"
disk_root
=
config
.
UPLOAD_ROOT_DIR
logger
.
info
(
disk_root
)
class
FileManager
(
object
):
def
__init__
(
self
)
->
None
:
...
...
@@ -42,7 +48,7 @@ class FileManager(object):
child
.
name
:
{
"driver"
:
"local"
}
})
return
result
return
result
,
ResponseCode
.
HTTP_SUCCESS
'''
@description: 获取当前类别的目录信息
...
...
@@ -89,7 +95,7 @@ class FileManager(object):
disk_path
=
Path
(
disk_root
)
.
joinpath
(
disk
)
if
not
disk_path
.
exists
():
return
result
target_path
=
disk_path
.
joinpath
(
target_path
)
if
not
target_path
.
exists
():
return
result
...
...
@@ -122,7 +128,7 @@ class FileManager(object):
f
.
write
(
json
.
dumps
(
result
,
ensure_ascii
=
True
))
pprint
.
pprint
(
result
)
return
result
return
result
,
ResponseCode
.
HTTP_SUCCESS
'''
@description: 获取目录结构树
...
...
@@ -167,29 +173,86 @@ class FileManager(object):
"timestamp"
:
int
(
child
.
stat
()
.
st_mtime
),
"type"
:
"dir"
})
# print("//////////", child.is_dir(), child.resolve(), child.name, child.parent, child.root, child.relative_to(rp))
pprint
.
pprint
(
result
)
return
result
return
result
,
ResponseCode
.
HTTP_SUCCESS
def
disk
(
self
,
disk
):
# select-disks
print
(
disk
)
return
True
,
ResponseCode
.
HTTP_SUCCESS
def
upload
(
self
,
disk
):
# select-disks
print
(
disk
)
return
True
,
ResponseCode
.
HTTP_SUCCESS
def
create_dir
(
self
,
disk
,
target_file
):
# create directory
print
(
disk
,
target_file
)
return
True
,
ResponseCode
.
HTTP_SUCCESS
def
create_file
(
self
,
disk
,
target_file
,
content
):
# create file
print
(
disk
,
target_file
,
content
)
return
True
,
ResponseCode
.
HTTP_SUCCESS
def
delete
(
self
,
disk
):
# delete file
print
(
disk
)
return
True
return
True
,
ResponseCode
.
HTTP_SUCCESS
def
download
(
self
,
disk
):
def
copy
(
self
,
disk
):
# copy file
print
(
disk
)
return
True
return
True
,
ResponseCode
.
HTTP_SUCCESS
def
cut
(
self
,
disk
):
# cut file
print
(
disk
)
return
True
,
ResponseCode
.
HTTP_SUCCESS
def
paste
(
self
,
disk
):
# paste file
print
(
disk
)
return
True
,
ResponseCode
.
HTTP_SUCCESS
def
download
(
self
,
disk
,
target_file
):
# 获取文件内容
if
not
target_file
:
target_file
=
Path
(
'result.json'
)
else
:
target_file
=
Path
(
disk_root
)
.
joinpath
(
disk
)
.
joinpath
(
target_file
)
if
not
target_file
.
exists
():
return
False
,
ResponseCode
.
HTTP_NOT_FOUND
# with open(target_file.resolve().as_posix(), "r", encoding="utf-8") as f:
# data = f.read()
# logger.info(data)
mime
=
mimetypes
.
guess_type
(
target_file
.
resolve
()
.
as_posix
())[
0
]
content
=
target_file
.
read_text
(
encoding
=
"utf-8"
)
return
(
content
,
mime
),
ResponseCode
.
HTTP_SUCCESS
def
preview
(
self
,
disk
,
target_file
):
# 预览图片
img_stream
=
None
if
not
target_file
:
target_file
=
'./evue_photo.png'
with
open
(
target_file
,
'rb'
)
as
img_f
:
img_stream
=
img_f
.
read
()
img_stream
=
base64
.
b64encode
(
img_stream
)
.
decode
()
print
(
disk
,
target_file
)
return
img_stream
target_file
=
Path
(
'evue_photo.png'
)
else
:
target_file
=
Path
(
disk_root
)
.
joinpath
(
disk
)
.
joinpath
(
target_file
)
if
not
target_file
.
exists
():
return
False
,
ResponseCode
.
HTTP_NOT_FOUND
mime
=
mimetypes
.
guess_type
(
target_file
.
resolve
()
.
as_posix
())[
0
]
# mime = MimeTypes.guess_type(target_file.resolve().as_posix())
img_stream
=
target_file
.
read_bytes
()
# with open(target_file, 'rb') as img_f:
# img_stream = img_f.read()
# img_stream = base64.b64encode(img_stream).decode()
return
(
img_stream
,
mime
),
ResponseCode
.
HTTP_SUCCESS
fileManager
=
FileManager
()
...
...
@@ -204,7 +267,7 @@ if __name__ == "__main__":
result
=
fileManager
.
initialize
()
print
(
"----->"
,
result
)
result
=
fileManager
.
content
(
"uploads"
,
"evueapps/evm"
)
print
(
">>>>>>"
,
result
)
...
...
@@ -212,4 +275,4 @@ if __name__ == "__main__":
print
(
"=====>"
,
result
)
result
=
fileManager
.
preview
(
"uploads"
,
"evueapps/evm"
)
print
(
"$$$$$>"
,
result
)
\ No newline at end of file
print
(
"$$$$$>"
,
result
)
tools/resources/application/__init__.py
View file @
b4570cc6
'''
Author: your name
Date: 2021-06-15 17:40:06
LastEditTime: 2021-06-30 18:17:48
LastEditors: your name
Description: In User Settings Edit
FilePath:
\
evm-store
\t
ools
\r
esources
\a
pplication
\
__init__.py
'''
#!/usr/bin/env python
# -*- coding: utf_8 -*-
...
...
tools/resources/manager.py
View file @
b4570cc6
'''
Author: your name
Date: 2021-06-15 17:40:09
LastEditTime: 2021-06-30 18:09:51
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath:
\
evm-store
\t
ools
\r
esources
\
manager.py
'''
# -*- coding: utf-8 -*-
from
tornado.wsgi
import
WSGIContainer
from
tornado.httpserver
import
HTTPServer
...
...
tools/resources/models/__init__.py
View file @
b4570cc6
'''
Author: your name
Date: 2021-04-22 18:04:10
LastEditTime: 2021-06-30 17:22:15
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath:
\
evm-store
\t
ools
\r
esources
\
models
\
__init__.py
'''
# -*- coding: utf-8 -*-
from
sqlalchemy
import
create_engine
from
sqlalchemy
import
Column
,
Integer
,
String
...
...
tools/resources/webcreator/event.py
View file @
b4570cc6
'''
Author: your name
Date: 2021-06-15 17:40:14
LastEditTime: 2021-06-30 17:22:44
LastEditors: Please set LastEditors
Description: In User Settings Edit
FilePath:
\
evm-store
\t
ools
\r
esources
\
webcreator
\
event.py
'''
# -*- coding: utf_8 -*-
<<<<<<<
HEAD
############################
# 信号槽
############################
=======
>>>>>>>
68
ec88f3f356b5c61817a0f9df8d40a3e46b4fd0
class
PySignal
(
object
):
"""
Simple event class used to provide hooks for different types of events in Locust.
...
...
tools/resources/webcreator/log.py
View file @
b4570cc6
'''
Author: your name
Date: 2021-04-22 18:04:15
LastEditTime: 2021-07-09 00:52:08
LastEditors: your name
Description: In User Settings Edit
FilePath:
\
evm-store
\t
ools
\r
esources
\
webcreator
\
log.py
'''
# -*- coding: utf_8 -*-
import
os
...
...
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