Source code for zot.plugs.input

# 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)