Beispiel #1
0
def edit_switch(request, switch, switchid):
    """ Edition d'un switch. Permet de chambre nombre de ports,
    place dans le stack, interface et machine associée"""

    switch_form = EditSwitchForm(request.POST or None,
                                 instance=switch,
                                 user=request.user)
    interface_form = EditInterfaceForm(request.POST or None,
                                       instance=switch.interface_set.first(),
                                       user=request.user)
    domain_form = DomainForm(request.POST or None,
                             instance=switch.interface_set.first().domain)
    if switch_form.is_valid() and interface_form.is_valid():
        new_switch_obj = switch_form.save(commit=False)
        new_interface_obj = interface_form.save(commit=False)
        new_domain_obj = domain_form.save(commit=False)
        if switch_form.changed_data:
            new_switch_obj.save()
        if interface_form.changed_data:
            new_interface_obj.save()
        if domain_form.changed_data:
            new_domain_obj.save()
        messages.success(request, _("The switch was edited."))
        return redirect(reverse('topologie:index'))
    i_mbf_param = generate_ipv4_mbf_param(interface_form, False)
    return form(
        {
            'id_switch': switchid,
            'topoform': interface_form,
            'machineform': switch_form,
            'domainform': domain_form,
            'i_mbf_param': i_mbf_param,
            'device': 'switch',
        }, 'topologie/topo_more.html', request)
Beispiel #2
0
def create_ports(request, switchid):
    """ Création d'une liste de ports pour un switch."""
    try:
        switch = Switch.objects.get(pk=switchid)
    except Switch.DoesNotExist:
        messages.error(request, _("Nonexistent switch."))
        return redirect(reverse('topologie:index'))

    first_port = getattr(switch.ports.order_by('port').first(), 'port', 1)
    last_port = switch.number + first_port - 1
    port_form = CreatePortsForm(request.POST or None,
                                initial={
                                    'begin': first_port,
                                    'end': last_port
                                })
    if port_form.is_valid():
        begin = port_form.cleaned_data['begin']
        end = port_form.cleaned_data['end']
        try:
            switch.create_ports(begin, end)
            messages.success(request, _("The ports were created."))
        except ValidationError as e:
            messages.error(request, ''.join(e))
        return redirect(
            reverse('topologie:index-port', kwargs={'switchid': switchid}))
    return form({
        'id_switch': switchid,
        'topoform': port_form
    }, 'topologie/switch.html', request)
Beispiel #3
0
def add_module(request):
    """ View used to add a Module object """
    module = EditModuleForm(request.POST or None)
    if module.is_valid():
        module.save()
        messages.success(request, _("The module was created."))
        return redirect(reverse('topologie:index-module'))
    return form({
        'topoform': module,
        'action_name': _("Create")
    }, 'topologie/topo.html', request)
Beispiel #4
0
def new_constructor_switch(request):
    """Nouveau constructeur de switch"""
    constructor_switch = EditConstructorSwitchForm(request.POST or None)
    if constructor_switch.is_valid():
        constructor_switch.save()
        messages.success(request, _("The switch constructor was created."))
        return redirect(reverse('topologie:index-model-switch'))
    return form({
        'topoform': constructor_switch,
        'action_name': _("Create")
    }, 'topologie/topo.html', request)
Beispiel #5
0
def add_module_on(request):
    """Add a module to a switch"""
    module_switch = EditSwitchModuleForm(request.POST or None)
    if module_switch.is_valid():
        module_switch.save()
        messages.success(request, _("The module was added."))
        return redirect(reverse('topologie:index-module'))
    return form({
        'topoform': module_switch,
        'action_name': _("Add")
    }, 'topologie/topo.html', request)
Beispiel #6
0
def edit_stack(request, stack, **_kwargs):
    """Edition d'un stack (nombre de switches, nom...)"""
    stack = StackForm(request.POST or None, instance=stack)
    if stack.is_valid():
        if stack.changed_data:
            stack.save()
        return redirect(reverse('topologie:index-physical-grouping'))
    return form({
        'topoform': stack,
        'action_name': _("Edit")
    }, 'topologie/topo.html', request)
