Example #1
0
File: create.py Project: emjemj/ni
def new_port(request, **kwargs):
    if request.POST:
        form = forms.NewPortForm(request.POST)
        if form.is_valid():
            nh = helpers.form_to_generic_node_handle(request, form, 'port',
                                                     'Physical')
            helpers.form_update_node(request.user, nh.handle_id, form)
            if kwargs.get('parent_id',
                          None) or form.cleaned_data['relationship_parent']:
                parent_id = kwargs.get('parent_id', None)
                if not parent_id:
                    parent_id = form.cleaned_data['relationship_parent']
                try:
                    parent_nh = NodeHandle.objects.get(pk=parent_id)
                    helpers.set_has(request.user, parent_nh.get_node(),
                                    nh.handle_id)
                except NoRelationshipPossible:
                    nh.delete()
                    form = forms.NewPortForm(request.POST)
                    form.add_error('parent', 'Parent type can not have ports.')
                    return render(request, 'noclook/create/create_port.html',
                                  {'form': form})
            return redirect(nh.get_absolute_url())
    else:
        form = forms.NewPortForm()
    return render(request, 'noclook/create/create_port.html', {'form': form})
Example #2
0
def edit_port(request, handle_id):
    nh, port = helpers.get_nh_node(handle_id)
    parent = port.get_parent()
    connected_to = port.get_connected_to()
    parent_categories = ['external-equipment',
                         'firewall',
                         'host',
                         'odf',
                         'optical-node',
                         'router',
                         'switch']
    connections_categories = Dropdown.get('cable_types').as_values(False)
    if request.POST:
        form = forms.EditPortForm(request.POST)
        if form.is_valid():
            # Generic node update
            helpers.form_update_node(request.user, port.handle_id, form)
            # Port specific updates
            if form.cleaned_data['relationship_parent']:
                parent_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_parent'])
                helpers.set_has(request.user, parent_nh.get_node(), port.handle_id)
            if form.cleaned_data['relationship_connected_to']:
                cable_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_connected_to'])
                helpers.set_connected_to(request.user, cable_nh.get_node(), port.handle_id)
            if 'saveanddone' in request.POST:
                return redirect(nh.get_absolute_url())
            else:
                return redirect('%sedit' % nh.get_absolute_url())
    else:
        form = forms.EditPortForm(port.data)
    return render(request, 'noclook/edit/edit_port.html',
                  {'node_handle': nh, 'form': form, 'node': port, 'parent': parent,
                      'connected_to': connected_to, 'parent_categories': parent_categories, 'connections_categories': connections_categories})
Example #3
0
File: create.py Project: emjemj/ni
def new_optical_node(request, slug=None):
    form = forms.OpticalNodeForm(request.POST or None)
    bulk_ports = forms.BulkPortsForm(request.POST or None)

    if request.POST and form.is_valid() and bulk_ports.is_valid():
        try:
            name = form.cleaned_data['name']
            nh = helpers.create_unique_node_handle(request.user, name,
                                                   'optical-node', 'Physical')
            helpers.form_update_node(request.user, nh.handle_id, form)
            node = nh.get_node()
            user = request.user
            if form.cleaned_data['relationship_location']:
                location = NodeHandle.objects.get(
                    pk=form.cleaned_data['relationship_location'])
                helpers.set_location(user, node, location.handle_id)

            # create ports if needed
            if not bulk_ports.cleaned_data['no_ports']:
                data = bulk_ports.cleaned_data
                helpers.bulk_create_ports(nh.get_node(), request.user, **data)
            return redirect(nh.get_absolute_url())
        except UniqueNodeError:
            form.add_error('name',
                           'An Optical Node with that name already exists.')
    return render(request, 'noclook/create/create_optical_node.html', {
        'form': form,
        'bulk_ports': bulk_ports
    })
