arthexis 0.1.13__py3-none-any.whl → 0.1.14__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of arthexis might be problematic. Click here for more details.
- {arthexis-0.1.13.dist-info → arthexis-0.1.14.dist-info}/METADATA +222 -221
- arthexis-0.1.14.dist-info/RECORD +109 -0
- {arthexis-0.1.13.dist-info → arthexis-0.1.14.dist-info}/licenses/LICENSE +674 -674
- config/__init__.py +5 -5
- config/active_app.py +15 -15
- config/asgi.py +43 -43
- config/auth_app.py +7 -7
- config/celery.py +32 -32
- config/context_processors.py +67 -69
- config/horologia_app.py +7 -7
- config/loadenv.py +11 -11
- config/logging.py +59 -48
- config/middleware.py +25 -25
- config/offline.py +49 -49
- config/settings.py +691 -682
- config/settings_helpers.py +109 -109
- config/urls.py +171 -166
- config/wsgi.py +17 -17
- core/admin.py +3771 -2809
- core/admin_history.py +50 -50
- core/admindocs.py +151 -151
- core/apps.py +356 -272
- core/auto_upgrade.py +57 -57
- core/backends.py +265 -236
- core/changelog.py +342 -0
- core/entity.py +133 -133
- core/environment.py +61 -61
- core/fields.py +168 -168
- core/form_fields.py +75 -75
- core/github_helper.py +188 -25
- core/github_issues.py +178 -172
- core/github_repos.py +72 -0
- core/lcd_screen.py +78 -78
- core/liveupdate.py +25 -25
- core/log_paths.py +100 -100
- core/mailer.py +85 -85
- core/middleware.py +91 -91
- core/models.py +3609 -2795
- core/notifications.py +105 -105
- core/public_wifi.py +267 -227
- core/reference_utils.py +108 -108
- core/release.py +721 -368
- core/rfid_import_export.py +113 -0
- core/sigil_builder.py +149 -149
- core/sigil_context.py +20 -20
- core/sigil_resolver.py +315 -315
- core/system.py +752 -493
- core/tasks.py +408 -394
- core/temp_passwords.py +181 -181
- core/test_system_info.py +186 -139
- core/tests.py +2095 -1521
- core/tests_liveupdate.py +17 -17
- core/urls.py +11 -11
- core/user_data.py +641 -633
- core/views.py +2175 -1417
- core/widgets.py +213 -94
- core/workgroup_urls.py +17 -17
- core/workgroup_views.py +94 -94
- nodes/admin.py +1720 -1161
- nodes/apps.py +87 -85
- nodes/backends.py +160 -160
- nodes/dns.py +203 -203
- nodes/feature_checks.py +133 -133
- nodes/lcd.py +165 -165
- nodes/models.py +1737 -1597
- nodes/reports.py +411 -411
- nodes/rfid_sync.py +195 -0
- nodes/signals.py +18 -0
- nodes/tasks.py +46 -46
- nodes/tests.py +3810 -3116
- nodes/urls.py +15 -14
- nodes/utils.py +121 -105
- nodes/views.py +683 -619
- ocpp/admin.py +948 -948
- ocpp/apps.py +25 -25
- ocpp/consumers.py +1565 -1459
- ocpp/evcs.py +844 -844
- ocpp/evcs_discovery.py +158 -158
- ocpp/models.py +917 -917
- ocpp/reference_utils.py +42 -42
- ocpp/routing.py +11 -11
- ocpp/simulator.py +745 -745
- ocpp/status_display.py +26 -26
- ocpp/store.py +601 -541
- ocpp/tasks.py +31 -31
- ocpp/test_export_import.py +130 -130
- ocpp/test_rfid.py +913 -702
- ocpp/tests.py +4445 -4094
- ocpp/transactions_io.py +189 -189
- ocpp/urls.py +50 -50
- ocpp/views.py +1479 -1251
- pages/admin.py +708 -539
- pages/apps.py +10 -10
- pages/checks.py +40 -40
- pages/context_processors.py +127 -119
- pages/defaults.py +13 -13
- pages/forms.py +198 -198
- pages/middleware.py +205 -153
- pages/models.py +607 -426
- pages/tests.py +2612 -2200
- pages/urls.py +25 -25
- pages/utils.py +12 -12
- pages/views.py +1165 -1128
- arthexis-0.1.13.dist-info/RECORD +0 -105
- nodes/actions.py +0 -70
- {arthexis-0.1.13.dist-info → arthexis-0.1.14.dist-info}/WHEEL +0 -0
- {arthexis-0.1.13.dist-info → arthexis-0.1.14.dist-info}/top_level.txt +0 -0
arthexis-0.1.13.dist-info/RECORD
DELETED
|
@@ -1,105 +0,0 @@
|
|
|
1
|
-
arthexis-0.1.13.dist-info/licenses/LICENSE,sha256=IwGE9guuL-ryRPEKi6wFPI_zOhg7zDZbTYuHbSt_SAk,35823
|
|
2
|
-
config/__init__.py,sha256=8_b7rx_-Xcuzu3Z7mSR94q3PAhjyYqLFQi3IOEz6hcI,108
|
|
3
|
-
config/active_app.py,sha256=MET_G7oHL7GkoSo3VkkMzymM-PwsSZazMLZxpgjFLTo,388
|
|
4
|
-
config/asgi.py,sha256=P7q9K5M-GTdmQuVEkSDPm89yS93-x7WkwZ6pq1EfoZ4,1339
|
|
5
|
-
config/auth_app.py,sha256=2NkC_iYQxnpbv0gYxW4xp5DgQtdkVLpa-JzAF-638ZE,205
|
|
6
|
-
config/celery.py,sha256=6BnonLD51aG2tFtjNheYQDKmoEqzhmNLtjcOvgOrvlU,851
|
|
7
|
-
config/context_processors.py,sha256=bjLSqbz7Qw6knPosIc4KNFEl5HsJHOe23htoNsul40E,2404
|
|
8
|
-
config/horologia_app.py,sha256=u1hTYcEmIqh82Gt5YNPvR5ta2MnVatELvD9ByFrCH1A,194
|
|
9
|
-
config/loadenv.py,sha256=bhFbHTbRJSkSwrFk3UInKEKQ8ZY-poatOGi7rC57YAI,298
|
|
10
|
-
config/logging.py,sha256=334jADN4dM5GNHaCWlYPOKYa5BhfxbsuejH_QDALG6g,1793
|
|
11
|
-
config/middleware.py,sha256=EvraDumepnKwCDswHGXb1mK7vud_dEEoZ4eh0IQ7fhQ,744
|
|
12
|
-
config/offline.py,sha256=mhQjCUzdOwSzZ6oLgPDJR48xaPIDzOi34ARUEz43seE,1431
|
|
13
|
-
config/settings.py,sha256=sdxnJ_F0sp7qrG6vgObdgDem8mVirPBfMumzoTcMCVQ,21782
|
|
14
|
-
config/settings_helpers.py,sha256=D5w1GdfO8hjWoIlnDBPLpWgfd-NQQuKNttSrIeBSMek,3236
|
|
15
|
-
config/urls.py,sha256=MmbES50lTHyMZ6risgXAGfevncN7j4HC74jR4PX_5xY,5228
|
|
16
|
-
config/wsgi.py,sha256=Fu-ONO2SgYeU6rhmy909P-uLX-n8ALJQObdm9MHPS-k,450
|
|
17
|
-
core/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
18
|
-
core/admin.py,sha256=sR772Bf28isQvnHRv5vjVi0um4yTzggWMRcjrfA6rI8,103412
|
|
19
|
-
core/admin_history.py,sha256=NIDWkosJoHMaucBvUjq8VmmL-0e8ngJ4l4XA89d4jwQ,1833
|
|
20
|
-
core/admindocs.py,sha256=GufdugiNEG87xGSDYVq4CBMhGRubsQCzgz-FqDIqzpM,5367
|
|
21
|
-
core/apps.py,sha256=Kyv7vnYPBWDg21uYyUo1aOki0Rb5zC3_3LRJTgEHE3s,11236
|
|
22
|
-
core/auto_upgrade.py,sha256=UASqknQ8YOPAjMzdyP_f5smzbnw04DjGwqHf-tMmt4I,1772
|
|
23
|
-
core/backends.py,sha256=VsZZwskII6QLnxP6Ff593V7o9lqXXfN2_bIfZXrvjyI,8222
|
|
24
|
-
core/entity.py,sha256=dkPywTVk981fV8bOEoZw-1SMrdh8T0jVAUZnRxg3dDg,4505
|
|
25
|
-
core/environment.py,sha256=egNX3vP9xRJt0dqxNZFXi25ZMhe3IZH3Vjne1_k7hxo,1645
|
|
26
|
-
core/fields.py,sha256=4nJ_tngso8NHs6HBl8nn5PWvbcOiuAgkoM6hixrFm64,5580
|
|
27
|
-
core/form_fields.py,sha256=vRqHi8yjvDEUhpdwQth9Os4hKMxBcKX4UhcgL6zawW8,2571
|
|
28
|
-
core/github_helper.py,sha256=k9LmxL0Ec5MzFwZsbMpWMMJ-5tGMe-5yRoI8V0sbFsw,682
|
|
29
|
-
core/github_issues.py,sha256=LKqt-Ilx5TRYnx2LXttc54Nvuh3_1VRP0u_M3whe09c,4963
|
|
30
|
-
core/lcd_screen.py,sha256=mkKtIJjHGDLaV4t80L-JScsZXbLhlYUDknAcvV9Ijr0,2651
|
|
31
|
-
core/liveupdate.py,sha256=kTgbE2gnU3PPIV-88Bw2swSl1aGp6stSdBYqBFbLvx0,716
|
|
32
|
-
core/log_paths.py,sha256=6UXYk6QIUmRO3ecFaFH3dgJ_pf4C_wUN6b0JqUhLVBY,3045
|
|
33
|
-
core/mailer.py,sha256=OF3UgrTVs2St60tQG3ORV7_N6AWK6EtuB04KQXDop_Q,2829
|
|
34
|
-
core/middleware.py,sha256=a4XL0pld4YiG-vanHrzYbJNHv64s75lvmG9inoG1ln0,3479
|
|
35
|
-
core/models.py,sha256=sa06Axm1p7W7EcYqrX0mWemwxhYIhWWjkby-qV-sLbk,96345
|
|
36
|
-
core/notifications.py,sha256=YtNDGxNveZ6t3tlMXJ7wIaZZTWIZfOKy6vN9mXkeYnA,4021
|
|
37
|
-
core/public_wifi.py,sha256=A08IPJqcdgUKSWbktyqsV4ol8C0uxDxZy1s1ECuPdBE,6526
|
|
38
|
-
core/reference_utils.py,sha256=2AQxtUkEbArieu1FMz3rTTHKPCDTJhHp_7bhzQCkN3U,3735
|
|
39
|
-
core/release.py,sha256=jZtTNyw3zezUJ6gd9Y7oo4fkyvDasTrkFGGMAufbsH0,11888
|
|
40
|
-
core/sigil_builder.py,sha256=63KSTh7AohG0szr_amBov0zoZuTE8bWqmgsEfPsZHCg,4992
|
|
41
|
-
core/sigil_context.py,sha256=8xrGiB2L1dFfSTrVLsFPLKfkhRwCXXZ0-EXvZdPeTMU,459
|
|
42
|
-
core/sigil_resolver.py,sha256=PAGwF3ugsqN85tKyIvT0YCDCM2MU_Mct2mCJz8XY1s4,11413
|
|
43
|
-
core/system.py,sha256=iH3-Ymonn_wVAvTmg2fJBI81F0nDCcrSJsAwIlD4sR0,15212
|
|
44
|
-
core/tasks.py,sha256=9njUdJUZNtu23XfWhSxk5lX1kKuvckX0qamxlxTHFxA,12328
|
|
45
|
-
core/temp_passwords.py,sha256=Kp4C-y1Hh4GeV1vSOCw3ZyIjcRMts186lUgtEkd3rxY,5452
|
|
46
|
-
core/test_system_info.py,sha256=sHCuo-qyw0BKacbGXFhTWxkuPgywdMGiQ_6YK022n-E,4803
|
|
47
|
-
core/tests.py,sha256=75znkttcCZ9RCIND1c5JnNfJIU1YrJRtjEj678QcC80,62011
|
|
48
|
-
core/tests_liveupdate.py,sha256=D1o2gPopnK7wDCeDQlJ-tfitWh4umZQFRxSTCFY-puc,527
|
|
49
|
-
core/urls.py,sha256=x-LNCxCgrLINdBsJTUUcAuMS5EK5Sh1ybvsVuUnJfLw,436
|
|
50
|
-
core/user_data.py,sha256=kOzcWJcR-d05E7QYoNzKqQSm9bnKJvtG6zq0zRf-tDI,21371
|
|
51
|
-
core/views.py,sha256=LoyNaISnwWUBVpr4zE4FN5c_KjiO3c2rtx_onE2RgIg,50361
|
|
52
|
-
core/widgets.py,sha256=B1E7iM1LFATHCK92UqcHV_oUua3Eun5uWibmjc9f7_Q,2845
|
|
53
|
-
core/workgroup_urls.py,sha256=2bC8mOMkxIj04WsNis0Td6AmmJFr6z27Ol5epIvhO28,424
|
|
54
|
-
core/workgroup_views.py,sha256=pFJ4PIRN3WWpRyombpWDKKteYQYoI7lu7ddSEKojD7I,2983
|
|
55
|
-
nodes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
56
|
-
nodes/actions.py,sha256=HHnwByTBc3guOORvrKOuvUFID-_BpBq6OENE_PDgk9s,2335
|
|
57
|
-
nodes/admin.py,sha256=_I9BBMuciFuFd8oLzJZ7y9iB7zzeyjbO0AQ64SgfL2M,42272
|
|
58
|
-
nodes/apps.py,sha256=mKeub2f8tukiXbz8cA1xVJM6hnlgce_TGITiQEOqL9A,2716
|
|
59
|
-
nodes/backends.py,sha256=-g7PIbGtIn_3kGoi2w_mJ6zVjvUKTRRWhHABPnnf29g,6081
|
|
60
|
-
nodes/dns.py,sha256=X8PML9rPR7i6NwCSqqxnlO1qpHHRo8uA-XePDTQZYrY,7251
|
|
61
|
-
nodes/feature_checks.py,sha256=ZK9PufvF2pFWHUm4khg8lfHVNncA6zrMBxu-WZEw7-E,4129
|
|
62
|
-
nodes/lcd.py,sha256=7MqS3jV_De2ysSmTtXQfYTWaxdfbmm6YfNdb_7qIVZc,5923
|
|
63
|
-
nodes/models.py,sha256=s_GdZkWyWySQauVdSytLY9HeqraX80_5Vz-br5bO_GY,55899
|
|
64
|
-
nodes/reports.py,sha256=pQwwTa5E-JhUwQIbKKQvgD_Cw9556CH0ieRgRjBMnMQ,12470
|
|
65
|
-
nodes/tasks.py,sha256=jorbN4h0PqWMBRMFdkGgJtvG8GPFwGr5Hxlm5In3EeY,1568
|
|
66
|
-
nodes/tests.py,sha256=sxXeaaNCE6sn_CQYe7PDrhp0q0yhMRQyOy2blodnbH8,124914
|
|
67
|
-
nodes/urls.py,sha256=30rYTwQGOnilucXDf8nf95debxn6aytMQHFo8MRbd2A,620
|
|
68
|
-
nodes/utils.py,sha256=h3qVmCBBLyrh06FmDldprxfDQG7dgLw82Tf5PrU-5Qc,4120
|
|
69
|
-
nodes/views.py,sha256=trgJaCJ4QZ6I0eWXxzRqqN9WXMfugcPdTyKLiCHa2ZI,21466
|
|
70
|
-
ocpp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
71
|
-
ocpp/admin.py,sha256=xXAuC8c5fWCxgUiCnL5RWEEks7fmPLVTkWoqoiP4a-0,32397
|
|
72
|
-
ocpp/apps.py,sha256=mCZ5Z0ei7z7c62luIcIhbEuwL1N4czQFSToOkGvRmms,867
|
|
73
|
-
ocpp/consumers.py,sha256=NA5IG--kOER2bDkLsa3pygiEtXSuiBXCYU-9nXS5zrg,62584
|
|
74
|
-
ocpp/evcs.py,sha256=KrkujSKkhzDJ64_btXQ4Vu7TIZfH_0UHs7Eptny73wg,29727
|
|
75
|
-
ocpp/evcs_discovery.py,sha256=47pWgqX1_JOT5BGSrIdEyuoPTGWN4b6rNjJr8kWeQCg,4034
|
|
76
|
-
ocpp/models.py,sha256=fhOxKqulTRlvHQ36b5KT5CDnVS9YlTorrQahUQC4gh8,32318
|
|
77
|
-
ocpp/reference_utils.py,sha256=sTgbXfmz00f23LBBkpO-sBGoJf1qaEshHeSofLReYCc,1114
|
|
78
|
-
ocpp/routing.py,sha256=8hhP8vqAJm279_0MU6P183h61N98cL20BZap4ZrYRT8,449
|
|
79
|
-
ocpp/simulator.py,sha256=aQ4u5OLIuicCpV3SMCS6pFI-cU45heO0NqJkvbXyH7o,28761
|
|
80
|
-
ocpp/status_display.py,sha256=eR4qNeGhLVt6FO-sRY4kz9eGLtnCtbxDjeR0etZBHk8,965
|
|
81
|
-
ocpp/store.py,sha256=OjGWT3WkpoahGpUwn_ZpIOsxgOnryoXXSwPCvFsLkzM,17410
|
|
82
|
-
ocpp/tasks.py,sha256=cOcJBshckFKs8GnACvmYZUBG116amtLRAzEP-JNqlZ0,905
|
|
83
|
-
ocpp/test_export_import.py,sha256=TK1__E4K5WrLYPIx-1iJWoIhuRCnOtXc2cYEpGigd3U,4660
|
|
84
|
-
ocpp/test_rfid.py,sha256=hX8VZ2HRyBGjtQLClZ1gy28dOj25RT2r9eK3l9XkmJg,25877
|
|
85
|
-
ocpp/tests.py,sha256=5xH8zY2vD4QJyOsMc1LMDrXXhKVrzFTOVfjRNNxfyLM,163083
|
|
86
|
-
ocpp/transactions_io.py,sha256=emiPuIepqOE-IdRE2SA7REJAmF3Yur17m7gzdK4S_wE,7576
|
|
87
|
-
ocpp/urls.py,sha256=jl6AQLtmLMvrNXP3dQKgPe9Kvaul4oaYd80DskpzVBc,1750
|
|
88
|
-
ocpp/views.py,sha256=OI3NM1oauWIHL_3Czt_Srn322SnVH_wqdcoNwXpidpw,49268
|
|
89
|
-
pages/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
90
|
-
pages/admin.py,sha256=KLjrVI4zzENiZA4cDi5jJ79DNnpgfg3jIVRcP5X5umQ,16978
|
|
91
|
-
pages/apps.py,sha256=mfCxegmnRqKcszyEwpQhZpW9JWOuEYdVereU_w49BXg,298
|
|
92
|
-
pages/checks.py,sha256=an-MlMCIG-FSKmdgOhYV0VOoB_wDQD7dxKD03Hjrzts,1567
|
|
93
|
-
pages/context_processors.py,sha256=4lkk2mTzmsOKhDhQanWXuU2bbwow0h-1Zn5GWOrL2z4,4132
|
|
94
|
-
pages/defaults.py,sha256=cOhb5p_SneIsK6Qfn9SV1fyq7L3gDheWYo1xp7SplF8,535
|
|
95
|
-
pages/forms.py,sha256=63_243YfT8sAW3hrdyNgYhVxlXTAUZeshaLWUlreR1c,7256
|
|
96
|
-
pages/middleware.py,sha256=fUdAscLa6h2EqJTFUjhVijfSf82gBfm6XUZTVygWAnk,5227
|
|
97
|
-
pages/models.py,sha256=O4wtjD8jkZlguxEQFcvijSPM55KBjRBdhzvg0FHnxt4,14577
|
|
98
|
-
pages/tests.py,sha256=T4akrxZv2NPK3X9mguipW7DUn4F7OyKG6DDlRqpJEpI,88701
|
|
99
|
-
pages/urls.py,sha256=iwe4hvcr_ko-n4h24t6t2882eZp2qyLXeEYkrIahoGU,1067
|
|
100
|
-
pages/utils.py,sha256=7kik1W0Gk6SFxYGhg6shfI2W9Xdcv1sCpkRCQ883a88,311
|
|
101
|
-
pages/views.py,sha256=DSzsvHGOVavKU_gDIweHRWQeHiQoe0czkeigZ2a4ge0,43260
|
|
102
|
-
arthexis-0.1.13.dist-info/METADATA,sha256=PhW-6uJCu_HAvfQ7saLHifGvvCK2JRO3BSGDapjTat8,10184
|
|
103
|
-
arthexis-0.1.13.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
104
|
-
arthexis-0.1.13.dist-info/top_level.txt,sha256=J2a2q8_BWrCZ8H2WFUNMBfO2jz8j2gax6zZh-_1QDac,29
|
|
105
|
-
arthexis-0.1.13.dist-info/RECORD,,
|
nodes/actions.py
DELETED
|
@@ -1,70 +0,0 @@
|
|
|
1
|
-
from __future__ import annotations
|
|
2
|
-
|
|
3
|
-
from typing import Dict, Iterable, Optional, Type
|
|
4
|
-
|
|
5
|
-
from .models import Node
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
class NodeAction:
|
|
9
|
-
"""Base class for actions that operate on a :class:`~nodes.models.Node`."""
|
|
10
|
-
|
|
11
|
-
#: Human friendly name for this action
|
|
12
|
-
display_name: str = ""
|
|
13
|
-
#: Short slug used in URLs
|
|
14
|
-
slug: str = ""
|
|
15
|
-
#: Description of the action
|
|
16
|
-
description: str = ""
|
|
17
|
-
#: Whether this action supports running on remote nodes
|
|
18
|
-
supports_remote: bool = False
|
|
19
|
-
|
|
20
|
-
# registry of available actions
|
|
21
|
-
registry: Dict[str, Type["NodeAction"]] = {}
|
|
22
|
-
|
|
23
|
-
def __init_subclass__(cls, **kwargs):
|
|
24
|
-
super().__init_subclass__(**kwargs)
|
|
25
|
-
if cls.slug:
|
|
26
|
-
key = cls.slug
|
|
27
|
-
else:
|
|
28
|
-
key = cls.__name__.lower()
|
|
29
|
-
cls.slug = key
|
|
30
|
-
NodeAction.registry[key] = cls
|
|
31
|
-
|
|
32
|
-
@classmethod
|
|
33
|
-
def get_actions(cls) -> Iterable[Type["NodeAction"]]:
|
|
34
|
-
"""Return all registered node actions."""
|
|
35
|
-
return cls.registry.values()
|
|
36
|
-
|
|
37
|
-
@classmethod
|
|
38
|
-
def run(cls, node: Optional[Node] = None, **kwargs):
|
|
39
|
-
"""Execute this action on ``node``.
|
|
40
|
-
|
|
41
|
-
If ``node`` is ``None`` the local node is used. If the target node is
|
|
42
|
-
not the local host and ``supports_remote`` is ``False``, a
|
|
43
|
-
``NotImplementedError`` is raised.
|
|
44
|
-
"""
|
|
45
|
-
|
|
46
|
-
if node is None:
|
|
47
|
-
node = Node.get_local()
|
|
48
|
-
if node is None:
|
|
49
|
-
raise ValueError("No local node configured")
|
|
50
|
-
if not node.is_local and not cls.supports_remote:
|
|
51
|
-
raise NotImplementedError("Remote node actions are not yet implemented")
|
|
52
|
-
instance = cls()
|
|
53
|
-
return instance.execute(node, **kwargs)
|
|
54
|
-
|
|
55
|
-
def execute(self, node: Node, **kwargs): # pragma: no cover - interface
|
|
56
|
-
"""Perform the action on ``node``."""
|
|
57
|
-
raise NotImplementedError
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
class CaptureScreenshotAction(NodeAction):
|
|
61
|
-
display_name = "Take Site Screenshot"
|
|
62
|
-
slug = "capture-screenshot"
|
|
63
|
-
|
|
64
|
-
def execute(self, node: Node, **kwargs): # pragma: no cover - uses selenium
|
|
65
|
-
from .utils import capture_screenshot, save_screenshot
|
|
66
|
-
|
|
67
|
-
url = f"http://{node.address}:{node.port}"
|
|
68
|
-
path = capture_screenshot(url)
|
|
69
|
-
save_screenshot(path, node=node, method="NODE_ACTION")
|
|
70
|
-
return path
|
|
File without changes
|
|
File without changes
|