Example #1
0
def bulk_add_email_addresses(request):
    """
    Bulk add Email Addresses via a bulk upload form.
    Args:
        request: The Django context which contains information about the
            session and key/value pairs for the bulk add Email Addresses request
    Returns:
        If the request is not a POST and not a Ajax call then:
            Returns a rendered HTML form for a bulk add of IPs
        If the request is a POST and a Ajax call then:
            Returns a response that contains information about the
            status of the bulk uploaded Email Addresses. This may include information
            such as Email Address that failed or successfully added. This may
            also contain helpful status messages about each operation.
    """

    formdict = form_to_dict(EmailAddressForm(request.user, None))

    if request.method == "POST" and request.is_ajax():
        response = process_bulk_add_email_addresses(request, formdict)

        return HttpResponse(json.dumps(response,
                            default=json_handler),
                            content_type="application/json")
    else:
        return render_to_response('bulk_add_default.html', {'formdict': formdict,
                                                            'title': "Bulk Add Email Addressess",
                                                            'table_name': 'email_address',
                                                            'local_validate_columns': [form_consts.EmailAddress.EMAIL_ADDRESS],
                                                            'is_bulk_add_objects': True}, RequestContext(request))
Example #2
0
def add_email_address(request):
    """
    Add an email address to CRIPTs. Should be an AJAX POST.

    :param request: Django request object (Required)
    :type request: :class:`django.http.HttpRequest`
    :returns: :class:`django.http.HttpResponse`
    """
    if request.method == "POST" and request.is_ajax():
        email_address_form = EmailAddressForm(request.user, request.POST)
        if email_address_form.is_valid():
            data = email_address_form.cleaned_data
            result = email_address_add_update(address=data['address'],
                                   description=data['description'],
                                   source=data['source'],
                                   method=data['method'],
                                   reference=data['reference'],
                                   datasets = None,
                                   bucket_list=data[form_consts.Common.BUCKET_LIST_VARIABLE_NAME],
                                   ticket=data[form_consts.Common.TICKET_VARIABLE_NAME],
                                   analyst=request.user.username)
                                   
            if 'message' in result:
                if not isinstance(result['message'], list):
                    result['message'] = [result['message']]
            else:
                result['message'] = []
                message = ('<div>Success! Click here to view the new Email: <a '
                           'href="%s">%s</a></div>'
                           % (reverse('crits.email_addresses.views.email_address_detail',
                                      args=[result['object'].address]),
                              result['object'].address))
                result['message'].insert(0, message)
            return HttpResponse(json.dumps(result,
                                           default=json_handler),
                                content_type="application/json")
        else:
            return HttpResponse(json.dumps({'form': email_address_form.as_table(),
                                            'success': False}),
                                content_type="application/json")
    else:
        return render_to_response("error.html",
                                  {"error": "Expected AJAX POST"},
                                  RequestContext(request))
Example #3
0
def parse_row_to_bound_email_form(request, rowData, cache):
    """
    Parse a row out of mass object email adder into the
    :class:`cripts.email_addresses.forms.EmailForm`.
    :param request: The Django request.
    :type request: :class:`django.http.HttpRequest`
    :param rowData: The data for that row.
    :type rowData: dict
    :param cache: Cached data, typically for performance enhancements
                  during bulk operations.
    :type cache: dict
    :returns: :class:`cripts.email_addresses.forms.EmailForm`.
    """

    address = rowData.get(form_consts.EmailAddress.EMAIL_ADDRESS, "")
    description = rowData.get(form_consts.EmailAddress.DESCRIPTION, "")
    analyst = request.user
    source = rowData.get(form_consts.EmailAddress.SOURCE, "")
    source_method = rowData.get(form_consts.EmailAddress.SOURCE_METHOD, "")
    source_reference = rowData.get(form_consts.EmailAddress.SOURCE_REFERENCE, "")
    bucket_list = rowData.get(form_consts.Common.BUCKET_LIST, "")
    ticket = rowData.get(form_consts.Common.TICKET, "")
    data = {
        'address': address,
        'description': description,
        'analyst': analyst,
        'source': source,
        'source_method': source_method,
        'source_reference': source_reference,
        'bucket_list': bucket_list,
        'ticket': ticket}

    bound_form = cache.get('email_form')

    if bound_form == None:
        bound_form = EmailAddressForm(request.user, None, data)
        bound_form.data = data
        cache['email_form'] = bound_form
    else:
        bound_form.data = data

    bound_form.full_clean()
    return bound_form
Example #4
0
def parse_row_to_bound_email_form(request, rowData, cache):
    """
    Parse a row out of mass object email adder into the
    :class:`cripts.email_addresses.forms.EmailForm`.
    :param request: The Django request.
    :type request: :class:`django.http.HttpRequest`
    :param rowData: The data for that row.
    :type rowData: dict
    :param cache: Cached data, typically for performance enhancements
                  during bulk operations.
    :type cache: dict
    :returns: :class:`cripts.email_addresses.forms.EmailForm`.
    """

    address = rowData.get(form_consts.EmailAddress.EMAIL_ADDRESS, "")
    description = rowData.get(form_consts.EmailAddress.DESCRIPTION, "")
    analyst = request.user
    source = rowData.get(form_consts.EmailAddress.SOURCE, "")
    source_method = rowData.get(form_consts.EmailAddress.SOURCE_METHOD, "")
    source_reference = rowData.get(form_consts.EmailAddress.SOURCE_REFERENCE,
                                   "")
    bucket_list = rowData.get(form_consts.Common.BUCKET_LIST, "")
    ticket = rowData.get(form_consts.Common.TICKET, "")
    data = {
        'address': address,
        'description': description,
        'analyst': analyst,
        'source': source,
        'source_method': source_method,
        'source_reference': source_reference,
        'bucket_list': bucket_list,
        'ticket': ticket
    }

    bound_form = cache.get('email_form')

    if bound_form == None:
        bound_form = EmailAddressForm(request.user, None, data)
        bound_form.data = data
        cache['email_form'] = bound_form
    else:
        bound_form.data = data

    bound_form.full_clean()
    return bound_form