def get_queryset(self): listing_type = self.request.query_params.get('type', None) if listing_type: queryset = model_access.get_self_application_library_by_listing_type(self.request.user.username, listing_type) else: queryset = model_access.get_self_application_library(self.request.user.username) return queryset
def test_get_self_application_library(self): results = model_access.get_self_application_library('bigbrother') self.assertEquals(len(results), 21) folder_names = [] for application_library_entry in results: if application_library_entry.folder: folder_names.append(application_library_entry.folder) self.assertEquals(len(folder_names), 15) results = model_access.get_self_application_library('bigbrother', folder_name=folder_names[0]) self.assertEquals(len(results), 3) results = model_access.get_self_application_library('DoesNotExistUser') self.assertIsNone(results) results = model_access.get_self_application_library('bigbrother', listing_type='Web Application') self.assertEquals(len(results), 18)
def test_get_self_application_library(self): results = model_access.get_self_application_library('bigbrother') self.assertEquals(len(results), 21) folder_names = [] for application_library_entry in results: if application_library_entry.folder: folder_names.append(application_library_entry.folder) self.assertEquals(len(folder_names), 15) results = model_access.get_self_application_library('bigbrother', folder_name=folder_names[0]) self.assertEquals(len(results), 3) results = model_access.get_self_application_library('DoesNotExistUser') self.assertIsNone(results) results = model_access.get_self_application_library('bigbrother', listing_type='Web Application') self.assertEquals(len(results), 18)
def test_create_self_user_library_entry(self): results = model_access.create_self_user_library_entry('bigbrother', 1) self.assertIsNotNone(results) results = model_access.create_self_user_library_entry('bigbrother', 1, position=3) self.assertIsNotNone(results) model_access.create_self_user_library_entry('bigbrother', 33) results = model_access.get_self_application_library('bigbrother') self.assertEquals(results.reverse()[0].listing.id, 33)
def test_create_self_user_library_entry(self): results = model_access.create_self_user_library_entry('bigbrother', 1) self.assertIsNotNone(results) results = model_access.create_self_user_library_entry('bigbrother', 1, position=3) self.assertIsNotNone(results) model_access.create_self_user_library_entry('bigbrother', 33) results = model_access.get_self_application_library('bigbrother') self.assertEquals(results.reverse()[0].listing.id, 33)
def delete_folder(self, request, pk): """ Remove a Listing from the current user's library (unbookmark) and all listings from the current user with the same folderName Delete by library id, not listing id """ queryset = self.get_queryset() library_entry = get_object_or_404(queryset, pk=pk) listing_type = self.request.query_params.get('type', None) entries_in_folder = model_access.get_self_application_library(self.request.user.username, listing_type, library_entry.folder) entries_in_folder.delete() return Response(status=status.HTTP_204_NO_CONTENT)
def delete_folder(self, request, pk): """ Remove a Listing from the current user's library (unbookmark) and all listings from the current user with the same folderName Delete by library id, not listing id """ queryset = self.get_queryset() library_entry = get_object_or_404(queryset, pk=pk) listing_type = self.request.query_params.get('type', None) entries_in_folder = model_access.get_self_application_library( self.request.user.username, listing_type, library_entry.folder) entries_in_folder.delete() return Response(status=status.HTTP_204_NO_CONTENT)
def get_queryset(self): return model_access.get_self_application_library( self.request.user.username)
def get_queryset(self): listing_type = self.request.query_params.get('type', None) queryset = model_access.get_self_application_library( self.request.user.username, listing_type) return queryset
def validate(self, validated_data): """ Responsible of cleaning and validating user input data """ validated_data['error'] = None initial_data = self.initial_data username = self.context['request'].user.username # Check for notification types key_type_list = [] if 'listing' in initial_data: key_type_list.append('listing') if 'agency' in initial_data: key_type_list.append('agency') if 'peer' in initial_data: key_type_list.append('peer') if len(key_type_list) >= 2: raise serializers.ValidationError('Notifications can only be one type. Input: {0}'.format(key_type_list)) if 'message' not in validated_data and self.context['request'].method == 'POST': raise serializers.ValidationError('Messsage field is required for POST Request') # TODO: Figure how to get listing data using validated data listing = initial_data.get('listing') if listing: if listing.get('id'): try: validated_data['listing'] = listing_model_access.get_listing_by_id( username, initial_data['listing']['id'], True) except ObjectDoesNotExist: raise serializers.ValidationError('Could not find listing') else: raise serializers.ValidationError('Valid Listing ID is required') else: validated_data['listing'] = None # Agency Validation agency = initial_data.get('agency') if agency: if agency.get('id'): try: validated_data['agency'] = agency_model_access.get_agency_by_id( initial_data['agency']['id'], True) except ObjectDoesNotExist: raise serializers.ValidationError('Could not find agency') else: raise serializers.ValidationError('Valid Agency ID is required') else: validated_data['agency'] = None # Peer Validation peer = initial_data.get('peer') if peer: temp_peer = {} if peer.get('user'): temp_peer['user'] = peer.get('user') if peer.get('folder_name'): temp_peer['folder_name'] = peer.get('folder_name') target_username = temp_peer.get('user', {}).get('username') if not target_username: raise serializers.ValidationError('Valid Username is Required') target_username_profile = generic_model_access.get_profile(target_username) if not target_username_profile: raise serializers.ValidationError('Valid User is Required') # Folder Validation - Optional Field temp_folder_name = temp_peer.get('folder_name') if temp_folder_name: library_query = library_model_access.get_self_application_library(username, folder_name=temp_folder_name) temp_peer['_bookmark_listing_ids'] = [library_query_entry.listing.id for library_query_entry in library_query] # temp_peer['_user_folders'] = library_serializers.UserLibrarySerializer(library_query, # many=True, context={'request': self.context['request']}).data if len(temp_peer['_bookmark_listing_ids']) == 0: raise serializers.ValidationError('No entries in target folder') validated_data['peer'] = temp_peer else: validated_data['peer'] = None return validated_data
def validate(self, validated_data): """ Responsible of cleaning and validating user input data """ validated_data['error'] = None initial_data = self.initial_data username = self.context['request'].user.username # Check for notification types key_type_list = [] if 'listing' in initial_data: key_type_list.append('listing') if 'agency' in initial_data: key_type_list.append('agency') if 'peer' in initial_data: key_type_list.append('peer') if len(key_type_list) >= 2: raise serializers.ValidationError( 'Notifications can only be one type. Input: {0}'.format( key_type_list)) if 'message' not in validated_data and self.context[ 'request'].method == 'POST': raise serializers.ValidationError( 'Messsage field is required for POST Request') # TODO: Figure how to get listing data using validated data listing = initial_data.get('listing') if listing: if listing.get('id'): try: validated_data[ 'listing'] = listing_model_access.get_listing_by_id( username, initial_data['listing']['id'], True) except ObjectDoesNotExist: raise serializers.ValidationError('Could not find listing') else: raise serializers.ValidationError( 'Valid Listing ID is required') else: validated_data['listing'] = None # Agency Validation agency = initial_data.get('agency') if agency: if agency.get('id'): try: validated_data[ 'agency'] = agency_model_access.get_agency_by_id( initial_data['agency']['id'], True) except ObjectDoesNotExist: raise serializers.ValidationError('Could not find agency') else: raise serializers.ValidationError( 'Valid Agency ID is required') else: validated_data['agency'] = None # Peer Validation peer = initial_data.get('peer') if peer: temp_peer = {} if peer.get('user'): temp_peer['user'] = peer.get('user') if peer.get('folder_name'): temp_peer['folder_name'] = peer.get('folder_name') target_username = temp_peer.get('user', {}).get('username') if not target_username: raise serializers.ValidationError('Valid Username is Required') target_username_profile = generic_model_access.get_profile( target_username) if not target_username_profile: raise serializers.ValidationError('Valid User is Required') validated_data['entity_target'] = target_username_profile validated_data['entity_id'] = target_username_profile.pk # Folder Validation - Optional Field temp_folder_name = temp_peer.get('folder_name') if temp_folder_name: library_query = library_model_access.get_self_application_library( username, folder_name=temp_folder_name) temp_peer['_bookmark_listing_ids'] = [ library_query_entry.listing.id for library_query_entry in library_query ] # temp_peer['_user_folders'] = library_serializers.UserLibrarySerializer(library_query, # many=True, context={'request': self.context['request']}).data if len(temp_peer['_bookmark_listing_ids']) == 0: raise serializers.ValidationError( 'No entries in target folder') validated_data['peer'] = temp_peer else: validated_data['peer'] = None return validated_data