Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 22 additions & 1 deletion TM1py/Services/ApplicationService.py
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
import json
from typing import Union

from requests import Response
Expand Down Expand Up @@ -162,6 +163,26 @@ def delete(self, path: str, application_type: Union[str, ApplicationTypes], appl
application_name=application_name)
return self._rest.DELETE(url, **kwargs)

def rename(self, path: str, application_type: Union[str, ApplicationTypes], application_name: str,
new_application_name: str, private: bool = False, **kwargs):
# raise ValueError if not a valid ApplicationType
application_type = ApplicationTypes(application_type)

if not application_type == ApplicationTypes.FOLDER:
application_name += application_type.suffix

contents = 'PrivateContents' if private else 'Contents'
mid = ""
if path.strip() != '':
mid = "".join([format_url("/Contents('{}')", element) for element in path.split('/')])

url = format_url(
"/api/v1/Contents('Applications')" + mid + "/" + contents + "('{application_name}')/tm1.Move",
application_name=application_name)
data = {"Name": new_application_name}

return self._rest.POST(url, data=json.dumps(data), **kwargs)

def create(self, application: Union[Application, DocumentApplication], private: bool = False, **kwargs) -> Response:
""" Create Planning Analytics application

Expand All @@ -186,7 +207,7 @@ def create(self, application: Union[Application, DocumentApplication], private:

return response

def update_or_create_document_from_file(self, path: str, name: str,
def update_or_create_document_from_file(self, path: str, name: str,
path_to_file: str, private: bool = False, **kwargs) -> Response:
"""Update or create application from file

Expand Down
112 changes: 101 additions & 11 deletions Tests/ApplicationService_test.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,8 @@ class TestApplicationService(unittest.TestCase):
prefix + 'Dimension2',
prefix + 'Dimension3']

rename_suffix = "_New"

