Skip to content

Commit f10c774

Browse files
committed
fix(api): Ensure ALL required classes for viewset are inherited
ref: #459
1 parent bc85c53 commit f10c774

File tree

1 file changed

+78
-63
lines changed

1 file changed

+78
-63
lines changed

app/core/lib/slash_commands/linked_model.py

+78-63
Original file line numberDiff line numberDiff line change
@@ -77,121 +77,136 @@ def command_linked_model(self, match) -> str:
7777

7878
try:
7979

80-
from core.models.ticket.ticket_linked_items import TicketLinkedItem
80+
model, item_type = self.get_model( model_type )
8181

82-
if model_type == 'cluster':
82+
if not model:
8383

84-
from itim.models.clusters import Cluster
84+
return str(match.string[match.start():match.end()])
8585

86-
model = Cluster
8786

88-
item_type = TicketLinkedItem.Modules.CLUSTER
87+
if str(self._meta.verbose_name).lower() == 'ticket':
8988

90-
elif model_type == 'config_group':
89+
ticket = self
9190

92-
from config_management.models.groups import ConfigGroups
91+
elif str(self._meta.verbose_name).lower() == 'ticket comment':
9392

94-
model = ConfigGroups
93+
ticket = self.ticket
9594

96-
item_type = TicketLinkedItem.Modules.CONFIG_GROUP
9795

98-
elif model_type == 'device':
96+
if model:
9997

100-
from itam.models.device import Device
98+
item = model.objects.get(
99+
pk = model_id
100+
)
101101

102-
model = Device
102+
from core.serializers.ticket_linked_item import TicketLinkedItemModelSerializer
103103

104-
item_type = TicketLinkedItem.Modules.DEVICE
104+
serializer = TicketLinkedItemModelSerializer(
105+
data = {
106+
'organization': ticket.organization,
107+
'ticket': ticket.id,
108+
'item_type': item_type,
109+
'item': item.id
110+
}
111+
)
105112

106-
elif model_type == 'kb':
113+
if serializer.is_valid():
107114

108-
from assistance.models.knowledge_base import KnowledgeBase
115+
serializer.save()
109116

110-
model = KnowledgeBase
117+
return None
111118

112-
item_type = TicketLinkedItem.Modules.KB
119+
return str(match.string[match.start():match.end()])
113120

114-
elif model_type == 'operating_system':
121+
except Exception as e:
115122

116-
from itam.models.operating_system import OperatingSystem
123+
return str(match.string[match.start():match.end()])
117124

118-
model = OperatingSystem
125+
return None
119126

120-
item_type = TicketLinkedItem.Modules.OPERATING_SYSTEM
121127

122-
elif model_type == 'organization':
128+
def get_model(self, model_type) -> tuple():
123129

124-
from access.models import Organization
130+
model = None
125131

126-
model = Organization
132+
item_type = None
127133

128-
item_type = TicketLinkedItem.Modules.ORGANIZATION
134+
from core.models.ticket.ticket_linked_items import TicketLinkedItem
129135

130-
elif model_type == 'service':
136+
if model_type == 'cluster':
131137

132-
from itim.models.services import Service
138+
from itim.models.clusters import Cluster
133139

134-
model = Service
140+
model = Cluster
135141

136-
item_type = TicketLinkedItem.Modules.SERVICE
142+
item_type = TicketLinkedItem.Modules.CLUSTER
137143

138-
elif model_type == 'software':
144+
elif model_type == 'config_group':
139145

140-
from itam.models.software import Software
146+
from config_management.models.groups import ConfigGroups
141147

142-
model = Software
148+
model = ConfigGroups
143149

144-
item_type = TicketLinkedItem.Modules.SOFTWARE
150+
item_type = TicketLinkedItem.Modules.CONFIG_GROUP
145151

146-
elif model_type == 'team':
152+
elif model_type == 'device':
147153

148-
from access.models import Team
154+
from itam.models.device import Device
149155

150-
model = Team
156+
model = Device
151157

152-
item_type = TicketLinkedItem.Modules.TEAM
158+
item_type = TicketLinkedItem.Modules.DEVICE
153159

154-
else:
160+
elif model_type == 'kb':
155161

156-
return str(match.string[match.start():match.end()])
162+
from assistance.models.knowledge_base import KnowledgeBase
157163

164+
model = KnowledgeBase
158165

159-
if str(self._meta.verbose_name).lower() == 'ticket':
166+
item_type = TicketLinkedItem.Modules.KB
160167

161-
ticket = self
168+
elif model_type == 'operating_system':
162169

163-
elif str(self._meta.verbose_name).lower() == 'ticket comment':
170+
from itam.models.operating_system import OperatingSystem
164171

165-
ticket = self.ticket
172+
model = OperatingSystem
166173

174+
item_type = TicketLinkedItem.Modules.OPERATING_SYSTEM
167175

168-
if model:
176+
elif model_type == 'organization':
169177

170-
item = model.objects.get(
171-
pk = model_id
172-
)
178+
from access.models import Organization
173179

174-
from core.serializers.ticket_linked_item import TicketLinkedItemModelSerializer
180+
model = Organization
175181

176-
serializer = TicketLinkedItemModelSerializer(
177-
data = {
178-
'organization': ticket.organization,
179-
'ticket': ticket.id,
180-
'item_type': item_type,
181-
'item': item.id
182-
}
183-
)
182+
item_type = TicketLinkedItem.Modules.ORGANIZATION
184183

185-
if serializer.is_valid():
184+
elif model_type == 'service':
186185

187-
serializer.save()
186+
from itim.models.services import Service
188187

189-
return None
188+
model = Service
190189

191-
return str(match.string[match.start():match.end()])
190+
item_type = TicketLinkedItem.Modules.SERVICE
192191

193-
except Exception as e:
192+
elif model_type == 'software':
194193

195-
return str(match.string[match.start():match.end()])
194+
from itam.models.software import Software
196195

197-
return None
196+
model = Software
197+
198+
item_type = TicketLinkedItem.Modules.SOFTWARE
199+
200+
elif model_type == 'team':
201+
202+
from access.models import Team
203+
204+
model = Team
205+
206+
item_type = TicketLinkedItem.Modules.TEAM
207+
208+
209+
return tuple([
210+
model,
211+
item_type
212+
])

0 commit comments

Comments
 (0)