Пример #1
0
 def testSqlTableJSON(self):
     """
         render to a JSON Object
     """
     dt = S3DataTable(self.rfields, self.data)
     actual = dt.json("list_1", 1, 14, 14)
     # @todo: Need to add a test for the format returned
     #print actual
     dt = S3DataTable(self.rfields, self.data, start=3, limit=5)
     actual = dt.json("list_1", 1, 14, 14)
Пример #2
0
 def testSqlTableHTML(self):
     """
         render to an HTML TABLE
     """
     dt = S3DataTable(self.rfields, self.data)
     actual = dt.html(14, 14)
     # @todo: Need to add a test for the format returned
     #print actual
     dt = S3DataTable(self.rfields, self.data, start=3, limit=5)
     actual = dt.html(14, 14)
Пример #3
0
def organisation():
    """
        Function to handle pagination for the org list on the homepage
    """

    from s3.s3data import S3DataTable

    resource = s3db.resource("org_organisation")
    totalrows = resource.count()
    table = resource.table

    list_fields = ["id", "name"]
    limit = int(request.get_vars["iDisplayLength"]
                ) if request.extension == "aadata" else 1
    rfields = resource.resolve_selectors(list_fields)[0]
    (orderby, filter) = S3DataTable.getControlData(rfields, request.vars)
    resource.add_filter(filter)
    filteredrows = resource.count()
    if isinstance(orderby, bool):
        orderby = table.name
    rows = resource.select(
        list_fields,
        orderby=orderby,
        start=0,
        limit=limit,
    )
    data = resource.extract(
        rows,
        list_fields,
        represent=True,
    )
    dt = S3DataTable(rfields, data)
    dt.defaultActionButtons(resource)
    s3.no_formats = True
    if request.extension == "html":
        items = dt.html(
            totalrows,
            filteredrows,
            "org_list_1",
            dt_displayLength=10,
            dt_ajax_url=URL(
                c="default",
                f="organisation",
                extension="aadata",
                vars={"id": "org_list_1"},
            ),
        )
    elif request.extension.lower() == "aadata":
        limit = resource.count()
        if "sEcho" in request.vars:
            echo = int(request.vars.sEcho)
        else:
            echo = None
        items = dt.json(totalrows, filteredrows, "org_list_1", echo)
    else:
        raise HTTP(501, s3mgr.ERROR.BAD_FORMAT)
    return items
Пример #4
0
    def testInitOrderby(self):
        """
            test to check that the orderby property is set up correctly
            from different types of input.
        """
        table = self.resource.table
        dt = S3DataTable(self.rfields, self.data)
        expected = [[1, "asc"]]
        actual = dt.orderby
        self.assertEqual(expected, actual,
                         "1) %s not equal to %s" % (expected, actual))

        dt = S3DataTable(self.rfields, self.data, orderby=table.name)
        expected = [[3, "asc"]]
        actual = dt.orderby
        self.assertEqual(expected, actual,
                         "2) %s not equal to %s" % (expected, actual))

        dt = S3DataTable(self.rfields, self.data, orderby=~table.name)
        expected = [[3, "desc"]]
        actual = dt.orderby
        self.assertEqual(expected, actual,
                         "3) %s not equal to %s" % (expected, actual))

        dt = S3DataTable(self.rfields,
                         self.data,
                         orderby=table.office_type_id | table.name)
        expected = [[4, "asc"], [3, "asc"]]
        actual = dt.orderby
        self.assertEqual(expected, actual,
                         "4) %s not equal to %s" % (expected, actual))

        dt = S3DataTable(self.rfields,
                         self.data,
                         orderby=~table.office_type_id | table.name)
        expected = [[4, "desc"], [3, "asc"]]
        actual = dt.orderby
        self.assertEqual(expected, actual,
                         "5) %s not equal to %s" % (expected, actual))

        otable = current.s3db.org_organisation
        dt = S3DataTable(self.rfields,
                         self.data,
                         orderby=otable.name | ~table.office_type_id
                         | table.name)
        expected = [[1, "asc"], [4, "desc"], [3, "asc"]]
        actual = dt.orderby
        self.assertEqual(expected, actual,
                         "6) %s not equal to %s" % (expected, actual))
Пример #5
0
    def testDataTableInitialOrderby(self):
        """ Test the initial orderby for different types of input. """

        table = self.resource.table

        dt = S3DataTable(self.rfields, self.data)
        expected = [[1, "asc"]]
        actual = dt.orderby
        self.assertEqual(expected, actual)

        dt = S3DataTable(self.rfields, self.data, orderby=table.name)
        expected = [[3, "asc"]]
        actual = dt.orderby
        self.assertEqual(expected, actual)

        dt = S3DataTable(self.rfields, self.data, orderby=~table.name)
        expected = [[3, "desc"]]
        actual = dt.orderby
        self.assertEqual(expected, actual)

        dt = S3DataTable(self.rfields,
                         self.data,
                         orderby=table.office_type_id | table.name)
        expected = [[4, "asc"], [3, "asc"]]
        actual = dt.orderby
        self.assertEqual(expected, actual)

        dt = S3DataTable(self.rfields,
                         self.data,
                         orderby=~table.office_type_id | table.name)
        expected = [[4, "desc"], [3, "asc"]]
        actual = dt.orderby
        self.assertEqual(expected, actual)

        otable = current.s3db.org_organisation
        dt = S3DataTable(self.rfields,
                         self.data,
                         orderby=otable.name | ~table.office_type_id
                         | table.name)
        expected = [[1, "asc"], [4, "desc"], [3, "asc"]]
        actual = dt.orderby
        self.assertEqual(expected, actual)