Example #4
0
File: create.py Project: emjemj/ni
def new_switch(request, **kwargs):
    if request.POST:
        form = forms.NewSwitchForm(request.POST)
        if form.is_valid():
            try:
                nh = helpers.form_to_unique_node_handle(
                    request, form, 'switch', 'Physical')
            except UniqueNodeError:
                form = forms.NewSwitchForm(request.POST)
                form.add_error('name',
                               'A Switch with that name already exists.')
                return render(request, 'noclook/create/create_switch.html',
                              {'form': form})
            helpers.form_update_node(request.user, nh.handle_id, form)
            node = nh.get_node()
            if form.cleaned_data['relationship_provider']:
                provider_nh = NodeHandle.objects.get(
                    pk=form.cleaned_data['relationship_provider'])
                helpers.set_provider(request.user, node, provider_nh.handle_id)
            if form.cleaned_data['switch_type']:
                switch_type = SwitchType.objects.get(
                    pk=form.cleaned_data['switch_type'])
                helpers.dict_update_node(request.user, nh.handle_id,
                                         {"model": switch_type.name})
                if switch_type.ports:
                    for port in switch_type.ports.split(","):
                        helpers.create_port(node, port.strip(), request.user)

            return redirect(nh.get_absolute_url())
    else:
        name = kwargs.get('name', None)
        initial = {'name': name}
        form = forms.NewSwitchForm(initial=initial)
    return render(request, 'noclook/create/create_switch.html', {'form': form})
Example #5
0
def edit_optical_node(request, handle_id):
    # Get needed data from node
    nh, optical_node = helpers.get_nh_node(handle_id)
    location = optical_node.get_location()
    ports = optical_node.get_ports()
    if request.POST:
        form = forms.EditOpticalNodeForm(request.POST)
        if form.is_valid():
            # Generic node update
            helpers.form_update_node(request.user, optical_node.handle_id, form)
            # Optical Node specific updates
            _handle_location(request.user,
                             optical_node,
                             form.cleaned_data['relationship_location'])
            _handle_ports(optical_node,
                          form.cleaned_data['relationship_ports'],
                          request.user)
            if 'saveanddone' in request.POST:
                return redirect(nh.get_absolute_url())
            else:
                return redirect('%sedit' % nh.get_absolute_url())
    else:
        form = forms.EditOpticalNodeForm(optical_node.data)
    return render(request, 'noclook/edit/edit_optical_node.html',
                  {'node_handle': nh, 'node': optical_node, 'form': form, 'location': location,
                   'ports': ports})
Example #6
0
def edit_optical_path(request, handle_id):
    # Get needed data from node
    nh, path = helpers.get_nh_node(handle_id)
    relations = path.get_relations()
    depends_on = path.get_dependencies()
    dependency_categories = 'odf,optical-link,optical-multiplex-section,optical-node,router,switch,optical-path'
    if request.POST:
        form = forms.EditOpticalPathForm(request.POST)
        if form.is_valid():
            # Generic node update
            helpers.form_update_node(request.user, path.handle_id, form)
            # Optical Path node updates
            if form.cleaned_data['relationship_provider']:
                owner_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_provider'])
                helpers.set_provider(request.user, path, owner_nh.handle_id)
            if form.cleaned_data['relationship_depends_on']:
                depends_on_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_depends_on'])
                helpers.set_depends_on(request.user, path, depends_on_nh.handle_id)
            if 'saveanddone' in request.POST:
                return redirect(nh.get_absolute_url())
            else:
                return redirect('%sedit' % nh.get_absolute_url())
    else:
        form = forms.EditOpticalPathForm(path.data)
    return render(request, 'noclook/edit/edit_optical_path.html',
                  {'node_handle': nh, 'form': form, 'node': path, 'relations': relations,
                   'depends_on': depends_on, 'dependency_categories': dependency_categories})
Example #7
0
def edit_external_equipment(request, handle_id):
    # Get needed data from node
    nh, external_equipment = helpers.get_nh_node(handle_id)
    relations = external_equipment.get_relations()
    location = external_equipment.get_location()
    ports = external_equipment.get_ports()
    if request.POST:
        form = forms.EditExternalEquipmentForm(request.POST)
        if form.is_valid():
            # Generic node update
            helpers.form_update_node(request.user, external_equipment.handle_id, form)
            # External Equipment specific updates
            if form.cleaned_data['relationship_owner']:
                owner_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_owner'])
                helpers.set_owner(request.user, external_equipment, owner_nh.handle_id)
            _handle_location(request.user,
                             external_equipment,
                             form.cleaned_data['relationship_location'])
            _handle_ports(external_equipment,
                          form.cleaned_data['relationship_ports'],
                          request.user)
            if 'saveanddone' in request.POST:
                return redirect(nh.get_absolute_url())
            else:
                return redirect('%sedit' % nh.get_absolute_url())
    else:
        form = forms.EditExternalEquipmentForm(external_equipment.data)
    return render(request, 'noclook/edit/edit_external_equipment.html',
                  {'node_handle': nh, 'node': external_equipment, 'form': form, 'relations': relations,
                   'location': location, 'ports': ports})
