Skip to content
Snippets Groups Projects
Commit fcdd875b authored by Robbie's avatar Robbie
Browse files

Merge branch 'remove_list_classes' into 'master'

Remove list classes



See merge request !1
parents 603bcb51 407cc815
No related branches found
No related tags found
No related merge requests found
......@@ -33,17 +33,6 @@ PyOTRS Lib (all)
:noindex:
:mod:`pyotrs.lib.AttachmentList`
--------------------------------
.. autoclass:: pyotrs.lib.AttachmentList
:members:
:private-members:
:undoc-members:
:show-inheritance:
:noindex:
:mod:`pyotrs.lib.Client`
------------------------
......@@ -66,17 +55,6 @@ PyOTRS Lib (all)
:noindex:
:mod:`pyotrs.lib.DynamicFieldList`
----------------------------------
.. autoclass:: pyotrs.lib.DynamicFieldList
:members:
:private-members:
:undoc-members:
:show-inheritance:
:noindex:
:mod:`pyotrs.lib.Ticket`
------------------------
......
......@@ -30,16 +30,6 @@ PyOTRS Lib (public)
:noindex:
:mod:`pyotrs.lib.AttachmentList`
--------------------------------
.. autoclass:: pyotrs.lib.AttachmentList
:members:
:undoc-members:
:show-inheritance:
:noindex:
:mod:`pyotrs.lib.Client`
------------------------
......@@ -60,15 +50,6 @@ PyOTRS Lib (public)
:noindex:
:mod:`pyotrs.lib.DynamicFieldList`
----------------------------------
.. autoclass:: pyotrs.lib.DynamicFieldList
:members:
:undoc-members:
:show-inheritance:
:noindex:
:mod:`pyotrs.lib.Ticket`
------------------------
......
......@@ -11,9 +11,9 @@
"""
from .lib import Article # noqa
from .lib import Attachment, AttachmentList # noqa
from .lib import Attachment # noqa
from .lib import Client # noqa
from .lib import DynamicField, DynamicFieldList # noqa
from .lib import DynamicField # noqa
from .lib import Ticket # noqa
# Set default logging handler to avoid "No handler found" warnings.
......
......@@ -188,56 +188,56 @@ class Attachment(object):
"""
return Attachment("YmFyCg==", "text/plain", "dümmy.txt")
class AttachmentList(object):
"""PyOTRS Attachment class """
def __init__(self, attachments=None):
attachment_list = []
if isinstance(attachments, Attachment):
attachment_list.append(attachments)
elif isinstance(attachments, list):
for item in attachments:
attachment_list.append(item)
self.attachment_list = attachment_list
def __iter__(self):
for item in self.attachment_list:
yield item
def __repr__(self):
return "<{0}: {1} item(s)>".format(self.__class__.__name__, len(self.attachment_list))
def add(self, attachment):
"""add Attachment to AttachmentList
Args:
attachment:
Returns:
"""
self.attachment_list.append(attachment)
def to_dct(self):
"""represent AttachmentList and related Attachment objects as dict
Returns:
"""
_lst = []
for attachments in self:
_lst.append(attachments.__dict__)
return {"Attachment": _lst}
@classmethod
def dummy(cls):
"""dummy data (for testing)
Returns:
"""
return AttachmentList(Attachment.dummy())
#
# class AttachmentList(object):
# """PyOTRS Attachment class """
# def __init__(self, attachments=None):
# attachment_list = []
# if isinstance(attachments, Attachment):
# attachment_list.append(attachments)
# elif isinstance(attachments, list):
# for item in attachments:
# attachment_list.append(item)
#
# self.attachment_list = attachment_list
#
# def __iter__(self):
# for item in self.attachment_list:
# yield item
#
# def __repr__(self):
# return "<{0}: {1} item(s)>".format(self.__class__.__name__, len(self.attachment_list))
#
# def add(self, attachment):
# """add Attachment to AttachmentList
#
# Args:
# attachment:
#
# Returns:
#
# """
# self.attachment_list.append(attachment)
#
# def to_dct(self):
# """represent AttachmentList and related Attachment objects as dict
#
# Returns:
#
# """
# _lst = []
# for attachments in self:
# _lst.append(attachments.__dict__)
# return {"Attachment": _lst}
#
# @classmethod
# def dummy(cls):
# """dummy data (for testing)
#
# Returns:
#
# """
# return AttachmentList(Attachment.dummy())
class DynamicField(object):
......@@ -285,56 +285,56 @@ class DynamicField(object):
"""
return DynamicField(dct={'Name': 'lastname', 'Value': 'Doe'})
class DynamicFieldList(object):
"""PyOTRS DynamicFieldList class """
def __init__(self, dynamic_field_dicts=None):
dynamic_field_list = []
if isinstance(dynamic_field_dicts, DynamicField):
dynamic_field_list.append(dynamic_field_dicts)
elif isinstance(dynamic_field_dicts, list):
for item in dynamic_field_dicts:
dynamic_field_list.append(item)
self.dynamic_field_list = dynamic_field_list
def __iter__(self):
for item in self.dynamic_field_list:
yield item
def __repr__(self):
return "<{0}: {1} item(s)>".format(self.__class__.__name__, len(self.dynamic_field_list))
def add(self, dynamic_field):
"""add DynamicField object to DynamicFieldList
Args:
dynamic_field (DynamicField):
Returns:
"""
self.dynamic_field_list.append(dynamic_field)
def to_dct(self):
"""represent DynamicFieldList and related DynamicField objects as dict
Returns:
"""
_lst = []
for dynamic_field in self:
_lst.append(dynamic_field.to_dct())
return {"DynamicField": _lst}
@classmethod
def dummy(cls):
"""dummy data (for testing)
Returns:
"""
return DynamicFieldList([DynamicField(name="firstname", value="Jane"),
DynamicField(dct={'Name': 'lastname', 'Value': 'Doe'})])
#
# class DynamicFieldList(object):
# """PyOTRS DynamicFieldList class """
# def __init__(self, dynamic_field_dicts=None):
# dynamic_field_list = []
# if isinstance(dynamic_field_dicts, DynamicField):
# dynamic_field_list.append(dynamic_field_dicts)
# elif isinstance(dynamic_field_dicts, list):
# for item in dynamic_field_dicts:
# dynamic_field_list.append(item)
#
# self.dynamic_field_list = dynamic_field_list
#
# def __iter__(self):
# for item in self.dynamic_field_list:
# yield item
#
# def __repr__(self):
# return "<{0}: {1} item(s)>".format(self.__class__.__name__, len(self.dynamic_field_list))
#
# def add(self, dynamic_field):
# """add DynamicField object to DynamicFieldList
#
# Args:
# dynamic_field (DynamicField):
#
# Returns:
#
# """
# self.dynamic_field_list.append(dynamic_field)
#
# def to_dct(self):
# """represent DynamicFieldList and related DynamicField objects as dict
#
# Returns:
# """
# _lst = []
# for dynamic_field in self:
# _lst.append(dynamic_field.to_dct())
# return {"DynamicField": _lst}
#
# @classmethod
# def dummy(cls):
# """dummy data (for testing)
#
# Returns:
#
# """
# return DynamicFieldList([DynamicField(name="firstname", value="Jane"),
# DynamicField(dct={'Name': 'lastname', 'Value': 'Doe'})])
class Ticket(object):
......@@ -342,6 +342,9 @@ class Ticket(object):
def __init__(self, dct):
self.attachment_list = []
self.dynamic_field_list = []
for key, value in dct.items():
if isinstance(value, dict):
dct[key] = Ticket(value)
......@@ -506,6 +509,10 @@ class Client(object):
self.response_type = None
self.ticket_search_result = None
self.ticket_list = []
self.attachment_list = []
self.dynamic_field_list = []
# credentials
self.username = username
self.password = password
......@@ -700,8 +707,8 @@ class Client(object):
Args:
ticket (Ticket):
article (Article): optional article
attachment_list (AttachmentList):
dynamic_field_list (DynamicFieldList):
attachment_list (list): *Attachment* objects
dynamic_field_list (list): *DynamicField* object
**kwargs: any regular OTRS Fields (not for Dynamic Fields!)
.. todo::
......@@ -725,10 +732,10 @@ class Client(object):
payload.update(article.to_dct())
if attachment_list:
payload.update(attachment_list.to_dct())
payload.update({"Attachment": attachment_list})
if dynamic_field_list:
payload.update(dynamic_field_list.to_dct())
payload.update({"DynamicField": dynamic_field_list})
# TODO 2016-04-18(RH): decide what to return here.. bool or result content? Or full new?
if self._ticket_create_json(url, payload):
......@@ -966,8 +973,8 @@ class Client(object):
ticket_id (int):
article (Article):
attachment_list (AttachmentList):
dynamic_field_list (DynamicFieldList):
attachment_list (list): *Attachment* objects
dynamic_field_list (list): *DynamicField* objects
**kwargs: any regular OTRS Fields (not for Dynamic Fields!)
Returns:
......@@ -988,10 +995,10 @@ class Client(object):
if attachment_list:
if not article:
raise TicketError("To create an attachment an article is needed!")
payload.update(attachment_list.to_dct())
payload.update({"Attachment": attachment_list})
if dynamic_field_list:
payload.update(dynamic_field_list.to_dct())
payload.update({"DynamicField": dynamic_field_list})
# TODO 2016-04-17 (RH): decide what to return here.. bool or result content? Or full new?
if self._ticket_update_json(url, payload):
......@@ -1100,7 +1107,7 @@ class Client(object):
headers = {"Content-Type": "application/json"}
json_payload = json.dumps(payload)
print("sending {0} to {1} as {2}".format(payload, url, http_method.upper()))
# print("sending {0} to {1} as {2}".format(payload, url, http_method.upper()))
try:
response = requests.request(http_method.upper(),
url,
......
# -*- coding: utf-8 -*-
from __future__ import unicode_literals # support both Python2 and 3
#
# Name: test_attachment_list.py
# Description: Test for PyOTRS AttachmentList class
#
# Author: robert.habermann@dlh.de
# Date: 2016-04-18
# make sure (early) that parent dir (main app) is in path
import os.path
import sys
import unittest2 as unittest
# from mock import MagicMock, patch
current_path = os.path.dirname(os.path.realpath(__file__))
sys.path.append(os.path.join(current_path, os.pardir))
from pyotrs import Attachment, AttachmentList # noqa
class AttachmentListTests(unittest.TestCase):
def test_init(self):
att_list = AttachmentList()
self.assertIsInstance(att_list, AttachmentList)
def test_dummy_static(self):
att = Attachment("YmFyCg==", "text/plain", "dümmy.txt")
att_list = AttachmentList(att)
self.assertIsInstance(att_list, AttachmentList)
self.assertEqual(att_list.__repr__(), '<AttachmentList: 1 item(s)>')
def test_two_dummy_static(self):
att1 = Attachment("YmFyCg==", "text/plain", "dümmy.txt")
att2 = Attachment("Zm9vYmFyCg==", "text/plain", "foobar.txt")
att_list = AttachmentList([att1, att2])
self.assertIsInstance(att_list, AttachmentList)
self.assertEqual(att_list.__repr__(), '<AttachmentList: 2 item(s)>')
def test_add_dummy_static(self):
att1 = Attachment("YmFyCg==", "text/plain", "dümmy.txt")
att2 = Attachment("Zm9vYmFyCg==", "text/plain", "foobar.txt")
att_list = AttachmentList(att1)
att_list.add(att2)
self.assertIsInstance(att_list, AttachmentList)
self.assertEqual(att_list.__repr__(), '<AttachmentList: 2 item(s)>')
def test_dummy_static_dct(self):
att = Attachment("YmFyCg==", "text/plain", "dümmy.txt")
att_list = AttachmentList(att)
self.assertDictEqual(att_list.to_dct(),
{'Attachment': [{'Content': 'YmFyCg==',
'ContentType': 'text/plain',
'Filename': 'dümmy.txt'}]})
def test_dummy(self):
att = Attachment.dummy()
att_list = AttachmentList(att)
self.assertIsInstance(att_list, AttachmentList)
self.assertEqual(att_list.__repr__(), '<AttachmentList: 1 item(s)>')
def test_list_dummy(self):
att_list = AttachmentList.dummy()
self.assertIsInstance(att_list, AttachmentList)
self.assertEqual(att_list.__repr__(), '<AttachmentList: 1 item(s)>')
def main():
unittest.main()
if __name__ == '__main__':
main()
# EOF
# -*- coding: utf-8 -*-
from __future__ import unicode_literals # support both Python2 and 3
#
# Name: test_dynamic_field_list.py
# Description: Test for PyOTRS DynamicFieldList class
#
# Author: robert.habermann@dlh.de
# Date: 2016-04-18
# make sure (early) that parent dir (main app) is in path
import os.path
import sys
import unittest2 as unittest
# from mock import MagicMock, patch
current_path = os.path.dirname(os.path.realpath(__file__))
sys.path.append(os.path.join(current_path, os.pardir))
from pyotrs import DynamicField, DynamicFieldList # noqa
class DynamicFieldListTests(unittest.TestCase):
def test_init(self):
dyn_list = DynamicFieldList()
self.assertIsInstance(dyn_list, DynamicFieldList)
def test_dummy_static_one(self):
dyn = DynamicField(dct={'Name': 'firstname', 'Value': 'Jane'})
dyn_list = DynamicFieldList(dyn)
self.assertIsInstance(dyn_list, DynamicFieldList)
self.assertEqual(dyn_list.__repr__(), '<DynamicFieldList: 1 item(s)>')
def test_dummy_static_two(self):
dyn1 = DynamicField(dct={'Name': 'firstname', 'Value': 'Jane'})
dyn2 = DynamicField(dct={'Name': 'lastname', 'Value': 'Doe'})
dyn_list = DynamicFieldList([dyn1, dyn2])
self.assertIsInstance(dyn_list, DynamicFieldList)
self.assertEqual(dyn_list.__repr__(), '<DynamicFieldList: 2 item(s)>')
def test_dummy(self):
dyn_list = DynamicFieldList.dummy()
self.assertIsInstance(dyn_list, DynamicFieldList)
self.assertEqual(dyn_list.__repr__(), '<DynamicFieldList: 2 item(s)>')
def test_dummy_to_dct(self):
dyn_list = DynamicFieldList.dummy()
self.assertDictEqual(dyn_list.to_dct(),
{'DynamicField': [{'Name': 'firstname', 'Value': 'Jane'},
{'Name': 'lastname', 'Value': 'Doe'}]})
def test_add(self):
dyn1 = DynamicField(dct={'Name': 'firstname', 'Value': 'Jane'})
dyn2 = DynamicField(dct={'Name': 'lastname', 'Value': 'Doe'})
dyn_list = DynamicFieldList(dyn1)
self.assertIsInstance(dyn_list, DynamicFieldList)
dyn_list.add(dyn2)
self.assertEqual(dyn_list.__repr__(), '<DynamicFieldList: 2 item(s)>')
def main():
unittest.main()
if __name__ == '__main__':
main()
# EOF
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment