Ejemplo n.º 1
0
 def get_rows(self, folder=''):
     rows = []
     attribs = collections.defaultdict(dict)
     field_groups, lookup_count = [[]], 0
     for field in self.fields.values():
         if isinstance(field, (UserField, LookupField)):
             lookup_count += 1
         if lookup_count >= 8:
             lookup_count = 0
             field_groups.append([])
         field_groups[-1].append(field)
     for field_group in field_groups:
         # Request all fields, not just the ones in the default view
         view_fields = E.ViewFields(*(E.FieldRef(Name=field.name)
                                      for field in field_group))
         #query_options = E.QueryOptions(E.ViewAttributes(Scope="Recursive"))
         query_options = E.QueryOptions(E.Folder(folder))
         xml = SP.GetListItems(SP.listName(self.id), SP.rowLimit("100000"),
                               SP.viewFields(view_fields),
                               SP.queryOptions(query_options))
         response = self.opener.post_soap(LIST_WEBSERVICE, xml)
         for row in list(response[0][0][0]):
             attrib = attribs[row.attrib['ows_ID']]
             attrib.update(row.attrib)
     for attrib in attribs.values():
         rows.append(self.Row(attrib=attrib))
     return list(rows)
Ejemplo n.º 2
0
 def get_rows(self, folder=''):
     rows = []
     attribs = collections.defaultdict(dict)
     field_groups, lookup_count = [[]], 0
     for field in self.fields.values():
         if isinstance(field, (UserField, LookupField)):
             lookup_count += 1
         if lookup_count >= 8:
             lookup_count = 0
             field_groups.append([])
         field_groups[-1].append(field)
     for field_group in field_groups:
         # Request all fields, not just the ones in the default view
         view_fields = E.ViewFields(*(E.FieldRef(Name=field.name) for field in field_group))
         #query_options = E.QueryOptions(E.ViewAttributes(Scope="Recursive"))
         query_options = E.QueryOptions(E.Folder(folder))
         xml = SP.GetListItems(SP.listName(self.id),
                               SP.rowLimit("100000"),
                               SP.viewFields(view_fields),
                               SP.queryOptions(query_options))
         response = self.opener.post_soap(LIST_WEBSERVICE, xml)
         for row in list(response[0][0][0]):
             attrib = attribs[row.attrib['ows_ID']]
             attrib.update(row.attrib)
         for attrib in attribs.values():
             rows.append(self.Row(attrib=attrib))
     return list(rows)
Ejemplo n.º 3
0
    def rows(self):
        if not hasattr(self, "_rows"):
            attribs = collections.defaultdict(dict)
            field_groups, lookup_count = [[]], 0
            for field in self.fields.values():
                if isinstance(field, (UserField, LookupField)):
                    lookup_count += 1
                if lookup_count >= 8:
                    lookup_count = 0
                    field_groups.append([])
                field_groups[-1].append(field)
            for field_group in field_groups:
                # Request all fields, not just the ones in the default view
                view_fields = E.ViewFields(*(E.FieldRef(Name=field.name) for field in field_group))
                xml = SP.GetListItems(SP.listName(self.id), SP.rowLimit("100000"), SP.viewFields(view_fields))
                response = self.opener.post_soap(LIST_WEBSERVICE, xml)
                for row in list(response[0][0][0]):
                    attrib = attribs[row.attrib["ows_ID"]]
                    attrib.update(row.attrib)

            self._rows = []
            for attrib in attribs.values():
                self._rows.append(self.Row(attrib=attrib))
        return list(self._rows)