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)
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)
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)
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)
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