Ejemplo n.º 1
0
    def _regional():
        """
            Regional Organisations
            - Filtered subset of Organisations
        """

        from s3 import S3FieldSelector, s3_request
        T = current.T

        s3request = s3_request("org", "organisation", extension="aadata")
        # (S3FieldSelector("project.id") != None) & \
        f = (S3FieldSelector("organisation_type_id$name").anyof(["Regional Organisation",
                                                                 "Regional Office",
                                                                 "Regional Center"]))
        s3request.resource.add_filter(f)

        field_list = [
            "id",
            "name",
            "acronym",
            (T("Type"), "organisation_type_id"),
            "website",
            "region",
            "year",
            (T("Notes"), "comments"),
        ]
        return (s3request, field_list)
Ejemplo n.º 2
0
    def _groups():
        """
            Committees/Mechanisms/Forums & Networks
            - Filtered subset of Organisations
        """

        from s3 import S3FieldSelector, s3_request
        T = current.T

        s3db = current.s3db
        table = s3db.org_organisation
        table.address = Field.Lazy(s3db.org_organisation_address)

        s3request = s3_request("org", "organisation", extension="aadata")
        #(S3FieldSelector("project.id") != None) & \
        f = (S3FieldSelector("organisation_type_id$name").anyof(["Committees/Mechanism/Forum",
                                                                 "Network"]))
        s3request.resource.add_filter(f)

        field_list = [
            "id",
            "name",
            "acronym",
            (T("Type"), "organisation_type_id"),
            "year",
            (T("Address"), "address"),
            (T("Notes"), "comments"),
        ]
        return (s3request, field_list)
Ejemplo n.º 3
0
    def testFilteringAnyNode(self):
        """ Test filtering of the tree with leafonly=False """

        uids = self.uids

        h = S3Hierarchy("test_hierarchy",
                        filter=S3FieldSelector("type") == "C",
                        leafonly=False)

        # Check nodes
        nodes = h.nodes
        expected = [
            "HIERARCHY1", "HIERARCHY1-1", "HIERARCHY1-2", "HIERARCHY1-2-2",
            "HIERARCHY2", "HIERARCHY2-1", "HIERARCHY2-1-1"
        ]
        self.assertEqual(len(nodes), len(expected))
        self.assertTrue(all(uids[uid] in nodes for uid in expected))

        # Check consistency
        for node in nodes.values():
            for child_id in node["s"]:
                self.assertTrue(child_id in nodes)
            parent_id = node["p"]
            if parent_id:
                self.assertTrue(parent_id in nodes)
Ejemplo n.º 4
0
    def _groups():
        """
        """

        from s3 import S3FieldSelector, s3_request
        T = current.T

        s3request = s3_request("org", "organisation", extension="aadata")
        #(S3FieldSelector("project.id") != None) & \
        f = (S3FieldSelector("organisation_type_id$name").anyof(
            ["Committees/Mechanism/Forum", "Network"]))
        s3request.resource.add_filter(f)

        field_list = [
            "id", "name", "acronym", (T("Type"), "organisation_type_id"),
            "year", "address", (T("Notes"), "comments")
        ]
        return (s3request, field_list)
Ejemplo n.º 5
0
    def _table(name, resource, field_list, limit=10, orderby="name"):
        """
        """

        from s3 import S3FieldSelector
        T = current.T

        fields = []
        cols = []
        for field_name in field_list:
            if isinstance(field_name, tuple):
                field_label = field_name[0]
                field_name = field_name[1]
            else:
                field_label = None

            fs = S3FieldSelector(field_name)
            list_field = fs.resolve(resource)

            if list_field.field != None:
                field = list_field.field
            else:
                field = field_name

            if field_label is None:
                if list_field.field is not None:
                    field_label = field.label
                else:
                    field_label = " ".join([
                        w.capitalize()
                        for w in field_name.split(".")[-1].split("_")
                    ])

            fields.append(field)
            cols.append({"name": field_name, "label": field_label})

            if orderby and str(orderby) == str(field_name):
                orderby = field

        records = resource.select(
            fields=field_list,
            start=None,
            limit=None,
            orderby=orderby,
            #as_page=True,
        )

        if records is None:
            records = []

        rows = []
        represent = current.manager.represent
        for record in records:
            row = []

            for field in fields:
                row.append(represent(field=field, record=record))

            rows.append(row)

        options = json.dumps({
            "iDisplayLength":
            limit,
            "iDeferLoading":
            resource.count(),
            "bProcessing":
            True,
            #"bServerSide": True,
            #"sAjaxSource": "/%s/default/index/organisations/?table=%s" % (current.request.application, name),
            "aoColumnDefs": [{
                "bVisible": False,
                "aTargets": [0]
            }],
            "aoColumns": [{
                "sName": col["name"]
            } for col in cols],
            "sDom":
            'rifpl<"dataTable_table"t>p'
        })

        table = Storage(cols=cols,
                        rows=rows,
                        options=options,
                        classes="dataTable display")

        return table