Commit 96a477a2 authored by Stefano Alberto Russo's avatar Stefano Alberto Russo
Browse files

Added support for groups in adding and editing storages.

parent 64cd21c1
Loading
Loading
Loading
Loading
+11 −0
Original line number Diff line number Diff line
@@ -43,6 +43,17 @@
          <td><b>Bind path</b></td>
          <td><input type="text" name="bind_path" value="" size="30" /></td>
        </tr>
        <tr>
          <td><b>Group</b></td>
          <td>
            <select name="group_id" style="width: 220px;">
              <option value="">None</option>
              {% for group in data.groups %}
                <option value="{{ group.id }}">{{ group.name }}</option>
              {% endfor %}
            </select>
          </td>
        </tr>
        <tr>
          <td><b>Computing</b></td>
          <td>
+12 −1
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@
<div class="container">
  <div class="dashboard">
    <div class="span8 offset2">
      <h1><a href="/storage">Storage resources</a> <span style="font-size:18px"> / <a href="/storage/?uuid={{ data.storage.uuid }}">{{ data.storage.name }}</a> /edit</span></h1>
      <h1><a href="/storage">Storage resources</a> <span style="font-size:18px"> / <a href="/storage/?manage=True&uuid={{ data.storage.uuid }}">{{ data.storage.name }}</a> /edit</span></h1>
      <hr>

      {% if data.error %}
@@ -43,6 +43,17 @@
          <td><b>Bind path</b></td>
          <td><input type="text" name="bind_path" value="{{ data.storage.bind_path }}" size="30" /></td>
        </tr>
        <tr>
          <td><b>Group</b></td>
          <td>
            <select name="group_id" style="width: 220px;">
              <option value="">None</option>
              {% for group in data.groups %}
                <option value="{{ group.id }}" {% if data.storage.group and group.id == data.storage.group.id %}selected{% endif %}>{{ group.name }}</option>
              {% endfor %}
            </select>
          </td>
        </tr>
        <tr>
          <td><b>Computing</b></td>
          <td>
+31 −1
Original line number Diff line number Diff line
@@ -1450,6 +1450,12 @@ def storage(request):
def edit_storage(request):
    data = {}
    data['user'] = request.user
    if request.user.is_staff:
        from django.contrib.auth.models import Group
        data['groups'] = Group.objects.all()
    else:
        from django.contrib.auth.models import Group
        data['groups'] = request.user.groups.all()

    storage_uuid = request.GET.get('uuid', None)
    if not storage_uuid:
@@ -1496,6 +1502,16 @@ def edit_storage(request):
        else:
            storage.computing = None

        # Handle group selection
        group_id = request.POST.get('group_id', None)
        if group_id:
            try:
                storage.group = Group.objects.get(id=group_id)
            except Group.DoesNotExist:
                storage.group = None
        else:
            storage.group = None

        # Foreign keys (group, computing) not handled for now
        conf = request.POST.get('conf', None)
        if conf:
@@ -1773,6 +1789,12 @@ def add_storage(request):
    data = {}
    data['user'] = request.user
    data['added'] = False
    if request.user.is_staff:
        from django.contrib.auth.models import Group
        data['groups'] = Group.objects.all()
    else:
        from django.contrib.auth.models import Group
        data['groups'] = request.user.groups.all()
    from .models import Computing
    data['computings'] = Computing.objects.all()
    if not request.user.is_staff:
@@ -1803,6 +1825,13 @@ def add_storage(request):
            except Exception:
                data['error'] = 'Invalid conf format (must be JSON dict).'
                return render(request, 'add_storage.html', {'data': data})
        group_id = request.POST.get('group_id', None)
        group = None
        if group_id:
            try:
                group = Group.objects.get(id=group_id)
            except Group.DoesNotExist:
                group = None
        try:
            Storage.objects.create(
                name=name,
@@ -1814,7 +1843,8 @@ def add_storage(request):
                read_only=read_only,
                browsable=browsable,
                conf=conf_obj,
                computing=computing
                computing=computing,
                group=group
            )
            data['added'] = True
            return redirect('/storage/?manage=True')