def test_file_remove_file_by_key_success(self): key = ps.add_file( FileInfo("testFilerfks",ndb.Key("someKey","rfks") ) ) self.assertTrue(ps.remove_file_by_key(key))
def file_list_edit(request): authed_user = auth.get_current_user() if authed_user is None: return __unauthed_response() user_key = ps.get_user_key_by_id(authed_user.user_id()) try: actions = json.loads(request.raw_post_data) except ValueError: return HttpResponse(json.dumps({'error' : 'invalid request payload'}), content_type="application/json") if not isinstance(actions, list): return HttpResponse(json.dumps({'error' : 'Payload is not a list'}), content_type="application/json") res = [] for a in actions: #We can't do anything without a filename if 'filename' not in a: continue else: filename = a['filename'] if 'action' not in a: continue else: action = a['action'] res_fragment = { 'filename' : a['filename'], 'action' : a['action'] } if action == 'delete': file_entry = ps.get_file_by_name(DATA_BUCKET + '/' + filename) if file_entry is not None: ps.remove_file_by_key(file_entry.key) ds.delete(DATA_BUCKET + '/' + filename) ds.delete(INFO_BUCKET + '/' + filename + 'info.txt') ds.delete(INFO_BUCKET + '/' + filename + '.txt') ds.delete(GRAPH_BUCKET + '/' + filename + '.png') res_fragment.update( { 'success' : True } ) #Reinstate this when CE PAL is available #else: #res_fragment.update( { 'success' : False, 'error' : 'File does not exist.' } ) elif action == 'rename': if 'newname' not in a: res_fragment.update( { 'success' : False, 'error' : 'New name not specified' } ) else: file_entry = ps.get_file_by_name(DATA_BUCKET + '/' + filename) if file_entry is None: res_fragment.update( { 'success' : False, 'error' : 'File does not exist.' } ) else: file_entry.friendly_name = a['newname'] if ps.update_file(file_entry): res_fragment.update( { 'success' : True } ) else: res_fragment.update( { 'success' : False, 'error' : 'Could not rename file' } ) elif action == 'star' or action == 'unstar': file_entry = ps.get_file_by_name(DATA_BUCKET + '/' + filename) if file_entry is None: res_fragment.update( { 'success' : False, 'error' : 'File does not exist.' } ) else: fp_entry = ps.get_user_file_permissions(file_entry.key, user_key) if fp_entry is None: res_fragment.update( { 'success' : False, 'error' : 'Permissions entry not found' } ) else: if ps.modify_file_permissions_by_key(fp_entry.key, new_starred = (action == 'star')): res_fragment.update( { 'success' : True } ) else: res_fragment.update( { 'success' : False, 'error' : 'Could not update file' } ) elif action == 'recolour': if 'newcolour' not in a: res_fragment.update( { 'success' : False, 'error' : 'New colour not specified' } ) else: colour = a['newcolour'] chk_string = re.compile("^[A-Fa-f0-9]{6}$") if (chk_string.match(colour)): file_entry = ps.get_file_by_name(DATA_BUCKET + '/' + filename) if file_entry is None: res_fragment.update( { 'success' : False, 'error' : 'File does not exist.' } ) else: fp_entry = ps.get_user_file_permissions(file_entry.key, user_key) if fp_entry is None: res_fragment.update( { 'success' : False, 'error' : 'Permissions entry not found' } ) else: if ps.modify_file_permissions_by_key(fp_entry.key, new_colour = colour): res_fragment.update( { 'success' : True } ) else: res_fragment.update( { 'success' : False, 'error' : 'Could not update file' } ) else: res_fragment.update( { 'success' : False, 'error' : 'New colour invalid' } ) else: res_fragment.update( { 'success' : False, 'error' : 'Action not recognised' } ) res.append(res_fragment) return HttpResponse(json.dumps(res), content_type="application/json")