def file_edit(request, file_id): context = {} current_user = request.user # TODO: Do this consistently across all of the views if not current_user: return render('login') # Save the file changes and get the updated file's information if request.method == "POST": new_content = request.POST.get('content') file_info = FileRepo.publish_new_version( current_user.id, file_id, new_content) err_cond = "File publish failed" # Get the file the user requested for edit else: file_info = FileRepo.get_file(current_user.id, file_id) err_cond = "File does not exist" # No file information to present...deal with the error if not file_info: context['error'] = err_cond # File contents for user to proceed with editing else: context['id'] = file_info['id'] context['name'] = file_info['name'] context['content'] = file_info['content_text'] return render(request, 'app/file_edit.html', context)
def test_file_publish_new_version(self): # GIVEN # ====== # Create a new folder test_folder = FolderRepo.create_folder(self.user.id, 'folder1') self.assertIsNotNone(test_folder) # Create a new file test_file = FileRepo.create_file(self.user.id, test_folder['id'], 'test.txt', 'Hello World') # WHEN # ==== # Publish a new version of the file updated_file = FileRepo.publish_new_version(self.user.id, test_file['id'], 'Bye World') # THEN # ==== # Make sure the updated file looks good self.assertEqual(updated_file['id'], test_file['id']) self.assertEqual(updated_file['name'], test_file['name']) self.assertEqual(updated_file['content_text'], 'Bye World') self.assertGreater(updated_file['version'], test_file['version']) # Pull the file and make sure it look database contents look good db_file = FileRepo.get_file(self.user.id, test_file['id']) # File should be the same as updated_file self.assertDictEqual(db_file, updated_file)
def test_file_publish_multiple_new_versions(self): # GIVEN # ====== # Create a new folder test_folder = FolderRepo.create_folder(self.user.id, 'folder1') self.assertIsNotNone(test_folder) # Create a new file test_file = FileRepo.create_file(self.user.id, test_folder['id'], 'test.txt', 'Hello World') # WHEN # ==== # Publish multiple new versions of the file FileRepo.publish_new_version(self.user.id, test_file['id'], 'Bye World1') FileRepo.publish_new_version(self.user.id, test_file['id'], 'Bye World2') FileRepo.publish_new_version(self.user.id, test_file['id'], 'Bye World3') # THEN # ==== # Make sure the updated file looks good db_file = FileRepo.get_file(self.user.id, test_file['id']) self.assertEqual(db_file['id'], test_file['id']) self.assertEqual(db_file['name'], test_file['name']) self.assertEqual(db_file['content_text'], 'Bye World3') self.assertEqual(db_file['version'], 3)
def test_file_get_after_create(self): test_folder = FolderRepo.create_folder(self.user.id, 'folder1') self.assertIsNotNone(test_folder) test_file_create = FileRepo.create_file(self.user.id, test_folder['id'], 'test.txt', 'Hello, World') self.assertIsNotNone(test_file_create) # Correct user test_file_get_good = FileRepo.get_file(self.user.id, test_file_create['id']) # Wrong user test_file_get_bad = FileRepo.get_file(self.user_two.id, test_file_create['id']) self.assertDictEqual(test_file_get_good, test_file_create) self.assertIsNone(test_file_get_bad)
def file(request, file_id): context = {} current_user = request.user if current_user: file_info = FileRepo.get_file(current_user.id, file_id) if not file_info: return redirect('index') context['id'] = file_info['id'] context['name'] = file_info['name'] context['content'] = file_info['content_text'] return render(request, 'app/file.html', context)