Beispiel #7
0
def new_stack(request):
    """Ajoute un nouveau stack : stackid_min, max, et nombre de switches"""
    stack = StackForm(request.POST or None)
    if stack.is_valid():
        stack.save()
        messages.success(request, _("The stack was created."))
        return redirect(reverse('topologie:index-physical-grouping'))
    return form({
        'topoform': stack,
        'action_name': _("Create")
    }, 'topologie/topo.html', request)
Beispiel #8
0
def new_port_profile(request):
    """Create a new port profile"""
    port_profile = EditPortProfileForm(request.POST or None)
    if port_profile.is_valid():
        port_profile.save()
        messages.success(request, _("The port profile was created."))
        return redirect(reverse('topologie:index-port-profile'))
    return form({
        'topoform': port_profile,
        'action_name': _("Create")
    }, 'topologie/topo.html', request)
Beispiel #9
0
def new_switch_bay(request):
    """Nouvelle baie de switch"""
    switch_bay = EditSwitchBayForm(request.POST or None)
    if switch_bay.is_valid():
        switch_bay.save()
        messages.success(request, _("The switch bay was created."))
        return redirect(reverse('topologie:index-physical-grouping'))
    return form({
        'topoform': switch_bay,
        'action_name': _("Create")
    }, 'topologie/topo.html', request)
Beispiel #10
0
def new_model_switch(request):
    """Nouveau modèle de switch"""
    model_switch = EditModelSwitchForm(request.POST or None)
    if model_switch.is_valid():
        model_switch.save()
        messages.success(request, _("The switch model was created."))
        return redirect(reverse('topologie:index-model-switch'))
    return form({
        'topoform': model_switch,
        'action_name': _("Create")
    }, 'topologie/topo.html', request)
Beispiel #11
0
def edit_switch_bay(request, switch_bay, **_kwargs):
    """ Edition d'une baie de switch"""
    switch_bay = EditSwitchBayForm(request.POST or None, instance=switch_bay)
    if switch_bay.is_valid():
        if switch_bay.changed_data:
            switch_bay.save()
            messages.success(request, _("The switch bay was edited."))
        return redirect(reverse('topologie:index-physical-grouping'))
    return form({
        'topoform': switch_bay,
        'action_name': _("Edit")
    }, 'topologie/topo.html', request)
Beispiel #12
0
def edit_module(request, module_instance, **_kwargs):
    """ View used to edit a Module object """
    module = EditModuleForm(request.POST or None, instance=module_instance)
    if module.is_valid():
        if module.changed_data:
            module.save()
            messages.success(request, _("The module was edited."))
        return redirect(reverse('topologie:index-module'))
    return form({
        'topoform': module,
        'action_name': _("Edit")
    }, 'topologie/topo.html', request)
Beispiel #13
0
def del_stack(request, stack, **_kwargs):
    """Supprime un stack"""
    if request.method == "POST":
        try:
            stack.delete()
            messages.success(request, _("The stack was deleted."))
        except ProtectedError:
            messages.error(
                request,
                (_("The stack %s is used by another object, impossible to"
                   " deleted it.") % stack))
        return redirect(reverse('topologie:index-physical-grouping'))
    return form({'objet': stack}, 'topologie/delete.html', request)
Beispiel #14
0
def edit_port_profile(request, port_profile, **_kwargs):
    """Edit a port profile"""
    port_profile = EditPortProfileForm(request.POST or None,
                                       instance=port_profile)
    if port_profile.is_valid():
        if port_profile.changed_data:
            port_profile.save()
            messages.success(request, _("The port profile was edited."))
        return redirect(reverse('topologie:index-port-profile'))
    return form({
        'topoform': port_profile,
        'action_name': _("Edit")
    }, 'topologie/topo.html', request)
