clean up and org
This commit is contained in:
86
dmapp/dmcore/main.py
Normal file
86
dmapp/dmcore/main.py
Normal file
@@ -0,0 +1,86 @@
|
||||
import datetime
|
||||
import os
|
||||
import subprocess
|
||||
import time
|
||||
from pprint import pprint
|
||||
|
||||
import task
|
||||
from pymongo import MongoClient
|
||||
from zoneinfo import ZoneInfo
|
||||
|
||||
client = MongoClient()
|
||||
|
||||
|
||||
def now():
|
||||
return datetime.datetime.now(ZoneInfo("America/Argentina/Buenos_Aires"))
|
||||
|
||||
|
||||
db = client.deskmeter
|
||||
switches = db.switch
|
||||
dailies = db.daily
|
||||
|
||||
|
||||
desktops = ("Plan", "Think", "Work", "Other", "Away", "Work", "Work")
|
||||
|
||||
|
||||
unlabeled = "Away"
|
||||
|
||||
|
||||
def active_workspace():
|
||||
workspaces = (
|
||||
subprocess.check_output(["wmctrl", "-d"])
|
||||
.decode("utf-8")
|
||||
.strip("\n")
|
||||
.split("\n")
|
||||
)
|
||||
|
||||
for workspace in workspaces:
|
||||
if workspace[3] == "*":
|
||||
return int(workspace[0])
|
||||
|
||||
|
||||
def desktop(workspace_index):
|
||||
try:
|
||||
return desktops[workspace_index]
|
||||
except IndexError:
|
||||
return unlabeled
|
||||
|
||||
|
||||
current_workspace = active_workspace()
|
||||
current_task = task.current()
|
||||
last_switch_time = now()
|
||||
|
||||
switch = {
|
||||
"workspace": desktop(current_workspace),
|
||||
"date": now(),
|
||||
"delta": 0,
|
||||
"task": current_task,
|
||||
}
|
||||
|
||||
switches.insert_one(switch)
|
||||
|
||||
while True:
|
||||
current_task = task.current()
|
||||
current_workspace = active_workspace()
|
||||
|
||||
last_doc = switches.find_one(sort=[("_id", -1)])
|
||||
if (
|
||||
last_doc["workspace"] == desktop(current_workspace)
|
||||
and last_doc["task"] == current_task
|
||||
):
|
||||
delta = round((now() - last_switch_time).total_seconds())
|
||||
switches.update_one(
|
||||
{"_id": last_doc["_id"]}, {"$set": {"delta": delta, "task": current_task}}
|
||||
)
|
||||
else:
|
||||
current_workspace = active_workspace()
|
||||
switch = {
|
||||
"workspace": desktop(current_workspace),
|
||||
"date": now(),
|
||||
"delta": 0,
|
||||
"task": current_task,
|
||||
}
|
||||
switches.insert_one(switch)
|
||||
last_switch_time = now()
|
||||
|
||||
time.sleep(2)
|
||||
Reference in New Issue
Block a user