Example #8
0
def new_organization(request, **kwargs):
    if request.POST:
        form = forms.NewOrganizationForm(request.POST)
        if form.is_valid():
            try:
                nh = helpers.form_to_unique_node_handle(
                    request, form, 'organization', 'Relation')
            except UniqueNodeError:
                form.add_error(
                    'name', 'An Organization with that name already exists.')
                return render(request,
                              'noclook/create/create_organization.html',
                              {'form': form})

            # use property keys to avoid inserting contacts as a string property of the node
            property_keys = [
                'name',
                'description',
                'phone',
                'website',
                'organization_id',
                'type',
                'incident_management_info',
            ]
            helpers.form_update_node(request.user, nh.handle_id, form,
                                     property_keys)

            return redirect(nh.get_absolute_url())
    else:
        form = forms.NewOrganizationForm()
    return render(request, 'noclook/create/create_organization.html',
                  {'form': form})
Example #9
0
def edit_cable(request, handle_id):
    # Get needed data from node
    nh, cable = helpers.get_nh_node(handle_id)
    connections = cable.get_connected_equipment()
    relations = cable.get_relations()
    if request.POST:
        form = forms.EditCableForm(request.POST)
        if form.is_valid():
            # Generic node update
            helpers.form_update_node(request.user, cable.handle_id, form)
            if form.cleaned_data['relationship_end_a']:
                end_a_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_end_a'])
                helpers.set_connected_to(request.user, cable, end_a_nh.handle_id)
            if form.cleaned_data['relationship_end_b']:
                end_b_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_end_b'])
                helpers.set_connected_to(request.user, cable, end_b_nh.handle_id)
            if form.cleaned_data['relationship_provider']:
                owner_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_provider'])
                helpers.set_provider(request.user, cable, owner_nh.handle_id)
            if 'saveanddone' in request.POST:
                return redirect(nh.get_absolute_url())
            else:
                return redirect('%sedit' % nh.get_absolute_url())
    else:
        form = forms.EditCableForm(cable.data)
    return render(request, 'noclook/edit/edit_cable.html',
                  {'node_handle': nh, 'form': form, 'node': cable, 'connections': connections,
                   'relations': relations})
Example #10
0
def edit_rack(request, handle_id):
    # Get needed data from node
    nh, rack = helpers.get_nh_node(handle_id)
    parent = rack.get_parent()
    located_in = rack.get_located_in()
    located_in_categories = ['host', 'odf', 'optical-node', 'router']
    if request.POST:
        form = forms.EditRackForm(request.POST)
        if form.is_valid():
            # Generic node update
            helpers.form_update_node(request.user, rack.handle_id, form)
            # Rack specific updates
            if form.cleaned_data['relationship_parent']:
                parent_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_parent'])
                helpers.set_has(request.user, parent_nh.get_node(), rack.handle_id)
            if form.cleaned_data['relationship_located_in']:
                equipment = NodeHandle.objects.get(pk=form.cleaned_data['relationship_located_in'])
                helpers.set_location(request.user, equipment.get_node(), rack.handle_id)
            if 'saveanddone' in request.POST:
                return redirect(nh.get_absolute_url())
            else:
                return redirect('%sedit' % nh.get_absolute_url())
    else:
        form = forms.EditRackForm(rack.data)
    return render(request, 'noclook/edit/edit_rack.html',
                  {'node_handle': nh, 'form': form, 'parent': parent, 'node': rack,
                      'located_in': located_in, 'parent_categories': 'site', 'located_in_categories': located_in_categories})