Beispiel #15
0
def edit_constructor_switch(request, constructor_switch, **_kwargs):
    """ Edition d'un constructeur de switch"""

    constructor_switch = EditConstructorSwitchForm(request.POST or None,
                                                   instance=constructor_switch)
    if constructor_switch.is_valid():
        if constructor_switch.changed_data:
            constructor_switch.save()
            messages.success(request, _("The switch constructor was edited."))
        return redirect(reverse('topologie:index-model-switch'))
    return form({
        'topoform': constructor_switch,
        'action_name': _("Edit")
    }, 'topologie/topo.html', request)
Beispiel #16
0
def del_port_profile(request, port_profile, **_kwargs):
    """Delete a port profile"""
    if request.method == 'POST':
        try:
            port_profile.delete()
            messages.success(request, _("The port profile was deleted."))
        except ProtectedError:
            messages.success(request,
                             _("Impossible to delete the port profile."))
        return redirect(reverse('topologie:index-port-profile'))
    return form({
        'objet': port_profile,
        'objet_name': _("Port profile")
    }, 'topologie/delete.html', request)
Beispiel #17
0
def edit_model_switch(request, model_switch, **_kwargs):
    """ Edition d'un modèle de switch"""

    model_switch = EditModelSwitchForm(request.POST or None,
                                       instance=model_switch)
    if model_switch.is_valid():
        if model_switch.changed_data:
            model_switch.save()
            messages.success(request, _("The switch model was edited."))
        return redirect(reverse('topologie:index-model-switch'))
    return form({
        'topoform': model_switch,
        'action_name': _("Edit")
    }, 'topologie/topo.html', request)
Beispiel #18
0
def del_model_switch(request, model_switch, **_kwargs):
    """ Suppression d'un modèle de switch"""
    if request.method == "POST":
        try:
            model_switch.delete()
            messages.success(request, _("The switch model was deleted."))
        except ProtectedError:
            messages.error(request,
                           (_("The switch model %s is used by another object,"
                              " impossible to delete it.") % model_switch))
        return redirect(reverse('topologie:index-model-switch'))
    return form({
        'objet': model_switch,
        'objet_name': _("Switch model")
    }, 'topologie/delete.html', request)
Beispiel #19
0
def del_port(request, port, **_kwargs):
    """ Supprime le port"""
    if request.method == "POST":
        try:
            port.delete()
            messages.success(request, _("The port was deleted."))
        except ProtectedError:
            messages.error(
                request,
                (_("The port %s is used by another object, impossible to"
                   " delete it.") % port))
        return redirect(
            reverse('topologie:index-port',
                    kwargs={'switchid': str(port.switch.id)}))
    return form({'objet': port}, 'topologie/delete.html', request)
Beispiel #20
0
def del_switch_bay(request, switch_bay, **_kwargs):
    """ Suppression d'une baie de switch"""
    if request.method == "POST":
        try:
            switch_bay.delete()
            messages.success(request, _("The switch bay was deleted."))
        except ProtectedError:
            messages.error(request,
                           (_("The switch bay %s is used by another object,"
                              " impossible to delete it.") % switch_bay))
        return redirect(reverse('topologie:index-physical-grouping'))
    return form({
        'objet': switch_bay,
        'objet_name': _("Switch bay")
    }, 'topologie/delete.html', request)
Beispiel #21
0
def del_module_on(request, module, **_kwargs):
    """Compleete delete a module"""
    if request.method == "POST":
        try:
            module.delete()
            messages.success(request, _("The module was deleted."))
        except ProtectedError:
            messages.error(
                request,
                (_("The module %s is used by another object, impossible to"
                   " deleted it.") % module))
        return redirect(reverse('topologie:index-module'))
    return form({
        'objet': module,
        'objet_name': _("Module")
    }, 'topologie/delete.html', request)
Beispiel #22
0
def edit_port(request, port_object, **_kwargs):
    """ Edition d'un port. Permet de changer le switch parent et
    l'affectation du port"""

    port = EditPortForm(request.POST or None, instance=port_object)
    if port.is_valid():
        if port.changed_data:
            port.save()
            messages.success(request, _("The port was edited."))
        return redirect(
            reverse('topologie:index-port',
                    kwargs={'switchid': str(port_object.switch.id)}))
    return form(
        {
            'id_switch': str(port_object.switch.id),
            'topoform': port,
            'action_name': _("Edit")
        }, 'topologie/topo.html', request)
