diff --git a/config/urls.py b/config/urls.py index d24b8f99e629ce39a0b386968bab96724fe67ac0..2a879ecb3c24611e32150f1c91c3925f1135f4dd 100644 --- a/config/urls.py +++ b/config/urls.py @@ -26,9 +26,11 @@ urlpatterns = [ url(r'^SPPrivacy', events.views.spprivacy, name="spprivacy"), url(r'^DiscoveryService', events.views.discovery, name="discovery"), url(r'^events/', include('events.urls')), - url(r'^api/', include('events.urls_rest', app_name="api", namespace="x509")), - url(r'^apiweb/', include('events.urls_rest', app_name="api", namespace="shib")), - url(r'^apibasic/', include('events.urls_rest', app_name="api", namespace="basic")), + url(r'^apiweb/', include('events.api.urls', app_name="api", + namespace="shib")), + url(r'^api/', include('events.api.urls', app_name="api", namespace="x509")), + url(r'^apibasic/', include('events.api.urls', app_name="api", + namespace="basic")), url(r'^options/', include('userprofile.urls')), url(r'^feeds/(?P<url>.*)/$', EventFeed()), url(r'^feeds/$', feedview, name="feeds"), diff --git a/gracedb/events/api/__init__.py b/gracedb/events/api/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 diff --git a/gracedb/events/throttles.py b/gracedb/events/api/throttles.py similarity index 100% rename from gracedb/events/throttles.py rename to gracedb/events/api/throttles.py diff --git a/gracedb/events/urls_rest.py b/gracedb/events/api/urls.py similarity index 63% rename from gracedb/events/urls_rest.py rename to gracedb/events/api/urls.py index 4c9f767660730023a7559daf3809145a290b25ba..016817ccfae7e1e599cefe5b76d91865a4ed8ad4 100644 --- a/gracedb/events/urls_rest.py +++ b/gracedb/events/api/urls.py @@ -2,55 +2,35 @@ # Changed for Django 1.11 from django.conf.urls import url -# rest_framework -from .api import GracedbRoot -from .api import EventList, EventDetail -from .api import EventLogList, EventLogDetail -from .api import EMBBEventLogList, EMBBEventLogDetail -from .api import EMObservationList, EMObservationDetail -#from .api import EMFootprintList, EMFootprintDetail -from .api import TagList -# from .api import TagDetail -from .api import EventTagList, EventTagDetail -from .api import EventLogTagList, EventLogTagDetail -from .api import Files, FileMeta -from .api import EventNeighbors, EventLabel -from .api import PerformanceInfo -from .api import EventPermissionList -from .api import GroupEventPermissionList -from .api import GroupEventPermissionDetail -from .api import VOEventList, VOEventDetail -from .api import OperatorSignoffList -from .api import download as download_view +from .views import * urlpatterns = [ url(r'^$', GracedbRoot.as_view(), name="api-root"), # Event Resources # events/[{graceid}[/{version}]] - url(r'events/$', - EventList.as_view(), name='event-list'), - url(r'events/(?P<graceid>[GEHMT]\d+)$', - EventDetail.as_view(), name='event-detail'), + url(r'events/$', EventList.as_view(), name='event-list'), + url(r'events/(?P<graceid>[GEHMT]\d+)$', EventDetail.as_view(), + name='event-detail'), # Event Log Resources # events/{graceid}/logs/[{logid}] - url(r'events/(?P<graceid>[GEHMT]\d+)/log/$', - EventLogList.as_view(), name='eventlog-list'), + url(r'events/(?P<graceid>[GEHMT]\d+)/log/$', EventLogList.as_view(), + name='eventlog-list'), url(r'events/(?P<graceid>[GEHMT]\d+)/log/(?P<n>\d+)$', EventLogDetail.as_view(), name='eventlog-detail'), # VOEvent Resources # events/{graceid}/voevent/[{serial_number}] - url(r'events/(?P<graceid>[GEHMT]\d+)/voevent/$', - VOEventList.as_view(), name='voevent-list'), + url(r'events/(?P<graceid>[GEHMT]\d+)/voevent/$', VOEventList.as_view(), + name='voevent-list'), url(r'events/(?P<graceid>[GEHMT]\d+)/voevent/(?P<n>\d+)$', VOEventDetail.as_view(), name='voevent-detail'), # EMBB Resources # events/{graceid}/logs/[{logid}] - url(r'events/(?P<graceid>[GEHMT]\d+)/embb/$', - EMBBEventLogList.as_view(), name='embbeventlog-list'), + url(r'events/(?P<graceid>[GEHMT]\d+)/embb/$', EMBBEventLogList.as_view(), + name='embbeventlog-list'), url(r'events/(?P<graceid>[GEHMT]\d+)/embb/(?P<n>\d+)$', EMBBEventLogDetail.as_view(), name='embbeventlog-detail'), url(r'events/(?P<graceid>[GEHMT]\d+)/emobservation/$', @@ -65,10 +45,9 @@ urlpatterns = [ # Tag Resources url(r'^tag/$', TagList.as_view(), name='tag-list'), # XXX unclear what the tag detail resource should be. - #url(r'^tag/(?P<tagname>.+)$', - # TagDetail.as_view(), name='tag-detail'), - url(r'events/(?P<graceid>[GEHMT]\d+)/tag/$', - EventTagList.as_view(), name='eventtag-list'), + #url(r'^tag/(?P<tagname>.+)$', TagDetail.as_view(), name='tag-detail'), + url(r'events/(?P<graceid>[GEHMT]\d+)/tag/$', EventTagList.as_view(), + name='eventtag-list'), url(r'events/(?P<graceid>[GEHMT]\d+)/tag/(?P<tagname>.+)$', EventTagDetail.as_view(), name='eventtag-detail'), url(r'events/(?P<graceid>[GEHMT]\d+)/log/(?P<n>\d+)/tag/$', @@ -99,19 +78,17 @@ urlpatterns = [ # Event Neighbors # events/{graceid}/neighbors/[?delta=(N|(N,N))] - url(r'^events/(?P<graceid>\w[\d]+)/neighbors/$', - EventNeighbors.as_view(), name="neighbors"), + url(r'^events/(?P<graceid>\w[\d]+)/neighbors/$', EventNeighbors.as_view(), + name="neighbors"), # Operator Signoff Resources url(r'events/(?P<graceid>[GEHMT]\d+)/signoff/$', OperatorSignoffList.as_view(), name='signoff-list'), - # Performance stats - url(r'^performance/$', - PerformanceInfo.as_view(), name='performance-info'), + url(r'^performance/$', PerformanceInfo.as_view(), name='performance-info'), # Legacy - #url(r'^events/(?P<graceid>\w[\d]+)/files/(?P<filename>.+)?$', 'download', name="files"), - url(r'^event/(?P<graceid>\w[\d]+)/files/(?P<filename>.+)?$', download_view, name="download2"), + url(r'^event/(?P<graceid>\w[\d]+)/files/(?P<filename>.+)?$', download, + name="download2"), ] diff --git a/gracedb/events/api.py b/gracedb/events/api/views.py similarity index 98% rename from gracedb/events/api.py rename to gracedb/events/api/views.py index ecf5aed5c362a6057b423d0a66a73dfbe95d48ca..376db95e0f4539338fd904735df75c8458958954 100644 --- a/gracedb/events/api.py +++ b/gracedb/events/api/views.py @@ -7,49 +7,44 @@ from django.conf import settings from django.utils.functional import wraps from django.db import IntegrityError -import json - from django.contrib.auth.models import User, Permission from django.contrib.auth.models import Group as AuthGroup from django.contrib.contenttypes.models import ContentType -from .models import Event, Group, Search, Pipeline, EventLog, Tag, Label -from .models import EMGroup, EMBBEventLog, EMSPECTRUM -#from .models import EMObservation, EMFootprint -from .models import VOEvent -from .view_logic import create_label, get_performance_info, delete_label -from .view_logic import _createEventFromForm -from .view_logic import create_eel -from .view_logic import create_emobservation -from .view_utils import eventToDict, eventLogToDict, labelToDict -from .view_utils import embbEventLogToDict, voeventToDict -from .view_utils import emObservationToDict, skymapViewerEMObservationToDict -from .view_utils import signoffToDict -from .view_utils import reverse - -from .translator import handle_uploaded_data -from .forms import CreateEventForm -from .permission_utils import user_has_perm, filter_events_for_user, is_external -from .permission_utils import check_external_file_access -from guardian.models import GroupObjectPermission + +from ..alert import issueAlertForUpdate +from ..buildVOEvent import buildVOEvent, VOEventBuilderException +from ..view_utils import BadFARRange, check_query_far_range +from ..query import parseQuery, ParseException +from ..models import Event, Group, Search, Pipeline, EventLog, Tag, Label, \ + EMGroup, EMBBEventLog, EMSPECTRUM, VOEvent +from ..view_logic import create_label, get_performance_info, delete_label, \ + _createEventFromForm, create_eel, create_emobservation +from ..view_utils import eventToDict, eventLogToDict, labelToDict, reverse, \ + embbEventLogToDict, voeventToDict, emObservationToDict, signoffToDict, \ + skymapViewerEMObservationToDict +from ..forms import SimpleSearchForm +from ..translator import handle_uploaded_data +from ..forms import CreateEventForm +from ..permission_utils import user_has_perm, filter_events_for_user, \ + is_external, check_external_file_access from .throttles import EventCreationThrottle, AnnotationThrottle -from .alert import issueAlertForUpdate -from .buildVOEvent import buildVOEvent, VOEventBuilderException +from core.vfile import VersionedFile + +from guardian.models import GroupObjectPermission import os import urllib import shutil import exceptions +import json -from core.vfile import VersionedFile import logging; logger = logging.getLogger(__name__) # # for checking queries in the evnet that the user is external # -from .view_utils import BadFARRange, check_query_far_range -from .query import parseQuery, ParseException ################################################################## @@ -73,7 +68,6 @@ from rest_framework.views import APIView MAX_FAILED_OPEN_ATTEMPTS = 5 -from .forms import SimpleSearchForm ################################################################## diff --git a/gracedb/events/urls.py b/gracedb/events/urls.py index 9cc42644ad89093c72d022c683e7ff6fc2dab84c..4825c55f4daac749ded281d31901ec602c88fdf3 100644 --- a/gracedb/events/urls.py +++ b/gracedb/events/urls.py @@ -6,7 +6,7 @@ from django.conf.urls import url from . import views #import django.views.generic.list_detail -from .api import download +from .api.views import download urlpatterns = [ url(r'^$', views.index, name="home-events"),