Example #11
0
def edit_router(request, handle_id):
    # Get needed data from node
    nh, router = helpers.get_nh_node(handle_id)
    location = router.get_location()
    if request.POST:
        form = forms.EditRouterForm(request.POST)
        ports_form = forms.BulkPortsForm(request.POST)
        if form.is_valid() and ports_form.is_valid():
            # Generic node update
            helpers.form_update_node(request.user, router.handle_id, form)
            # Router specific updates
            _handle_location(request.user,
                             router,
                             form.cleaned_data['relationship_location'])
            _handle_ports(router,
                          form.cleaned_data['relationship_ports'],
                          request.user)
            if not ports_form.cleaned_data['no_ports']:
                data = ports_form.cleaned_data
                helpers.bulk_create_ports(nh.get_node(), request.user, **data)
            if 'saveanddone' in request.POST:
                return redirect(nh.get_absolute_url())
            else:
                return redirect('%sedit' % nh.get_absolute_url())
    else:
        form = forms.EditRouterForm(router.data)
        ports_form = forms.BulkPortsForm({'port_type': 'LC', 'offset': 1, 'num_ports': '0'})
        return render(request, 'noclook/edit/edit_router.html',
                {'node_handle': nh, 'node': router, 'form': form, 'location': location, 'ports_form': ports_form})
Example #12
0
File: create.py Project: emjemj/ni
def new_optical_multiplex_section(request, **kwargs):
    if request.POST:
        form = forms.NewOpticalMultiplexSectionForm(request.POST)
        if form.is_valid():
            try:
                nh = helpers.form_to_unique_node_handle(
                    request, form, 'optical-multiplex-section', 'Logical')
            except UniqueNodeError:
                form = forms.NewOpticalMultiplexSectionForm(request.POST)
                form.add_error(
                    'name',
                    'An Optical Multiplex Section with that name already exists.'
                )
                return render(
                    request,
                    'noclook/create/create_optical_multiplex_section.html',
                    {'form': form})
            helpers.form_update_node(request.user, nh.handle_id, form)
            if form.cleaned_data['relationship_provider']:
                node = nh.get_node()
                provider_nh = NodeHandle.objects.get(
                    pk=form.cleaned_data['relationship_provider'])
                helpers.set_provider(request.user, node, provider_nh.handle_id)
            return redirect(nh.get_absolute_url())
    else:
        form = forms.NewOpticalMultiplexSectionForm()
    return render(request,
                  'noclook/create/create_optical_multiplex_section.html',
                  {'form': form})
Example #13
0
File: create.py Project: emjemj/ni
def new_patch_panel(request, **kwargs):
    if request.POST:
        form = forms.NewPatchPannelForm(request.POST)
        ports_form = forms.BulkPortsForm(request.POST)
        if form.is_valid() and ports_form.is_valid():
            nh = helpers.form_to_generic_node_handle(request, form,
                                                     'patch-panel', 'Physical')
            helpers.form_update_node(request.user, nh.handle_id, form)
            data = form.cleaned_data
            node = nh.get_node()
            if data['relationship_location']:
                location = NodeHandle.objects.get(
                    pk=data['relationship_location'])
                helpers.set_location(request.user, node, location.handle_id)
            if not ports_form.cleaned_data['no_ports']:
                data = ports_form.cleaned_data
                helpers.bulk_create_ports(nh.get_node(), request.user, **data)

            return redirect(nh.get_absolute_url())
    else:
        form = forms.NewPatchPannelForm()
        ports_form = forms.BulkPortsForm({
            'port_type': 'RJ45',
            'offset': 1,
            'num_ports': '0'
        })
    return render(request, 'noclook/create/create_patch_panel.html', {
        'form': form,
        'ports_form': ports_form
    })
Example #14
0
File: create.py Project: emjemj/ni
def new_cable(request, **kwargs):
    cable_types = u', '.join([
        u'"{}"'.format(val) for val in Dropdown.get('cable_types').as_values()
    ])
    if request.POST:
        form = forms.NewCableForm(request.POST)
        if form.is_valid():
            try:
                nh = helpers.form_to_unique_node_handle(
                    request, form, 'cable', 'Physical')
            except UniqueNodeError:
                form = forms.NewCableForm(request.POST)
                form.add_error('name',
                               'A Cable with that name already exists.')
                return render(request, 'noclook/create/create_cable.html',
                              {'form': form})
            helpers.form_update_node(request.user, nh.handle_id, form)
            if form.cleaned_data['relationship_provider']:
                node = nh.get_node()
                provider_nh = NodeHandle.objects.get(
                    pk=form.cleaned_data['relationship_provider'])
                helpers.set_provider(request.user, node, provider_nh.handle_id)
            return redirect(nh.get_absolute_url())
    else:
        name = kwargs.get('name', None)
        initial = {'name': name}
        form = forms.NewCableForm(initial=initial)
    csv_form = forms.CsvForm(['name, cable_type, description'], request.POST
                             or None)
    return render(request, 'noclook/create/create_cable.html', {
        'form': form,
        'csv_form': csv_form,
        'cable_types': cable_types
    })
