Revision 01def7a4 snf-cyclades-app/synnefo/logic/subnets.py

b/snf-cyclades-app/synnefo/logic/subnets.py
42 42
from snf_django.lib import api
43 43
from snf_django.lib.api import faults
44 44
from synnefo.logic import utils
45
from synnefo.api import util
45 46

  
46 47
from synnefo.db.models import Subnet, Network, IPPoolTable
47 48

  
......
148 149
    return sub
149 150

  
150 151

  
151
def get_subnet(sub_id):
152
    """Show info of a specific subnet"""
153
    log.debug('get_subnet %s', sub_id)
152
def get_subnet(subnet_id, user_id, for_update=False):
153
    """Return a Subnet instance or raise ItemNotFound."""
154

  
154 155
    try:
155
        subnets = Subnet.objects
156
        return subnets.get(id=sub_id)
156
        objects = Subnet.objects
157
        subnet_id = int(subnet_id)
158
        subnet = objects.get(id=subnet_id)
159
        if (subnet.network.userid != user_id) and (subnet.network.public is
160
                                                   False):
161
            raise api.faults.Unauthorized("You're not allowed to view this "
162
                                          "subnet")
163
        return subnet
164
    except (ValueError, TypeError):
165
        raise faults.BadRequest("Invalid subnet ID '%s'" % subnet_id)
157 166
    except Subnet.DoesNotExist:
158
        raise api.faults.ItemNotFound("Subnet not found")
167
        raise faults.ItemNotFound("Subnet '%s' not found." % subnet_id)
159 168

  
160 169

  
161 170
def delete_subnet():

Also available in: Unified diff