Esempio n. 1
0
def share(request, object_type, object_id):
    model = Network if object_type == 'network' else Host
    obj, edit = get_object_or_forbidden(model, object_id, request.user)
    user_id = request.POST.get('share')
    if user_id:
        user = User.objects.get(pk=user_id)
        grant_access(obj, user)
    return share_list(request, object_type, object_id)
Esempio n. 2
0
def share(request, object_type, object_id):
    model = Network if object_type == 'network' else Host
    obj, edit = get_object_or_forbidden(model, object_id, request.user)
    user_id = request.POST.get('share')
    if user_id:
        user = User.objects.get(pk=user_id)
        grant_access(obj, user)
    return share_list(request, object_type, object_id)
Esempio n. 3
0
def share_edit(request, object_type, object_id, user_id):
    model = Network if object_type == 'network' else Host
    obj, edit = get_object_or_forbidden(model, object_id, request.user)
    user = User.objects.get(pk=user_id)
    if edit:
        revoke_edit(obj, user)
    else:
        grant_edit(obj, user)
    return share_list(request, object_type, object_id)
Esempio n. 4
0
def network_delete(request, object_id):
    
    network, edit = get_object_or_forbidden(Network, object_id, request.user)
    
    if network.user != request.user:
        raise Http404()
    
    return delete_object(request, object_id=object_id, model=Network,
                         post_delete_redirect=reverse('network_list'))
Esempio n. 5
0
def host_delete(request, object_id):
    
    host, edit = get_object_or_forbidden(Host, object_id, request.user)
    
    if host.user != request.user:
        raise Http404()
    
    return delete_object(request, object_id=object_id, model=Host,
                         post_delete_redirect=reverse('host_list'))
Esempio n. 6
0
def share_edit(request, object_type, object_id, user_id):
    model = Network if object_type == 'network' else Host
    obj, edit = get_object_or_forbidden(model, object_id, request.user)
    user = User.objects.get(pk=user_id)
    if edit:
        revoke_edit(obj, user)
    else:
        grant_edit(obj, user)
    return share_list(request, object_type, object_id)
Esempio n. 7
0
def host_delete(request, object_id):
    
    host, edit = get_object_or_forbidden(Host, object_id, request.user)
    
    if host.user != request.user:
        raise Http404()

    return delete_object(request, object_id=object_id, model=Host,
                         post_delete_redirect=reverse('host_list'))
Esempio n. 8
0
def host_update(request, object_id):
    
    host, edit = get_object_or_forbidden(Host, object_id, request.user)
    
    if not edit:
        raise Http404()
    
    return update_object(request, object_id=object_id,
                         form_class=HostUpdateForm,
                         template_name='networks/host_update.html')
Esempio n. 9
0
def host_detail(request, object_id):
    
    host, edit = get_object_or_forbidden(Host, object_id, request.user)
    
    extra_context = {
        'can_edit': edit
    }
    
    return object_detail(request, Host.objects.all(), object_id,
                         extra_context=extra_context)
Esempio n. 10
0
def network_update(request, object_id):
    
    network, edit = get_object_or_forbidden(Network, object_id, request.user)
    
    if not edit:
        raise Http404()
    
    return update_object(request, object_id=object_id,
                         form_class=NetworkUpdateForm,
                         template_name='networks/network_update.html')
Esempio n. 11
0
def host_detail(request, object_id):
    
    host, edit = get_object_or_forbidden(Host, object_id, request.user)
    
    extra_context = {
        'can_edit': edit
    }
    
    return object_detail(request, Host.objects.all(), object_id,
                         extra_context=extra_context)
Esempio n. 12
0
def host_update(request, object_id):
    
    host, edit = get_object_or_forbidden(Host, object_id, request.user)
    
    if not edit:
        raise Http404()
    
    return update_object(request, object_id=object_id,
                         form_class=HostUpdateForm,
                         template_name='networks/host_update.html')
Esempio n. 13
0
def share_list(request, object_type, object_id):
    model = Network if object_type == 'network' else Host
    obj, edit = get_object_or_forbidden(model, object_id, request.user)
    all_users = User.objects.exclude(pk=request.user.pk)
    other_users = []
    for user in all_users:
        if not user_has_access(obj, user):
            other_users.append(user)
    extra_context = {
        'object': obj,
        'object_type': object_type,
        'other_users': other_users
    }
    return direct_to_template(request, 'networks/share.html', extra_context)
Esempio n. 14
0
def share_list(request, object_type, object_id):
    model = Network if object_type == 'network' else Host
    obj, edit = get_object_or_forbidden(model, object_id, request.user)
    all_users = User.objects.exclude(pk=request.user.pk)
    other_users = []
    for user in all_users:
        if not user_has_access(obj, user):
            other_users.append(user)
    extra_context = {
        'object': obj,
        'object_type': object_type,
        'other_users': other_users
    }
    return direct_to_template(request, 'networks/share.html', extra_context)
Esempio n. 15
0
def network_events(request, object_id):
    """Display events related to network"""
    
    network, edit = get_object_or_forbidden(Network, object_id, request.user)

    queryset = Network.objects.all()
    related_hosts = [nh.host.pk for nh in NetworkHost.objects.filter(network=network)]
    events = Event.objects.filter(source_host__pk__in=related_hosts)
    extra_context = {
        'events': events,
        'can_edit': edit
    }
    return object_detail(request, queryset, object_id,
                         extra_context=extra_context,
                         template_name='networks/network_events.html')
Esempio n. 16
0
def network_detail(request, object_id):
    """
    Network detail page has the following features:
        * displaying basic network info (name, description, etc.)
        * listing hosts related to network
        * creating relations between network and host
        * removing relations between network and host(s)
    """
    network, edit = get_object_or_forbidden(Network, object_id, request.user)
    
    # remove relation between the network and selected host(s)
    if request.POST.getlist('remove_host'):
        if edit:
            hosts_pk = request.POST.getlist('remove_host')
            network_host = NetworkHost.objects.filter(network=network,
                                                      host__pk__in=hosts_pk)
            network_host.delete()
    
    # create relation between the network and selected host
    if request.POST.get('add_host'):
        if edit:
            host = Host.objects.get(pk=request.POST.get('add_host'))
            network_host = NetworkHost(network=network, host=host)
            network_host.save()
    
    queryset = Network.objects.filter(user=request.user)
    if network.hosts():
        hosts_ids = [host.pk for host in network.hosts()]
        hosts_other = Host.objects.exclude(pk__in=hosts_ids).filter(user=request.user)
    else:
        hosts_other = Host.objects.filter(user=request.user)
    extra_context = {
        'hosts_other': hosts_other,
        'can_edit': edit
    }
    return object_detail(request, queryset, object_id,
                         extra_context=extra_context)