Example #15
0
File: create.py Project: emjemj/ni
def new_host(request):
    form = forms.NewHostForm(request.POST or None)
    user = request.user

    if request.POST:
        if form.is_valid():
            data = form.cleaned_data
            if data['relationship_owner'] or data['relationship_location']:
                meta_type = 'Physical'
            else:
                meta_type = 'Logical'

            try:
                nh = helpers.form_to_unique_node_handle(
                    request, form, 'host', meta_type)
            except UniqueNodeError:
                form.add_error('name', 'A Host with that name already exists.')
                return render(request, 'noclook/create/create_host.html',
                              {'form': form})
            helpers.form_update_node(user, nh.handle_id, form)
            node = nh.get_node()
            if data['relationship_owner']:
                owner = NodeHandle.objects.get(pk=data['relationship_owner'])
                helpers.set_owner(user, node, owner.handle_id)
            if data['relationship_location']:
                location = NodeHandle.objects.get(
                    pk=data['relationship_location'])
                helpers.set_location(user, node, location.handle_id)
            return redirect(nh.get_absolute_url())
    return render(request, 'noclook/create/create_host.html', {'form': form})
Example #16
0
def edit_optical_link(request, handle_id):
    # Get needed data from node
    nh, link = helpers.get_nh_node(handle_id)
    relations = link.get_relations()
    depends_on = link.get_dependencies()
    if request.POST:
        form = forms.EditOpticalLinkForm(request.POST)
        if form.is_valid():
            if 'type' in form.cleaned_data:
                form.cleaned_data['type'] = form.cleaned_data['type'].name
            # Generic node update
            helpers.form_update_node(request.user, link.handle_id, form)
            # Optical Link node updates
            if form.cleaned_data['relationship_provider']:
                owner_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_provider'])
                helpers.set_provider(request.user, link, owner_nh.handle_id)
            if form.cleaned_data['relationship_end_a']:
                depends_on_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_end_a'])
                helpers.set_depends_on(request.user, link, depends_on_nh.handle_id)
            if form.cleaned_data['relationship_end_b']:
                depends_on_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_end_b'])
                helpers.set_depends_on(request.user, link, depends_on_nh.handle_id)
            if 'saveanddone' in request.POST:
                return redirect(nh.get_absolute_url())
            else:
                return redirect('%sedit' % nh.get_absolute_url())
    else:
        form = forms.EditOpticalLinkForm(link.data)
    return render(request, 'noclook/edit/edit_optical_link.html',
                  {'node_handle': nh, 'form': form, 'node': link, 'relations': relations,
                   'depends_on': depends_on})
Example #17
0
File: create.py Project: emjemj/ni
def _create_cables(request, cables):
    error_cables = []
    for cable in cables:
        try:
            nh = helpers.form_to_unique_node_handle(request, cable, 'cable',
                                                    'Physical')
        except UniqueNodeError:
            cable.add_error('name', 'A cable with this name already exists')
            error_cables.append(cable)
            continue
        helpers.form_update_node(request.user, nh.handle_id, cable)
    return error_cables
Example #18
0
def new_contact(request, **kwargs):
    if request.POST:
        form = forms.NewContactForm(request.POST)
        if form.is_valid():
            nh = helpers.form_to_generic_node_handle(request, form, 'contact',
                                                     'Relation')
            helpers.form_update_node(request.user, nh.handle_id, form)
            return redirect(nh.get_absolute_url())
    else:
        form = forms.NewContactForm()
    return render(request, 'noclook/create/create_contact.html',
                  {'form': form})