Beispiel #23
0
def edit_ap(request, ap, **_kwargs):
    """ Edition d'un switch. Permet de chambre nombre de ports,
    place dans le stack, interface et machine associée"""
    interface_form = EditInterfaceForm(request.POST or None,
                                       user=request.user,
                                       instance=ap.interface_set.first())
    ap_form = EditAccessPointForm(request.POST or None,
                                  user=request.user,
                                  instance=ap)
    domain_form = DomainForm(request.POST or None,
                             instance=ap.interface_set.first().domain)
    if ap_form.is_valid() and interface_form.is_valid():
        user = AssoOption.get_cached_value('utilisateur_asso')
        if not user:
            messages.error(
                request,
                (_("The organisation's user doesn't exist yet, please create"
                   " or link it in the preferences.")))
            return redirect(reverse('topologie:index-ap'))
        new_ap_obj = ap_form.save(commit=False)
        new_interface_obj = interface_form.save(commit=False)
        new_domain_obj = domain_form.save(commit=False)
        if ap_form.changed_data:
            new_ap_obj.save()
        if interface_form.changed_data:
            new_interface_obj.save()
        if domain_form.changed_data:
            new_domain_obj.save()
        messages.success(request, _("The access point was edited."))
        return redirect(reverse('topologie:index-ap'))
    i_mbf_param = generate_ipv4_mbf_param(interface_form, False)
    return form(
        {
            'topoform': interface_form,
            'machineform': ap_form,
            'domainform': domain_form,
            'i_mbf_param': i_mbf_param,
            'device': 'wifi ap',
        }, 'topologie/topo_more.html', request)
Beispiel #24
0
def new_ap(request):
    """ Creation d'une ap. Cree en meme temps l'interface et la machine
    associée. Vue complexe. Appelle successivement les 3 models forms
    adaptés : machine, interface, domain et switch"""
    ap = AddAccessPointForm(request.POST or None, user=request.user)
    interface = AddInterfaceForm(request.POST or None, user=request.user)
    domain = DomainForm(request.POST or None, )
    if ap.is_valid() and interface.is_valid():
        user = AssoOption.get_cached_value('utilisateur_asso')
        if not user:
            messages.error(
                request,
                (_("The organisation's user doesn't exist yet, please create"
                   " or link it in the preferences.")))
            return redirect(reverse('topologie:index'))
        new_ap_obj = ap.save(commit=False)
        new_ap_obj.user = user
        new_interface_obj = interface.save(commit=False)
        domain.instance.interface_parent = new_interface_obj
        if domain.is_valid():
            new_domain_obj = domain.save(commit=False)
            new_ap_obj.save()
            new_interface_obj.machine = new_ap_obj
            new_interface_obj.save()
            new_domain_obj.interface_parent = new_interface_obj
            new_domain_obj.save()
            messages.success(request, _("The access point was created."))
            return redirect(reverse('topologie:index-ap'))
    i_mbf_param = generate_ipv4_mbf_param(interface, False)
    return form(
        {
            'topoform': interface,
            'machineform': ap,
            'domainform': domain,
            'i_mbf_param': i_mbf_param,
            'device': 'wifi ap',
        }, 'topologie/topo_more.html', request)
Beispiel #25
0
def new_port(request, switchid):
    """ Nouveau port"""
    try:
        switch = Switch.objects.get(pk=switchid)
    except Switch.DoesNotExist:
        messages.error(request, _("Nonexistent switch."))
        return redirect(reverse('topologie:index'))
    port = AddPortForm(request.POST or None)
    if port.is_valid():
        port = port.save(commit=False)
        port.switch = switch
        try:
            port.save()
            messages.success(request, _("The port was added."))
        except IntegrityError:
            messages.error(request, _("The port already exists."))
        return redirect(
            reverse('topologie:index-port', kwargs={'switchid': switchid}))
    return form(
        {
            'id_switch': switchid,
            'topoform': port,
            'action_name': _("Add")
        }, 'topologie/topo.html', request)