# zot/plugs/input.py
#
#
""" commenting. """
__copyright__ = "Copyright 2015, B.H.J Thate"
## IMPORTS
from zot.utils import j, error, parse_email, short_date, ftime, fetch_url
from zot.object import Object
from zot.runtime import kernel
import email.message
import datetime
import mailbox
import logging
import socket
import email
import time
import os
## CMNDS
[docs]def input_comment(event):
objs = event.selected()
if not objs: return
obj = objs[0]
if "comment" not in obj: obj.comment = []
obj.comment.append(" ".join(event.args[2:]))
obj.sync()
event.ok()
kernel.register("input.comment", input_comment)
## log command
[docs]def input_log(event):
o = Object()
o.prefix = "log"
o.ctype = "log"
o.log = event.rest()
o.save()
event.ok()
kernel.register("input.log", input_log)
## status command
[docs]def input_status(event):
o = Object()
o.prefix = "status"
o.status = event.rest()
o.save()
event.ok()
kernel.register("input.status", input_status)
## mbox command
[docs]def input_mbox(event):
try: fn = os.path.abspath(os.path.expanduser(event.args[0]))
except: return
nr = 0
if not os.path.isfile(fn): event.reply("a mbox file is needed.") ; return
for m in mailbox.mbox(fn, create=False):
o = Object()
o.update(m.items())
try: sdate = os.sep.join(short_date(o.Date).split())
except AttributeError: sdate = None
o.text = ""
for load in m.walk():
if load.get_content_type() == 'text/plain': o.text += load.get_payload()
o.text = o.text.replace("\\n", "\n")
o.prefix = "email"
if sdate: o.save(sdate)
else: o.save()
nr += 1
if nr: event.ok(nr)
kernel.register("input.mbox", input_mbox)
## clone command
[docs]def input_clone(event):
rest = event.rest()
if not rest: return
try: result = fetch_url("GET", rest + "/all").read()
except socket.gaierror as ex: event.reply(str(ex)) ; return
obj_list = json.loads(str(result, "utf-8"))
for nr, url in obj_list.items():
res = fetch_url("GET", url).read()
obj = json.loads(str(res, "utf-8"))
o = Object()
o.update(obj)
o.save()
kernel.register("input.clone", input_clone)