Skip to content

Commit

Permalink
Update .clabot
Browse files Browse the repository at this point in the history
[Fixes #4793] monitoring/analytics improvements and bug fixing

fixes flake8

 - Get TEST params from Env

travis integration test config for monitoring/analytics

 - Fix monitoring integration test cases
  • Loading branch information
Alessio Fabiani committed Sep 3, 2019
1 parent 015dbb6 commit 2416469
Show file tree
Hide file tree
Showing 21 changed files with 47,883 additions and 323 deletions.
1 change: 1 addition & 0 deletions .clabot
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
{
"contributors": [
"dependabot-preview[bot]",
"ingenieroariel",
"jj0hns0n",
"simod",
Expand Down
4 changes: 3 additions & 1 deletion .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -60,10 +60,12 @@ matrix:
GEOSERVER_SERVER_URL: http://localhost:8080/geoserver/
GEOSERVER_SERVER_PORT: 8080
ON_TRAVIS: 'True'
TEST_RUNNER_KEEPDB: 'True'
TEST_RUN_INTEGRATION: 'True'
TEST_RUN_INTEGRATION_CSW: 'False'
TEST_RUN_INTEGRATION_BDD: 'False'
MONITORING_ENABLED: 'False'
MONITORING_ENABLED: 'True'
USER_ANALYTICS_ENABLED: 'True'
SESSION_EXPIRED_CONTROL_ENABLED: 'True'
CELERY_ALWAYS_EAGER: 'True'
- name: "GeoServer-backend Integration CSW Tests"
Expand Down
15 changes: 8 additions & 7 deletions geonode/decorators.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@
import logging

from functools import wraps
from django.contrib import auth
from django.conf import settings
from django.http import HttpResponse
from django.utils.decorators import classonlymethod
Expand Down Expand Up @@ -85,20 +86,20 @@ def view_or_apiauth(view, request, test_func, *args, **kwargs):
are already logged in or if they have provided proper http-authorization
and returning the view if all goes well, otherwise responding with a 401.
"""
if test_func(request.user) or not settings.OAUTH2_API_KEY:
if test_func(auth.get_user(request)) or not settings.OAUTH2_API_KEY:
# Already logged in, just return the view.
#
return view(request, *args, **kwargs)

# They are not logged in. See if they provided login credentials
#
if 'HTTP_AUTHORIZATION' in request.META:
auth = request.META['HTTP_AUTHORIZATION'].split()
if len(auth) == 2:
_auth = request.META['HTTP_AUTHORIZATION'].split()
if len(_auth) == 2:
# NOTE: We are only support basic authentication for now.
#
if auth[0].lower() == "apikey":
auth_api_key = auth[1]
if _auth[0].lower() == "apikey":
auth_api_key = _auth[1]
if auth_api_key and auth_api_key == settings.OAUTH2_API_KEY:
return view(request, *args, **kwargs)

Expand Down Expand Up @@ -131,7 +132,7 @@ def my_view(request):
--------------------------------------------------------------------------
"""
def _inner(request, *args, **kwargs):
if not request.user.is_superuser and not request.user.is_staff:
if not auth.get_user(request).is_superuser and not auth.get_user(request).is_staff:
raise PermissionDenied
return function(request, *args, **kwargs)
return _inner
Expand All @@ -141,7 +142,7 @@ def superuser_protected(function):
"""Decorator that forces a view to be accessible by SUPERUSERS only.
"""
def _inner(request, *args, **kwargs):
if not request.user.is_superuser:
if not auth.get_user(request).is_superuser:
return HttpResponse(
json.dumps({
'error': 'unauthorized_request'
Expand Down
21 changes: 9 additions & 12 deletions geonode/documents/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@
from geonode.groups.models import GroupProfile
from geonode.base.views import batch_modify
from geonode.monitoring import register_event
from geonode.monitoring.models import EventType

logger = logging.getLogger("geonode.documents.views")

Expand Down Expand Up @@ -154,7 +155,7 @@ def document_detail(request, docid):
from geonode.favorite.utils import get_favorite_info
context_dict["favorite_info"] = get_favorite_info(request.user, document)

register_event(request, 'view', document)
register_event(request, EventType.EVENT_VIEW, document)

return render(
request,
Expand All @@ -165,18 +166,14 @@ def document_detail(request, docid):
def document_download(request, docid):
document = get_object_or_404(Document, pk=docid)

if settings.MONITORING_ENABLED and document:
dtitle = getattr(document, 'alternate', None) or document.title
request.register_event('upload', 'document', dtitle)

if not request.user.has_perm(
'base.download_resourcebase',
obj=document.get_self_resource()):
return HttpResponse(
loader.render_to_string(
'401.html', context={
'error_message': _("You are not allowed to view this document.")}, request=request), status=401)
register_event(request, 'download', document)
register_event(request, EventType.EVENT_DOWNLOAD, document)
return DownloadResponse(document.doc_file)


Expand Down Expand Up @@ -275,7 +272,7 @@ def form_valid(self, form):
except BaseException:
print "Could not send slack message for new document."

register_event(self.request, 'upload', self.object)
register_event(self.request, EventType.EVENT_UPLOAD, self.object)

if self.request.GET.get('no__redirect', False):
out['success'] = True
Expand Down Expand Up @@ -318,7 +315,7 @@ def form_valid(self, form):
If the form is valid, save the associated model.
"""
self.object = form.save()
register_event(self.request, 'change', self.object)
register_event(self.request, EventType.EVENT_CHANGE, self.object)
return HttpResponseRedirect(
reverse(
'document_metadata',
Expand Down Expand Up @@ -443,7 +440,7 @@ def document_metadata(
document.save()
document_form.save_many2many()

register_event(request, 'change_metadata', document)
register_event(request, EventType.EVENT_CHANGE_METADATA, document)
if not ajax:
return HttpResponseRedirect(
reverse(
Expand Down Expand Up @@ -500,7 +497,7 @@ def document_metadata(
document_form.fields['is_approved'].widget.attrs.update(
{'disabled': 'true'})

register_event(request, 'view_metadata', document)
register_event(request, EventType.EVENT_VIEW_METADATA, document)
return render(request, template, context={
"resource": document,
"document": document,
Expand Down Expand Up @@ -636,7 +633,7 @@ def document_remove(request, docid, template='documents/document_remove.html'):
if request.method == 'POST':
document.delete()

register_event(request, 'remove', document)
register_event(request, EventType.EVENT_REMOVE, document)
return HttpResponseRedirect(reverse("document_browse"))
else:
return HttpResponse("Not allowed", status=403)
Expand Down Expand Up @@ -665,7 +662,7 @@ def document_metadata_detail(
except GroupProfile.DoesNotExist:
group = None
site_url = settings.SITEURL.rstrip('/') if settings.SITEURL.startswith('http') else settings.SITEURL
register_event(request, 'view_metadata', document)
register_event(request, EventType.EVENT_VIEW_METADATA, document)
return render(request, template, context={
"resource": document,
"group": group,
Expand Down
23 changes: 11 additions & 12 deletions geonode/maps/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -136,8 +136,7 @@ def map_detail(request, mapid, snapshot=None, template='maps/map_detail.html'):
else:
config = snapshot_config(snapshot, map_obj, request)

if settings.MONITORING_ENABLED:
request.register_event('view', 'map', map_obj.title)
register_event(request, EventType.EVENT_VIEW, map_obj.title)

config = json.dumps(config)
layers = MapLayer.objects.filter(map=map_obj.id)
Expand Down Expand Up @@ -261,7 +260,7 @@ def map_metadata(
map_obj.category = new_category
map_obj.save()

register_event(request, 'change_metadata', map_obj)
register_event(request, EventType.EVENT_CHANGE_METADATA, map_obj)
if not ajax:
return HttpResponseRedirect(
reverse(
Expand Down Expand Up @@ -333,7 +332,7 @@ def map_metadata(
map_form.fields['is_approved'].widget.attrs.update(
{'disabled': 'true'})

register_event(request, 'view_metadata', map_obj)
register_event(request, EventType.EVENT_VIEW_METADATA, map_obj)
return render(request, template, context={
"config": json.dumps(config),
"resource": map_obj,
Expand Down Expand Up @@ -391,7 +390,7 @@ def map_remove(request, mapid, template='maps/map_remove.html'):
else:
delete_map.delay(object_id=map_obj.id)

register_event(request, 'remove', map_obj)
register_event(request, EventType.EVENT_REMOVE, map_obj)

return HttpResponseRedirect(reverse("maps_browse"))

Expand All @@ -417,7 +416,7 @@ def map_embed(
config = snapshot_config(
snapshot, map_obj, request)

register_event(request, 'view', map_obj)
register_event(request, EventType.EVENT_VIEW, map_obj)
return render(request, template, context={
'config': json.dumps(config)
})
Expand Down Expand Up @@ -500,7 +499,7 @@ def map_embed_widget(request, mapid,
'map_bbox': map_bbox,
'map_layers': layers
}
register_event(request, 'view', map_obj)
register_event(request, EventType.EVENT_VIEW, map_obj)
message = render(request, template, context)
return HttpResponse(message)

Expand Down Expand Up @@ -548,7 +547,7 @@ def map_view(request, mapid, snapshot=None, layer_name=None,
config = add_layers_to_map_config(
request, map_obj, (layer_name, ), False)

register_event(request, 'view', request.path)
register_event(request, EventType.EVENT_VIEW, request.path)
return render(request, template, context={
'config': json.dumps(config),
'map': map_obj,
Expand Down Expand Up @@ -609,7 +608,7 @@ def map_json(request, mapid, snapshot=None):
map=map_obj,
user=request.user)

register_event(request, 'change', map_obj)
register_event(request, EventType.EVENT_CHANGE, map_obj)
return HttpResponse(
json.dumps(
map_obj.viewer_json(request)))
Expand Down Expand Up @@ -731,7 +730,7 @@ def new_map_json(request):
except ValueError as e:
return HttpResponse(str(e), status=400)
else:
register_event(request, 'upload', map_obj)
register_event(request, EventType.EVENT_UPLOAD, map_obj)
return HttpResponse(
json.dumps({'id': map_obj.id}),
status=200,
Expand Down Expand Up @@ -1170,7 +1169,7 @@ def map_wms(request, mapid):
layerGroupName=layerGroupName,
ows=getattr(ogc_server_settings, 'ows', ''),
)
register_event(request, 'publish', map_obj)
register_event(request, EventType.EVENT_PUBLISH, map_obj)
return HttpResponse(
json.dumps(response),
content_type="application/json")
Expand Down Expand Up @@ -1393,7 +1392,7 @@ def map_metadata_detail(
except GroupProfile.DoesNotExist:
group = None
site_url = settings.SITEURL.rstrip('/') if settings.SITEURL.startswith('http') else settings.SITEURL
register_event(request, 'view_metadata', map_obj)
register_event(request, EventType.EVENT_VIEW_METADATA, map_obj)
return render(request, template, context={
"resource": map_obj,
"group": group,
Expand Down
4 changes: 3 additions & 1 deletion geonode/monitoring/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -92,12 +92,14 @@ def register_event(request, event_type, resource):
if isinstance(resource, types.StringTypes):
resource_type = 'url'
resource_name = request.path
resource_id = None
elif isinstance(resource, ResourceBase):
resource_type = resource.__class__._meta.verbose_name_raw
resource_name = getattr(resource, 'alternate', None) or resource.title
resource_id = resource.id
else:
raise ValueError("Invalid resource: {}".format(resource))
request.register_event(event_type, resource_type, resource_name)
request.register_event(event_type, resource_type, resource_name, resource_id)


def register_proxy_event(request):
Expand Down
35 changes: 0 additions & 35 deletions geonode/monitoring/aggregate_metrics.py

This file was deleted.

0 comments on commit 2416469

Please sign in to comment.