otrs-somconnexio 0.7.2__py2.py3-none-any.whl → 0.8.0__py2.py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- otrs_somconnexio/otrs_models/fiber_dynamic_fields.py +0 -6
- otrs_somconnexio/otrs_models/mobile_dynamic_fields.py +0 -6
- otrs_somconnexio/otrs_models/provision_article.py +2 -5
- otrs_somconnexio/otrs_models/provision_dynamic_fields.py +6 -0
- otrs_somconnexio/otrs_models/provision_ticket.py +43 -10
- otrs_somconnexio/otrs_models/switchboard_header_data.py +4 -0
- otrs_somconnexio/otrs_models/switchboard_header_dynamic_fields.py +1 -1
- otrs_somconnexio/otrs_models/switchboard_header_ticket.py +61 -0
- otrs_somconnexio/otrs_models/switchboard_ticket.py +8 -0
- {otrs_somconnexio-0.7.2.dist-info → otrs_somconnexio-0.8.0.dist-info}/METADATA +3 -1
- {otrs_somconnexio-0.7.2.dist-info → otrs_somconnexio-0.8.0.dist-info}/RECORD +26 -26
- tests/otrs_models/test_adsl_dynamic_fields.py +1 -0
- tests/otrs_models/test_adsl_ticket.py +10 -9
- tests/otrs_models/test_fiber_dynamic_fields.py +2 -1
- tests/otrs_models/test_fiber_ticket.py +18 -8
- tests/otrs_models/test_mobile_ticket.py +14 -4
- tests/otrs_models/test_provision_article.py +9 -26
- tests/otrs_models/test_router_4G_dynamic_fields.py +17 -0
- tests/otrs_models/test_router_4G_ticket.py +19 -10
- tests/otrs_models/test_switchboard_dynamic_fields.py +8 -1
- tests/otrs_models/test_switchboard_header_data.py +2 -0
- tests/otrs_models/test_switchboard_header_dynamic_fields.py +1 -1
- tests/otrs_models/test_switchboard_header_ticket.py +85 -9
- tests/otrs_models/test_switchboard_ticket.py +36 -24
- {otrs_somconnexio-0.7.2.dist-info → otrs_somconnexio-0.8.0.dist-info}/WHEEL +0 -0
- {otrs_somconnexio-0.7.2.dist-info → otrs_somconnexio-0.8.0.dist-info}/top_level.txt +0 -0
|
@@ -11,7 +11,6 @@ class FiberDynamicFields(InternetDynamicFields):
|
|
|
11
11
|
return [
|
|
12
12
|
self._df_previous_contract_pon(),
|
|
13
13
|
self._df_previous_contract_fiber_speed(),
|
|
14
|
-
self._activation_notes(),
|
|
15
14
|
self._df_mobile_pack_contracts(),
|
|
16
15
|
self._df_all_grouped_SIMS_recieved(),
|
|
17
16
|
self._df_has_previous_owner_with_mobile_pack_contracts(),
|
|
@@ -19,11 +18,6 @@ class FiberDynamicFields(InternetDynamicFields):
|
|
|
19
18
|
self._keep_landline_number(),
|
|
20
19
|
]
|
|
21
20
|
|
|
22
|
-
def _activation_notes(self):
|
|
23
|
-
return DynamicField(
|
|
24
|
-
name="consideracionsActivacio2", value=self.service_data.activation_notes
|
|
25
|
-
)
|
|
26
|
-
|
|
27
21
|
def _df_previous_contract_pon(self):
|
|
28
22
|
return DynamicField(
|
|
29
23
|
name="ponAntic", value=self.service_data.previous_contract_pon
|
|
@@ -19,7 +19,6 @@ class MobileDynamicFields(ProvisionDynamicFields):
|
|
|
19
19
|
self._sim_received(),
|
|
20
20
|
self._sim_delivery_tracking_code(),
|
|
21
21
|
self._send_sim_type(),
|
|
22
|
-
self._activation_notes(),
|
|
23
22
|
self._delivery_street(),
|
|
24
23
|
self._delivery_zip_code(),
|
|
25
24
|
self._delivery_city(),
|
|
@@ -54,11 +53,6 @@ class MobileDynamicFields(ProvisionDynamicFields):
|
|
|
54
53
|
name="dniTitularAnterior", value=self.service_data.previous_owner_vat
|
|
55
54
|
)
|
|
56
55
|
|
|
57
|
-
def _activation_notes(self):
|
|
58
|
-
return DynamicField(
|
|
59
|
-
name="consideracionsActivacio", value=self.service_data.activation_notes
|
|
60
|
-
)
|
|
61
|
-
|
|
62
56
|
def _sim_received(self):
|
|
63
57
|
sim_recieved = "1" if self.service_data.has_sim else "0"
|
|
64
58
|
return DynamicField("SIMrebuda", sim_recieved)
|
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
# coding: utf-8
|
|
2
2
|
from otrs_somconnexio.otrs_models.abstract_article import AbstractArticle
|
|
3
|
-
from otrs_somconnexio.services.get_ticket_title import GetTicketTitle
|
|
4
3
|
|
|
5
4
|
|
|
6
5
|
class ProvisionArticle(AbstractArticle):
|
|
7
|
-
def __init__(self,
|
|
8
|
-
subject = GetTicketTitle(technology, order_id, service_type).build()
|
|
6
|
+
def __init__(self, subject, notes=""):
|
|
9
7
|
self.subject = subject
|
|
10
|
-
if notes
|
|
11
|
-
self.isVisibleForCustomer = "0"
|
|
8
|
+
self.isVisibleForCustomer = "0" if notes else "1"
|
|
12
9
|
self.body = notes
|
|
@@ -32,6 +32,7 @@ class ProvisionDynamicFields:
|
|
|
32
32
|
self._order_id(),
|
|
33
33
|
self._confirmed_documentation(),
|
|
34
34
|
self._notes(),
|
|
35
|
+
self._activation_notes(),
|
|
35
36
|
]
|
|
36
37
|
dynamic_fields += self._build_specific_dynamic_fields()
|
|
37
38
|
|
|
@@ -122,3 +123,8 @@ class ProvisionDynamicFields:
|
|
|
122
123
|
return DynamicField(
|
|
123
124
|
name="consideracionsGenerals", value=self.service_data.notes
|
|
124
125
|
)
|
|
126
|
+
|
|
127
|
+
def _activation_notes(self):
|
|
128
|
+
return DynamicField(
|
|
129
|
+
name="consideracionsActivacio", value=self.service_data.activation_notes
|
|
130
|
+
)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# coding: utf-8
|
|
2
|
-
|
|
3
|
-
|
|
2
|
+
import base64
|
|
3
|
+
from pyotrs.lib import Attachment, Ticket
|
|
4
4
|
from otrs_somconnexio.client import OTRSClient
|
|
5
5
|
from otrs_somconnexio.otrs_models.provision_article import ProvisionArticle
|
|
6
6
|
from otrs_somconnexio.services.get_ticket_title import GetTicketTitle
|
|
@@ -11,8 +11,12 @@ class ProvisionTicket:
|
|
|
11
11
|
self.responsible_data = responsible_data
|
|
12
12
|
|
|
13
13
|
def create(self):
|
|
14
|
+
new_ticket = self._build_ticket()
|
|
14
15
|
self.otrs_ticket = OTRSClient().create_otrs_process_ticket(
|
|
15
|
-
|
|
16
|
+
new_ticket,
|
|
17
|
+
article=self._build_article(),
|
|
18
|
+
dynamic_fields=self._build_dynamic_fields(),
|
|
19
|
+
attachments=self._build_attachments(),
|
|
16
20
|
)
|
|
17
21
|
|
|
18
22
|
@property
|
|
@@ -24,11 +28,7 @@ class ProvisionTicket:
|
|
|
24
28
|
return self.otrs_ticket.number
|
|
25
29
|
|
|
26
30
|
def _build_ticket(self):
|
|
27
|
-
title =
|
|
28
|
-
self.service_data.technology,
|
|
29
|
-
self.service_data.order_id,
|
|
30
|
-
self.service_type(),
|
|
31
|
-
).build()
|
|
31
|
+
title = self._ticket_title()
|
|
32
32
|
return Ticket(
|
|
33
33
|
{
|
|
34
34
|
"Title": title,
|
|
@@ -44,13 +44,40 @@ class ProvisionTicket:
|
|
|
44
44
|
}
|
|
45
45
|
)
|
|
46
46
|
|
|
47
|
+
def _get_article_subject(self):
|
|
48
|
+
return self._ticket_title()
|
|
49
|
+
|
|
50
|
+
def _get_article_notes(self):
|
|
51
|
+
return self.service_data.notes
|
|
52
|
+
|
|
47
53
|
def _build_article(self):
|
|
48
54
|
provision_article = ProvisionArticle(
|
|
55
|
+
self._get_article_subject(),
|
|
56
|
+
self._get_article_notes(),
|
|
57
|
+
)
|
|
58
|
+
return provision_article.call()
|
|
59
|
+
|
|
60
|
+
def _ticket_title(self):
|
|
61
|
+
return GetTicketTitle(
|
|
49
62
|
self.service_data.technology,
|
|
50
63
|
self.service_data.order_id,
|
|
51
64
|
self.service_type(),
|
|
52
|
-
)
|
|
53
|
-
|
|
65
|
+
).build()
|
|
66
|
+
|
|
67
|
+
def _build_attachments(self):
|
|
68
|
+
docs = self._files_to_attach()
|
|
69
|
+
if not docs:
|
|
70
|
+
return []
|
|
71
|
+
return [
|
|
72
|
+
Attachment.create_basic(
|
|
73
|
+
Content=base64.b64encode(bytes(doc["Content"], "utf-8")).decode(
|
|
74
|
+
"utf-8"
|
|
75
|
+
),
|
|
76
|
+
Filename=doc["Filename"],
|
|
77
|
+
ContentType=doc.get("ContentType", "text/plain"),
|
|
78
|
+
)
|
|
79
|
+
for doc in docs
|
|
80
|
+
]
|
|
54
81
|
|
|
55
82
|
def _ticket_type(self):
|
|
56
83
|
return self.otrs_configuration.type
|
|
@@ -90,3 +117,9 @@ class ProvisionTicket:
|
|
|
90
117
|
return self.responsible_data.email
|
|
91
118
|
else:
|
|
92
119
|
return False
|
|
120
|
+
|
|
121
|
+
def _files_to_attach(self):
|
|
122
|
+
"""Override to attach files to the ticket.
|
|
123
|
+
Format: [{"Filename": "file.txt", "Content": "file content", "ContentType": "text/plain"}, ...]
|
|
124
|
+
"""
|
|
125
|
+
return []
|
|
@@ -8,6 +8,8 @@ class SwitchboardHeaderData:
|
|
|
8
8
|
contact_phone,
|
|
9
9
|
sales_team,
|
|
10
10
|
technology,
|
|
11
|
+
lead_line_data,
|
|
12
|
+
agent_data,
|
|
11
13
|
notes="",
|
|
12
14
|
):
|
|
13
15
|
self.order_id = order_id
|
|
@@ -15,4 +17,6 @@ class SwitchboardHeaderData:
|
|
|
15
17
|
self.contact_phone = contact_phone
|
|
16
18
|
self.sales_team = sales_team
|
|
17
19
|
self.technology = technology
|
|
20
|
+
self.lead_line_data = lead_line_data
|
|
21
|
+
self.agent_data = agent_data
|
|
18
22
|
self.notes = notes
|
|
@@ -1,4 +1,6 @@
|
|
|
1
1
|
# coding: utf-8
|
|
2
|
+
from tabulate import tabulate
|
|
3
|
+
from itertools import groupby
|
|
2
4
|
from otrs_somconnexio.otrs_models.provision_ticket import ProvisionTicket
|
|
3
5
|
from otrs_somconnexio.otrs_models.switchboard_header_dynamic_fields import (
|
|
4
6
|
SwitchboardHeaderDynamicFields,
|
|
@@ -25,3 +27,62 @@ class SwitchboardHeaderTicket(ProvisionTicket):
|
|
|
25
27
|
self._ticket_process_id(),
|
|
26
28
|
self._ticket_activity_id(),
|
|
27
29
|
).all()
|
|
30
|
+
|
|
31
|
+
def _ticket_title(self):
|
|
32
|
+
return "Provisió centraleta virtual (CV) → Capçalera"
|
|
33
|
+
|
|
34
|
+
def _files_to_attach(self):
|
|
35
|
+
formatted_agent_data = self._format_agent_data()
|
|
36
|
+
|
|
37
|
+
attachments = []
|
|
38
|
+
|
|
39
|
+
if formatted_agent_data:
|
|
40
|
+
attachments.append(
|
|
41
|
+
{
|
|
42
|
+
"Filename": "importació_agents_operator_{}.txt".format(
|
|
43
|
+
self.service_data.order_id
|
|
44
|
+
),
|
|
45
|
+
"Content": formatted_agent_data,
|
|
46
|
+
}
|
|
47
|
+
)
|
|
48
|
+
|
|
49
|
+
return attachments
|
|
50
|
+
|
|
51
|
+
def _get_article_notes(self):
|
|
52
|
+
return self._format_lead_line_data()
|
|
53
|
+
|
|
54
|
+
def _format_lead_line_data(self):
|
|
55
|
+
"""Format lead line data for tsv table attachment."""
|
|
56
|
+
lead_line_data = self.service_data.lead_line_data
|
|
57
|
+
if not lead_line_data:
|
|
58
|
+
return ""
|
|
59
|
+
|
|
60
|
+
lead_table_data = list(zip(*lead_line_data.values()))
|
|
61
|
+
headers = lead_line_data.keys()
|
|
62
|
+
lead_lines_table = tabulate(lead_table_data, headers, tablefmt="csv")
|
|
63
|
+
|
|
64
|
+
return lead_lines_table
|
|
65
|
+
|
|
66
|
+
def _format_agent_data(self):
|
|
67
|
+
"""Format agent data for operator import attachment.
|
|
68
|
+
Sorted by product, grouped by product.
|
|
69
|
+
"""
|
|
70
|
+
agent_data = self.service_data.agent_data
|
|
71
|
+
if not agent_data:
|
|
72
|
+
return ""
|
|
73
|
+
|
|
74
|
+
sorted_agents = sorted(agent_data, key=lambda d: d["product"])
|
|
75
|
+
|
|
76
|
+
pin = "2424"
|
|
77
|
+
agents_info = []
|
|
78
|
+
for product, agents in groupby(sorted_agents, key=lambda ag: ag["product"]):
|
|
79
|
+
agents_info.append(f"{product}:")
|
|
80
|
+
|
|
81
|
+
for agent in agents:
|
|
82
|
+
agents_info.append(
|
|
83
|
+
f"{agent['extension']}\t{agent['agent_name']}\t{pin}\t{agent['agent_name']}\t{agent['agent_email']}" # noqa E501
|
|
84
|
+
)
|
|
85
|
+
|
|
86
|
+
agents_info.append("")
|
|
87
|
+
|
|
88
|
+
return "\n".join(agents_info)
|
|
@@ -25,3 +25,11 @@ class SwitchboardTicket(ProvisionTicket):
|
|
|
25
25
|
self._ticket_process_id(),
|
|
26
26
|
self._ticket_activity_id(),
|
|
27
27
|
).all()
|
|
28
|
+
|
|
29
|
+
def _ticket_title(self):
|
|
30
|
+
if self.service_data.landline:
|
|
31
|
+
return "Alta número de fix (CV)"
|
|
32
|
+
elif self.service_data.mobile_phone_number:
|
|
33
|
+
return "Alta mòbil agent (CV)"
|
|
34
|
+
else:
|
|
35
|
+
return "Provisió centraleta virtual (CV)"
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: otrs-somconnexio
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.8.0
|
|
4
4
|
Summary: Python package for Somconnexio data syncing in OTRS
|
|
5
5
|
Home-page: https://gitlab.com/coopdevs/otrs_somconnexio
|
|
6
6
|
Author: Coopdevs
|
|
@@ -14,6 +14,8 @@ Classifier: Programming Language :: Python :: 2.7
|
|
|
14
14
|
Description-Content-Type: text/markdown
|
|
15
15
|
Requires-Dist: pyotrs==0.12.7
|
|
16
16
|
Requires-Dist: future==0.18.2
|
|
17
|
+
Requires-Dist: tabulate==0.9.0
|
|
18
|
+
Requires-Dist: more-itertools==10.0.0
|
|
17
19
|
|
|
18
20
|
# Python 2.7/3.8 module to manage the SomConnexio's ERP integration with OTRS
|
|
19
21
|
|
|
@@ -11,17 +11,17 @@ otrs_somconnexio/otrs_models/coverage_ticket.py,sha256=np7dzWjpqZEdB8n6wpN4qOiOG
|
|
|
11
11
|
otrs_somconnexio/otrs_models/customer_data.py,sha256=nWTot_N78UIdZ3D7BQ2LomRF65xWL_OakpdrYLq1V4I,563
|
|
12
12
|
otrs_somconnexio/otrs_models/customer_user.py,sha256=9LRUxWQS4gxoBoyFwU_wLb9zXiTEbd0V6yU4F051KI8,913
|
|
13
13
|
otrs_somconnexio/otrs_models/fiber_data.py,sha256=b8OVbAPBBUUzcQQP5HXRjzm7fvdqlM8keNlGsAF6t9c,576
|
|
14
|
-
otrs_somconnexio/otrs_models/fiber_dynamic_fields.py,sha256=
|
|
14
|
+
otrs_somconnexio/otrs_models/fiber_dynamic_fields.py,sha256=lkF6FP2JEDHo1kr2fb1uia1WPP0UpltYRzdSCpYODWA,2362
|
|
15
15
|
otrs_somconnexio/otrs_models/fiber_ticket.py,sha256=dCJBaJqDQWQk3XBvqGSWnpMdgOiyu64dh3xFCOOh7C0,938
|
|
16
16
|
otrs_somconnexio/otrs_models/internet_data.py,sha256=BUBZIxSMnccO6RE7Tvf6DtMEMQ1RVX2cYqC_K2BJYtQ,2746
|
|
17
17
|
otrs_somconnexio/otrs_models/internet_dynamic_fields.py,sha256=rsYuGQ8dEyBAqIgyqNVA-76WgCb0y67c3e-Kx9F6MsQ,5018
|
|
18
18
|
otrs_somconnexio/otrs_models/mobile_data.py,sha256=Zl5AlbrtfxT4i6z83sAth_dZcOn0yXFm1AeBMFkG48o,1931
|
|
19
|
-
otrs_somconnexio/otrs_models/mobile_dynamic_fields.py,sha256=
|
|
19
|
+
otrs_somconnexio/otrs_models/mobile_dynamic_fields.py,sha256=cDTG310YUxtOlw8hjKTRrhOiZmC3I1nEvBncaHMhb3Q,3563
|
|
20
20
|
otrs_somconnexio/otrs_models/mobile_ticket.py,sha256=aNtGteRzD-dOtPqqs3KoqggZaeLy_Za1KEBM5aHGCYI,1336
|
|
21
21
|
otrs_somconnexio/otrs_models/providers.py,sha256=Jy5lm_gCuwy_BhpNE5JJ5-TrE8aFQpZvMiYZ-PTlgqs,181
|
|
22
|
-
otrs_somconnexio/otrs_models/provision_article.py,sha256=
|
|
23
|
-
otrs_somconnexio/otrs_models/provision_dynamic_fields.py,sha256=
|
|
24
|
-
otrs_somconnexio/otrs_models/provision_ticket.py,sha256=
|
|
22
|
+
otrs_somconnexio/otrs_models/provision_article.py,sha256=Zs7V9Y8Tag7B8Y_BnEWjIetMO3cSyu397TrItX1jxNI,291
|
|
23
|
+
otrs_somconnexio/otrs_models/provision_dynamic_fields.py,sha256=LdYbmj2RSiGpKzFt4Ws9gUrZdRWec9jVC0lsy2BK7j0,4347
|
|
24
|
+
otrs_somconnexio/otrs_models/provision_ticket.py,sha256=6Nz11-sG_0YARNqaxbJ0XQsZsXsw7XH3L_ENGIo-hFg,3746
|
|
25
25
|
otrs_somconnexio/otrs_models/responsible_data.py,sha256=KCXkCNe_NLRpVLzeK8iNlbuH-tYag4YOL-MqnCFXn0g,104
|
|
26
26
|
otrs_somconnexio/otrs_models/router_4G_data.py,sha256=EQIVxVstFswmEcOHzzV1ZyDYaadiU7lbunb5CJg6xAM,194
|
|
27
27
|
otrs_somconnexio/otrs_models/router_4G_dynamic_fields.py,sha256=NVrfwD2Mj1TTzOC8NYna1XQYXEN6ffAfovlP9VAIHh4,403
|
|
@@ -29,10 +29,10 @@ otrs_somconnexio/otrs_models/router_4G_ticket.py,sha256=Z02DL-hgnqB_imVIB0nxZCU_
|
|
|
29
29
|
otrs_somconnexio/otrs_models/service.py,sha256=EwxTSe6hPS33KbbPGNYzofhEhB4O4d71P9KkpOEjakA,2121
|
|
30
30
|
otrs_somconnexio/otrs_models/switchboard_data.py,sha256=TQLv8Kfcz9TXJZY2yXUKD2nm1QVaMZyysYMttumH44k,1743
|
|
31
31
|
otrs_somconnexio/otrs_models/switchboard_dynamic_fields.py,sha256=K1cRkn7WCxXCsvWLIblSCr30vTtynyCkDA_PVupnLDo,3149
|
|
32
|
-
otrs_somconnexio/otrs_models/switchboard_header_data.py,sha256=
|
|
33
|
-
otrs_somconnexio/otrs_models/switchboard_header_dynamic_fields.py,sha256=
|
|
34
|
-
otrs_somconnexio/otrs_models/switchboard_header_ticket.py,sha256=
|
|
35
|
-
otrs_somconnexio/otrs_models/switchboard_ticket.py,sha256=
|
|
32
|
+
otrs_somconnexio/otrs_models/switchboard_header_data.py,sha256=Q3upfUY-alMO26b4D2uKKo531PibcZsVCCCLc35DNjQ,553
|
|
33
|
+
otrs_somconnexio/otrs_models/switchboard_header_dynamic_fields.py,sha256=ODX1fa_KV6Rp_Jvnv_HMvE79VmfxX7Gs-GflMo3__54,2498
|
|
34
|
+
otrs_somconnexio/otrs_models/switchboard_header_ticket.py,sha256=b9YwV17Kgc_gaslCIzzpSN7RZTWVr3IMBlH62WZ1WmI,2909
|
|
35
|
+
otrs_somconnexio/otrs_models/switchboard_ticket.py,sha256=h1PtSnLLGlTWbE091qm2vXjia989JkpBnY0yzvn9OxA,1224
|
|
36
36
|
otrs_somconnexio/otrs_models/telecom_company.py,sha256=yh8wIE7-AjWESdFsE479WWZ-3uFz_ljUBKF8GK44oow,3077
|
|
37
37
|
otrs_somconnexio/otrs_models/ticket_factory.py,sha256=QL2u-51EuXy1aJWZxUZMo4JisDoKBAQM83GViXJAPx8,2215
|
|
38
38
|
otrs_somconnexio/otrs_models/vf_provisioning_article.py,sha256=AZbtXePA-FA3ufHJsngaXzUL4npJgUqMqvrMSUmCd9o,599
|
|
@@ -122,29 +122,29 @@ tests/otrs_models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU
|
|
|
122
122
|
tests/otrs_models/common_helper.py,sha256=WAd7aenHTfHvxjZMlwFfr32ajaF285Y75eifMjrAQeA,251
|
|
123
123
|
tests/otrs_models/test_abstract_article.py,sha256=udzIihoP0h8Ien20JFz1jLm5Sv2b3wO6f2JZK6zRTKQ,861
|
|
124
124
|
tests/otrs_models/test_adsl_data.py,sha256=_NGpe5mStNyKPhZ5xFVS62jMdMr5vkzp9SusHmFh4r4,1484
|
|
125
|
-
tests/otrs_models/test_adsl_dynamic_fields.py,sha256=
|
|
126
|
-
tests/otrs_models/test_adsl_ticket.py,sha256=
|
|
125
|
+
tests/otrs_models/test_adsl_dynamic_fields.py,sha256=KfR8RO2EoJC6YRauSBf1ktrS2cgLindyLOu3KTkI_W8,19946
|
|
126
|
+
tests/otrs_models/test_adsl_ticket.py,sha256=iebdC-HDzSZEj-m_hbEsyfjkhhNeHT6FrnET9iDswJc,4587
|
|
127
127
|
tests/otrs_models/test_coverage_article.py,sha256=O_wm0l75m6sBWEcMdLOvBWDNSVXJ89IkL4IijIgiuPk,1519
|
|
128
128
|
tests/otrs_models/test_coverage_ticket.py,sha256=0W4f28BMhtZDvPm71d7YPJuiVi9jUI6WJBbjh3xs0mg,1019
|
|
129
129
|
tests/otrs_models/test_customer_user.py,sha256=9TDojrOsQBqd4kdC8SxvG5Ub18AXkJ_tsYuUeHALZnc,2227
|
|
130
130
|
tests/otrs_models/test_fiber_data.py,sha256=rdFbcqzI49PV2m30vqnBOmZr2rn_MBqC0bJd0K0dcbI,1833
|
|
131
|
-
tests/otrs_models/test_fiber_dynamic_fields.py,sha256=
|
|
132
|
-
tests/otrs_models/test_fiber_ticket.py,sha256=
|
|
131
|
+
tests/otrs_models/test_fiber_dynamic_fields.py,sha256=taaR8fU8Gh0RppxfKrltDQDz4YnHaBvOOz5_qXhyWoc,27127
|
|
132
|
+
tests/otrs_models/test_fiber_ticket.py,sha256=DgbNN5oPJgMp-0o-QebzkZUOdWV4TcmFSd4t3umwxfk,6689
|
|
133
133
|
tests/otrs_models/test_mobile_data.py,sha256=EBtwJL9kUaThhnKuqpUk6GFv0KS7RhyCF6dJNgr1-m8,1110
|
|
134
134
|
tests/otrs_models/test_mobile_dynamic_fields.py,sha256=Xi8lj7PCJunwij-VQxqPYnafY2inEqeqQmQfSRFAmOM,19861
|
|
135
135
|
tests/otrs_models/test_mobile_paused_ticket.py,sha256=T7Gyy7hoG994KHXkTWbJVQC_sC1sgZl4C1_sgpx3hwk,1418
|
|
136
|
-
tests/otrs_models/test_mobile_ticket.py,sha256=
|
|
137
|
-
tests/otrs_models/test_provision_article.py,sha256=
|
|
136
|
+
tests/otrs_models/test_mobile_ticket.py,sha256=y6gqz7YY-Uo-p5xx5_TNA_-g-MJENpO2OvLofLTm6PA,5167
|
|
137
|
+
tests/otrs_models/test_provision_article.py,sha256=7M6fgw_CCV4ZydDapbnoCQYE0LrPyHlpqeBysp7aMYk,1188
|
|
138
138
|
tests/otrs_models/test_router_4G_data.py,sha256=3zKZzWd21j8q4oXFG-Pl1Ugtkp4J0_RZx8HtHRzpfKM,1443
|
|
139
|
-
tests/otrs_models/test_router_4G_dynamic_fields.py,sha256=
|
|
140
|
-
tests/otrs_models/test_router_4G_ticket.py,sha256=
|
|
139
|
+
tests/otrs_models/test_router_4G_dynamic_fields.py,sha256=hjUgmZHmAa5MFpaqtcRVbvaIeTZH5Xzmw6U6xbTSZxM,21577
|
|
140
|
+
tests/otrs_models/test_router_4G_ticket.py,sha256=v5PRz3z9dK12_hmYtM7FAS3X681h7BdLumg4ag9x65I,5140
|
|
141
141
|
tests/otrs_models/test_service.py,sha256=fLFyJ5wE8jszrD9sZlSOebjioR8dv8z2SeGZVcA3r5U,6833
|
|
142
142
|
tests/otrs_models/test_switchboard_data.py,sha256=QlO_vupDFeavLFH1EIXVzRf4qIJ5AtuyvgCg_v4sXTE,1233
|
|
143
|
-
tests/otrs_models/test_switchboard_dynamic_fields.py,sha256=
|
|
144
|
-
tests/otrs_models/test_switchboard_header_data.py,sha256=
|
|
145
|
-
tests/otrs_models/test_switchboard_header_dynamic_fields.py,sha256=
|
|
146
|
-
tests/otrs_models/test_switchboard_header_ticket.py,sha256=
|
|
147
|
-
tests/otrs_models/test_switchboard_ticket.py,sha256=
|
|
143
|
+
tests/otrs_models/test_switchboard_dynamic_fields.py,sha256=JPPz5j0ArtS_RYaGQqkI7h7SupI6Vj7FfcpxnzLPYN0,6138
|
|
144
|
+
tests/otrs_models/test_switchboard_header_data.py,sha256=k9ZZ3fnEIIrbca0572PaGLrWm6snjr94grICot3rLcs,592
|
|
145
|
+
tests/otrs_models/test_switchboard_header_dynamic_fields.py,sha256=8jCN7AF3ciUHDU5olA9axJHrSvA8xrWaqtJ8cvPqXsk,3557
|
|
146
|
+
tests/otrs_models/test_switchboard_header_ticket.py,sha256=kxFXrjhBsYWHxAjlAJXXhIwslZ_JbDsStXN_YCu_NEs,7415
|
|
147
|
+
tests/otrs_models/test_switchboard_ticket.py,sha256=dQYHIyNEM_MPAzNsTljh-4qFaxyvy6HVYoHTMhnqJ64,5471
|
|
148
148
|
tests/otrs_models/test_telecom_company.py,sha256=nC4uBleU2Lr3qHr5VDo-6kbcTVwKgguC85TcbhTOn1c,1450
|
|
149
149
|
tests/otrs_models/test_ticket_factory.py,sha256=nvye2LK3vfYv3xRNqsBO9M0zYWRWAPWjEFgdDpY1whQ,4048
|
|
150
150
|
tests/otrs_models/test_vf_provisioning_article.py,sha256=Yj8vtaowhxP12K_-FMcJNW-5re3yyCCfGLRHCPYgrVA,897
|
|
@@ -196,7 +196,7 @@ tests/services/test_update_ticket_with_provider_info.py,sha256=cZUg-hNV4BoMwafbp
|
|
|
196
196
|
tests/user_management_client/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
197
197
|
tests/user_management_client/test_client.py,sha256=088q9H1yf8Hii7zUF17KULqOO-JCxJLsR7vQ8lGHiqg,4410
|
|
198
198
|
tests/user_management_client/test_user_management_response.py,sha256=HCCG7i2f6-ytrRpTzYZHODKCdW-X5GJn-BMVegd5FXg,1539
|
|
199
|
-
otrs_somconnexio-0.
|
|
200
|
-
otrs_somconnexio-0.
|
|
201
|
-
otrs_somconnexio-0.
|
|
202
|
-
otrs_somconnexio-0.
|
|
199
|
+
otrs_somconnexio-0.8.0.dist-info/METADATA,sha256=8kmIb1rsU7THFSbI9ltja8v7HPAS9J7PLIgfQdCLpw0,3527
|
|
200
|
+
otrs_somconnexio-0.8.0.dist-info/WHEEL,sha256=fS9sRbCBHs7VFcwJLnLXN1MZRR0_TVTxvXKzOnaSFs8,110
|
|
201
|
+
otrs_somconnexio-0.8.0.dist-info/top_level.txt,sha256=gvMaHGNwusWpSIy-PVyb0CKDIA4-4fXmEVER_2a-OnE,23
|
|
202
|
+
otrs_somconnexio-0.8.0.dist-info/RECORD,,
|
|
@@ -9,11 +9,10 @@ from otrs_somconnexio.otrs_models.configurations.provision.adsl_ticket import (
|
|
|
9
9
|
|
|
10
10
|
|
|
11
11
|
class ADSLTicketTestCase(unittest.TestCase):
|
|
12
|
-
|
|
13
12
|
@patch("otrs_somconnexio.otrs_models.provision_ticket.Ticket")
|
|
14
13
|
def test_build_ticket(self, MockTicket):
|
|
15
14
|
customer_data = Mock(spec=["id"])
|
|
16
|
-
service_data = Mock(spec=["order_id", "technology"])
|
|
15
|
+
service_data = Mock(spec=["order_id", "technology", "notes"])
|
|
17
16
|
expected_ticket_arguments = {
|
|
18
17
|
"Title": "Ticket#{} - Només ADSL".format(service_data.order_id),
|
|
19
18
|
"Type": ADSLTicketConfiguration.type,
|
|
@@ -31,18 +30,19 @@ class ADSLTicketTestCase(unittest.TestCase):
|
|
|
31
30
|
MockTicket.assert_called_with(expected_ticket_arguments)
|
|
32
31
|
|
|
33
32
|
@patch("otrs_somconnexio.otrs_models.provision_ticket.ProvisionArticle")
|
|
34
|
-
def test_build_article(self,
|
|
33
|
+
def test_build_article(self, MockProvisionArticle):
|
|
35
34
|
customer_data = Mock(spec=[])
|
|
36
|
-
service_data = Mock(spec=["order_id", "technology"])
|
|
35
|
+
service_data = Mock(spec=["order_id", "technology", "notes"])
|
|
37
36
|
|
|
38
|
-
|
|
37
|
+
mock_adsl_article = MockProvisionArticle.return_value
|
|
39
38
|
|
|
40
|
-
ADSLTicket(service_data, customer_data, None)
|
|
39
|
+
ticket = ADSLTicket(service_data, customer_data, None)
|
|
40
|
+
ticket._build_article()
|
|
41
41
|
|
|
42
|
-
|
|
43
|
-
|
|
42
|
+
MockProvisionArticle.assert_called_once_with(
|
|
43
|
+
ticket._ticket_title(), service_data.notes
|
|
44
44
|
)
|
|
45
|
-
|
|
45
|
+
mock_adsl_article.call.assert_called_once()
|
|
46
46
|
|
|
47
47
|
@patch("otrs_somconnexio.otrs_models.adsl_ticket.ADSLDynamicFields")
|
|
48
48
|
def test_build_dynamic_fields(self, MockADSLDynamicFields):
|
|
@@ -97,6 +97,7 @@ class ADSLTicketTestCase(unittest.TestCase):
|
|
|
97
97
|
"shipment_zip",
|
|
98
98
|
"shipment_subdivision",
|
|
99
99
|
"notes",
|
|
100
|
+
"activation_notes",
|
|
100
101
|
"adsl_coverage",
|
|
101
102
|
"mm_fiber_coverage",
|
|
102
103
|
"asociatel_fiber_coverage",
|
|
@@ -652,7 +652,8 @@ class FiberDynamicFieldsTestCase(unittest.TestCase):
|
|
|
652
652
|
|
|
653
653
|
dynamic_fields_dct = dynamic_fields_to_dct(dynamic_fields)
|
|
654
654
|
self.assertEqual(
|
|
655
|
-
dynamic_fields_dct["
|
|
655
|
+
dynamic_fields_dct["consideracionsActivacio"],
|
|
656
|
+
self.service_data.activation_notes,
|
|
656
657
|
)
|
|
657
658
|
|
|
658
659
|
def test_mobile_pack_contracts_field(self):
|
|
@@ -15,7 +15,7 @@ class FiberTicketTestCase(unittest.TestCase):
|
|
|
15
15
|
@patch("otrs_somconnexio.otrs_models.provision_ticket.Ticket")
|
|
16
16
|
def test_build_ticket(self, MockTicket):
|
|
17
17
|
customer_data = Mock(spec=["id"])
|
|
18
|
-
service_data = Mock(spec=["order_id", "technology"])
|
|
18
|
+
service_data = Mock(spec=["order_id", "technology", "notes"])
|
|
19
19
|
|
|
20
20
|
expected_ticket_arguments = {
|
|
21
21
|
"Title": "Ticket#{} - Només fibra".format(service_data.order_id),
|
|
@@ -36,7 +36,7 @@ class FiberTicketTestCase(unittest.TestCase):
|
|
|
36
36
|
@patch("otrs_somconnexio.otrs_models.provision_ticket.Ticket")
|
|
37
37
|
def test_build_ticket_mixed(self, MockTicket):
|
|
38
38
|
customer_data = Mock(spec=["id"])
|
|
39
|
-
service_data = Mock(spec=["order_id", "technology"])
|
|
39
|
+
service_data = Mock(spec=["order_id", "technology", "notes"])
|
|
40
40
|
service_data.technology = "Mixta"
|
|
41
41
|
expected_ticket_arguments = {
|
|
42
42
|
"Title": "Ticket#{} - Fibra mixta".format(service_data.order_id),
|
|
@@ -55,16 +55,17 @@ class FiberTicketTestCase(unittest.TestCase):
|
|
|
55
55
|
MockTicket.assert_called_with(expected_ticket_arguments)
|
|
56
56
|
|
|
57
57
|
@patch("otrs_somconnexio.otrs_models.provision_ticket.ProvisionArticle")
|
|
58
|
-
def test_build_article(self,
|
|
58
|
+
def test_build_article(self, MockProvisionArticle):
|
|
59
59
|
customer_data = Mock(spec=[])
|
|
60
|
-
service_data = Mock(spec=["order_id", "technology"])
|
|
60
|
+
service_data = Mock(spec=["order_id", "technology", "notes"])
|
|
61
61
|
|
|
62
|
-
mock_mobile_article =
|
|
62
|
+
mock_mobile_article = MockProvisionArticle.return_value
|
|
63
63
|
|
|
64
|
-
FiberTicket(service_data, customer_data, self.responsible_data)
|
|
64
|
+
ticket = FiberTicket(service_data, customer_data, self.responsible_data)
|
|
65
|
+
ticket._build_article()
|
|
65
66
|
|
|
66
|
-
|
|
67
|
-
|
|
67
|
+
MockProvisionArticle.assert_called_once_with(
|
|
68
|
+
ticket._ticket_title(), service_data.notes
|
|
68
69
|
)
|
|
69
70
|
mock_mobile_article.call.assert_called_once()
|
|
70
71
|
|
|
@@ -162,3 +163,12 @@ class FiberTicketTestCase(unittest.TestCase):
|
|
|
162
163
|
self.assertEqual(
|
|
163
164
|
ticket.otrs_configuration.service, "Banda Ancha::Fibra::Provisió Fibra"
|
|
164
165
|
)
|
|
166
|
+
|
|
167
|
+
def test_files_to_attach_no_attachments(self):
|
|
168
|
+
customer_data = Mock()
|
|
169
|
+
service_data = Mock()
|
|
170
|
+
|
|
171
|
+
ticket = FiberTicket(service_data, customer_data, self.responsible_data)
|
|
172
|
+
attachments = ticket._files_to_attach()
|
|
173
|
+
|
|
174
|
+
self.assertFalse(attachments)
|
|
@@ -38,17 +38,18 @@ class MobileTicketTestCase(unittest.TestCase):
|
|
|
38
38
|
|
|
39
39
|
@patch("otrs_somconnexio.otrs_models.provision_ticket.ProvisionArticle")
|
|
40
40
|
def test_build_article(self, MockProvisionArticle):
|
|
41
|
-
mobile_data = Mock(spec=["order_id", "technology"])
|
|
41
|
+
mobile_data = Mock(spec=["order_id", "technology", "notes"])
|
|
42
42
|
mobile_data.order_id = 123
|
|
43
43
|
|
|
44
44
|
customer_data = Mock(spec=["order_id"])
|
|
45
45
|
|
|
46
46
|
mock_mobile_article = MockProvisionArticle.return_value
|
|
47
47
|
|
|
48
|
-
MobileTicket(mobile_data, customer_data, self.responsible_data)
|
|
48
|
+
ticket = MobileTicket(mobile_data, customer_data, self.responsible_data)
|
|
49
|
+
ticket._build_article()
|
|
49
50
|
|
|
50
|
-
MockProvisionArticle.
|
|
51
|
-
|
|
51
|
+
MockProvisionArticle.assert_called_once_with(
|
|
52
|
+
ticket._ticket_title(), mobile_data.notes
|
|
52
53
|
)
|
|
53
54
|
mock_mobile_article.call.assert_called_once()
|
|
54
55
|
|
|
@@ -138,3 +139,12 @@ class MobileTicketTestCase(unittest.TestCase):
|
|
|
138
139
|
|
|
139
140
|
self.assertEqual(ticket.id, 123)
|
|
140
141
|
self.assertEqual(ticket.number, "#123")
|
|
142
|
+
|
|
143
|
+
def test_files_to_attach_no_attachments(self):
|
|
144
|
+
customer_data = Mock()
|
|
145
|
+
service_data = Mock()
|
|
146
|
+
|
|
147
|
+
ticket = MobileTicket(service_data, customer_data, self.responsible_data)
|
|
148
|
+
attachments = ticket._files_to_attach()
|
|
149
|
+
|
|
150
|
+
self.assertFalse(attachments)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# coding: utf-8
|
|
2
2
|
import unittest
|
|
3
|
-
from mock import
|
|
3
|
+
from mock import patch
|
|
4
4
|
|
|
5
5
|
from otrs_somconnexio.otrs_models.provision_article import ProvisionArticle
|
|
6
6
|
|
|
@@ -8,42 +8,25 @@ from otrs_somconnexio.otrs_models.provision_article import ProvisionArticle
|
|
|
8
8
|
class ProvisionArticleTestCase(unittest.TestCase):
|
|
9
9
|
@patch("otrs_somconnexio.otrs_models.abstract_article.Article")
|
|
10
10
|
def test_call_with_notes(self, MockArticle):
|
|
11
|
-
|
|
11
|
+
subject = "test subject"
|
|
12
|
+
notes = "test notes"
|
|
12
13
|
expected_article_arguments = {
|
|
13
|
-
"Subject":
|
|
14
|
-
"Body":
|
|
14
|
+
"Subject": subject,
|
|
15
|
+
"Body": notes,
|
|
15
16
|
"ContentType": "text/plain; charset=utf8",
|
|
16
17
|
"IsVisibleForCustomer": "0",
|
|
17
18
|
}
|
|
18
|
-
ProvisionArticle(
|
|
19
|
-
service_type="adsl", technology="a", order_id="b", notes="c"
|
|
20
|
-
).call()
|
|
19
|
+
ProvisionArticle(subject=subject, notes=notes).call()
|
|
21
20
|
MockArticle.assert_called_once_with(expected_article_arguments)
|
|
22
21
|
|
|
23
22
|
@patch("otrs_somconnexio.otrs_models.abstract_article.Article")
|
|
24
23
|
def test_call_without_notes(self, MockArticle):
|
|
25
|
-
|
|
24
|
+
subject = "test subject"
|
|
26
25
|
expected_article_arguments = {
|
|
27
|
-
"Subject":
|
|
26
|
+
"Subject": subject,
|
|
28
27
|
"Body": "",
|
|
29
28
|
"ContentType": "text/plain; charset=utf8",
|
|
30
29
|
"IsVisibleForCustomer": "1",
|
|
31
30
|
}
|
|
32
|
-
ProvisionArticle(
|
|
33
|
-
service_type="fiber", technology="a", order_id="b", notes=""
|
|
34
|
-
).call()
|
|
35
|
-
MockArticle.assert_called_once_with(expected_article_arguments)
|
|
36
|
-
|
|
37
|
-
@patch("otrs_somconnexio.otrs_models.abstract_article.Article")
|
|
38
|
-
def test_call_mixed(self, MockArticle):
|
|
39
|
-
|
|
40
|
-
expected_article_arguments = {
|
|
41
|
-
"Subject": "Ticket#b - Mòbil mixta",
|
|
42
|
-
"Body": "c",
|
|
43
|
-
"ContentType": "text/plain; charset=utf8",
|
|
44
|
-
"IsVisibleForCustomer": "0",
|
|
45
|
-
}
|
|
46
|
-
ProvisionArticle(
|
|
47
|
-
service_type="mobile", technology="Mixta", order_id="b", notes="c"
|
|
48
|
-
).call()
|
|
31
|
+
ProvisionArticle(subject=subject, notes="").call()
|
|
49
32
|
MockArticle.assert_called_once_with(expected_article_arguments)
|
|
@@ -40,6 +40,7 @@ class Router4GDynamicFieldsTestCase(unittest.TestCase):
|
|
|
40
40
|
"previous_owner_name",
|
|
41
41
|
"previous_owner_surname",
|
|
42
42
|
"notes",
|
|
43
|
+
"activation_notes",
|
|
43
44
|
"adsl_coverage",
|
|
44
45
|
"mm_fiber_coverage",
|
|
45
46
|
"asociatel_fiber_coverage",
|
|
@@ -400,6 +401,22 @@ class Router4GDynamicFieldsTestCase(unittest.TestCase):
|
|
|
400
401
|
dynamic_fields_dct = dynamic_fields_to_dct(dynamic_fields)
|
|
401
402
|
self.assertEqual(dynamic_fields_dct["provinciaEnviament"], "Subdivision")
|
|
402
403
|
|
|
404
|
+
def test_activation_notes_field(self):
|
|
405
|
+
self.service_data.activation_notes = "text text text"
|
|
406
|
+
|
|
407
|
+
dynamic_fields = Router4GDynamicFields(
|
|
408
|
+
self.service_data,
|
|
409
|
+
self.customer_data,
|
|
410
|
+
self.router_4G_otrs_process_id,
|
|
411
|
+
self.router_4G_otrs_activity_id,
|
|
412
|
+
).all()
|
|
413
|
+
|
|
414
|
+
dynamic_fields_dct = dynamic_fields_to_dct(dynamic_fields)
|
|
415
|
+
self.assertEqual(
|
|
416
|
+
dynamic_fields_dct["consideracionsActivacio"],
|
|
417
|
+
self.service_data.activation_notes,
|
|
418
|
+
)
|
|
419
|
+
|
|
403
420
|
def test_owner_vat_field(self):
|
|
404
421
|
self.service_data.previous_owner_vat = "12345M"
|
|
405
422
|
|
|
@@ -15,7 +15,7 @@ class Router4GTicketTestCase(unittest.TestCase):
|
|
|
15
15
|
@patch("otrs_somconnexio.otrs_models.provision_ticket.Ticket")
|
|
16
16
|
def test_build_ticket(self, MockTicket):
|
|
17
17
|
customer_data = Mock(spec=["id"])
|
|
18
|
-
service_data = Mock(spec=["order_id", "technology"])
|
|
18
|
+
service_data = Mock(spec=["order_id", "technology", "notes"])
|
|
19
19
|
|
|
20
20
|
expected_ticket_arguments = {
|
|
21
21
|
"Title": "Ticket#{} - Només 4G".format(service_data.order_id),
|
|
@@ -36,20 +36,19 @@ class Router4GTicketTestCase(unittest.TestCase):
|
|
|
36
36
|
MockTicket.assert_called_with(expected_ticket_arguments)
|
|
37
37
|
|
|
38
38
|
@patch("otrs_somconnexio.otrs_models.provision_ticket.ProvisionArticle")
|
|
39
|
-
def test_build_article(self,
|
|
39
|
+
def test_build_article(self, MockProvisionArticle):
|
|
40
40
|
customer_data = Mock(spec=[])
|
|
41
|
-
service_data = Mock(spec=["order_id", "technology"])
|
|
41
|
+
service_data = Mock(spec=["order_id", "technology", "notes"])
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
mock_provision_article = MockProvisionArticle.return_value
|
|
44
44
|
|
|
45
|
-
Router4GTicket(
|
|
46
|
-
|
|
47
|
-
)._build_article()
|
|
45
|
+
ticket = Router4GTicket(service_data, customer_data, self.responsible_data)
|
|
46
|
+
ticket._build_article()
|
|
48
47
|
|
|
49
|
-
|
|
50
|
-
|
|
48
|
+
MockProvisionArticle.assert_called_once_with(
|
|
49
|
+
ticket._ticket_title(), service_data.notes
|
|
51
50
|
)
|
|
52
|
-
|
|
51
|
+
mock_provision_article.call.assert_called_once()
|
|
53
52
|
|
|
54
53
|
@patch("otrs_somconnexio.otrs_models.router_4G_ticket.Router4GDynamicFields")
|
|
55
54
|
def test_build_dynamic_fields(self, MockRouter4GDynamicFields):
|
|
@@ -106,6 +105,7 @@ class Router4GTicketTestCase(unittest.TestCase):
|
|
|
106
105
|
"shipment_zip",
|
|
107
106
|
"shipment_subdivision",
|
|
108
107
|
"notes",
|
|
108
|
+
"activation_notes",
|
|
109
109
|
"adsl_coverage",
|
|
110
110
|
"mm_fiber_coverage",
|
|
111
111
|
"asociatel_fiber_coverage",
|
|
@@ -132,3 +132,12 @@ class Router4GTicketTestCase(unittest.TestCase):
|
|
|
132
132
|
|
|
133
133
|
self.assertEqual(ticket.id, 123)
|
|
134
134
|
self.assertEqual(ticket.number, "#123")
|
|
135
|
+
|
|
136
|
+
def test_files_to_attach_no_attachments(self):
|
|
137
|
+
customer_data = Mock()
|
|
138
|
+
service_data = Mock()
|
|
139
|
+
|
|
140
|
+
ticket = Router4GTicket(service_data, customer_data, self.responsible_data)
|
|
141
|
+
attachments = ticket._files_to_attach()
|
|
142
|
+
|
|
143
|
+
self.assertFalse(attachments)
|
|
@@ -45,7 +45,8 @@ class SwitchboardDynamicFieldsTestCase(unittest.TestCase):
|
|
|
45
45
|
shipment_subdivision=faker.state(),
|
|
46
46
|
additional_products="A,B,C",
|
|
47
47
|
confirmed_documentation=faker.boolean(),
|
|
48
|
-
notes=faker.
|
|
48
|
+
notes=faker.text(),
|
|
49
|
+
activation_notes=faker.text(),
|
|
49
50
|
)
|
|
50
51
|
|
|
51
52
|
self.switchboard_otrs_process_id = faker.uuid4()
|
|
@@ -188,3 +189,9 @@ class SwitchboardDynamicFieldsTestCase(unittest.TestCase):
|
|
|
188
189
|
self.dynamic_fields_dct["consideracionsGenerals"],
|
|
189
190
|
self.service_data.notes,
|
|
190
191
|
)
|
|
192
|
+
|
|
193
|
+
def test_activation_notes_field(self):
|
|
194
|
+
self.assertEqual(
|
|
195
|
+
self.dynamic_fields_dct["consideracionsActivacio"],
|
|
196
|
+
self.service_data.activation_notes,
|
|
197
|
+
)
|
|
@@ -114,6 +114,6 @@ class SwitchboardHeaderDynamicFieldsTestCase(unittest.TestCase):
|
|
|
114
114
|
|
|
115
115
|
def test_notes_field(self):
|
|
116
116
|
self.assertEqual(
|
|
117
|
-
self.dynamic_fields_dct["
|
|
117
|
+
self.dynamic_fields_dct["consideracionsActivacio"],
|
|
118
118
|
self.service_data.notes,
|
|
119
119
|
)
|
|
@@ -21,9 +21,7 @@ class SwitchboardHeaderTicketTestCase(unittest.TestCase):
|
|
|
21
21
|
customer_data = Mock(spec=["id"])
|
|
22
22
|
|
|
23
23
|
expected_ticket_arguments = {
|
|
24
|
-
"Title": "
|
|
25
|
-
service_data.order_id
|
|
26
|
-
),
|
|
24
|
+
"Title": "Provisió centraleta virtual (CV) → Capçalera",
|
|
27
25
|
"Type": SwitchboardTicketConfiguration.type,
|
|
28
26
|
"QueueID": SwitchboardTicketConfiguration.queue_id,
|
|
29
27
|
"State": SwitchboardTicketConfiguration.state,
|
|
@@ -42,20 +40,21 @@ class SwitchboardHeaderTicketTestCase(unittest.TestCase):
|
|
|
42
40
|
|
|
43
41
|
@patch("otrs_somconnexio.otrs_models.provision_ticket.ProvisionArticle")
|
|
44
42
|
def test_build_article(self, MockProvisionArticle):
|
|
45
|
-
service_data = Mock(spec=["order_id", "technology"])
|
|
43
|
+
service_data = Mock(spec=["order_id", "technology", "lead_line_data"])
|
|
46
44
|
service_data.order_id = 123
|
|
45
|
+
service_data.lead_line_data = {}
|
|
47
46
|
customer_data = Mock(spec=["order_id"])
|
|
48
47
|
|
|
49
48
|
mock_article = MockProvisionArticle.return_value
|
|
50
49
|
|
|
51
|
-
SwitchboardHeaderTicket(
|
|
50
|
+
ticket = SwitchboardHeaderTicket(
|
|
52
51
|
service_data, customer_data, self.responsible_data
|
|
53
|
-
)
|
|
52
|
+
)
|
|
53
|
+
ticket._build_article()
|
|
54
54
|
|
|
55
55
|
MockProvisionArticle.assert_called_with(
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
"switchboard_header",
|
|
56
|
+
ticket._ticket_title(),
|
|
57
|
+
ticket._format_lead_line_data(),
|
|
59
58
|
)
|
|
60
59
|
mock_article.call.assert_called_once()
|
|
61
60
|
|
|
@@ -92,6 +91,8 @@ class SwitchboardHeaderTicketTestCase(unittest.TestCase):
|
|
|
92
91
|
"previous_owner_name",
|
|
93
92
|
"previous_owner_surname",
|
|
94
93
|
"sales_team",
|
|
94
|
+
"agent_data",
|
|
95
|
+
"lead_line_data",
|
|
95
96
|
"type",
|
|
96
97
|
"notes",
|
|
97
98
|
]
|
|
@@ -110,6 +111,8 @@ class SwitchboardHeaderTicketTestCase(unittest.TestCase):
|
|
|
110
111
|
"language",
|
|
111
112
|
]
|
|
112
113
|
)
|
|
114
|
+
service_data.agent_data = []
|
|
115
|
+
service_data.lead_line_data = {}
|
|
113
116
|
|
|
114
117
|
mock_otrs_client = Mock(spec=["create_otrs_process_ticket"])
|
|
115
118
|
mock_otrs_client.create_otrs_process_ticket.return_value = Mock(
|
|
@@ -127,3 +130,76 @@ class SwitchboardHeaderTicketTestCase(unittest.TestCase):
|
|
|
127
130
|
mock_otrs_client.create_otrs_process_ticket.assert_called_once()
|
|
128
131
|
self.assertEqual(ticket.id, 123)
|
|
129
132
|
self.assertEqual(ticket.number, "#123")
|
|
133
|
+
|
|
134
|
+
def test_files_to_attach(self):
|
|
135
|
+
service_data = Mock(spec=["order_id", "agent_data"])
|
|
136
|
+
customer_data = Mock()
|
|
137
|
+
service_data.order_id = 123
|
|
138
|
+
service_data.agent_data = [
|
|
139
|
+
{
|
|
140
|
+
"product": "product1",
|
|
141
|
+
"extension": "ext1",
|
|
142
|
+
"agent_name": "agent1",
|
|
143
|
+
"agent_email": "agent1@test.com",
|
|
144
|
+
},
|
|
145
|
+
{
|
|
146
|
+
"product": "product2",
|
|
147
|
+
"extension": "ext2",
|
|
148
|
+
"agent_name": "agent2",
|
|
149
|
+
"agent_email": "agent2@test.com",
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"product": "product3",
|
|
153
|
+
"extension": "ext3",
|
|
154
|
+
"agent_name": "agent3",
|
|
155
|
+
"agent_email": "agent3@test.com",
|
|
156
|
+
},
|
|
157
|
+
]
|
|
158
|
+
|
|
159
|
+
sb_header_ticket = SwitchboardHeaderTicket(
|
|
160
|
+
service_data, customer_data, self.responsible_data
|
|
161
|
+
)
|
|
162
|
+
files = sb_header_ticket._files_to_attach()
|
|
163
|
+
|
|
164
|
+
self.assertEqual(len(files), 1)
|
|
165
|
+
agent_data_file = files[0]
|
|
166
|
+
self.assertEqual(
|
|
167
|
+
agent_data_file["Filename"],
|
|
168
|
+
"importació_agents_operator_{}.txt".format(service_data.order_id),
|
|
169
|
+
)
|
|
170
|
+
self.assertIn("product1:\n", agent_data_file["Content"])
|
|
171
|
+
self.assertIn(
|
|
172
|
+
"ext1\tagent1\t2424\tagent1\tagent1@test.com\n", agent_data_file["Content"]
|
|
173
|
+
)
|
|
174
|
+
self.assertIn("product2:\n", agent_data_file["Content"])
|
|
175
|
+
self.assertIn(
|
|
176
|
+
"ext2\tagent2\t2424\tagent2\tagent2@test.com\n", agent_data_file["Content"]
|
|
177
|
+
)
|
|
178
|
+
self.assertIn("product3:\n", agent_data_file["Content"])
|
|
179
|
+
self.assertIn(
|
|
180
|
+
"ext3\tagent3\t2424\tagent3\tagent3@test.com\n", agent_data_file["Content"]
|
|
181
|
+
)
|
|
182
|
+
|
|
183
|
+
def test_format_lead_line_data(self):
|
|
184
|
+
service_data = Mock(spec=["order_id", "lead_line_data"])
|
|
185
|
+
customer_data = Mock()
|
|
186
|
+
service_data.order_id = 123
|
|
187
|
+
service_data.lead_line_data = {
|
|
188
|
+
"Prod": ["product1", "product2", "product3"],
|
|
189
|
+
"Ext": ["ext1", "ext2", "ext3"],
|
|
190
|
+
"Nom": ["agent1", "agent2", "agent3"],
|
|
191
|
+
"Telf": ["111", "222", "333"],
|
|
192
|
+
"Tipus": ["tipus1", "tipus2", "tipus3"],
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
sb_header_ticket = SwitchboardHeaderTicket(
|
|
196
|
+
service_data, customer_data, self.responsible_data
|
|
197
|
+
)
|
|
198
|
+
lead_line_table = sb_header_ticket._format_lead_line_data()
|
|
199
|
+
|
|
200
|
+
for header in service_data.lead_line_data.keys():
|
|
201
|
+
self.assertIn(header, lead_line_table)
|
|
202
|
+
self.assertEqual(
|
|
203
|
+
lead_line_table.count("\n"),
|
|
204
|
+
len(service_data.lead_line_data["Prod"]) + 1,
|
|
205
|
+
) # headers + number of rows
|
|
@@ -11,63 +11,75 @@ from otrs_somconnexio.otrs_models.configurations.provision.switchboard_ticket im
|
|
|
11
11
|
class SwitchboardTicketTestCase(unittest.TestCase):
|
|
12
12
|
def setUp(self):
|
|
13
13
|
self.responsible_data = Mock(spec=["email"])
|
|
14
|
+
self.service_data = Mock(
|
|
15
|
+
spec=["order_id", "technology", "landline", "mobile_phone_number", "notes"]
|
|
16
|
+
)
|
|
17
|
+
self.service_data.order_id = 123
|
|
18
|
+
self.customer_data = Mock(spec=["id"])
|
|
14
19
|
|
|
15
20
|
@patch("otrs_somconnexio.otrs_models.provision_ticket.Ticket")
|
|
16
21
|
def test_build_ticket(self, MockTicket):
|
|
17
|
-
service_data =
|
|
18
|
-
service_data.
|
|
19
|
-
customer_data = Mock(spec=["id"])
|
|
22
|
+
self.service_data.landline = False
|
|
23
|
+
self.service_data.mobile_phone_number = False
|
|
20
24
|
|
|
21
25
|
expected_ticket_arguments = {
|
|
22
|
-
"Title": "
|
|
23
|
-
service_data.order_id
|
|
24
|
-
),
|
|
26
|
+
"Title": "Provisió centraleta virtual (CV)",
|
|
25
27
|
"Type": SwitchboardTicketConfiguration.type,
|
|
26
28
|
"QueueID": SwitchboardTicketConfiguration.queue_id,
|
|
27
29
|
"State": SwitchboardTicketConfiguration.state,
|
|
28
30
|
"SLA": "No pendent resposta",
|
|
29
31
|
"Service": "Centraleta Virtual",
|
|
30
32
|
"Priority": SwitchboardTicketConfiguration.priority,
|
|
31
|
-
"CustomerUser": customer_data.id,
|
|
32
|
-
"CustomerID": customer_data.id,
|
|
33
|
+
"CustomerUser": self.customer_data.id,
|
|
34
|
+
"CustomerID": self.customer_data.id,
|
|
33
35
|
"Responsible": self.responsible_data.email,
|
|
34
36
|
}
|
|
35
37
|
|
|
36
38
|
SwitchboardTicket(
|
|
37
|
-
service_data, customer_data, self.responsible_data
|
|
39
|
+
self.service_data, self.customer_data, self.responsible_data
|
|
38
40
|
)._build_ticket()
|
|
39
41
|
MockTicket.assert_called_with(expected_ticket_arguments)
|
|
40
42
|
|
|
43
|
+
def test_title_with_landline(self):
|
|
44
|
+
self.service_data.landline = "999999999"
|
|
45
|
+
ticket = SwitchboardTicket(
|
|
46
|
+
self.service_data, self.customer_data, self.responsible_data
|
|
47
|
+
)
|
|
48
|
+
self.assertEqual(ticket._ticket_title(), "Alta número de fix (CV)")
|
|
49
|
+
|
|
50
|
+
def test_title_with_mobile_phone_number(self):
|
|
51
|
+
self.service_data.landline = None
|
|
52
|
+
self.service_data.mobile_phone_number = "699999999"
|
|
53
|
+
ticket = SwitchboardTicket(
|
|
54
|
+
self.service_data, self.customer_data, self.responsible_data
|
|
55
|
+
)
|
|
56
|
+
self.assertEqual(ticket._ticket_title(), "Alta mòbil agent (CV)")
|
|
57
|
+
|
|
41
58
|
@patch("otrs_somconnexio.otrs_models.provision_ticket.ProvisionArticle")
|
|
42
59
|
def test_build_article(self, MockProvisionArticle):
|
|
43
|
-
service_data = Mock(spec=["order_id", "technology"])
|
|
44
|
-
service_data.order_id = 123
|
|
45
|
-
customer_data = Mock(spec=["order_id"])
|
|
46
|
-
|
|
47
60
|
mock_article = MockProvisionArticle.return_value
|
|
48
61
|
|
|
49
|
-
SwitchboardTicket(
|
|
50
|
-
service_data, customer_data, self.responsible_data
|
|
51
|
-
)
|
|
62
|
+
ticket = SwitchboardTicket(
|
|
63
|
+
self.service_data, self.customer_data, self.responsible_data
|
|
64
|
+
)
|
|
65
|
+
ticket._build_article()
|
|
66
|
+
|
|
52
67
|
MockProvisionArticle.assert_called_with(
|
|
53
|
-
|
|
54
|
-
service_data.
|
|
55
|
-
"switchboard",
|
|
68
|
+
ticket._ticket_title(),
|
|
69
|
+
self.service_data.notes,
|
|
56
70
|
)
|
|
57
71
|
mock_article.call.assert_called_once()
|
|
58
72
|
|
|
59
73
|
@patch("otrs_somconnexio.otrs_models.switchboard_ticket.SwitchboardDynamicFields")
|
|
60
74
|
def test_build_dynamic_fields(self, MockSwitchboardDynamicFields):
|
|
61
|
-
service_data = Mock()
|
|
62
|
-
customer_data = Mock()
|
|
63
75
|
mock_dyn_fields = MockSwitchboardDynamicFields.return_value
|
|
64
76
|
|
|
65
77
|
SwitchboardTicket(
|
|
66
|
-
service_data, customer_data, self.responsible_data
|
|
78
|
+
self.service_data, self.customer_data, self.responsible_data
|
|
67
79
|
)._build_dynamic_fields()
|
|
68
80
|
MockSwitchboardDynamicFields.assert_called_with(
|
|
69
|
-
service_data,
|
|
70
|
-
customer_data,
|
|
81
|
+
self.service_data,
|
|
82
|
+
self.customer_data,
|
|
71
83
|
SwitchboardTicketConfiguration.process_id,
|
|
72
84
|
SwitchboardTicketConfiguration.activity_id,
|
|
73
85
|
)
|
|
File without changes
|
|
File without changes
|