66import stix
77from stix .utils import deprecated
88from stix .common import Activity , Confidence , Statement , VocabString
9+ from stix .common .statement import StatementField
910from stix .common .related import (GenericRelationshipList , RelatedCampaign ,
1011 RelatedIncident , RelatedIndicator , RelatedPackageRefs , RelatedThreatActor ,
1112 RelatedTTP )
@@ -103,7 +104,7 @@ class Campaign(stix.BaseCoreComponent):
103104 confidence = fields .TypedField ("Confidence" , Confidence )
104105 # references = fields.TypedField("Reference", multiple=True)
105106 status = VocabField ("Status" , CampaignStatus )
106- intended_effects = fields . TypedField ("Intended_Effect" , Statement , multiple = True , key_name = "intended_effects" )
107+ intended_effects = StatementField ("Intended_Effect" , Statement , vocab_type = vocabs . IntendedEffect , multiple = True , key_name = "intended_effects" )
107108 names = fields .TypedField ("Names" , Names )
108109 related_incidents = fields .TypedField ("Related_Incidents" , RelatedIncidents )
109110 related_indicators = fields .TypedField ("Related_Indicators" , RelatedIndicators )
@@ -157,7 +158,6 @@ def description(self):
157158
158159 @description .setter
159160 def description (self , value ):
160- from stix .common .structured_text import StructuredTextList
161161 self .descriptions = StructuredTextList (value )
162162
163163 def add_description (self , description ):
@@ -167,128 +167,3 @@ def add_description(self, description):
167167
168168 """
169169 self .descriptions .add (description )
170-
171- #@property
172- #def status(self):
173- # """The status of the Campaign. This is a :class:`VocabString` field.
174-
175- # If set to a string, an attempt will be made to convert it to a
176- # :class:`.CampaignStatus` object.
177-
178- # """
179- # return self._status
180-
181- #@status.setter
182- #def status(self, value):
183- # self._set_vocab(vocabs.CampaignStatus, status=value)
184-
185-
186-
187- """ def to_obj(self, return_obj=None, ns_info=None):
188- if not return_obj:
189- return_obj = self._binding_class()
190-
191- super(Campaign, self).to_obj(return_obj=return_obj, ns_info=ns_info)
192-
193- if self.names:
194- return_obj.Names = self.names.to_obj(ns_info=ns_info)
195- if self.intended_effects:
196- return_obj.Intended_Effect = self.intended_effects.to_obj(ns_info=ns_info)
197- if self.status:
198- return_obj.Status = self.status.to_obj(ns_info=ns_info)
199- if self.related_ttps:
200- return_obj.Related_TTPs = self.related_ttps.to_obj(ns_info=ns_info)
201- if self.related_incidents:
202- return_obj.Related_Incidents = self.related_incidents.to_obj(ns_info=ns_info)
203- if self.related_indicators:
204- return_obj.Related_Indicators = self.related_indicators.to_obj(ns_info=ns_info)
205- if self.attribution:
206- return_obj.Attribution = self.attribution.to_obj(ns_info=ns_info)
207- if self.associated_campaigns:
208- return_obj.Associated_Campaigns = self.associated_campaigns.to_obj(ns_info=ns_info)
209- if self.confidence:
210- return_obj.Confidence = self.confidence.to_obj(ns_info=ns_info)
211- if self.activity:
212- return_obj.Activity = self.activity.to_obj(ns_info=ns_info)
213- if self.related_packages:
214- return_obj.Related_Packages = self.related_packages.to_obj(ns_info=ns_info)
215-
216- return return_obj
217-
218- @classmethod
219- def from_obj(cls, obj, return_obj=None):
220- if not obj:
221- return None
222-
223- if not return_obj:
224- return_obj = cls()
225-
226- super(Campaign, cls).from_obj(obj, return_obj=return_obj)
227-
228- if isinstance(obj, cls._binding_class):
229- return_obj.names = Names.from_obj(obj.Names)
230- return_obj.intended_effects = \
231- _IntendedEffects.from_obj(obj.Intended_Effect)
232- return_obj.status = VocabString.from_obj(obj.Status)
233- return_obj.related_ttps = RelatedTTPs.from_obj(obj.Related_TTPs)
234- return_obj.related_incidents = \
235- RelatedIncidents.from_obj(obj.Related_Incidents)
236- return_obj.related_indicators = \
237- RelatedIndicators.from_obj(obj.Related_Indicators)
238- return_obj.attribution = _AttributionList.from_obj(obj.Attribution)
239- return_obj.associated_campaigns = \
240- AssociatedCampaigns.from_obj(obj.Associated_Campaigns)
241- return_obj.confidence = Confidence.from_obj(obj.Confidence)
242- return_obj.activity = _Activities.from_obj(obj.Activity)
243- return_obj.related_packages = \
244- RelatedPackageRefs.from_obj(obj.Related_Packages)
245-
246- return return_obj
247-
248- def to_dict(self):
249- return super(Campaign, self).to_dict()
250-
251- @classmethod
252- def from_dict(cls, dict_repr, return_obj=None):
253- if not dict_repr:
254- return None
255-
256- if not return_obj:
257- return_obj = cls()
258-
259- super(Campaign, cls).from_dict(dict_repr, return_obj=return_obj)
260-
261- get = dict_repr.get # PEP 8 line lengths
262- return_obj.names = Names.from_dict(get('names'))
263- return_obj.intended_effects = \
264- _IntendedEffects.from_dict(get('intended_effects'))
265- return_obj.status = VocabString.from_dict(get('status'))
266- return_obj.related_ttps = \
267- RelatedTTPs.from_dict(get('related_ttps'))
268- return_obj.related_incidents = \
269- RelatedIncidents.from_dict(get('related_incidents'))
270- return_obj.related_indicators = \
271- RelatedIndicators.from_dict(get('related_indicators'))
272- return_obj.attribution = _AttributionList.from_list(get('attribution'))
273- return_obj.associated_campaigns = \
274- AssociatedCampaigns.from_dict(get('associated_campaigns'))
275- return_obj.confidence = \
276- Confidence.from_dict(get('confidence'))
277- return_obj.activity = _Activities.from_dict(get('activity'))
278- return_obj.related_packages = \
279- RelatedPackageRefs.from_dict(get('related_packages'))
280-
281- return return_obj
282- """
283-
284- # Not Actual STIX Types!
285- #class _Activities(stix.TypedList):
286- # _contained_type = Activity
287-
288-
289- class _IntendedEffects (stix .TypedList ):
290- _contained_type = Statement
291-
292- def _fix_value (self , value ):
293- intended_effect = vocabs .IntendedEffect (value )
294- return Statement (value = intended_effect )
0 commit comments