def add_ttp(cid, ttp, analyst): """ Add a TTP to a Campaign. :param cid: ObjectId of the Campaign. :type cid: str :param ttp: The TTP to add. :type ttp: str :param analyst: The user adding the TTP. :type analyst: str :returns: dict with keys: 'success' (boolean), 'campaign' (:class:`crits.campaigns.campaign.Campaign`) if success, 'message' (str) if failed. """ campaign = Campaign.objects(id=cid).first() if campaign: new_ttp = EmbeddedTTP() new_ttp.analyst = analyst new_ttp.ttp = ttp try: campaign.add_ttp(new_ttp) campaign.save(username=analyst) return {'success': True, 'campaign': campaign} except ValidationError, e: return {'success': False, 'message': "Invalid value: %s" % e}
def merge_ttp(id, ttp, analyst, date): campaign = Campaign.objects(id=id).first() if campaign: new_ttp = EmbeddedTTP() new_ttp.analyst = analyst new_ttp.ttp = ttp new_ttp.date = date try: campaign.add_ttp(new_ttp) campaign.save(username=analyst) return {'success': True, 'campaign': campaign} except ValidationError, e: return {'success': False, 'message': "Invalid value: %s" % e}