Beispiel #1
0
def add_campaign(name,
                 description,
                 aliases,
                 analyst,
                 bucket_list=None,
                 ticket=None,
                 source=None,
                 id=None):
    """
    Add a Campaign.

    :param name: The name of the new Campaign.
    :type name: str
    :param description: Description of the new Campaign.
    :type description: str
    :param aliases: Aliases for the new Campaign.
    :type aliases: str (comma separated) or list.
    :param analyst: The user adding the Campaign.
    :type analyst: str
    :param bucket_list: Buckets to add to this Campaign.
    :type bucket_list: str (comma separated) or list.
    :param ticket: Ticket(s) to add to this Campaign.
    :type ticket: str (comma separated) or list.
    :returns: dict with key 'success' (boolean) and 'message' (str).
    """

    # Verify the Campaign does not exist.
    campaign = Campaign.objects(name=name).first()
    if campaign:
        if campaign.check_message_received(id):
            return {'success': False, 'message': 'dup'}

        return {
            'success': False,
            'message': ['Campaign already exists.'],
            'id': str(campaign.id)
        }

    # Create new campaign.
    campaign = Campaign(name=name)
    campaign.edit_description(description)

    if bucket_list:
        campaign.add_bucket_list(bucket_list, analyst)
    if ticket:
        campaign.add_ticket(ticket, analyst)

    if source:
        source = create_embedded_source(name=source, analyst=analyst)
    else:
        source = create_embedded_source(name=get_user_organization(analyst),
                                        analyst=analyst)

    campaign.source = [source]

    # Adjust aliases.
    if isinstance(aliases, basestring):
        alias_list = aliases.split(',')
        final_aliases = [a.strip() for a in alias_list]
    elif isinstance(aliases, list):
        final_aliases = [a.strip() for a in aliases]
    else:
        final_aliases = []
    campaign.add_alias(final_aliases)

    try:
        campaign.save(username=analyst)
        campaign.reload()
        return {
            'success': True,
            'message': 'Campaign created successfully!',
            'id': str(campaign.id)
        }
    except ValidationError, e:
        return {'success': False, 'message': "Invalid value: %s" % e}