54 lines
1.2 KiB
Python
54 lines
1.2 KiB
Python
from labthings.server.view import View, ActionView
|
|
import subprocess
|
|
import os
|
|
from sys import platform
|
|
|
|
from labthings.server.decorators import ThingAction, doc_response
|
|
|
|
|
|
def is_raspberrypi(raise_on_errors=False):
|
|
"""
|
|
Checks if Raspberry Pi.
|
|
"""
|
|
# I mean, if it works, it works...
|
|
return os.path.exists("/usr/bin/raspi-config")
|
|
|
|
|
|
class ShutdownAPI(ActionView):
|
|
"""
|
|
Attempt to shutdown the device
|
|
"""
|
|
|
|
@doc_response(201)
|
|
def post(self):
|
|
"""
|
|
Attempt to shutdown the device
|
|
"""
|
|
p = subprocess.Popen(
|
|
["sudo", "shutdown", "-h", "now"],
|
|
stderr=subprocess.PIPE,
|
|
stdout=subprocess.PIPE,
|
|
)
|
|
|
|
out, err = p.communicate()
|
|
return {"out": out, "err": err}, 201
|
|
|
|
|
|
class RebootAPI(ActionView):
|
|
"""
|
|
Attempt to reboot the device
|
|
"""
|
|
|
|
@doc_response(201)
|
|
def post(self):
|
|
"""
|
|
Attempt to reboot the device
|
|
"""
|
|
p = subprocess.Popen(
|
|
["sudo", "shutdown", "-r", "now"],
|
|
stderr=subprocess.PIPE,
|
|
stdout=subprocess.PIPE,
|
|
)
|
|
|
|
out, err = p.communicate()
|
|
return {"out": out, "err": err}, 201
|