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))
def bulk_add_object(request): """ Bulk add objects. :param request: The Django request. :type request: :class:`django.http.HttpRequest` :returns: :class:`django.http.HttpResponse` """ formdict = form_to_dict(AddObjectForm(request.user)) if request.method == "POST" and request.is_ajax(): response = parse_bulk_upload( request, parse_row_to_bound_object_form, add_new_handler_object_via_bulk, 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 Objects", 'table_name': 'object'}, RequestContext(request))
def bulk_add_usernames(request): """ Bulk add UserNames via a bulk upload form. Args: request: The Django context which contains information about the session and key/value pairs for the bulk add UserName 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 UserName. This may include information such as UserName that failed or successfully added. This may also contain helpful status messages about each operation. """ formdict = form_to_dict(UserNameForm(request.user, None)) if request.method == "POST" and request.is_ajax(): response = process_bulk_add_usernames(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 UserNames", "table_name": "username", "local_validate_columns": [form_consts.UserName.USERNAME], "is_bulk_add_objects": True, }, RequestContext(request), )
def validate_and_add_new_handler_object(data, rowData, request, errors, row_counter, is_validate_only=False, is_sort_relationships=False, cache={}, obj=None): """ Validate an object and then add it to the database. :param data: The data for the object. :type data: dict :param rowData: Data from the row if using mass object upload. :type rowData: dict :param request: The Django request. :type request: :class:`django.http.HttpRequest` :param errors: List of existing errors to append to. :type errors: list :param row_counter: Which row we are working on (for error tracking). :type row_counter: int :param is_validate_only: Only validate. :type is_validate_only: bool :param cache: Cached data, typically for performance enhancements during bulk operations. :type cache: dict :returns: tuple of (<result>, <errors>, <retVal>) """ result = False retVal = {} bound_form = parse_row_to_bound_object_form(request, rowData, cache) if bound_form.is_valid(): (result, retVal) = add_new_handler_object(data, rowData, request, obj=obj, is_validate_only=is_validate_only, is_sort_relationships=is_sort_relationships) if not result and 'message' in retVal: errors.append("%s #%s - %s" % (form_consts.Common.OBJECTS_DATA, str(row_counter), retVal['message'])) else: formdict = cache.get("object_formdict") if formdict == None: object_form = AddObjectForm(request.user) formdict = form_to_dict(object_form) cache['object_formdict'] = formdict for name, errorMessages in bound_form.errors.items(): entry = get_field_from_label(name, formdict) if entry == None: continue for message in errorMessages: errors.append("%s #%s - %s - %s" % (form_consts.Common.OBJECTS_DATA, str(row_counter), name, message)) result = False return result, errors, retVal
def bulk_add_object(request): """ Bulk add objects. :param request: The Django request. :type request: :class:`django.http.HttpRequest` :returns: :class:`django.http.HttpResponse` """ formdict = form_to_dict(AddObjectForm(request.user)) if request.method == "POST" and request.is_ajax(): response = parse_bulk_upload(request, parse_row_to_bound_object_form, add_new_handler_object_via_bulk, 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 Objects", 'table_name': 'object' }, RequestContext(request))
def validate_and_add_new_handler_object(data, rowData, request, errors, row_counter, is_validate_only=False, is_sort_relationships=False, cache={}, obj=None): """ Validate an object and then add it to the database. :param data: The data for the object. :type data: dict :param rowData: Data from the row if using mass object upload. :type rowData: dict :param request: The Django request. :type request: :class:`django.http.HttpRequest` :param errors: List of existing errors to append to. :type errors: list :param row_counter: Which row we are working on (for error tracking). :type row_counter: int :param is_validate_only: Only validate. :type is_validate_only: bool :param cache: Cached data, typically for performance enhancements during bulk operations. :type cache: dict :returns: tuple of (<result>, <errors>, <retVal>) """ result = False retVal = {} bound_form = parse_row_to_bound_object_form(request, rowData, cache) if bound_form.is_valid(): (result, retVal) = add_new_handler_object( data, rowData, request, obj=obj, is_validate_only=is_validate_only, is_sort_relationships=is_sort_relationships) if not result and 'message' in retVal: errors.append( "%s #%s - %s" % (form_consts.Common.OBJECTS_DATA, str(row_counter), retVal['message'])) else: formdict = cache.get("object_formdict") if formdict == None: object_form = AddObjectForm(request.user) formdict = form_to_dict(object_form) cache['object_formdict'] = formdict for name, errorMessages in bound_form.errors.items(): entry = get_field_from_label(name, formdict) if entry == None: continue for message in errorMessages: errors.append( "%s #%s - %s - %s" % (form_consts.Common.OBJECTS_DATA, str(row_counter), name, message)) result = False return result, errors, retVal
def bulk_add_object_inline(request): """ Bulk add objects inline. :param request: The Django request. :type request: :class:`django.http.HttpRequest` :returns: :class:`django.http.HttpResponse` """ formdict = form_to_dict(AddObjectForm(request.user)) if request.method == "POST" and request.is_ajax(): response = parse_bulk_upload(request, parse_row_to_bound_object_form, add_new_handler_object_via_bulk, formdict) secondary_data_array = response.get('secondary') if secondary_data_array: latest_secondary_data = secondary_data_array[-1] class_type = class_from_id(latest_secondary_data['type'], latest_secondary_data['id']) subscription = { 'type': latest_secondary_data['type'], 'id': latest_secondary_data['id'], 'value': latest_secondary_data['id'] } object_listing_html = render_to_string( 'objects_listing_widget.html', { 'objects': class_type.sort_objects(), 'subscription': subscription }, RequestContext(request)) response['html'] = object_listing_html is_relationship_made = False for secondary_data in secondary_data_array: if secondary_data.get('relationships'): is_relationship_made = True break if is_relationship_made == True: rel_html = render_to_string( 'relationships_listing_widget.html', { 'relationship': subscription, 'relationships': class_type.sort_relationships(request.user, meta=True) }, RequestContext(request)) response['rel_msg'] = rel_html response['rel_made'] = True return HttpResponse(json.dumps(response, default=json_handler), content_type="application/json") else: is_prevent_initial_table = request.GET.get('isPreventInitialTable', False) is_use_item_source = request.GET.get('useItemSource', False) if is_use_item_source == True or is_use_item_source == "true": otype = request.GET.get('otype') oid = request.GET.get('oid') # Get the item with the type and ID from the database obj = class_from_id(otype, oid) if obj: source_field_name = get_source_field_for_class(otype) if source_field_name: # If the item has a source, then use the source value # to set as the default source if hasattr(obj, "source"): source_field = get_field_from_label("source", formdict) earliest_source = None earliest_date = None # Get the earliest source, compared by date for source in obj.source: for source_instance in source.instances: if earliest_source == None or source_instance.date < earliest_date: earliest_date = source_instance.date earliest_source = source if earliest_source: source_field['initial'] = earliest_source.name return render_to_response( 'bulk_add_object_inline.html', { 'formdict': formdict, 'title': "Bulk Add Objects", 'is_prevent_initial_table': is_prevent_initial_table, 'table_name': 'object_inline' }, RequestContext(request))
def bulk_add_object_inline(request): """ Bulk add objects inline. :param request: The Django request. :type request: :class:`django.http.HttpRequest` :returns: :class:`django.http.HttpResponse` """ formdict = form_to_dict(AddObjectForm(request.user)) if request.method == "POST" and request.is_ajax(): response = parse_bulk_upload( request, parse_row_to_bound_object_form, add_new_handler_object_via_bulk, formdict) secondary_data_array = response.get('secondary') if secondary_data_array: latest_secondary_data = secondary_data_array[-1] class_type = class_from_id( latest_secondary_data['type'], latest_secondary_data['id']) subscription = {'type': latest_secondary_data['type'], 'id': latest_secondary_data['id'], 'value': latest_secondary_data['id']} object_listing_html = render_to_string('objects_listing_widget.html', {'objects': class_type.sort_objects(), 'subscription': subscription}, RequestContext(request)) response['html'] = object_listing_html is_relationship_made = False for secondary_data in secondary_data_array: if secondary_data.get('relationships'): is_relationship_made = True break if is_relationship_made == True: rel_html = render_to_string('relationships_listing_widget.html', {'relationship': subscription, 'relationships': class_type.sort_relationships(request.user, meta=True)}, RequestContext(request)) response['rel_msg'] = rel_html response['rel_made'] = True return HttpResponse(json.dumps(response, default=json_handler), content_type="application/json") else: is_prevent_initial_table = request.GET.get('isPreventInitialTable', False) is_use_item_source = request.GET.get('useItemSource', False) if is_use_item_source == True or is_use_item_source == "true": otype = request.GET.get('otype') oid = request.GET.get('oid') # Get the item with the type and ID from the database obj = class_from_id(otype, oid) if obj: source_field_name = get_source_field_for_class(otype) if source_field_name: # If the item has a source, then use the source value # to set as the default source if hasattr(obj, "source"): source_field = get_field_from_label("source", formdict) earliest_source = None earliest_date = None # Get the earliest source, compared by date for source in obj.source: for source_instance in source.instances: if earliest_source == None or source_instance.date < earliest_date: earliest_date = source_instance.date earliest_source = source if earliest_source: source_field['initial'] = earliest_source.name return render_to_response('bulk_add_object_inline.html', {'formdict': formdict, 'title': "Bulk Add Objects", 'is_prevent_initial_table': is_prevent_initial_table, 'table_name': 'object_inline'}, RequestContext(request))