Skip to content

Commit

Permalink
- Fix lgtm issues and Giovanni review issues
Browse files Browse the repository at this point in the history
  • Loading branch information
afabiani committed Mar 24, 2020
1 parent 27a5ad0 commit 6624790
Show file tree
Hide file tree
Showing 32 changed files with 1,421 additions and 5,897 deletions.
29 changes: 16 additions & 13 deletions geonode/api/resourcebase_api.py
Expand Up @@ -262,19 +262,22 @@ def filter_h_keywords(self, queryset, keywords):
filtered = queryset.filter(Q(keywords__in=treeqs))
return filtered

def filter_bbox(self, queryset, bbox):
"""
modify the queryset q to limit to data that intersects with the
provided bbox
bbox - 4 tuple of floats representing 'southwest_lng,southwest_lat,
northeast_lng,northeast_lat'
returns the modified query
"""
bbox = bbox.split(',') # TODO: Why is this different when done through haystack?
bbox = list(map(str, bbox)) # 2.6 compat - float to decimal conversion
intersects = ~(Q(bbox_x0__gt=bbox[2]) | Q(bbox_x1__lt=bbox[0]) |
Q(bbox_y0__gt=bbox[3]) | Q(bbox_y1__lt=bbox[1]))
def filter_bbox(self, queryset, extent_filter):
from geonode.utils import bbox_to_projection
bbox = extent_filter.split(',')
bbox = list(map(str, bbox))

intersects = (Q(bbox_x0__gte=bbox[0]) & Q(bbox_x1__lte=bbox[2]) &
Q(bbox_y0__gte=bbox[1]) & Q(bbox_y1__lte=bbox[3]))

for proj in Layer.objects.order_by('srid').values('srid').distinct():
if proj['srid'] != 'EPSG:4326':
proj_bbox = bbox_to_projection(bbox + ['4326', ],
target_srid=int(proj['srid'][5:]))

if proj_bbox[-1] != 4326:
intersects = intersects | (Q(bbox_x0__gte=proj_bbox[0]) & Q(bbox_x1__lte=proj_bbox[2]) & Q(
bbox_y0__gte=proj_bbox[1]) & Q(bbox_y1__lte=proj_bbox[3]))

return queryset.filter(intersects)

Expand Down
69 changes: 39 additions & 30 deletions geonode/base/models.py
Expand Up @@ -326,43 +326,52 @@ class HierarchicalKeyword(TagBase, MP_Node):
objects = HierarchicalKeywordManager()

@classmethod
def dump_bulk_tree(cls, parent=None, keep_ids=True):
def dump_bulk_tree(cls, parent=None, keep_ids=True, type=None):
"""Dumps a tree branch to a python data structure."""
qset = cls._get_serializable_model().get_tree(parent)
ret, lnk = [], {}
try:
for pyobj in qset:
for pyobj in qset.order_by('name'):
serobj = serializers.serialize('python', [pyobj])[0]
# django's serializer stores the attributes in 'fields'
fields = serobj['fields']
depth = fields['depth'] or 1
fields['text'] = fields['name']
fields['href'] = fields['slug']
del fields['name']
del fields['slug']
del fields['path']
del fields['numchild']
del fields['depth']
if 'id' in fields:
# this happens immediately after a load_bulk
del fields['id']

newobj = {}
for field in fields:
newobj[field] = fields[field]
if keep_ids:
newobj['id'] = serobj['pk']

if (not parent and depth == 1) or\
(parent and depth == parent.depth):
ret.append(newobj)
else:
parentobj = pyobj.get_parent()
parentser = lnk[parentobj.pk]
if 'nodes' not in parentser:
parentser['nodes'] = []
parentser['nodes'].append(newobj)
lnk[pyobj.pk] = newobj
tags_count = 0
try:
tags_count = TaggedContentItem.objects.filter(
content_object__polymorphic_ctype__model=type,
tag=HierarchicalKeyword.objects.get(slug=fields['slug'])).count()
except Exception:
pass
if tags_count > 0:
depth = fields['depth'] or 1
fields['text'] = fields['name']
fields['href'] = fields['slug']
fields['tags'] = [tags_count]
del fields['name']
del fields['slug']
del fields['path']
del fields['numchild']
del fields['depth']
if 'id' in fields:
# this happens immediately after a load_bulk
del fields['id']

