Switch to unified view

a/Allura/allura/lib/helpers.py b/Allura/allura/lib/helpers.py
...
...
150
    parts = [
150
    parts = [
151
        name[:i+1]
151
        name[:i+1]
152
        for i in range(num_parts) ]
152
        for i in range(num_parts) ]
153
    return '/'.join(parts)
153
    return '/'.join(parts)
154
154
155
def set_context(project_shortname, mount_point=None, app_config_id=None):
155
def set_context(project_shortname, mount_point=None, app_config_id=None, neighborhood=None):
156
    from allura import model
156
    from allura import model
157
    p = model.Project.query.get(shortname=project_shortname)
157
    if not isinstance(neighborhood, model.Neighborhood):
158
        if neighborhood is not None:
159
            n = model.Neighborhood.query.get(name=neighborhood)
160
            if n is None:
161
                try:
162
                    n = model.Neighborhood.query.get(_id=ObjectId(str(neighborhood)))
163
                except InvalidId:
164
                    pass
165
            if n is None:
166
                raise exc.NoSuchNeighborhoodError("Couldn't find neighborhood %s" %
167
                                      repr(neighborhood))
168
            neighborhood = n
169
170
    query = dict(shortname=project_shortname)
171
    if neighborhood is not None:
172
        query['neighborhood_id'] = neighborhood._id
173
    p = model.Project.query.get(**query)
158
    if p is None:
174
    if p is None:
159
        try:
175
        try:
176
            del query['shortname']
160
            p = model.Project.query.get(_id=ObjectId(str(project_shortname)))
177
            query['_id'] = ObjectId(str(project_shortname))
178
            p = model.Project.query.get(**query)
161
        except InvalidId:
179
        except InvalidId:
162
            pass
180
            pass
163
181
164
    if p is None:
182
    if p is None:
165
        raise exc.NoSuchProjectError("Couldn't find project %s" %
183
        raise exc.NoSuchProjectError("Couldn't find project %s" %