def get(self, request, format=None, **kwargs): if 'id' in self.kwargs: try: #uri_to_iri( object = ProcessingRecord.objects.get(pk=self.kwargs['id']) except ProcessingRecord.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Specified id not found') else: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Not found') if request.accepted_renderer.format == 'html': return MyAPIResponse({'record_list': [object]}, template_name='processing_status/detail.html') serializer = ProcessingRecord_DbSerializer(object) return MyAPIResponse({'record_list': [serializer.data]})
def get(self, request, format=None, **kwargs): if 'id' in self.kwargs: try: object = PublisherInfo.objects.get(pk=uri_to_iri(self.kwargs['id'])) except PublisherInfo.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='ID parameter is not valid') else: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='ID not found') if request.accepted_renderer.format == 'html': return MyAPIResponse({'record_list': [object]}, template_name='processing_status/publisher_detail.html') serializer = PublisherInfo_DbSerializer(object) return MyAPIResponse({'record_list': [serializer.data]})
def get(self, request): objects = RDR_Active_Resources(affiliation='XSEDE', allocated=True, type='ALL', result='OBJECTS') serializer = RDRResource_Serializer(objects, many=True) return MyAPIResponse({'result_set': serializer.data})
def get(self, request, pk, format=None): try: object = AcceleratorEnvironment.objects.get(pk=uri_to_iri(pk)) # uri_to_iri translates %xx except AcceleratorEnvironment.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Not found') serializer = AcceleratorEnvironment_DbSerializer(object) return MyAPIResponse({'results': [serializer.data]})
def delete(self, request, pk, format=None): try: object = AcceleratorEnvironment.objects.get(pk=uri_to_iri(pk)) except AcceleratorEnvironment.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Not found') object.delete() return MyAPIResponse(None, code=status.HTTP_204_NO_CONTENT)
def get(self, request, format=None, **kwargs): if 'id' in self.kwargs: try: objects = [XSEDEPerson.objects.get(pk=self.kwargs['id'])] except XSEDEPerson.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Specified Person ID not found') except ValueError: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Specified Person ID is not valid') elif 'portalid' in self.kwargs: try: objects = XSEDEPerson.objects.filter( portal_login__exact=self.kwargs['portalid']) except XSEDEPerson.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Specified Portal ID not found') if len(objects) > 1: raise MyAPIException( code=status.HTTP_404_NOT_FOUND, detail='Unexpected multiple Portal ID found') serializer = XSEDEPerson_Serializer(objects, many=True) response_obj = {'results': serializer.data} return MyAPIResponse(response_obj, template_name='xdcdb/person_detail.html')
def get(self, request, format=None, **kwargs): import requests fullusername = None username = None if request.user.is_authenticated: fullusername = request.user.username username = fullusername[:fullusername.rfind("@")] if 'resourceid' in self.kwargs: try: localaccount = XSEDELocalUsermap.objects.get( ResourceID=self.kwargs['resourceid'], portal_login=username) except XSEDELocalUsermap.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='User not found in user database') try: objects = ComputingActivity.objects.filter( ResourceID__exact=self.kwargs['resourceid']).filter( EntityJSON__LocalOwner__exact=localaccount. local_username) except ComputingActivity.DoesNotExist: raise MyAPIException( code=status.HTTP_404_NOT_FOUND, detail='ResourceID and LocalAccount not found') else: raise MyAPIException(code=status.HTTP_400_BAD_REQUEST, detail='Invalid request') serializer = ComputingActivity_Expand_Serializer( objects, many=True, context={'request': request}) return MyAPIResponse({'result_set': serializer.data}, template_name='glue2_views_api/jobs.html')
def get(self, request, format=None): objects = AdminDomain.objects.all().order_by('Name') serializer = SupportContacts_Serializer(objects, context={'request': request}, many=True) response_obj = {'results': serializer.data} return MyAPIResponse(response_obj, template_name='xcsr_db/supportcontact_list.html')
def get(self, request, format=None, **kwargs): arg_id = request.GET.get('id', kwargs.get('id', None)) arg_affiliation = request.GET.get('affiliation', kwargs.get('affiliation', None)) arg_localid = request.GET.get('localid', kwargs.get('localid', None)) # Process optional arguments arg_fields = request.GET.get('fields', None) if arg_fields: want_fields = set(arg_fields.lower().split(',')) else: want_fields = set() if arg_id: try: final_objects = [ResourceV2.objects.get(pk=arg_id)] except ResourceV2.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Specified Global ID not found') elif arg_affiliation and arg_localid: try: final_objects = ResourceV2.objects.filter( Affiliation__exact=arg_affiliation).filter( LocalID__exact=arg_localid) except Exception as exc: raise MyAPIException(code=status.HTTP_400_BAD_REQUEST, detail='{}: {}'.format( type(exc).__name__, exc.message)) else: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Missing selection arguments') assoc_resources = [] # Retrieve associated resources for each_object in final_objects: # Loop forces evaluation, required in order to execute another Resources query assoc_ids = (each_object.Associations or '').split(',') assoc_res = ResourceV2.objects.filter( Affiliation__exact=each_object.Affiliation).filter( LocalID__in=assoc_ids) for res in assoc_res: assoc_hash = { 'id': res.LocalID, 'resource_name': res.Name, 'resource_desc': res.Description, 'topics': res.Topics, } assoc_resources.append(assoc_hash) break # breaking because we should have only have one item processed by this loop context = { 'associated_resources': assoc_resources, 'fields': want_fields } serializer = Resource_Detail_Serializer(final_objects, context=context, many=True) response_obj = {'results': serializer.data} return MyAPIResponse(response_obj, template_name='resource_v2/resource_detail.html')
def get(self, request, format=None): objects = RDR_Active_Resources_V2(affiliation='XSEDE', allocated=True, type='SUB', result='OBJECTS') serializer = SGCI_Resource_Serializer_010(objects, many=True) response_obj = {'results': serializer.data} return MyAPIResponse( response_obj, template_name='warehouse_views/sgci_resources.html')
def post(self, request, format=None): serializer = UserDomain_DbSerializer(data=request.data) if serializer.is_valid(): serializer.save() code = status.HTTP_201_CREATED data = serializer.data else: code = status.HTTP_400_BAD_REQUEST data = serializer.errors return MyAPIResponse({'results': data}, code=code)
def get(self, request, format=None, **kwargs): try: sort_by = request.GET.get('sort') objects = TGResource.objects.all().order_by(sort_by) except: objects = TGResource.objects.all() serializer = XSEDEResource_DetailURL_Serializer( objects, context={'request': request}, many=True) response_obj = {'results': serializer.data} return MyAPIResponse(response_obj, template_name='xdcdb/resource_list.html')
def get(self, request, format=None, **kwargs): if 'id' in self.kwargs: try: objects = [TGResource.objects.get(pk=self.kwargs['id'])] except TGResource.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Specified Resource ID not found') serializer = XSEDEResourcePublished_Serializer(objects, many=True) response_obj = {'results': serializer.data} return MyAPIResponse(response_obj, template_name='xdcdb/resource_detail.html')
def get(self, request, format=None, **kwargs): if 'resourceid' in self.kwargs: try: objects = RDRResource.objects.filter(info_resourceid__exact=uri_to_iri(self.kwargs['resourceid'])).filter(rdr_type__in=['compute','storage']) except RDRResource.DoesNotExist: raise MyAPIException(code=status.HTTP_400_BAD_REQUEST) else: objects = RDR_Active_Resources(affiliation='XSEDE', allocated=False, type='SUB', result='OBJECTS') serializer = Resource_Batch_Status_Serializer(objects, context={'request': request}, many=True) response_obj = {'results': serializer.data} return MyAPIResponse(response_obj)
def get(self, request, format=None, **kwargs): if 'id' in self.kwargs: try: object = ComputingActivity.objects.get(pk=self.kwargs['id']) except ComputingActivity.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='ID not found') else: raise MyAPIException(code=status.HTTP_400_BAD_REQUEST, detail='Invalid request') serializer = ComputingActivity_Expand_Serializer(object) return MyAPIResponse({'result_set': [serializer.data]}, template_name='glue2_views_api/job_detail.html')
def get(self, request, format=None, **kwargs): try: int(self.kwargs['id']) object = RDRResource.objects.get(pk=self.kwargs['id']) except ValueError: raise MyAPIException(code=status.HTTP_400_BAD_REQUEST, detail='ID parameter is not valid') except RDRResource.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Specified ID not found') serializer = RDRResource_Serializer(object) return MyAPIResponse({'result_set': [serializer.data]}, template_name='rdr_db/detail.html')
def get(self, request, format=None, **kwargs): if 'doctype' not in self.kwargs: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Missing /doctype/.. argument') arg_doctype = kwargs['doctype'] try: dt = request.GET.get('start_date', None) pdt = parse_datetime(dt) if pdt is None: # If it was only a date try adding the time pdt = parse_datetime(dt + 'T00:00:00.0+00:00') if pdt is None: raise Exception arg_startdate = pdt.astimezone(UTC).strftime('%Y-%m-%dT%H:%M:%S%z') except: arg_startdate = None try: dt = request.GET.get('end_date', None) pdt = parse_datetime(dt) if pdt is None: # If it was only a date try adding the time pdt = parse_datetime(dt + 'T23:59:59.0+00:00') if pdt is None: raise Exception arg_enddate = (pdt.astimezone(UTC) + timedelta(seconds=1)).strftime('%Y-%m-%dT%H:%M:%S%z') except: arg_enddate = None arg_resourceid = request.GET.get('resourceid', None) arg_fields = request.GET.get('fields', None) if arg_fields: want_fields = set(arg_fields.lower().split(',')) else: want_fields = set() objects = EntityHistory.objects.filter(DocumentType=arg_doctype) if arg_resourceid: objects = objects.filter(ResourceID=arg_resourceid) # String Comparison if arg_startdate: objects = objects.filter(ReceivedTime__gte=arg_startdate) # String Comparison if arg_enddate: objects = objects.filter(ReceivedTime__lt=arg_enddate) # String Comparison if '__usage__' in want_fields: serializer = EntityHistory_Usage_Serializer(objects, many=True) else: serializer = EntityHistory_DbSerializer(objects, many=True) response_obj = {'results': serializer.data} response_obj['total_results'] = len(objects) return MyAPIResponse(response_obj)
def get(self, request, format=None): csa_resources = RDR_Active_Resources(affiliation='XSEDE', allocated=False, type='SUB', result='OBJECTS') objects = [] for res in csa_resources: if str(res.other_attributes.get('community_software_area', '')).lower() == 'true': objects.append(res) serializer = RDR_CSA_Serializer(objects, many=True) response_obj = {'results': serializer.data} return MyAPIResponse( response_obj, template_name='warehouse_views/csa_resources.html')
def put(self, request, pk, format=None): try: object = AcceleratorEnvironment.objects.get(pk=uri_to_iri(pk)) except AcceleratorEnvironment.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Not found') serializer = AcceleratorEnvironment_DbSerializer(object, data=request.data) if serializer.is_valid(): serializer.save() code = status.HTTP_201_CREATED data = serializer.data else: code = status.HTTP_400_BAD_REQUEST data = serializer.errors return MyAPIResponse({'results': data}, code=code)
def get(self, request, format=None, **kwargs): if 'about' in self.kwargs: try: object = ProcessingRecord.objects.filter(About__exact=uri_to_iri(self.kwargs['about'])).latest('ProcessingStart') except ProcessingRecord.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Specified about not found') elif 'topic' in self.kwargs: try: object = ProcessingRecord.objects.filter(Topic__exact=uri_to_iri(self.kwargs['topic'])).latest('ProcessingStart') except ProcessingRecord.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Specified topic not found') else: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Not found') serializer = ProcessingRecord_DbSerializer(object) return MyAPIResponse({'record_list': [serializer.data]}, template_name='processing_status/detail.html')
def get(self, request, format=None, **kwargs): returnformat = request.query_params.get('format', 'json') if not 'id' in self.kwargs: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Missing ID argument') try: objects = [XSEDEFos.objects.get(pk=self.kwargs['id'])] except XSEDEFos.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Specified FOS ID not found') serializer = XSEDEFos_Serializer(objects, many=True) response_obj = {'results': serializer.data} return MyAPIResponse(response_obj, template_name='xdcdb/fos_detail.html')
def get(self, request, format=None, **kwargs): if 'globalid' in self.kwargs: try: objects = AdminDomain.objects.filter( EntityJSON__GlobalID__exact=self.kwargs['globalid']) except AdminDomain.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Specified Global ID not found') if len(objects) > 1: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Unexpected multiple Global IDs found') serializer = SupportContacts_Serializer(objects, context={'request': request}, many=True) response_obj = {'results': serializer.data} return MyAPIResponse( response_obj, template_name='xcsr_db/supportcontact_detail.html')
def get(self, request, format=None, **kwargs): arg_affiliation = request.GET.get('affiliation', kwargs.get('affiliation', None)) if arg_affiliation: want_affiliation = set(arg_affiliation.split(',')) else: want_affiliation = set() arg_fields = request.GET.get('fields', None) if arg_fields: want_fields = set(arg_fields.lower().split(',')) else: want_fields = set() page = request.GET.get('page', None) page_size = request.GET.get('results_per_page', 25) response_obj = {} try: if want_affiliation: objects = ResourceV2.objects.filter( Affiliation__in=want_affiliation).values('Type').annotate( count=Count('Type')) else: objects = ResourceV2.objects.all().values('Type').values( 'Type').annotate(count=Count('Type')) response_obj['total_results'] = len(objects) if page: paginator = Paginator(objects, page_size) final_objects = paginator.page(page) response_obj['page'] = int(page) response_obj['total_pages'] = paginator.num_pages else: final_objects = objects except Exception as exc: raise MyAPIException(code=status.HTTP_400_BAD_REQUEST, detail='{}: {}'.format( type(exc).__name__, exc.message)) context = {'fields': want_fields} serializer = Resource_Types_Serializer(final_objects, context=context, many=True) response_obj['results'] = serializer.data return MyAPIResponse(response_obj, template_name='resource_v2/types_list.html')
def get(self, request, format=None, **kwargs): if 'resourceid' in self.kwargs: try: objects = ComputingQueue.objects.filter( ResourceID__exact=self.kwargs['resourceid']) except ComputingQueue.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='ResourceID not found') else: objects = ComputingQueue.objects.all() try: sort_by = request.GET.get('sort') except: sort_by = None serializer = ComputingQueue_Expand_Serializer( objects, many=True, context={'sort_by': sort_by}) return MyAPIResponse({'result_set': serializer.data}, template_name='glue2_views_api/jobqueues.html')
def get(self, request, format=None, **kwargs): returnformat = request.query_params.get('format', 'json') if 'id' in self.kwargs: try: objects = [TGResource.objects.get(pk=self.kwargs['id'])] except TGResource.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Specified Resource ID not found') elif 'resourceid' in self.kwargs: try: objects = TGResource.objects.filter( info_resourceid__exact=self.kwargs['resourceid']) except TGResource.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Specified Resource ID not found') serializer = XSEDEResource_Serializer(objects, many=True) response_obj = {'results': serializer.data} return MyAPIResponse(response_obj, template_name='xdcdb/resource_detail.html')
def get(self, request, format=None, **kwargs): if 'resourceid' in self.kwargs: try: objects = PublisherInfo.objects.filter(ResourceID__exact=uri_to_iri(self.kwargs['resourceid'])) except PublisherInfo.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Specified ResourceID not found') else: try: objects = PublisherInfo.objects.all() except PublisherInfo.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='No objects found') try: sort_by = request.GET.get('sort') objects_sorted = objects.order_by(sort_by) except: objects_sorted = objects serializer = PublisherInfo_DetailURL_DbSerializer(objects_sorted, context={'request': request}, many=True) return MyAPIResponse({'record_list': serializer.data}, template_name='processing_status/publisher_list.html')
def get(self, request, format=None, **kwargs): search_strings = kwargs.get('search_strings', request.GET.get('search_strings', None)) if search_strings is None or search_strings == '': raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Search string missing') sort_by = request.GET.get('sort', 'portal_login') match_mode = request.GET.get('match', 'any').lower() if match_mode == 'and': match_mode = 'all' elif match_mode == 'or': match_mode = 'any' try: query = None for word in search_strings.split(): if not query: query = (Q(portal_login__icontains=word) | Q(last_name__icontains=word) | Q(first_name__icontains=word) | Q(emails__icontains=word)) elif match_mode == 'all': query = query & (Q(portal_login__icontains=word) | Q(last_name__icontains=word) | Q(first_name__icontains=word) | Q(emails__icontains=word)) else: query = query | (Q(portal_login__icontains=word) | Q(last_name__icontains=word) | Q(first_name__icontains=word) | Q(emails__icontains=word)) objects = XSEDEPerson.objects.filter(query).order_by(sort_by) except XSEDEPerson.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='No persons match search string') serializer = XSEDEPerson_Serializer(objects, context={'request': request}, many=True) response_obj = {'results': serializer.data} return MyAPIResponse(response_obj, template_name='xdcdb/person_list.html')
def get(self, request, format=None, **kwargs): if 'id' in self.kwargs: try: objects = [ComputingActivity.objects.get(pk=self.kwargs['id'])] except ComputingActivity.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='ID not found') elif 'resourceid' in self.kwargs and 'queue' in self.kwargs: try: objects = ComputingActivity.objects.filter( ResourceID__exact=self.kwargs['resourceid']).filter( EntityJSON__Queue__exact=self.kwargs['queue']) except ComputingActivity.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='ResourceID and Queue not found') elif 'resourceid' in self.kwargs and 'localaccount' in self.kwargs: try: objects = ComputingActivity.objects.filter( ResourceID__exact=self.kwargs['resourceid']).filter( EntityJSON__LocalOwner__exact=self. kwargs['localaccount']) except ComputingActivity.DoesNotExist: raise MyAPIException( code=status.HTTP_404_NOT_FOUND, detail='ResourceID and LocalAccount not found') elif 'resourceid' in self.kwargs: try: objects = ComputingActivity.objects.filter( ResourceID__exact=self.kwargs['resourceid']) except ComputingActivity.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='ResourceID not found') else: raise MyAPIException(code=status.HTTP_400_BAD_REQUEST, detail='Invalid request') serializer = ComputingActivity_Expand_Serializer( objects, many=True, context={'request': request}) return MyAPIResponse({'result_set': serializer.data}, template_name='glue2_views_api/jobs.html')
def get(self, request, format=None, **kwargs): import requests fullusername = None username = None if request.user.is_authenticated: fullusername = request.user.username username = fullusername[:fullusername.rfind("@")] try: localaccounts = XSEDELocalUsermap.objects.filter( portal_login=username) except XSEDELocalUsermap.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='User not found in user database') localusernames = [] resourceusers = {} for account in localaccounts: localuser = account.local_username localusernames.append(localuser) resourceusers[account.ResourceID + localuser] = True try: objects = ComputingActivity.objects.filter( EntityJSON__LocalOwner__in=localusernames) except ComputingActivity.DoesNotExist: raise MyAPIException( code=status.HTTP_404_NOT_FOUND, detail='ResourceID and LocalAccount not found') jobstoreturn = [] for job in objects: if resourceusers.get( job.ResourceID + job.EntityJSON['LocalOwner'], False): jobstoreturn.append(job) else: raise MyAPIException(code=status.HTTP_400_BAD_REQUEST, detail='Invalid request') serializer = ComputingActivity_Expand_Serializer( jobstoreturn, many=True, context={'request': request}) return MyAPIResponse({'result_set': serializer.data}, template_name='glue2_views_api/jobs.html')
def get(self, request, format=None, **kwargs): arg_id = request.GET.get('id', kwargs.get('id', None)) arg_affiliation = request.GET.get('affiliation', kwargs.get('affiliation', None)) arg_localid = request.GET.get('localid', kwargs.get('localid', None)) # Process optional arguments arg_fields = request.GET.get('fields', None) if arg_fields: want_fields = set(arg_fields.lower().split(',')) else: want_fields = set() if arg_id: try: final_objects = [ResourceV2Guide.objects.get(pk=arg_id)] except ResourceV2Guide.DoesNotExist: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Specified Global ID not found') elif arg_affiliation and arg_localid: try: final_objects = ResourceV2Guide.objects.filter( Affiliation__exact=arg_affiliation).filter( LocalID__exact=arg_localid) except Exception as exc: raise MyAPIException(code=status.HTTP_400_BAD_REQUEST, detail='{}: {}'.format( type(exc).__name__, exc.message)) else: raise MyAPIException(code=status.HTTP_404_NOT_FOUND, detail='Missing selection arguments') context = {'fields': want_fields} serializer = Guide_Detail_Serializer(final_objects, context=context, many=True) response_obj = {'results': serializer.data} return MyAPIResponse(response_obj, template_name='resource_v2/guide_detail.html')