Beispiel #1
0
import uuid

from TM1py.Objects import Subset
from TM1py.Services import TM1Service


with TM1Service(address='localhost', port=12354, user='******', password='******', ssl=True) as tm1:

    # get a random string that we can use a subset name
    subset_name = str(uuid.uuid4())

    # create subset
    s = Subset(dimension_name='Plan_Department', subset_name=subset_name, alias='', elements=['200', '405', '410'])
    tm1.dimensions.subsets.create(s, True)

    # get it and print out the elements
    s = tm1.dimensions.subsets.get(dimension_name='Plan_Department', subset_name=subset_name, private=True)
    print(s.elements)

    # update it
    s.add_elements(['105', '115'])
    tm1.dimensions.subsets.update(s, True)

    # get it and print out the elements
    s = tm1.dimensions.subsets.get(dimension_name='Plan_Department', subset_name=subset_name, private=True)
    print(s.elements)

    # delete it
    tm1.dimensions.subsets.delete(dimension_name='Plan_Department', subset_name=subset_name, private=True)

Beispiel #2
0
import uuid

from TM1py.Objects import Subset
from TM1py.Services import TM1Service

config = configparser.ConfigParser()
config.read('..\config.ini')

with TM1Service(**config['tm1srv01']) as tm1:
    # get a random string that we can use a subset name
    subset_name = str(uuid.uuid4())

    # create subset
    s = Subset(dimension_name='Plan_Department', subset_name=subset_name, alias='', elements=['200', '405', '410'])
    tm1.dimensions.subsets.create(s, True)

    # get it and print out the elements
    s = tm1.dimensions.subsets.get(dimension_name='Plan_Department', subset_name=subset_name, private=True)
    print(s.elements)

    # update it
    s.add_elements(['105', '115'])
    tm1.dimensions.subsets.update(s, True)

    # get it and print out the elements
    s = tm1.dimensions.subsets.get(dimension_name='Plan_Department', subset_name=subset_name, private=True)
    print(s.elements)

    # delete it
    tm1.dimensions.subsets.delete(dimension_name='Plan_Department', subset_name=subset_name, private=True)
Beispiel #3
0
class TestSubset(unittest.TestCase):
    @classmethod
    def setUpClass(cls):
        """
        Create any class scoped fixtures here.
        """

        cls.dimension_name = PREFIX + "dimension"
        cls.hierarchy_name = PREFIX + "hierarchy"
        cls.subset_name_static = PREFIX + "static_subset"
        cls.subset_name_dynamic = PREFIX + "dynamic_subset"
        cls.subset_name_minimal = PREFIX + "minimal_subset"
        cls.subset_name_complete = PREFIX + "complete_subset"
        cls.subset_name_alias = PREFIX + "alias_subset"
        cls.subset_name_anon = PREFIX + "anon_subset"
        cls.element_name = PREFIX + "element"

        cls.subset_dict = {
            "Name": "dict_subset",
            "UniqueName": f"[{cls.dimension_name}]",
            "Hierarchy": {
                "Name": f"{cls.hierarchy_name}"
            },
            "Alias": "dict_subset" + "_alias",
            "Elements": [{
                "Name": "x"
            }, {
                "Name": "y"
            }, {
                "Name": "z"
            }],
            "Expression": ""
        }

        cls.subset_json = '''
        {
            "Name": "json_subset",
            "UniqueName" : "json_subset",
            "Hierarchy": {
                "Name": "json_subset"
            },
            "Alias": "json_subset_alias",
            "Elements" : [
                {
                    "Name" : "xoy"
                },
                {
                    "Name": "o"
                },
                {
                    "Name": "xxx"
                }            
            ],
            "Expression" : ""
        }
        '''

    def setUp(self):
        """
        Instantiate subsets that will be available to all tests.
        """

        self.static_subset = Subset(dimension_name=self.dimension_name,
                                    subset_name=self.subset_name_static,
                                    elements=['USD', 'EUR', 'NZD', 'Dum\'my'])

        self.dynamic_subset = Subset(
            dimension_name=self.dimension_name,
            subset_name=self.subset_name_dynamic,
            expression='{ HIERARCHIZE( {TM1SUBSETALL( [' +
            self.dimension_name + '] )} ) }')

        # subset constructed from only the mandatory arguments
        self.minimal_subset = Subset(dimension_name=self.dimension_name,
                                     subset_name=self.subset_name_minimal)

        # a static subset constructed with optional arguments
        self.complete_subset = Subset(dimension_name=self.dimension_name,
                                      subset_name=self.subset_name_complete,
                                      hierarchy_name=self.hierarchy_name,
                                      alias=self.subset_name_alias,
                                      elements=["a", "b", "c"])

        # an instance of the AnonymoustSubset subclass
        self.anon_subset = AnonymousSubset(dimension_name=self.dimension_name,
                                           hierarchy_name=self.hierarchy_name,
                                           elements=["x", "y", "z"])

    def tearDown(self):
        """
        Remove any artifacts created.
        """
        # nothing required here, all objects will be reset by setUp
        pass

    def test_is_dynamic(self):
        self.assertTrue(self.dynamic_subset.is_dynamic)
        self.assertFalse(self.static_subset.is_dynamic)
        self.assertFalse(self.minimal_subset.is_dynamic)
        self.assertFalse(self.complete_subset.is_dynamic)
        self.assertFalse(self.anon_subset.is_dynamic)

    def test_is_static(self):
        self.assertFalse(self.dynamic_subset.is_static)
        self.assertTrue(self.static_subset.is_static)
        self.assertTrue(self.minimal_subset.is_static)
        self.assertTrue(self.complete_subset.is_static)
        self.assertTrue(self.anon_subset.is_static)

    def test_from_json(self):
        s = Subset.from_json(self.subset_json)
        self.assertEqual(s.name, "json_subset")
        self.assertEqual(s.elements, ["xoy", "o", "xxx"])

    def test_from_dict(self):
        s = Subset.from_dict(self.subset_dict)
        self.assertEqual(s.name, "dict_subset")
        self.assertEqual(s.elements, ["x", "y", "z"])

    def test_add_elements(self):
        self.static_subset.add_elements(["AUD", "CHF"])
        self.assertIn("AUD", self.static_subset.elements)
        self.assertIn("CHF", self.static_subset.elements)

    def test_anonymous_subset(self):
        self.assertEqual(self.anon_subset.name, "")

    def test_property_setters(self):
        self.minimal_subset.elements = ["1", "2", "3"]
        self.assertEqual(self.minimal_subset.elements, ["1", "2", "3"])

    def test_property_getters(self):
        self.assertEqual(self.complete_subset.name, self.subset_name_complete)
        self.assertEqual(self.dynamic_subset.name, self.subset_name_dynamic)
        self.assertEqual(self.static_subset.dimension_name,
                         self.dimension_name)
        self.assertEqual(self.minimal_subset.elements, [])
        self.assertIn("a", self.complete_subset.elements)

    def test_subset_equality(self):
        self.assertNotEqual(self.complete_subset, self.minimal_subset)
        self.assertNotEqual(self.complete_subset, self.anon_subset)
        self.assertNotEqual(self.complete_subset, self.static_subset)
        self.assertNotEqual(self.complete_subset, self.dynamic_subset)
        static_subset_copy = self.static_subset
        self.assertEqual(static_subset_copy, self.static_subset)

    @classmethod
    def tearDownClass(cls):
        """
        Tear down anything as required
        """
        # nothing to do here
        pass