569 users=None,
570 ):
571 if self.has_required_attrs(change):
572 return []573 return super().get_users(
574 frequency,
575 change,
417 changes = notifications[user.pk]
418 parts = []
419 while len(changes) > 120:
420 parts.append(changes[:100])421 changes = changes[100:]422 if changes:
423 parts.append(changes)
424
284 else:
285 result["subscription_user"] = None
286 if extracontext:
287 result.update(extracontext)288 if change:
289 result["change"] = change
290 # Extract change attributes
242 def send(self, address, subject, body, headers) -> None:
243 encoded_email = siphash("Weblate notifier", address)
244 if rate_limit(f"notify:rate:{encoded_email}", 1000, 86400):
245 LOGGER.info(246 "discarding notification %s to %s after sending too many",
247 self.get_name(),
248 address,
203 users=None,
204 ):
205 if self.has_required_attrs(change):
206 return207 if change is not None:
208 project = change.project
209 component = change.component
A source line is considered covered when at least one instruction that is assigned to this line has been executed by a test case. These lines were not executed during any of the test cases.