newobj = {}
for field in fields:
newobj[field] = fields[field]
if keep_ids:
newobj['id'] = serobj['pk']

if (not parent and depth == 1) or\
(parent and depth == parent.depth):
ret.append(newobj)
else:
parentobj = pyobj.get_parent()
parentser = lnk[parentobj.pk]
if 'nodes' not in parentser:
parentser['nodes'] = []
parentser['nodes'].append(newobj)
lnk[pyobj.pk] = newobj
except Exception:
pass
return ret
Expand Down
19 changes: 14 additions & 5 deletions geonode/base/templatetags/base_tags.py
Expand Up @@ -144,11 +144,20 @@ def facets(context):
private_groups_not_visibile=settings.GROUP_PRIVATE_RESOURCES)

if extent_filter:
bbox = extent_filter.split(
',') # TODO: Why is this different when done through haystack?
bbox = list(map(str, bbox)) # 2.6 compat - float to decimal conversion
intersects = ~(Q(bbox_x0__gt=bbox[2]) | Q(bbox_x1__lt=bbox[0]) |
Q(bbox_y0__gt=bbox[3]) | Q(bbox_y1__lt=bbox[1]))
from geonode.utils import bbox_to_projection
bbox = extent_filter.split(',')
bbox = list(map(str, bbox))

intersects = (Q(bbox_x0__gt=bbox[0]) & Q(bbox_x1__lt=bbox[2]) &
Q(bbox_y0__gt=bbox[1]) & Q(bbox_y1__lt=bbox[3]))

for proj in Layer.objects.order_by('srid').values('srid').distinct():
if proj['srid'] != 'EPSG:4326':
proj_bbox = bbox_to_projection(bbox + ['4326', ],
target_srid=int(proj['srid'][5:]))
if proj_bbox[-1] != 4326:
intersects = intersects | (Q(bbox_x0__gt=proj_bbox[0]) & Q(bbox_x1__lt=proj_bbox[2]) & Q(
bbox_y0__gt=proj_bbox[1]) & Q(bbox_y1__lt=proj_bbox[3]))

layers = layers.filter(intersects)

Expand Down
41 changes: 41 additions & 0 deletions geonode/security/views.py
Expand Up @@ -204,6 +204,47 @@ def resource_geolimits(request, resource_id):
}),
content_type="application/json"
)
elif request.method == 'DELETE':
if user_id:
try:
geo_limits = UserGeoLimit.objects.filter(
user=get_user_model().objects.get(id=user_id),
resource=resource
)
for geo_limit in geo_limits:
resource.users_geolimits.remove(geo_limit)
geo_limits.delete()
return HttpResponse(
json.dumps({
'user': user_id
}),
content_type="application/json"
)
except Exception as e:
return HttpResponse(
str(e),
status=400,
content_type='text/plain')
elif group_id:
try:
geo_limits = GroupGeoLimit.objects.filter(
group=GroupProfile.objects.get(id=group_id),
resource=resource
)
for geo_limit in geo_limits:
resource.groups_geolimits.remove(geo_limit)
geo_limits.delete()
return HttpResponse(
json.dumps({
'group': group_id
}),
content_type="application/json"
)
except Exception as e:
return HttpResponse(
str(e),
status=400,
content_type='text/plain')
elif request.method == 'GET':
if user_id:
try:
Expand Down
4 changes: 2 additions & 2 deletions geonode/static/geonode/js/jszip/preprocess.js
Expand Up @@ -236,8 +236,8 @@ DBFParser.prototype.parse = function(arrayBuffer,src,response,encoding) {
var charString = [],
count = 0,
index = 0,
z = 0,
/* sum = (responseHeader.length+1)/32 */;
z = 0;
/* var sum = (responseHeader.length+1)/32 */

while(responseHeader.length > 0) {
while(count < 10) {
Expand Down

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

0 comments on commit 6624790

Please sign in to comment.