@classmethod
def setUpClass(cls) -> None:
"""
Expand Down Expand Up @@ -157,12 +159,21 @@ def run_cube_application(self, private):
app.path, name=app.name, application_type=ApplicationTypes.CUBE, private=private)
self.assertTrue(exists)

self.tm1.applications.delete(app.path, app.application_type, app.name, private=private)
self.tm1.applications.rename(app.path, application_type=ApplicationTypes.CUBE,
application_name=app.name, new_application_name=app.name + self.rename_suffix,
private=private)
exists = self.tm1.applications.exists(
app.path, name=app.name, application_type=ApplicationTypes.CUBE, private=private)
self.assertFalse(exists)
exists = self.tm1.applications.exists(
app.path, name=app.name + self.rename_suffix, application_type=ApplicationTypes.CUBE, private=private)
self.assertTrue(exists)

self.tm1.applications.delete(app.path, app.application_type, app.name + self.rename_suffix, private=private)
exists = self.tm1.applications.exists(
app.path, name=app.name + self.rename_suffix, application_type=ApplicationTypes.CUBE, private=private)
self.assertFalse(exists)

@unittest.skip
def test_cube_application_private(self):
self.run_cube_application(private=True)

Expand All @@ -178,10 +189,20 @@ def run_chore_application(self, private):
app.path, name=app.name, application_type=ApplicationTypes.CHORE, private=private)
self.assertTrue(exists)

self.tm1.applications.delete(app.path, app.application_type, app.name, private=private)
self.tm1.applications.rename(app.path, application_type=ApplicationTypes.CHORE,
application_name=app.name, new_application_name=app.name + self.rename_suffix,
private=private)
exists = self.tm1.applications.exists(
app.path, name=app.name, application_type=ApplicationTypes.CHORE, private=private)
self.assertFalse(exists)
exists = self.tm1.applications.exists(
app.path, name=app.name + self.rename_suffix, application_type=ApplicationTypes.CHORE, private=private)
self.assertTrue(exists)

self.tm1.applications.delete(app.path, app.application_type, app.name + self.rename_suffix, private=private)
exists = self.tm1.applications.exists(
app.path, name=app.name + self.rename_suffix, application_type=ApplicationTypes.CHORE, private=private)
self.assertFalse(exists)

@unittest.skip
def test_chore_application_private(self):
Expand All @@ -199,12 +220,21 @@ def run_dimension_application(self, private=False):
app.path, name=app.name, application_type=ApplicationTypes.DIMENSION, private=private)
self.assertTrue(exists)

self.tm1.applications.delete(app.path, app.application_type, app.name, private=private)
self.tm1.applications.rename(app.path, application_type=ApplicationTypes.DIMENSION,
application_name=app.name, new_application_name=app.name + self.rename_suffix,
private=private)
exists = self.tm1.applications.exists(
app.path, name=app.name, application_type=ApplicationTypes.DIMENSION, private=private)
self.assertFalse(exists)
exists = self.tm1.applications.exists(
app.path, name=app.name + self.rename_suffix, application_type=ApplicationTypes.DIMENSION, private=private)
self.assertTrue(exists)

self.tm1.applications.delete(app.path, app.application_type, app.name + self.rename_suffix, private=private)
exists = self.tm1.applications.exists(
app.path, name=app.name + self.rename_suffix, application_type=ApplicationTypes.DIMENSION, private=private)
self.assertFalse(exists)

@unittest.skip
def test_dimension_application_private(self):
self.run_dimension_application(private=True)

Expand All @@ -228,10 +258,20 @@ def run_document_application(self, private):
app.path, name=app.name, application_type=ApplicationTypes.DOCUMENT, private=private)
self.assertTrue(exists)

self.tm1.applications.delete(app.path, app.application_type, app.name, private=private)
self.tm1.applications.rename(app.path, application_type=ApplicationTypes.DOCUMENT,
application_name=app.name, new_application_name=app.name + self.rename_suffix,
private=private)
exists = self.tm1.applications.exists(
app.path, name=app.name, application_type=ApplicationTypes.DOCUMENT, private=private)
self.assertFalse(exists)
exists = self.tm1.applications.exists(
app.path, name=app.name + self.rename_suffix, application_type=ApplicationTypes.DOCUMENT, private=private)
self.assertTrue(exists)

self.tm1.applications.delete(app.path, app.application_type, app.name + self.rename_suffix, private=private)
exists = self.tm1.applications.exists(
app.path, name=app.name + self.rename_suffix, application_type=ApplicationTypes.DOCUMENT, private=private)
self.assertFalse(exists)

def test_document_application_private(self):
self.run_document_application(private=True)
Expand All @@ -248,10 +288,20 @@ def run_folder_application(self, private):
app.path, name=app.name, application_type=ApplicationTypes.FOLDER, private=private)
self.assertTrue(exists)

self.tm1.applications.delete(app.path, app.application_type, app.name, private=private)
self.tm1.applications.rename(app.path, application_type=ApplicationTypes.FOLDER,
application_name=app.name, new_application_name=app.name + self.rename_suffix,
private=private)
exists = self.tm1.applications.exists(
app.path, name=app.name, application_type=ApplicationTypes.FOLDER, private=private)
self.assertFalse(exists)
exists = self.tm1.applications.exists(
app.path, name=app.name + self.rename_suffix, application_type=ApplicationTypes.FOLDER, private=private)
self.assertTrue(exists)

self.tm1.applications.delete(app.path, app.application_type, app.name + self.rename_suffix, private=private)
exists = self.tm1.applications.exists(
app.path, name=app.name + self.rename_suffix, application_type=ApplicationTypes.FOLDER, private=private)
self.assertFalse(exists)

def test_run_folder_application_private(self):
self.run_folder_application(private=True)
Expand All @@ -268,10 +318,20 @@ def run_link_application(self, private):
app.path, name=app.name, application_type=ApplicationTypes.LINK, private=private)
self.assertTrue(exists)

self.tm1.applications.delete(app.path, app.application_type, app.name, private=private)
self.tm1.applications.rename(app.path, application_type=ApplicationTypes.LINK,
application_name=app.name, new_application_name=app.name + self.rename_suffix,
private=private)
exists = self.tm1.applications.exists(
app.path, name=app.name, application_type=ApplicationTypes.LINK, private=private)
self.assertFalse(exists)
exists = self.tm1.applications.exists(
app.path, name=app.name + self.rename_suffix, application_type=ApplicationTypes.LINK, private=private)
self.assertTrue(exists)

self.tm1.applications.delete(app.path, app.application_type, app.name + self.rename_suffix, private=private)
exists = self.tm1.applications.exists(
app.path, name=app.name + self.rename_suffix, application_type=ApplicationTypes.LINK, private=private)
self.assertFalse(exists)

def test_run_link_application_private(self):
self.run_link_application(True)
Expand All @@ -288,10 +348,20 @@ def run_process_application(self, private):
app.path, name=app.name, application_type=ApplicationTypes.PROCESS, private=private)
self.assertTrue(exists)

self.tm1.applications.delete(app.path, app.application_type, app.name, private=private)
self.tm1.applications.rename(app.path, application_type=ApplicationTypes.PROCESS,
application_name=app.name, new_application_name=app.name + self.rename_suffix,
private=private)
exists = self.tm1.applications.exists(
app.path, name=app.name, application_type=ApplicationTypes.PROCESS, private=private)
self.assertFalse(exists)
exists = self.tm1.applications.exists(
app.path, name=app.name + self.rename_suffix, application_type=ApplicationTypes.PROCESS, private=private)
self.assertTrue(exists)

self.tm1.applications.delete(app.path, app.application_type, app.name + self.rename_suffix, private=private)
exists = self.tm1.applications.exists(
app.path, name=app.name + self.rename_suffix, application_type=ApplicationTypes.PROCESS, private=private)
self.assertFalse(exists)

@unittest.skip
def test_process_application_private(self):
Expand All @@ -310,10 +380,20 @@ def run_subset_application(self, private):
app.path, name=app.name, application_type=ApplicationTypes.SUBSET, private=private)
self.assertTrue(exists)

self.tm1.applications.delete(app.path, app.application_type, app.name, private=private)
self.tm1.applications.rename(app.path, application_type=ApplicationTypes.SUBSET,
application_name=app.name, new_application_name=app.name + self.rename_suffix,
private=private)
exists = self.tm1.applications.exists(
app.path, name=app.name, application_type=ApplicationTypes.SUBSET, private=private)
self.assertFalse(exists)
exists = self.tm1.applications.exists(
app.path, name=app.name + self.rename_suffix, application_type=ApplicationTypes.SUBSET, private=private)
self.assertTrue(exists)

self.tm1.applications.delete(app.path, app.application_type, app.name + self.rename_suffix, private=private)
exists = self.tm1.applications.exists(
app.path, name=app.name + self.rename_suffix, application_type=ApplicationTypes.SUBSET, private=private)
self.assertFalse(exists)

@unittest.skip
def test_subset_application_private(self):
Expand All @@ -331,10 +411,20 @@ def run_view_application(self, private):
app.path, name=app.name, application_type=ApplicationTypes.VIEW, private=private)
self.assertTrue(exists)

self.tm1.applications.delete(app.path, app.application_type, app.name, private=private)
self.tm1.applications.rename(app.path, application_type=ApplicationTypes.VIEW,
application_name=app.name, new_application_name=app.name + self.rename_suffix,
private=private)
exists = self.tm1.applications.exists(
app.path, name=app.name, application_type=ApplicationTypes.VIEW, private=private)
self.assertFalse(exists)
exists = self.tm1.applications.exists(
app.path, name=app.name + self.rename_suffix, application_type=ApplicationTypes.VIEW, private=private)
self.assertTrue(exists)

self.tm1.applications.delete(app.path, app.application_type, app.name + self.rename_suffix, private=private)
exists = self.tm1.applications.exists(
app.path, name=app.name + self.rename_suffix, application_type=ApplicationTypes.VIEW, private=private)
self.assertFalse(exists)

@unittest.skip
def test_view_application_private(self):
Expand Down