Example #19
0
def new_rack(request, **kwargs):
    if request.POST:
        form = forms.NewRackForm(request.POST)
        if form.is_valid():
            nh = helpers.form_to_generic_node_handle(request, form, 'rack', 'Location')
            helpers.form_update_node(request.user, nh.handle_id, form)
            if form.cleaned_data['relationship_location']:
                parent_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_location'])
                helpers.set_has(request.user, parent_nh.get_node(), nh.handle_id)
            return redirect(nh.get_absolute_url())
    else:
        form = forms.NewRackForm()
    return render(request, 'noclook/create/create_rack.html', {'form': form})
Example #20
0
 def obj_update(self, bundle, **kwargs):
     bundle = super(ServiceResource, self).obj_update(bundle, **kwargs)
     node = bundle.obj.get_node()
     data = node.data
     data.update(bundle.data)
     form = forms.EditServiceForm(data)
     if form.is_valid():
         helpers.form_update_node(bundle.request.user, node.handle_id, form)
     else:
         raise_not_acceptable_error([
             "%s is missing or incorrect." % key
             for key in form.errors.keys()
         ])
     return bundle
Example #21
0
def new_site(request, **kwargs):
    if request.POST:
        form = forms.NewSiteForm(request.POST)
        if form.is_valid():
            try:
                nh = helpers.form_to_unique_node_handle(request, form, 'site', 'Location')
            except UniqueNodeError:
                form.add_error('name', 'A Site with that name already exists.')
                return render(request, 'noclook/create/create_site.html', {'form': form})
            helpers.form_update_node(request.user, nh.handle_id, form)
            return redirect(nh.get_absolute_url())
    else:
        form = forms.NewSiteForm()
    return render(request, 'noclook/create/create_site.html', {'form': form})
Example #22
0
def edit_pdu(request, handle_id):
    # Get needed data from node
    nh, pdu = helpers.get_nh_node(handle_id)
    location = pdu.get_location()
    relations = pdu.get_relations()
    depends_on = pdu.get_dependencies()
    host_services = pdu.get_host_services()
    ports = pdu.get_ports()
    dependency_categories = 'service'
    ports_form = forms.BulkPortsForm(request.POST or None)
    if request.POST:
        form = forms.EditPDUForm(request.POST)
        if form.is_valid():
            # Generic node update
            helpers.form_update_node(request.user, pdu.handle_id, form)
            # Host specific updates
            if form.cleaned_data['relationship_user']:
                user_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_user'])
                helpers.set_user(request.user, pdu, user_nh.handle_id)
            if form.cleaned_data['relationship_owner']:
                owner_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_owner'])
                helpers.set_owner(request.user, pdu, owner_nh.handle_id)
            # You can not set location and depends on at the same time
            if form.cleaned_data['relationship_depends_on']:
                depends_on_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_depends_on'])
                helpers.set_depends_on(request.user, pdu, depends_on_nh.handle_id)
            elif form.cleaned_data['relationship_location']:
                _handle_location(request.user,
                                 pdu,
                                 form.cleaned_data['relationship_location'])
            if form.cleaned_data['services_locked'] and form.cleaned_data['services_checked']:
                helpers.remove_rogue_service_marker(request.user, pdu.handle_id)
            if ports_form.is_valid() and not ports_form.cleaned_data['no_ports']:
                data = ports_form.cleaned_data
                helpers.bulk_create_ports(pdu, request.user, **data)
            _handle_ports(pdu,
                          form.cleaned_data['relationship_ports'],
                          request.user)
            if 'saveanddone' in request.POST:
                return redirect(nh.get_absolute_url())
            else:
                return redirect('%sedit' % nh.get_absolute_url())
    else:
        form = forms.EditPDUForm(pdu.data)
    return render(request, 'noclook/edit/edit_pdu.html',
                  {'node_handle': nh, 'node': pdu, 'form': form, 'location': location,
                   'relations': relations, 'depends_on': depends_on, 'ports': ports,
                   'host_services': host_services, 'dependency_categories': dependency_categories,
                   'ports_form': ports_form})
