Files
eco/utilities/elog.py
T
2017-11-24 22:50:17 +01:00

87 lines
2.5 KiB
Python
Executable File

import elog as _elog_ha
from getpass import getuser as _getuser
from getpass import getpass as _getpass
import os, datetime, subprocess
def getDefaultElogInstance(url,**kwargs):
from pathlib import Path
home = str(Path.home())
if not ('user' in kwargs.keys()):
kwargs.update(dict(user=_getuser()))
if not ('password' in kwargs.keys()):
try:
with open(os.path.join(home,'.elog_psi'),'r') as f:
_pw = f.read().strip()
except:
print('Enter elog password for user: %s'%kwargs['user'])
_pw = _getpass()
kwargs.update(dict(password=_pw))
return _elog_ha.open(url,**kwargs),kwargs['user']
class Elog:
def __init__(self,url,screenshot_directory='',**kwargs):
self._log,self.user = getDefaultElogInstance(url,**kwargs)
self._screenshot = Screenshot(screenshot_directory)
self.read = self._log.read
def post(self,*args,**kwargs):
"""
"""
if not ('Author' in kwargs):
kwargs['Author'] = self.user
return self._log.post(*args,**kwargs)
def screenshot(self,message='', window=False, desktop=False, delay=3, **kwargs):
filepath = self._screenshot.shoot()[0]
kwargs.update({'attachments':[filepath]})
self.post(message,**kwargs)
class Screenshot:
def __init__(self,screenshot_directory='',**kwargs):
self._screenshot_directory = screenshot_directory
if not ('user' in kwargs.keys()):
self.user=_getuser()
else:
self.user = kwargs['user']
def show_directory(self):
p = subprocess.Popen(['nautilus',self._screenshot_directory],
stdout=subprocess.PIPE, stderr=subprocess.PIPE)
def shoot(self,message='', window=False, desktop=False, delay=3, **kwargs):
cmd = ['gnome-screenshot']
if window:
cmd.append('-w')
cmd.append('--delay=%d'%delay)
elif desktop:
cmd.append('--delay=%d'%delay)
else:
cmd.append('-a')
tim = datetime.datetime.now()
fina = '%s-%s-%s_%s-%s-%s'%tim.timetuple()[:6]
if 'Author' in kwargs.keys():
fina+='_%s'%user
else:
fina+='_%s'%self.user
fina+='.png'
filepath = os.path.join(self._screenshot_directory,fina)
cmd.append('--file')
cmd.append(filepath)
p = subprocess.call(cmd,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
return filepath,p