Web based Jalousie control.

web.py 1.7KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. '''
  2. Created on 27.06.2014
  3. @author: volkma_s
  4. '''
  5. import subprocess
  6. import os
  7. GET_IP_CMD = "hostname -I"
  8. def get_my_ip():
  9. ipAddr=None
  10. try:
  11. import socket
  12. ipAddr = [ip for ip in socket.gethostbyname_ex(socket.gethostname())[2] if not ip.startswith("127.")][:1][0]
  13. except:
  14. pass
  15. if ipAddr==None:
  16. """Returns this computers IP address as a string."""
  17. ip = subprocess.check_output(GET_IP_CMD, shell=True).decode('utf-8')[:-1]
  18. ipAddr = ip.strip()
  19. return ipAddr
  20. ERROR_FILE_NOT_FOUND = 'File not Found'
  21. def handle_file_request(filename, etype=None):
  22. if filename.startswith('/'):
  23. filename = filename[1:]
  24. filename = os.path.dirname(__file__)+'/../www/'+filename
  25. try:
  26. file_h = open(filename)
  27. data = file_h.read()
  28. if etype is None:
  29. ret = data
  30. else:
  31. ret = data.encode(etype) #"utf-8")
  32. except:
  33. out = ERROR_FILE_NOT_FOUND + " : " + filename
  34. print(out )
  35. if etype is None:
  36. ret = out
  37. else:
  38. ret = out.encode(etype) #"utf-8")
  39. return ret
  40. import unittest
  41. class webutils_UnitTest(unittest.TestCase):
  42. def setUp(self):
  43. pass
  44. def test_handle_file_request(self):
  45. ret = handle_file_request('/index.html')
  46. self.assertTrue(len(ret)>0)
  47. ret = handle_file_request('index.html')
  48. self.assertTrue(len(ret)>0)
  49. ret = handle_file_request('index1.html')
  50. self.assertTrue( ret.find( ERROR_FILE_NOT_FOUND) == 0)
  51. pass