Example #23
0
def edit_host(request, handle_id):
    # Get needed data from node
    nh, host = helpers.get_nh_node(handle_id)
    location = host.get_location()
    relations = host.get_relations()
    depends_on = host.get_dependencies()
    host_services = host.get_host_services()
    ports = host.get_ports()
    dependency_categories = 'service,host'
    if request.POST:
        form = forms.EditHostForm(request.POST)
        if form.is_valid():
            # Generic node update
            helpers.form_update_node(request.user, host.handle_id, form)
            # Host specific updates
            if form.cleaned_data['relationship_user']:
                    user_nh = _nh_safe_get(form.cleaned_data['relationship_user'])
                    if user_nh:
                        helpers.set_user(request.user, host, user_nh.handle_id)
            if form.cleaned_data['relationship_owner']:
                owner_nh = _nh_safe_get(form.cleaned_data['relationship_owner'])
                if owner_nh:
                    helpers.set_owner(request.user, host, owner_nh.handle_id)
            # You can not set location and depends on at the same time
            if form.cleaned_data['relationship_depends_on']:
                depends_on_nh = _nh_safe_get(form.cleaned_data['relationship_depends_on'])
                if depends_on_nh:
                    helpers.set_depends_on(request.user, host, depends_on_nh.handle_id)
            elif form.cleaned_data['relationship_location']:
                _handle_location(request.user,
                                 host,
                                 form.cleaned_data['relationship_location'])
            if form.cleaned_data['services_locked'] and form.cleaned_data['services_checked']:
                helpers.remove_rogue_service_marker(request.user, host.handle_id)
            _handle_ports(host,
                          form.cleaned_data['relationship_ports'],
                          request.user)
            if 'saveanddone' in request.POST:
                return redirect(nh.get_absolute_url())
            else:
                return redirect('%sedit' % nh.get_absolute_url())
    else:
        form = forms.EditHostForm(host.data)
    context = {
        'node_handle': nh, 'node': host, 'form': form, 'location': location,
        'relations': relations, 'depends_on': depends_on, 'ports': ports,
        'host_services': host_services, 'dependency_categories': dependency_categories
    }
    return render(request, 'noclook/edit/edit_host.html', context)
Example #24
0
def edit_end_user(request, handle_id):
    # Get needed data from node
    nh, end_user = helpers.get_nh_node(handle_id)
    if request.POST:
        form = forms.EditEndUserForm(request.POST)
        if form.is_valid():
            # Generic node update
            helpers.form_update_node(request.user, end_user.handle_id, form)
            if 'saveanddone' in request.POST:
                return redirect(nh.get_absolute_url())
            else:
                return redirect('%sedit' % nh.get_absolute_url())
    else:
        form = forms.EditEndUserForm(end_user.data)
    return render(request, 'noclook/edit/edit_end_user.html', {'node_handle': nh, 'form': form, 'node': end_user})
Example #25
0
def new_optical_filter(request, **kwargs):
    form = forms.NewOpticalFilter(request.POST or None)
    ports_form = forms.BulkPortsForm(request.POST or None)

    if request.POST:
        if form.is_valid() and ports_form.is_valid():
            nh = helpers.form_to_generic_node_handle(request, form, 'optical-filter', 'Physical')
            helpers.form_update_node(request.user, nh.handle_id, form)
            if not ports_form.cleaned_data['no_ports']:
                data = ports_form.cleaned_data
                helpers.bulk_create_ports(nh.get_node(), request.user, **data)

            return redirect(nh.get_absolute_url())

    return render(request, 'noclook/create/create_optical_filter.html', {'form': form, 'ports_form': ports_form})
Example #26
0
def new_external_cable(request, **kwargs):
    if request.POST:
        form = common_forms.NewCableForm(request.POST)
        if form.is_valid():
            try:
                nh = helpers.form_to_unique_node_handle(request, form, 'cable', 'Physical')
            except UniqueNodeError:
                form = forms.NewCableForm(request.POST)
                form.add_error('name', 'A Cable with that name already exists.')
                return render(request, 'noclook/create/create_cable.html', {'form': form})
            helpers.form_update_node(request.user, nh.handle_id, form)
            return redirect(nh.get_absolute_url())
    else:
        name = kwargs.get('name', None)
        initial = {'name': name}
        form = common_forms.NewCableForm(initial=initial)
    return render(request, 'noclook/create/create_cable.html', {'form': form})
