예제 #1
0
파일: pdf.py 프로젝트: awriel/eden
    def get_resource_flowable(self, resource, doc):
        # get a list of fields, if the list_fields attribute is provided
        # then use that to extract the fields that are required, otherwise
        # use the list of readable fields.
        from s3.s3utils import S3DataTable

        if not self.list_fields:
            self.list_fields = []
            fields = resource.readable_fields()
            for field in fields:
                if field.type == "id":
                    continue
                if self.pdf_hide_comments and field.name == "comments":
                    continue
                self.list_fields.append(field.name)
        rfields = resource.resolve_selectors(self.list_fields)[0]
        (orderby, filter) = S3DataTable.getControlData(rfields, current.request.vars)
        resource.add_filter(filter)
        current.manager.ROWSPERPAGE = None  # needed to get all the data
        rows = resource._select(self.list_fields, orderby=orderby)
        data = resource._extract(rows, self.list_fields, represent=True)
        # Now generate the PDF table
        pdf_table = S3PDFTable(
            doc, rfields, data, groupby=self.pdf_groupby, autogrow=self.table_autogrow, body_height=doc.body_height
        ).build()
        return pdf_table
예제 #2
0
def organisation():
    """
        Function to handle pagination for the org list on the homepage
    """

    from s3.s3utils 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
예제 #3
0
def organisation():
    """
        Function to handle pagination for the org list on the homepage
    """

    from s3.s3utils 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,
                        "supply_list_1",
                        echo)
    else:
        raise HTTP(501, s3mgr.ERROR.BAD_FORMAT)
    return items
예제 #4
0
파일: xls.py 프로젝트: swapnashingre/eden
    def extractResource(self, resource, list_fields, report_groupby):
        """
            Extract the items from the resource

            @param resource: the resource
            @param list_fields: fields to include in list views
            @param report_groupby: a Field object of the field to group the records by
        """

        from s3.s3utils import S3DataTable
        s3 = current.response.s3

        # Use the title_list CRUD string for the title
        name = "title_list"
        tablename = resource.tablename
        crud_strings = s3.crud_strings.get(tablename, s3.crud_strings)
        not_found = s3.crud_strings.get(name, current.request.function)
        title = str(crud_strings.get(name, not_found))

        rfields = resource.resolve_selectors(list_fields)[0]

        types = []
        for f in rfields:
            if f.show:
                if f.field:
                    types.append(f.field.type)
                else:
                    # Virtual Field
                    types.append("string")

        lfields = []
        heading = {}
        for field in rfields:
            selector = "%s.%s" % (field.tname, field.fname)
            lfields.append(selector)
            heading[selector] = (field.label)

        (orderby, filter) = S3DataTable.getControlData(rfields,
                                                       current.request.vars)
        resource.add_filter(filter)
        current.manager.ROWSPERPAGE = None  # needed to get all the data
        rows = resource.select(
            list_fields,
            orderby=orderby,
        )
        items = resource.extract(
            rows,
            list_fields,
            represent=True,
        )

        return (title, types, lfields, heading, items)
예제 #5
0
파일: xls.py 프로젝트: andygimma/eden
    def extractResource(self, resource, list_fields, report_groupby):
        """
            Extract the items from the resource

            @param resource: the resource
            @param list_fields: fields to include in list views
            @param report_groupby: a Field object of the field to group the records by
        """

        from s3.s3utils import S3DataTable
        s3 = current.response.s3

        # Use the title_list CRUD string for the title
        name = "title_list"
        tablename = resource.tablename
        crud_strings = s3.crud_strings.get(tablename, s3.crud_strings)
        not_found = s3.crud_strings.get(name, current.request.function)
        title = str(crud_strings.get(name, not_found))

        rfields = resource.resolve_selectors(list_fields)[0]

        types = []
        for f in rfields:
            if f.show:
                if f.field:
                    types.append(f.field.type)
                else:
                    # Virtual Field
                    types.append("string")

        lfields = []
        heading = {}
        for field in rfields:
            if field.show:
                selector = "%s.%s" % (field.tname, field.fname)
                lfields.append(selector)
                heading[selector] = (field.label)

        (orderby, filter) = S3DataTable.getControlData(rfields, current.request.vars)
        resource.add_filter(filter)
        current.manager.ROWSPERPAGE = None # needed to get all the data
        rows = resource.select(list_fields,
                               orderby=orderby,
                               )
        items = resource.extract(rows,
                                 list_fields,
                                 represent=True,
                                 )

        return (title, types, lfields,  heading, items)
예제 #6
0
    def get_resource_flowable(self, resource, doc):
        """
            Get a list of fields, if the list_fields attribute is provided
            then use that to extract the fields that are required, otherwise
            use the list of readable fields.
        """

        from s3.s3utils import S3DataTable
        if not self.list_fields:
            self.list_fields = []
            fields = resource.readable_fields()
            for field in fields:
                if field.type == "id":
                    continue
                if self.pdf_hide_comments and field.name == "comments":
                    continue
                self.list_fields.append(field.name)
        rfields = resource.resolve_selectors(self.list_fields)[0]
        (orderby, filter) = S3DataTable.getControlData(rfields,
                                                       current.request.vars)
        resource.add_filter(filter)
        current.manager.ROWSPERPAGE = None  # needed to get all the data
        rows = resource.select(
            self.list_fields,
            orderby=orderby,
        )
        data = resource.extract(
            rows,
            self.list_fields,
            represent=True,
        )
        # Now generate the PDF table
        pdf_table = S3PDFTable(
            doc,
            rfields,
            data,
            groupby=self.pdf_groupby,
            autogrow=self.table_autogrow,
            body_height=doc.body_height,
        ).build()
        return pdf_table