@@ -348,10 +348,14 @@ def _read(self, getter: Callable, params: MutableMapping[str, Any] = None) -> It
348
348
if not next_page_token :
349
349
break
350
350
351
- def read (self , getter : Callable , params : Mapping [str , Any ] = None ) -> Iterator :
351
+ def read (self , getter : Callable , params : Mapping [str , Any ] = None , filter_old_records : bool = True ) -> Iterator :
352
352
default_params = {self .limit_field : self .limit }
353
353
params = {** default_params , ** params } if params else {** default_params }
354
- yield from self ._filter_old_records (self ._read (getter , params ))
354
+ generator = self ._read (getter , params )
355
+ if filter_old_records :
356
+ generator = self ._filter_old_records (generator )
357
+
358
+ yield from generator
355
359
356
360
def parse_response (self , response : Union [Mapping [str , Any ], List [dict ]]) -> Iterator :
357
361
if isinstance (response , Mapping ):
@@ -879,6 +883,10 @@ class FormSubmissionStream(Stream):
879
883
limit = 50
880
884
updated_at_field = "updatedAt"
881
885
886
+ def __init__ (self , ** kwargs ):
887
+ super ().__init__ (** kwargs )
888
+ self .forms = FormStream (** kwargs )
889
+
882
890
def _transform (self , records : Iterable ) -> Iterable :
883
891
for record in super ()._transform (records ):
884
892
keys = record .keys ()
@@ -891,10 +899,14 @@ def _transform(self, records: Iterable) -> Iterable:
891
899
yield record
892
900
893
901
def list_records (self , fields ) -> Iterable :
894
- for form in self .read (getter = partial (self ._api .get , url = "/marketing/v3/forms" )):
895
- for submission in self .read (getter = partial (self ._api .get , url = f"{ self .url } /{ form ['id' ]} " )):
896
- submission ["formId" ] = form ["id" ]
897
- yield submission
902
+ seen = set ()
903
+ # To get submissions for all forms date filtering has to be disabled
904
+ for form in self .forms .read (getter = partial (self .forms ._api .get , url = self .forms .url ), filter_old_records = False ):
905
+ if form ["id" ] not in seen :
906
+ seen .add (form ["id" ])
907
+ for submission in self .read (getter = partial (self ._api .get , url = f"{ self .url } /{ form ['id' ]} " )):
908
+ submission ["formId" ] = form ["id" ]
909
+ yield submission
898
910
899
911
900
912
class MarketingEmailStream (Stream ):
0 commit comments