Example #27
0
def new_external_equipment(request, **kwargs):
    if request.POST:
        form = forms.NewExternalEquipmentForm(request.POST)
        if form.is_valid():
            nh = helpers.form_to_generic_node_handle(request, form, 'external-equipment', 'Physical')
            helpers.form_update_node(request.user, nh.handle_id, form)
            data = form.cleaned_data
            node = nh.get_node()
            if data['relationship_location']:
                location = NodeHandle.objects.get(pk=data['relationship_location'])
                helpers.set_location(request.user, node, location.handle_id)
            if data['relationship_owner']:
                owner = NodeHandle.objects.get(pk=data['relationship_owner'])
                helpers.set_owner(request.user, node, owner.handle_id)
            return redirect(nh.get_absolute_url())
    else:
        form = forms.NewExternalEquipmentForm()
    return render(request, 'noclook/create/create_external_equipment.html', {'form': form})
Example #28
0
def edit_peering_group(request, handle_id):
    # Get needed data from node
    nh, peering_group = helpers.get_nh_node(handle_id)
    depends_on = peering_group.get_dependencies()

    if request.POST:
        form = forms.EditPeeringGroupForm(request.POST)
        if form.is_valid():
            # Generic node update
            helpers.form_update_node(request.user, peering_group.handle_id, form)
            if 'saveanddone' in request.POST:
                return redirect(nh.get_absolute_url())
            else:
                return redirect('%sedit' % nh.get_absolute_url())
    else:
        form = forms.EditPeeringGroupForm(peering_group.data)
    return render(request, 'noclook/edit/edit_peering_group.html',
                  {'node_handle': nh, 'node': peering_group, 'form': form,
                      'depends_on': depends_on})
Example #29
0
def edit_service(request, handle_id):
    # Get needed data from node
    nh, service = helpers.get_nh_node(handle_id)
    relations = service.get_relations()
    depends_on = service.get_dependencies()
    dependency_categories = ['host',
                             'firewall',
                             'odf',
                             'optical-node',
                             'optical-path',
                             'optical-filter',
                             'router',
                             'service',
                             'switch',
                             'external-equipment']
    user_categories = ['customer', 'end-user']
    if request.POST:
        form = forms.EditServiceForm(request.POST)
        if form.is_valid():
            # Generic node update
            helpers.form_update_node(request.user, service.handle_id, form)
            # Service node updates
            if form.cleaned_data['relationship_provider']:
                owner_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_provider'])
                helpers.set_provider(request.user, service, owner_nh.handle_id)
            if form.cleaned_data['relationship_user']:
                user_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_user'])
                helpers.set_user(request.user, service, user_nh.handle_id)
            if form.cleaned_data['relationship_depends_on']:
                depends_on_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_depends_on'])
                helpers.set_depends_on(request.user, service, depends_on_nh.handle_id)
            if 'saveanddone' in request.POST:
                return redirect(nh.get_absolute_url())
            else:
                return redirect('%sedit' % nh.get_absolute_url())
    else:
        form = forms.EditServiceForm(service.data)
    return render(request, 'noclook/edit/edit_service.html',
                  {'node_handle': nh, 'form': form, 'node': service, 'relations': relations,
                   'depends_on': depends_on, 'dependency_categories': dependency_categories,
                   'user_categories': user_categories})
Example #30
0
def edit_site(request, handle_id):
    # Get needed data from node
    nh, site = helpers.get_nh_node(handle_id)
    relations = site.get_relations()
    if request.POST:
        form = forms.EditSiteForm(request.POST)
        if form.is_valid():
            # Generic node update
            helpers.form_update_node(request.user, site.handle_id, form)
            # Set site owner
            if form.cleaned_data['relationship_responsible_for']:
                responsible_nh = NodeHandle.objects.get(pk=form.cleaned_data['relationship_responsible_for'])
                helpers.set_responsible_for(request.user, site, responsible_nh.handle_id)
            if 'saveanddone' in request.POST:
                return redirect(nh.get_absolute_url())
            else:
                return redirect('%sedit' % nh.get_absolute_url())
    else:
        form = forms.EditSiteForm(site.data)
    return render(request, 'noclook/edit/edit_site.html',
                  {'node_handle': nh, 'form': form, 'relations': relations, 'node': site})