Source code for MambuPy.rest.mambutask

# coding: utf-8
"""Mambu Task objects.

.. autosummary::
   :nosignatures:
   :toctree: _autosummary

MambuTask holds a task. Look at MambuTask pydoc for further info.

Uses mambugeturl.gettasksurl as default urlfunc
"""
from ..mambugeturl import gettasksurl
from .mambustruct import MambuStruct
from .mamburestutils import MambuStructIterator

mod_urlfunc = gettasksurl


[docs]class MambuTask(MambuStruct): """A Task from Mambu. Don't instantiate this class directly. It's mostly used by MambuTasks to configure each of its elements as MambuTask objects. There's no suitable urlfunc to use to retrieve just a specific transaction from a loan account. In fact, you can look at the code of MambuTasks.convert_dict_to_attrs(), it uses urlfunc and entid = None , so no connection to Mambu will be made, never, for any particular MambuTask object. """
[docs] def __init__(self, urlfunc=mod_urlfunc, entid="", *args, **kwargs): """Tasks done here: Just initializes the MambuStruct. """ MambuStruct.__init__(self, urlfunc, entid, *args, **kwargs)
[docs] def __repr__(self): """Instead of the default id given by the parent class, shows the id, title, dueDate, status of the task. """ try: return self.__class__.__name__ + " - taskid: '%s', %s, %s" % ( self["task"]["id"], self["task"]["dueDate"], self["task"]["status"], ) except KeyError: try: return self.__class__.__name__ + " - taskid: '%s'" % self["task"]["id"] except KeyError: try: return self.__class__.__name__ + " - taskid: '%s', %s, %s" % ( self["id"], self["dueDate"], self["status"], ) except KeyError: return self.__class__.__name__ + " - taskid: '%s'" % self["id"]
[docs] def preprocess(self): """Preprocessing. Flattens the object. When .creat[ed]() the data comes on the 'task' dictionary inside of the response. Instead, every element of the 'task' dictionary is taken out to the main attrs dictionary, since GET response comes in that format. """ super(MambuTask, self).preprocess() try: for k, v in self["task"].items(): self[k] = v del self.attrs["task"] except Exception: pass
[docs] def create(self, data, *args, **kwargs): """Create a task in Mambu Parameters -data dictionary with data to send """ return super(MambuTask, self).create(data)
[docs] def close(self, *args, **kwargs): """""" from datetime import datetime data = { "task": { "status": "COMPLETED", "completionDate": datetime.now().strftime("%Y-%m-%d"), "encodedKey": self["encodedKey"], "dueDate": self["dueDate"].strftime("%Y-%m-%d"), "title": self["title"], "description": self["description"], "assignedUserKey": self["assignedUserKey"], } } try: data["task"]["taskLinkType"] = self["taskLinkType"] except KeyError: pass try: data["task"]["taskLinkKey"] = self["taskLinkKey"] except KeyError: pass self._MambuStruct__method = "POST" self._MambuStruct__urlfunc = gettasksurl self._MambuStruct__data = data self.connect(*args, **kwargs) data["task"]["id"] = self["id"] data["task"]["completionDate"] = datetime.strptime( data["task"]["completionDate"], "%Y-%m-%d" ) data["task"]["dueDate"] = datetime.strptime(data["task"]["dueDate"], "%Y-%m-%d") self.attrs = data["task"] self.convert_dict_to_attrs() self._MambuStruct__method = "GET" self._MambuStruct__urlfunc = None self._MambuStruct__data = None
[docs]class MambuTasks(MambuStruct): """A list of Tasks from Mambu."""
[docs] def __init__(self, urlfunc=mod_urlfunc, entid="", *args, **kwargs): MambuStruct.__init__(self, urlfunc, entid, *args, **kwargs)
[docs] def __iter__(self): return MambuStructIterator(self.attrs)
[docs] def convert_dict_to_attrs(self, *args, **kwargs): """The trick for iterable Mambu Objects comes here: You iterate over each element of the responded List from Mambu, and create a Mambu Task object for each one, initializing them one at a time, and changing the attrs attribute (which just holds a list of plain dictionaries) with a MambuTask just created. """ for n, a in enumerate(self.attrs): # ok ok, I'm modifying elements of a list while iterating it. BAD PRACTICE! try: params = self.params except AttributeError: params = {} kwargs.update(params) try: self.mambutaskclass except AttributeError: self.mambutaskclass = MambuTask task = self.mambutaskclass(urlfunc=None, entid=None, *args, **kwargs) task.init(a, *args, **kwargs) task._MambuStruct__urlfunc = gettasksurl self.attrs[n] = task