SYMBOL INDEX (52825 symbols across 4663 files) FILE: corehq/__init__.py function _get_current_app (line 11) | def _get_current_app(): FILE: corehq/apps/accounting/admin.py class DomainUserHistoryAdmin (line 7) | class DomainUserHistoryAdmin(admin.ModelAdmin): FILE: corehq/apps/accounting/async_handlers.py class BaseRateAsyncHandler (line 30) | class BaseRateAsyncHandler(BaseAsyncHandler): method name (line 40) | def name(self): method rate_type (line 44) | def rate_type(self): method rate_id (line 48) | def rate_id(self): method create_response (line 52) | def create_response(self): method apply_response (line 56) | def apply_response(self): class FeatureRateAsyncHandler (line 60) | class FeatureRateAsyncHandler(BaseRateAsyncHandler): method create_response (line 64) | def create_response(self): method apply_response (line 75) | def apply_response(self): class SoftwareProductRateAsyncHandler (line 83) | class SoftwareProductRateAsyncHandler(BaseRateAsyncHandler): method create_response (line 87) | def create_response(self): method apply_response (line 94) | def apply_response(self): class BaseSelect2AsyncHandler (line 102) | class BaseSelect2AsyncHandler(BaseAsyncHandler): method search_string (line 105) | def search_string(self): method existing (line 109) | def existing(self): method _fmt_success (line 112) | def _fmt_success(self, response): class Select2RateAsyncHandler (line 122) | class Select2RateAsyncHandler(BaseSelect2AsyncHandler): method select2_feature_id_response (line 134) | def select2_feature_id_response(self): method product_rate_id_response (line 143) | def product_rate_id_response(self): method _fmt_success (line 151) | def _fmt_success(self, response): class Select2BillingInfoHandler (line 170) | class Select2BillingInfoHandler(BaseSelect2AsyncHandler): method country_response (line 182) | def country_response(self): method active_accounts_response (line 191) | def active_accounts_response(self): method domain_response (line 198) | def domain_response(self): method account_response (line 206) | def account_response(self): method plan_version_response (line 213) | def plan_version_response(self): method new_plan_version_response (line 232) | def new_plan_version_response(self): class Select2InvoiceTriggerHandler (line 238) | class Select2InvoiceTriggerHandler(BaseSelect2AsyncHandler): method domain_response (line 245) | def domain_response(self): class Select2CustomerInvoiceTriggerHandler (line 253) | class Select2CustomerInvoiceTriggerHandler(BaseSelect2AsyncHandler): method customer_account_response (line 260) | def customer_account_response(self): class BaseSingleOptionFilterAsyncHandler (line 268) | class BaseSingleOptionFilterAsyncHandler(BaseAsyncHandler): method query (line 271) | def query(self): method search_string (line 275) | def search_string(self): method page (line 279) | def page(self): method paginated_data (line 283) | def paginated_data(self): method limit (line 289) | def limit(self): method total (line 293) | def total(self): method _fmt_select2_data (line 297) | def _fmt_select2_data(data_id, data_text): method _fmt_success (line 303) | def _fmt_success(self, data): class SubscriberFilterAsyncHandler (line 313) | class SubscriberFilterAsyncHandler(BaseSingleOptionFilterAsyncHandler): method query (line 320) | def query(self): method subscriber_response (line 327) | def subscriber_response(self): class SubscriptionFilterAsyncHandler (line 332) | class SubscriptionFilterAsyncHandler(BaseSingleOptionFilterAsyncHandler): method query (line 339) | def query(self): method contract_id_response (line 352) | def contract_id_response(self): class AccountFilterAsyncHandler (line 358) | class AccountFilterAsyncHandler(BaseSingleOptionFilterAsyncHandler): method query (line 367) | def query(self): method account_name_response (line 394) | def account_name_response(self): method account_id_response (line 399) | def account_id_response(self): method dimagi_contact_response (line 405) | def dimagi_contact_response(self): class BillingContactInfoAsyncHandler (line 410) | class BillingContactInfoAsyncHandler(BaseSingleOptionFilterAsyncHandler): method query (line 417) | def query(self): method contact_name_response (line 428) | def contact_name_response(self): class SoftwarePlanAsyncHandler (line 433) | class SoftwarePlanAsyncHandler(BaseSingleOptionFilterAsyncHandler): method query (line 440) | def query(self): method name_response (line 447) | def name_response(self): class BaseInvoiceNumberAsyncHandler (line 452) | class BaseInvoiceNumberAsyncHandler(BaseSingleOptionFilterAsyncHandler): method query (line 456) | def query(self): method base_response (line 465) | def base_response(self): class InvoiceNumberAsyncHandler (line 472) | class InvoiceNumberAsyncHandler(BaseInvoiceNumberAsyncHandler): method invoice_number_response (line 480) | def invoice_number_response(self): class CustomerInvoiceNumberAsyncHandler (line 484) | class CustomerInvoiceNumberAsyncHandler(BaseInvoiceNumberAsyncHandler): method customer_invoice_number_response (line 492) | def customer_invoice_number_response(self): class InvoiceBalanceAsyncHandler (line 496) | class InvoiceBalanceAsyncHandler(BaseSingleOptionFilterAsyncHandler): method query (line 503) | def query(self): method invoice_balance_response (line 510) | def invoice_balance_response(self): class DomainFilterAsyncHandler (line 517) | class DomainFilterAsyncHandler(BaseSingleOptionFilterAsyncHandler): method query (line 524) | def query(self): method domain_name_response (line 541) | def domain_name_response(self): FILE: corehq/apps/accounting/automated_reports.py class CreditsAutomatedReport (line 15) | class CreditsAutomatedReport(object): method send_report (line 27) | def send_report(self, recipient): method _generate_report_table (line 71) | def _generate_report_table(self): method _get_credit_info (line 124) | def _get_credit_info(self, subscription): method _credit_grand_total (line 145) | def _credit_grand_total(credit_lines): method _fmt_credit (line 149) | def _fmt_credit(credit_amount=None): FILE: corehq/apps/accounting/bootstrap/utils.py function ensure_plans (line 15) | def ensure_plans(config, verbose, apps): function _ensure_role (line 43) | def _ensure_role(role_slug, apps): function _ensure_product_rate (line 56) | def _ensure_product_rate(monthly_fee, edition, verbose, apps): function _get_software_product (line 84) | def _get_software_product(product_name, verbose, apps): function _ensure_features (line 101) | def _ensure_features(feature_rates, edition, verbose, apps): function ensure_feature_rates (line 132) | def ensure_feature_rates(feature_rates, features, verbose, apps): function _ensure_software_plan (line 156) | def _ensure_software_plan(plan_key, product, product_rate, verbose, apps): function _software_plan_name (line 181) | def _software_plan_name(plan_key, product, product_rate): function _ensure_software_plan_version (line 194) | def _ensure_software_plan_version(role, software_plan, product_rate, fea... function _ensure_default_product_plan (line 207) | def _ensure_default_product_plan(plan_key, software_plan, verbose, apps): function _clear_cache (line 239) | def _clear_cache(software_plans, default_plans): FILE: corehq/apps/accounting/decorators.py function requires_privilege_with_fallback (line 14) | def requires_privilege_with_fallback(slug, **assignment): function requires_privilege_plaintext_response (line 62) | def requires_privilege_plaintext_response(slug, function requires_privilege_json_response (line 85) | def requires_privilege_json_response(slug, http_status_code=None, function requires_privilege_for_commcare_user (line 121) | def requires_privilege_for_commcare_user(slug, **assignment): function always_allow_project_access (line 139) | def always_allow_project_access(view_func): FILE: corehq/apps/accounting/dispatcher.py class AccountingAdminInterfaceDispatcher (line 10) | class AccountingAdminInterfaceDispatcher(ReportDispatcher): method dispatch (line 16) | def dispatch(self, request, *args, **kwargs): FILE: corehq/apps/accounting/emails.py class SubjectTemplate (line 28) | class SubjectTemplate: function send_subscription_change_alert (line 34) | def send_subscription_change_alert(domain, new_subscription, old_subscri... function send_subscription_renewal_alert (line 74) | def send_subscription_renewal_alert(domain, new_subscription, old_subscr... function send_self_start_subscription_alert (line 79) | def send_self_start_subscription_alert(domain, new_subscription, old_sub... function send_flagged_pay_annually_subscription_alert (line 84) | def send_flagged_pay_annually_subscription_alert(subscription, current_i... function send_subscription_renewed_email (line 114) | def send_subscription_renewed_email(subscription): function send_renewal_reminder_email (line 148) | def send_renewal_reminder_email(subscription, days_left): function send_subscription_ending_email (line 154) | def send_subscription_ending_email(subscription, days_left): function _send_subscription_ending_reminder_email (line 160) | def _send_subscription_ending_reminder_email(subscription, days_left, te... function _get_reminder_email_contacts (line 185) | def _get_reminder_email_contacts(subscription, domain): function _ending_reminder_context (line 217) | def _ending_reminder_context(subscription, days_left): function send_dimagi_contact_ending_reminder_email (line 258) | def send_dimagi_contact_ending_reminder_email(subscription): function _dimagi_ending_reminder_subject (line 275) | def _dimagi_ending_reminder_subject(subscription): function _dimagi_ending_reminder_context (line 286) | def _dimagi_ending_reminder_context(subscription): FILE: corehq/apps/accounting/exceptions.py class AccountingError (line 1) | class AccountingError(Exception): class LineItemError (line 5) | class LineItemError(Exception): class InvoiceError (line 9) | class InvoiceError(Exception): class InvoiceAlreadyCreatedError (line 13) | class InvoiceAlreadyCreatedError(Exception): class CreditLineError (line 17) | class CreditLineError(Exception): class SubscriptionAdjustmentError (line 21) | class SubscriptionAdjustmentError(Exception): class SubscriptionChangeError (line 25) | class SubscriptionChangeError(Exception): class NewSubscriptionError (line 29) | class NewSubscriptionError(Exception): class InvoiceEmailThrottledError (line 33) | class InvoiceEmailThrottledError(Exception): class SubscriptionReminderError (line 37) | class SubscriptionReminderError(Exception): class SubscriptionRenewalError (line 41) | class SubscriptionRenewalError(Exception): class PaymentRequestError (line 45) | class PaymentRequestError(Exception): class PaymentHandlerError (line 49) | class PaymentHandlerError(Exception): class CreateAccountingAdminError (line 53) | class CreateAccountingAdminError(Exception): class ProductPlanNotFoundError (line 57) | class ProductPlanNotFoundError(Exception): class NoActiveSubscriptionError (line 61) | class NoActiveSubscriptionError(Exception): class MultipleActiveSubscriptionsError (line 65) | class MultipleActiveSubscriptionsError(Exception): class ActiveSubscriptionWithoutDomain (line 69) | class ActiveSubscriptionWithoutDomain(Exception): class CreditLineBalanceMismatchError (line 73) | class CreditLineBalanceMismatchError(Exception): class AccountingCommunicationError (line 77) | class AccountingCommunicationError(Exception): class SubscriptionTaskError (line 81) | class SubscriptionTaskError(Exception): FILE: corehq/apps/accounting/filters.py class BaseAccountingSingleOptionFilter (line 41) | class BaseAccountingSingleOptionFilter(BaseSingleOptionFilter): method pagination_source (line 45) | def pagination_source(self): class AccountTypeFilter (line 50) | class AccountTypeFilter(BaseSingleOptionFilter): class NameFilter (line 57) | class NameFilter(BaseAccountingSingleOptionFilter): class DomainFilter (line 65) | class DomainFilter(BaseAccountingSingleOptionFilter): class CreditAdjustmentReasonFilter (line 73) | class CreditAdjustmentReasonFilter(BaseSingleOptionFilter): class IdPServiceTypeFilter (line 80) | class IdPServiceTypeFilter(BaseSingleOptionFilter): class CreditAdjustmentLinkFilter (line 87) | class CreditAdjustmentLinkFilter(BaseSingleOptionFilter): function clean_options (line 97) | def clean_options(options): class SalesforceAccountIDFilter (line 101) | class SalesforceAccountIDFilter(BaseAccountingSingleOptionFilter): class SubscriberFilter (line 109) | class SubscriberFilter(BaseAccountingSingleOptionFilter): class SalesforceContractIDFilter (line 117) | class SalesforceContractIDFilter(BaseAccountingSingleOptionFilter): class ActiveStatusFilter (line 125) | class ActiveStatusFilter(BaseSingleOptionFilter): class CustomerAccountFilter (line 137) | class CustomerAccountFilter(BaseSingleOptionFilter): class DimagiContactFilter (line 149) | class DimagiContactFilter(BaseAccountingSingleOptionFilter): class EntryPointFilter (line 157) | class EntryPointFilter(BaseSingleOptionFilter): class DoNotInvoiceFilter (line 164) | class DoNotInvoiceFilter(BaseSingleOptionFilter): class TrialStatusFilter (line 177) | class TrialStatusFilter(BaseSingleOptionFilter): class SubscriptionTypeFilter (line 189) | class SubscriptionTypeFilter(BaseSingleOptionFilter): class ProBonoStatusFilter (line 196) | class ProBonoStatusFilter(BaseSingleOptionFilter): class IsHiddenFilter (line 203) | class IsHiddenFilter(BaseSingleOptionFilter): class CreatedSubAdjMethodFilter (line 215) | class CreatedSubAdjMethodFilter(BaseSingleOptionFilter): class DateRangeFilter (line 233) | class DateRangeFilter(BaseReportFilter): method filter_context (line 241) | def filter_context(self): method get_date_str (line 247) | def get_date_str(cls, request, date_type): method get_date (line 251) | def get_date(cls, request, date_type): method get_start_date (line 268) | def get_start_date(cls, request): method get_end_date (line 272) | def get_end_date(cls, request): method datespan (line 276) | def datespan(self): method shared_pagination_GET_params (line 287) | def shared_pagination_GET_params(cls, request): class OptionalFilterMixin (line 294) | class OptionalFilterMixin(object): method use_filter (line 297) | def use_filter(cls, request): method optional_filter_slug (line 301) | def optional_filter_slug(cls): method optional_filter_string_value (line 305) | def optional_filter_string_value(cls, request): class OptionalDateRangeFilter (line 309) | class OptionalDateRangeFilter(DateRangeFilter, OptionalFilterMixin): method filter_context (line 313) | def filter_context(self): class DateFilter (line 321) | class DateFilter(OptionalDateRangeFilter): class DateCreatedFilter (line 326) | class DateCreatedFilter(OptionalDateRangeFilter): class StartDateFilter (line 331) | class StartDateFilter(OptionalDateRangeFilter): class EndDateFilter (line 336) | class EndDateFilter(OptionalDateRangeFilter): class OptionalMonthYearFilter (line 341) | class OptionalMonthYearFilter(BaseReportFilter, OptionalFilterMixin): method filter_context (line 345) | def filter_context(self): method get_value (line 356) | def get_value(cls, request, domain): method months (line 366) | def months(cls): method selected_period (line 375) | def selected_period(self): class StatementPeriodFilter (line 389) | class StatementPeriodFilter(OptionalMonthYearFilter): method selected_period (line 393) | def selected_period(self): class DueDatePeriodFilter (line 410) | class DueDatePeriodFilter(OptionalMonthYearFilter): class SoftwarePlanNameFilter (line 415) | class SoftwarePlanNameFilter(BaseAccountingSingleOptionFilter): class SoftwarePlanEditionFilter (line 423) | class SoftwarePlanEditionFilter(BaseSingleOptionFilter): class SoftwarePlanVisibilityFilter (line 430) | class SoftwarePlanVisibilityFilter(BaseSingleOptionFilter): class InvoiceNumberFilter (line 437) | class InvoiceNumberFilter(BaseAccountingSingleOptionFilter): class CustomerInvoiceNumberFilter (line 445) | class CustomerInvoiceNumberFilter(BaseAccountingSingleOptionFilter): class InvoiceBalanceFilter (line 453) | class InvoiceBalanceFilter(BaseAccountingSingleOptionFilter): class PaymentStatusFilter (line 461) | class PaymentStatusFilter(BaseSingleOptionFilter): class BillingContactFilter (line 473) | class BillingContactFilter(BaseAccountingSingleOptionFilter): class PaymentTransactionIdFilter (line 481) | class PaymentTransactionIdFilter(BaseSimpleFilter): FILE: corehq/apps/accounting/forms.py class BillingAccountBasicForm (line 96) | class BillingAccountBasicForm(forms.Form): method __init__ (line 182) | def __init__(self, account, *args, **kwargs): method clean_name (line 347) | def clean_name(self): method clean_email_list (line 357) | def clean_email_list(self): method clean_enterprise_admin_emails (line 360) | def clean_enterprise_admin_emails(self): method clean_enterprise_restricted_signup_domains (line 363) | def clean_enterprise_restricted_signup_domains(self): method clean_active_accounts (line 381) | def clean_active_accounts(self): method create_account (line 400) | def create_account(self): method update_basic_info (line 425) | def update_basic_info(self, account): class BillingAccountContactForm (line 460) | class BillingAccountContactForm(forms.ModelForm): class Meta (line 464) | class Meta(object): method __init__ (line 480) | def __init__(self, account, *args, **kwargs): class SubscriptionForm (line 521) | class SubscriptionForm(forms.Form): method __init__ (line 612) | def __init__(self, subscription, account_id, web_user, *args, **kwargs): method create_subscription (line 803) | def create_subscription(self): method update_subscription (line 816) | def update_subscription(self): method shared_keywords (line 832) | def shared_keywords(self): method clean_active_accounts (line 851) | def clean_active_accounts(self): method clean_domain (line 865) | def clean_domain(self): method clean (line 873) | def clean(self): class ChangeSubscriptionForm (line 914) | class ChangeSubscriptionForm(forms.Form): method __init__ (line 955) | def __init__(self, subscription, web_user, *args, **kwargs): method change_subscription (line 999) | def change_subscription(self): class BulkUpgradeToLatestVersionForm (line 1013) | class BulkUpgradeToLatestVersionForm(forms.Form): method __init__ (line 1020) | def __init__(self, old_plan_version, web_user, *args, **kwargs): method upgrade_subscriptions (line 1044) | def upgrade_subscriptions(self): class CreditForm (line 1052) | class CreditForm(forms.Form): method __init__ (line 1067) | def __init__(self, account, subscription, *args, **kwargs): method clean_amount (line 1097) | def clean_amount(self): method adjust_credit (line 1110) | def adjust_credit(self, web_user=None): class RemoveAutopayForm (line 1129) | class RemoveAutopayForm(forms.Form): method __init__ (line 1133) | def __init__(self, account, *args, **kwargs): method remove_autopay_user_from_account (line 1155) | def remove_autopay_user_from_account(self): class CancelForm (line 1161) | class CancelForm(forms.Form): method __init__ (line 1167) | def __init__(self, subscription, *args, **kwargs): class SuppressSubscriptionForm (line 1193) | class SuppressSubscriptionForm(forms.Form): method __init__ (line 1197) | def __init__(self, subscription, *args, **kwargs): method clean (line 1235) | def clean(self): class PlanInformationForm (line 1252) | class PlanInformationForm(forms.Form): method __init__ (line 1261) | def __init__(self, plan, *args, **kwargs): method clean_name (line 1304) | def clean_name(self): method create_plan (line 1313) | def create_plan(self): method update_plan (line 1332) | def update_plan(self, request, plan): class SoftwarePlanVersionForm (line 1347) | class SoftwarePlanVersionForm(forms.Form): method __init__ (line 1425) | def __init__(self, plan, plan_version, admin_web_user, *args, **kwargs): method available_privileges (line 1610) | def available_privileges(self): method existing_roles (line 1616) | def existing_roles(self): method feature_rates_dict (line 1634) | def feature_rates_dict(self): method product_rates_dict (line 1644) | def product_rates_dict(self): method role_dict (line 1654) | def role_dict(self): method current_features_to_rates (line 1671) | def current_features_to_rates(self): method _get_errors_from_subform (line 1678) | def _get_errors_from_subform(form_name, subform): method _retrieve_feature_rate (line 1688) | def _retrieve_feature_rate(self, rate_form): method _retrieve_product_rate (line 1710) | def _retrieve_product_rate(self, rate_form): method clean_feature_rates (line 1728) | def clean_feature_rates(self): method clean_product_rates (line 1771) | def clean_product_rates(self): method clean_create_new_role (line 1793) | def clean_create_new_role(self): method clean_role_slug (line 1799) | def clean_role_slug(self): method clean_new_role_slug (line 1805) | def clean_new_role_slug(self): method clean_new_role_name (line 1815) | def clean_new_role_name(self): method save (line 1822) | def save(self, request): class FeatureRateForm (line 1875) | class FeatureRateForm(forms.ModelForm): class Meta (line 1889) | class Meta(object): method __init__ (line 1893) | def __init__(self, data=None, *args, **kwargs): method is_new (line 1918) | def is_new(self): method get_instance (line 1921) | def get_instance(self, feature): class ProductRateForm (line 1927) | class ProductRateForm(forms.ModelForm): class Meta (line 1942) | class Meta(object): method __init__ (line 1946) | def __init__(self, data=None, *args, **kwargs): method is_new (line 1960) | def is_new(self): method get_instance (line 1963) | def get_instance(self): class PlanContactForm (line 1967) | class PlanContactForm(forms.Form): method __init__ (line 1981) | def __init__(self, domain, web_user, back_button=('Back', None), data=... method send_message (line 2007) | def send_message(self, request_type): class TriggerInvoiceForm (line 2030) | class TriggerInvoiceForm(forms.Form): method __init__ (line 2047) | def __init__(self, *args, **kwargs): method trigger_invoice (line 2103) | def trigger_invoice(self): method clean_previous_invoices (line 2130) | def clean_previous_invoices(invoice_start, invoice_end, domain_name): method _overwrite_user_history (line 2151) | def _overwrite_user_history(history_cls, domain, num_users, invoice_st... method clean (line 2165) | def clean(self): class TriggerCustomerInvoiceForm (line 2174) | class TriggerCustomerInvoiceForm(forms.Form): method __init__ (line 2179) | def __init__(self, *args, **kwargs): method trigger_customer_invoice (line 2211) | def trigger_customer_invoice(self): method clean_previous_invoices (line 2231) | def clean_previous_invoices(invoice_start, invoice_end, account): method clean (line 2252) | def clean(self): method get_invoice_dates (line 2259) | def get_invoice_dates(self, account, year, month): class TriggerBookkeeperEmailForm (line 2289) | class TriggerBookkeeperEmailForm(forms.Form): method __init__ (line 2294) | def __init__(self, *args, **kwargs): method clean_emails (line 2326) | def clean_emails(self): method trigger_email (line 2329) | def trigger_email(self): class TestReminderEmailFrom (line 2338) | class TestReminderEmailFrom(forms.Form): method __init__ (line 2351) | def __init__(self, *args, **kwargs): method send_emails (line 2381) | def send_emails(self): class AdjustBalanceForm (line 2392) | class AdjustBalanceForm(forms.Form): method __init__ (line 2427) | def __init__(self, invoice, *args, **kwargs): method amount (line 2489) | def amount(self): method adjust_balance (line 2500) | def adjust_balance(self, web_user=None): class InvoiceInfoForm (line 2565) | class InvoiceInfoForm(forms.Form): method __init__ (line 2572) | def __init__(self, invoice, *args, **kwargs): class ResendEmailForm (line 2646) | class ResendEmailForm(forms.Form): method __init__ (line 2654) | def __init__(self, invoice, *args, **kwargs): method clean_additional_recipients (line 2688) | def clean_additional_recipients(self): method resend_email (line 2694) | def resend_email(self): class SuppressInvoiceForm (line 2706) | class SuppressInvoiceForm(forms.Form): method __init__ (line 2710) | def __init__(self, invoice, *args, **kwargs): method suppress_invoice (line 2737) | def suppress_invoice(self): class HideInvoiceForm (line 2742) | class HideInvoiceForm(forms.Form): method __init__ (line 2746) | def __init__(self, invoice, *args, **kwargs): method hide_invoice (line 2773) | def hide_invoice(self): class CreateAdminForm (line 2778) | class CreateAdminForm(forms.Form): method __init__ (line 2783) | def __init__(self, *args, **kwargs): method add_admin_user (line 2804) | def add_admin_user(self): class TriggerDowngradeForm (line 2835) | class TriggerDowngradeForm(forms.Form): method __init__ (line 2838) | def __init__(self, *args, **kwargs): class TriggerAutopaymentsForm (line 2865) | class TriggerAutopaymentsForm(forms.Form): method __init__ (line 2868) | def __init__(self, *args, **kwargs): class TriggerAutoRenewalForm (line 2895) | class TriggerAutoRenewalForm(forms.Form): method __init__ (line 2898) | def __init__(self, *args, **kwargs): class TriggerRemovedSsoUserAutoDeactivationForm (line 2925) | class TriggerRemovedSsoUserAutoDeactivationForm(forms.Form): method __init__ (line 2927) | def __init__(self, *args, **kwargs): FILE: corehq/apps/accounting/interface.py function invoice_column_cell (line 82) | def invoice_column_cell(invoice): function customer_invoice_cell (line 93) | def customer_invoice_cell(invoice): function invoice_cost_cell (line 104) | def invoice_cost_cell(invoice): class AddItemInterface (line 115) | class AddItemInterface(GenericTabularReport): method template_context (line 124) | def template_context(self): method report_context (line 133) | def report_context(self): class AccountingInterface (line 141) | class AccountingInterface(AddItemInterface): method new_item_view (line 162) | def new_item_view(self): method headers (line 167) | def headers(self): method rows (line 179) | def rows(self): method _accounts (line 194) | def _accounts(self): class SubscriptionInterface (line 241) | class SubscriptionInterface(AddItemInterface): method new_item_view (line 266) | def new_item_view(self): method headers (line 271) | def headers(self): method rows (line 290) | def rows(self): method _subscriptions (line 329) | def _subscriptions(self): class SoftwarePlanInterface (line 400) | class SoftwarePlanInterface(AddItemInterface): method new_item_view (line 416) | def new_item_view(self): method headers (line 421) | def headers(self): method rows (line 431) | def rows(self): method _plans (line 447) | def _plans(self): function get_exportable_column (line 469) | def get_exportable_column(amount): function get_subtotal_and_deduction (line 476) | def get_subtotal_and_deduction(line_items): class InvoiceInterfaceBase (line 485) | class InvoiceInterfaceBase(GenericTabularReport): method filter_by_subscription (line 493) | def filter_by_subscription(self, subscription): class WireInvoiceInterface (line 497) | class WireInvoiceInterface(InvoiceInterfaceBase): method headers (line 510) | def headers(self): method rows (line 538) | def rows(self): method _invoices (line 589) | def _invoices(self): method email_response (line 630) | def email_response(self): class InvoiceInterface (line 641) | class InvoiceInterface(InvoiceInterfaceBase): method headers (line 663) | def headers(self): method rows (line 705) | def rows(self): method _invoices (line 799) | def _invoices(self): method adjust_balance_forms (line 892) | def adjust_balance_forms(self): method report_context (line 896) | def report_context(self): method adjust_balance_form (line 906) | def adjust_balance_form(self): method view_response (line 914) | def view_response(self): method email_response (line 923) | def email_response(self): class CustomerInvoiceInterface (line 934) | class CustomerInvoiceInterface(InvoiceInterfaceBase): method headers (line 954) | def headers(self): method rows (line 993) | def rows(self): method _invoices (line 1076) | def _invoices(self): method adjust_balance_forms (line 1151) | def adjust_balance_forms(self): method report_context (line 1155) | def report_context(self): method adjust_balance_form (line 1165) | def adjust_balance_form(self): method view_response (line 1173) | def view_response(self): method email_response (line 1182) | def email_response(self): function _get_domain_from_payment_record (line 1193) | def _get_domain_from_payment_record(payment_record): class PaymentRecordInterface (line 1207) | class PaymentRecordInterface(GenericTabularReport): method headers (line 1227) | def headers(self): method rows (line 1238) | def rows(self): method _payment_records (line 1272) | def _payment_records(self): class SubscriptionAdjustmentInterface (line 1300) | class SubscriptionAdjustmentInterface(GenericTabularReport): method headers (line 1317) | def headers(self): method rows (line 1331) | def rows(self): method _subscription_adjustments (line 1355) | def _subscription_adjustments(self): class CreditAdjustmentInterface (line 1371) | class CreditAdjustmentInterface(GenericTabularReport): method headers (line 1393) | def headers(self): method rows (line 1421) | def rows(self): method _credit_adjustments (line 1484) | def _credit_adjustments(self): FILE: corehq/apps/accounting/invoice_pdf.py function prepend_newline_if_not_empty (line 19) | def prepend_newline_if_not_empty(string): class PdfLineItem (line 28) | class PdfLineItem(object): method __init__ (line 30) | def __init__(self, description, quantity, unit_cost, subtotal, credits... class Address (line 39) | class Address(object): method __init__ (line 41) | def __init__( method __str__ (line 67) | def __str__(self): method mailing_address (line 74) | def mailing_address(self): method contact_info (line 90) | def contact_info(self): function inches (line 105) | def inches(num_inches): function midpoint (line 109) | def midpoint(x1, x2): function item_height (line 113) | def item_height(item, width): class InvoiceTemplate (line 119) | class InvoiceTemplate(object): method __init__ (line 135) | def __init__(self, filename, method add_item (line 183) | def add_item(self, description, quantity, unit_cost, subtotal, credits... method get_pdf (line 187) | def get_pdf(self): method draw_customer_invoice (line 201) | def draw_customer_invoice(self, items, items_to_draw): method draw_logo (line 211) | def draw_logo(self): method draw_text (line 216) | def draw_text(self, string, x, y): method draw_from_address (line 223) | def draw_from_address(self): method draw_to_address (line 238) | def draw_to_address(self): method draw_project_name (line 274) | def draw_project_name(self): method draw_account_name (line 303) | def draw_account_name(self): method draw_statement_period (line 332) | def draw_statement_period(self): method draw_invoice_label (line 353) | def draw_invoice_label(self): method draw_details (line 358) | def draw_details(self): method draw_header (line 414) | def draw_header(self): method draw_table (line 427) | def draw_table(self, items): method draw_footer (line 517) | def draw_footer(self): method _add_flywire_footer_item (line 539) | def _add_flywire_footer_item(self, items, text_style): method _add_credit_card_footer_item (line 549) | def _add_credit_card_footer_item(self, items, text_style): method _add_ach_and_wire_footer_items (line 563) | def _add_ach_and_wire_footer_items(self, items, text_style): method draw_table_with_header_and_footer (line 604) | def draw_table_with_header_and_footer(self, items): method draw_totals_on_new_page (line 612) | def draw_totals_on_new_page(self): method draw_totals (line 626) | def draw_totals(self, totals_x, line_height, subtotal_y): FILE: corehq/apps/accounting/invoicing.py class DomainInvoiceFactory (line 77) | class DomainInvoiceFactory(object): method __init__ (line 82) | def __init__(self, date_start, date_end, domain, recipients=None): method create_invoices (line 97) | def create_invoices(self): method _get_subscriptions (line 114) | def _get_subscriptions(self): method _create_invoice_for_subscription (line 125) | def _create_invoice_for_subscription(self, subscription): method _generate_invoice (line 171) | def _generate_invoice(self, subscription, invoice_start, invoice_end): method subscriber (line 226) | def subscriber(self): class DomainWireInvoiceFactory (line 230) | class DomainWireInvoiceFactory(object): method __init__ (line 232) | def __init__(self, domain, date_start=None, date_end=None, contact_ema... method create_wire_invoice (line 244) | def create_wire_invoice(self, balance): method create_wire_credits_invoice (line 303) | def create_wire_credits_invoice(self, amount, credit_label, unit_cost,... method create_subscription_credits_invoice (line 322) | def create_subscription_credits_invoice(self, plan_version, date_start... method create_prorated_subscription_change_credits_invoice (line 331) | def create_prorated_subscription_change_credits_invoice(self, old_date... method date_due (line 366) | def date_due(date_start): class CustomerAccountInvoiceFactory (line 371) | class CustomerAccountInvoiceFactory(object): method __init__ (line 375) | def __init__(self, date_start, date_end, account, recipients=None): method create_invoice (line 389) | def create_invoice(self): method _generate_customer_invoice (line 405) | def _generate_customer_invoice(self): method _update_invoice_due_date (line 429) | def _update_invoice_due_date(self, invoice, factory_date_end): method _email_invoice (line 438) | def _email_invoice(self): function should_create_invoice (line 456) | def should_create_invoice(subscription, domain, invoice_start, invoice_e... function generate_line_items (line 481) | def generate_line_items(invoice, subscription): class LineItemFactory (line 496) | class LineItemFactory(object): method __init__ (line 501) | def __init__(self, subscription, rate, invoice): method unit_description (line 507) | def unit_description(self): method base_description (line 515) | def base_description(self): method unit_cost (line 523) | def unit_cost(self): method quantity (line 527) | def quantity(self): method subscribed_domains (line 532) | def subscribed_domains(self): method create (line 544) | def create(self): method get_factory_by_feature_type (line 555) | def get_factory_by_feature_type(cls, feature_type): method _subscription_ends_before_invoice (line 568) | def _subscription_ends_before_invoice(self): method _subscription_starts_after_invoice (line 576) | def _subscription_starts_after_invoice(self): method subscription_date_range (line 583) | def subscription_date_range(self): method _is_partial_invoice (line 601) | def _is_partial_invoice(self): method is_prorated (line 609) | def is_prorated(self): method num_prorated_days (line 617) | def num_prorated_days(self): method _days_in_billing_period (line 630) | def _days_in_billing_period(self): class ProductLineItemFactory (line 634) | class ProductLineItemFactory(LineItemFactory): method create (line 636) | def create(self): method base_description (line 649) | def base_description(self): method unit_description (line 656) | def unit_description(self): method unit_cost (line 674) | def unit_cost(self): method quantity (line 680) | def quantity(self): method months_product_active_over_period (line 690) | def months_product_active_over_period(self, num_months): method plan_name (line 703) | def plan_name(self): method _auto_generate_credits (line 706) | def _auto_generate_credits(self, line_item): class FeatureLineItemFactory (line 715) | class FeatureLineItemFactory(LineItemFactory): method create (line 717) | def create(self): method unit_cost (line 724) | def unit_cost(self): class UserLineItemFactory (line 728) | class UserLineItemFactory(FeatureLineItemFactory): method unit_cost (line 731) | def unit_cost(self): method quantity (line 746) | def quantity(self): method total_users_for_date (line 755) | def total_users_for_date(self, date): method all_month_ends_in_invoice (line 769) | def all_month_ends_in_invoice(self): method _unit_description_by_user_type (line 777) | def _unit_description_by_user_type(self, user_type): method unit_description (line 792) | def unit_description(self): class FormSubmittingMobileWorkerLineItemFactory (line 796) | class FormSubmittingMobileWorkerLineItemFactory(UserLineItemFactory): method total_users_for_date (line 798) | def total_users_for_date(self, date): method unit_description (line 810) | def unit_description(self): class WebUserLineItemFactory (line 814) | class WebUserLineItemFactory(UserLineItemFactory): method total_users_for_date (line 816) | def total_users_for_date(self, date): method unit_description (line 826) | def unit_description(self): class SmsLineItemFactory (line 830) | class SmsLineItemFactory(FeatureLineItemFactory): method _start_date_count_sms (line 834) | def _start_date_count_sms(self): method _end_date_count_sms (line 847) | def _end_date_count_sms(self): method unit_cost (line 860) | def unit_cost(self): method quantity (line 892) | def quantity(self): method unit_description (line 897) | def unit_description(self): method sms_billables_queryset (line 939) | def sms_billables_queryset(self): method sms_billables (line 958) | def sms_billables(self): method num_sms (line 963) | def num_sms(self): method is_within_monthly_limit (line 968) | def is_within_monthly_limit(self): FILE: corehq/apps/accounting/management/commands/add_operations_user.py class Command (line 11) | class Command(BaseCommand): method add_arguments (line 14) | def add_arguments(self, parser): method handle (line 26) | def handle(self, usernames, **options): FILE: corehq/apps/accounting/management/commands/change_role_for_software_plan_version.py class OldRoleDoesNotExist (line 12) | class OldRoleDoesNotExist(Exception): class NewRoleDoesNotExist (line 16) | class NewRoleDoesNotExist(Exception): class PlanVersionAndRoleMismatch (line 20) | class PlanVersionAndRoleMismatch(Exception): function change_role_for_software_plan_version (line 24) | def change_role_for_software_plan_version(old_role, new_role, limit_to_p... class Command (line 67) | class Command(BaseCommand): method add_arguments (line 70) | def add_arguments(self, parser): method handle (line 76) | def handle(self, old_role, new_role, **kwargs): FILE: corehq/apps/accounting/management/commands/create_test_pdf_templates.py class Command (line 6) | class Command(BaseCommand): method handle (line 9) | def handle(self, **options): FILE: corehq/apps/accounting/management/commands/find_inactive_custom_modules.py class Command (line 16) | class Command(BaseCommand): method handle (line 18) | def handle(self, **kwargs): method log_module_info (line 59) | def log_module_info(self, module, path, domains, in_module_map): FILE: corehq/apps/accounting/management/commands/get_minimum_features_by_domain.py class Command (line 13) | class Command(BaseCommand): method add_arguments (line 16) | def add_arguments(self, parser): method handle (line 23) | def handle(self, domain_names, **kwargs): function _privilege_to_response_function (line 40) | def _privilege_to_response_function(): function _is_domain_using_privilege (line 51) | def _is_domain_using_privilege(domain_obj, privilege): function _domain_has_custom_report (line 57) | def _domain_has_custom_report(domain_obj): function _domain_uses_locations (line 62) | def _domain_uses_locations(domain_obj): function _domain_has_apps_using_templated_intents (line 67) | def _domain_has_apps_using_templated_intents(domain_obj): function _domain_has_apps_using_custom_intents (line 83) | def _domain_has_apps_using_custom_intents(domain_obj): FILE: corehq/apps/accounting/management/commands/get_partner_domain_user_history.py class Command (line 14) | class Command(BaseCommand): method add_arguments (line 19) | def add_arguments(self, parser): method handle (line 24) | def handle(self, start_date, end_date, domains, **kwargs): FILE: corehq/apps/accounting/management/commands/list_customer_billing_account_software_plan.py class Command (line 6) | class Command(BaseCommand): method add_arguments (line 11) | def add_arguments(self, parser): method handle (line 16) | def handle(self, *args, **kwargs): FILE: corehq/apps/accounting/management/commands/list_prepayments_by_year.py function _make_value_safe_for_csv (line 11) | def _make_value_safe_for_csv(value): function _get_subscription_from_credit_adj (line 15) | def _get_subscription_from_credit_adj(credit_adj): function _domain_from_adjustment (line 21) | def _domain_from_adjustment(credit_adj): class Command (line 29) | class Command(BaseCommand): method add_arguments (line 32) | def add_arguments(self, parser): method handle (line 35) | def handle(self, year, **options): FILE: corehq/apps/accounting/management/commands/make_domain_enterprise_level.py class Command (line 8) | class Command(BaseCommand): method add_arguments (line 12) | def add_arguments(self, parser): method handle (line 16) | def handle(self, domain, **kwargs): FILE: corehq/apps/accounting/migrations/0001_squashed_0052_ensure_report_builder_plans.py function _cchq_software_plan_bootstrap (line 24) | def _cchq_software_plan_bootstrap(apps, schema_editor): class Migration (line 32) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0002_auto_20170222_2008.py function _grandfather_location (line 9) | def _grandfather_location(apps, schema_editor): class Migration (line 18) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0003_auto_20170328_2102.py class Migration (line 10) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0004_auto_20170404_0028.py class Migration (line 10) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0005_automatic_downgrade_adjustment_method.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0006_unique_active_domain_subscription.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0007_practice_mobile_workers.py class Migration (line 10) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0008_update_report_builder_included_feature_numbers.py function _cchq_software_plan_update (line 10) | def _cchq_software_plan_update(apps, schema_editor): class Migration (line 14) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0009_make_billingaccount_name_unique.py function _make_existing_billing_account_names_unique (line 9) | def _make_existing_billing_account_names_unique(apps, schema_editor): class Migration (line 25) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0010_remove_softwareproduct_product_type.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0011_remove_softwareproduct.py function _copy_product_name_to_product_rate_name (line 6) | def _copy_product_name_to_product_rate_name(apps, schema_editor): class Migration (line 13) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0012_replace__product_type__with__is_product.py function _product_type_to_is_product (line 6) | def _product_type_to_is_product(apps, schema_editor): class Migration (line 12) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0013_subscription_dates_check.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0014_paymentmethod__web_user__nonnullable.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0015_grandfather_login_as.py function _grandfather_login_as (line 9) | def _grandfather_login_as(apps, schema_editor): class Migration (line 18) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0016_grandfather_reportbuilder_5_pro.py function _grandfather_reportbuilder_5_pro (line 9) | def _grandfather_reportbuilder_5_pro(apps, schema_editor): class Migration (line 18) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0017_nonnullable_char_fields.py function _assign_default_values (line 6) | def _assign_default_values(apps, schema_editor): class Migration (line 16) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0018_alter_nonnullable_char_fields.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0019_standard_pricing_march_2018.py function _bootstrap_new_standard_pricing (line 9) | def _bootstrap_new_standard_pricing(apps, schema_editor): class Migration (line 13) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0020_payment_method__unique_together.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0021_standard_user_limit_march_2018.py function _bootstrap_new_standard_user_limit (line 11) | def _bootstrap_new_standard_user_limit(apps, schema_editor): class Migration (line 15) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0022_add__skip_auto_downgrade_reason.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0023_auto_20180501_1813.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0024_unique__transaction_id.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0025_auto_20180508_1952.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0026_auto_20180508_1956.py function noop (line 6) | def noop(*args, **kwargs): function _convert_emailed_to_array_field (line 10) | def _convert_emailed_to_array_field(apps, schema_editor): class Migration (line 24) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0027_auto_20180509_1857.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0028_auto_20180604_1757.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0029_auto_20180605_1826.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0030_softwareplan_max_domains.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0031_billingaccount_billing_admin_emails.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0032_billingaccount_invoicing_plan.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0032_customerinvoice_squashed_0036_customerbillingrecord.py class Migration (line 10) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0033_auto_20180709_1837.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0034_merge_20180711_1828.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0034_remove_subscription_date_delay_invoicing.py function assert_date_delay_invoicing_does_not_apply (line 8) | def assert_date_delay_invoicing_does_not_apply(apps, schema_editor): class Migration (line 16) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0035_enterprise_settings.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0035_merge_20180711_2039.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0036_domainuserhistory.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0037_merge_20180807_0915.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0038_remove_billingaccount_restrict_signup_email.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0039_auto_20180828_2258.py function noop (line 11) | def noop(*args, **kwargs): function _bootstrap_new_monthly_pricing (line 15) | def _bootstrap_new_monthly_pricing(apps, schema_editor): class Migration (line 19) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0040_auto_20181002_1721.py function noop (line 11) | def noop(*args, **kwargs): function _bootstrap_new_monthly_pricing (line 15) | def _bootstrap_new_monthly_pricing(apps, schema_editor): class Migration (line 19) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0041_auto_20190130_1709.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0042_domain_user_history__unique__and__nonnullable.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0043_grandfather_case_privs.py function _grandfather_case_privs (line 11) | def _grandfather_case_privs(apps, schema_editor): class Migration (line 21) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0044_grandfather_odata_privs.py function _grandfather_odata_privs (line 11) | def _grandfather_odata_privs(apps, schema_editor): class Migration (line 21) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0045_grandfather_data_forwarding_privs.py function _grandfather_data_forwarding_privs (line 11) | def _grandfather_data_forwarding_privs(apps, schema_editor): class Migration (line 21) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0046_new_plans.py function _grandfather_basic_privs (line 16) | def _grandfather_basic_privs(apps, schema_editor): function _ensure_new_software_plans (line 26) | def _ensure_new_software_plans(apps, schema_editor): class Migration (line 30) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0047_invoice_communication.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0048_friendly_writeoff.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0049_auto_20200924_1753.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0050_app_user_profiles.py function _grandfather_basic_privs (line 9) | def _grandfather_basic_privs(apps, schema_editor): class Migration (line 19) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0051_hubspot_restrictions.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0052_geocoder_permissions.py function _grandfather_basic_privs (line 9) | def _grandfather_basic_privs(apps, schema_editor): class Migration (line 19) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0053_app_user_profiles_advanced.py function _grandfather_basic_privs (line 9) | def _grandfather_basic_privs(apps, schema_editor): class Migration (line 19) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0054_default_export_settings.py function _grandfather_basic_privs (line 9) | def _grandfather_basic_privs(apps, schema_editor): class Migration (line 19) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0055_linked_projects.py function _grandfather_basic_privs (line 7) | def _grandfather_basic_privs(apps, schema_editor): class Migration (line 17) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0056_add_release_management.py function _grandfather_basic_privs (line 7) | def _grandfather_basic_privs(apps, schema_editor): class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0057_add_sms_report_toggle.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0058_delete_linked_projects_role.py function _revoke_linked_project_priv (line 7) | def _revoke_linked_project_priv(apps, schema_editor): class Migration (line 17) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0059_add_lite_release_management_priv.py function _grandfather_basic_privs (line 9) | def _grandfather_basic_privs(apps, schema_editor): class Migration (line 19) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0060_add_loadtest_users_priv.py function _grandfather_basic_privs (line 9) | def _grandfather_basic_privs(apps, schema_editor): class Migration (line 19) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0061_remove_enterprise_v1.py function _consolidate_enterprise_v1_into_v0 (line 14) | def _consolidate_enterprise_v1_into_v0(apps, schema_editor): class Migration (line 34) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0062_add_release_management_to_enterprise.py function _add_release_management_to_enterprise (line 9) | def _add_release_management_to_enterprise(apps, schema_editor): function _reverse (line 18) | def _reverse(): class Migration (line 29) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0063_replace_linked_projects_ff_with_erm.py function _migrate_linked_projects_ff_to_erm (line 8) | def _migrate_linked_projects_ff_to_erm(apps, schema_editor): class Migration (line 12) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0064_add_form_link_workflow_priv.py function _grandfather_form_link_workflow_privs (line 11) | def _grandfather_form_link_workflow_privs(apps, schema_editor): class Migration (line 21) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0065_phone_apk_heartbeat_privs.py function _grandfather_phone_apk_heartbeat_privs (line 11) | def _grandfather_phone_apk_heartbeat_privs(apps, schema_editor): class Migration (line 21) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0066_data_file_download_priv.py function _grandfather_data_file_download_priv (line 10) | def _grandfather_data_file_download_priv(apps, schema_editor): class Migration (line 27) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0067_add_view_app_diff_priv.py function _grandfather_view_app_diff_privs (line 11) | def _grandfather_view_app_diff_privs(apps, schema_editor): class Migration (line 21) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0068_regex_field_validation_privilege.py function _grandfather_regex_field_validation_priv (line 10) | def _grandfather_regex_field_validation_priv(apps, schema_editor): class Migration (line 27) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0069_location_safe_case_imports_priv.py function _grandfather_location_safe_case_imports_priv (line 10) | def _grandfather_location_safe_case_imports_priv(apps, schema_editor): class Migration (line 28) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0070_form_case_ids_case_importer_priv.py function _grandfather_form_case_ids_case_importer_priv (line 13) | def _grandfather_form_case_ids_case_importer_priv(apps, schema_editor): class Migration (line 29) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0071_add_billingaccountwebuserhistory.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0072_export_multisort_priv.py function _grandfather_export_multisort_priv (line 12) | def _grandfather_export_multisort_priv(apps, schema_editor): class Migration (line 28) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0073_export_ownership_priv.py function _grandfather_export_ownership_priv (line 11) | def _grandfather_export_ownership_priv(apps, schema_editor): class Migration (line 28) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0074_filtered_bulk_user_download_priv.py function _grandfather_filtered_bulk_user_download_priv (line 10) | def _grandfather_filtered_bulk_user_download_priv(apps, schema_editor): class Migration (line 28) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0075_application_error_report_priv.py function _grandfather_application_error_report_priv (line 10) | def _grandfather_application_error_report_priv(apps, schema_editor): class Migration (line 28) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0076_location_owner_in_report_builder_priv.py function _grandfather_location_owner_in_report_builder_priv (line 10) | def _grandfather_location_owner_in_report_builder_priv(apps, schema_edit... class Migration (line 27) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0077_case_list_explorer_priv.py function _add_cle_to_pro_and_above (line 9) | def _add_cle_to_pro_and_above(apps, schema_editor): function _reverse (line 18) | def _reverse(): class Migration (line 29) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0078_revert_location_owner_in_report_builder_priv.py function _remove_privilege_from_plan (line 13) | def _remove_privilege_from_plan(apps, schema_editor): function _grant_privilege_to_plans (line 22) | def _grant_privilege_to_plans(*args, **kwargs): class Migration (line 52) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0079_add_web_user_feature.py function _add_web_user_feature (line 8) | def _add_web_user_feature(apps, schema_editor): function _remove_web_user_feature (line 17) | def _remove_web_user_feature(apps, schema_editor): class Migration (line 25) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0080_add_web_user_feature_in_other_models.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0081_billingaccount_bill_web_user.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0082_application_error_report_priv.py function _grandfather_application_error_report_priv (line 11) | def _grandfather_application_error_report_priv(apps, schema_editor): function _revert_application_error_report_priv (line 33) | def _revert_application_error_report_priv(apps, schema_editor): class Migration (line 41) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0083_data_dictionary_priv.py function _grandfather_data_dictionary_priv (line 10) | def _grandfather_data_dictionary_priv(apps, schema_editor): class Migration (line 28) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0084_copy_cases_priv.py function _grandfather_copy_cases_priv (line 10) | def _grandfather_copy_cases_priv(apps, schema_editor): class Migration (line 27) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0085_remove_free_50_sms.py function _bootstrap_new_standard_pricing (line 9) | def _bootstrap_new_standard_pricing(apps, schema_editor): class Migration (line 13) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0086_add_duplicate_invoice_id_to_invoice_model.py class Migration (line 7) | class Migration(migrations.Migration): method _populate_duplicate_invoice_id (line 13) | def _populate_duplicate_invoice_id(apps, schema_editor): FILE: corehq/apps/accounting/migrations/0087_invoice_unique_constraints.py class Migration (line 19) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0088_add_new_softwareplan_visibility.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0089_dedupe_priv.py function _add_dedupe_to_advanced_and_above (line 10) | def _add_dedupe_to_advanced_and_above(apps, schema_editor): function _reverse (line 20) | def _reverse(apps, schema_editor): class Migration (line 35) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0090_custom_domain_alerts_priv.py function _grandfather_privilege (line 12) | def _grandfather_privilege(apps, schema_editor): class Migration (line 29) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0091_remove_custom_banner_alerts_feature_flag.py function _remove_feature_flag (line 13) | def _remove_feature_flag(*args, **kwargs): class Migration (line 24) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0092_revert_application_error_report_priv.py function _remove_privilege_from_plan (line 16) | def _remove_privilege_from_plan(apps, schema_editor): function _grant_privilege_to_plans (line 24) | def _grant_privilege_to_plans(*args, **kwargs): class Migration (line 47) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0093_defaultproductplan_is_annual_plan.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0094_add_annual_softwareplans.py function _bootstrap_new_annual_pricing (line 8) | def _bootstrap_new_annual_pricing(apps, schema_editor): function _remove_annual_default_product_plans (line 12) | def _remove_annual_default_product_plans(apps, schema_editor): class Migration (line 21) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0095_update_softwareplan_visibilities.py function change_plan_visibilities (line 10) | def change_plan_visibilities(apps, schema_editor): class Migration (line 22) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0096_formsubmittingmobileworkerhistory_and_featuretype_choice.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0097_add_form_submitting_mobile_worker_feature.py function _add_form_submitting_mobile_worker_feature (line 10) | def _add_form_submitting_mobile_worker_feature(apps, schema_editor): function _remove_form_submitting_mobile_worker_feature (line 22) | def _remove_form_submitting_mobile_worker_feature(apps, schema_editor): class Migration (line 30) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0098_app_dependencies_priv.py function _grandfather_privilege (line 12) | def _grandfather_privilege(apps, schema_editor): class Migration (line 29) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0099_data_cleaning_priv.py function _add_data_cleaning_to_enterprise (line 9) | def _add_data_cleaning_to_enterprise(apps, schema_editor): function _reverse (line 19) | def _reverse(apps, schema_editor): class Migration (line 34) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0100_alter_customerinvoicecommunicationhistory_communication_type_and_more.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0101_update_standard_plan_pricing_users_and_privs.py function _add_standard_plan_v2_role (line 10) | def _add_standard_plan_v2_role(apps, schema_editor): function _bootstrap_new_standard_pricing (line 14) | def _bootstrap_new_standard_pricing(apps, schema_editor): class Migration (line 18) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0102_alter_defaultproductplan_edition_and_more.py function _rename_community_to_free (line 6) | def _rename_community_to_free(apps, schema_editor): function _rename_free_to_community (line 14) | def _rename_free_to_community(apps, schema_editor): class Migration (line 22) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0103_bulk_data_cleaning_priv.py function _add_data_editing_to_advanced_and_clean_old_privilege (line 9) | def _add_data_editing_to_advanced_and_clean_old_privilege(apps, schema_e... function _reverse (line 30) | def _reverse(apps, schema_editor): class Migration (line 48) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0104_fix_priv_community_rename.py function noop (line 10) | def noop(*args, **kwargs): function _revoke_accidental_free_privilege (line 15) | def _revoke_accidental_free_privilege(apps, schema_editor): class Migration (line 27) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0105_alter_billingcontactinfo_city_and_more.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0106_alter_billingcontactinfo_company_name.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0107_two_stage_mobile_worker_creation_priv.py function _add_two_stage_mw_creation_to_standard (line 11) | def _add_two_stage_mw_creation_to_standard(apps, schema_editor): function _reverse (line 26) | def _reverse(apps, schema_editor): class Migration (line 45) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0108_subscription_auto_renew_and_more.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0109_enable_all_add_ons_priv.py function _add_enable_all_add_ons_to_pro (line 16) | def _add_enable_all_add_ons_to_pro(apps, schema_editor): function _reverse (line 27) | def _reverse(apps, schema_editor): class Migration (line 42) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0110_alter_customerinvoicecommunicationhistory_communication_type_and_more.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0111_rename_is_auto_invoiceable_billingaccount_require_auto_pay.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0112_data_dict_types_priv.py function _grandfather_data_dict_types_priv (line 18) | def _grandfather_data_dict_types_priv(apps, schema_editor): function _revoke_data_dict_types_priv (line 28) | def _revoke_data_dict_types_priv(apps, schema_editor): class Migration (line 44) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0113_geojson_export_priv.py function _grandfather_geojson_export_priv (line 18) | def _grandfather_geojson_export_priv(apps, schema_editor): function _revoke_geojson_export_priv (line 28) | def _revoke_geojson_export_priv(apps, schema_editor): class Migration (line 44) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0114_custom_icon_badges_priv.py function _grandfather_privilege (line 13) | def _grandfather_privilege(apps, schema_editor): class Migration (line 30) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0115_loc_cols_in_user_last_activity_priv.py function _grandfather_privilege (line 13) | def _grandfather_privilege(apps, schema_editor): class Migration (line 30) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/migrations/0116_creditadjustment_payment_type.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/accounting/mixins.py function get_overdue_invoice (line 17) | def get_overdue_invoice(domain_name): function get_total_credits_available_for_product (line 24) | def get_total_credits_available_for_product(subscription): function get_credits_available_for_product_in_subscription (line 32) | def get_credits_available_for_product_in_subscription(current_subscripti... function get_credits_available_for_product_in_account (line 42) | def get_credits_available_for_product_in_account(account): class BillingModalsMixin (line 51) | class BillingModalsMixin(object): method main_context (line 54) | def main_context(self): method _should_display_billing_modals (line 61) | def _should_display_billing_modals(self): method _downgrade_modal_context (line 72) | def _downgrade_modal_context(self): method _low_credits_context (line 82) | def _low_credits_context(self): FILE: corehq/apps/accounting/models.py class BillingAccountType (line 106) | class BillingAccountType(object): class InvoicingPlan (line 121) | class InvoicingPlan(object): class FeatureType (line 132) | class FeatureType(object): class SoftwarePlanEdition (line 150) | class SoftwarePlanEdition(object): class SoftwarePlanVisibility (line 183) | class SoftwarePlanVisibility(object): class CreditAdjustmentReason (line 196) | class CreditAdjustmentReason(object): class SubscriptionAdjustmentReason (line 215) | class SubscriptionAdjustmentReason(object): class SubscriptionAdjustmentMethod (line 237) | class SubscriptionAdjustmentMethod(object): class PaymentMethodType (line 258) | class PaymentMethodType(object): class SubscriptionType (line 265) | class SubscriptionType(object): class ProBonoStatus (line 283) | class ProBonoStatus(object): class FundingSource (line 294) | class FundingSource(object): class EntryPoint (line 305) | class EntryPoint(object): class PaymentType (line 316) | class PaymentType(object): class PreOrPostPay (line 335) | class PreOrPostPay(object): class CommunicationType (line 346) | class CommunicationType(object): class Currency (line 361) | class Currency(models.Model): class Meta (line 375) | class Meta(object): method get_default (line 379) | def get_default(cls): class BillingAccount (line 387) | class BillingAccount(ValidateModelMixin, models.Model): class Meta (line 455) | class Meta(object): method auto_pay_enabled (line 459) | def auto_pay_enabled(self): method create_account_for_domain (line 463) | def create_account_for_domain(cls, domain, method get_or_create_account_by_domain (line 485) | def get_or_create_account_by_domain(cls, domain, method get_account_by_domain (line 506) | def get_account_by_domain(cls, domain): method _get_account_by_created_by_domain (line 514) | def _get_account_by_created_by_domain(cls, domain): method get_enterprise_restricted_signup_accounts (line 530) | def get_enterprise_restricted_signup_accounts(cls): method autopay_card (line 534) | def autopay_card(self): method get_domains (line 540) | def get_domains(self): method has_enterprise_admin (line 544) | def has_enterprise_admin(self, email): method update_autopay_user (line 548) | def update_autopay_user(self, new_user, domain): method remove_autopay_user (line 556) | def remove_autopay_user(self): method _send_autopay_card_removed_email (line 560) | def _send_autopay_card_removed_email(self, new_user, domain): method _send_autopay_card_added_email (line 594) | def _send_autopay_card_added_email(self, domain): method get_web_user_usernames (line 629) | def get_web_user_usernames(self): method should_show_sms_billable_report (line 639) | def should_show_sms_billable_report(domain): class BillingContactInfo (line 644) | class BillingContactInfo(models.Model): class Meta (line 689) | class Meta(object): method __init__ (line 692) | def __init__(self, *args, **kwargs): method full_name (line 698) | def full_name(self): class SoftwareProductRate (line 707) | class SoftwareProductRate(models.Model): class Meta (line 718) | class Meta(object): method __str__ (line 721) | def __str__(self): method __eq__ (line 724) | def __eq__(self, other): method new_rate (line 733) | def new_rate(cls, product_name, monthly_fee, save=True): class Feature (line 740) | class Feature(models.Model): class Meta (line 749) | class Meta(object): method __str__ (line 752) | def __str__(self): method get_rate (line 755) | def get_rate(self, default_instance=True): class FeatureRate (line 762) | class FeatureRate(models.Model): class Meta (line 779) | class Meta(object): method __str__ (line 782) | def __str__(self): method __eq__ (line 787) | def __eq__(self, other): method new_rate (line 796) | def new_rate(cls, feature_name, feature_type, class SoftwarePlan (line 813) | class SoftwarePlan(models.Model): class Meta (line 836) | class Meta(object): method get_version (line 840) | def get_version(self): method at_max_domains (line 846) | def at_max_domains(self): class DefaultProductPlan (line 856) | class DefaultProductPlan(models.Model): class Meta (line 873) | class Meta(object): method get_default_plan_version (line 880) | def get_default_plan_version(cls, edition=None, is_trial=False, method get_lowest_edition (line 897) | def get_lowest_edition(cls, requested_privileges, return_plan=False): class SoftwarePlanVersion (line 907) | class SoftwarePlanVersion(models.Model): class Meta (line 921) | class Meta(object): method __str__ (line 924) | def __str__(self): method save (line 930) | def save(self, *args, **kwargs): method filter_version_query (line 935) | def filter_version_query(query, edition=None, visibility=None, is_plan... method get_most_recent_version (line 945) | def get_most_recent_version(cls, edition=None, visibility=None): method version (line 967) | def version(self): method user_facing_description (line 973) | def user_facing_description(self): method user_feature (line 1013) | def user_feature(self): method user_limit (line 1024) | def user_limit(self): method user_fee (line 1030) | def user_fee(self): method feature_charges_exist_for_domain (line 1034) | def feature_charges_exist_for_domain(self, domain, start_date=None, en... method is_paused (line 1050) | def is_paused(self): class SubscriberManager (line 1054) | class SubscriberManager(models.Manager): method safe_get (line 1056) | def safe_get(self, *args, **kwargs): class Subscriber (line 1063) | class Subscriber(models.Model): class Meta (line 1072) | class Meta(object): method __str__ (line 1075) | def __str__(self): method create_subscription (line 1078) | def create_subscription(self, new_plan_version, new_subscription, is_i... method change_subscription (line 1087) | def change_subscription(self, downgraded_privileges, upgraded_privileg... method activate_subscription (line 1098) | def activate_subscription(self, upgraded_privileges, subscription): method deactivate_subscription (line 1104) | def deactivate_subscription(self, downgraded_privileges, upgraded_priv... method reactivate_subscription (line 1113) | def reactivate_subscription(self, new_plan_version, subscription): method _apply_upgrades_and_downgrades (line 1120) | def _apply_upgrades_and_downgrades(self, new_plan_version=None, method should_send_subscription_notification (line 1153) | def should_send_subscription_notification(old_subscription, new_subscr... method _process_downgrade (line 1161) | def _process_downgrade(domain, downgraded_privileges, new_plan_version): method _process_upgrade (line 1169) | def _process_upgrade(domain, upgraded_privileges, new_plan_version): class VisibleSubscriptionManager (line 1177) | class VisibleSubscriptionManager(models.Manager): method get_queryset (line 1180) | def get_queryset(self): class DisabledManager (line 1184) | class DisabledManager(models.Manager): method get_queryset (line 1186) | def get_queryset(self): class Subscription (line 1190) | class Subscription(models.Model): class Meta (line 1234) | class Meta(object): method __str__ (line 1237) | def __str__(self): method __eq__ (line 1247) | def __eq__(self, other): method __hash__ (line 1258) | def __hash__(self): method save (line 1263) | def save(self, *args, **kwargs): method delete (line 1279) | def delete(self, *args, **kwargs): method clear_caches (line 1284) | def clear_caches(cls, domain_name): method is_free_edition (line 1288) | def is_free_edition(self): method allowed_attr_changes (line 1292) | def allowed_attr_changes(self): method next_subscription_filter (line 1301) | def next_subscription_filter(self): method previous_subscription_filter (line 1308) | def previous_subscription_filter(self): method is_renewed (line 1315) | def is_renewed(self): method next_subscription (line 1323) | def next_subscription(self): method previous_subscription (line 1330) | def previous_subscription(self): method raise_conflicting_dates (line 1336) | def raise_conflicting_dates(self, date_start, date_end): method update_subscription (line 1353) | def update_subscription(self, date_start, date_end, method _update_dates (line 1389) | def _update_dates(self, date_start, date_end): method _update_properties (line 1410) | def _update_properties(self, **kwargs): method upgrade_plan_for_consistency (line 1433) | def upgrade_plan_for_consistency(self, new_plan_version, upgrade_note,... method change_plan (line 1460) | def change_plan(self, new_plan_version, date_end=None, method reactivate_subscription (line 1557) | def reactivate_subscription(self, date_end=None, note=None, web_user=N... method renew_subscription (line 1581) | def renew_subscription(self, note=None, web_user=None, method suppress_subscription (line 1651) | def suppress_subscription(self): method transfer_credits (line 1661) | def transfer_credits(self, subscription=None): method set_billing_account_entry_point (line 1689) | def set_billing_account_entry_point(self): method get_active_domains_for_account (line 1697) | def get_active_domains_for_account(cls, account_name): method get_active_subscription_by_domain (line 1707) | def get_active_subscription_by_domain(cls, domain_name_or_obj): method _get_active_subscription_by_domain (line 1717) | def _get_active_subscription_by_domain(cls, domain_name): method get_subscribed_plan_by_domain (line 1729) | def get_subscribed_plan_by_domain(cls, domain): method new_domain_subscription (line 1747) | def new_domain_subscription(cls, account, domain, plan_version, method can_reactivate_domain_subscription (line 1848) | def can_reactivate_domain_subscription(cls, account, domain, plan_vers... method is_below_minimum_subscription (line 1864) | def is_below_minimum_subscription(self): method can_auto_renew (line 1876) | def can_auto_renew(self): method user_can_change_subscription (line 1883) | def user_can_change_subscription(self, user): method get_plan_and_user_count_by_domain (line 1892) | def get_plan_and_user_count_by_domain(cls, domain): class InvoiceBaseManager (line 1900) | class InvoiceBaseManager(models.Manager): method get_queryset (line 1902) | def get_queryset(self): method create_or_get (line 1905) | def create_or_get(self, **kwargs): class InvoiceBase (line 1918) | class InvoiceBase(models.Model): class Meta (line 1935) | class Meta(object): method is_customer_invoice (line 1939) | def is_customer_invoice(self): method invoice_number (line 1943) | def invoice_number(self): method is_wire (line 1948) | def is_wire(self): method can_pay_by_wire (line 1952) | def can_pay_by_wire(self): method get_domain (line 1955) | def get_domain(self): method account (line 1959) | def account(self): method is_paid (line 1963) | def is_paid(self): method email_recipients (line 1967) | def email_recipients(self): class WireInvoice (line 1971) | class WireInvoice(InvoiceBase): class Meta (line 1975) | class Meta(object): method account (line 1980) | def account(self): method subtotal (line 1984) | def subtotal(self): method is_wire (line 1988) | def is_wire(self): method is_prepayment (line 1992) | def is_prepayment(self): method can_pay_by_wire (line 1996) | def can_pay_by_wire(self): method get_domain (line 1999) | def get_domain(self): method get_total (line 2002) | def get_total(self): method email_recipients (line 2006) | def email_recipients(self): class WirePrepaymentInvoice (line 2019) | class WirePrepaymentInvoice(WireInvoice): class Meta (line 2021) | class Meta(object): method get_contact_emails (line 2027) | def get_contact_emails(self): method is_prepayment (line 2039) | def is_prepayment(self): class Invoice (line 2043) | class Invoice(InvoiceBase): class Meta (line 2052) | class Meta(object): method save (line 2061) | def save(self, *args, **kwargs): method email_recipients (line 2068) | def email_recipients(self): method get_contact_emails (line 2074) | def get_contact_emails(self, include_domain_admins=False, filter_out_d... method can_pay_by_wire (line 2116) | def can_pay_by_wire(self): method subtotal (line 2120) | def subtotal(self): method applied_tax (line 2129) | def applied_tax(self): method account (line 2134) | def account(self): method applied_credit (line 2138) | def applied_credit(self): method get_total (line 2143) | def get_total(self): method update_balance (line 2149) | def update_balance(self): method calculate_credit_adjustments (line 2156) | def calculate_credit_adjustments(self): method exists_for_domain (line 2172) | def exists_for_domain(cls, domain): method get_domain (line 2177) | def get_domain(self): method autopayable_invoices (line 2181) | def autopayable_invoices(cls, date_due=Ellipsis): method pay_invoice (line 2193) | def pay_invoice(self, payment_record, payment_type): class CustomerInvoice (line 2204) | class CustomerInvoice(InvoiceBase): class Meta (line 2209) | class Meta(object): method is_customer_invoice (line 2220) | def is_customer_invoice(self): method get_domain (line 2223) | def get_domain(self): method email_recipients (line 2227) | def email_recipients(self): method contact_emails (line 2236) | def contact_emails(self): method get_contact_emails (line 2239) | def get_contact_emails(self, include_domain_admins=False, filter_out_d... method can_pay_by_wire (line 2244) | def can_pay_by_wire(self): method subtotal (line 2248) | def subtotal(self): method applied_tax (line 2257) | def applied_tax(self): method applied_credit (line 2261) | def applied_credit(self): method get_total (line 2266) | def get_total(self): method update_balance (line 2272) | def update_balance(self): method calculate_credit_adjustments (line 2279) | def calculate_credit_adjustments(self): method pay_invoice (line 2286) | def pay_invoice(self, payment_record, payment_type): method exists_for_domain (line 2297) | def exists_for_domain(cls, domain): method autopayable_invoices (line 2305) | def autopayable_invoices(cls, date_due): class SubscriptionAdjustment (line 2316) | class SubscriptionAdjustment(models.Model): class Meta (line 2346) | class Meta(object): method record_adjustment (line 2350) | def record_adjustment(cls, subscription, **kwargs): class BillingRecordBase (line 2362) | class BillingRecordBase(models.Model): class Meta (line 2375) | class Meta(object): method pdf (line 2381) | def pdf(self): method html_template (line 2387) | def html_template(self): method text_template (line 2391) | def text_template(self): method should_send_email (line 2395) | def should_send_email(self): method generate_record (line 2399) | def generate_record(cls, invoice): method handle_throttled_email (line 2408) | def handle_throttled_email(self, contact_emails): method email_context (line 2428) | def email_context(self): method email_subject (line 2456) | def email_subject(self): method can_view_statement (line 2459) | def can_view_statement(self, web_user): method send_email (line 2462) | def send_email(self, contact_email=None, cc_emails=None): class WireBillingRecord (line 2508) | class WireBillingRecord(BillingRecordBase): class Meta (line 2514) | class Meta(object): method should_send_email (line 2518) | def should_send_email(self): method is_email_throttled (line 2523) | def is_email_throttled(): method email_context (line 2526) | def email_context(self): method email_subject (line 2531) | def email_subject(self): method email_from (line 2539) | def email_from(): method can_view_statement (line 2542) | def can_view_statement(self, web_user): class WirePrepaymentBillingRecord (line 2546) | class WirePrepaymentBillingRecord(WireBillingRecord): class Meta (line 2548) | class Meta(object): method email_subject (line 2552) | def email_subject(self): method can_view_statement (line 2570) | def can_view_statement(self, web_user): class BillingRecord (line 2574) | class BillingRecord(BillingRecordBase): class Meta (line 2582) | class Meta(object): method html_template (line 2586) | def html_template(self): method text_template (line 2596) | def text_template(self): method should_send_email (line 2606) | def should_send_email(self): method is_email_throttled (line 2615) | def is_email_throttled(self): method email_context (line 2625) | def email_context(self): method credits (line 2673) | def credits(self): method _add_product_credits (line 2684) | def _add_product_credits(self, credits): method _add_user_credits (line 2722) | def _add_user_credits(self, credits): method _add_sms_credits (line 2760) | def _add_sms_credits(self, credits): method _add_general_credits (line 2798) | def _add_general_credits(self, credits): method email_subject (line 2835) | def email_subject(self): method email_from (line 2842) | def email_from(self): method _get_total_balance (line 2846) | def _get_total_balance(credit_lines): method can_view_statement (line 2852) | def can_view_statement(self, web_user): class CustomerBillingRecord (line 2856) | class CustomerBillingRecord(BillingRecordBase): class Meta (line 2864) | class Meta(object): method html_template (line 2868) | def html_template(self): method text_template (line 2875) | def text_template(self): method should_send_email (line 2881) | def should_send_email(self): method email_context (line 2884) | def email_context(self): method credits (line 2921) | def credits(self): method _add_product_credits (line 2932) | def _add_product_credits(self, credits): method _add_user_credits (line 2964) | def _add_user_credits(self, credits): method _add_sms_credits (line 2996) | def _add_sms_credits(self, credits): method _add_general_credits (line 3028) | def _add_general_credits(self, credits): method _subscriptions_in_credit_adjustments (line 3059) | def _subscriptions_in_credit_adjustments(self, credit_adjustments): method email_subject (line 3067) | def email_subject(self): method email_from (line 3074) | def email_from(self): method _get_total_balance (line 3078) | def _get_total_balance(credit_lines): method can_view_statement (line 3084) | def can_view_statement(self, web_user): class InvoicePdf (line 3091) | class InvoicePdf(BlobMixin, SafeSaveDocument): method generate_pdf (line 3098) | def generate_pdf(self, invoice): method get_filename (line 3178) | def get_filename(invoice): method get_data (line 3184) | def get_data(self, invoice): class LineItemManager (line 3189) | class LineItemManager(models.Manager): method get_products (line 3191) | def get_products(self): method get_features (line 3194) | def get_features(self): method get_feature_by_type (line 3197) | def get_feature_by_type(self, feature_type): class LineItem (line 3201) | class LineItem(models.Model): class Meta (line 3215) | class Meta(object): method invoice (line 3219) | def invoice(self): method invoice (line 3226) | def invoice(self, invoice): method subtotal (line 3233) | def subtotal(self): method applied_credit (line 3240) | def applied_credit(self): method total (line 3249) | def total(self): method calculate_credit_adjustments (line 3252) | def calculate_credit_adjustments(self): class CreditLine (line 3262) | class CreditLine(models.Model): class Meta (line 3277) | class Meta(object): method __str__ (line 3280) | def __str__(self): method save (line 3294) | def save(self, *args, **kwargs): method adjust_credit_balance (line 3306) | def adjust_credit_balance( method get_credits_for_line_item (line 3356) | def get_credits_for_line_item(cls, line_item): method get_credits_for_line_item_in_invoice (line 3372) | def get_credits_for_line_item_in_invoice(cls, line_item, feature_type,... method get_credits_for_line_item_in_customer_invoice (line 3380) | def get_credits_for_line_item_in_customer_invoice(cls, line_item, feat... method get_credits_for_invoice (line 3395) | def get_credits_for_invoice(cls, invoice, feature_type=None, is_produc... method get_credits_for_customer_invoice (line 3435) | def get_credits_for_customer_invoice(cls, invoice): method get_credits_for_subscriptions (line 3442) | def get_credits_for_subscriptions(cls, subscriptions, feature_type=Non... method get_credits_for_account (line 3453) | def get_credits_for_account(cls, account, feature_type=None, is_produc... method get_non_general_credits_for_account (line 3462) | def get_non_general_credits_for_account(cls, account): method get_credits_by_subscription_and_features (line 3471) | def get_credits_by_subscription_and_features(cls, subscription, method get_non_general_credits_by_subscription (line 3483) | def get_non_general_credits_by_subscription(cls, subscription): method add_credit (line 3490) | def add_credit( method apply_credits_toward_balance (line 3570) | def apply_credits_toward_balance(cls, credit_lines, balance, **kwargs): method make_payment_towards_invoice (line 3585) | def make_payment_towards_invoice(cls, invoice, payment_record, payment... class PaymentMethod (line 3605) | class PaymentMethod(models.Model): class Meta (line 3622) | class Meta(object): class StripePaymentMethod (line 3627) | class StripePaymentMethod(PaymentMethod): class Meta (line 3629) | class Meta(object): method customer (line 3639) | def customer(self): method _get_or_create_stripe_customer (line 3642) | def _get_or_create_stripe_customer(self): method _create_stripe_customer (line 3653) | def _create_stripe_customer(self): method _get_stripe_customer (line 3662) | def _get_stripe_customer(self): method all_cards (line 3666) | def all_cards(self): method all_cards_serialized (line 3677) | def all_cards_serialized(self, billing_account): method get_card (line 3688) | def get_card(self, card_token): method get_autopay_card (line 3691) | def get_autopay_card(self, billing_account): method remove_card (line 3697) | def remove_card(self, card_token): method _remove_card_from_all_accounts (line 3702) | def _remove_card_from_all_accounts(self, card): method create_card (line 3708) | def create_card(self, stripe_token, billing_account, domain, autopay=F... method set_autopay (line 3735) | def set_autopay(self, card, billing_account, domain): method unset_autopay (line 3747) | def unset_autopay(self, card, billing_account): method _update_autopay_status (line 3755) | def _update_autopay_status(self, card, billing_account, autopay): method _remove_autopay_card (line 3759) | def _remove_autopay_card(self, billing_account): method _remove_other_auto_pay_cards (line 3765) | def _remove_other_auto_pay_cards(billing_account): method _is_autopay (line 3774) | def _is_autopay(card, billing_account): method _get_other_autopay_primary_domains (line 3778) | def _get_other_autopay_primary_domains(card, billing_account): method _auto_pay_card_metadata_key (line 3797) | def _auto_pay_card_metadata_key(billing_account): method create_charge (line 3806) | def create_charge(self, card, amount_in_dollars, description, idempote... class PaymentRecord (line 3819) | class PaymentRecord(models.Model): class Meta (line 3830) | class Meta(object): method public_transaction_id (line 3834) | def public_transaction_id(self): method create_record (line 3839) | def create_record(cls, payment_method, transaction_id, amount): class CreditAdjustment (line 3847) | class CreditAdjustment(ValidateModelMixin, models.Model): class Meta (line 3869) | class Meta(object): method clean (line 3872) | def clean(self): class DomainUserHistoryBase (line 3880) | class DomainUserHistoryBase(models.Model): class Meta (line 3888) | class Meta: class DomainUserHistory (line 3893) | class DomainUserHistory(DomainUserHistoryBase): class FormSubmittingMobileWorkerHistory (line 3902) | class FormSubmittingMobileWorkerHistory(DomainUserHistoryBase): class BillingAccountWebUserHistory (line 3914) | class BillingAccountWebUserHistory(models.Model): class Meta (line 3924) | class Meta: class CommunicationHistoryBase (line 3928) | class CommunicationHistoryBase(models.Model): class Meta (line 3941) | class Meta(object): class AccountCommunicationHistory (line 3945) | class AccountCommunicationHistory(CommunicationHistoryBase): class InvoiceCommunicationHistory (line 3949) | class InvoiceCommunicationHistory(CommunicationHistoryBase): class CustomerInvoiceCommunicationHistory (line 3953) | class CustomerInvoiceCommunicationHistory(CommunicationHistoryBase): FILE: corehq/apps/accounting/payment_handlers.py class BaseStripePaymentHandler (line 30) | class BaseStripePaymentHandler(object): method __init__ (line 36) | def __init__(self, payment_method, domain): method cost_item_name (line 42) | def cost_item_name(self): method create_charge (line 47) | def create_charge(self, amount, card=None, customer=None): method get_charge_amount (line 54) | def get_charge_amount(self, request): method update_credits (line 59) | def update_credits(self, payment_record): method update_payment_information (line 64) | def update_payment_information(self, account): method process_request (line 69) | def process_request(self, request): method get_email_context (line 154) | def get_email_context(self): method send_email (line 159) | def send_email(self, payment_record): class InvoiceStripePaymentHandler (line 168) | class InvoiceStripePaymentHandler(BaseStripePaymentHandler): method __init__ (line 172) | def __init__(self, payment_method, domain, invoice): method cost_item_name (line 177) | def cost_item_name(self): method create_charge (line 180) | def create_charge(self, amount, card=None, customer=None): method get_charge_amount (line 189) | def get_charge_amount(self, request): method update_credits (line 196) | def update_credits(self, payment_record): method get_email_context (line 222) | def get_email_context(self): class BulkStripePaymentHandler (line 233) | class BulkStripePaymentHandler(BaseStripePaymentHandler): method __init__ (line 237) | def __init__(self, payment_method, domain): method cost_item_name (line 241) | def cost_item_name(self): method create_charge (line 244) | def create_charge(self, amount, card=None, customer=None): method invoices (line 254) | def invoices(self): method balance (line 267) | def balance(self): method get_charge_amount (line 270) | def get_charge_amount(self, request): method update_credits (line 275) | def update_credits(self, payment_record): method get_email_context (line 314) | def get_email_context(self): class CreditStripePaymentHandler (line 324) | class CreditStripePaymentHandler(BaseStripePaymentHandler): method __init__ (line 328) | def __init__(self, payment_method, domain, account, subscription=None,... method cost_item_name (line 343) | def cost_item_name(self): method get_charge_amount (line 346) | def get_charge_amount(self, request): method create_charge (line 349) | def create_charge(self, amount, card=None, customer=None): method update_payment_information (line 358) | def update_payment_information(self, account): method update_credits (line 363) | def update_credits(self, payment_record): class AutoPayInvoicePaymentHandler (line 376) | class AutoPayInvoicePaymentHandler(object): method pay_autopayable_invoices (line 378) | def pay_autopayable_invoices(self, date_due=Ellipsis, domain=None): method pay_autopayable_customer_invoices (line 393) | def pay_autopayable_customer_invoices(self, date_due=Ellipsis, account... method _pay_invoice (line 408) | def _pay_invoice(self, invoice): method _send_payment_receipt (line 453) | def _send_payment_receipt(self, invoice, payment_record): method _handle_card_declined (line 478) | def _handle_card_declined(invoice, e): method _handle_card_errors (line 495) | def _handle_card_errors(invoice, error): method _handle_email_failure (line 503) | def _handle_email_failure(payment_record_id): FILE: corehq/apps/accounting/static/accounting/js/stripe.js function getCardElementPromise (line 6) | function getCardElementPromise(key) { function createStripeToken (line 27) | function createStripeToken(handleResponse) { FILE: corehq/apps/accounting/subscription_changes.py class BaseModifySubscriptionHandler (line 45) | class BaseModifySubscriptionHandler(object): method __init__ (line 47) | def __init__(self, domain, new_plan_version, changed_privs, date_start... method get_response (line 61) | def get_response(self): method action_type (line 75) | def action_type(self): method privilege_to_response_function (line 79) | def privilege_to_response_function(cls): method supported_privileges (line 83) | def supported_privileges(cls): class BaseModifySubscriptionActionHandler (line 87) | class BaseModifySubscriptionActionHandler(BaseModifySubscriptionHandler): method get_response (line 89) | def get_response(self): function _get_active_immediate_broadcasts (line 94) | def _get_active_immediate_broadcasts(domain, survey_only=False): function _get_active_scheduled_broadcasts (line 102) | def _get_active_scheduled_broadcasts(domain, survey_only=False): function _get_active_scheduling_rules (line 110) | def _get_active_scheduling_rules(domain, survey_only=False): function get_refresh_alert_schedule_instances_call (line 122) | def get_refresh_alert_schedule_instances_call(broadcast): function get_refresh_timed_schedule_instances_call (line 132) | def get_refresh_timed_schedule_instances_call(broadcast): function _deactivate_schedules (line 143) | def _deactivate_schedules(domain, survey_only=False): class DomainDowngradeActionHandler (line 181) | class DomainDowngradeActionHandler(BaseModifySubscriptionActionHandler): method privilege_to_response_function (line 190) | def privilege_to_response_function(cls): method get_response (line 206) | def get_response(self): method response_outbound_sms (line 213) | def response_outbound_sms(domain, new_plan_version): method response_inbound_sms (line 228) | def response_inbound_sms(domain, new_plan_version): method response_role_based_access (line 243) | def response_role_based_access(domain, new_plan_version): method response_data_cleanup (line 259) | def response_data_cleanup(domain, new_plan_version): method response_commcare_logo_uploader (line 278) | def response_commcare_logo_uploader(domain, new_plan_version): method response_domain_security (line 286) | def response_domain_security(domain, new_plan_version): method response_report_builder (line 294) | def response_report_builder(project, new_plan_version): method response_practice_mobile_workers (line 313) | def response_practice_mobile_workers(project, new_plan_version): method response_mobile_worker_creation (line 320) | def response_mobile_worker_creation(domain, new_plan_version): class DomainUpgradeActionHandler (line 349) | class DomainUpgradeActionHandler(BaseModifySubscriptionActionHandler): method privilege_to_response_function (line 358) | def privilege_to_response_function(cls): method response_role_based_access (line 371) | def response_role_based_access(domain, new_plan_version): method response_commcare_logo_uploader (line 380) | def response_commcare_logo_uploader(domain, new_plan_version): method response_report_builder (line 388) | def response_report_builder(project, new_plan_version): method response_enable_usercase (line 412) | def response_enable_usercase(project, new_plan_version): function _fmt_alert (line 417) | def _fmt_alert(message, details=None): function _has_report_builder_add_on (line 426) | def _has_report_builder_add_on(plan_version): function _get_report_builder_reports (line 435) | def _get_report_builder_reports(project): class DomainDowngradeStatusHandler (line 443) | class DomainDowngradeStatusHandler(BaseModifySubscriptionHandler): method privilege_to_response_function (line 451) | def privilege_to_response_function(cls): method get_response (line 470) | def get_response(self): method response_cloudcare (line 479) | def response_cloudcare(domain, new_plan_version): method response_lookup_tables (line 508) | def response_lookup_tables(domain, new_plan_version): method response_custom_branding (line 525) | def response_custom_branding(domain, new_plan_version): method response_outbound_sms (line 536) | def response_outbound_sms(domain, new_plan_version): method response_inbound_sms (line 559) | def response_inbound_sms(domain, new_plan_version): method response_deidentified_data (line 582) | def response_deidentified_data(project, new_plan_version): method response_mobile_worker_creation (line 602) | def response_mobile_worker_creation(self): method response_role_based_access (line 678) | def response_role_based_access(domain, new_plan_version): method response_later_subscription (line 704) | def response_later_subscription(self): method response_data_cleanup (line 733) | def response_data_cleanup(domain, new_plan_version): method response_domain_security (line 757) | def response_domain_security(domain, new_plan_version): method response_report_builder (line 786) | def response_report_builder(project, new_plan_version): method response_practice_mobile_workers (line 796) | def response_practice_mobile_workers(project, new_plan_version): FILE: corehq/apps/accounting/task_utils.py function get_context_to_send_autopay_failed_email (line 22) | def get_context_to_send_autopay_failed_email(invoice_id, is_customer_inv... function get_context_to_send_purchase_receipt (line 66) | def get_context_to_send_purchase_receipt(payment_record_id, domain_name,... function _user_active_in_domains (line 94) | def _user_active_in_domains(web_user, domain_name, account): function raise_except_and_log_accounting_comms_error (line 101) | def raise_except_and_log_accounting_comms_error(username): FILE: corehq/apps/accounting/tasks.py function _activate_subscription (line 106) | def _activate_subscription(subscription): function activate_subscriptions (line 116) | def activate_subscriptions(based_on_date=None): function _deactivate_subscription (line 141) | def _deactivate_subscription(subscription): function deactivate_subscriptions (line 179) | def deactivate_subscriptions(based_on_date=None): function warn_subscriptions_still_active (line 198) | def warn_subscriptions_still_active(based_on_date=None): function warn_subscriptions_not_active (line 212) | def warn_subscriptions_not_active(based_on_date=None): function warn_active_subscriptions_per_domain_not_one (line 227) | def warn_active_subscriptions_per_domain_not_one(): function warn_subscriptions_without_domain (line 250) | def warn_subscriptions_without_domain(): function update_subscriptions (line 265) | def update_subscriptions(): function check_credit_line_balances (line 280) | def check_credit_line_balances(): function log_error_and_soft_assert (line 300) | def log_error_and_soft_assert(error_message): function generate_invoices_based_on_date (line 306) | def generate_invoices_based_on_date(invoice_date): function generate_invoices (line 355) | def generate_invoices(): function send_bookkeeper_email (line 363) | def send_bookkeeper_email(month=None, year=None, emails=None): function auto_renew_subscriptions (line 426) | def auto_renew_subscriptions(domain_name=None): function _get_auto_renewable_subscriptions (line 436) | def _get_auto_renewable_subscriptions(domain_name=None): function auto_renew_subscription (line 455) | def auto_renew_subscription(subscription): function remind_subscription_ending (line 480) | def remind_subscription_ending(): function send_renewal_reminder_emails (line 491) | def send_renewal_reminder_emails(days_left): function send_subscription_ending_emails (line 499) | def send_subscription_ending_emails(days_left): function _try_send_subscription_email (line 507) | def _try_send_subscription_email(subscription, days_left, send_email_func): function remind_dimagi_contact_subscription_ending (line 520) | def remind_dimagi_contact_subscription_ending(): function send_subscription_reminder_emails_dimagi_contact (line 530) | def send_subscription_reminder_emails_dimagi_contact(days_left): function _filter_subscriptions_for_reminder_emails (line 540) | def _filter_subscriptions_for_reminder_emails(days_left, **kwargs): function create_wire_credits_invoice (line 553) | def create_wire_credits_invoice(domain_name, function send_purchase_receipt (line 608) | def send_purchase_receipt( function send_autopay_failed (line 628) | def send_autopay_failed(invoice_id, is_customer_invoice=False): function weekly_digest (line 648) | def weekly_digest(): function pay_autopay_invoices (line 743) | def pay_autopay_invoices(): function update_exchange_rates (line 751) | def update_exchange_rates(): function send_credits_on_hq_report (line 776) | def send_credits_on_hq_report(): function run_auto_pause_process (line 790) | def run_auto_pause_process(): function send_invoice_reminders (line 795) | def send_invoice_reminders(): function archive_logos (line 801) | def archive_logos(self, domain_name): function restore_logos (line 820) | def restore_logos(self, domain_name): function send_prepaid_credits_export (line 843) | def send_prepaid_credits_export(): function calculate_users_in_all_domains (line 920) | def calculate_users_in_all_domains(today=None): function calculate_form_submitting_mobile_workers_in_all_domains (line 944) | def calculate_form_submitting_mobile_workers_in_all_domains(today=None): function calculate_web_users_in_all_billing_accounts (line 965) | def calculate_web_users_in_all_billing_accounts(today=None): FILE: corehq/apps/accounting/tests/base_tests.py class BaseAccountingTest (line 17) | class BaseAccountingTest(TestCase): method setUpClass (line 20) | def setUpClass(cls): class BaseInvoiceTestCase (line 25) | class BaseInvoiceTestCase(BaseAccountingTest): method setUpClass (line 32) | def setUpClass(cls): method setUp (line 44) | def setUp(self): method cleanUp (line 59) | def cleanUp(self): method tearDownClass (line 65) | def tearDownClass(cls): method create_invoices (line 72) | def create_invoices(date, calculate_users=True, calculate_web_users=Fa... FILE: corehq/apps/accounting/tests/generator.py function bootstrap_accounting (line 41) | def bootstrap_accounting(): function bootstrap_test_software_plan_versions (line 58) | def bootstrap_test_software_plan_versions(): function init_default_currency (line 63) | def init_default_currency(): function unique_name (line 75) | def unique_name(): function create_arbitrary_web_user_name (line 80) | def create_arbitrary_web_user_name(is_dimagi=False): function billing_account (line 84) | def billing_account(web_user_creator, web_user_contact, is_customer_acco... function arbitrary_contact_info (line 100) | def arbitrary_contact_info(account, web_user_creator): function subscribable_plan_version (line 117) | def subscribable_plan_version(edition=SoftwarePlanEdition.STANDARD): function default_feature_rates (line 122) | def default_feature_rates(edition=SoftwarePlanEdition.STANDARD): function custom_plan_version (line 134) | def custom_plan_version(name='Custom software plan', edition=SoftwarePla... function generate_domain_subscription (line 154) | def generate_domain_subscription(account, domain, date_start, date_end, function get_start_date (line 174) | def get_start_date(): function arbitrary_domain (line 182) | def arbitrary_domain(): function arbitrary_domain_and_subscriber (line 192) | def arbitrary_domain_and_subscriber(): function arbitrary_user (line 199) | def arbitrary_user(domain_name, is_active=True, is_webuser=False, **kwar... function arbitrary_commcare_users_for_domain (line 214) | def arbitrary_commcare_users_for_domain(domain, num_users, is_active=True): function arbitrary_webusers_for_domain (line 223) | def arbitrary_webusers_for_domain(domain, num_users, is_active=True): function create_excess_free_users (line 232) | def create_excess_free_users(domain): class FakeStripeCard (line 240) | class FakeStripeCard(mock.MagicMock): method __init__ (line 242) | def __init__(self): method metadata (line 249) | def metadata(self): method metadata (line 253) | def metadata(self, value): method save (line 257) | def save(self): class FakeStripeCustomer (line 261) | class FakeStripeCustomer(mock.MagicMock): method __init__ (line 263) | def __init__(self, cards): class FakeStripeCardManager (line 270) | class FakeStripeCardManager: method create_card (line 274) | def create_card(cls): method get_card_by_id (line 280) | def get_card_by_id(cls, card_id): class FakeStripeCustomerManager (line 284) | class FakeStripeCustomerManager: method create_customer (line 288) | def create_customer(cls, cards): method get_customer_by_id (line 294) | def get_customer_by_id(cls, customer_id): FILE: corehq/apps/accounting/tests/test_admin_software_plans.py class TestUpgradeSoftwarePlanToLatestVersion (line 25) | class TestUpgradeSoftwarePlanToLatestVersion(BaseAccountingTest): method setUpClass (line 28) | def setUpClass(cls): method test_that_upgrade_occurs (line 107) | def test_that_upgrade_occurs(self): class TestKeepSoftwarePlanConsistentManagementCommand (line 149) | class TestKeepSoftwarePlanConsistentManagementCommand(BaseAccountingTest): method setUpClass (line 152) | def setUpClass(cls): method test_keep_software_plan_consistent_for_customer_billing_accounts (line 223) | def test_keep_software_plan_consistent_for_customer_billing_accounts(s... FILE: corehq/apps/accounting/tests/test_autopay.py class BaseTestBillingAutoPay (line 33) | class BaseTestBillingAutoPay(BaseInvoiceTestCase): method setUp (line 35) | def setUp(self): method tearDown (line 45) | def tearDown(self): method _generate_autopayable_entities (line 49) | def _generate_autopayable_entities(self): method _generate_non_autopayable_entities (line 62) | def _generate_non_autopayable_entities(self): method _create_autopay_method (line 87) | def _create_autopay_method(self, fake_customer): method _run_autopay (line 94) | def _run_autopay(self): method _assert_no_side_effects (line 97) | def _assert_no_side_effects(self): class TestBillingAutoPayInvoices (line 103) | class TestBillingAutoPayInvoices(BaseTestBillingAutoPay): method test_get_autopayable_invoices (line 107) | def test_get_autopayable_invoices(self, fake_customer): method test_get_autopayable_invoices_returns_nothing (line 119) | def test_get_autopayable_invoices_returns_nothing(self): method test_pay_autopayable_invoices (line 131) | def test_pay_autopayable_invoices(self, fake_charge, fake_customer): method test_double_charge_is_prevented_because_paid_invoice_is_never_included (line 148) | def test_double_charge_is_prevented_because_paid_invoice_is_never_incl... method test_when_stripe_fails_no_side_effects_occur (line 174) | def test_when_stripe_fails_no_side_effects_occur(self, fake_create, fa... method _run_autopay (line 185) | def _run_autopay(self): class TestBillingAutoPayCustomerInvoices (line 191) | class TestBillingAutoPayCustomerInvoices(BaseTestBillingAutoPay): method _generate_autopayable_entities (line 192) | def _generate_autopayable_entities(self): method _generate_non_autopayable_entities (line 197) | def _generate_non_autopayable_entities(self): method test_get_autopayable_invoices (line 204) | def test_get_autopayable_invoices(self, fake_customer): method test_get_autopayable_invoices_returns_nothing (line 216) | def test_get_autopayable_invoices_returns_nothing(self): method test_pay_autopayable_customer_invoices (line 229) | def test_pay_autopayable_customer_invoices(self, fake_charge, fake_cus... method test_double_charge_is_prevented_because_paid_invoice_is_never_included (line 246) | def test_double_charge_is_prevented_because_paid_invoice_is_never_incl... method test_when_stripe_fails_no_side_effects_occur (line 272) | def test_when_stripe_fails_no_side_effects_occur(self, fake_create, fa... method _run_autopay (line 283) | def _run_autopay(self): FILE: corehq/apps/accounting/tests/test_autopay_with_api.py class BaseTestBillingAutoPay (line 29) | class BaseTestBillingAutoPay(BaseInvoiceTestCase): method setUp (line 31) | def setUp(self): method _generate_autopayable_entities (line 46) | def _generate_autopayable_entities(self): method _generate_non_autopayable_entities (line 64) | def _generate_non_autopayable_entities(self): method _run_autopay (line 90) | def _run_autopay(self): class TestBillingAutoPayInvoices (line 94) | class TestBillingAutoPayInvoices(BaseTestBillingAutoPay): method test_get_autopayable_invoices (line 96) | def test_get_autopayable_invoices(self): method test_get_autopayable_invoices_returns_nothing (line 107) | def test_get_autopayable_invoices_returns_nothing(self): method test_pay_autopayable_invoices (line 119) | def test_pay_autopayable_invoices(self): method test_double_charge_is_prevented_and_only_one_payment_record_created (line 133) | def test_double_charge_is_prevented_and_only_one_payment_record_create... method _run_autopay (line 147) | def _run_autopay(self): class TestBillingAutoPayCustomerInvoices (line 153) | class TestBillingAutoPayCustomerInvoices(BaseTestBillingAutoPay): method _generate_autopayable_entities (line 155) | def _generate_autopayable_entities(self): method _generate_non_autopayable_entities (line 160) | def _generate_non_autopayable_entities(self): method test_get_autopayable_invoices (line 165) | def test_get_autopayable_invoices(self): method test_get_autopayable_invoices_returns_nothing (line 176) | def test_get_autopayable_invoices_returns_nothing(self): method test_pay_autopayable_invoices (line 189) | def test_pay_autopayable_invoices(self): method test_double_charge_is_prevented_and_only_one_payment_record_created (line 203) | def test_double_charge_is_prevented_and_only_one_payment_record_create... method _run_autopay (line 217) | def _run_autopay(self): FILE: corehq/apps/accounting/tests/test_card_utils.py function mock_fake_card (line 17) | def mock_fake_card(card_id, *, metadata=None, brand='Visa', last4='4242'... class CardUtilsTest (line 29) | class CardUtilsTest(BaseAccountingTest): method setUp (line 30) | def setUp(self): method test_get_autopay_card_and_owner_for_billing_account_no_autopay (line 40) | def test_get_autopay_card_and_owner_for_billing_account_no_autopay(self): method test_get_autopay_card_and_owner_for_billing_account_with_autopay (line 46) | def test_get_autopay_card_and_owner_for_billing_account_with_autopay(s... method test_card_as_autopay_for_billing_account_sets_autopay (line 60) | def test_card_as_autopay_for_billing_account_sets_autopay(self): method test_get_payment_method_for_user_always_returns (line 69) | def test_get_payment_method_for_user_always_returns(self): method test_get_saved_cards_for_user_no_stripe_key (line 76) | def test_get_saved_cards_for_user_no_stripe_key(self): method test_get_saved_cards_for_user_with_stripe_key (line 83) | def test_get_saved_cards_for_user_with_stripe_key(self, get_mock): FILE: corehq/apps/accounting/tests/test_change_role_for_software_plan_version.py class ChangeRoleForSoftwarePlanVersionTest (line 20) | class ChangeRoleForSoftwarePlanVersionTest(TestCase): method setUpClass (line 23) | def setUpClass(cls): method test_raises_old_role_does_not_exist (line 32) | def test_raises_old_role_does_not_exist(self): method test_raises_new_role_does_not_exist (line 36) | def test_raises_new_role_does_not_exist(self): method test_changes_active_versions (line 40) | def test_changes_active_versions(self): method test_changes_inactive_versions (line 59) | def test_changes_inactive_versions(self): method test_dry_run (line 85) | def test_dry_run(self): method test_limit_to_plan_version_id (line 97) | def test_limit_to_plan_version_id(self): method test_raises_exception_if_plan_version_id_does_not_reference_old_role (line 122) | def test_raises_exception_if_plan_version_id_does_not_reference_old_ro... FILE: corehq/apps/accounting/tests/test_credit_lines.py class TestCreditLines (line 27) | class TestCreditLines(BaseInvoiceTestCase): method setUp (line 32) | def setUp(self): method tearDown (line 43) | def tearDown(self): method test_product_line_item_credits (line 48) | def test_product_line_item_credits(self): method test_feature_line_item_credits (line 84) | def test_feature_line_item_credits(self): method _generate_users_fee_to_credit_against (line 120) | def _generate_users_fee_to_credit_against(self): method _test_line_item_crediting (line 129) | def _test_line_item_crediting(self, get_line_item_from_invoice): method _test_credit_use (line 146) | def _test_credit_use(self, credit_line): method test_invoice_credit (line 153) | def test_invoice_credit(self): method test_combined_credits (line 188) | def test_combined_credits(self): method _generate_subscription_and_account_invoice_credits (line 221) | def _generate_subscription_and_account_invoice_credits(self, monthly_f... method _test_final_invoice_balance (line 233) | def _test_final_invoice_balance(self): method test_balance_adjustment (line 246) | def test_balance_adjustment(self): class TestDeactivatedCredits (line 286) | class TestDeactivatedCredits(BaseInvoiceTestCase): method add_account_credit (line 288) | def add_account_credit(self, amount): method add_product_credit (line 294) | def add_product_credit(self, amount): method add_sms_credit (line 303) | def add_sms_credit(self, amount): method add_user_credit (line 312) | def add_user_credit(self, amount): method test_get_credits_for_account_only_returns_active_credit (line 321) | def test_get_credits_for_account_only_returns_active_credit(self): method test_get_credits_by_subscription_and_features_only_returns_active_credits (line 331) | def test_get_credits_by_subscription_and_features_only_returns_active_... method test_get_non_general_credits_by_subscription_only_returns_active_credits (line 359) | def test_get_non_general_credits_by_subscription_only_returns_active_c... class TestCreditTransfers (line 382) | class TestCreditTransfers(BaseAccountingTest): method setUpClass (line 385) | def setUpClass(cls): method tearDownClass (line 398) | def tearDownClass(cls): method _ensure_transfer (line 402) | def _ensure_transfer(self, original_credits): method test_transfers (line 423) | def test_transfers(self): class TestSubscriptionChangeTransfersSubscriptionLevelCredit (line 480) | class TestSubscriptionChangeTransfersSubscriptionLevelCredit(BaseAccount... method setUpClass (line 483) | def setUpClass(cls): method tearDownClass (line 503) | def tearDownClass(cls): method _get_credit_total (line 507) | def _get_credit_total(self, subscription): method _change_plan_to_pro_on_date (line 513) | def _change_plan_to_pro_on_date(self, subscription, date): method _generate_user_history (line 525) | def _generate_user_history(self, num_users, invoice_date): method test_any_type_credits_transfer_in_invoice (line 533) | def test_any_type_credits_transfer_in_invoice(self): method test_product_type_credits_transfer_in_invoice (line 568) | def test_product_type_credits_transfer_in_invoice(self): method test_user_feature_type_credits_transfer_in_invoice (line 603) | def test_user_feature_type_credits_transfer_in_invoice(self): FILE: corehq/apps/accounting/tests/test_customer_invoicing.py class BaseCustomerInvoiceCase (line 43) | class BaseCustomerInvoiceCase(BaseAccountingTest): method setUpClass (line 48) | def setUpClass(cls): method cleanUpUser (line 106) | def cleanUpUser(self): method _create_domain (line 117) | def _create_domain(cls, name): class TestCustomerInvoice (line 123) | class TestCustomerInvoice(BaseCustomerInvoiceCase): method test_multiple_subscription_invoice (line 125) | def test_multiple_subscription_invoice(self): method test_no_invoice_before_start (line 142) | def test_no_invoice_before_start(self): method test_no_invoice_after_end (line 150) | def test_no_invoice_after_end(self): method test_deleted_domain_in_multiple_subscription_invoice (line 159) | def test_deleted_domain_in_multiple_subscription_invoice(self): class TestProductLineItem (line 185) | class TestProductLineItem(BaseCustomerInvoiceCase): method setUp (line 191) | def setUp(self): method test_product_line_items (line 195) | def test_product_line_items(self): method test_product_line_items_in_quarterly_invoice (line 212) | def test_product_line_items_in_quarterly_invoice(self): method test_product_line_items_in_yearly_invoice (line 232) | def test_product_line_items_in_yearly_invoice(self): method test_account_level_product_credits (line 252) | def test_account_level_product_credits(self): method test_subscription_level_product_credits (line 267) | def test_subscription_level_product_credits(self): class TestUserLineItem (line 283) | class TestUserLineItem(BaseCustomerInvoiceCase): method setUp (line 287) | def setUp(self): method test_under_limit (line 294) | def test_under_limit(self): method test_over_limit (line 320) | def test_over_limit(self): method test_balance_reflects_credit_deduction_for_account_level_user_credits (line 345) | def test_balance_reflects_credit_deduction_for_account_level_user_cred... method test_balance_reflects_credit_deduction_for_single_subscription_level_user_credit (line 402) | def test_balance_reflects_credit_deduction_for_single_subscription_lev... class TestSmsLineItem (line 427) | class TestSmsLineItem(BaseCustomerInvoiceCase): method setUp (line 429) | def setUp(self): method tearDown (line 439) | def tearDown(self): method test_under_limit (line 443) | def test_under_limit(self): method test_over_limit (line 464) | def test_over_limit(self): method test_balance_reflects_credit_deduction_for_single_subscription_level_sms_credits (line 521) | def test_balance_reflects_credit_deduction_for_single_subscription_lev... method test_balance_reflects_credit_deduction_for_account_level_sms_credits (line 543) | def test_balance_reflects_credit_deduction_for_account_level_sms_credi... method _create_sms_line_items (line 565) | def _create_sms_line_items(self): method _delete_sms_billables (line 573) | def _delete_sms_billables(cls): class TestQuarterlyInvoicing (line 581) | class TestQuarterlyInvoicing(BaseCustomerInvoiceCase): method setUp (line 585) | def setUp(self): method initialize_domain_user_history_objects (line 598) | def initialize_domain_user_history_objects(self): method test_user_over_limit_in_quarterly_invoice (line 627) | def test_user_over_limit_in_quarterly_invoice(self): method test_user_over_limit_in_yearly_invoice (line 640) | def test_user_over_limit_in_yearly_invoice(self): method test_sms_over_limit_in_quarterly_invoice (line 654) | def test_sms_over_limit_in_quarterly_invoice(self): method test_sms_over_limit_in_yearly_invoice (line 683) | def test_sms_over_limit_in_yearly_invoice(self): method _create_sms_line_items_for_quarter (line 712) | def _create_sms_line_items_for_quarter(self): class TestDomainsInLineItemForCustomerInvoicing (line 719) | class TestDomainsInLineItemForCustomerInvoicing(TestCase): method setUpClass (line 722) | def setUpClass(cls): method tearDownClass (line 741) | def tearDownClass(cls): method test_past_subscription_is_excluded (line 746) | def test_past_subscription_is_excluded(self): method test_future_subscription_is_excluded (line 757) | def test_future_subscription_is_excluded(self): method test_preexisting_subscription_is_included (line 768) | def test_preexisting_subscription_is_included(self): method test_preexisting_subscription_without_end_date_is_included (line 779) | def test_preexisting_subscription_without_end_date_is_included(self): method test_new_subscription_is_included (line 789) | def test_new_subscription_is_included(self): method test_new_subscription_without_end_date_is_included (line 800) | def test_new_subscription_without_end_date_is_included(self): FILE: corehq/apps/accounting/tests/test_domain_user_history.py class TestDomainUserHistory (line 21) | class TestDomainUserHistory(BaseInvoiceTestCase): method setUpClass (line 24) | def setUpClass(cls): method setUp (line 28) | def setUp(self): method tearDown (line 35) | def tearDown(self): method test_domain_user_history (line 40) | def test_domain_user_history(self): method test_calculate_users_in_all_domains (line 49) | def test_calculate_users_in_all_domains(self): class TestBillingAccountWebUserHistory (line 59) | class TestBillingAccountWebUserHistory(TestCase): method setUpClass (line 62) | def setUpClass(cls): method test_calculate_web_users_for_enterprise_account (line 128) | def test_calculate_web_users_for_enterprise_account(self): method test_calculate_web_users_for_standard_account (line 138) | def test_calculate_web_users_for_standard_account(self): method test_mobile_workers_are_not_counted (line 145) | def test_mobile_workers_are_not_counted(self): method _get_domain_user_from_account (line 153) | def _get_domain_user_from_account(self): method tearDownClass (line 160) | def tearDownClass(cls): FILE: corehq/apps/accounting/tests/test_emails.py class TestGetReminderEmailContacts (line 19) | class TestGetReminderEmailContacts(BaseInvoiceTestCase): method test_get_reminder_email_contacts (line 20) | def test_get_reminder_email_contacts(self): method test_contacts_only_in_one_list (line 43) | def test_contacts_only_in_one_list(self): method test_to_project_admins_if_no_billing_contact (line 64) | def test_to_project_admins_if_no_billing_contact(self): class TestEndingReminderContext (line 90) | class TestEndingReminderContext(BaseInvoiceTestCase): method test_ending_reminder_context (line 93) | def test_ending_reminder_context(self): method test_ending_on_tomorrow_if_one_day_left (line 113) | def test_ending_on_tomorrow_if_one_day_left(self): method test_subject_uses_account_if_customer_billing_account (line 121) | def test_subject_uses_account_if_customer_billing_account(self): FILE: corehq/apps/accounting/tests/test_ensure_plans.py class TestEnsurePlans (line 20) | class TestEnsurePlans(BaseAccountingTest): method tearDown (line 22) | def tearDown(self): method test_ensure_plans (line 26) | def test_ensure_plans(self): method _test_plan_versions_ensured (line 79) | def _test_plan_versions_ensured(self, bootstrap_config): FILE: corehq/apps/accounting/tests/test_enterprise_mode.py class TestEnterpriseMode (line 16) | class TestEnterpriseMode(DomainSubscriptionMixin, BaseAccountingTest): method setUp (line 18) | def setUp(self): method tearDown (line 21) | def tearDown(self): method test_standard_cant_access_advanced (line 25) | def test_standard_cant_access_advanced(self): method test_no_plan_cant_access_anything (line 31) | def test_no_plan_cant_access_anything(self): method test_enterprise_can_access_anything (line 34) | def test_enterprise_can_access_anything(self): FILE: corehq/apps/accounting/tests/test_forms.py class TestAdjustBalanceForm (line 42) | class TestAdjustBalanceForm(BaseInvoiceTestCase): method setUp (line 44) | def setUp(self): method tearDown (line 50) | def tearDown(self): method test_manual_adjustment (line 53) | def test_manual_adjustment(self): method test_transfer_credit_with_credit (line 73) | def test_transfer_credit_with_credit(self): method test_transfer_credit_without_credit (line 103) | def test_transfer_credit_without_credit(self): class TestAdjustBalanceFormForCustomerAccount (line 134) | class TestAdjustBalanceFormForCustomerAccount(BaseInvoiceTestCase): method setUp (line 136) | def setUp(self): method tearDown (line 144) | def tearDown(self): method test_manual_adjustment (line 147) | def test_manual_adjustment(self): method test_transfer_credit_with_credit (line 167) | def test_transfer_credit_with_credit(self): method test_transfer_credit_without_credit (line 196) | def test_transfer_credit_without_credit(self): class TestSubscriptionForm (line 226) | class TestSubscriptionForm(BaseAccountingTest): method setUp (line 228) | def setUp(self): method tearDown (line 260) | def tearDown(self): method test_regular_plan_not_added_to_customer_account (line 265) | def test_regular_plan_not_added_to_customer_account(self): method test_customer_plan_not_added_to_regular_account (line 283) | def test_customer_plan_not_added_to_regular_account(self): method test_form_data_create_subscription (line 301) | def test_form_data_create_subscription(self): method test_form_data_update_subscription (line 328) | def test_form_data_update_subscription(self): method shared_keywords (line 350) | def shared_keywords(): class TestTriggerInvoiceForm (line 371) | class TestTriggerInvoiceForm(BaseInvoiceTestCase): method setUp (line 373) | def setUp(self): method init_form (line 381) | def init_form(self, form_data, show_testing_options=False): method form_data (line 387) | def form_data(self, **kwargs): method test_trigger_invoice (line 396) | def test_trigger_invoice(self): method test_clean_previous_invoices (line 405) | def test_clean_previous_invoices(self): method test_show_testing_options (line 418) | def test_show_testing_options(self): method test_num_mobile_workers (line 427) | def test_num_mobile_workers(self): method test_num_form_submitting_mobile_workers (line 441) | def test_num_form_submitting_mobile_workers(self): class TestPlanContactForm (line 456) | class TestPlanContactForm(TestCase): method setUp (line 457) | def setUp(self): method test_send_message (line 464) | def test_send_message(self, mock_send): FILE: corehq/apps/accounting/tests/test_invoice_line_items.py class TestProductLineItem (line 36) | class TestProductLineItem(BaseInvoiceTestCase): method setUp (line 41) | def setUp(self): method test_standard (line 45) | def test_standard(self): method test_prorate (line 76) | def test_prorate(self): class TestUserLineItem (line 124) | class TestUserLineItem(BaseInvoiceTestCase): method setUp (line 128) | def setUp(self): method test_under_limit (line 133) | def test_under_limit(self): method test_over_limit (line 167) | def test_over_limit(self): method test_free_over_limit (line 204) | def test_free_over_limit(self): class TestFormSubmittingMobileWorkerLineItem (line 248) | class TestFormSubmittingMobileWorkerLineItem(BaseInvoiceTestCase): method setUp (line 250) | def setUp(self): method setup_invoice (line 271) | def setup_invoice(self, num_form_submitting_workers): method _create_worker_history (line 283) | def _create_worker_history(self, history_cls, record_date, num_workers... method test_under_limit (line 290) | def test_under_limit(self): method test_over_limit (line 307) | def test_over_limit(self): class TestWebUserLineItem (line 326) | class TestWebUserLineItem(BaseInvoiceTestCase): method setUp (line 331) | def setUp(self): method test_under_limit (line 338) | def test_under_limit(self): method test_over_limit (line 366) | def test_over_limit(self): method test_no_line_item_when_bill_web_user_flag_is_false (line 397) | def test_no_line_item_when_bill_web_user_flag_is_false(self): class TestSmsLineItem (line 416) | class TestSmsLineItem(BaseInvoiceTestCase): method setUpClass (line 420) | def setUpClass(cls): method setUp (line 427) | def setUp(self): method tearDownClass (line 434) | def tearDownClass(cls): method test_under_limit (line 438) | def test_under_limit(self): method test_over_limit (line 467) | def test_over_limit(self): method test_multipart_under_limit (line 499) | def test_multipart_under_limit(self): method test_multipart_over_limit_and_part_of_the_billable_is_under_limit (line 513) | def test_multipart_over_limit_and_part_of_the_billable_is_under_limit(... method _create_sms_line_item (line 556) | def _create_sms_line_item(self): method _create_multipart_billables (line 561) | def _create_multipart_billables(self, total_parts): method _delete_sms_billables (line 579) | def _delete_sms_billables(cls): FILE: corehq/apps/accounting/tests/test_invoice_pdf.py class TestInvoicePdf (line 19) | class TestInvoicePdf(SimpleTestCase): method test_invoice_template (line 33) | def test_invoice_template(self): class InvoiceRenderer (line 50) | class InvoiceRenderer: method iter_invoices (line 76) | def iter_invoices(self): method iter_all_kwarg_configs (line 121) | def iter_all_kwarg_configs(self): method iter_multi_page_configs (line 143) | def iter_multi_page_configs(self): method get_invoice (line 165) | def get_invoice(self, file_or_path, *, is_wire, is_customer, is_prepay... method get_address (line 203) | def get_address(name): FILE: corehq/apps/accounting/tests/test_invoicing.py class TestInvoice (line 46) | class TestInvoice(BaseInvoiceTestCase): method setUp (line 52) | def setUp(self): method test_no_invoice_before_start (line 60) | def test_no_invoice_before_start(self): method test_subscription_invoice (line 67) | def test_subscription_invoice(self): method test_no_invoice_after_end (line 84) | def test_no_invoice_after_end(self): method test_no_subscription_no_charges_no_invoice (line 92) | def test_no_subscription_no_charges_no_invoice(self): method test_free_invoice (line 101) | def test_free_invoice(self): method test_paused_plan_generates_no_invoice (line 122) | def test_paused_plan_generates_no_invoice(self): method test_feature_charges (line 139) | def test_feature_charges(self): method test_date_due_not_set_small_invoice (line 146) | def test_date_due_not_set_small_invoice(self): method test_date_due_set_large_invoice (line 157) | def test_date_due_set_large_invoice(self): method test_date_due_gets_set_autopay (line 168) | def test_date_due_gets_set_autopay(self): class TestContractedInvoices (line 181) | class TestContractedInvoices(BaseInvoiceTestCase): method setUp (line 183) | def setUp(self): method test_contracted_invoice_email_recipient (line 194) | def test_contracted_invoice_email_recipient(self): method test_contracted_invoice_email_template (line 206) | def test_contracted_invoice_email_template(self): class TestInvoiceRecipients (line 219) | class TestInvoiceRecipients(BaseInvoiceTestCase): method test_implementation_subscription_with_dimagi_contact (line 221) | def test_implementation_subscription_with_dimagi_contact(self): method test_implementation_subscription_without_dimagi_contact (line 232) | def test_implementation_subscription_without_dimagi_contact(self): method test_product_subscription (line 243) | def test_product_subscription(self): method test_specified_recipients_implementation_with_dimagi_contact (line 255) | def test_specified_recipients_implementation_with_dimagi_contact(self): method test_specified_recipients_implementation_without_dimagi_contact (line 259) | def test_specified_recipients_implementation_without_dimagi_contact(se... method test_specified_recipients_product (line 263) | def test_specified_recipients_product(self): method test_unspecified_recipients_product (line 267) | def test_unspecified_recipients_product(self): method _setup_implementation_subscription_with_dimagi_contact (line 277) | def _setup_implementation_subscription_with_dimagi_contact(self): method _setup_implementation_subscription_without_dimagi_contact (line 284) | def _setup_implementation_subscription_without_dimagi_contact(self): method _setup_product_subscription (line 291) | def _setup_product_subscription(self): method _setup_product_subscription_with_admin_user (line 297) | def _setup_product_subscription_with_admin_user(self): method _test_specified_recipients (line 313) | def _test_specified_recipients(self): class TestInvoicingMethods (line 330) | class TestInvoicingMethods(BaseAccountingTest): method setUp (line 332) | def setUp(self): method tearDown (line 356) | def tearDown(self): method test_should_not_invoice_trial (line 360) | def test_should_not_invoice_trial(self): method test_should_not_invoice_paused_plan (line 374) | def test_should_not_invoice_paused_plan(self): method test_should_not_invoice_without_subscription_charges (line 396) | def test_should_not_invoice_without_subscription_charges(self): method test_should_not_invoice_after_end (line 410) | def test_should_not_invoice_after_end(self): method test_should_not_invoice_before_start (line 420) | def test_should_not_invoice_before_start(self): class TestFlaggedPayAnnuallyPrepayInvoice (line 431) | class TestFlaggedPayAnnuallyPrepayInvoice(BaseInvoiceTestCase): method setUpClass (line 433) | def setUpClass(cls): method setUp (line 439) | def setUp(self): method create_invoices (line 449) | def create_invoices(self): method create_prepayment_invoice (line 454) | def create_prepayment_invoice(self, date_due): method create_product_credit (line 464) | def create_product_credit(self, amount): method test_monthly_invoice_product_fully_paid (line 472) | def test_monthly_invoice_product_fully_paid(self): method test_no_prepayment_invoice (line 479) | def test_no_prepayment_invoice(self): method test_prepayment_invoice_not_due_yet (line 484) | def test_prepayment_invoice_not_due_yet(self): method test_matching_prepayment_invoice_exists (line 490) | def test_matching_prepayment_invoice_exists(self): class TestGetProratedSoftwarePlanCost (line 497) | class TestGetProratedSoftwarePlanCost(SimpleTestCase): method test_full_month (line 499) | def test_full_month(self): method test_partial_month (line 507) | def test_partial_month(self): method test_multiple_months (line 515) | def test_multiple_months(self): method test_zero_days (line 527) | def test_zero_days(self): FILE: corehq/apps/accounting/tests/test_migrations.py class TestExplicitUnpaidSubscriptions (line 18) | class TestExplicitUnpaidSubscriptions(TestCase): method setUpClass (line 24) | def setUpClass(cls): method tearDownClass (line 32) | def tearDownClass(cls): method test_no_preexisting_subscription (line 36) | def test_no_preexisting_subscription(self): method test_preexisting_current_subscription (line 47) | def test_preexisting_current_subscription(self): method test_preexisting_future_subscription (line 60) | def test_preexisting_future_subscription(self): method test_preexisting_past_subscription (line 85) | def test_preexisting_past_subscription(self): method _assign_unpaid_subscriptions (line 113) | def _assign_unpaid_subscriptions(self): method _most_recently_created_free_plan_version (line 119) | def _most_recently_created_free_plan_version(self): method _most_recently_created_paused_plan_version (line 123) | def _most_recently_created_paused_plan_version(self): method _random_plan_version (line 127) | def _random_plan_version(self): method _preexisting_subscription_account (line 133) | def _preexisting_subscription_account(self): FILE: corehq/apps/accounting/tests/test_model_validation.py class TestCreditAdjustmentValidation (line 17) | class TestCreditAdjustmentValidation(BaseAccountingTest): method test_clean (line 19) | def test_clean(self): FILE: corehq/apps/accounting/tests/test_models.py class TestBillingAccount (line 43) | class TestBillingAccount(BaseAccountingTest): method setUp (line 45) | def setUp(self): method test_creation (line 52) | def test_creation(self): method test_deletions (line 55) | def test_deletions(self): method test_autopay_user (line 58) | def test_autopay_user(self): method tearDown (line 74) | def tearDown(self): class TestSubscription (line 85) | class TestSubscription(BaseAccountingTest): method setUp (line 87) | def setUp(self): method test_creation (line 106) | def test_creation(self): method test_no_activation (line 109) | def test_no_activation(self): method test_no_activation_date_start_equals_date_end (line 114) | def test_no_activation_date_start_equals_date_end(self): method test_no_activation_after_date_end (line 121) | def test_no_activation_after_date_end(self): method test_activation (line 128) | def test_activation(self): method test_no_deactivation (line 133) | def test_no_deactivation(self): method test_deactivation (line 139) | def test_deactivation(self): method test_deletions (line 144) | def test_deletions(self): method test_is_hidden_to_ops (line 149) | def test_is_hidden_to_ops(self): method test_next_subscription (line 158) | def test_next_subscription(self): method test_get_active_domains_for_account (line 174) | def test_get_active_domains_for_account(self): method tearDown (line 180) | def tearDown(self): class TestBillingRecord (line 186) | class TestBillingRecord(BaseAccountingTest): method setUp (line 188) | def setUp(self): method tearDown (line 215) | def tearDown(self): method test_should_send_email (line 219) | def test_should_send_email(self): method test_should_send_email_contracted (line 222) | def test_should_send_email_contracted(self): method test_should_send_email_autogenerate_credits (line 232) | def test_should_send_email_autogenerate_credits(self): method test_should_send_email_hidden (line 239) | def test_should_send_email_hidden(self): class TestCustomerBillingRecord (line 246) | class TestCustomerBillingRecord(BaseAccountingTest): method setUp (line 248) | def setUp(self): method tearDown (line 277) | def tearDown(self): method test_should_send_email (line 281) | def test_should_send_email(self): method test_should_send_email_hidden (line 284) | def test_should_send_email_hidden(self): class TestStripePaymentMethod (line 292) | class TestStripePaymentMethod(BaseAccountingTest): method setUp (line 294) | def setUp(self): method test_set_autopay (line 313) | def test_set_autopay(self, mock_send_email, fake_customer): method test_unset_autopay (line 337) | def test_unset_autopay(self, fake_customer): class SimpleBillingAccountTest (line 349) | class SimpleBillingAccountTest(SimpleTestCase): method test_has_enterprise_admin_does_case_insensitive_match (line 350) | def test_has_enterprise_admin_does_case_insensitive_match(self): FILE: corehq/apps/accounting/tests/test_new_domain_subscription.py class TestNewDomainSubscription (line 18) | class TestNewDomainSubscription(BaseAccountingTest): method setUp (line 20) | def setUp(self): method tearDown (line 43) | def tearDown(self): method test_new_susbscription_in_future (line 48) | def test_new_susbscription_in_future(self): method test_conflicting_dates (line 78) | def test_conflicting_dates(self): method test_update_billing_account_entry_point_self_serve (line 123) | def test_update_billing_account_entry_point_self_serve(self): method test_update_billing_account_entry_point_contracted (line 130) | def test_update_billing_account_entry_point_contracted(self): method test_dont_update_billing_account_if_set (line 138) | def test_dont_update_billing_account_if_set(self): method test_exceeding_max_domains_prevents_new_domains (line 149) | def test_exceeding_max_domains_prevents_new_domains(self): method test_customer_plan_not_added_to_regular_account (line 158) | def test_customer_plan_not_added_to_regular_account(self): method test_regular_plan_not_added_to_customer_account (line 164) | def test_regular_plan_not_added_to_customer_account(self): FILE: corehq/apps/accounting/tests/test_race_condition_is_prevented.py class UniqueConstraintInvoiceTest (line 13) | class UniqueConstraintInvoiceTest(BaseInvoiceTestCase): method test_unique_constraint_prevents_duplicate_invoice (line 15) | def test_unique_constraint_prevents_duplicate_invoice(self): class UniqueConstraintCustomerInvoiceTest (line 39) | class UniqueConstraintCustomerInvoiceTest(BaseCustomerInvoiceCase): method test_unique_constraint_prevents_duplicate_customer_invoice (line 40) | def test_unique_constraint_prevents_duplicate_customer_invoice(self): FILE: corehq/apps/accounting/tests/test_renew_subscription.py class TestRenewSubscriptions (line 16) | class TestRenewSubscriptions(BaseAccountingTest): method setUp (line 18) | def setUp(self): method tearDown (line 48) | def tearDown(self): method test_simple_renewal (line 52) | def test_simple_renewal(self): method test_change_plan_on_renewal (line 59) | def test_change_plan_on_renewal(self): method test_annual_plan_renewal_length (line 69) | def test_annual_plan_renewal_length(self): method test_next_subscription_filter (line 83) | def test_next_subscription_filter(self): method test_next_subscription_filter_no_end_date (line 94) | def test_next_subscription_filter_no_end_date(self): FILE: corehq/apps/accounting/tests/test_revoke_grants.py class TestRevokePrivsForGrantees (line 9) | class TestRevokePrivsForGrantees(SimpleTestCase): method test_specified_priv_for_grantee_is_revoked (line 11) | def test_specified_priv_for_grantee_is_revoked(self): method test_dry_run_does_not_delete_grants (line 27) | def test_dry_run_does_not_delete_grants(self): method test_privilege_already_revoked (line 43) | def test_privilege_already_revoked(self): method test_grantee_does_not_exist (line 62) | def test_grantee_does_not_exist(self): method test_privilege_does_not_exist (line 74) | def test_privilege_does_not_exist(self): FILE: corehq/apps/accounting/tests/test_software_plan_version_filter.py class SoftwarePlanVersionTest (line 13) | class SoftwarePlanVersionTest(BaseAccountingTest): method setUp (line 15) | def setUp(self): method test_get_most_recent_version_is_most_recent (line 32) | def test_get_most_recent_version_is_most_recent(self): function _create_plan_version (line 45) | def _create_plan_version(software_plan): FILE: corehq/apps/accounting/tests/test_stripe_payment.py class MockFailingStripeObject (line 17) | class MockFailingStripeObject(object): method id (line 20) | def id(self): class TestCreditStripePaymentHandler (line 24) | class TestCreditStripePaymentHandler(TestCase): method setUpClass (line 27) | def setUpClass(cls): method tearDownClass (line 38) | def tearDownClass(cls): method test_working_process_request (line 43) | def test_working_process_request(self, mock_create): method test_failure_after_checkpoint (line 54) | def test_failure_after_checkpoint(self, mock_create): method test_when_stripe_errors_no_payment_record_exists (line 64) | def test_when_stripe_errors_no_payment_record_exists(self, mock_create): method test_when_create_record_fails_stripe_is_not_charged (line 73) | def test_when_create_record_fails_stripe_is_not_charged(self, mock_cre... method _call_process_request (line 81) | def _call_process_request(self): FILE: corehq/apps/accounting/tests/test_stripe_payment_method_with_api.py class TestStripePaymentMethod (line 11) | class TestStripePaymentMethod(BaseAccountingTest): method setUp (line 13) | def setUp(self): method test_setup_autopay_for_first_time (line 36) | def test_setup_autopay_for_first_time(self): method test_replace_card_for_autopay (line 46) | def test_replace_card_for_autopay(self): method test_same_card_used_by_multiple_billing_accounts (line 68) | def test_same_card_used_by_multiple_billing_accounts(self): method test_unset_autopay (line 84) | def test_unset_autopay(self): method test_get_stripe_customer_if_existed (line 95) | def test_get_stripe_customer_if_existed(self): method test_create_stripe_customer_if_not_existed (line 99) | def test_create_stripe_customer_if_not_existed(self): method test_all_cards_raise_authentication_error_when_stripe_key_is_wrong (line 106) | def test_all_cards_raise_authentication_error_when_stripe_key_is_wrong... method test_all_cards_return_the_correct_collection_of_cards_for_a_customer (line 111) | def test_all_cards_return_the_correct_collection_of_cards_for_a_custom... method test_all_cards_return_empty_array_for_customer_have_no_cards (line 122) | def test_all_cards_return_empty_array_for_customer_have_no_cards(self): method test_all_cards_return_empty_array_if_no_stripe_key (line 129) | def test_all_cards_return_empty_array_if_no_stripe_key(self): method test_all_cards_serialized_return_the_correct_property_of_a_card (line 134) | def test_all_cards_serialized_return_the_correct_property_of_a_card(se... method test_get_card_return_the_correct_card_object (line 145) | def test_get_card_return_the_correct_card_object(self): method test_get_autopay_card_when_no_autopay_card (line 150) | def test_get_autopay_card_when_no_autopay_card(self): method test_get_autopay_card_when_only_one_autopay (line 156) | def test_get_autopay_card_when_only_one_autopay(self): method test_get_autopay_card_when_one_of_many_card_is_autopay (line 161) | def test_get_autopay_card_when_one_of_many_card_is_autopay(self): method test_remove_card_successful (line 173) | def test_remove_card_successful(self): method test_remove_card_non_existent (line 184) | def test_remove_card_non_existent(self): method test_create_card_creates_card (line 188) | def test_create_card_creates_card(self): method test_create_charge_success (line 194) | def test_create_charge_success(self): method test_create_charge_with_idempotency_key (line 210) | def test_create_charge_with_idempotency_key(self): FILE: corehq/apps/accounting/tests/test_stripe_utils_with_api.py class StripeUtilsTests (line 17) | class StripeUtilsTests(TestCase): method setUp (line 19) | def setUp(self): method test_get_customer_cards (line 43) | def test_get_customer_cards(self): method test_charge_through_stripe_successful (line 51) | def test_charge_through_stripe_successful(self): FILE: corehq/apps/accounting/tests/test_subscription_changes.py class TestSubscriptionEmailLogic (line 51) | class TestSubscriptionEmailLogic(SimpleTestCase): method test_new_trial_with_no_previous (line 53) | def test_new_trial_with_no_previous(self): method test_non_trial_with_no_previous (line 56) | def test_non_trial_with_no_previous(self): method test_non_trial_with_previous (line 59) | def test_non_trial_with_previous(self): method _run_test (line 63) | def _run_test(self, old_sub, new_sub, expected_output): class TestUserRoleSubscriptionChanges (line 67) | class TestUserRoleSubscriptionChanges(BaseAccountingTest): method setUp (line 69) | def setUp(self): method test_cancellation (line 118) | def test_cancellation(self): method test_resubscription (line 132) | def test_resubscription(self): method _change_std_roles (line 148) | def _change_std_roles(self): method _assertInitialRoles (line 165) | def _assertInitialRoles(self): method _assertStdUsers (line 173) | def _assertStdUsers(self): method tearDown (line 188) | def tearDown(self): class TestSubscriptionChangeResourceConflict (line 194) | class TestSubscriptionChangeResourceConflict(BaseAccountingTest): method setUp (line 196) | def setUp(self): method tearDown (line 205) | def tearDown(self): method test_domain_changes (line 209) | def test_domain_changes(self): class TestSoftwarePlanChanges (line 229) | class TestSoftwarePlanChanges(BaseAccountingTest): method setUp (line 231) | def setUp(self): method tearDown (line 251) | def tearDown(self): method test_change_plan_blocks_on_max_domains (line 256) | def test_change_plan_blocks_on_max_domains(self): class DeactivateScheduleTest (line 267) | class DeactivateScheduleTest(TransactionTestCase): method setUp (line 269) | def setUp(self): method create_survey_content (line 302) | def create_survey_content(self): method create_scheduled_broadcast (line 309) | def create_scheduled_broadcast(self, domain, content): method create_immediate_broadcast (line 319) | def create_immediate_broadcast(self, domain, content): method create_conditional_alert (line 328) | def create_conditional_alert(self, domain, content): method tearDown (line 338) | def tearDown(self): method assertScheduleActiveFlag (line 360) | def assertScheduleActiveFlag(self, obj, active_flag): method assertSchedulesActive (line 372) | def assertSchedulesActive(self, objects): method assertSchedulesInactive (line 376) | def assertSchedulesInactive(self, objects): method test_deactivate_all_schedules (line 380) | def test_deactivate_all_schedules(self): method test_deactivate_only_survey_schedules (line 428) | def test_deactivate_only_survey_schedules(self): class TestUsercaseSubscriptionChanges (line 459) | class TestUsercaseSubscriptionChanges(TestCase): method test_upgrade (line 463) | def test_upgrade(self, mock_create_usercases): FILE: corehq/apps/accounting/tests/test_subscription_permissions_changes.py class TestSubscriptionPermissionsChanges (line 29) | class TestSubscriptionPermissionsChanges(BaseAccountingTest): method setUp (line 31) | def setUp(self): method _init_pro_with_rb_plan_and_version (line 44) | def _init_pro_with_rb_plan_and_version(self): method _subscribe_to_advanced (line 72) | def _subscribe_to_advanced(self): method _subscribe_to_pro_with_rb (line 78) | def _subscribe_to_pro_with_rb(self): method test_app_icon_permissions (line 91) | def test_app_icon_permissions(self): method test_report_builder_datasource_deactivation (line 137) | def test_report_builder_datasource_deactivation(self): FILE: corehq/apps/accounting/tests/test_task_utils.py class TestGetContextToSendAutopayFailedEmail (line 15) | class TestGetContextToSendAutopayFailedEmail(SimpleTestCase): method test_context_contains_expected_keys (line 17) | def test_context_contains_expected_keys(self): method test_recipient_is_autopay_email_if_no_web_user_exists (line 39) | def test_recipient_is_autopay_email_if_no_web_user_exists(self): method test_recipient_is_web_users_email_if_web_user_exists (line 47) | def test_recipient_is_web_users_email_if_web_user_exists(self): method test_billing_url_is_correct (line 55) | def test_billing_url_is_correct(self): method test_domain_url_is_correct (line 66) | def test_domain_url_is_correct(self): class MockAutopayFailedInfo (line 76) | class MockAutopayFailedInfo: method __init__ (line 77) | def __init__(self, invoice_id, web_user_email=None, auto_payer=None, s... method __enter__ (line 87) | def __enter__(self): method __exit__ (line 135) | def __exit__(self, exc_type, exc_val, exc_tb): class TestGetContextToSendPurchaseReceipt (line 142) | class TestGetContextToSendPurchaseReceipt(SimpleTestCase): method test_context_has_expected_keys (line 144) | def test_context_has_expected_keys(self): method test_template_context_has_expected_keys (line 158) | def test_template_context_has_expected_keys(self): method test_template_context_has_additional_keys_if_supplied (line 172) | def test_template_context_has_additional_keys_if_supplied(self): method test_recipient_is_web_user_if_web_user_exists (line 188) | def test_recipient_is_web_user_if_web_user_exists(self): method test_recipient_is_username_if_web_user_does_not_exist (line 203) | def test_recipient_is_username_if_web_user_does_not_exist(self): method test_exception_is_logged_if_web_user_does_not_exist (line 218) | def test_exception_is_logged_if_web_user_does_not_exist(self): method test_returns_account_name_if_no_domain_name (line 233) | def test_returns_account_name_if_no_domain_name(self): class MockPurchaseReceiptInfo (line 249) | class MockPurchaseReceiptInfo: method __init__ (line 251) | def __init__(self, username, web_user_email=None, account_name=None, d... method __enter__ (line 259) | def __enter__(self): method __exit__ (line 292) | def __exit__(self, exc_type, exc_val, exc_tb): FILE: corehq/apps/accounting/tests/test_tasks.py class TestCalculateFormSubmittingMobileWorkers (line 26) | class TestCalculateFormSubmittingMobileWorkers(BaseInvoiceTestCase): method setUp (line 28) | def setUp(self): method _submit_form (line 41) | def _submit_form(self, user, received_on): method tearDown (line 51) | def tearDown(self): method test_calculate_form_submitting_mobile_workers_in_all_domains (line 56) | def test_calculate_form_submitting_mobile_workers_in_all_domains(self): class TestSubscriptionReminderEmails (line 67) | class TestSubscriptionReminderEmails(BaseInvoiceTestCase): method test_sends_renewal_reminder_email (line 69) | def test_sends_renewal_reminder_email(self): method test_no_renewal_reminder_if_service_type_not_product (line 78) | def test_no_renewal_reminder_if_service_type_not_product(self): method test_no_renewal_reminder_if_is_trial (line 87) | def test_no_renewal_reminder_if_is_trial(self): method test_no_renewal_reminder_if_customer_billing_account (line 96) | def test_no_renewal_reminder_if_customer_billing_account(self): method test_no_renewal_reminder_if_is_renewed (line 106) | def test_no_renewal_reminder_if_is_renewed(self): method test_sends_subscription_ending_email (line 115) | def test_sends_subscription_ending_email(self): method test_no_subscription_ending_email_if_auto_renew_enabled (line 124) | def test_no_subscription_ending_email_if_auto_renew_enabled(self): method test_no_subscription_ending_email_if_service_type_not_product (line 134) | def test_no_subscription_ending_email_if_service_type_not_product(self): method test_no_subscription_ending_email_if_is_trial (line 143) | def test_no_subscription_ending_email_if_is_trial(self): method test_no_subscription_ending_email_if_customer_billing_account (line 152) | def test_no_subscription_ending_email_if_customer_billing_account(self): method test_no_subscription_ending_email_if_is_renewed (line 162) | def test_no_subscription_ending_email_if_is_renewed(self): class TestAutoRenewableSubscriptions (line 173) | class TestAutoRenewableSubscriptions(BaseInvoiceTestCase): method test_includes_subscription_exactly_30_days_left (line 175) | def test_includes_subscription_exactly_30_days_left(self): method test_includes_subscription_less_than_30_days_left (line 183) | def test_includes_subscription_less_than_30_days_left(self): method test_excludes_subscription_more_than_30_days_left (line 188) | def test_excludes_subscription_more_than_30_days_left(self): method test_excludes_subscription_end_date_in_past (line 196) | def test_excludes_subscription_end_date_in_past(self): method test_excludes_auto_renew_false (line 204) | def test_excludes_auto_renew_false(self): method test_excludes_service_type_not_product (line 209) | def test_excludes_service_type_not_product(self): method test_excludes_customer_billing_account (line 214) | def test_excludes_customer_billing_account(self): method test_filters_by_domain (line 219) | def test_filters_by_domain(self): method test_auto_renew_ignores_already_renewed (line 238) | def test_auto_renew_ignores_already_renewed(self): method _set_auto_renew_properties (line 246) | def _set_auto_renew_properties( class TestAutoRenewSubscription (line 264) | class TestAutoRenewSubscription(BaseInvoiceTestCase): method setUp (line 266) | def setUp(self): method test_auto_renew_subscription (line 276) | def test_auto_renew_subscription(self): method test_creates_prepayment_invoice_if_is_annual_plan (line 294) | def test_creates_prepayment_invoice_if_is_annual_plan(self): FILE: corehq/apps/accounting/tests/test_unpaid_invoice.py function _generate_invoice_and_subscription (line 27) | def _generate_invoice_and_subscription(days_ago, is_customer_billing_acc... class TestDowngrades (line 81) | class TestDowngrades(BaseAccountingTest): method setUpClass (line 84) | def setUpClass(cls): method setUp (line 89) | def setUp(self): method tearDown (line 93) | def tearDown(self): method tearDownClass (line 101) | def tearDownClass(cls): method _simulate_downgrade (line 105) | def _simulate_downgrade(self, days_overdue, is_customer_billing_accoun... method test_no_notification (line 114) | def test_no_notification(self): method test_overdue_notification (line 122) | def test_overdue_notification(self): method test_belated_overdue_notification (line 140) | def test_belated_overdue_notification(self): method test_downgrade_warning (line 153) | def test_downgrade_warning(self): method test_downgrade (line 171) | def test_downgrade(self): method test_overdue_customer_notification (line 194) | def test_overdue_customer_notification(self): method test_overdue_customer_downgrade_warning (line 205) | def test_overdue_customer_downgrade_warning(self): class TestInvoiceReminder (line 217) | class TestInvoiceReminder(BaseAccountingTest): method setUpClass (line 220) | def setUpClass(cls): method setUp (line 225) | def setUp(self): method tearDown (line 229) | def tearDown(self): method tearDownClass (line 237) | def tearDownClass(cls): method _send_invoice_reminders (line 241) | def _send_invoice_reminders(self, days_before_due, is_customer_billing... method _setup_invoices (line 247) | def _setup_invoices(self, days_before_due, is_customer_billing_account... method _run_action (line 256) | def _run_action(): method test_invoice_reminder (line 259) | def test_invoice_reminder(self): method test_belated_invoice_reminder (line 277) | def test_belated_invoice_reminder(self): method test_invoice_reminder_not_sent_early (line 287) | def test_invoice_reminder_not_sent_early(self): method test_no_reminder_if_not_should_send_email (line 297) | def test_no_reminder_if_not_should_send_email(self): method test_no_reminder_if_skipped_email (line 308) | def test_no_reminder_if_skipped_email(self): method test_customer_invoice_reminder (line 322) | def test_customer_invoice_reminder(self): method test_belated_customer_invoice_reminder (line 341) | def test_belated_customer_invoice_reminder(self): method test_customer_invoice_reminder_not_sent_early (line 352) | def test_customer_invoice_reminder_not_sent_early(self): FILE: corehq/apps/accounting/tests/test_utils.py class TestIsDateRangeOverlapping (line 8) | class TestIsDateRangeOverlapping(SimpleTestCase): method test_first_range_is_contained_in_second_range (line 9) | def test_first_range_is_contained_in_second_range(self): method test_second_range_is_contained_in_first_range (line 13) | def test_second_range_is_contained_in_first_range(self): method test_partial_overlap_start (line 17) | def test_partial_overlap_start(self): method test_partial_overlap_end (line 21) | def test_partial_overlap_end(self): method test_exact_overlap (line 25) | def test_exact_overlap(self): method test_no_overlap_before (line 29) | def test_no_overlap_before(self): method test_no_overlap_after (line 33) | def test_no_overlap_after(self): method test_adjacent_ranges_do_not_overlap (line 37) | def test_adjacent_ranges_do_not_overlap(self): method test_same_start_date_is_overlap (line 46) | def test_same_start_date_is_overlap(self): method test_same_end_date_is_overlap (line 50) | def test_same_end_date_is_overlap(self): method test_first_range_infinite_end (line 54) | def test_first_range_infinite_end(self): method test_second_range_infinite_end (line 58) | def test_second_range_infinite_end(self): method test_both_ranges_infinite_end (line 62) | def test_both_ranges_infinite_end(self): method test_first_range_infinite_end_but_start_after_second_range_end (line 66) | def test_first_range_infinite_end_but_start_after_second_range_end(self): method test_second_range_infinite_end_but_start_after_first_range_end (line 70) | def test_second_range_infinite_end_but_start_after_first_range_end(self): FILE: corehq/apps/accounting/tests/test_wire_invoice.py class TestWireInvoice (line 11) | class TestWireInvoice(BaseInvoiceTestCase): method setUp (line 13) | def setUp(self): method test_factory (line 23) | def test_factory(self): class TestCustomerAccountWireInvoice (line 38) | class TestCustomerAccountWireInvoice(BaseInvoiceTestCase): method setUp (line 40) | def setUp(self): method test_factory (line 51) | def test_factory(self): FILE: corehq/apps/accounting/tests/utils.py class DomainSubscriptionMixin (line 19) | class DomainSubscriptionMixin(object): method setup_subscription (line 28) | def setup_subscription(cls, domain_name, software_plan, use_annual_pla... method teardown_subscriptions (line 51) | def teardown_subscriptions(cls): method teardown_subscription (line 56) | def teardown_subscription(cls, domain): function mocked_stripe_api (line 67) | def mocked_stripe_api(): function setup_stripe_common_mocks (line 74) | def setup_stripe_common_mocks(mock_list_sources, mock_modify_source): FILE: corehq/apps/accounting/usage.py class FeatureUsageCalculator (line 11) | class FeatureUsageCalculator(object): method __init__ (line 13) | def __init__(self, feature_rate, domain_name, method usage_fns (line 26) | def usage_fns(self): method get_usage (line 34) | def get_usage(self): method _get_user_usage (line 41) | def _get_user_usage(self): method _get_sms_usage (line 44) | def _get_sms_usage(self): method _get_web_user_usage (line 52) | def _get_web_user_usage(self): method _get_form_submitting_mobile_worker_user_usage (line 55) | def _get_form_submitting_mobile_worker_user_usage(self): function get_web_user_usage (line 59) | def get_web_user_usage(domains): FILE: corehq/apps/accounting/user_text.py function get_feature_name (line 59) | def get_feature_name(feature_type): function get_feature_recurring_interval (line 65) | def get_feature_recurring_interval(feature_type): FILE: corehq/apps/accounting/utils/__init__.py function log_accounting_error (line 29) | def log_accounting_error(message, show_stack_trace=False): function log_accounting_info (line 33) | def log_accounting_info(message): function get_first_day_x_months_later (line 37) | def get_first_day_x_months_later(reference_date, months_from_date): function ensure_domain_instance (line 42) | def ensure_domain_instance(domain): function fmt_feature_rate_dict (line 48) | def fmt_feature_rate_dict(feature, feature_rate=None): function fmt_product_rate_dict (line 65) | def fmt_product_rate_dict(product_name, product_rate=None): function get_privileges (line 86) | def get_privileges(plan_version): function get_change_status (line 94) | def get_change_status(from_plan_version, to_plan_version): function domain_has_privilege_cache_args (line 118) | def domain_has_privilege_cache_args(domain, privilege_slug, **assignment): function domain_has_privilege (line 126) | def domain_has_privilege(domain, privilege_slug, **assignment): function get_domains_with_privilege (line 144) | def get_domains_with_privilege(privilege_slug): function domain_is_on_trial (line 152) | def domain_is_on_trial(domain_name): function is_active_subscription (line 158) | def is_active_subscription(date_start, date_end, today=None): function has_subscription_already_ended (line 164) | def has_subscription_already_ended(subscription): function get_money_str (line 169) | def get_money_str(amount): function get_address_from_invoice (line 180) | def get_address_from_invoice(invoice): function get_dimagi_from_email (line 207) | def get_dimagi_from_email(): function quantize_accounting_decimal (line 213) | def quantize_accounting_decimal(decimal_value): function fmt_dollar_amount (line 217) | def fmt_dollar_amount(decimal_value): function is_accounting_admin (line 221) | def is_accounting_admin(user): function make_anchor_tag (line 231) | def make_anchor_tag(href, name, attrs=None): function get_default_domain_url (line 240) | def get_default_domain_url(domain): function get_all_roles_by_slug (line 248) | def get_all_roles_by_slug(): function get_granted_privs_for_grantee (line 252) | def get_granted_privs_for_grantee(): function ensure_grants (line 264) | def ensure_grants(privs_to_ensure_for_grantee, dry_run=False, verbose=Fa... function revoke_privs_for_grantees (line 306) | def revoke_privs_for_grantees(privs_for_grantees, dry_run=False, verbose... function get_grants (line 341) | def get_grants(from_role, to_role): function delete_grants (line 348) | def delete_grants(grants): function log_removed_grants (line 354) | def log_removed_grants(priv_slugs, dry_run=False): function get_account_name_from_default_name (line 363) | def get_account_name_from_default_name(default_name): function cancel_future_subscriptions (line 377) | def cancel_future_subscriptions(domain_name, from_date, web_user): function pause_current_subscription (line 397) | def pause_current_subscription(domain_name, web_user, current_subscripti... function is_downgrade (line 441) | def is_downgrade(current_edition, next_edition): function clear_plan_version_cache (line 447) | def clear_plan_version_cache(): function get_paused_plan_context (line 453) | def get_paused_plan_context(request, domain): function get_pending_plan_context (line 475) | def get_pending_plan_context(request, domain): function count_form_submitting_mobile_workers (line 493) | def count_form_submitting_mobile_workers(domain, start, end): function self_signup_workflow_in_progress (line 510) | def self_signup_workflow_in_progress(domain): function is_date_range_overlapping (line 515) | def is_date_range_overlapping(start_1, end_1, start_2, end_2): FILE: corehq/apps/accounting/utils/account.py function get_account_or_404 (line 8) | def get_account_or_404(domain): function request_has_permissions_for_enterprise_admin (line 15) | def request_has_permissions_for_enterprise_admin(request, account): FILE: corehq/apps/accounting/utils/cards.py function get_autopay_card_and_owner_for_billing_account (line 6) | def get_autopay_card_and_owner_for_billing_account(account): function set_card_as_autopay_for_billing_account (line 18) | def set_card_as_autopay_for_billing_account(payment_method, card_token, ... function get_payment_method_for_user (line 23) | def get_payment_method_for_user(username): function get_saved_cards_for_user (line 31) | def get_saved_cards_for_user(username, account): function serialize_account_card (line 39) | def serialize_account_card(card, owner): FILE: corehq/apps/accounting/utils/invoicing.py function _get_all_unpaid_saas_invoices (line 23) | def _get_all_unpaid_saas_invoices(): function get_domains_with_subscription_invoices_overdue (line 32) | def get_domains_with_subscription_invoices_overdue(today): function get_domains_with_subscription_invoices_due_soon (line 37) | def get_domains_with_subscription_invoices_due_soon(today): function _get_unpaid_saas_invoices_in_downgrade_daterange (line 42) | def _get_unpaid_saas_invoices_in_downgrade_daterange(today): function _get_unpaid_saas_invoices_in_reminder_daterange (line 48) | def _get_unpaid_saas_invoices_in_reminder_daterange(today): function _get_domains_over_threshold (line 57) | def _get_domains_over_threshold(invoices, today, get_oldest_invoice_fn): function get_oldest_overdue_invoice_over_threshold (line 66) | def get_oldest_overdue_invoice_over_threshold(today, domain): function get_oldest_due_soon_invoice_over_threshold (line 71) | def get_oldest_due_soon_invoice_over_threshold(today, domain): function _get_oldest_invoice_over_threshold (line 76) | def _get_oldest_invoice_over_threshold(domain, invoices): function get_accounts_with_customer_invoices_due_soon (line 90) | def get_accounts_with_customer_invoices_due_soon(today): function get_accounts_with_customer_invoices_overdue (line 96) | def get_accounts_with_customer_invoices_overdue(today): function _get_accounts_over_threshold_in_daterange (line 102) | def _get_accounts_over_threshold_in_daterange(date_start, date_end): function get_flagged_pay_annually_prepay_invoice (line 130) | def get_flagged_pay_annually_prepay_invoice(invoice): function get_prorated_software_plan_cost (line 152) | def get_prorated_software_plan_cost(date_start, date_end, monthly_fee): function get_next_due_invoice (line 172) | def get_next_due_invoice(subscription, today): function get_next_due_customer_invoice (line 181) | def get_next_due_customer_invoice(account, today, subscription=None): FILE: corehq/apps/accounting/utils/software_plans.py function upgrade_subscriptions_to_latest_plan_version (line 4) | def upgrade_subscriptions_to_latest_plan_version(old_plan_version, web_u... FILE: corehq/apps/accounting/utils/stripe.py function get_customer_cards (line 10) | def get_customer_cards(username): function charge_through_stripe (line 33) | def charge_through_stripe(card, customer, amount_in_dollars, currency, d... FILE: corehq/apps/accounting/utils/subscription.py function assign_explicit_unpaid_subscription (line 12) | def assign_explicit_unpaid_subscription(domain_name, start_date, method,... function ensure_free_or_paused_subscription (line 47) | def ensure_free_or_paused_subscription(domain_name, from_date, method, w... function is_domain_enterprise (line 67) | def is_domain_enterprise(domain): FILE: corehq/apps/accounting/utils/unpaid_invoice.py class UnpaidInvoiceAction (line 40) | class UnpaidInvoiceAction: method run_action (line 42) | def run_action(cls, only_downgrade_domain=None): method _apply_process (line 75) | def _apply_process(cls, oldest_unpaid_invoice, total, today, subscript... method _get_communication_model_context (line 82) | def _get_communication_model_context(domain, oldest_unpaid_invoice): class InvoiceReminder (line 109) | class InvoiceReminder(UnpaidInvoiceAction): method is_subscription_eligible_for_process (line 115) | def is_subscription_eligible_for_process(subscription): method _check_and_perform_action (line 119) | def _check_and_perform_action(cls, communication_model, context, method _should_send_invoice_reminder (line 126) | def _should_send_invoice_reminder(communication_model, invoice): method _send_reminder_email (line 142) | def _send_reminder_email(invoice, communication_model, context): method _update_email_context (line 174) | def _update_email_context(context, invoice, total, today, subscription): class Downgrade (line 201) | class Downgrade(UnpaidInvoiceAction): method is_subscription_eligible_for_process (line 207) | def is_subscription_eligible_for_process(subscription): method _check_and_perform_action (line 216) | def _check_and_perform_action(cls, communication_model, context, method _can_trigger_downgrade (line 244) | def _can_trigger_downgrade(today, days_ago, communication_model, invoi... method _can_send_downgrade_warning (line 263) | def _can_send_downgrade_warning(days_ago, communication_model, invoice): method _can_send_overdue_notification (line 272) | def _can_send_overdue_notification(days_ago, communication_model, invo... method _downgrade_domain (line 281) | def _downgrade_domain(subscription): method _send_downgrade_notice (line 292) | def _send_downgrade_notice(invoice, context): method _send_downgrade_warning (line 304) | def _send_downgrade_warning(invoice, communication_model, context): method _send_overdue_notice (line 338) | def _send_overdue_notice(invoice, communication_model, context): function can_domain_unpause (line 355) | def can_domain_unpause(domain): FILE: corehq/apps/accounting/views.py function accounting_default (line 133) | def accounting_default(request): class AccountingSectionView (line 137) | class AccountingSectionView(BaseSectionPageView): method section_url (line 141) | def section_url(self): method dispatch (line 146) | def dispatch(self, request, *args, **kwargs): class BillingAccountsSectionView (line 150) | class BillingAccountsSectionView(AccountingSectionView): method parent_pages (line 153) | def parent_pages(self): class NewBillingAccountView (line 160) | class NewBillingAccountView(BillingAccountsSectionView): method account_form (line 167) | def account_form(self): method page_context (line 173) | def page_context(self): method page_url (line 179) | def page_url(self): method post (line 182) | def post(self, request, *args, **kwargs): class ManageBillingAccountView (line 190) | class ManageBillingAccountView(BillingAccountsSectionView, AsyncHandlerM... method account (line 200) | def account(self): method basic_account_form (line 208) | def basic_account_form(self): method contact_form (line 216) | def contact_form(self): method credit_form (line 224) | def credit_form(self): method remove_autopay_form (line 232) | def remove_autopay_form(self): method page_context (line 238) | def page_context(self): method page_url (line 263) | def page_url(self): method post (line 266) | def post(self, request, *args, **kwargs): class NewSubscriptionView (line 297) | class NewSubscriptionView(AccountingSectionView, AsyncHandlerMixin): method account_id (line 307) | def account_id(self): method subscription_form (line 312) | def subscription_form(self): method page_context (line 321) | def page_context(self): method page_url (line 327) | def page_url(self): method parent_pages (line 331) | def parent_pages(self): method post (line 337) | def post(self, request, *args, **kwargs): class NewSubscriptionViewNoDefaultDomain (line 353) | class NewSubscriptionViewNoDefaultDomain(NewSubscriptionView): method account_id (line 358) | def account_id(self): method page_url (line 362) | def page_url(self): class EditSubscriptionView (line 366) | class EditSubscriptionView(AccountingSectionView, AsyncHandlerMixin): method subscription_id (line 376) | def subscription_id(self): method subscription (line 381) | def subscription(self): method subscription_form (line 389) | def subscription_form(self): method change_subscription_form (line 399) | def change_subscription_form(self): method credit_form (line 411) | def credit_form(self): method cancel_form (line 419) | def cancel_form(self): method suppress_form (line 426) | def suppress_form(self): method invoice_context (line 432) | def invoice_context(self): method page_context (line 453) | def page_context(self): method page_url (line 476) | def page_url(self): method parent_pages (line 480) | def parent_pages(self): method post (line 486) | def post(self, request, *args, **kwargs): method cancel_subscription (line 516) | def cancel_subscription(self): class NewSoftwarePlanView (line 525) | class NewSoftwarePlanView(AccountingSectionView): method plan_info_form (line 532) | def plan_info_form(self): method page_context (line 538) | def page_context(self): method page_url (line 544) | def page_url(self): method parent_pages (line 548) | def parent_pages(self): method post (line 554) | def post(self, request, *args, **kwargs): class EditSoftwarePlanView (line 561) | class EditSoftwarePlanView(AccountingSectionView, AsyncHandlerMixin): method plan (line 573) | def plan(self): method plan_info_form (line 581) | def plan_info_form(self): method software_plan_version_form (line 588) | def software_plan_version_form(self): method page_context (line 608) | def page_context(self): method page_url (line 618) | def page_url(self): method parent_pages (line 622) | def parent_pages(self): method post (line 628) | def post(self, request, *args, **kwargs): class SoftwarePlanVersionView (line 643) | class SoftwarePlanVersionView(AccountingSectionView): method post (line 648) | def post(self, request, *args, **kwargs): method plan_version (line 660) | def plan_version(self): method page_context (line 667) | def page_context(self): method page_url (line 692) | def page_url(self): method upgrade_subscriptions_form (line 697) | def upgrade_subscriptions_form(self): class TriggerInvoiceView (line 709) | class TriggerInvoiceView(AccountingSectionView, AsyncHandlerMixin): method is_testing_enabled (line 719) | def is_testing_enabled(self): method trigger_form (line 724) | def trigger_form(self): method page_url (line 733) | def page_url(self): method page_context (line 737) | def page_context(self): method post (line 742) | def post(self, request, *args, **kwargs): class TriggerCustomerInvoiceView (line 757) | class TriggerCustomerInvoiceView(AccountingSectionView, AsyncHandlerMixin): method trigger_customer_invoice_form (line 767) | def trigger_customer_invoice_form(self): method page_url (line 773) | def page_url(self): method page_context (line 777) | def page_context(self): method post (line 782) | def post(self, request, *args, **kwargs): class TriggerBookkeeperEmailView (line 798) | class TriggerBookkeeperEmailView(AccountingSectionView): method trigger_email_form (line 805) | def trigger_email_form(self): method page_url (line 811) | def page_url(self): method page_context (line 815) | def page_context(self): method post (line 820) | def post(self, request, *args, **kwargs): class TestRenewalEmailView (line 828) | class TestRenewalEmailView(AccountingSectionView): method reminder_email_form (line 835) | def reminder_email_form(self): method page_url (line 841) | def page_url(self): method page_context (line 845) | def page_context(self): method post (line 850) | def post(self, request, *args, **kwargs): class InvoiceSummaryViewBase (line 858) | class InvoiceSummaryViewBase(AccountingSectionView): method invoice (line 863) | def invoice(self): method page_title (line 870) | def page_title(self): method page_url (line 874) | def page_url(self): method page_context (line 878) | def page_context(self): method billing_records (line 898) | def billing_records(self): method can_send_email (line 902) | def can_send_email(self): method resend_email_form (line 907) | def resend_email_form(self): method invoice_info_form (line 914) | def invoice_info_form(self): method suppress_invoice_form (line 919) | def suppress_invoice_form(self): method hide_invoice_form (line 926) | def hide_invoice_form(self): method post (line 931) | def post(self, request, *args, **kwargs): class WireInvoiceSummaryView (line 959) | class WireInvoiceSummaryView(InvoiceSummaryViewBase): method parent_pages (line 964) | def parent_pages(self): method billing_records (line 972) | def billing_records(self): method can_send_email (line 976) | def can_send_email(self): class InvoiceSummaryView (line 980) | class InvoiceSummaryView(InvoiceSummaryViewBase): method parent_pages (line 985) | def parent_pages(self): method adjust_balance_form (line 993) | def adjust_balance_form(self): method billing_records (line 1000) | def billing_records(self): method adjustment_list (line 1005) | def adjustment_list(self): method can_send_email (line 1010) | def can_send_email(self): method page_context (line 1014) | def page_context(self): class CustomerInvoiceSummaryView (line 1023) | class CustomerInvoiceSummaryView(InvoiceSummaryViewBase): method parent_pages (line 1028) | def parent_pages(self): method adjust_balance_form (line 1036) | def adjust_balance_form(self): method billing_records (line 1043) | def billing_records(self): method adjustment_list (line 1048) | def adjustment_list(self): method can_send_email (line 1053) | def can_send_email(self): method page_context (line 1057) | def page_context(self): class CustomerInvoicePdfView (line 1066) | class CustomerInvoicePdfView(View): method dispatch (line 1069) | def dispatch(self, request, *args, **kwargs): method get (line 1072) | def get(self, request, *args, **kwargs): class ManageAccountingAdminsView (line 1105) | class ManageAccountingAdminsView(AccountingSectionView, CRUDPaginatedVie... method page_url (line 1118) | def page_url(self): method page_context (line 1122) | def page_context(self): method accounting_admin_queryset (line 1126) | def accounting_admin_queryset(self): method paginated_admins (line 1131) | def paginated_admins(self): method total (line 1136) | def total(self): method column_names (line 1140) | def column_names(self): method paginated_list (line 1147) | def paginated_list(self): method _fmt_admin_data (line 1155) | def _fmt_admin_data(admin): method get_create_form (line 1161) | def get_create_form(self, is_blank=False): method get_create_item_data (line 1166) | def get_create_item_data(self, create_form): method delete_item (line 1178) | def delete_item(self, item_id): method post (line 1191) | def post(self, *args, **kwargs): class AccountingSingleOptionResponseView (line 1195) | class AccountingSingleOptionResponseView(View, AsyncHandlerMixin): method dispatch (line 1212) | def dispatch(self, request, *args, **kwargs): method post (line 1215) | def post(self, request, *args, **kwargs): class BaseTriggerAccountingTestView (line 1222) | class BaseTriggerAccountingTestView(AccountingSectionView, AsyncHandlerM... method trigger_form (line 1230) | def trigger_form(self): method page_url (line 1234) | def page_url(self): method page_context (line 1238) | def page_context(self): class TriggerDowngradeView (line 1244) | class TriggerDowngradeView(BaseTriggerAccountingTestView): method trigger_form (line 1250) | def trigger_form(self): method post (line 1255) | def post(self, request, *args, **kwargs): class TriggerAutopaymentsView (line 1280) | class TriggerAutopaymentsView(BaseTriggerAccountingTestView): method trigger_form (line 1286) | def trigger_form(self): method post (line 1291) | def post(self, request, *args, **kwargs): class TriggerAutoRenewalView (line 1312) | class TriggerAutoRenewalView(BaseTriggerAccountingTestView): method trigger_form (line 1318) | def trigger_form(self): method post (line 1323) | def post(self, request, *args, **kwargs): class TriggerRemovedSsoUserAutoDeactivationView (line 1338) | class TriggerRemovedSsoUserAutoDeactivationView(BaseTriggerAccountingTes... method trigger_form (line 1344) | def trigger_form(self): method post (line 1349) | def post(self, request, *args, **kwargs): FILE: corehq/apps/analytics/ab_tests.py class SessionAbTestConfig (line 12) | class SessionAbTestConfig(object): method __init__ (line 14) | def __init__(self, name, slug, options, is_debug=False, force_refresh=... class SessionAbTest (line 32) | class SessionAbTest(object): method __init__ (line 39) | def __init__(self, config, request): method _cookie_id (line 54) | def _cookie_id(self): method _cache_id (line 58) | def _cache_id(self): method version (line 62) | def version(self, assign_if_blank=True): method cache_version (line 77) | def cache_version(self, version): method _clear_cache (line 83) | def _clear_cache(self): method _debug_message (line 87) | def _debug_message(self, message): method update_response (line 91) | def update_response(self, response): method _clear_response (line 99) | def _clear_response(self, response): method context (line 104) | def context(self): FILE: corehq/apps/analytics/management/commands/audit_user_in_hubspot.py class Command (line 11) | class Command(BaseCommand): method add_arguments (line 14) | def add_arguments(self, parser): method handle (line 17) | def handle(self, email, **options): method show_status_of_possibly_unblocked_user (line 37) | def show_status_of_possibly_unblocked_user(self, email, blocked_domains): method show_status_of_blocked_user (line 60) | def show_status_of_blocked_user(self, email, blocked_memberships): method display_first_conversion_status (line 68) | def display_first_conversion_status(self, email): FILE: corehq/apps/analytics/management/commands/blocked_hubspot_users_summary.py class Command (line 13) | class Command(BaseCommand): method add_arguments (line 17) | def add_arguments(self, parser): method handle (line 33) | def handle(self, **options): method print_domain_summary (line 62) | def print_domain_summary(self, domain): FILE: corehq/apps/analytics/management/commands/list_blocked_from_hubspot.py class Command (line 9) | class Command(BaseCommand): method handle (line 12) | def handle(self, **options): FILE: corehq/apps/analytics/management/commands/manually_cleanup_blocked_hubspot_contacts.py class Command (line 9) | class Command(BaseCommand): method handle (line 12) | def handle(self, **options): FILE: corehq/apps/analytics/management/commands/update_hubspot_properties.py class Command (line 17) | class Command(BaseCommand): method add_arguments (line 21) | def add_arguments(self, parser): method handle (line 28) | def handle(self, property_names, **options): method get_active_users (line 40) | def get_active_users(cls): method get_user_data (line 46) | def get_user_data(cls, couch_user, property_names): FILE: corehq/apps/analytics/migrations/0001_initial.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/analytics/migrations/0002_data_point_unique_constraint.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/analytics/models.py class PartnerAnalyticsContact (line 5) | class PartnerAnalyticsContact(models.Model): class PartnerAnalyticsDataPoint (line 13) | class PartnerAnalyticsDataPoint(models.Model): class Meta (line 20) | class Meta: class PartnerAnalyticsReport (line 29) | class PartnerAnalyticsReport(models.Model): FILE: corehq/apps/analytics/signals.py function user_save_callback (line 28) | def user_save_callback(sender, **kwargs): function domain_save_callback (line 39) | def domain_save_callback(sender, domain, **kwargs): function get_domain_membership_properties (line 47) | def get_domain_membership_properties(couch_user): function track_user_login (line 58) | def track_user_login(sender, request, user, **kwargs): FILE: corehq/apps/analytics/static/analytix/js/gtx.js function setAllowedTagTypes (line 19) | function setAllowedTagTypes() { function addUserPropertiesToDataLayer (line 42) | function addUserPropertiesToDataLayer() { FILE: corehq/apps/analytics/tasks.py function _raise_for_urllib3_response (line 74) | def _raise_for_urllib3_response(response): function _track_on_hubspot (line 82) | def _track_on_hubspot(webuser, properties): function _track_on_hubspot_by_email (line 101) | def _track_on_hubspot_by_email(email, properties): function set_analytics_opt_out (line 115) | def set_analytics_opt_out(webuser, analytics_enabled): function batch_track_on_hubspot (line 133) | def batch_track_on_hubspot(users_json): function _hubspot_post (line 154) | def _hubspot_post(url, data): function _send_post_data (line 172) | def _send_post_data(url, data, headers): function _get_user_hubspot_id (line 178) | def _get_user_hubspot_id(web_user, retry_num=0): function _send_form_to_hubspot (line 222) | def _send_form_to_hubspot(form_id, webuser, hubspot_cookie, meta, extra_... function _send_hubspot_form_request (line 254) | def _send_hubspot_form_request(hubspot_id, form_id, data): function update_hubspot_properties (line 270) | def update_hubspot_properties(webuser_id, properties): function track_web_user_registration_hubspot (line 277) | def track_web_user_registration_hubspot(request, web_user, properties): function track_user_sign_in_on_hubspot (line 309) | def track_user_sign_in_on_hubspot(webuser_id, hubspot_cookie, meta): function track_built_app_on_hubspot (line 315) | def track_built_app_on_hubspot(webuser_id): function track_confirmed_account_on_hubspot (line 324) | def track_confirmed_account_on_hubspot(webuser_id): function send_hubspot_form (line 340) | def send_hubspot_form(form_id, request, user=None, extra_fields=None): function send_hubspot_form_task (line 356) | def send_hubspot_form_task(form_id, web_user_id, hubspot_cookie, meta, function track_job_candidate_on_hubspot (line 364) | def track_job_candidate_on_hubspot(user_email): function track_workflow_noop (line 371) | def track_workflow_noop(email, event, properties=None): function _get_export_count (line 383) | def _get_export_count(domain): function _get_report_count (line 390) | def _get_report_count(domain): function track_periodic_data (line 397) | def track_periodic_data(): function _email_is_valid (line 571) | def _email_is_valid(email): function submit_data_to_hubspot (line 584) | def submit_data_to_hubspot(submit_json): function get_ab_test_properties (line 595) | def get_ab_test_properties(user): function update_subscription_properties_by_domain (line 605) | def update_subscription_properties_by_domain(domain): function update_subscription_properties_by_user (line 616) | def update_subscription_properties_by_user(web_user_id, properties): function get_subscription_properties_by_user (line 620) | def get_subscription_properties_by_user(couch_user): function cleanup_blocked_hubspot_contacts (line 687) | def cleanup_blocked_hubspot_contacts(): function generate_partner_reports (line 715) | def generate_partner_reports(): function record_google_analytics_event (line 739) | def record_google_analytics_event(event_name, couch_user, event_properti... function _record_google_analytics_event_task (line 774) | def _record_google_analytics_event_task(event_json): FILE: corehq/apps/analytics/tests/test_hubspot.py class TestSendToHubspot (line 40) | class TestSendToHubspot(TestCase): method test_registration (line 43) | def test_registration(self, _send_hubspot_form_request): method setUpClass (line 54) | def setUpClass(cls): method tearDownClass (line 61) | def tearDownClass(cls): method get_request (line 65) | def get_request(self): class TestBlockedHubspotData (line 74) | class TestBlockedHubspotData(TestCase): method setUpClass (line 77) | def setUpClass(cls): method test_get_blocked_domains (line 147) | def test_get_blocked_domains(self): method test_get_blocked_hubspot_accounts (line 153) | def test_get_blocked_hubspot_accounts(self): method test_is_domain_blocked_from_hubspot (line 158) | def test_is_domain_blocked_from_hubspot(self): method test_hubspot_enabled_for_user (line 163) | def test_hubspot_enabled_for_user(self): method test_hubspot_enabled_for_email (line 168) | def test_hubspot_enabled_for_email(self): method test_removed_user_is_still_blocked (line 173) | def test_removed_user_is_still_blocked(self): method test_emails_that_accepted_invitations_to_blocked_hubspot_domains (line 183) | def test_emails_that_accepted_invitations_to_blocked_hubspot_domains(s... method test_couch_user_is_blocked (line 189) | def test_couch_user_is_blocked(self): method tearDownClass (line 197) | def tearDownClass(cls): FILE: corehq/apps/analytics/tests/test_partner_analytics_utils.py function _get_fake_number_of_mobile_workers (line 39) | def _get_fake_number_of_mobile_workers(domain, _year, _month): function _get_fake_number_of_web_users (line 47) | def _get_fake_number_of_web_users(domain, _year, _month): function _get_fake_number_of_submissions (line 55) | def _get_fake_number_of_submissions(domain, _year, _month): class TestPartnerAnalyticsDataUtils (line 64) | class TestPartnerAnalyticsDataUtils(TestCase): method setUpClass (line 67) | def setUpClass(cls): method test_get_number_of_mobile_workers (line 167) | def test_get_number_of_mobile_workers(self): method test_get_number_of_web_users (line 175) | def test_get_number_of_web_users(self): method test_get_number_of_submissions (line 183) | def test_get_number_of_submissions(self): class TestPartnerAnalyticsReportUtils (line 192) | class TestPartnerAnalyticsReportUtils(TestCase): method setUpClass (line 195) | def setUpClass(cls): method tearDown (line 235) | def tearDown(self): method tearDownClass (line 240) | def tearDownClass(cls): method test_generate_monthly_mobile_worker_statistics (line 248) | def test_generate_monthly_mobile_worker_statistics(self): method test_generate_monthly_web_user_statistics (line 263) | def test_generate_monthly_web_user_statistics(self): method test_generate_monthly_submissions_statistics (line 278) | def test_generate_monthly_submissions_statistics(self): method test_track_partner_access (line 289) | def test_track_partner_access(self): method test_track_partner_access_no_match (line 302) | def test_track_partner_access_no_match(self): method test_send_partner_emails (line 322) | def test_send_partner_emails(self, mock_send_HTML_email): class TestGetCsvValue (line 371) | class TestGetCsvValue(SimpleTestCase): method test_returns_string_if_value_is_string (line 373) | def test_returns_string_if_value_is_string(self): method test_returns_integer_if_value_is_integer (line 377) | def test_returns_integer_if_value_is_integer(self): method test_returns_string_if_value_is_other (line 381) | def test_returns_string_if_value_is_other(self): FILE: corehq/apps/analytics/tests/test_subscription_properties.py class TestSubscriptionProperties (line 19) | class TestSubscriptionProperties(TestCase): method setUpClass (line 22) | def setUpClass(cls): method _setup_subscription (line 42) | def _setup_subscription(cls, domain_name, software_plan): method tearDownClass (line 56) | def tearDownClass(cls): method test_properties (line 61) | def test_properties(self): method test_probono_properties (line 68) | def test_probono_properties(self): method test_extended_trial (line 81) | def test_extended_trial(self): method _change_to_probono (line 89) | def _change_to_probono(self, domain_name, pro_bono_status): method _change_to_extended_trial (line 97) | def _change_to_extended_trial(self, domain_name): FILE: corehq/apps/analytics/tests/test_tasks.py class TestEmailValidation (line 5) | class TestEmailValidation(SimpleTestCase): method test_generic_email_is_valid (line 7) | def test_generic_email_is_valid(self): method test_special_domain_email_is_valid (line 10) | def test_special_domain_email_is_valid(self): method test_malformed_email_is_not_valid (line 13) | def test_malformed_email_is_not_valid(self): FILE: corehq/apps/analytics/tests/test_utils.py class TestIsHubspotJsAllowedForRequest (line 13) | class TestIsHubspotJsAllowedForRequest(TestCase): method setUpClass (line 16) | def setUpClass(cls): method setUp (line 52) | def setUp(self): method tearDownClass (line 57) | def tearDownClass(cls): method test_returns_false_if_account_disabled_hubspot (line 63) | def test_returns_false_if_account_disabled_hubspot(self): method test_returns_true_for_normal_subscription (line 72) | def test_returns_true_for_normal_subscription(self): method test_returns_true_if_no_subscription (line 81) | def test_returns_true_if_no_subscription(self): method test_returns_false_if_hubspot_api_id_is_empty (line 89) | def test_returns_false_if_hubspot_api_id_is_empty(self): method test_returns_false_if_post_login (line 97) | def test_returns_false_if_post_login(self): FILE: corehq/apps/analytics/utils/__init__.py function get_meta (line 11) | def get_meta(request): function analytics_enabled_for_email (line 18) | def analytics_enabled_for_email(email_address): function get_instance_string (line 24) | def get_instance_string(): function get_client_ip_from_request (line 30) | def get_client_ip_from_request(request): function get_client_ip_from_meta (line 35) | def get_client_ip_from_meta(meta): function log_response (line 44) | def log_response(target, data, response): FILE: corehq/apps/analytics/utils/hubspot.py function is_domain_blocked_from_hubspot (line 32) | def is_domain_blocked_from_hubspot(domain): function hubspot_enabled_for_user (line 41) | def hubspot_enabled_for_user(user): function has_user_accepted_invitation_to_blocked_hubspot_domain (line 65) | def has_user_accepted_invitation_to_blocked_hubspot_domain(web_user): function emails_that_accepted_invitations_to_blocked_hubspot_domains (line 74) | def emails_that_accepted_invitations_to_blocked_hubspot_domains(): function hubspot_enabled_for_email (line 82) | def hubspot_enabled_for_email(email_address): function get_blocked_hubspot_domains (line 88) | def get_blocked_hubspot_domains(): function get_blocked_hubspot_accounts (line 101) | def get_blocked_hubspot_accounts(): function _delete_hubspot_contact (line 111) | def _delete_hubspot_contact(vid, retry_num=0): function _get_contacts_from_hubspot (line 151) | def _get_contacts_from_hubspot(list_of_emails, retry_num=0, record_metri... function get_first_conversion_status_for_emails (line 197) | def get_first_conversion_status_for_emails(list_of_emails): function remove_blocked_domain_contacts_from_hubspot (line 220) | def remove_blocked_domain_contacts_from_hubspot(stdout=None): function remove_blocked_domain_invited_users_from_hubspot (line 261) | def remove_blocked_domain_invited_users_from_hubspot(stdout=None): function _get_contact_ids_to_delete (line 289) | def _get_contact_ids_to_delete(list_of_emails): function is_hubspot_js_allowed_for_request (line 313) | def is_hubspot_js_allowed_for_request(request): FILE: corehq/apps/analytics/utils/partner_analytics.py function get_number_of_mobile_workers (line 27) | def get_number_of_mobile_workers(domain, year, month): function get_number_of_submissions (line 38) | def get_number_of_submissions(domain, year, month): function get_number_of_web_users (line 51) | def get_number_of_web_users(domain, year, month): function generate_monthly_mobile_worker_statistics (line 71) | def generate_monthly_mobile_worker_statistics(year, month): function generate_monthly_web_user_statistics (line 84) | def generate_monthly_web_user_statistics(year, month): function generate_monthly_submissions_statistics (line 97) | def generate_monthly_submissions_statistics(year, month): function track_partner_access (line 110) | def track_partner_access(slug, domain): function get_csv_details_for_partner (line 127) | def get_csv_details_for_partner(contact, year, month): function send_partner_emails (line 149) | def send_partner_emails(year, month): function _get_csv_value (line 179) | def _get_csv_value(value): FILE: corehq/apps/analytics/views.py class GreenhouseCandidateView (line 24) | class GreenhouseCandidateView(View): method dispatch (line 28) | def dispatch(self, request, *args, **kwargs): method post (line 31) | def post(self, request, *args, **kwargs): function submit_hubspot_cta_form (line 58) | def submit_hubspot_cta_form(request): FILE: corehq/apps/api/accounting.py class AccToManyField (line 31) | class AccToManyField(ToManyField): method dehydrate (line 33) | def dehydrate(self, bundle, for_list=True): class AccountingResourceMeta (line 42) | class AccountingResourceMeta(AdminResourceMeta): class FeatureResource (line 52) | class FeatureResource(ModelResource): class Meta (line 54) | class Meta(AccountingResourceMeta): class FeatureRateResource (line 60) | class FeatureRateResource(ModelResource): class Meta (line 63) | class Meta(AccountingResourceMeta): class RoleResource (line 70) | class RoleResource(ModelResource): class Meta (line 72) | class Meta(AccountingResourceMeta): class AccountingCurrencyResource (line 78) | class AccountingCurrencyResource(ModelResource): method build_filters (line 80) | def build_filters(self, filters=None): class Meta (line 90) | class Meta(AccountingResourceMeta): class SoftwarePlanResource (line 96) | class SoftwarePlanResource(ModelResource): class Meta (line 98) | class Meta(AccountingResourceMeta): class DefaultProductPlanResource (line 104) | class DefaultProductPlanResource(ModelResource): class Meta (line 107) | class Meta(AccountingResourceMeta): class SoftwareProductRateResource (line 113) | class SoftwareProductRateResource(ModelResource): class Meta (line 116) | class Meta(AccountingResourceMeta): class SoftwarePlanVersionResource (line 122) | class SoftwarePlanVersionResource(ModelResource): class Meta (line 127) | class Meta(AccountingResourceMeta): method dehydrate (line 132) | def dehydrate(self, bundle): class SubscriberResource (line 137) | class SubscriberResource(ModelResource): class Meta (line 139) | class Meta(AccountingResourceMeta): class BillingContactInfoResource (line 145) | class BillingContactInfoResource(ModelResource): class Meta (line 149) | class Meta(AccountingResourceMeta): method dehydrate_emails (line 155) | def dehydrate_emails(self, bundle): class BillingAccountResource (line 159) | class BillingAccountResource(ModelResource): class Meta (line 166) | class Meta(AccountingResourceMeta): class SubscriptionResource (line 174) | class SubscriptionResource(ModelResource): class Meta (line 179) | class Meta(AccountingResourceMeta): class InvoiceResource (line 188) | class InvoiceResource(ModelResource): class Meta (line 193) | class Meta(AccountingResourceMeta): class CustomerInvoiceResource (line 200) | class CustomerInvoiceResource(ModelResource): class Meta (line 205) | class Meta(AccountingResourceMeta): method dehydrate (line 211) | def dehydrate(self, bundle): class LineItemResource (line 219) | class LineItemResource(ModelResource): class Meta (line 228) | class Meta(AccountingResourceMeta): class PaymentMethodResource (line 240) | class PaymentMethodResource(ModelResource): class Meta (line 244) | class Meta(AccountingResourceMeta): class PaymentRecordResource (line 250) | class PaymentRecordResource(ModelResource): class Meta (line 253) | class Meta(AccountingResourceMeta): class CreditLineResource (line 259) | class CreditLineResource(ModelResource): class Meta (line 263) | class Meta(AccountingResourceMeta): class CreditAdjustmentResource (line 269) | class CreditAdjustmentResource(ModelResource): class Meta (line 276) | class Meta(AccountingResourceMeta): class SubscriptionAndAdjustmentResource (line 282) | class SubscriptionAndAdjustmentResource(ModelResource): class Meta (line 288) | class Meta(AccountingResourceMeta): class BillingRecordResource (line 295) | class BillingRecordResource(ModelResource): class Meta (line 299) | class Meta(AccountingResourceMeta): method dehydrate_emailed_to (line 304) | def dehydrate_emailed_to(self, bundle): FILE: corehq/apps/api/cors.py function add_cors_headers_to_response (line 9) | def add_cors_headers_to_response(response, allow_methods: str = ''): FILE: corehq/apps/api/decorators.py function api_user_basic_auth (line 12) | def api_user_basic_auth(permission, realm=''): function allow_cors (line 30) | def allow_cors(allowed_methods): function api_throttle (line 51) | def api_throttle(view): FILE: corehq/apps/api/domain_metadata.py function _get_domain (line 18) | def _get_domain(bundle): class DomainQuerySetAdapter (line 22) | class DomainQuerySetAdapter(object): method __init__ (line 24) | def __init__(self, es_query): method count (line 27) | def count(self): method __getitem__ (line 30) | def __getitem__(self, item): class DomainMetadataResource (line 36) | class DomainMetadataResource(CouchResourceMixin, HqBaseResource): method dispatch (line 42) | def dispatch(self, request_type, request, **kwargs): method dehydrate_billing_properties (line 45) | def dehydrate_billing_properties(self, bundle): method dehydrate_calculated_properties (line 57) | def dehydrate_calculated_properties(self, bundle): method _get_base_properties_from_domain_metrics (line 70) | def _get_base_properties_from_domain_metrics(domain): method _add_extra_calculated_properties (line 75) | def _add_extra_calculated_properties(properties, domain, calc_prop_pre... method dehydrate_domain_properties (line 88) | def dehydrate_domain_properties(self, bundle): method obj_get (line 91) | def obj_get(self, bundle, **kwargs): method obj_get_list (line 97) | def obj_get_list(self, bundle, **kwargs): class Meta (line 114) | class Meta(AdminResourceMeta): class MaltResource (line 122) | class MaltResource(ModelResource): class Meta (line 124) | class Meta(AdminResourceMeta): class GIRResource (line 139) | class GIRResource(ModelResource): class Meta (line 141) | class Meta(AdminResourceMeta): FILE: corehq/apps/api/es.py class ESUserError (line 23) | class ESUserError(Http400): class DateTimeError (line 27) | class DateTimeError(ValueError): class ESView (line 31) | class ESView: method __init__ (line 40) | def __init__(self, domain): method get_document (line 43) | def get_document(self, doc_id): method run_query (line 54) | def run_query(self, es_query): method count_query (line 103) | def count_query(self, es_query): class CaseESView (line 107) | class CaseESView(ESView): class FormESView (line 119) | class FormESView(ESView): method run_query (line 124) | def run_query(self, es_query, **kwargs): class ElasticAPIQuerySet (line 158) | class ElasticAPIQuerySet(object): method __init__ (line 184) | def __init__(self, es_client, payload=None, model=None): method with_fields (line 195) | def with_fields(self, es_client=None, payload=None, model=None): method results (line 202) | def results(self): method count (line 207) | def count(self): method order_by (line 210) | def order_by(self, *fields): method __len__ (line 234) | def __len__(self): method __iter__ (line 239) | def __iter__(self): method __getitem__ (line 244) | def __getitem__(self, idx): function validate_date (line 277) | def validate_date(date): class DateRangeParams (line 292) | class DateRangeParams(object): method __init__ (line 293) | def __init__(self, param, term=None): method consume_params (line 298) | def consume_params(self, raw_params): class TermParam (line 311) | class TermParam(object): method __init__ (line 317) | def __init__(self, param, term=None, analyzed=False): method consume_params (line 322) | def consume_params(self, raw_params): class XFormServerModifiedParams (line 330) | class XFormServerModifiedParams: method consume_params (line 333) | def consume_params(self, raw_params): function _validate_and_get_es_filter (line 370) | def _validate_and_get_es_filter(search_param): function es_query_from_get_params (line 402) | def es_query_from_get_params(search_params, domain, doc_type='form'): function flatten_list (line 450) | def flatten_list(list_2d): FILE: corehq/apps/api/exceptions.py class UpdateUserException (line 1) | class UpdateUserException(Exception): method __init__ (line 4) | def __init__(self, message): FILE: corehq/apps/api/fields.py function get_referenced_class (line 11) | def get_referenced_class(class_or_str): class AttributeOrCallable (line 20) | class AttributeOrCallable(object): method __init__ (line 22) | def __init__(self, attribute): method __call__ (line 25) | def __call__(self, v): class UseIfRequested (line 35) | class UseIfRequested(object): method __init__ (line 43) | def __init__(self, underlying_field): method use_in (line 46) | def use_in(self, bundle): method __getattr__ (line 50) | def __getattr__(self, attr): class CallableApiField (line 56) | class CallableApiField(ApiField): method dehydrate (line 61) | def dehydrate(self, bundle): class CallableCharField (line 68) | class CallableCharField(CharField, CallableApiField): class ToManyDocumentsField (line 72) | class ToManyDocumentsField(ApiField): method __init__ (line 81) | def __init__(self, to, attribute, blank=False, readonly=False, unique=... method to_class (line 94) | def to_class(self): method related_resource (line 101) | def related_resource(self): method dehydrate (line 104) | def dehydrate(self, bundle, for_list=True): class ToManyDictField (line 114) | class ToManyDictField(ApiField): method __init__ (line 129) | def __init__(self, to, attribute, blank=False, readonly=False, unique=... method to_class (line 139) | def to_class(self): method related_resource (line 146) | def related_resource(self): method dehydrate (line 149) | def dehydrate(self, bundle, for_list=True): class ToManyListDictField (line 159) | class ToManyListDictField(ApiField): method __init__ (line 175) | def __init__(self, to, attribute, blank=False, readonly=False, unique=... method to_class (line 187) | def to_class(self): method related_resource (line 194) | def related_resource(self): method dehydrate (line 197) | def dehydrate(self, bundle, for_list=True): class ToOneDocumentField (line 210) | class ToOneDocumentField(ApiField): method __init__ (line 216) | def __init__(self, to, attribute, blank=False, readonly=False, unique=... method to_class (line 229) | def to_class(self): method related_resource (line 236) | def related_resource(self): method dehydrate (line 239) | def dehydrate(self, bundle, for_list=True): class UUIDField (line 249) | class UUIDField(ApiField): method convert (line 258) | def convert(self, value): method hydrate (line 263) | def hydrate(self, bundle): FILE: corehq/apps/api/keyset_paginator.py class KeysetPaginator (line 9) | class KeysetPaginator(Paginator): method __init__ (line 18) | def __init__(self, request_data, objects, method get_offset (line 30) | def get_offset(self): method get_slice (line 33) | def get_slice(self, limit, offset): method get_count (line 36) | def get_count(self): method get_previous (line 39) | def get_previous(self, limit, offset): method get_next (line 42) | def get_next(self, **next_params): method get_page_size (line 72) | def get_page_size(self): method get_limit (line 93) | def get_limit(self): method page (line 105) | def page(self): FILE: corehq/apps/api/migrations/0001_initial.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/api/migrations/0002_alter_permissions.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/api/migrations/0003_populate_apiuser.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/api/migrations/0004_rename_apiuser.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/api/models.py class ApiUser (line 22) | class ApiUser(models.Model): class Meta (line 31) | class Meta: method username (line 35) | def username(self): method set_password (line 41) | def set_password(self, raw_password): method check_password (line 45) | def check_password(self, raw_password): method has_permission (line 48) | def has_permission(self, permission): method create (line 52) | def create(cls, username, password, permissions=None): method get_user (line 68) | def get_user(cls, username): method auth (line 72) | def auth(cls, username, password, permission=None): function _require_api_user (line 86) | def _require_api_user(permission=None): class ESXFormInstance (line 110) | class ESXFormInstance(DictObject): method form_data (line 117) | def form_data(self): method metadata (line 121) | def metadata(self): method is_archived (line 128) | def is_archived(self): method blobs (line 132) | def blobs(self): method version (line 151) | def version(self): method uiversion (line 155) | def uiversion(self): method type (line 159) | def type(self): method name (line 163) | def name(self): method server_modified_on (line 167) | def server_modified_on(self): class ESCase (line 176) | class ESCase(DictObject, CaseToXMLMixin): method case_id (line 183) | def case_id(self): method server_opened_on (line 187) | def server_opened_on(self): method indices (line 195) | def indices(self): method get_index_map (line 198) | def get_index_map(self): method get_properties_in_api_format (line 201) | def get_properties_in_api_format(self): method dynamic_case_properties (line 214) | def dynamic_case_properties(self): method _reverse_indices (line 223) | def _reverse_indices(self): method get_forms (line 226) | def get_forms(self): method child_cases (line 232) | def child_cases(self): method parent_cases (line 241) | def parent_cases(self): method xforms_by_name (line 250) | def xforms_by_name(self): method xforms_by_xmlns (line 254) | def xforms_by_xmlns(self): function _group_by_dict (line 258) | def _group_by_dict(objs, fn): FILE: corehq/apps/api/object_fetch_api.py class CaseAttachmentAPI (line 33) | class CaseAttachmentAPI(View): method get (line 36) | def get(self, request, domain, case_id=None, attachment_id=None): function view_form_attachment (line 133) | def view_form_attachment(request, domain, instance_id, attachment_id): function fetch_case_image (line 137) | def fetch_case_image(domain, case_id, attachment_id, filesize_limit=0, function get_cached_case_attachment (line 189) | def get_cached_case_attachment(case_id, attachment_id, is_image=False): FILE: corehq/apps/api/odata/serializers.py class ODataBaseSerializer (line 18) | class ODataBaseSerializer(Serializer): method get_config (line 24) | def get_config(self, config_id): method to_json (line 27) | def to_json(self, data, options=None): method get_next_url (line 74) | def get_next_url(meta, api_path): method serialize_documents_using_config (line 80) | def serialize_documents_using_config(documents, config, table_id): class ODataCaseSerializer (line 101) | class ODataCaseSerializer(ODataBaseSerializer): method get_config (line 106) | def get_config(self, config_id): class ODataFormSerializer (line 110) | class ODataFormSerializer(ODataBaseSerializer): method get_config (line 115) | def get_config(self, config_id): FILE: corehq/apps/api/odata/tests/test_auth.py class TestOdataAuth (line 23) | class TestOdataAuth(TestCase, CaseOdataTestMixin): method setUpClass (line 28) | def setUpClass(cls): method setup_sso_user (line 35) | def setup_sso_user(cls): method tearDownClass (line 55) | def tearDownClass(cls): method test_success (line 59) | def test_success(self): method test_no_credentials (line 63) | def test_no_credentials(self): method test_wrong_password (line 67) | def test_wrong_password(self): method test_wrong_domain (line 72) | def test_wrong_domain(self): method test_user_permissions (line 88) | def test_user_permissions(self): method test_success_with_api_key (line 106) | def test_success_with_api_key(self): method test_sso_user_with_password_is_rejected (line 112) | def test_sso_user_with_password_is_rejected(self): method test_sso_user_with_api_key_in_basic_password_slot_succeeds (line 118) | def test_sso_user_with_api_key_in_basic_password_slot_succeeds(self): method test_success_with_two_factor_api_key (line 125) | def test_success_with_two_factor_api_key(self): FILE: corehq/apps/api/odata/tests/test_feed.py class TestODataCaseFeed (line 25) | class TestODataCaseFeed(TestCase, CaseOdataTestMixin): method setUpClass (line 28) | def setUpClass(cls): method tearDownClass (line 34) | def tearDownClass(cls): method test_config_in_different_domain (line 38) | def test_config_in_different_domain(self): method test_missing_config_id (line 55) | def test_missing_config_id(self): method test_request_succeeded (line 63) | def test_request_succeeded(self): method view_url (line 88) | def view_url(self): method _odata_feed_url_by_domain (line 92) | def _odata_feed_url_by_domain(domain_name): method _odata_feed_url_by_domain_and_config_id (line 96) | def _odata_feed_url_by_domain_and_config_id(domain_name, config_id): class TestODataFormFeed (line 110) | class TestODataFormFeed(TestCase, FormOdataTestMixin): method setUpClass (line 113) | def setUpClass(cls): method tearDownClass (line 119) | def tearDownClass(cls): method test_config_in_different_domain (line 123) | def test_config_in_different_domain(self): method test_missing_config_id (line 140) | def test_missing_config_id(self): method test_request_succeeded (line 148) | def test_request_succeeded(self): method view_url (line 173) | def view_url(self): method _odata_feed_url_by_domain (line 177) | def _odata_feed_url_by_domain(domain_name): method _odata_feed_url_by_domain_and_config_id (line 181) | def _odata_feed_url_by_domain_and_config_id(domain_name, config_id): FILE: corehq/apps/api/odata/tests/test_metadata.py class TestCaseMetadataDocument (line 18) | class TestCaseMetadataDocument(TestCase, CaseOdataTestMixin, TestXmlMixin): method setUpClass (line 23) | def setUpClass(cls): method tearDownClass (line 29) | def tearDownClass(cls): method test_missing_feed (line 33) | def test_missing_feed(self): method test_populated_metadata_document (line 48) | def test_populated_metadata_document(self): class TestFormMetadataDocument (line 71) | class TestFormMetadataDocument(TestCase, FormOdataTestMixin, TestXmlMixin): method setUpClass (line 76) | def setUpClass(cls): method tearDownClass (line 82) | def tearDownClass(cls): method test_missing_feed (line 86) | def test_missing_feed(self): method test_populated_metadata_document (line 101) | def test_populated_metadata_document(self): FILE: corehq/apps/api/odata/tests/test_models.py class TestODataWrap (line 15) | class TestODataWrap(TestCase): method test_column_label_containing_period (line 17) | def test_column_label_containing_period(self): method test_column_label_containing_at_sign (line 42) | def test_column_label_containing_at_sign(self): method test_caseid_column_label (line 67) | def test_caseid_column_label(self): method test_formid_column_label (line 92) | def test_formid_column_label(self): method test_ignore_case_link_label (line 119) | def test_ignore_case_link_label(self): method test_ignore_form_link_label (line 145) | def test_ignore_form_link_label(self): FILE: corehq/apps/api/odata/tests/test_serializers.py class TestODataCaseSerializer (line 17) | class TestODataCaseSerializer(SimpleTestCase): method test_selected_column_included (line 19) | def test_selected_column_included(self): method test_unselected_column_excluded (line 51) | def test_unselected_column_excluded(self): method test_missing_value_is_null (line 83) | def test_missing_value_is_null(self): method test_non_standard_case_property (line 113) | def test_non_standard_case_property(self): method test_case_id (line 144) | def test_case_id(self): method test_case_name (line 174) | def test_case_name(self): method test_next_link_present (line 205) | def test_next_link_present(self): method test_next_link_absent (line 213) | def test_next_link_absent(self): class TestODataFormSerializer (line 222) | class TestODataFormSerializer(SimpleTestCase): method test_selected_column_included (line 224) | def test_selected_column_included(self): method test_unselected_column_excluded (line 255) | def test_unselected_column_excluded(self): method test_missing_value_is_null (line 286) | def test_missing_value_is_null(self): method test_next_link_present (line 316) | def test_next_link_present(self): method test_next_link_absent (line 324) | def test_next_link_absent(self): FILE: corehq/apps/api/odata/tests/test_service.py class TestCaseServiceDocument (line 13) | class TestCaseServiceDocument(TestCase, CaseOdataTestMixin): method setUpClass (line 18) | def setUpClass(cls): method tearDownClass (line 24) | def tearDownClass(cls): method test_successful_request (line 28) | def test_successful_request(self): class TestFormServiceDocument (line 44) | class TestFormServiceDocument(TestCase, FormOdataTestMixin): method setUpClass (line 49) | def setUpClass(cls): method tearDownClass (line 55) | def tearDownClass(cls): method test_successful_request (line 59) | def test_successful_request(self): FILE: corehq/apps/api/odata/tests/utils.py class OdataTestMixin (line 27) | class OdataTestMixin(object): method _set_up_class (line 32) | def _set_up_class(cls): method get_instance (line 46) | def get_instance(cls, domain_name): method _setup_accounting (line 50) | def _setup_accounting(cls): method _teardown_accounting (line 59) | def _teardown_accounting(cls): method _setup_user_permissions (line 63) | def _setup_user_permissions(cls): method _execute_query (line 67) | def _execute_query(self, credentials, view_url=None): method _get_correct_credentials (line 71) | def _get_correct_credentials(cls): method _get_basic_credentials (line 75) | def _get_basic_credentials(username, password): method view_url (line 79) | def view_url(self): class CaseOdataTestMixin (line 85) | class CaseOdataTestMixin(OdataTestMixin): method get_instance (line 88) | def get_instance(cls, domain_name): class FormOdataTestMixin (line 116) | class FormOdataTestMixin(OdataTestMixin): method get_instance (line 119) | def get_instance(cls, domain_name): function generate_api_key_from_web_user (line 149) | def generate_api_key_from_web_user(web_user): FILE: corehq/apps/api/odata/utils.py function get_case_odata_fields_from_config (line 11) | def get_case_odata_fields_from_config(case_export_config, table_id): function get_form_odata_fields_from_config (line 24) | def get_form_odata_fields_from_config(form_export_config, table_id): function _get_odata_fields_from_columns (line 33) | def _get_odata_fields_from_columns(export_config, special_types, table_id): function record_feed_access_in_datadog (line 57) | def record_feed_access_in_datadog(request, config_id, duration, response): function format_odata_error (line 79) | def format_odata_error(code, message): FILE: corehq/apps/api/odata/views.py function odata_permissions_check (line 32) | def odata_permissions_check(user, domain): function raise_odata_permissions_issues (line 44) | def raise_odata_permissions_issues(user, domain, config): class BaseODataView (line 59) | class BaseODataView(View): method dispatch (line 61) | def dispatch(self, request, *args, **kwargs): class ODataCaseServiceView (line 69) | class ODataCaseServiceView(BaseODataView): method get (line 74) | def get(self, request, domain, api_version, config_id, **kwargs): class ODataCaseMetadataView (line 97) | class ODataCaseMetadataView(BaseODataView): method get (line 102) | def get(self, request, domain, config_id, **kwargs): class ODataFormServiceView (line 124) | class ODataFormServiceView(BaseODataView): method get (line 129) | def get(self, request, domain, api_version, config_id, **kwargs): class ODataFormMetadataView (line 152) | class ODataFormMetadataView(BaseODataView): method get (line 157) | def get(self, request, domain, config_id, **kwargs): function add_odata_headers (line 177) | def add_odata_headers(response): FILE: corehq/apps/api/query_adapters.py class UserQuerySetAdapter (line 9) | class UserQuerySetAdapter(object): method __init__ (line 11) | def __init__(self, domain, show_archived, is_web_user=False, filters=N... method count (line 17) | def count(self): method _query (line 23) | def _query(self): method __getitem__ (line 35) | def __getitem__(self, item): class WrappedUser (line 48) | class WrappedUser(CommCareUser): method wrap (line 51) | def wrap(cls, data): method get_group_ids (line 56) | def get_group_ids(self): class GroupQuerySetAdapter (line 60) | class GroupQuerySetAdapter(object): method __init__ (line 61) | def __init__(self, domain): method count (line 64) | def count(self): method __getitem__ (line 67) | def __getitem__(self, item): method _iter_active_user_ids (line 83) | def _iter_active_user_ids(self, groups): class WrappedGroup (line 93) | class WrappedGroup(Group): method get_user_ids (line 96) | def get_user_ids(self, is_active=True): FILE: corehq/apps/api/resources/__init__.py class DictObject (line 18) | class DictObject(object): method __init__ (line 20) | def __init__(self, dict=None): method __getattr__ (line 23) | def __getattr__(self, item): method __repr__ (line 26) | def __repr__(self): function build_content_type (line 30) | def build_content_type(format, encoding='utf-8'): class JsonResourceMixin (line 37) | class JsonResourceMixin(object): method create_response (line 44) | def create_response(self, request, data, response_class=HttpResponse, ... method determine_format (line 52) | def determine_format(self, request): class CorsResourceMixin (line 63) | class CorsResourceMixin(object): method create_response (line 68) | def create_response(self, *args, **kwargs): method method_check (line 72) | def method_check(self, request, allowed=None): class ApiVersioningMixin (line 92) | class ApiVersioningMixin: method __init__ (line 93) | def __init__(self, api_name=None): method urls (line 101) | def urls(self): method get_urlpattern (line 108) | def get_urlpattern(cls, version): method _get_urls (line 116) | def _get_urls(self): class HqBaseResource (line 127) | class HqBaseResource(ApiVersioningMixin, CorsResourceMixin, JsonResource... method dispatch (line 132) | def dispatch(self, request_type, request, **kwargs): method alter_deserialized_detail_data (line 153) | def alter_deserialized_detail_data(self, request, data): method get_required_privilege (line 169) | def get_required_privilege(self): method patch_list_replica (line 172) | def patch_list_replica(self, create_or_update_object, request=None, ob... class SimpleSortableResourceMixin (line 208) | class SimpleSortableResourceMixin(object): method apply_sorting (line 224) | def apply_sorting(self, obj_list, options=None): class DomainSpecificResourceMixin (line 256) | class DomainSpecificResourceMixin(object): method get_list (line 258) | def get_list(self, request, **kwargs): method get_resource_list_uri (line 287) | def get_resource_list_uri(self, request=None, **kwargs): class CouchResourceMixin (line 307) | class CouchResourceMixin(object): method detail_uri_kwargs (line 309) | def detail_uri_kwargs(self, bundle_or_obj): FILE: corehq/apps/api/resources/auth.py function wrap_4xx_errors_for_apis (line 23) | def wrap_4xx_errors_for_apis(view_func): class ApiIdentifier (line 38) | class ApiIdentifier: function get_rate_limit_identifier (line 43) | def get_rate_limit_identifier(request): class HQAuthenticationMixin (line 53) | class HQAuthenticationMixin: method _get_auth_decorator (line 56) | def _get_auth_decorator(self, request): method get_identifier (line 59) | def get_identifier(self, request): class SSOAuthentication (line 63) | class SSOAuthentication(HQAuthenticationMixin, Authentication): class LoginAuthentication (line 67) | class LoginAuthentication(HQAuthenticationMixin, Authentication): method __init__ (line 71) | def __init__(self, allow_session_auth=False): method is_authenticated (line 75) | def is_authenticated(self, request, **kwargs): method _auth_test (line 81) | def _auth_test(self, request, wrappers, **kwargs): class LoginAndDomainAuthentication (line 98) | class LoginAndDomainAuthentication(HQAuthenticationMixin, Authentication): method __init__ (line 100) | def __init__(self, allow_session_auth=False, *args, **kwargs): method is_authenticated (line 108) | def is_authenticated(self, request, **kwargs): method _auth_test (line 114) | def _auth_test(self, request, wrappers, **kwargs): class NoAPIPermissionsAuthentication (line 138) | class NoAPIPermissionsAuthentication(LoginAndDomainAuthentication): method __init__ (line 142) | def __init__(self, *args, **kwargs): method is_authenticated (line 145) | def is_authenticated(self, request, **kwargs): class RequirePermissionAuthentication (line 152) | class RequirePermissionAuthentication(LoginAndDomainAuthentication): method __init__ (line 154) | def __init__(self, permission, *args, **kwargs): method is_authenticated (line 158) | def is_authenticated(self, request, **kwargs): class ODataAuthentication (line 166) | class ODataAuthentication(LoginAndDomainAuthentication): method __init__ (line 168) | def __init__(self, *args, **kwargs): method is_authenticated (line 175) | def is_authenticated(self, request, **kwargs): method _get_auth_decorator (line 185) | def _get_auth_decorator(self, request): class DomainAdminAuthentication (line 189) | class DomainAdminAuthentication(LoginAndDomainAuthentication): method is_authenticated (line 191) | def is_authenticated(self, request, **kwargs): class AdminAuthentication (line 200) | class AdminAuthentication(LoginAndDomainAuthentication): method _permission_check (line 203) | def _permission_check(couch_user, domain): method is_authenticated (line 208) | def is_authenticated(self, request, **kwargs): FILE: corehq/apps/api/resources/messaging_event/filters.py function filter_query (line 17) | def filter_query(query, request_data): function _get_date_filter_consumer (line 38) | def _get_date_filter_consumer(api_field, query_field=None): function _get_source_filter_consumer (line 57) | def _get_source_filter_consumer(): function _get_content_type_filter_consumer (line 73) | def _get_content_type_filter_consumer(): function _make_slug_filter_consumer (line 94) | def _make_slug_filter_consumer(filter_key, slug_dict, model_filter_arg, ... function _status_filter_consumer (line 112) | def _status_filter_consumer(key, value): function _make_simple_consumer (line 148) | def _make_simple_consumer(filter_name, model_filter_arg, validator=None): FILE: corehq/apps/api/resources/messaging_event/pagination.py function get_paged_data (line 14) | def get_paged_data(query, request_params, api_version): function _get_objects (line 26) | def _get_objects(query, request_params, limit): function _get_cursor (line 49) | def _get_cursor(objects, request_params, api_version): FILE: corehq/apps/api/resources/messaging_event/serializers.py function serialize_event (line 7) | def serialize_event(event): function _serialize_event_status (line 25) | def _serialize_event_status(event, messages): function _serialize_event_error (line 39) | def _serialize_event_error(event): function _serialize_event_messages (line 51) | def _serialize_event_messages(event): function _serialize_event_recipient (line 66) | def _serialize_event_recipient(event): function _serialize_event_source (line 79) | def _serialize_event_source(event): function _serialize_event_form (line 90) | def _serialize_event_form(event): function _get_messages_for_email (line 105) | def _get_messages_for_email(event): function _get_messages_for_sms (line 125) | def _get_messages_for_sms(event): function _get_messages_for_survey (line 130) | def _get_messages_for_survey(event): function _get_message_dicts_for_sms (line 143) | def _get_message_dicts_for_sms(event, messages, type_): FILE: corehq/apps/api/resources/messaging_event/utils.py function get_limit_offset (line 12) | def get_limit_offset(param_name, request_data, default, max_value=None): function sort_query (line 28) | def sort_query(query, request_params): function get_order_by_field (line 38) | def get_order_by_field(request_params): class CursorParams (line 52) | class CursorParams(): method __getitem__ (line 57) | def __getitem__(self, key): method __contains__ (line 60) | def __contains__(self, key): method items (line 63) | def items(self): method get (line 66) | def get(self, key, default=None): function get_request_params (line 73) | def get_request_params(request): FILE: corehq/apps/api/resources/messaging_event/view.py function messaging_events (line 29) | def messaging_events(request, domain, api_version, event_id=None): function _get_individual (line 44) | def _get_individual(request, event_id): function _get_list (line 53) | def _get_list(request, api_version): function _get_base_query (line 62) | def _get_base_query(domain): FILE: corehq/apps/api/resources/meta.py function get_hq_throttle (line 30) | def get_hq_throttle(): class HQThrottle (line 34) | class HQThrottle(BaseThrottle): method should_be_throttled (line 36) | def should_be_throttled(self, identifier, **kwargs): method retry_after (line 42) | def retry_after(self, identifier): method accessed (line 45) | def accessed(self, identifier, **kwargs): class CustomResourceMeta (line 68) | class CustomResourceMeta(object): class AdminResourceMeta (line 76) | class AdminResourceMeta(CustomResourceMeta): FILE: corehq/apps/api/resources/pagination.py class NoCountingPaginator (line 10) | class NoCountingPaginator(Paginator): method get_previous (line 23) | def get_previous(self, limit, offset): method get_next (line 29) | def get_next(self, limit, offset, count): method get_count (line 35) | def get_count(self): class DoesNothingPaginator (line 42) | class DoesNothingPaginator(Paginator): method page (line 43) | def page(self): class DoesNothingPaginatorCompat (line 50) | class DoesNothingPaginatorCompat(Paginator): method page (line 55) | def page(self): function response_for_cursor_based_pagination (line 71) | def response_for_cursor_based_pagination(request, query, request_params,... function _get_next_url_params (line 86) | def _get_next_url_params(domain, api_version, request_params, datasource... FILE: corehq/apps/api/resources/serializers.py class ListToSingleObjectSerializer (line 6) | class ListToSingleObjectSerializer(Serializer): method to_json (line 14) | def to_json(self, data, options=None): FILE: corehq/apps/api/resources/v0_1.py class UserResource (line 25) | class UserResource(CouchResourceMixin, HqBaseResource, DomainSpecificRes... method obj_get (line 36) | def obj_get(self, bundle, **kwargs): method _get_user_change_logger (line 46) | def _get_user_change_logger(bundle): class Meta (line 62) | class Meta(CustomResourceMeta): class CommCareUserResource (line 67) | class CommCareUserResource(UserResource): class Meta (line 71) | class Meta(UserResource.Meta): method dehydrate (line 76) | def dehydrate(self, bundle): method dehydrate_user_data (line 111) | def dehydrate_user_data(self, bundle): method obj_get_list (line 126) | def obj_get_list(self, bundle, **kwargs): class WebUserResource (line 139) | class WebUserResource(UserResource): method dehydrate_role (line 144) | def dehydrate_role(self, bundle): method dehydrate_permissions (line 148) | def dehydrate_permissions(self, bundle): method dehydrate_is_admin (line 152) | def dehydrate_is_admin(self, bundle): class Meta (line 155) | class Meta(UserResource.Meta): method obj_get_list (line 160) | def obj_get_list(self, bundle, **kwargs): function _safe_bool (line 174) | def _safe_bool(bundle, param, default=False): FILE: corehq/apps/api/resources/v0_3.py class CommCareCaseResource (line 19) | class CommCareCaseResource(HqBaseResource, DomainSpecificResourceMixin): method dehydrate_properties (line 35) | def dehydrate_properties(self, bundle): method dehydrate_indices (line 40) | def dehydrate_indices(self, bundle): method detail_uri_kwargs (line 43) | def detail_uri_kwargs(self, bundle_or_obj): method case_es (line 48) | def case_es(self, domain): method obj_get (line 52) | def obj_get(self, bundle, **kwargs): method obj_get_list (line 59) | def obj_get_list(self, bundle, domain, **kwargs): class Meta (line 71) | class Meta(CustomResourceMeta): FILE: corehq/apps/api/resources/v0_4.py class XFormInstanceResource (line 64) | class XFormInstanceResource(SimpleSortableResourceMixin, HqBaseResource,... method dehydrate_archived (line 93) | def dehydrate_archived(self, bundle): method dehydrate_attachments (line 105) | def dehydrate_attachments(self, bundle): method dehydrate_is_phone_submission (line 126) | def dehydrate_is_phone_submission(self, bundle): method dehydrate_edited_by_user_id (line 134) | def dehydrate_edited_by_user_id(self, bundle): method obj_get (line 138) | def obj_get(self, bundle, **kwargs): method xform_es (line 143) | def xform_es(self, domain): method obj_get_list (line 146) | def obj_get_list(self, bundle, domain, **kwargs): method detail_uri_kwargs (line 159) | def detail_uri_kwargs(self, bundle_or_obj): class Meta (line 164) | class Meta(CustomResourceMeta): function _cases_referenced_by_xform (line 174) | def _cases_referenced_by_xform(esxform): class CommCareCaseResource (line 186) | class CommCareCaseResource(SimpleSortableResourceMixin, v0_3.CommCareCas... method obj_get (line 220) | def obj_get(self, bundle, **kwargs): class Meta (line 227) | class Meta(v0_3.CommCareCaseResource.Meta): class GroupResource (line 234) | class GroupResource(CouchResourceMixin, HqBaseResource, DomainSpecificRe... method obj_get (line 246) | def obj_get(self, bundle, **kwargs): method obj_get_list (line 249) | def obj_get_list(self, bundle, domain, **kwargs): class Meta (line 252) | class Meta(CustomResourceMeta): class SingleSignOnResource (line 260) | class SingleSignOnResource(HqBaseResource, DomainSpecificResourceMixin): method post_list (line 268) | def post_list(self, request, **kwargs): method get_list (line 299) | def get_list(self, bundle, **kwargs): method get_detail (line 302) | def get_detail(self, bundle, **kwargs): class Meta (line 305) | class Meta(CustomResourceMeta): class BaseApplicationResource (line 312) | class BaseApplicationResource(CouchResourceMixin, HqBaseResource, Domain... method obj_get_list (line 314) | def obj_get_list(self, bundle, domain, **kwargs): method obj_get (line 318) | def obj_get(self, bundle, **kwargs): class Meta (line 323) | class Meta(CustomResourceMeta): class ApplicationResource (line 332) | class ApplicationResource(BaseApplicationResource): method dehydrate_versions (line 345) | def dehydrate_versions(bundle): method get_all_case_properties_local (line 362) | def get_all_case_properties_local(self, app): method dehydrate_module (line 365) | def dehydrate_module(self, app, module, langs): method dehydrate_modules (line 406) | def dehydrate_modules(self, bundle): method dehydrate (line 415) | def dehydrate(self, bundle): FILE: corehq/apps/api/resources/v0_5.py function user_es_call (line 161) | def user_es_call(domain, q, fields, size, start_at): class BulkUserResource (line 172) | class BulkUserResource(HqBaseResource, DomainSpecificResourceMixin): method to_obj (line 186) | def to_obj(user): class Meta (line 194) | class Meta(CustomResourceMeta): method dehydrate (line 201) | def dehydrate(self, bundle): method obj_get_list (line 211) | def obj_get_list(self, bundle, **kwargs): method detail_uri_kwargs (line 235) | def detail_uri_kwargs(self, bundle_or_obj): class CommCareUserResource (line 241) | class CommCareUserResource(v0_1.CommCareUserResource): class Meta (line 247) | class Meta(v0_1.CommCareUserResource.Meta): method serialize (line 252) | def serialize(self, request, data, format, options=None): method get_resource_uri (line 257) | def get_resource_uri(self, bundle_or_obj=None, url_name='api_dispatch_... method obj_create (line 270) | def obj_create(self, bundle, **kwargs): method validate_new_user_input (line 340) | def validate_new_user_input(require_account_confirmation, send_confirm... method obj_update (line 348) | def obj_update(self, bundle, **kwargs): method obj_delete (line 372) | def obj_delete(self, bundle, **kwargs): method dehydrate_primary_location (line 379) | def dehydrate_primary_location(self, bundle): method dehydrate_locations (line 382) | def dehydrate_locations(self, bundle): method dehydrate (line 385) | def dehydrate(self, bundle): method _update (line 391) | def _update(cls, bundle, user_change_logger=None): method prepend_urls (line 407) | def prepend_urls(self): method activate_user (line 416) | def activate_user(self, request, **kwargs): method deactivate_user (line 420) | def deactivate_user(self, request, **kwargs): method email_password_reset (line 423) | def email_password_reset(self, request, **kwargs): method _modify_user_status (line 444) | def _modify_user_status(self, request, active, **kwargs): class WebUserResource (line 468) | class WebUserResource(v0_1.WebUserResource): class Meta (line 478) | class Meta(v0_1.WebUserResource.Meta): method dehydrate_primary_location_id (line 482) | def dehydrate_primary_location_id(self, bundle): method dehydrate_assigned_location_ids (line 485) | def dehydrate_assigned_location_ids(self, bundle): method dehydrate_tableau_groups (line 488) | def dehydrate_tableau_groups(self, bundle): method dehydrate_tableau_role (line 495) | def dehydrate_tableau_role(self, bundle): method dehydrate_user_data (line 503) | def dehydrate_user_data(self, bundle): method dehydrate_profile (line 510) | def dehydrate_profile(self, bundle): method dehydrate_is_active_in_domain (line 516) | def dehydrate_is_active_in_domain(self, bundle): method get_resource_uri (line 519) | def get_resource_uri(self, bundle_or_obj=None, url_name='api_dispatch_... method obj_update (line 529) | def obj_update(self, bundle, **kwargs): method _update (line 570) | def _update(self, bundle, user_change_logger=None): method prepend_urls (line 595) | def prepend_urls(self): method enable_user (line 602) | def enable_user(self, request, **kwargs): method disable_user (line 605) | def disable_user(self, request, **kwargs): method _modify_user_status (line 608) | def _modify_user_status(self, request, enabled, **kwargs): class AdminWebUserResource (line 631) | class AdminWebUserResource(v0_1.UserResource): method obj_get (line 634) | def obj_get(self, bundle, **kwargs): method obj_get_list (line 637) | def obj_get_list(self, bundle, **kwargs): class Meta (line 643) | class Meta(AdminResourceMeta): class GroupResource (line 650) | class GroupResource(v0_4.GroupResource): class Meta (line 652) | class Meta(v0_4.GroupResource.Meta): method serialize (line 657) | def serialize(self, request, data, format, options=None): method _is_list (line 665) | def _is_list(self, request, data): method patch_list (line 668) | def patch_list(self, request=None, **kwargs): method post_list (line 671) | def post_list(self, request, **kwargs): method _update (line 695) | def _update(self, bundle): method get_resource_uri (line 718) | def get_resource_uri(self, bundle_or_obj=None, url_name='api_dispatch_... method _get_resource_uri (line 727) | def _get_resource_uri(self, obj): method _get_resource_uri_template (line 734) | def _get_resource_uri_template(self): method obj_create (line 742) | def obj_create(self, bundle, request=None, **kwargs): method obj_update (line 754) | def obj_update(self, bundle, **kwargs): method obj_delete (line 762) | def obj_delete(self, bundle, **kwargs): class DomainAuthorization (line 768) | class DomainAuthorization(ReadOnlyAuthorization): method __init__ (line 770) | def __init__(self, domain_key='domain', *args, **kwargs): method read_list (line 773) | def read_list(self, object_list, bundle): class DeviceReportResource (line 777) | class DeviceReportResource(HqBaseResource, ModelResource): class Meta (line 779) | class Meta(object): class ConfigurableReportDataResource (line 804) | class ConfigurableReportDataResource(HqBaseResource, DomainSpecificResou... method _get_start_param (line 817) | def _get_start_param(self, bundle): method _get_limit_param (line 826) | def _get_limit_param(self, bundle): method _get_next_page (line 838) | def _get_next_page(self, domain, id_, start, limit, total_records, get... method _get_report_data (line 854) | def _get_report_data(self, report_config, domain, start, limit, get_pa... method obj_get (line 884) | def obj_get(self, bundle, **kwargs): method _get_report_configuration (line 911) | def _get_report_configuration(self, id_, domain): method detail_uri_kwargs (line 926) | def detail_uri_kwargs(self, bundle_or_obj): method get_resource_uri (line 932) | def get_resource_uri(self, bundle_or_obj=None, url_name='api_dispatch_... class Meta (line 943) | class Meta(CustomResourceMeta): class SimpleReportConfigurationResource (line 949) | class SimpleReportConfigurationResource(CouchResourceMixin, HqBaseResour... method dehydrate_filters (line 955) | def dehydrate_filters(self, bundle): method dehydrate_columns (line 963) | def dehydrate_columns(self, bundle): method obj_get (line 971) | def obj_get(self, bundle, **kwargs): method obj_get_list (line 980) | def obj_get_list(self, bundle, **kwargs): method detail_uri_kwargs (line 984) | def detail_uri_kwargs(self, bundle_or_obj): class Meta (line 990) | class Meta(CustomResourceMeta): class DataSourceConfigurationResource (line 996) | class DataSourceConfigurationResource(CouchResourceMixin, HqBaseResource... method _ensure_toggle_enabled (line 1005) | def _ensure_toggle_enabled(self, request): method obj_get (line 1017) | def obj_get(self, bundle, **kwargs): method obj_get_list (line 1027) | def obj_get_list(self, bundle, **kwargs): method obj_update (line 1032) | def obj_update(self, bundle, **kwargs): method detail_uri_kwargs (line 1064) | def detail_uri_kwargs(self, bundle_or_obj): class Meta (line 1070) | class Meta(CustomResourceMeta): class UserDomainsResource (line 1083) | class UserDomainsResource(ApiVersioningMixin, CorsResourceMixin, Resource): class Meta (line 1087) | class Meta(object): method dispatch_list (line 1094) | def dispatch_list(self, request, **kwargs): method obj_get_list (line 1108) | def obj_get_list(self, bundle, **kwargs): method get_object_list (line 1111) | def get_object_list(self, request): class IdentityResource (line 1137) | class IdentityResource(ApiVersioningMixin, CorsResourceMixin, Resource): method obj_get_list (line 1144) | def obj_get_list(self, bundle, **kwargs): class Meta (line 1147) | class Meta(object): class DomainForms (line 1161) | class DomainForms(ApiVersioningMixin, Resource): class Meta (line 1168) | class Meta(object): method obj_get_list (line 1177) | def obj_get_list(self, bundle, **kwargs): class DomainCases (line 1201) | class DomainCases(ApiVersioningMixin, Resource): class Meta (line 1210) | class Meta(object): method obj_get_list (line 1219) | def obj_get_list(self, bundle, **kwargs): class DomainUsernames (line 1230) | class DomainUsernames(ApiVersioningMixin, Resource): class Meta (line 1237) | class Meta(object): method obj_get_list (line 1244) | def obj_get_list(self, bundle, **kwargs): class BaseODataResource (line 1252) | class BaseODataResource(HqBaseResource, DomainSpecificResourceMixin): method dispatch (line 1254) | def dispatch(self, request_type, request, **kwargs): method create_response (line 1266) | def create_response(self, request, data, response_class=HttpResponse, method detail_uri_kwargs (line 1279) | def detail_uri_kwargs(self, bundle_or_obj): method determine_format (line 1285) | def determine_format(self, request): class ODataCaseResource (line 1291) | class ODataCaseResource(BaseODataResource): method obj_get_list (line 1293) | def obj_get_list(self, bundle, domain, **kwargs): class Meta (line 1315) | class Meta(v0_4.CommCareCaseResource.Meta): method prepend_urls (line 1322) | def prepend_urls(self): class ODataFormResource (line 1330) | class ODataFormResource(BaseODataResource): method obj_get_list (line 1332) | def obj_get_list(self, bundle, domain, **kwargs): class Meta (line 1354) | class Meta(v0_4.XFormInstanceResource.Meta): method prepend_urls (line 1361) | def prepend_urls(self): class NavigationEventAuditResourceParams (line 1369) | class NavigationEventAuditResourceParams: method __post_init__ (line 1385) | def __post_init__(self, domain, default_limit, max_limit, raw_params=N... method _validate_keys (line 1407) | def _validate_keys(self, params): method _set_compound_keys (line 1421) | def _set_compound_keys(self, params): method _process_limit (line 1431) | def _process_limit(self, default_limit, max_limit): method _process_cursor (line 1442) | def _process_cursor(self): method _process_local_timezone (line 1449) | def _process_local_timezone(self, domain): class NavigationEventAuditResource (line 1456) | class NavigationEventAuditResource(HqBaseResource, Resource): class Meta (line 1462) | class Meta: method to_obj (line 1479) | def to_obj(action_times): method dispatch (line 1485) | def dispatch(self, request_type, request, **kwargs): method alter_list_data_to_serialize (line 1494) | def alter_list_data_to_serialize(self, request, data): method dehydrate (line 1519) | def dehydrate(self, bundle): method obj_get_list (line 1523) | def obj_get_list(self, bundle, **kwargs): method cursor_query (line 1532) | def cursor_query(cls, domain: str, params: NavigationEventAuditResourc... method _query (line 1559) | def _query(cls, domain: str, params: NavigationEventAuditResourceParams): method _get_compound_filter (line 1587) | def _get_compound_filter(cls, param_field_name: str, params: Navigatio... function get_ucr_data (line 1602) | def get_ucr_data(request, domain, api_version): function get_datasource_data (line 1616) | def get_datasource_data(request, config_id, domain): FILE: corehq/apps/api/resources/v1_0.py class CommCareAnalyticsUserResource (line 38) | class CommCareAnalyticsUserResource(CouchResourceMixin, HqBaseResource, ... class Meta (line 43) | class Meta(CustomResourceMeta): method dehydrate (line 47) | def dehydrate(self, bundle): method obj_get (line 55) | def obj_get(self, bundle, **kwargs): method prepend_urls (line 68) | def prepend_urls(self): class InvitationResource (line 76) | class InvitationResource(HqBaseResource, DomainSpecificResourceMixin): class Meta (line 87) | class Meta(CustomResourceMeta): method dehydrate_role (line 93) | def dehydrate_role(self, bundle): method dehydrate_assigned_location_ids (line 96) | def dehydrate_assigned_location_ids(self, bundle): method dehydrate_tableau_groups (line 99) | def dehydrate_tableau_groups(self, bundle): method dehydrate_profile (line 103) | def dehydrate_profile(self, bundle): method obj_create (line 107) | def obj_create(self, bundle, **kwargs): class DETExportInstanceResource (line 177) | class DETExportInstanceResource( class Meta (line 198) | class Meta(CustomResourceMeta): method dehydrate_det_config_url (line 204) | def dehydrate_det_config_url(self, bundle): method dehydrate_type (line 210) | def dehydrate_type(self, bundle): method dehydrate_case_type (line 216) | def dehydrate_case_type(self, bundle): method dehydrate_xmlns (line 222) | def dehydrate_xmlns(self, bundle): method obj_get_list (line 228) | def obj_get_list(self, bundle, **kwargs): method obj_get (line 262) | def obj_get(self, bundle, **kwargs): function _wrap_or_none (line 291) | def _wrap_or_none(class_, doc): FILE: corehq/apps/api/serializers.py class CommCareCaseSerializer (line 15) | class CommCareCaseSerializer(Serializer): method case_to_etree (line 22) | def case_to_etree(self, case): method bundle_to_etree (line 30) | def bundle_to_etree(self, bundle): method to_etree (line 37) | def to_etree(self, data, options=None, name=None, depth=0): class CustomXMLSerializer (line 98) | class CustomXMLSerializer(Serializer): method to_etree (line 100) | def to_etree(self, data, options=None, name=None, depth=0): class XFormInstanceSerializer (line 112) | class XFormInstanceSerializer(Serializer): method to_xml (line 114) | def to_xml(self, data, options=None): FILE: corehq/apps/api/tasks.py function clean_api_access (line 9) | def clean_api_access(): FILE: corehq/apps/api/tests/app_resources.py class TestAppResource (line 12) | class TestAppResource(APIResourceTest): method setUpClass (line 17) | def setUpClass(cls): method make_app (line 25) | def make_app(cls): method test_get_list (line 40) | def test_get_list(self): method test_get_list_cache_bug (line 53) | def test_get_list_cache_bug(self): method test_get_list_null_sorting (line 58) | def test_get_list_null_sorting(self): method test_get_single (line 71) | def test_get_single(self): method get_expected_structure (line 76) | def get_expected_structure(self, with_version=False): FILE: corehq/apps/api/tests/audit_resources.py class DomainNavigationEventAudits (line 17) | class DomainNavigationEventAudits: method __init__ (line 18) | def __init__(self, domain: str, project_timezone: pytz.tzinfo.DstTzInfo): method set_expected_resource_objects (line 23) | def set_expected_resource_objects(self, expected_response: list[dict]): method create_event (line 34) | def create_event(self, user, event_date): class TestNavigationEventAuditResource (line 40) | class TestNavigationEventAuditResource(APIResourceTest): method setUpClass (line 50) | def setUpClass(cls): method test_request (line 110) | def test_request(self): method test_request_with_limit_param (line 117) | def test_request_with_limit_param(self): method test_request_with_timezone_param (line 129) | def test_request_with_timezone_param(self): method test_request_with_user_param (line 171) | def test_request_with_user_param(self): method test_request_with_date_param (line 187) | def test_request_with_date_param(self): method test_request_with_UTC_start_time_start_param (line 207) | def test_request_with_UTC_start_time_start_param(self): method test_request_with_UTC_start_time_end_param (line 225) | def test_request_with_UTC_start_time_end_param(self): method test_request_with_cursor_param (line 243) | def test_request_with_cursor_param(self): method test_response_provides_next (line 270) | def test_response_provides_next(self): method test_response_provides_total_count (line 320) | def test_response_provides_total_count(self): method test_query_includes_users_in_only_specified_domain (line 338) | def test_query_includes_users_in_only_specified_domain(self): method test_query_first_last_action_time_for_each_user (line 350) | def test_query_first_last_action_time_for_each_user(self): method test_query_ordered_by_local_date_and_user (line 356) | def test_query_ordered_by_local_date_and_user(self): method test_query_unique_local_date_and_user_pairs (line 364) | def test_query_unique_local_date_and_user_pairs(self): method test_query_filter_by_user (line 381) | def test_query_filter_by_user(self): method test_query_filter_by_local_date (line 397) | def test_query_filter_by_local_date(self): method test_query_filter_by_UTC_start_time_start (line 420) | def test_query_filter_by_UTC_start_time_start(self): method test_query_filter_by_UTC_start_time_end (line 436) | def test_query_filter_by_UTC_start_time_end(self): method test_query_cursor_pagination_returns_items_after_cursor (line 452) | def test_query_cursor_pagination_returns_items_after_cursor(self): method test_query_cursor_pagination_page_size (line 482) | def test_query_cursor_pagination_page_size(self): method _daterange (line 502) | def _daterange(start_datetime, end_datetime): FILE: corehq/apps/api/tests/case_resources.py class TestCommCareCaseResource (line 23) | class TestCommCareCaseResource(APIResourceTest): method _setup_case (line 27) | def _setup_case(self, cases=None): method test_get_list (line 50) | def test_get_list(self): method test_get_by_owner (line 64) | def test_get_by_owner(self): method test_get_by_case_id (line 79) | def test_get_by_case_id(self): method test_get_by_missing_case_id (line 87) | def test_get_by_missing_case_id(self): method test_get_by_empty_case_id (line 93) | def test_get_by_empty_case_id(self): method test_get_list_format (line 99) | def test_get_list_format(self): method test_parent_and_child_cases (line 126) | def test_parent_and_child_cases(self): class TestCommCareCaseResourceQueries (line 182) | class TestCommCareCaseResourceQueries(APIResourceTest, ElasticTestMixin): method _test_es_query (line 188) | def _test_es_query(self, url_params, expected_query): method _assert_auth_get_resource (line 195) | def _assert_auth_get_resource(self, *args, **kw): method test_get_list_legacy_filters (line 200) | def test_get_list_legacy_filters(self): method test_get_list_case_sensitivity (line 213) | def test_get_list_case_sensitivity(self): method test_get_list_date_filter (line 234) | def test_get_list_date_filter(self): method test_no_subscription (line 251) | def test_no_subscription(self): method test_superuser (line 265) | def test_superuser(self): FILE: corehq/apps/api/tests/core_api.py class TestElasticAPIQuerySet (line 39) | class TestElasticAPIQuerySet(TestCase): method test_slice (line 44) | def test_slice(self): method test_order_by (line 70) | def test_order_by(self): method test_count (line 90) | def test_count(self): class ToManySourceModel (line 99) | class ToManySourceModel(object): method __init__ (line 101) | def __init__(self, other_model_ids, other_model_dict): method other_models (line 106) | def other_models(self): class ToManyDestModel (line 110) | class ToManyDestModel(object): method __init__ (line 112) | def __init__(self, id): class ToManySourceResource (line 116) | class ToManySourceResource(Resource): method __init__ (line 121) | def __init__(self, objs): method obj_get_list (line 125) | def obj_get_list(self): method detail_uri_kwargs (line 128) | def detail_uri_kwargs(self, bundle_or_obj): class Meta (line 133) | class Meta(object): class ToManyDestResource (line 137) | class ToManyDestResource(Resource): class Meta (line 140) | class Meta(object): method detail_uri_kwargs (line 143) | def detail_uri_kwargs(self, bundle_or_obj): class TestToManyDocumentsField (line 149) | class TestToManyDocumentsField(TestCase): method test_requested_use_in (line 154) | def test_requested_use_in(self): class ToManyDictSourceModel (line 180) | class ToManyDictSourceModel(object): method __init__ (line 182) | def __init__(self, other_model_ids, other_model_dict): method other_models (line 187) | def other_models(self): class ToManyDictDestModel (line 191) | class ToManyDictDestModel(object): method __init__ (line 193) | def __init__(self, id): class ToManyDictSourceResource (line 197) | class ToManyDictSourceResource(Resource): method __init__ (line 202) | def __init__(self, objs): method obj_get_list (line 206) | def obj_get_list(self): method detail_uri_kwargs (line 209) | def detail_uri_kwargs(self, bundle_or_obj): class Meta (line 214) | class Meta(object): class ToManyDictDestResource (line 218) | class ToManyDictDestResource(Resource): method detail_uri_kwargs (line 221) | def detail_uri_kwargs(self, bundle_or_obj): class Meta (line 226) | class Meta(object): class TestToManyDictField (line 230) | class TestToManyDictField(TestCase): method test_dehydrate (line 235) | def test_dehydrate(self): class ToOneSourceModel (line 265) | class ToOneSourceModel(object): method __init__ (line 267) | def __init__(self, other_model_id, other_model_dict): method other_model (line 272) | def other_model(self): class ToOneDestModel (line 276) | class ToOneDestModel(object): method __init__ (line 278) | def __init__(self, id): class ToOneSourceResource (line 282) | class ToOneSourceResource(Resource): method __init__ (line 287) | def __init__(self, objs): method obj_get_list (line 291) | def obj_get_list(self): method detail_uri_kwargs (line 294) | def detail_uri_kwargs(self, bundle_or_obj): class Meta (line 299) | class Meta(object): class ToOneDestResource (line 303) | class ToOneDestResource(Resource): method detail_uri_kwargs (line 306) | def detail_uri_kwargs(self, bundle_or_obj): class Meta (line 311) | class Meta(object): class TestToOneDocumentField (line 315) | class TestToOneDocumentField(TestCase): method test_requested_use_in (line 320) | def test_requested_use_in(self): class UseIfRequestedModel (line 345) | class UseIfRequestedModel(object): method __init__ (line 347) | def __init__(self, id): class UseIfRequestedTestResource (line 351) | class UseIfRequestedTestResource(Resource): method __init__ (line 354) | def __init__(self, objs): method obj_get_list (line 358) | def obj_get_list(self): method detail_uri_kwargs (line 361) | def detail_uri_kwargs(self, bundle_or_obj): class Meta (line 366) | class Meta(object): class TestUseIfRequested (line 370) | class TestUseIfRequested(TestCase): method test_requested_use_in (line 372) | def test_requested_use_in(self): class TestSingleSignOnResource (line 393) | class TestSingleSignOnResource(APIResourceTest): method setUp (line 396) | def setUp(self): method tearDown (line 403) | def tearDown(self): method test_web_user_success (line 407) | def test_web_user_success(self): method test_commcare_user_success (line 414) | def test_commcare_user_success(self): method test_wrong_domain (line 422) | def test_wrong_domain(self): method test_wrong_credentials (line 443) | def test_wrong_credentials(self): method test_no_username (line 450) | def test_no_username(self): method test_no_password (line 457) | def test_no_password(self): class TestApiKey (line 465) | class TestApiKey(APIResourceTest): method test_get_user (line 472) | def test_get_user(self): method test_wrong_api_key (line 481) | def test_wrong_api_key(self): method test_wrong_user_api_key (line 490) | def test_wrong_user_api_key(self): class TestParamstoESFilters (line 511) | class TestParamstoESFilters(ElasticTestMixin, SimpleTestCase): method test_search_param (line 513) | def test_search_param(self): method test_inserted_at_query (line 642) | def test_inserted_at_query(self): method test_other_queries_get_skipped (line 687) | def test_other_queries_get_skipped(self): class TestApiThrottle (line 704) | class TestApiThrottle(APIResourceTest): method setUp (line 709) | def setUp(self): method test_throttle_allowlist (line 716) | def test_throttle_allowlist(self): method test_should_be_throttled_identifier (line 732) | def test_should_be_throttled_identifier(self): class TestUrls (line 750) | class TestUrls(APIResourceTest): method setUpClass (line 755) | def setUpClass(cls): method test_v0_5 (line 762) | def test_v0_5(self): method test_v1 (line 774) | def test_v1(self): method test_user_scoped_api (line 786) | def test_user_scoped_api(self): FILE: corehq/apps/api/tests/form_resources.py class TestXFormInstanceResource (line 28) | class TestXFormInstanceResource(APIResourceTest): method _submit_case_update_form (line 39) | def _submit_case_update_form(self): method test_fetching_xform_cases (line 55) | def test_fetching_xform_cases(self): method test_filter_forms_by_cases_modified (line 67) | def test_filter_forms_by_cases_modified(self): method _send_forms (line 75) | def _send_forms(self, forms): method test_get_list (line 103) | def test_get_list(self): method test_get_by_xmlns (line 123) | def test_get_by_xmlns(self): method test_get_by_received_on (line 135) | def test_get_by_received_on(self): method test_received_on_order (line 151) | def test_received_on_order(self): method test_get_by_indexed_on (line 173) | def test_get_by_indexed_on(self): method test_archived_forms (line 203) | def test_archived_forms(self): class TestXFormInstanceResourceQueries (line 232) | class TestXFormInstanceResourceQueries(APIResourceTest, ElasticTestMixin): method _test_es_query (line 238) | def _test_es_query(self, url_params, expected_query): method _assert_auth_get_resource (line 245) | def _assert_auth_get_resource(self, *args, **kw): method test_get_list_xmlns (line 250) | def test_get_list_xmlns(self): method test_get_list_xmlns_exact (line 259) | def test_get_list_xmlns_exact(self): method test_get_list_received_on (line 268) | def test_get_list_received_on(self): method test_get_list_ordering (line 289) | def test_get_list_ordering(self): method test_get_list_archived (line 306) | def test_get_list_archived(self): class TestXFormPillow (line 328) | class TestXFormPillow(TestCase): method test_xformPillowTransform (line 330) | def test_xformPillowTransform(self): class TestViewFormAttachment (line 363) | class TestViewFormAttachment(TestCase): method setUp (line 365) | def setUp(self): method tearDown (line 377) | def tearDown(self): method _get_view_form_endpoint (line 382) | def _get_view_form_endpoint(self): method test_domain_has_feature_flag_enabled (line 393) | def test_domain_has_feature_flag_enabled(self): method test_user_has_permission (line 400) | def test_user_has_permission(self): method test_user_has_no_permission (line 411) | def test_user_has_no_permission(self): FILE: corehq/apps/api/tests/group_resources.py class TestGroupResource (line 12) | class TestGroupResource(APIResourceTest): method test_get_list (line 17) | def test_get_list(self): method test_get_single (line 47) | def test_get_single(self): method test_create (line 67) | def test_create(self): method test_create_multiple (line 90) | def test_create_multiple(self): method test_update (line 117) | def test_update(self): method test_delete_group (line 143) | def test_delete_group(self): method _add_group (line 152) | def _add_group(self, group, send_to_es=False): FILE: corehq/apps/api/tests/internal_resources.py class InternalTestMixin (line 7) | class InternalTestMixin(object): method assert_accessible_via_sessions (line 8) | def assert_accessible_via_sessions(self, url): class InternalFixtureResourceTest (line 19) | class InternalFixtureResourceTest(APIResourceTest, InternalTestMixin): method test_basic (line 23) | def test_basic(self): class InternalLocationResourceTest (line 27) | class InternalLocationResourceTest(APIResourceTest, InternalTestMixin): method test_basic (line 31) | def test_basic(self): FILE: corehq/apps/api/tests/keyset_paginator_tests.py class SequenceQuery (line 9) | class SequenceQuery: method __init__ (line 10) | def __init__(self, seq): method execute (line 13) | def execute(self, limit=None): method get_query_params (line 17) | def get_query_params(cls, form): class KeysetPaginatorTests (line 21) | class KeysetPaginatorTests(SimpleTestCase): method test_returns_all_results_below_page_size (line 23) | def test_returns_all_results_below_page_size(self): method test_page_includes_next_information_when_more_results_are_available (line 30) | def test_page_includes_next_information_when_more_results_are_availabl... method test_page_fetches_all_results_below_limit (line 38) | def test_page_fetches_all_results_below_limit(self): method test_no_next_link_is_generated_when_limit_is_reached (line 46) | def test_no_next_link_is_generated_when_limit_is_reached(self): method test_page_size_is_used_over_limit_when_smaller (line 53) | def test_page_size_is_used_over_limit_when_smaller(self): method test_limit_is_used_over_page_size_when_limit_is_smaller (line 60) | def test_limit_is_used_over_page_size_when_limit_is_smaller(self): method test_limits_larger_than_max_pagesize_are_paged (line 67) | def test_limits_larger_than_max_pagesize_are_paged(self): method test_supports_querydict_request_data (line 75) | def test_supports_querydict_request_data(self): method test_defaults_to_page_size_specified_in_settings (line 83) | def test_defaults_to_page_size_specified_in_settings(self): method test_zero_page_size_returns_all_results (line 91) | def test_zero_page_size_returns_all_results(self): method test_zero_limit_returns_all_results (line 99) | def test_zero_limit_returns_all_results(self): method test_page_size_beyond_maximum_page_size_returns_max (line 107) | def test_page_size_beyond_maximum_page_size_returns_max(self): method test_negative_page_sizes_are_not_supported (line 114) | def test_negative_page_sizes_are_not_supported(self): method test_negative_limits_are_not_supported (line 120) | def test_negative_limits_are_not_supported(self): method test_get_offset_not_implemented (line 126) | def test_get_offset_not_implemented(self): method test_get_slice_not_implemented (line 133) | def test_get_slice_not_implemented(self): method test_get_count_not_implemented (line 140) | def test_get_count_not_implemented(self): method test_get_previous_not_implemented (line 147) | def test_get_previous_not_implemented(self): FILE: corehq/apps/api/tests/lookup_table_resources.py class TestFixtureResource (line 26) | class TestFixtureResource(APIResourceTest): method setUpClass (line 31) | def setUpClass(cls): method test_get_list (line 51) | def test_get_list(self): method test_get_list_for_value (line 63) | def test_get_list_for_value(self): method test_get_list_for_type_id (line 76) | def test_get_list_for_type_id(self): method test_get_list_for_type_tag (line 83) | def test_get_list_for_type_tag(self): method test_get_single (line 90) | def test_get_single(self): method test_dehydrate_fields (line 97) | def test_dehydrate_fields(self): method test_dehydrate_fields_with_version_error (line 106) | def test_dehydrate_fields_with_version_error(self): method _create_data_item (line 124) | def _create_data_item(cls, table, field_map, sort_key): method api_url (line 134) | def api_url(self, **params): method _data_item_json (line 137) | def _data_item_json(self, row): class TestLookupTableResource (line 146) | class TestLookupTableResource(APIResourceTest): method setUp (line 150) | def setUp(self): method _data_type_json (line 160) | def _data_type_json(self): method test_get_list (line 175) | def test_get_list(self): method test_get_single (line 183) | def test_get_single(self): method test_delete (line 190) | def test_delete(self): method test_create (line 205) | def test_create(self): method test_update (line 224) | def test_update(self): method test_update_field_name (line 240) | def test_update_field_name(self): method test_update_fails_with_two_field_names (line 252) | def test_update_fails_with_two_field_names(self): class TestLookupTableItemResourceV06 (line 270) | class TestLookupTableItemResourceV06(APIResourceTest): method setUpClass (line 275) | def setUpClass(cls): method _create_data_item (line 285) | def _create_data_item(self, data_type=None): method _get_data_item_update (line 301) | def _get_data_item_update(self): method _get_data_item_create (line 317) | def _get_data_item_create(self): method test_create (line 330) | def test_create(self): method test_update (line 345) | def test_update(self): method test_create_with_bad_properties (line 360) | def test_create_with_bad_properties(self): method test_update_field_value (line 375) | def test_update_field_value(self): method test_update_fails_with_two_field_values (line 391) | def test_update_fails_with_two_field_values(self): class TestLookupTableItemResourceV05 (line 413) | class TestLookupTableItemResourceV05(TestLookupTableItemResourceV06): method _data_item_json (line 417) | def _data_item_json(self, id_, sort_key): method test_get_list (line 434) | def test_get_list(self): method test_get_single (line 443) | def test_get_single(self): method test_delete (line 451) | def test_delete(self): method test_create (line 458) | def test_create(self): method test_update (line 474) | def test_update(self): class FakeRow (line 495) | class FakeRow: method __init__ (line 496) | def __init__(self): class TestConvertFDT (line 501) | class TestConvertFDT(SimpleTestCase): method test_without_cache (line 503) | def test_without_cache(self): method test_missing_table_without_cache (line 508) | def test_missing_table_without_cache(self): method test_cache_miss (line 513) | def test_cache_miss(self): method test_cache_hit (line 520) | def test_cache_hit(self): method test_missing_table_cache_miss (line 527) | def test_missing_table_cache_miss(self): method test_missing_table_cache_hit (line 534) | def test_missing_table_cache_hit(self): method patch_query (line 542) | def patch_query(result=FAKE_TABLE): FILE: corehq/apps/api/tests/test_auth.py class AuthenticationTestBase (line 15) | class AuthenticationTestBase(TestCase): method setUpClass (line 17) | def setUpClass(cls): method tearDownClass (line 35) | def tearDownClass(cls): method _get_request_with_api_key (line 39) | def _get_request_with_api_key(self, domain=None): method _get_request_with_basic_auth (line 43) | def _get_request_with_basic_auth(self, domain=None): method _construct_api_auth_header (line 49) | def _construct_api_auth_header(self, username, api_key): method _construct_basic_auth_header (line 52) | def _construct_basic_auth_header(self, username, password): method _get_request (line 57) | def _get_request(self, domain=None, **extras): method _get_domain_path (line 64) | def _get_domain_path(self): method assertAuthenticationSuccess (line 67) | def assertAuthenticationSuccess(self, auth_instance, request): method assertAuthenticationFail (line 71) | def assertAuthenticationFail(self, auth_instance, request): class LoginAuthenticationTest (line 82) | class LoginAuthenticationTest(AuthenticationTestBase): method test_login_no_auth (line 84) | def test_login_no_auth(self): method test_login_with_api_key_auth (line 87) | def test_login_with_api_key_auth(self): method test_auth_type_basic (line 92) | def test_auth_type_basic(self): method test_login_with_inactive_api_key (line 95) | def test_login_with_inactive_api_key(self): method test_login_with_expired_api_key (line 108) | def test_login_with_expired_api_key(self): method test_login_with_not_yet_expired_api_key (line 121) | def test_login_with_not_yet_expired_api_key(self): method test_login_with_deactivated_user (line 134) | def test_login_with_deactivated_user(self): method test_basic_auth_with_domain_key (line 146) | def test_basic_auth_with_domain_key(self): method test_basic_auth_with_domain_key_wrong (line 158) | def test_basic_auth_with_domain_key_wrong(self): class LoginAndDomainAuthenticationTest (line 171) | class LoginAndDomainAuthenticationTest(AuthenticationTestBase): method setUpClass (line 174) | def setUpClass(cls): method tearDownClass (line 182) | def tearDownClass(cls): method test_login_no_auth_no_domain (line 186) | def test_login_no_auth_no_domain(self): method test_login_no_auth_with_domain (line 189) | def test_login_no_auth_with_domain(self): method test_login_with_domain (line 192) | def test_login_with_domain(self): method test_login_with_domain_key (line 198) | def test_login_with_domain_key(self): method test_login_with_domain_key_wrong (line 210) | def test_login_with_domain_key_wrong(self): method test_basic_auth_with_domain_key (line 222) | def test_basic_auth_with_domain_key(self): method test_basic_auth_with_domain_key_wrong (line 234) | def test_basic_auth_with_domain_key_wrong(self): method test_login_with_wrong_domain (line 246) | def test_login_with_wrong_domain(self): method test_login_with_domain_deactivated_user (line 252) | def test_login_with_domain_deactivated_user(self): method test_auth_type_basic_no_domain (line 264) | def test_auth_type_basic_no_domain(self): method test_auth_type_basic_with_domain (line 268) | def test_auth_type_basic_with_domain(self): class RequirePermissionAuthenticationTest (line 273) | class RequirePermissionAuthenticationTest(AuthenticationTestBase): method setUpClass (line 277) | def setUpClass(cls): method test_login_no_auth_no_domain (line 298) | def test_login_no_auth_no_domain(self): method test_login_no_auth_with_domain (line 301) | def test_login_no_auth_with_domain(self): method test_login_with_wrong_domain (line 304) | def test_login_with_wrong_domain(self): method test_login_with_domain_no_permissions (line 310) | def test_login_with_domain_no_permissions(self): method test_login_with_domain_admin_default (line 314) | def test_login_with_domain_admin_default(self): method test_domain_admin_with_explicit_roles (line 328) | def test_domain_admin_with_explicit_roles(self): method test_login_with_explicit_permission_default (line 356) | def test_login_with_explicit_permission_default(self): method test_login_with_explicit_permission_and_roles (line 369) | def test_login_with_explicit_permission_and_roles(self): method test_login_with_no_api_access_default (line 397) | def test_login_with_no_api_access_default(self): method test_login_with_wrong_permission (line 410) | def test_login_with_wrong_permission(self): method test_login_with_wrong_permission_explicit_roles (line 423) | def test_login_with_wrong_permission_explicit_roles(self): method test_explicit_role_wrong_domain (line 453) | def test_explicit_role_wrong_domain(self): method test_auth_type_basic (line 488) | def test_auth_type_basic(self): FILE: corehq/apps/api/tests/test_det_export_resource.py function _noop (line 9) | def _noop(*args, **kwargs): class TestDETExportInstanceResource (line 13) | class TestDETExportInstanceResource(APIResourceTest): method setUpClass (line 18) | def setUpClass(cls): method tearDownClass (line 59) | def tearDownClass(cls): method _get_list_objects (line 67) | def _get_list_objects(self): method test_get_list_only_shows_det_exports (line 73) | def test_get_list_only_shows_det_exports(self): method test_get_list_returns_correct_form_export_fields (line 83) | def test_get_list_returns_correct_form_export_fields(self): method test_get_list_returns_correct_case_export_fields (line 98) | def test_get_list_returns_correct_case_export_fields(self): method test_get_detail_for_form_export (line 113) | def test_get_detail_for_form_export(self): method test_get_detail_for_case_export (line 125) | def test_get_detail_for_case_export(self): method test_get_detail_for_hidden_export_returns_404 (line 137) | def test_get_detail_for_hidden_export_returns_404(self): method test_get_list_handles_malformed_exports (line 142) | def test_get_list_handles_malformed_exports(self): FILE: corehq/apps/api/tests/test_es.py class TestESView (line 10) | class TestESView(SimpleTestCase): method test_get_document (line 12) | def test_get_document(self): FILE: corehq/apps/api/tests/test_messaging_event_api.py class BaseMessagingEventResourceTest (line 21) | class BaseMessagingEventResourceTest(APIResourceTest): method _get_detail_endpoint (line 23) | def _get_detail_endpoint(cls, event_id): method _get_list_endpoint (line 28) | def _get_list_endpoint(cls): method _auth_get_resource (line 31) | def _auth_get_resource(self, url): class TestMessagingEventResourceDetail (line 35) | class TestMessagingEventResourceDetail(BaseMessagingEventResourceTest): method test_get_single (line 36) | def test_get_single(self): class TestMessagingEventResource (line 44) | class TestMessagingEventResource(BaseMessagingEventResourceTest): method test_get_list_simple (line 45) | def test_get_list_simple(self): method test_sms_null_date_modified (line 56) | def test_sms_null_date_modified(self): method test_date_last_activity_ordering (line 70) | def test_date_last_activity_ordering(self): method test_domain_filter (line 87) | def test_domain_filter(self): method test_source_filtering (line 94) | def test_source_filtering(self): method test_content_type_filtering (line 109) | def test_content_type_filtering(self): method test_status_filtering_error (line 124) | def test_status_filtering_error(self): method test_error_code_filtering (line 136) | def test_error_code_filtering(self): method test_case_id_filter (line 147) | def test_case_id_filter(self): method test_contact_filter (line 158) | def test_contact_filter(self): method test_email_filter_validation (line 174) | def test_email_filter_validation(self): method test_phone_number_filter_validation (line 179) | def test_phone_number_filter_validation(self): method _check_contact_filtering (line 184) | def _check_contact_filtering(self, key, value, field): method test_case_rule (line 192) | def test_case_rule(self): method test_survey_sms (line 241) | def test_survey_sms(self): method test_email (line 299) | def test_email(self): method test_email_null_date_modified (line 347) | def test_email_null_date_modified(self): method test_cursor (line 364) | def test_cursor(self): method test_cursor_descending_order (line 377) | def test_cursor_descending_order(self): method test_cursor_stuck_in_loop (line 392) | def test_cursor_stuck_in_loop(self): method test_cursor_multiple_matching_dates (line 410) | def test_cursor_multiple_matching_dates(self): method _test_cursor_response (line 430) | def _test_cursor_response(self, expected, previous_content=None, extra... class DateFilteringTestMixin (line 449) | class DateFilteringTestMixin: method test_date_filter_lt (line 452) | def test_date_filter_lt(self): method test_date_filter_lte (line 458) | def test_date_filter_lte(self): method test_date_filter_lte_date (line 464) | def test_date_filter_lte_date(self): method test_date_filter_gt (line 472) | def test_date_filter_gt(self): method test_date_filter_gte (line 478) | def test_date_filter_gte(self): method test_date_filter_gte_date (line 486) | def test_date_filter_gte_date(self): method _check_date_filtering_response (line 492) | def _check_date_filtering_response(self, filters, expected): class TestDateFilter (line 500) | class TestDateFilter(BaseMessagingEventResourceTest, DateFilteringTestMi... method _setup_for_date_filter_test (line 503) | def _setup_for_date_filter_test(self): method _check_date_filtering_response (line 510) | def _check_date_filtering_response(self, filters, expected): class TestDateLastActivityFilter (line 518) | class TestDateLastActivityFilter(BaseMessagingEventResourceTest, DateFil... method test_email_date_last_activity_filtering (line 521) | def test_email_date_last_activity_filtering(self): method test_survey_date_last_activity_filter (line 537) | def test_survey_date_last_activity_filter(self): method _setup_for_date_filter_test (line 561) | def _setup_for_date_filter_test(self): function _create_sms_messages (line 570) | def _create_sms_messages(domain, count, randomize): function _serialized_messaging_event (line 578) | def _serialized_messaging_event(sms): FILE: corehq/apps/api/tests/test_models.py class ESCaseTests (line 6) | class ESCaseTests(SimpleTestCase): method test_handles_no_indices (line 7) | def test_handles_no_indices(self): method test_handles_index_with_doc_type (line 11) | def test_handles_index_with_doc_type(self): FILE: corehq/apps/api/tests/test_ucr_resources.py class TestSimpleReportConfigurationResource (line 39) | class TestSimpleReportConfigurationResource(APIResourceTest): method setUpClass (line 44) | def setUpClass(cls): method test_get_detail (line 109) | def test_get_detail(self): method test_get_list (line 136) | def test_get_list(self): method test_disallowed_methods (line 146) | def test_disallowed_methods(self): method test_auth (line 154) | def test_auth(self): class TestConfigurableReportDataResource (line 166) | class TestConfigurableReportDataResource(APIResourceTest): method _get_list_endpoint (line 171) | def _get_list_endpoint(cls): method single_endpoint (line 174) | def single_endpoint(self, id, get_params=None): method setUp (line 185) | def setUp(self): method setUpClass (line 192) | def setUpClass(cls): method test_fetching_data (line 281) | def test_fetching_data(self): method test_expand_column_infos (line 291) | def test_expand_column_infos(self): method test_page_size (line 319) | def test_page_size(self): method test_page_offset (line 330) | def test_page_offset(self): method test_filtering (line 337) | def test_filtering(self): method test_next_page_url (line 352) | def test_next_page_url(self): method test_auth_capital_username (line 371) | def test_auth_capital_username(self): method test_auth_wrong_password (line 379) | def test_auth_wrong_password(self): method test_auth_wrong_domain (line 387) | def test_auth_wrong_domain(self): method _get_basic_credentials (line 408) | def _get_basic_credentials(username, password): class TestUCRPaginated (line 417) | class TestUCRPaginated(TestCase): method setUpClass (line 419) | def setUpClass(cls): method test_forbidden_when_feature_flag_not_enabled (line 449) | def test_forbidden_when_feature_flag_not_enabled(self): method test_bad_request_when_data_source_id_not_specified (line 455) | def test_bad_request_when_data_source_id_not_specified(self): method test_formatted_response (line 461) | def test_formatted_response(self): method test_next_cursor_created (line 474) | def test_next_cursor_created(self, mock_get_datasource_records): method test_cursor_decoded (line 512) | def test_cursor_decoded(self, mock_get_datasource_records): FILE: corehq/apps/api/tests/test_user_resources.py class TestCommCareUserResource (line 51) | class TestCommCareUserResource(APIResourceTest): method setUpClass (line 59) | def setUpClass(cls): method tearDownClass (line 85) | def tearDownClass(cls): method test_get_list (line 90) | def test_get_list(self): method test_get_single (line 125) | def test_get_single(self): method test_create (line 159) | def test_create(self): method test_create_and_send_confirmation_email (line 209) | def test_create_and_send_confirmation_email(self, mock_send_account_co... method test_create_and_send_confirmation_email_invalid_input (line 228) | def test_create_and_send_confirmation_email_invalid_input(self): method test_create_connect_user_no_password (line 275) | def test_create_connect_user_no_password(self): method test_create_connect_user_with_password (line 295) | def test_create_connect_user_with_password(self): method test_create_connect_user_no_flag (line 315) | def test_create_connect_user_no_flag(self): method test_bad_request_if_username_already_exists (line 326) | def test_bad_request_if_username_already_exists(self): method test_update (line 343) | def test_update(self): method test_update_fails (line 424) | def test_update_fails(self): method test_update_and_send_confirmation_email (line 452) | def test_update_and_send_confirmation_email(self, mock_send_account_co... method test_update_and_send_confirmation_already_confirmed (line 469) | def test_update_and_send_confirmation_already_confirmed(self, mock_sen... method test_update_and_send_confirmation_no_email (line 489) | def test_update_and_send_confirmation_no_email(self, mock_send_account... method test_update_cant_change_account_confirmation (line 506) | def test_update_cant_change_account_confirmation(self): method test_activate_user (line 522) | def test_activate_user(self): method test_deactivate_user (line 538) | def test_deactivate_user(self): method test_cant_deactivate_location_user (line 557) | def test_cant_deactivate_location_user(self): method test_email_password_reset (line 577) | def test_email_password_reset(self, mock_send_password_reset_email): class TestWebUserResource (line 595) | class TestWebUserResource(APIResourceTest): method setUpClass (line 632) | def setUpClass(cls): method _check_user_data (line 660) | def _check_user_data(self, user, json_user): method test_get_list (line 686) | def test_get_list(self): method test_get_single (line 726) | def test_get_single(self): method _delete_user (line 734) | def _delete_user(self, username): method test_update (line 739) | def test_update(self): method _update_and_assert_user (line 807) | def _update_and_assert_user(self, editable_user, update_json, expected... method test_update_tableau_role (line 847) | def test_update_tableau_role(self, mock_create_session, mock_update_ta... method test_activate_user (line 906) | def test_activate_user(self): method test_deactivate_user (line 925) | def test_deactivate_user(self): class FakeUserES (line 942) | class FakeUserES(object): method __init__ (line 944) | def __init__(self): method add_doc (line 948) | def add_doc(self, doc): method make_query (line 951) | def make_query(self, q=None, fields=None, domain=None, start_at=None, ... class TestBulkUserAPI (line 958) | class TestBulkUserAPI(APIResourceTest): method setUpClass (line 963) | def setUpClass(cls): method tearDownClass (line 970) | def tearDownClass(cls): method make_users (line 975) | def make_users(cls): method mock_es_wrapper (line 1000) | def mock_es_wrapper(cls, *args, **kwargs): method list_endpoint (line 1004) | def list_endpoint(self): method test_excluded_field (line 1014) | def test_excluded_field(self): method query (line 1018) | def query(self, **params): method test_paginate (line 1022) | def test_paginate(self): method test_basic (line 1034) | def test_basic(self): class TestIdentityResource (line 1040) | class TestIdentityResource(APIResourceTest): method _get_list_endpoint (line 1045) | def _get_list_endpoint(cls): method test_get_list (line 1051) | def test_get_list(self): class TestUserDomainsResource (line 1062) | class TestUserDomainsResource(TestCase): method setUpClass (line 1065) | def setUpClass(cls): method setUp (line 1074) | def setUp(self) -> None: method test_domain_returned_when_no_filter (line 1080) | def test_domain_returned_when_no_filter(self, _): method test_exception_when_invalid_filter_sent (line 1091) | def test_exception_when_invalid_filter_sent(self, _): method test_domain_returned_when_valid_flag_sent (line 1103) | def test_domain_returned_when_valid_flag_sent(self, *args): method test_domain_not_returned_when_flag_not_enabled (line 1114) | def test_domain_not_returned_when_flag_not_enabled(self, *args): class TestUserDomainsResourcePagination (line 1125) | class TestUserDomainsResourcePagination(TestCase): method test_all_domains_returned_when_more_than_default_page_size (line 1127) | def test_all_domains_returned_when_more_than_default_page_size(self): class TestUserDomainsResourceApiKeyFiltering (line 1144) | class TestUserDomainsResourceApiKeyFiltering(TestCase): method setUpClass (line 1147) | def setUpClass(cls): method _make_bundle (line 1160) | def _make_bundle(self, api_key=None): method test_all_domains_returned_without_api_key (line 1169) | def test_all_domains_returned_without_api_key(self, _): method test_all_domains_returned_with_unrestricted_api_key (line 1175) | def test_all_domains_returned_with_unrestricted_api_key(self, _): method test_only_key_domain_returned_with_domain_scoped_api_key (line 1183) | def test_only_key_domain_returned_with_domain_scoped_api_key(self, _): method test_only_key_domain2_returned_with_domain_scoped_api_key (line 1191) | def test_only_key_domain2_returned_with_domain_scoped_api_key(self, _): class TestCommCareAnalyticsUserResource (line 1199) | class TestCommCareAnalyticsUserResource(APIResourceTest): method test_flag_not_enabled (line 1203) | def test_flag_not_enabled(self): method test_user_roles_returned (line 1208) | def test_user_roles_returned(self): class TestInvitationResource (line 1218) | class TestInvitationResource(APIResourceTest): method setUpClass (line 1223) | def setUpClass(cls): method tearDownClass (line 1250) | def tearDownClass(cls): method test_create (line 1264) | def test_create(self, mock_get_tableau_groups_by_ids, FILE: corehq/apps/api/tests/test_user_updates.py class TestUpdateUserMethods (line 28) | class TestUpdateUserMethods(TestCase): method setUpClass (line 31) | def setUpClass(cls): method setUp (line 42) | def setUp(self) -> None: method test_update_password_without_strong_passwords_succeeds (line 48) | def test_update_password_without_strong_passwords_succeeds(self): method test_update_password_with_strong_passwords_raises_exception (line 54) | def test_update_password_with_strong_passwords_raises_exception(self): method test_update_password_with_strong_passwords_succeeds (line 63) | def test_update_password_with_strong_passwords_succeeds(self): method test_update_email_succeeds (line 69) | def test_update_email_succeeds(self): method test_update_first_name_succeeds (line 74) | def test_update_first_name_succeeds(self): method test_update_last_name_succeeds (line 79) | def test_update_last_name_succeeds(self): method test_update_language_succeeds (line 84) | def test_update_language_succeeds(self): method test_update_default_phone_number_succeeds (line 89) | def test_update_default_phone_number_succeeds(self): method test_update_default_phone_number_preserves_previous_number (line 94) | def test_update_default_phone_number_preserves_previous_number(self): method test_update_default_phone_number_raises_exception_if_not_string (line 99) | def test_update_default_phone_number_raises_exception_if_not_string(se... method test_update_phone_numbers_succeeds (line 106) | def test_update_phone_numbers_succeeds(self): method test_update_phone_numbers_updates_default (line 111) | def test_update_phone_numbers_updates_default(self): method test_update_user_data_succeeds (line 116) | def test_update_user_data_succeeds(self): method test_update_user_data_raises_exception_if_profile_conflict (line 121) | def test_update_user_data_raises_exception_if_profile_conflict(self): method test_profile_not_found (line 127) | def test_profile_not_found(self): method test_validation_error_when_profile_required (line 132) | def test_validation_error_when_profile_required(self): method test_no_validation_error_when_profile_required_and_provided (line 141) | def test_no_validation_error_when_profile_required_and_provided(self): method test_update_groups_succeeds (line 148) | def test_update_groups_succeeds(self): method test_update_groups_fails (line 155) | def test_update_groups_fails(self): method test_update_groups_with_fake_group_id_raises_exception (line 162) | def test_update_groups_with_fake_group_id_raises_exception(self): method test_update_unknown_field_raises_exception (line 166) | def test_update_unknown_field_raises_exception(self): method test_update_user_role_succeeds (line 172) | def test_update_user_role_succeeds(self): method test_update_user_role_raises_exception_if_does_not_exist (line 179) | def test_update_user_role_raises_exception_if_does_not_exist(self): method test_update_user_role_raises_exception_if_ambiguous (line 185) | def test_update_user_role_raises_exception_if_ambiguous(self): method _setup_profile (line 201) | def _setup_profile(self): method test_update_locations_raises_if_primary_location_not_in_location_list (line 221) | def test_update_locations_raises_if_primary_location_not_in_location_l... method test_update_locations_raises_if_any_location_does_not_exist (line 228) | def test_update_locations_raises_if_any_location_does_not_exist(self): method test_update_locations_raises_if_primary_location_not_provided (line 234) | def test_update_locations_raises_if_primary_location_not_provided(self): method test_update_locations_raises_if_locations_not_provided (line 239) | def test_update_locations_raises_if_locations_not_provided(self): method test_update_locations_do_nothing_if_nothing_provided (line 244) | def test_update_locations_do_nothing_if_nothing_provided(self): method test_update_locations_removes_locations_if_empty_string_provided (line 250) | def test_update_locations_removes_locations_if_empty_string_provided(s... method test_update_locations_succeeds (line 256) | def test_update_locations_succeeds(self): class TestUpdateUserMethodsLogChanges (line 264) | class TestUpdateUserMethodsLogChanges(TestCase): method setUpClass (line 267) | def setUpClass(cls): method setUp (line 278) | def setUp(self) -> None: method test_update_password_logs_change (line 295) | def test_update_password_logs_change(self): method test_update_email_logs_change (line 299) | def test_update_email_logs_change(self): method test_update_email_with_no_change_does_not_log_change (line 304) | def test_update_email_with_no_change_does_not_log_change(self): method test_update_first_name_logs_change (line 309) | def test_update_first_name_logs_change(self): method test_update_first_name_does_not_log_no_change (line 315) | def test_update_first_name_does_not_log_no_change(self): method test_update_last_name_logs_change (line 320) | def test_update_last_name_logs_change(self): method test_update_last_name_does_not_log_no_change (line 325) | def test_update_last_name_does_not_log_no_change(self): method test_update_language_logs_change (line 330) | def test_update_language_logs_change(self): method test_update_language_does_not_log_no_change (line 335) | def test_update_language_does_not_log_no_change(self): method test_update_default_phone_number_logs_change (line 340) | def test_update_default_phone_number_logs_change(self): method test_update_default_phone_number_does_not_log_no_change (line 345) | def test_update_default_phone_number_does_not_log_no_change(self): method test_update_phone_numbers_logs_changes (line 350) | def test_update_phone_numbers_logs_changes(self): method test_update_phone_numbers_does_not_log_no_change (line 355) | def test_update_phone_numbers_does_not_log_no_change(self): method test_update_user_data_logs_change (line 362) | def test_update_user_data_logs_change(self): method test_update_user_data_does_not_log_no_change (line 369) | def test_update_user_data_does_not_log_no_change(self): method test_update_groups_logs_change (line 374) | def test_update_groups_logs_change(self): method test_update_groups_does_not_log_no_change (line 381) | def test_update_groups_does_not_log_no_change(self): method test_update_user_role_logs_change (line 389) | def test_update_user_role_logs_change(self): method test_update_user_role_does_not_logs_change (line 396) | def test_update_user_role_does_not_logs_change(self): method test_update_location_logs_change (line 406) | def test_update_location_logs_change(self): method test_update_location_without_include_location_fields_does_not_log_change (line 412) | def test_update_location_without_include_location_fields_does_not_log_... method test_update_location_with_current_locations_does_not_log_change (line 417) | def test_update_location_with_current_locations_does_not_log_change(se... FILE: corehq/apps/api/tests/test_validation.py class TestWebUserResourceValidator (line 17) | class TestWebUserResourceValidator(TestCase): method setUpClass (line 20) | def setUpClass(cls): method tearDownClass (line 48) | def tearDownClass(cls): method setUp (line 52) | def setUp(self): method test_validate_parameters (line 59) | def test_validate_parameters(self): method test_validate_parameters_with_tableau_edit_permission (line 78) | def test_validate_parameters_with_tableau_edit_permission(self, mock_h... method test_validate_parameters_without_tableau_edit_permission (line 83) | def test_validate_parameters_without_tableau_edit_permission(self, moc... method test_validate_parameters_with_profile_permission (line 89) | def test_validate_parameters_with_profile_permission(self, mock_domain... method test_validate_parameters_without_profile_permission (line 93) | def test_validate_parameters_without_profile_permission(self, mock_dom... method test_validate_parameters_with_location_privilege (line 99) | def test_validate_parameters_with_location_privilege(self, mock_domain... method test_validate_parameters_without_location_privilege (line 104) | def test_validate_parameters_without_location_privilege(self, mock_dom... method test_validate_role (line 113) | def test_validate_role(self): method test_validate_profile_with_no_profile_input (line 120) | def test_validate_profile_with_no_profile_input(self): method test_validate_profile_with_conflicting_user_data (line 131) | def test_validate_profile_with_conflicting_user_data(self): method test_validate_email (line 139) | def test_validate_email(self): method test_validate_locations (line 157) | def test_validate_locations(self): FILE: corehq/apps/api/tests/utils.py class FakeFormESView (line 20) | class FakeFormESView(object): method __init__ (line 26) | def __init__(self, wrapper=None): method add_doc (line 31) | def add_doc(self, id, doc): method run_query (line 35) | def run_query(self, query): method count_query (line 48) | def count_query(self, query): method get_document (line 51) | def get_document(self, doc_id): class APIResourceTest (line 62) | class APIResourceTest(TestCase, metaclass=PatchMeta): method setUpClass (line 74) | def setUpClass(cls): method _get_list_endpoint (line 102) | def _get_list_endpoint(cls): method single_endpoint (line 108) | def single_endpoint(self, id): method get_list (line 116) | def get_list(self): method get_detail (line 119) | def get_detail(self, id): method _get_api_key_auth_headers (line 122) | def _get_api_key_auth_headers(self, headers=None, username=None): method _assert_auth_get_resource (line 137) | def _assert_auth_get_resource(self, url, username=None, password=None,... method _assert_auth_post_resource (line 160) | def _assert_auth_post_resource(self, url, post_data, content_type='app... FILE: corehq/apps/api/urls.py class CommCareHqApi (line 113) | class CommCareHqApi(Api): method top_level (line 115) | def top_level(self, request, api_name=None, **kwargs): function versioned_apis (line 119) | def versioned_apis(api_list): function _get_global_api_url_patterns (line 229) | def _get_global_api_url_patterns(resources): FILE: corehq/apps/api/user_updates.py class UserUpdates (line 24) | class UserUpdates(): method __init__ (line 25) | def __init__(self, user, domain, user_change_logger: Optional[UserChan... method _update_user_data (line 30) | def _update_user_data(self, new_user_data): method _update_user_role (line 51) | def _update_user_role(self, role): method _update_location (line 67) | def _update_location(self, location_object): method _validate_locations (line 88) | def _validate_locations(cls, primary_location_id, location_ids): method _remove_all_locations (line 97) | def _remove_all_locations(self): method _update_primary_location (line 106) | def _update_primary_location(self, primary_location_id): method _verify_location_ids (line 113) | def _verify_location_ids(self, location_ids): method _update_assigned_locations (line 122) | def _update_assigned_locations(self, locations, location_ids): method _set_location (line 128) | def _set_location(self, primary_location): method _unset_location (line 131) | def _unset_location(self): method _reset_locations (line 134) | def _reset_locations(self, location_ids): class CommcareUserUpdates (line 138) | class CommcareUserUpdates(UserUpdates): method update (line 140) | def update(self, field, value): method _update_email (line 166) | def _update_email(self, email): method _update_first_name (line 169) | def _update_first_name(self, first_name): method _update_last_name (line 172) | def _update_last_name(self, last_name): method _update_language (line 175) | def _update_language(self, language): method _simple_update (line 178) | def _simple_update(self, key, value): method _update_password (line 184) | def _update_password(self, password): method _update_groups (line 196) | def _update_groups(self, group_ids): method _update_default_phone_number (line 204) | def _update_default_phone_number(self, phone_number): method _update_phone_numbers (line 216) | def _update_phone_numbers(self, phone_numbers): method _log_phone_number_change (line 230) | def _log_phone_number_change(self, new_phone_numbers, old_phone_numbers): method _set_location (line 250) | def _set_location(self, primary_location): method _unset_location (line 253) | def _unset_location(self): method _reset_locations (line 256) | def _reset_locations(self, location_ids): class WebUserUpdates (line 260) | class WebUserUpdates(UserUpdates): method __init__ (line 262) | def __init__(self, user, domain, keys_to_update=None, user_change_logg... method update (line 267) | def update(self, field, value): method tableau_session (line 287) | def tableau_session(self): method _update_tableau_role (line 294) | def _update_tableau_role(self, tableau_role): method _update_tableau_groups (line 297) | def _update_tableau_groups(self, tableau_group_names): method _set_location (line 301) | def _set_location(self, primary_location): method _unset_location (line 304) | def _unset_location(self): method _reset_locations (line 307) | def _reset_locations(self, location_ids): FILE: corehq/apps/api/util.py function get_object_or_not_exist (line 15) | def get_object_or_not_exist(cls, doc_id, domain, additional_doc_types=No... function object_does_not_exist (line 42) | def object_does_not_exist(doc_type, doc_id): function get_obj (line 51) | def get_obj(bundle_or_obj): function form_to_es_form (line 58) | def form_to_es_form(xform_instance, include_attachments=False): function case_to_es_case (line 74) | def case_to_es_case(case): function make_date_filter (line 79) | def make_date_filter(date_filter): function parse_str_to_date (line 96) | def parse_str_to_date(val): function django_date_filter (line 108) | def django_date_filter(field_name, gt=None, gte=None, lt=None, lte=None): function cursor_based_query_for_datasource (line 132) | def cursor_based_query_for_datasource(request_params, datasource_adapter): function get_datasource_records (line 153) | def get_datasource_records(query, adapter): FILE: corehq/apps/api/validation.py class WebUserValidationException (line 31) | class WebUserValidationException(Exception): method __init__ (line 32) | def __init__(self, message): class WebUserResourceSpec (line 37) | class WebUserResourceSpec: method roles_by_name (line 54) | def roles_by_name(self): method profiles_by_name (line 60) | def profiles_by_name(self): method validate_user_access (line 69) | def validate_user_access(self, attribute, email): method validate_email (line 75) | def validate_email(self, attribute, email): method validate_required_email (line 87) | def validate_required_email(self, attribute, email): method validate_required_role (line 92) | def validate_required_role(self, attribute, role): method validate_role (line 99) | def validate_role(self, attribute, role): method validate_locations (line 106) | def validate_locations(self, attribute, primary_location_id): method validate_assigned_locations (line 110) | def validate_assigned_locations(self, attribute, assigned_location_ids): method _validate_locations (line 120) | def _validate_locations(self, assigned_location_ids, primary_location_... method validate_profile (line 132) | def validate_profile(self, attribute, new_or_existing_profile_name): method validate_custom_data (line 142) | def validate_custom_data(self, attribute, new_or_existing_user_data): method _validate_custom_data_against_profile (line 151) | def _validate_custom_data_against_profile(self, new_or_existing_user_d... method validate_tableau_role (line 165) | def validate_tableau_role(self, attribute, value): method validate_tableau_group (line 173) | def validate_tableau_group(self, attribute, tableau_groups): method validate_parameters (line 182) | def validate_parameters(self, attribute, parameters): method _validate_param_permissions (line 195) | def _validate_param_permissions(self, parameters): method _get_invitation_or_editable_user (line 214) | def _get_invitation_or_editable_user(self, username_or_email, domain) ... FILE: corehq/apps/app_execution/admin.py class AppWorkflowAdmin (line 7) | class AppWorkflowAdmin(admin.ModelAdmin): FILE: corehq/apps/app_execution/api.py class BaseFormplayerClient (line 25) | class BaseFormplayerClient: method __init__ (line 28) | def __init__(self, domain, username, user_id, formplayer_url=None): method __enter__ (line 34) | def __enter__(self): method __exit__ (line 37) | def __exit__(self, exc_type, exc_val, exc_tb): method _get_requests_session (line 40) | def _get_requests_session(self): method close (line 43) | def close(self): method make_request (line 47) | def make_request(self, data, endpoint): method _make_request (line 59) | def _make_request(self, endpoint, data_bytes, headers): class LocalUserClient (line 63) | class LocalUserClient(BaseFormplayerClient): method user (line 69) | def user(self): method _get_requests_session (line 72) | def _get_requests_session(self): method close (line 89) | def close(self): method _make_request (line 97) | def _make_request(self, endpoint, data_bytes, headers): class UserPasswordClient (line 116) | class UserPasswordClient(LocalUserClient): method __init__ (line 122) | def __init__(self, domain, username, user_id, password, commcare_url=N... method _get_requests_session (line 127) | def _get_requests_session(self): class HmacAuthClient (line 147) | class HmacAuthClient(BaseFormplayerClient): method _make_request (line 152) | def _make_request(self, endpoint, data_bytes, headers): class ScreenType (line 165) | class ScreenType(str, Enum): class FormplayerSession (line 176) | class FormplayerSession: method __enter__ (line 184) | def __enter__(self): method __exit__ (line 188) | def __exit__(self, exc_type, exc_val, exc_tb): method clone (line 191) | def clone(self): method app_build_id (line 195) | def app_build_id(self): method sync (line 203) | def sync(self): method current_screen (line 210) | def current_screen(self): method request_url (line 213) | def request_url(self, step): method get_session_start_data (line 221) | def get_session_start_data(self): method get_request_data (line 224) | def get_request_data(self, step): method _get_navigation_data (line 230) | def _get_navigation_data(self, step): method _get_form_data (line 248) | def _get_form_data(self, step): method get_base_data (line 256) | def get_base_data(self): method start_session (line 265) | def start_session(self): method execute_step (line 271) | def execute_step(self, step): method augment_data_from_request (line 290) | def augment_data_from_request(self, request_data, fields): method log_step (line 296) | def log_step(self, step, indent=" ", skipped=False): method get_logs (line 327) | def get_logs(self): method log (line 330) | def log(self, message): function execute_workflow (line 334) | def execute_workflow(session: FormplayerSession, workflow): function execute_step (line 345) | def execute_step(session, step): function get_screen_type (line 353) | def get_screen_type(current_data): FILE: corehq/apps/app_execution/apps.py class AppExecutionConfig (line 4) | class AppExecutionConfig(AppConfig): FILE: corehq/apps/app_execution/data_model/base.py class AppWorkflow (line 12) | class AppWorkflow: method __jsonattrs_to_json__ (line 15) | def __jsonattrs_to_json__(self): method __jsonattrs_from_json__ (line 21) | def __jsonattrs_from_json__(cls, data): method __str__ (line 24) | def __str__(self): function steps_from_json (line 28) | def steps_from_json(json_steps): FILE: corehq/apps/app_execution/data_model/expectations.py class Expectation (line 16) | class Expectation: method get_children (line 19) | def get_children(self): method evaluate (line 23) | def evaluate(self, session): method _evaluate (line 30) | def _evaluate(self, session): method to_json (line 33) | def to_json(self): method from_json (line 37) | def from_json(cls, data): class XpathExpectation (line 42) | class XpathExpectation(Expectation): method _evaluate (line 46) | def _evaluate(self, session): method __str__ (line 49) | def __str__(self): class CasePresent (line 54) | class CasePresent(Expectation): method _evaluate (line 58) | def _evaluate(self, session): method __str__ (line 62) | def __str__(self): class CaseAbsent (line 67) | class CaseAbsent(Expectation): method _evaluate (line 71) | def _evaluate(self, session): method __str__ (line 75) | def __str__(self): class QuestionValue (line 80) | class QuestionValue(Expectation): method _evaluate (line 85) | def _evaluate(self, session): method __str__ (line 101) | def __str__(self): function get_question_value_from_tree (line 105) | def get_question_value_from_tree(question_id, tree): function get_question_value_from_xml (line 116) | def get_question_value_from_xml(session, question_id): function _get_question_value_from_json (line 130) | def _get_question_value_from_json(session, question_id, json_response): function _convert_to_zero_index (line 146) | def _convert_to_zero_index(expr): function evaluate_xpath (line 153) | def evaluate_xpath(session, xpath): function _get_data (line 160) | def _get_data(session, xpath): function _get_result (line 175) | def _get_result(session, response): function _get_url (line 193) | def _get_url(screen): function expectation_from_json (line 203) | def expectation_from_json(raw_expectation): FILE: corehq/apps/app_execution/data_model/steps.py class Step (line 13) | class Step: method get_request_data (line 17) | def get_request_data(self, session, data): method get_children (line 20) | def get_children(self): method to_json (line 23) | def to_json(self): method from_json (line 27) | def from_json(cls, data): class CommandStep (line 32) | class CommandStep(Step): method get_request_data (line 39) | def get_request_data(self, session, data): class CommandIdStep (line 50) | class CommandIdStep(Step): method get_request_data (line 57) | def get_request_data(self, session, data): class EntitySelectStep (line 62) | class EntitySelectStep(Step): method get_request_data (line 69) | def get_request_data(self, session, data): method __str__ (line 73) | def __str__(self): class MultipleEntitySelectStep (line 78) | class MultipleEntitySelectStep(Step): method get_request_data (line 84) | def get_request_data(self, session, data): function _validate_entity_ids (line 91) | def _validate_entity_ids(session, entity_ids): class EntitySelectIndexStep (line 101) | class EntitySelectIndexStep(Step): method get_request_data (line 108) | def get_request_data(self, session, data): method __str__ (line 112) | def __str__(self): class MultipleEntitySelectByIndexStep (line 117) | class MultipleEntitySelectByIndexStep(Step): method get_request_data (line 123) | def get_request_data(self, session, data): function _select_entities_by_index (line 130) | def _select_entities_by_index(session, indexes): class QueryInputValidationStep (line 140) | class QueryInputValidationStep(Step): method get_request_data (line 147) | def get_request_data(self, session, data): class QueryStep (line 164) | class QueryStep(Step): method get_children (line 174) | def get_children(self): method get_request_data (line 185) | def get_request_data(self, session, data): method __str__ (line 197) | def __str__(self): class ClearQueryStep (line 202) | class ClearQueryStep(Step): method get_request_data (line 209) | def get_request_data(self, session, data): method __str__ (line 222) | def __str__(self): class AnswerQuestionStep (line 227) | class AnswerQuestionStep(Step): method from_json (line 234) | def from_json(cls, data): method get_request_data (line 238) | def get_request_data(self, session, data): method __str__ (line 244) | def __str__(self): class AnswerQuestionIdStep (line 249) | class AnswerQuestionIdStep(Step): method get_request_data (line 255) | def get_request_data(self, session, data): method __str__ (line 261) | def __str__(self): function _get_answer_data (line 265) | def _get_answer_data(session, node_field_name, node_value, answer): class SubmitFormStep (line 284) | class SubmitFormStep(Step): method get_request_data (line 288) | def get_request_data(self, session, data): class FormStep (line 304) | class FormStep(Step): method to_json (line 309) | def to_json(self): method get_children (line 315) | def get_children(self): method from_json (line 319) | def from_json(cls, data): class RawNavigationStep (line 325) | class RawNavigationStep(Step): method get_request_data (line 331) | def get_request_data(self, session, data): function _append_selection (line 335) | def _append_selection(data, selection): function steps_from_json (line 344) | def steps_from_json(raw_steps): FILE: corehq/apps/app_execution/db_accessors.py function get_avg_duration_data (line 10) | def get_avg_duration_data(domain, start, end, workflow_id=None): function get_status_data (line 56) | def get_status_data(domain, start, end, workflow_id=None): FILE: corehq/apps/app_execution/exceptions.py class AppExecutionError (line 1) | class AppExecutionError(Exception): class FormplayerException (line 5) | class FormplayerException(Exception): class ExpectationFailed (line 9) | class ExpectationFailed(Exception): FILE: corehq/apps/app_execution/forms.py class AppWorkflowConfigForm (line 17) | class AppWorkflowConfigForm(forms.ModelForm): class Meta (line 28) | class Meta: method __init__ (line 44) | def __init__(self, request, *args, **kwargs): method clean_workflow_dsl (line 98) | def clean_workflow_dsl(self): method clean_username (line 107) | def clean_username(self): method clean_app_id (line 120) | def clean_app_id(self): method clean (line 132) | def clean(self): method save (line 138) | def save(self, commit=True): FILE: corehq/apps/app_execution/har_parser.py function parse_har_from_string (line 12) | def parse_har_from_string(har_string): class HarParser (line 16) | class HarParser: method __init__ (line 17) | def __init__(self): method parse (line 25) | def parse(self, har_data): method _extract_navigation_step (line 70) | def _extract_navigation_step(self, request_data): method _get_entity_select_step (line 94) | def _get_entity_select_step(self, request_data): method _get_search_step (line 103) | def _get_search_step(self, request_data): method _get_query_data (line 110) | def _get_query_data(self, request_data): method _extract_form_answer_step (line 115) | def _extract_form_answer_step(self, request_data): method set_form_step (line 123) | def set_form_step(self): method clear_form_step (line 128) | def clear_form_step(self): function _get_last_selection (line 132) | def _get_last_selection(data, cast=None): function is_action (line 140) | def is_action(selection): function is_multi_select (line 144) | def is_multi_select(selection): function get_formplayer_entries (line 148) | def get_formplayer_entries(entries): function _get_formplayer_base_url (line 166) | def _get_formplayer_base_url(url): FILE: corehq/apps/app_execution/management/commands/clean_har_file.py class Command (line 9) | class Command(BaseCommand): method add_arguments (line 15) | def add_arguments(self, parser): method handle (line 20) | def handle(self, har_file, output=None, *args, **options): function _clean_entry (line 39) | def _clean_entry(entry): FILE: corehq/apps/app_execution/migrations/0001_initial.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/app_execution/migrations/0002_alter_appworkflowconfig_unique_together.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/app_execution/migrations/0003_appexecutionlog_updated.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/app_execution/migrations/0004_alter_appworkflowconfig_notification_emails_and_more.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/app_execution/models.py class AppWorkflowManager (line 17) | class AppWorkflowManager(models.Manager): method get_due (line 18) | def get_due(self): class AppWorkflowConfig (line 25) | class AppWorkflowConfig(models.Model): method app_name (line 49) | def app_name(self): method workflow_json (line 54) | def workflow_json(self): method workflow_object_to_json_string (line 58) | def workflow_object_to_json_string(workflow): method get_formplayer_session (line 61) | def get_formplayer_session(self): class AppExecutionLog (line 70) | class AppExecutionLog(models.Model): method duration (line 79) | def duration(self): method __str__ (line 83) | def __str__(self): FILE: corehq/apps/app_execution/static/app_execution/js/workflow_charts.js function getSeries (line 9) | function getSeries(data, includeSeries) { function buildChart (line 24) | function buildChart(yLabel) { function setupTimingChart (line 43) | function setupTimingChart(data, includeSeries) { function setupStatusChart (line 63) | function setupStatusChart(data) { FILE: corehq/apps/app_execution/tasks.py function run_app_workflows (line 16) | def run_app_workflows(): function run_app_workflow (line 22) | def run_app_workflow(config, email_on_error=False): function _email_error (line 47) | def _email_error(config, e, log): function clear_old_logs (line 75) | def clear_old_logs(): FILE: corehq/apps/app_execution/tests/mock_formplayer.py class Screen (line 10) | class Screen: method process_selections (line 14) | def process_selections(self, selections, data): method get_next (line 24) | def get_next(self, selection): method execute (line 27) | def execute(self, data): method get_response_data (line 30) | def get_response_data(self, selections): class Menu (line 35) | class Menu(Screen): method get_response_data (line 36) | def get_response_data(self, selections): class CaseList (line 41) | class CaseList(Screen): method entities (line 45) | def entities(self): method get_response_data (line 48) | def get_response_data(self, selections): method get_next (line 51) | def get_next(self, selection): class CaseSearch (line 57) | class CaseSearch(Screen): method __post_init__ (line 61) | def __post_init__(self): method get_response_data (line 65) | def get_response_data(self, selections): method execute (line 68) | def execute(self, data): method get_next (line 74) | def get_next(self, selection): class Form (line 79) | class Form(Screen): method get_response_data (line 81) | def get_response_data(self, selections): class MockFormplayerClient (line 85) | class MockFormplayerClient(BaseFormplayerClient): method __init__ (line 86) | def __init__(self, app): method _make_request (line 91) | def _make_request(self, endpoint, data_bytes, headers): FILE: corehq/apps/app_execution/tests/response_factory.py function command_response (line 4) | def command_response(selections, commands): function entity_list_response (line 13) | def entity_list_response(selections, entities): function query_response (line 31) | def query_response(selections, query_key, displays): function form_response (line 53) | def form_response(selections, questions): function make_entities (line 76) | def make_entities(case_data): function make_entity (line 80) | def make_entity(case): function make_questions (line 84) | def make_questions(captions, datatype="str"): function make_question (line 91) | def make_question(ix, caption, question_id, answer=None, datatype="str",... FILE: corehq/apps/app_execution/tests/test_dsl.py class TestDsl (line 13) | class TestDsl(SimpleTestCase): method test_map_has_all_steps (line 15) | def test_map_has_all_steps(self): method test_workflow_to_dsl (line 19) | def test_workflow_to_dsl(self): method test_dsl_to_workflow (line 24) | def test_dsl_to_workflow(self): method test_dsl_to_workflow_invalid_step (line 28) | def test_dsl_to_workflow_invalid_step(self): method test_dsl_blank_lines_and_comments (line 34) | def test_dsl_blank_lines_and_comments(self): method test_expectations_in_form (line 48) | def test_expectations_in_form(self): function _get_workflow (line 68) | def _get_workflow(): function _get_dsl (line 74) | def _get_dsl(): FILE: corehq/apps/app_execution/tests/test_execution.py class TestExecution (line 24) | class TestExecution(SimpleTestCase): method test_execution (line 25) | def test_execution(self): FILE: corehq/apps/app_execution/tests/test_expect_xpath.py function test_expect_xpath_true (line 11) | def test_expect_xpath_true(): function test_expect_xpath_false (line 16) | def test_expect_xpath_false(): function _test_expect_xpath (line 21) | def _test_expect_xpath(result): function test_expect_xpath_get_result (line 35) | def test_expect_xpath_get_result(): function test_expect_xpath_get_result_error (line 41) | def test_expect_xpath_get_result_error(): function _raise_log (line 49) | def _raise_log(x): function _collect_log (line 53) | def _collect_log(logs): FILE: corehq/apps/app_execution/tests/test_expectations.py class ExpectationModelTest (line 10) | class ExpectationModelTest(SimpleTestCase): method test_workflow_has_all_step_types (line 12) | def test_workflow_has_all_step_types(self): method test_no_overlap (line 19) | def test_no_overlap(self): method test_to_json (line 23) | def test_to_json(self): method test_from_json (line 27) | def test_from_json(self): function get_workflow_with_all_expectation_steps (line 32) | def get_workflow_with_all_expectation_steps(): function _get_workflow_json (line 41) | def _get_workflow_json(): FILE: corehq/apps/app_execution/tests/test_har_extract.py class TestHarExtraction (line 10) | class TestHarExtraction(SimpleTestCase, TestFileMixin): method test_extraction_reg_form (line 14) | def test_extraction_reg_form(self): method test_extraction_case_list (line 21) | def test_extraction_case_list(self): method test_extraction_combined (line 28) | def test_extraction_combined(self): method test_split_screen_case_search_select (line 41) | def test_split_screen_case_search_select(self): method test_split_screen_case_search_search (line 49) | def test_split_screen_case_search_search(self): method test_search_again (line 59) | def test_search_again(self): method test_case_list_action (line 71) | def test_case_list_action(self): function get_reg_form_steps (line 80) | def get_reg_form_steps(): function get_case_list_steps (line 92) | def get_case_list_steps(): FILE: corehq/apps/app_execution/tests/test_question_value.py function test_get_question_value_from_tree (line 9) | def test_get_question_value_from_tree(): function test_get_question_value_from_tree_not_found (line 22) | def test_get_question_value_from_tree_not_found(): function test_get_question_value_from_xml (line 28) | def test_get_question_value_from_xml(): function test_get_question_value_from_xml_not_found (line 34) | def test_get_question_value_from_xml_not_found(): function test_get_question_value_from_xml_repeat (line 40) | def test_get_question_value_from_xml_repeat(): function _get_session (line 54) | def _get_session(): FILE: corehq/apps/app_execution/tests/test_steps.py class StepModelTest (line 10) | class StepModelTest(SimpleTestCase): method test_workflow_has_all_step_types (line 12) | def test_workflow_has_all_step_types(self): method test_to_json (line 26) | def test_to_json(self): method test_from_json (line 29) | def test_from_json(self): function get_workflow_with_all_steps (line 34) | def get_workflow_with_all_steps(): function _get_workflow_json (line 56) | def _get_workflow_json(): FILE: corehq/apps/app_execution/tests/utils.py function assert_json_dict_equal (line 6) | def assert_json_dict_equal(expected, actual): FILE: corehq/apps/app_execution/views.py function workflow_list (line 26) | def workflow_list(request, domain): function _augment_with_logs (line 44) | def _augment_with_logs(workflows): function delete_workflow (line 57) | def delete_workflow(request, domain, pk): function new_workflow (line 65) | def new_workflow(request, domain): function edit_workflow (line 92) | def edit_workflow(request, domain, pk): function _get_form_from_har (line 116) | def _get_form_from_har(har_data_string, request, instance=None): function run_workflow (line 131) | def run_workflow(request, domain, pk): function _get_context (line 146) | def _get_context(request, title, url, add_parent=False, **kwargs): function workflow_log_list (line 166) | def workflow_log_list(request, domain, pk): function workflow_logs_json (line 186) | def workflow_logs_json(request, domain, pk): function workflow_log (line 225) | def workflow_log(request, domain, pk): FILE: corehq/apps/app_execution/workflow_dsl.py function dsl_to_workflow (line 11) | def dsl_to_workflow(dsl_str): function _line_to_step (line 43) | def _line_to_step(line): function workflow_to_dsl (line 59) | def workflow_to_dsl(workflow): function _steps_to_dsl_lines (line 65) | def _steps_to_dsl_lines(steps, depth=0): function identity (line 80) | def identity(x): class SimpleDsl (line 86) | class SimpleDsl: method to_dsl (line 101) | def to_dsl(self, step): method from_dsl (line 104) | def from_dsl(self, line): class NestedDsl (line 110) | class NestedDsl: method to_dsl (line 115) | def to_dsl(self, step): method from_dsl (line 121) | def from_dsl(self, line): method match_end (line 125) | def match_end(self, line): function _format_kv_pairs (line 129) | def _format_kv_pairs(field_name): function _get_key_value_pairs (line 141) | def _get_key_value_pairs(line): class KeyValueDsl (line 154) | class KeyValueDsl(SimpleDsl): method to_dsl (line 161) | def to_dsl(self, step): method from_dsl (line 165) | def from_dsl(self, line): function join_values (line 170) | def join_values(field_name): function split_values (line 185) | def split_values(field_name, groupdict_field='value', cast=str): function cast_value (line 208) | def cast_value(field_name, cast): FILE: corehq/apps/app_manager/__init__.py class AppManagerAppConfig (line 7) | class AppManagerAppConfig(AppConfig): method ready (line 10) | def ready(self): FILE: corehq/apps/app_manager/add_ons.py class AddOn (line 17) | class AddOn(object): method __init__ (line 18) | def __init__(self, name, description, help_link=None, privilege=None, method has_privilege (line 29) | def has_privilege(self, request): function _uses_case_list_menu_item (line 35) | def _uses_case_list_menu_item(module): function _uses_conditional_form_actions (line 45) | def _uses_conditional_form_actions(form): function _uses_detail_format (line 52) | def _uses_detail_format(module, column_format): function _uses_calculated_property (line 61) | def _uses_calculated_property(module): function _grandfathered (line 72) | def _grandfathered(slug, app): function show (line 211) | def show(slug, request, app, module=None, form=None): function get_dict (line 247) | def get_dict(request, app, module=None, form=None): function get_privileges_dict (line 253) | def get_privileges_dict(request): function get_layout (line 258) | def get_layout(request): function init_app (line 281) | def init_app(request, app): FILE: corehq/apps/app_manager/analytics.py function update_analytics_indexes (line 4) | def update_analytics_indexes(): function get_exports_by_application (line 9) | def get_exports_by_application(domain): FILE: corehq/apps/app_manager/app_schemas/app_case_metadata.py class AppCaseMetadataBuilder (line 33) | class AppCaseMetadataBuilder(object): method __init__ (line 34) | def __init__(self, domain, app): method case_metadata (line 39) | def case_metadata(self): method _build_case_relationships (line 46) | def _build_case_relationships(self): method _add_module_contributions (line 51) | def _add_module_contributions(self): method _add_module_contribution (line 56) | def _add_module_contribution(self, module): method _add_form_contributions (line 68) | def _add_form_contributions(self): method _add_case_property_descriptions (line 76) | def _add_case_property_descriptions(self): class _BaseFormCaseMetadataBuilder (line 83) | class _BaseFormCaseMetadataBuilder(object): method __init__ (line 84) | def __init__(self, meta, form): method add_form_contributions (line 89) | def add_form_contributions(self): method _add_save_to_case_questions (line 92) | def _add_save_to_case_questions(self): method _add_property_save (line 122) | def _add_property_save(self, case_type, name, question_path, condition... method _add_property_load (line 133) | def _add_property_load(self, case_type, name, question_path): class _FormCaseMetadataBuilder (line 143) | class _FormCaseMetadataBuilder(_BaseFormCaseMetadataBuilder): method __init__ (line 144) | def __init__(self, meta, form): method add_form_contributions (line 148) | def add_form_contributions(self): method _add_form_actions (line 153) | def _add_form_actions(self): method _handle_open_case_action (line 170) | def _handle_open_case_action(self, action): method _handle_close_case_action (line 177) | def _handle_close_case_action(self, action): method _handle_update_case_action (line 181) | def _handle_update_case_action(self, action_type, action): method _handle_load_action (line 187) | def _handle_load_action(self, action_type, action): method _handle_subcase_actions (line 192) | def _handle_subcase_actions(self, actions): method _add_load_references (line 206) | def _add_load_references(self): method _parse_case_type (line 213) | def _parse_case_type(self, full_name): class _AdvancedFormCaseMetadataBuilder (line 222) | class _AdvancedFormCaseMetadataBuilder(_BaseFormCaseMetadataBuilder): method add_form_contributions (line 223) | def add_form_contributions(self): method _add_load_update_actions (line 228) | def _add_load_update_actions(self): method _add_open_actions (line 241) | def _add_open_actions(self): class CaseMetaException (line 259) | class CaseMetaException(Exception): class FormQuestionOption (line 263) | class FormQuestionOption(JsonObject): class FormQuestion (line 268) | class FormQuestion(JsonObject): method icon (line 285) | def icon(self): method relative_value (line 292) | def relative_value(self): method option_values (line 300) | def option_values(self): method editable (line 304) | def editable(self): class LoadSaveProperty (line 313) | class LoadSaveProperty(JsonObject): class FormQuestionResponse (line 318) | class FormQuestionResponse(FormQuestion): method get_formatted_response (line 322) | def get_formatted_response(self): class ConditionalFormQuestionResponse (line 332) | class ConditionalFormQuestionResponse(JsonObject): class QuestionList (line 337) | class QuestionList(JsonObject): class ConditionList (line 341) | class ConditionList(JsonObject): class CaseFormMeta (line 345) | class CaseFormMeta(JsonObject): class CaseDetailMeta (line 352) | class CaseDetailMeta(JsonObject): class CaseProperty (line 358) | class CaseProperty(JsonObject): method get_form (line 368) | def get_form(self, form_id): method add_load (line 376) | def add_load(self, form_id, question): method add_save (line 383) | def add_save(self, form_id, question, condition=None): method add_detail (line 390) | def add_detail(self, type_, module_id, header, is_detail_calculation=F... class CaseTypeMeta (line 398) | class CaseTypeMeta(JsonObject): method child_types (line 412) | def child_types(self): method get_property (line 417) | def get_property(self, name, allow_parent=False): method add_opener (line 427) | def add_opener(self, form_id, condition): method add_closer (line 434) | def add_closer(self, form_id, condition): method add_save (line 441) | def add_save(self, form_id, question_path, property_, update_mode): method add_load (line 450) | def add_load(self, form_id, question_path, property_): method get_load_properties (line 459) | def get_load_properties(self, form_id, path): method get_save_properties (line 464) | def get_save_properties(self, form_id, path): class AppCaseMetadata (line 470) | class AppCaseMetadata(JsonObject): method get_load_properties (line 473) | def get_load_properties(self, form_id, path): method get_save_properties (line 482) | def get_save_properties(self, form_id, path): method get_property_list (line 495) | def get_property_list(self, root_case_type, name): method add_property_load (line 516) | def add_property_load(self, root_case_type, name, form_id, question): method add_property_save (line 526) | def add_property_save(self, root_case_type, name, form_id, question, c... method add_property_error (line 536) | def add_property_error(self, case_type, case_property, form_id, message): method add_property_detail (line 544) | def add_property_detail(self, detail_type, root_case_type, module_id, method get_error_property (line 567) | def get_error_property(self, case_type, name): method get_type (line 572) | def get_type(self, name): FILE: corehq/apps/app_manager/app_schemas/case_properties.py function _get_forms (line 19) | def _get_forms(app): function _zip_update (line 31) | def _zip_update(properties_by_case_type, additional_properties_by_case_t... class _CaseTypeEquivalence (line 40) | class _CaseTypeEquivalence(namedtuple('_CaseTypeEquivalence', ['case_typ... class _CaseRelationshipManager (line 57) | class _CaseRelationshipManager(object): method __init__ (line 89) | def __init__(self, parent_type_map, case_types=()): method expand_case_type (line 95) | def expand_case_type(self, case_type): method resolve_expansion (line 98) | def resolve_expansion(self, case_type_ref): method _all_possible_equivalences (line 103) | def _all_possible_equivalences(self): method _case_type_to_expansions (line 163) | def _case_type_to_expansions(self): method _expansion_to_case_types (line 172) | def _expansion_to_case_types(self): function _flatten_case_properties (line 180) | def _flatten_case_properties(case_properties_by_case_type): function _propagate_and_normalize_case_properties (line 193) | def _propagate_and_normalize_case_properties(case_properties_by_case_typ... class ParentCasePropertyBuilder (line 262) | class ParentCasePropertyBuilder(object): method __init__ (line 272) | def __init__(self, domain, apps, defaults=(), include_parent_propertie... method for_app (line 282) | def for_app(cls, app, defaults=(), include_parent_properties=True, method for_domain (line 294) | def for_domain(cls, domain, include_parent_properties=True, exclude_de... method _get_relevant_forms (line 304) | def _get_relevant_forms(self): method _get_all_case_updates (line 310) | def _get_all_case_updates(self): method get_case_relationships_for_case_type (line 317) | def get_case_relationships_for_case_type(self, case_type): method get_case_relationships (line 328) | def get_case_relationships(self): method get_parent_types (line 344) | def get_parent_types(self, case_type): method get_properties (line 361) | def get_properties(self, case_type): method get_properties_by_case_type (line 375) | def get_properties_by_case_type(self): method get_parent_type_map (line 428) | def get_parent_type_map(self, case_types): method get_case_property_map (line 454) | def get_case_property_map(self, case_types): function get_parent_type_map (line 472) | def get_parent_type_map(app): function get_case_properties (line 477) | def get_case_properties(app, case_types, defaults=(), include_parent_pro... function get_all_case_properties (line 489) | def get_all_case_properties(app, exclude_invalid_properties=True): function get_all_case_properties_for_case_type (line 495) | def get_all_case_properties_for_case_type(domain, case_type, exclude_dep... function get_usercase_properties (line 501) | def get_usercase_properties(app): function all_case_properties_by_domain (line 512) | def all_case_properties_by_domain(domain, include_parent_properties=True... function get_per_type_defaults (line 522) | def get_per_type_defaults(domain): function _get_usercase_default_properties (line 540) | def _get_usercase_default_properties(domain): function expire_case_properties_caches (line 548) | def expire_case_properties_caches(domain): FILE: corehq/apps/app_manager/app_schemas/casedb_schema.py function get_casedb_schema (line 15) | def get_casedb_schema(form): function get_registry_schema (line 52) | def get_registry_schema(form): function _get_case_schema_subsets (line 75) | def _get_case_schema_subsets(app, base_case_type, hashtag='#case/', sour... FILE: corehq/apps/app_manager/app_schemas/form_metadata.py class _Change (line 40) | class _Change(JsonObject): class _TranslationChange (line 46) | class _TranslationChange(_Change): class _QuestionDiff (line 51) | class _QuestionDiff(JsonObject): class _FormDiff (line 68) | class _FormDiff(JsonObject): class _ModuleDiff (line 76) | class _ModuleDiff(JsonObject): class _FormMetadataQuestion (line 84) | class _FormMetadataQuestion(FormQuestionResponse): class _FormMetadata (line 91) | class _FormMetadata(JsonObject): class _ModuleMetadata (line 103) | class _ModuleMetadata(JsonObject): class _AppSummaryFormDataGenerator (line 114) | class _AppSummaryFormDataGenerator(object): method __init__ (line 115) | def __init__(self, domain, app, include_shadow_forms=True): method generate (line 128) | def generate(self): method _compile_module (line 131) | def _compile_module(self, module): method _get_pertinent_forms (line 142) | def _get_pertinent_forms(self, module): method _compile_form (line 148) | def _compile_form(self, form): method _sort_questions_by_group (line 166) | def _sort_questions_by_group(self, form): method _get_question (line 182) | def _get_question(self, form_unique_id, question): method _needs_save_to_case_root_node (line 187) | def _needs_save_to_case_root_node(self, question, form_unique_id): method _is_save_to_case (line 194) | def _is_save_to_case(question): method _save_to_case_root_path (line 198) | def _save_to_case_root_path(question): method _save_to_case_root_node (line 201) | def _save_to_case_root_node(self, form_unique_id, question): method _serialized_question (line 224) | def _serialized_question(self, form_unique_id, question): function get_app_summary_formdata (line 234) | def get_app_summary_formdata(domain, app, include_shadow_forms=True): class _AppDiffGenerator (line 240) | class _AppDiffGenerator(object): method __init__ (line 241) | def __init__(self, app1, app2): method _populate_id_caches (line 256) | def _populate_id_caches(self): method _mark_removed_items (line 278) | def _mark_removed_items(self): method _mark_removed_questions (line 295) | def _mark_removed_questions(self, unique_id, questions): method _mark_retained_items (line 301) | def _mark_retained_items(self): method _mark_attribute (line 315) | def _mark_attribute(self, first_item, second_item, attribute): method _is_translatable_property (line 331) | def _is_translatable_property(first_property, second_property): method _mark_forms (line 334) | def _mark_forms(self, second_forms): method _mark_questions (line 346) | def _mark_questions(self, form_id, second_questions): method _mark_question_attributes (line 356) | def _mark_question_attributes(self, first_question, second_question): method _mark_options (line 365) | def _mark_options(self, first_question, second_question): method _mark_case_properties (line 400) | def _mark_case_properties(self, first_question, second_question, attri... method _mark_item_removed (line 419) | def _mark_item_removed(self, item, key): method _mark_item_added (line 431) | def _mark_item_added(self, item, key): method _mark_item_changed (line 443) | def _mark_item_changed(self, first_item, second_item, key): method _set_contains_changes (line 458) | def _set_contains_changes(self, item): function stringify (line 475) | def stringify(value): function get_app_diff (line 479) | def get_app_diff(app1, app2): FILE: corehq/apps/app_manager/app_schemas/session_schema.py function get_session_schema (line 9) | def get_session_schema(form): FILE: corehq/apps/app_manager/app_schemas/tests/test_app_diffs.py class _BaseTestAppDiffs (line 16) | class _BaseTestAppDiffs(object): method setUp (line 17) | def setUp(self): method _add_question (line 28) | def _add_question(self, form, options=None): method _add_question_to_group (line 40) | def _add_question_to_group(self, form, options): class TestAppDiffs (line 50) | class TestAppDiffs(_BaseTestAppDiffs, SimpleTestCase): method setUp (line 52) | def setUp(self): method tearDown (line 58) | def tearDown(self): method test_add_module (line 62) | def test_add_module(self): method test_remove_module (line 68) | def test_remove_module(self): method test_remove_then_add_module (line 74) | def test_remove_then_add_module(self): method test_add_form (line 83) | def test_add_form(self): method test_change_form_name (line 89) | def test_change_form_name(self): method test_change_form_filter (line 95) | def test_change_form_filter(self): method test_remove_form (line 101) | def test_remove_form(self): method test_move_form (line 106) | def test_move_form(self): method test_add_question (line 124) | def test_add_question(self): method test_remove_question (line 129) | def test_remove_question(self): method test_remove_then_add_question (line 134) | def test_remove_then_add_question(self): method test_change_question_label (line 141) | def test_change_question_label(self): method test_change_question_to_be_required (line 148) | def test_change_question_to_be_required(self): method test_change_question_to_be_not_required (line 154) | def test_change_question_to_be_not_required(self): method test_add_question_translation (line 160) | def test_add_question_translation(self): method test_remove_translation (line 169) | def test_remove_translation(self): method test_add_translation (line 178) | def test_add_translation(self): method test_add_question_constraint (line 187) | def test_add_question_constraint(self): method test_change_question_constraint (line 193) | def test_change_question_constraint(self): method test_remove_form_sets_contains_changes (line 200) | def test_remove_form_sets_contains_changes(self): method test_change_question_sets_contains_changes (line 205) | def test_change_question_sets_contains_changes(self): method test_add_question_to_group (line 213) | def test_add_question_to_group(self): method test_remove_question_from_group (line 225) | def test_remove_question_from_group(self): method test_change_question_in_group (line 237) | def test_change_question_in_group(self): class TestAppDiffsWithDB (line 252) | class TestAppDiffsWithDB(_BaseTestAppDiffs, TestCase): method tearDown (line 253) | def tearDown(self): method test_remove_save_property (line 257) | def test_remove_save_property(self): method test_change_save_property (line 269) | def test_change_save_property(self): FILE: corehq/apps/app_manager/app_schemas/tests/test_case_meta.py class CaseMetaTest (line 27) | class CaseMetaTest(SimpleTestCase, TestXmlMixin): method setUp (line 30) | def setUp(self): method tearDown (line 34) | def tearDown(self): method _make_module (line 37) | def _make_module(self, app, module_id, case_type): method _assert_properties (line 49) | def _assert_properties(self, meta, property_set): method get_test_app (line 55) | def get_test_app(self): method test_case_properties (line 113) | def test_case_properties(self): method test_case_properties_advanced (line 129) | def test_case_properties_advanced(self): method test_case_references (line 162) | def test_case_references(self): method test_case_references_advanced (line 186) | def test_case_references_advanced(self): method test_case_references_open_close (line 206) | def test_case_references_open_close(self): method test_non_existant_parent (line 249) | def test_non_existant_parent(self): method test_calculate_conditions_no_errors (line 266) | def test_calculate_conditions_no_errors(self): method test_multiple_parents_case_lists (line 285) | def test_multiple_parents_case_lists(self): method test_non_case_props (line 330) | def test_non_case_props(self): FILE: corehq/apps/app_manager/app_schemas/tests/test_case_properties.py class GetCasePropertiesTest (line 26) | class GetCasePropertiesTest(SimpleTestCase, TestXmlMixin): method assertCaseProperties (line 29) | def assertCaseProperties(self, app, case_type, expected_properties): method test_basic_apps (line 36) | def test_basic_apps(self): method test_case_sharing (line 48) | def test_case_sharing(self): method test_parent_child_properties (line 67) | def test_parent_child_properties(self): method test_scheduler_module (line 108) | def test_scheduler_module(self): method _add_scheduler_to_module (line 140) | def _add_scheduler_to_module(self, module): method _add_scheduler_to_form (line 146) | def _add_scheduler_to_form(self, form, module, form_abreviation): class TestCycle (line 162) | class TestCycle(SimpleTestCase): method test_cycle (line 163) | def test_cycle(self): class DocTests (line 180) | class DocTests(SimpleTestCase): method test_doctests (line 182) | def test_doctests(self): FILE: corehq/apps/app_manager/app_schemas/tests/test_form_metadata.py class TestGetFormData (line 15) | class TestGetFormData(TestCase): method _build_app_with_groups (line 16) | def _build_app_with_groups(self, factory): method test_form_data_with_case_properties (line 39) | def test_form_data_with_case_properties(self): method test_advanced_form_get_action_type (line 59) | def test_advanced_form_get_action_type(self): method test_questions_with_groups (line 73) | def test_questions_with_groups(self): FILE: corehq/apps/app_manager/app_schemas/tests/test_schema.py function combined_patches (line 37) | def combined_patches(fn): class BaseSchemaTest (line 44) | class BaseSchemaTest(SimpleTestCase): method setUp (line 45) | def setUp(self): method assert_has_kv_pairs (line 51) | def assert_has_kv_pairs(self, test_dict, expected_dict): method add_form (line 60) | def add_form(self, case_type=None, case_updates=None): method add_form_app_2 (line 71) | def add_form_app_2(self, case_type=None, case_updates=None): class CaseSchemaTest (line 84) | class CaseSchemaTest(BaseSchemaTest): method test_get_casedb_schema_form_without_cases (line 85) | def test_get_casedb_schema_form_without_cases(self): method test_get_casedb_schema_with_form (line 97) | def test_get_casedb_schema_with_form(self): method test_get_casedb_schema_with_advanced_form (line 116) | def test_get_casedb_schema_with_advanced_form(self): method test_get_casedb_schema_with_related_case_types (line 137) | def test_get_casedb_schema_with_related_case_types(self): method test_get_casedb_schema_with_multiple_parent_case_types (line 153) | def test_get_casedb_schema_with_multiple_parent_case_types(self): method test_get_casedb_schema_with_deep_hierarchy (line 168) | def test_get_casedb_schema_with_deep_hierarchy(self): method test_get_casedb_schema_with_parent_case_property_update (line 191) | def test_get_casedb_schema_with_parent_case_property_update(self): method test_get_casedb_schema_for_child_module (line 208) | def test_get_casedb_schema_for_child_module(self): method test_get_casedb_schema_for_child_module_not_parent_case_type (line 258) | def test_get_casedb_schema_for_child_module_not_parent_case_type(self): method test_get_casedb_schema_for_child_module_same_case_type (line 297) | def test_get_casedb_schema_for_child_module_same_case_type(self): method test_get_case_sharing_hierarchy (line 334) | def test_get_case_sharing_hierarchy(self): method test_get_casedb_schema_with_usercase (line 360) | def test_get_casedb_schema_with_usercase(self): method test_get_casedb_schema_with_form_from_registry (line 386) | def test_get_casedb_schema_with_form_from_registry(self): class SessionSchemaTests (line 400) | class SessionSchemaTests(BaseSchemaTest): method test_get_session_schema_with_advanced_form (line 401) | def test_get_session_schema_with_advanced_form(self): method test_get_session_schema_for_module_with_no_case_type (line 435) | def test_get_session_schema_for_module_with_no_case_type(self): method test_get_session_schema_for_simple_module_with_case (line 446) | def test_get_session_schema_for_simple_module_with_case(self): method test_get_session_schema_for_child_module (line 466) | def test_get_session_schema_for_child_module(self): method test_get_session_schema_for_child_module_not_parent_case_type (line 500) | def test_get_session_schema_for_child_module_not_parent_case_type(self): method test_get_session_schema_for_child_module_same_case_type (line 540) | def test_get_session_schema_for_child_module_same_case_type(self): method test_get_session_schema_with_usercase (line 577) | def test_get_session_schema_with_usercase(self): method test_get_session_schema_for_simple_module_with_case_from_registry (line 600) | def test_get_session_schema_for_simple_module_with_case_from_registry(... method test_get_session_schema_for_child_module_with_registry (line 621) | def test_get_session_schema_for_child_module_with_registry(self): class RegistrySchemaTest (line 690) | class RegistrySchemaTest(BaseSchemaTest): method test_get_registry_schema_with_form_from_registry (line 691) | def test_get_registry_schema_with_form_from_registry(self): FILE: corehq/apps/app_manager/app_strings.py function non_empty_only (line 33) | def non_empty_only(dct): function convert_to_two_letter_code (line 37) | def convert_to_two_letter_code(lc): function _get_custom_icon_app_locale_and_value (line 47) | def _get_custom_icon_app_locale_and_value(custom_icon_form, custom_icon_... function _create_custom_app_strings (line 54) | def _create_custom_app_strings(app, lang, for_default=False, build_profi... function _create_module_details_app_strings (line 154) | def _create_module_details_app_strings(module, langs): function _create_icon_audio_app_strings (line 262) | def _create_icon_audio_app_strings( function _create_report_configs_app_strings (line 285) | def _create_report_configs_app_strings(app, module, lang, langs): function _create_case_list_app_strings (line 333) | def _create_case_list_app_strings( function _create_case_search_app_strings (line 364) | def _create_case_search_app_strings( function _create_referral_list_app_strings (line 444) | def _create_referral_list_app_strings(module, langs): function _create_forms_app_strings (line 453) | def _create_forms_app_strings( function _create_case_list_form_app_strings (line 495) | def _create_case_list_form_app_strings( function _create_dependencies_app_strings (line 532) | def _create_dependencies_app_strings(app): function _maybe_add_index (line 545) | def _maybe_add_index(text, app): class AppStringsBase (line 556) | class AppStringsBase(object): method __init__ (line 558) | def __init__(self, load_translations): method get_default_translations (line 562) | def get_default_translations(self, lang, commcare_version): method create_custom_app_strings (line 568) | def create_custom_app_strings(self, app, lang, for_default=False, buil... method create_app_strings (line 575) | def create_app_strings(self, app, lang, for_default=False, build_profi... method app_strings_parts (line 582) | def app_strings_parts(self, app, lang, for_default=False, build_profil... method create_default_app_strings (line 585) | def create_default_app_strings(self, app, build_profile_id=None): class DumpKnownAppStrings (line 656) | class DumpKnownAppStrings(AppStringsBase): method app_strings_parts (line 658) | def app_strings_parts(self, app, lang, for_default=False, build_profil... class SimpleAppStrings (line 666) | class SimpleAppStrings(AppStringsBase): method app_strings_parts (line 668) | def app_strings_parts(self, app, lang, for_default=False, build_profil... class SelectKnownAppStrings (line 674) | class SelectKnownAppStrings(AppStringsBase): method get_app_translation_keys (line 682) | def get_app_translation_keys(self, app): method app_strings_parts (line 685) | def app_strings_parts(self, app, lang, for_default=False, build_profil... FILE: corehq/apps/app_manager/commcare_settings.py function _translate_setting (line 25) | def _translate_setting(setting, prop): function _load_custom_commcare_settings (line 33) | def _load_custom_commcare_settings(): function _load_commcare_settings_layout (line 60) | def _load_commcare_settings_layout(app): function get_custom_commcare_settings (line 109) | def get_custom_commcare_settings(): function get_commcare_settings_layout (line 114) | def get_commcare_settings_layout(app): function get_commcare_settings_lookup (line 122) | def get_commcare_settings_lookup(): function parse_condition_string (line 129) | def parse_condition_string(condition_str): function check_condition (line 143) | def check_condition(app, condition_str): function check_contingent_for_circular_dependency (line 150) | def check_contingent_for_circular_dependency(contingent, yaml_lookup, de... function check_setting_for_circular_dependency (line 161) | def check_setting_for_circular_dependency(setting, yaml_lookup, deps=None): function circular_dependencies (line 169) | def circular_dependencies(settings, yaml_lookup): FILE: corehq/apps/app_manager/dbaccessors.py function domain_has_apps (line 27) | def domain_has_apps(domain): function get_latest_released_app_doc (line 38) | def get_latest_released_app_doc(domain, app_id): function get_latest_released_app (line 53) | def get_latest_released_app(domain, app_id): function get_latest_released_app_versions_by_app_id (line 62) | def get_latest_released_app_versions_by_app_id(domain): function get_latest_released_build_id (line 80) | def get_latest_released_build_id(domain, app_id): function get_latest_released_app_version (line 86) | def get_latest_released_app_version(domain, app_id): function _get_latest_released_build_view_result (line 91) | def _get_latest_released_build_view_result(domain, app_id): function _get_latest_build_view (line 104) | def _get_latest_build_view(domain, app_id, include_docs): function get_latest_build_doc (line 116) | def get_latest_build_doc(domain, app_id): function get_latest_build_id (line 122) | def get_latest_build_id(domain, app_id): function get_latest_build_version (line 128) | def get_latest_build_version(domain, app_id): function get_build_by_version (line 134) | def get_build_by_version(domain, app_id, version, return_doc=False): function get_build_doc_by_version (line 150) | def get_build_doc_by_version(domain, app_id, version): function wrap_app (line 154) | def wrap_app(app_doc, wrap_cls=None): function get_current_app_version (line 161) | def get_current_app_version(domain, app_id): function get_app_doc (line 170) | def get_app_doc(domain, app_id): function get_current_app (line 178) | def get_current_app(domain, app_id): function get_app_cached (line 182) | def get_app_cached(domain, app_id): function get_app (line 204) | def get_app(domain, app_id, wrap_cls=None, latest=False, target=None): function get_apps_in_domain (line 262) | def get_apps_in_domain(domain, include_remote=True): function get_brief_app_docs_in_domain (line 277) | def get_brief_app_docs_in_domain(domain, include_remote=True): function get_brief_apps_in_domain (line 290) | def get_brief_apps_in_domain(domain, include_remote=True): function get_brief_app (line 295) | def get_brief_app(domain, app_id): function get_app_ids_in_domain (line 306) | def get_app_ids_in_domain(domain): function get_build_ids_after_version (line 315) | def get_build_ids_after_version(domain, app_id, version): function get_build_ids (line 332) | def get_build_ids(domain, app_id): function get_built_app_ids_with_submissions_for_app_id (line 348) | def get_built_app_ids_with_submissions_for_app_id(domain, app_id, versio... function get_built_app_ids_with_submissions_for_app_ids_and_versions (line 367) | def get_built_app_ids_with_submissions_for_app_ids_and_versions(domain, ... function get_auto_generated_built_apps (line 383) | def get_auto_generated_built_apps(domain, app_id): function get_latest_app_ids_and_versions (line 398) | def get_latest_app_ids_and_versions(domain, app_id=None): function get_all_apps (line 432) | def get_all_apps(domain): function get_all_built_app_ids_and_versions (line 457) | def get_all_built_app_ids_and_versions(domain, app_id=None): function get_all_built_app_results (line 474) | def get_all_built_app_results(domain, app_id=None): function get_available_versions_for_app (line 489) | def get_available_versions_for_app(domain, app_id): function get_version_build_id (line 498) | def get_version_build_id(domain, app_id, version): function _get_save_to_case_updates (line 505) | def _get_save_to_case_updates(domain): function _get_case_types_from_apps_query (line 515) | def _get_case_types_from_apps_query(domain, is_build=False): function get_case_types_from_apps (line 527) | def get_case_types_from_apps(domain, include_save_to_case_updates=True): function get_case_type_app_module_count (line 541) | def get_case_type_app_module_count(domain): function get_case_types_for_app_build (line 554) | def get_case_types_for_app_build(domain, app_id): function get_app_languages (line 569) | def get_app_languages(domain): function get_case_sharing_apps_in_domain (line 577) | def get_case_sharing_apps_in_domain(domain, exclude_app_id=None): function get_latest_app_meta (line 582) | def get_latest_app_meta(domain, target): FILE: corehq/apps/app_manager/decorators.py function safe_download (line 33) | def safe_download(f): function _get_latest_enabled_build (line 62) | def _get_latest_enabled_build(domain, username, app_id, profile_id, loca... function safe_cached_download (line 80) | def safe_cached_download(f): function no_conflict_require_POST (line 137) | def no_conflict_require_POST(fn): function no_conflict (line 145) | def no_conflict(fn): function avoid_parallel_build_request (line 156) | def avoid_parallel_build_request(fn): function check_access_and_redirect (line 172) | def check_access_and_redirect(func): function _set_build_in_progress_lock (line 211) | def _set_build_in_progress_lock(domain, app_id): function _build_request_cache_key (line 216) | def _build_request_cache_key(domain, app_id): function _release_build_in_progress_lock (line 220) | def _release_build_in_progress_lock(domain, app_id): function _build_request_in_progress (line 225) | def _build_request_in_progress(domain, app_id): FILE: corehq/apps/app_manager/detail_screen.py function get_column_generator (line 29) | def get_column_generator(app, module, detail, column, sort_element=None, function get_class_for_format (line 38) | def get_class_for_format(slug): class register_format_type (line 45) | class register_format_type(object): method __init__ (line 47) | def __init__(self, slug): method __call__ (line 50) | def __call__(self, klass): function get_column_xpath_generator (line 55) | def get_column_xpath_generator(app, module, detail, column): function get_class_for_type (line 60) | def get_class_for_type(slug): class register_type_processor (line 67) | class register_type_processor(object): method __init__ (line 69) | def __init__(self, slug): method __call__ (line 72) | def __call__(self, klass): class BaseXpathGenerator (line 77) | class BaseXpathGenerator(object): method __init__ (line 79) | def __init__(self, app, module, detail, column): method xpath (line 87) | def xpath(self): class FormattedDetailColumn (line 91) | class FormattedDetailColumn(object): method __init__ (line 99) | def __init__(self, app, module, detail, column, sort_element=None, method has_sort_node_for_nodeset_column (line 114) | def has_sort_node_for_nodeset_column(self): method locale_id (line 118) | def locale_id(self): method header (line 124) | def header(self): method variables (line 132) | def variables(self): method template (line 139) | def template(self): method sort_node (line 166) | def sort_node(self): method xpath (line 244) | def xpath(self): method evaluate_template (line 252) | def evaluate_template(self, template): method xpath_function (line 263) | def xpath_function(self): method hidden_header (line 267) | def hidden_header(self): method hidden_template (line 274) | def hidden_template(self): method sort_xpath_function (line 283) | def sort_xpath_function(self): method action (line 287) | def action(self): method alt_text (line 291) | def alt_text(self): method fields (line 295) | def fields(self): method _set_case_list_optimizations (line 333) | def _set_case_list_optimizations(field, optimization): class HideShortHeaderColumn (line 340) | class HideShortHeaderColumn(FormattedDetailColumn): method header (line 343) | def header(self): class HideShortColumn (line 354) | class HideShortColumn(HideShortHeaderColumn): method template_width (line 357) | def template_width(self): class Plain (line 363) | class Plain(FormattedDetailColumn): class Date (line 368) | class Date(FormattedDetailColumn): class TimeAgo (line 374) | class TimeAgo(FormattedDetailColumn): class Image (line 380) | class Image(FormattedDetailColumn): class Distance (line 386) | class Distance(FormattedDetailColumn): class Phone (line 394) | class Phone(FormattedDetailColumn): method template_form (line 397) | def template_form(self): class Enum (line 403) | class Enum(FormattedDetailColumn): method _make_xpath (line 404) | def _make_xpath(self, type): method _xpath_template (line 414) | def _xpath_template(self, type): method _xpath_template_context (line 421) | def _xpath_template_context(self, type): method xpath_function (line 430) | def xpath_function(self): method sort_xpath_function (line 434) | def sort_xpath_function(self): method variables (line 438) | def variables(self): class ConditionalEnum (line 443) | class ConditionalEnum(Enum): method sort_node (line 445) | def sort_node(self): method _xpath_template (line 455) | def _xpath_template(self, type): method _xpath_template_context (line 458) | def _xpath_template_context(self, type): class EnumImage (line 466) | class EnumImage(Enum): method header_width (line 470) | def header_width(self): method template_width (line 474) | def template_width(self): method action (line 493) | def action(self): method _make_alt_text (line 497) | def _make_alt_text(self, type): method alt_text_xpath (line 508) | def alt_text_xpath(self): method alt_text (line 512) | def alt_text(self): method _xpath_template (line 518) | def _xpath_template(self, type): method _xpath_template_context (line 521) | def _xpath_template_context(self, type): class TranslatableEnum (line 529) | class TranslatableEnum(Enum): method sort_node (line 531) | def sort_node(self): method _make_xpath (line 541) | def _make_xpath(self, type): class LateFlag (line 553) | class LateFlag(HideShortHeaderColumn): class Invisible (line 560) | class Invisible(HideShortColumn): method header (line 563) | def header(self): method locale_id (line 579) | def locale_id(self): class Filter (line 586) | class Filter(HideShortColumn): method fields (line 589) | def fields(self): class Markdown (line 594) | class Markdown(FormattedDetailColumn): method template_form (line 597) | def template_form(self): class Address (line 602) | class Address(HideShortColumn): class AddressPopup (line 607) | class AddressPopup(HideShortColumn): class GeoBoundary (line 612) | class GeoBoundary(HideShortColumn): class GeoBoundaryColor (line 617) | class GeoBoundaryColor(HideShortColumn): class GeoPoints (line 622) | class GeoPoints(HideShortColumn): class GeoPointsColors (line 627) | class GeoPointsColors(HideShortColumn): class Picture (line 632) | class Picture(FormattedDetailColumn): class ClickableIcon (line 637) | class ClickableIcon(EnumImage): class Audio (line 642) | class Audio(FormattedDetailColumn): class Graph (line 647) | class Graph(FormattedDetailColumn): method template (line 651) | def template(self): class AttachmentXpathGenerator (line 683) | class AttachmentXpathGenerator(BaseXpathGenerator): method xpath (line 686) | def xpath(self): class PropertyXpathGenerator (line 691) | class PropertyXpathGenerator(BaseXpathGenerator): method xpath (line 694) | def xpath(self): method owner_name (line 723) | def owner_name(owner_id): class IndicatorXpathGenerator (line 738) | class IndicatorXpathGenerator(BaseXpathGenerator): method xpath (line 741) | def xpath(self): class LocationXpathGenerator (line 748) | class LocationXpathGenerator(BaseXpathGenerator): method xpath (line 751) | def xpath(self): class LedgerXpathGenerator (line 758) | class LedgerXpathGenerator(BaseXpathGenerator): method xpath (line 761) | def xpath(self): class ScheduleXpathGenerator (line 774) | class ScheduleXpathGenerator(BaseXpathGenerator): method xpath (line 777) | def xpath(self): FILE: corehq/apps/app_manager/exceptions.py class AppManagerException (line 5) | class AppManagerException(Exception): class VersioningError (line 9) | class VersioningError(AppManagerException): class ModuleNotFoundException (line 14) | class ModuleNotFoundException(AppManagerException, IndexError): class FormNotFoundException (line 18) | class FormNotFoundException(AppManagerException, IndexError): class IncompatibleFormTypeException (line 22) | class IncompatibleFormTypeException(AppManagerException): class AddOnNotFoundException (line 26) | class AddOnNotFoundException(AppManagerException, IndexError): class AppEditingError (line 30) | class AppEditingError(AppManagerException): class ModuleIdMissingException (line 34) | class ModuleIdMissingException(AppManagerException): class RearrangeError (line 38) | class RearrangeError(AppEditingError): class XFormException (line 42) | class XFormException(AppManagerException): class CaseError (line 46) | class CaseError(XFormException): class ScheduleError (line 50) | class ScheduleError(XFormException): class XFormValidationFailed (line 54) | class XFormValidationFailed(XFormException): class XFormValidationError (line 59) | class XFormValidationError(XFormException): method __init__ (line 61) | def __init__(self, fatal_error, version=APP_V2, validation_problems=No... method __str__ (line 66) | def __str__(self): method format_v1 (line 76) | def format_v1(self, msg): class BindNotFound (line 95) | class BindNotFound(XFormException): class SuiteError (line 99) | class SuiteError(AppManagerException): class MediaResourceError (line 103) | class MediaResourceError(SuiteError): class ResourceOverrideError (line 107) | class ResourceOverrideError(SuiteError): class ParentModuleReferenceError (line 111) | class ParentModuleReferenceError(SuiteError): class SuiteValidationError (line 115) | class SuiteValidationError(SuiteError): class LocationXPathValidationError (line 119) | class LocationXPathValidationError(AppManagerException): class UnknownInstanceError (line 123) | class UnknownInstanceError(SuiteError): class DuplicateInstanceIdError (line 127) | class DuplicateInstanceIdError(SuiteError): class ConfigurableReportException (line 131) | class ConfigurableReportException(AppManagerException): class NoMatchingFilterException (line 135) | class NoMatchingFilterException(ConfigurableReportException): class XPathValidationError (line 139) | class XPathValidationError(SuiteValidationError): method __init__ (line 141) | def __init__(self, *args, **kwargs): class CaseXPathValidationError (line 147) | class CaseXPathValidationError(XPathValidationError): class UsercaseXPathValidationError (line 151) | class UsercaseXPathValidationError(XPathValidationError): class PracticeUserException (line 155) | class PracticeUserException(AppManagerException): method __init__ (line 157) | def __init__(self, *args, **kwargs): class AppLinkError (line 162) | class AppLinkError(AppManagerException): class CaseSearchConfigError (line 166) | class CaseSearchConfigError(AppManagerException): class SavedAppBuildException (line 170) | class SavedAppBuildException(AppManagerException): class MultimediaMissingError (line 174) | class MultimediaMissingError(AppManagerException): class BuildNotFoundException (line 178) | class BuildNotFoundException(AppManagerException): class BuildConflictException (line 182) | class BuildConflictException(Exception): class AppValidationError (line 186) | class AppValidationError(AppManagerException): method __init__ (line 187) | def __init__(self, errors): class DangerousXmlException (line 191) | class DangerousXmlException(Exception): class AppMisconfigurationError (line 195) | class AppMisconfigurationError(AppManagerException): class CaseTileMisconfigurationError (line 199) | class CaseTileMisconfigurationError(AppManagerException): class CannotRestoreException (line 203) | class CannotRestoreException(Exception): class MobileUCRTooLargeException (line 207) | class MobileUCRTooLargeException(CannotRestoreException): method __init__ (line 209) | def __init__(self, message, row_count): class AppInDifferentDomainException (line 214) | class AppInDifferentDomainException(AppManagerException): class FormActionsDiffException (line 222) | class FormActionsDiffException(Exception): method get_user_message (line 226) | def get_user_message(self): class InvalidPropertyException (line 230) | class InvalidPropertyException(FormActionsDiffException): method __init__ (line 233) | def __init__(self, invalid_property): method get_user_message (line 238) | def get_user_message(self): class MissingPropertyMapException (line 242) | class MissingPropertyMapException(FormActionsDiffException): method __init__ (line 245) | def __init__(self, *missing_mappings): method get_user_message (line 250) | def get_user_message(self): method _get_message (line 253) | def _get_message(self, translate=False): class DiffConflictException (line 272) | class DiffConflictException(Exception): method __init__ (line 273) | def __init__(self, *conflicting_mappings): method get_user_message (line 278) | def get_user_message(self): method _get_message (line 281) | def _get_message(self, translate=False): FILE: corehq/apps/app_manager/feature_support.py class CommCareFeatureSupportMixin (line 8) | class CommCareFeatureSupportMixin(object): method _require_minimum_version (line 12) | def _require_minimum_version(self, minimum_version): method enable_multi_sort (line 22) | def enable_multi_sort(self): method enable_multimedia_case_property (line 29) | def enable_multimedia_case_property(self): method enable_relative_suite_path (line 36) | def enable_relative_suite_path(self): method enable_local_resource (line 40) | def enable_local_resource(self): method enable_offline_install (line 53) | def enable_offline_install(self): method enable_auto_gps (line 66) | def enable_auto_gps(self): method enable_group_in_field_list (line 70) | def enable_group_in_field_list(self): method enable_post_form_workflow (line 78) | def enable_post_form_workflow(self): method enable_module_filtering (line 85) | def enable_module_filtering(self): method enable_localized_menu_media (line 92) | def enable_localized_menu_media(self): method enable_case_list_icon_dynamic_width (line 100) | def enable_case_list_icon_dynamic_width(self): method enable_image_resize (line 110) | def enable_image_resize(self): method enable_markdown_in_groups (line 117) | def enable_markdown_in_groups(self): method enable_case_list_sort_blanks (line 124) | def enable_case_list_sort_blanks(self): method supports_practice_users (line 131) | def supports_practice_users(self): method enable_sorted_itemsets (line 138) | def enable_sorted_itemsets(self): method supports_update_prompts (line 145) | def supports_update_prompts(self): method enable_case_search_title_translation (line 152) | def enable_case_search_title_translation(self): method enable_training_modules (line 159) | def enable_training_modules(self): method enable_multi_master (line 163) | def enable_multi_master(self): method enable_search_prompt_appearance (line 170) | def enable_search_prompt_appearance(self): method enable_markdown_tables (line 174) | def enable_markdown_tables(self): method enable_default_value_expression (line 178) | def enable_default_value_expression(self): method supports_session_endpoints (line 185) | def supports_session_endpoints(self): method supports_data_registry (line 192) | def supports_data_registry(self): method supports_empty_case_list_text (line 199) | def supports_empty_case_list_text(self): method supports_select_text (line 206) | def supports_select_text(self): method supports_menu_instances (line 213) | def supports_menu_instances(self): method supports_module_assertions (line 217) | def supports_module_assertions(self): method supports_grouped_case_tiles (line 225) | def supports_grouped_case_tiles(self): method supports_detail_field_action (line 232) | def supports_detail_field_action(self): method supports_grouped_case_search_properties (line 239) | def supports_grouped_case_search_properties(self): method supports_alt_text (line 245) | def supports_alt_text(self): method supports_case_list_optimizations (line 254) | def supports_case_list_optimizations(self): method support_document_upload (line 261) | def support_document_upload(self): FILE: corehq/apps/app_manager/fields.py class ApplicationDataSourceUIHelper (line 48) | class ApplicationDataSourceUIHelper(object): method __init__ (line 79) | def __init__(self, enable_raw=False, enable_registry=False, registry_p... method bootstrap (line 108) | def bootstrap(self, domain): method get_fields (line 192) | def get_fields(self): method get_crispy_filed_help_texts (line 200) | def get_crispy_filed_help_texts(self): method get_crispy_fields (line 211) | def get_crispy_fields(self): method get_app_source (line 218) | def get_app_source(self, data_dict): function get_app_sources (line 223) | def get_app_sources(domain): function get_registry_case_sources (line 240) | def get_registry_case_sources(domain): function get_dropdown_options (line 251) | def get_dropdown_options(domain, all_sources, registry_permission_checker): function sort_tuple_field_choices_by_name (line 268) | def sort_tuple_field_choices_by_name(tuple_lists): class ApplicationDataRMIHelper (line 272) | class ApplicationDataRMIHelper(object): method __init__ (line 287) | def __init__(self, domain, project, user, as_dict=True): method _get_unknown_form_possibilities (line 312) | def _get_unknown_form_possibilities(self): method _attach_unknown_suggestions (line 321) | def _attach_unknown_suggestions(self, unknown_forms): method _sort_key_form (line 397) | def _sort_key_form(form): method _all_forms (line 421) | def _all_forms(self): method _no_app_forms (line 445) | def _no_app_forms(self): method _remote_app_forms (line 450) | def _remote_app_forms(self): method _deleted_app_forms (line 455) | def _deleted_app_forms(self): method _available_app_forms (line 461) | def _available_app_forms(self): method _unknown_forms (line 467) | def _unknown_forms(self): method _get_app_type_choices_for_forms (line 470) | def _get_app_type_choices_for_forms(self, as_dict=True): method _get_app_type_choices_for_cases (line 479) | def _get_app_type_choices_for_cases(self, has_unknown_case_types=False): method _get_unique_choices (line 487) | def _get_unique_choices(choices): method _get_applications_by_type (line 498) | def _get_applications_by_type(self, as_dict=True, include_any_app=False): method _map_chosen_by_choice_as_dict (line 534) | def _map_chosen_by_choice_as_dict(chosen_by_choice): method _get_item_name (line 540) | def _get_item_name(item, has_app, app_langs, default_name): method _get_modules_and_forms (line 553) | def _get_modules_and_forms(self, as_dict=True): method get_form_rmi_response (line 612) | def get_form_rmi_response(self): method _get_cases_in_domain (line 629) | def _get_cases_in_domain(self, as_dict=True): method get_case_rmi_response (line 656) | def get_case_rmi_response(self, include_any_app=False): method get_dual_model_rmi_response (line 679) | def get_dual_model_rmi_response(self): function show_outer_spaces (line 685) | def show_outer_spaces(value): FILE: corehq/apps/app_manager/fixtures/mobile_ucr.py function _should_sync (line 46) | def _should_sync(restore_state): function _count_buckets (line 71) | def _count_buckets(): class ReportFixturesProvider (line 84) | class ReportFixturesProvider(FixtureProvider): method __call__ (line 87) | def __call__(self, restore_state): method report_ucr_row_count (line 114) | def report_ucr_row_count(self, row_count, provider_version, domain): method should_sync (line 123) | def should_sync(self, restore_state): function _parse_apps (line 128) | def _parse_apps(restore_state, restore_user): function _get_mobile_ucr_configs (line 144) | def _get_mobile_ucr_configs(apps): function _get_mobile_ucr_configs_cached (line 153) | def _get_mobile_ucr_configs_cached(domain, build_id): function _add_app_info_to_report_config (line 165) | def _add_app_info_to_report_config(report_config, app): class ReportDataCache (line 177) | class ReportDataCache(object): method __init__ (line 178) | def __init__(self, domain, report_configs): method get_data (line 186) | def get_data(self, key, data_source): method load_reports (line 191) | def load_reports(self, subset=None): method get_report_and_datasource (line 204) | def get_report_and_datasource(self, report_id): function _get_report_index_fixture (line 212) | def _get_report_index_fixture(restore_user, oldest_sync_time=None): class BaseReportFixtureProvider (line 220) | class BaseReportFixtureProvider(metaclass=ABCMeta): method __init__ (line 221) | def __init__(self, report_data_cache): method version (line 226) | def version(self): method __call__ (line 230) | def __call__(self, restore_state, restore_user, needed_versions, repor... method report_config_to_fixture (line 234) | def report_config_to_fixture(self, report_config, restore_user): class ReportFixturesProviderV1 (line 240) | class ReportFixturesProviderV1(BaseReportFixtureProvider): method __call__ (line 244) | def __call__(self, restore_state, restore_user, needed_versions, repor... method _empty_v1_fixture (line 264) | def _empty_v1_fixture(self, restore_user): method _v1_fixture (line 267) | def _v1_fixture(self, restore_user, report_configs, fail_hard=False): method report_config_to_fixture (line 292) | def report_config_to_fixture(self, report_config, restore_user): class ReportFixturesProviderV2 (line 322) | class ReportFixturesProviderV2(BaseReportFixtureProvider): method __call__ (line 326) | def __call__(self, restore_state, restore_user, needed_versions, repor... method _get_oldest_sync_time (line 352) | def _get_oldest_sync_time(restore_state, synced_fixtures, purged_fixtu... method _relevant_report_configs (line 371) | def _relevant_report_configs(restore_state, report_configs): method _empty_v2_fixtures (line 418) | def _empty_v2_fixtures(self, report_uuid): method _v2_fixtures (line 422) | def _v2_fixtures(self, restore_state, report_configs): method report_config_to_fixture (line 444) | def report_config_to_fixture(self, report_config, restore_user): method _report_fixture_id (line 484) | def _report_fixture_id(report_uuid): method _report_filter_id (line 488) | def _report_filter_id(report_uuid): function _utcnow (line 492) | def _utcnow(): function _format_last_sync_time (line 496) | def _format_last_sync_time(restore_user, sync_time=None): function generate_rows_and_filters (line 502) | def generate_rows_and_filters( function get_report_element (line 550) | def get_report_element( function _get_filters_elem (line 605) | def _get_filters_elem(defer_filters, filter_options_by_field, couch_user): class MockTotalRowCalculator (line 621) | class MockTotalRowCalculator(object): method update_totals (line 622) | def update_totals(self, row): method get_total_row (line 625) | def get_total_row(self): class IterativeTotalRowCalculator (line 629) | class IterativeTotalRowCalculator(MockTotalRowCalculator): method __init__ (line 630) | def __init__(self, data_source): method update_totals (line 635) | def update_totals(self, row): method get_total_row (line 641) | def get_total_row(self): FILE: corehq/apps/app_manager/forms.py class CopyApplicationForm (line 23) | class CopyApplicationForm(forms.Form): method __init__ (line 53) | def __init__(self, from_domain, app, *args, **kwargs): method clean_domain (line 84) | def clean_domain(self): method clean (line 91) | def clean(self): class PromptUpdateSettingsForm (line 103) | class PromptUpdateSettingsForm(forms.Form): method __init__ (line 141) | def __init__(self, *args, **kwargs): method from_app (line 198) | def from_app(cls, app, request_user): method clean_apk_version (line 209) | def clean_apk_version(self): method clean_app_version (line 221) | def clean_app_version(self): FILE: corehq/apps/app_manager/helpers/validators.py class ApplicationBaseValidator (line 62) | class ApplicationBaseValidator(object): method __init__ (line 63) | def __init__(self, app, *args, **kwargs): method timing_context (line 69) | def timing_context(self): method validate_app (line 72) | def validate_app(self, existing_errors=None): method _validate_fixtures (line 100) | def _validate_fixtures(self): method _validate_intents (line 118) | def _validate_intents(self): method _validate_practice_users (line 149) | def _validate_practice_users(self): class ApplicationValidator (line 168) | class ApplicationValidator(ApplicationBaseValidator): method validate_app (line 170) | def validate_app(self, existing_errors=None): method _check_modules (line 200) | def _check_modules(self): method _check_forms (line 209) | def _check_forms(self): method _has_dependency_cycle (line 225) | def _has_dependency_cycle(self, modules, neighbour_id_fn): method _child_module_errors (line 252) | def _child_module_errors(self, modules_dict): method _check_subscription (line 268) | def _check_subscription(self): class ModuleBaseValidator (line 287) | class ModuleBaseValidator(object): method __init__ (line 288) | def __init__(self, module): method get_module_info (line 292) | def get_module_info(self): method validate_for_build (line 299) | def validate_for_build(self): method validate_with_raise (line 316) | def validate_with_raise(self): method validate_case_list_form (line 355) | def validate_case_list_form(self): method validate_display_only_forms (line 386) | def validate_display_only_forms(self): method validate_parent_select (line 401) | def validate_parent_select(self): method validate_smart_links (line 435) | def validate_smart_links(self): method validate_detail_columns (line 468) | def validate_detail_columns(self, detail): method validate_search_config (line 511) | def validate_search_config(self): method validate_case_list_field_actions (line 559) | def validate_case_list_field_actions(self): class ModuleDetailValidatorMixin (line 575) | class ModuleDetailValidatorMixin(object): method _validate_fields_with_format_duplicate (line 584) | def _validate_fields_with_format_duplicate( method _validate_address_popup_in_long (line 601) | def _validate_address_popup_in_long( method _validate_clickable_icons (line 615) | def _validate_clickable_icons( method validate_details_for_build (line 630) | def validate_details_for_build(self): method get_case_errors (line 719) | def get_case_errors(self, needs_case_type, needs_case_detail, needs_re... method _validate_detail_screen_field (line 746) | def _validate_detail_screen_field(self, field): class ModuleValidator (line 757) | class ModuleValidator(ModuleBaseValidator, ModuleDetailValidatorMixin): method validate_with_raise (line 758) | def validate_with_raise(self): class AdvancedModuleValidator (line 788) | class AdvancedModuleValidator(ModuleBaseValidator): method validate_with_raise (line 789) | def validate_with_raise(self): method get_case_errors (line 862) | def get_case_errors(self, needs_case_type, needs_case_detail, needs_re... class ReportModuleValidator (line 896) | class ReportModuleValidator(ModuleBaseValidator): method validate_with_raise (line 897) | def validate_with_raise(self): method _has_duplicate_instance_ids (line 916) | def _has_duplicate_instance_ids(self): class ShadowModuleValidator (line 927) | class ShadowModuleValidator(ModuleBaseValidator, ModuleDetailValidatorMi... method validate_with_raise (line 928) | def validate_with_raise(self): function load_case_reserved_words (line 940) | def load_case_reserved_words(): function validate_property (line 948) | def validate_property(property, allow_parents=True): class FormBaseValidator (line 968) | class FormBaseValidator(object): method __init__ (line 969) | def __init__(self, form): method error_meta (line 973) | def error_meta(self, module=None): method validate_for_build (line 990) | def validate_for_build(self): method extended_build_validation (line 1048) | def extended_build_validation(self, xml_valid): method validate_for_module (line 1054) | def validate_for_module(self, module): class IndexedFormBaseValidator (line 1108) | class IndexedFormBaseValidator(FormBaseValidator): method timing_context (line 1110) | def timing_context(self): method check_case_properties (line 1113) | def check_case_properties(self, all_names=None, subcase_names=None, ca... method check_paths (line 1135) | def check_paths(self, paths): method check_save_to_case_references (line 1152) | def check_save_to_case_references(self): class FormValidator (line 1165) | class FormValidator(IndexedFormBaseValidator): method check_actions (line 1166) | def check_actions(self): method check_for_conflicting_questions (line 1203) | def check_for_conflicting_questions(self): method _get_property_conflict_error (line 1219) | def _get_property_conflict_error(self, property_name): method extended_build_validation (line 1223) | def extended_build_validation(self, xml_valid): method validate_for_module (line 1231) | def validate_for_module(self, module): class AdvancedFormValidator (line 1254) | class AdvancedFormValidator(IndexedFormBaseValidator): method check_actions (line 1255) | def check_actions(self): method extended_build_validation (line 1365) | def extended_build_validation(self, xml_valid): method validate_for_module (line 1375) | def validate_for_module(self, module): class ShadowFormValidator (line 1387) | class ShadowFormValidator(IndexedFormBaseValidator): method extended_build_validation (line 1389) | def extended_build_validation(self, xml_valid): method check_actions (line 1406) | def check_actions(self): FILE: corehq/apps/app_manager/id_strings.py function _format_to_regex (line 6) | def _format_to_regex(pattern): function _regex_union (line 38) | def _regex_union(regexes): function _clean_field_for_mobile (line 42) | def _clean_field_for_mobile(field): function pattern (line 55) | def pattern(pattern, default=None): function homescreen_title (line 64) | def homescreen_title(): function app_display_name (line 69) | def app_display_name(): function current_language (line 74) | def current_language(): function _case_detail_title_locale (line 79) | def _case_detail_title_locale(): function _referral_detail_title_locale (line 84) | def _referral_detail_title_locale(): function detail_title_locale (line 89) | def detail_title_locale(detail_type): function detail_tab_title_locale (line 97) | def detail_tab_title_locale(module, detail_type, tab): function detail_column_header_locale (line 106) | def detail_column_header_locale(module, detail_type, column): function detail_column_enum_variable (line 121) | def detail_column_enum_variable(module, detail_type, column, key_as_var): function detail_column_alt_text_variable (line 134) | def detail_column_alt_text_variable(module, detail_type, column, key_as_... function graph_configuration (line 147) | def graph_configuration(module, detail_type, column, key): function mobile_ucr_configuration (line 160) | def mobile_ucr_configuration(module, uuid, key): function graph_series_configuration (line 169) | def graph_series_configuration(module, detail_type, column, series_index... function mobile_ucr_series_configuration (line 183) | def mobile_ucr_series_configuration(module, uuid, series_index, key): function graph_annotation (line 193) | def graph_annotation(module, detail_type, column, annotation_index): function mobile_ucr_annotation (line 206) | def mobile_ucr_annotation(module, uuid, annotation_index): function module_locale (line 215) | def module_locale(module): function form_locale (line 220) | def form_locale(form): function training_module_locale (line 225) | def training_module_locale(): function case_list_locale (line 230) | def case_list_locale(module): function case_list_form_locale (line 235) | def case_list_form_locale(module): function callout_header_locale (line 240) | def callout_header_locale(module): function case_search_locale (line 245) | def case_search_locale(module): function case_search_icon_locale (line 250) | def case_search_icon_locale(module): function case_search_audio_locale (line 255) | def case_search_audio_locale(module): function case_search_again_locale (line 260) | def case_search_again_locale(module): function case_search_again_icon_locale (line 265) | def case_search_again_icon_locale(module): function case_search_again_audio_locale (line 270) | def case_search_again_audio_locale(module): function search_command (line 275) | def search_command(module): function search_property_locale (line 280) | def search_property_locale(module, search_prop): function search_property_hint_locale (line 285) | def search_property_hint_locale(module, search_prop): function search_property_required_text (line 290) | def search_property_required_text(module, search_prop): function search_property_validation_text (line 295) | def search_property_validation_text(module, search_prop, index): function custom_assertion_locale (line 300) | def custom_assertion_locale(id, module=None, form=None): function referral_list_locale (line 309) | def referral_list_locale(module): function report_command (line 315) | def report_command(report_id): function report_menu (line 320) | def report_menu(): function report_name_header (line 325) | def report_name_header(): function report_description_header (line 330) | def report_description_header(): function report_data_table (line 335) | def report_data_table(): function report_column_header (line 340) | def report_column_header(report_id, column): function report_name (line 345) | def report_name(report_id): function report_description (line 350) | def report_description(report_id): function report_last_sync (line 355) | def report_last_sync(): function reports_last_updated_on (line 360) | def reports_last_updated_on(): function android_package_name (line 365) | def android_package_name(package_id): function is_custom_app_string (line 372) | def is_custom_app_string(key): function xform_resource (line 378) | def xform_resource(form): function locale_resource (line 382) | def locale_resource(lang): function media_resource (line 386) | def media_resource(multimedia_id, name): function module_icon_locale (line 391) | def module_icon_locale(module): function module_audio_locale (line 396) | def module_audio_locale(module): function module_custom_icon_locale (line 401) | def module_custom_icon_locale(module, icon_form): function form_icon_locale (line 406) | def form_icon_locale(form): function form_audio_locale (line 414) | def form_audio_locale(form): function form_custom_icon_locale (line 422) | def form_custom_icon_locale(form, icon_form): function form_submit_label_locale (line 431) | def form_submit_label_locale(form): function form_submit_notification_label_locale (line 439) | def form_submit_notification_label_locale(form): function case_list_form_icon_locale (line 447) | def case_list_form_icon_locale(module): function case_list_form_audio_locale (line 452) | def case_list_form_audio_locale(module): function case_list_icon_locale (line 457) | def case_list_icon_locale(module): function case_list_audio_locale (line 462) | def case_list_audio_locale(module): function case_search_title_translation (line 467) | def case_search_title_translation(module): function case_search_description_locale (line 472) | def case_search_description_locale(module): function detail (line 476) | def detail(module, detail_type): function persistent_case_context_detail (line 480) | def persistent_case_context_detail(module): function no_items_text_detail (line 485) | def no_items_text_detail(module): function select_text_detail (line 490) | def select_text_detail(module): function fixture_detail (line 494) | def fixture_detail(module): function fixture_session_var (line 498) | def fixture_session_var(module): function menu_id (line 502) | def menu_id(module, suffix=""): function form_command (line 513) | def form_command(form, module=None): function case_list_command (line 519) | def case_list_command(module): function referral_list_command (line 523) | def referral_list_command(module): function indicator_instance (line 528) | def indicator_instance(indicator_set_name): function schedule_fixture (line 532) | def schedule_fixture(module, phase, form): FILE: corehq/apps/app_manager/management/commands/_form_iterator.py class FormIteratorCommandBase (line 12) | class FormIteratorCommandBase(BaseCommand): method add_arguments (line 18) | def add_arguments(self, parser): method handle (line 26) | def handle(self, all, limit, reset, path, batchsize, *args, **kwargs): method process_forms (line 45) | def process_forms(self, all, limit, reset, batchsize): method report_results (line 51) | def report_results(self): method setup_interrupt_handler (line 57) | def setup_interrupt_handler(self): method broadcast (line 64) | def broadcast(self, msg): method get_all_apps (line 69) | def get_all_apps(self, reset=False, batchsize=10): method wrap_app (line 89) | def wrap_app(self, fetched_row): function get_keys_to_search (line 103) | def get_keys_to_search(keys, iterator): function get_remaining_app_count (line 118) | def get_remaining_app_count(db, view_name, keys, modified_start_key): function get_current_apps (line 133) | def get_current_apps(reset=False, batchsize=10): function get_current_apps_iter (line 146) | def get_current_apps_iter(query, batchsize): function get_forms (line 156) | def get_forms(app): FILE: corehq/apps/app_manager/management/commands/add_case_tile_template_field.py class Command (line 6) | class Command(AppMigrationCommandBase): method get_domains (line 17) | def get_domains(self): method migrate_app (line 20) | def migrate_app(self, app): FILE: corehq/apps/app_manager/management/commands/add_resource_overrides.py class Command (line 24) | class Command(BaseCommand): method _add_overrides_for_build (line 30) | def _add_overrides_for_build(self, doc): method _get_xmlns_map (line 83) | def _get_xmlns_map(self, app): method add_arguments (line 89) | def add_arguments(self, parser): method handle (line 117) | def handle(self, domain=None, app_id=None, dry_run=False, ignore_delet... FILE: corehq/apps/app_manager/management/commands/applications_with_add_ons.py class Command (line 12) | class Command(BaseCommand): method add_arguments (line 23) | def add_arguments(self, parser): method _iter_domains (line 29) | def _iter_domains(options): method handle (line 43) | def handle(self, add_on_name, *args, **options): FILE: corehq/apps/app_manager/management/commands/audit_case_search_config.py class Command (line 18) | class Command(BaseCommand): method add_arguments (line 21) | def add_arguments(self, parser): method handle (line 48) | def handle(self, **options): method _handle_property_attribute (line 87) | def _handle_property_attribute(self, domain, app_id, doc, module, attr): method log (line 96) | def log(self, result): FILE: corehq/apps/app_manager/management/commands/audit_form_questions.py class Command (line 13) | class Command(BaseCommand): method add_arguments (line 16) | def add_arguments(self, parser): method visit (line 27) | def visit(self, node, form): method handle (line 40) | def handle(self, attr, domains, **options): FILE: corehq/apps/app_manager/management/commands/benchmark_build_times.py class Command (line 12) | class Command(BaseCommand): method add_arguments (line 14) | def add_arguments(self, parser): method handle (line 28) | def handle(self, domain_app_id_pairs, username, profile, **options): function _code_to_benchmark (line 41) | def _code_to_benchmark(domain, app_id, comment, user_id): function _profile_and_benchmark (line 52) | def _profile_and_benchmark(domain, app_id, comment, user_id): class Timer (line 56) | class Timer(object): method __enter__ (line 58) | def __enter__(self): method __exit__ (line 61) | def __exit__(self, exc_type, exc_value, traceback): FILE: corehq/apps/app_manager/management/commands/benchmark_direct_ccz.py class Command (line 14) | class Command(BaseCommand): method add_arguments (line 16) | def add_arguments(self, parser): method handle (line 29) | def handle(self, domain_app_id_pairs, profile, **options): function _code_to_benchmark (line 37) | def _code_to_benchmark(domain, app_id): function _profile_and_benchmark (line 43) | def _profile_and_benchmark(domain, app_id): FILE: corehq/apps/app_manager/management/commands/check_for_form_entities.py class Command (line 11) | class Command(FormIteratorCommandBase): method __init__ (line 13) | def __init__(self): method process_forms (line 19) | def process_forms(self, all, limit, reset, batchsize): method report_results (line 31) | def report_results(self): function form_contains_entities (line 37) | def form_contains_entities(form): function handle_entity_form (line 53) | def handle_entity_form(form, app, log_file): FILE: corehq/apps/app_manager/management/commands/check_for_xss_attempts.py class Command (line 11) | class Command(FormIteratorCommandBase): method __init__ (line 13) | def __init__(self): method process_forms (line 19) | def process_forms(self, all, limit, reset, batchsize): method report_results (line 32) | def report_results(self): function form_contains_xss_attempt (line 38) | def form_contains_xss_attempt(form): function get_cleaned_value (line 54) | def get_cleaned_value(clean_func, value): function prepare_value (line 64) | def prepare_value(value): function handle_entity_form (line 73) | def handle_entity_form(form, app, value, log_file): FILE: corehq/apps/app_manager/management/commands/delete_case_list_custom_variables_xml.py class Command (line 7) | class Command(AppMigrationCommandBase): method add_arguments (line 16) | def add_arguments(self, parser): method get_domains (line 26) | def get_domains(self): method delete_xml (line 30) | def delete_xml(detail): method serialize (line 37) | def serialize(variables_dict): method recreate_xml (line 45) | def recreate_xml(detail): method migrate_app_impl (line 53) | def migrate_app_impl(app, reverse): method migrate_app (line 70) | def migrate_app(self, app): FILE: corehq/apps/app_manager/management/commands/download_app_forms.py class Command (line 9) | class Command(BaseCommand): method add_arguments (line 15) | def add_arguments(self, parser): method handle (line 19) | def handle(self, app_id, path, **options): FILE: corehq/apps/app_manager/management/commands/fix_app_docs_with_empty_keys.py class Command (line 10) | class Command(BaseCommand): method add_arguments (line 13) | def add_arguments(self, parser): method handle (line 40) | def handle(self, *args, **options): method rollback_changes (line 75) | def rollback_changes(self): method count_total_apps_with_empty_keys (line 108) | def count_total_apps_with_empty_keys(self): method add_back_empty_keys_and_save (line 112) | def add_back_empty_keys_and_save(self, change): method find_docs_with_empty_keys (line 121) | def find_docs_with_empty_keys(self): method write_ids_to_file (line 142) | def write_ids_to_file(self, ids): method fix_documents (line 147) | def fix_documents(self, ids): method log_deleted_keys (line 169) | def log_deleted_keys(self, app_id, path, value): method remove_empty_keys (line 179) | def remove_empty_keys(self, doc, path=None): method has_empty_keys (line 203) | def has_empty_keys(self, doc): FILE: corehq/apps/app_manager/management/commands/fix_broken_blob_references.py class Command (line 9) | class Command(BaseCommand): method add_arguments (line 15) | def add_arguments(self, parser): method handle (line 30) | def handle(self, domain, app_ids, write, **options): method get_app_ids (line 43) | def get_app_ids(self, domain): method fix_app_blobs (line 46) | def fix_app_blobs(self, app, write): function get_form_name (line 84) | def get_form_name(app, blob_name): FILE: corehq/apps/app_manager/management/commands/helpers.py function get_all_app_ids (line 24) | def get_all_app_ids(domain=None, include_builds=False): function get_deleted_app_ids (line 37) | def get_deleted_app_ids(domain=None): class AppMigrationCommandBase (line 47) | class AppMigrationCommandBase(BaseCommand): method add_arguments (line 60) | def add_arguments(self, parser): method handle (line 93) | def handle(self, **options): method is_dry_run (line 125) | def is_dry_run(self): method log_info (line 129) | def log_info(self): method log_debug (line 133) | def log_debug(self): method _doc_types (line 136) | def _doc_types(self): method _migrate_app (line 142) | def _migrate_app(self, app_doc): method increment_app_version (line 154) | def increment_app_version(app_doc): method get_app_ids (line 164) | def get_app_ids(self, domain=None): method get_domains (line 168) | def get_domains(self): method migrate_app (line 171) | def migrate_app(self, app): method check_filenames_set (line 175) | def check_filenames_set(self): method increment_progress (line 179) | def increment_progress(self, domain_list_position): method store_domain_list (line 186) | def store_domain_list(self, domains): method try_to_continue_progress (line 190) | def try_to_continue_progress(self): method remove_storage_files (line 205) | def remove_storage_files(self): method end_migration (line 212) | def end_migration(self): FILE: corehq/apps/app_manager/management/commands/import_app.py class Command (line 12) | class Command(BaseCommand): method add_arguments (line 15) | def add_arguments(self, parser): method _get_required_option (line 62) | def _get_required_option(self, name, options): method handle (line 68) | def handle(self, domain, app_id, **options): FILE: corehq/apps/app_manager/management/commands/migrate_address_popup.py class Command (line 5) | class Command(AppMigrationCommandBase): method add_arguments (line 14) | def add_arguments(self, parser): method get_domains (line 24) | def get_domains(self): method migrate_app_impl (line 28) | def migrate_app_impl(app, reverse): method migrate_app (line 53) | def migrate_app(self, app): FILE: corehq/apps/app_manager/management/commands/migrate_case_list_custom_variables.py class Command (line 7) | class Command(AppMigrationCommandBase): method add_arguments (line 16) | def add_arguments(self, parser): method get_domains (line 26) | def get_domains(self): method parse (line 30) | def parse(xml): method migrate_detail_forward (line 35) | def migrate_detail_forward(detail): method migrate_detail_backward (line 43) | def migrate_detail_backward(detail): method migrate_app_impl (line 50) | def migrate_app_impl(app, reverse): method migrate_app (line 67) | def migrate_app(self, app): FILE: corehq/apps/app_manager/management/commands/overwrite_app.py class Command (line 15) | class Command(BaseCommand): method add_arguments (line 24) | def add_arguments(self, parser): method handle (line 37) | def handle(self, from_domain, from_app_id, to_domain, *args, **options): method report_map (line 62) | def report_map(self): FILE: corehq/apps/app_manager/management/commands/upload_app_forms.py class Command (line 12) | class Command(BaseCommand): method add_arguments (line 17) | def add_arguments(self, parser): method handle (line 46) | def handle(self, path, app_id, **options): FILE: corehq/apps/app_manager/migrations/0001_linked_app_domain.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0002_latestenabledbuildprofiles.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0003_auto_20190326_0853.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0004_latestenabledbuildprofiles_active.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0005_latestenabledbuildprofiles_domain.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0006_multi_master_linked_apps.py function _populate_linked_app_fields (line 14) | def _populate_linked_app_fields(apps, schema_editor): function _add_fields (line 20) | def _add_fields(app_doc): class Migration (line 27) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0007_add_linked_app_fields_to_es.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0008_remove_uses_master_app_form_ids.py function _pop_deprecated_field (line 14) | def _pop_deprecated_field(apps, schema_editor): function _pop_field (line 20) | def _pop_field(app_doc): class Migration (line 26) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0009_add_sqlglobalappconfig.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0009_resourceoverride.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0010_merge_20191211_1921.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0010_run_add_resource_overrides.py function _add_overrides_for_all_builds (line 8) | def _add_overrides_for_all_builds(apps, schema_editor): class Migration (line 12) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0010_sqlglobalappconfig.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0011_merge_20191212_0106.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0011_merge_20191212_0936.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0012_merge_20191217_0605.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0013_rename_sqlglobalappconfig.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0014_create_exchangeapplication.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0015_alter_exchangeapplication.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0016_alter_exchangeapplication.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0017_migrate_case_search_relevant.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0018_migrate_case_search_labels.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0019_exchangeapplication_required_privileges.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0020_exchangeapplication_allow_blank_privilege.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0021_migrate_case_search_itemset_ids.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0022_migrate_to_conditional_case_update.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0023_applicationreleaselog.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0024_applicationreleaselog_info.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0025_migrate_to_search_filter_flag.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0026_conditional_case_update_deleted_apps.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0027_add_case_tile_template_field.py function _add_case_tile_template_field (line 8) | def _add_case_tile_template_field(apps, schema_editor): class Migration (line 12) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0028_case_list_custom_variable_xml_to_dict.py function _xml_to_dict (line 8) | def _xml_to_dict(apps, schema_editor): function _dict_to_xml (line 13) | def _dict_to_xml(apps, schema_editor): class Migration (line 18) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0029_delete_case_list_custom_variable_xml.py function _delete_xml (line 8) | def _delete_xml(apps, schema_editor): function _recreate_xml (line 13) | def _recreate_xml(apps, schema_editor): class Migration (line 18) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0030_credentialapplication.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/migrations/0031_delete_latestenabledbuildprofiles.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/app_manager/models.py class LabelProperty (line 211) | class LabelProperty(DictProperty): function jsonpath_update (line 215) | def jsonpath_update(datum_context, value): function FormIdProperty (line 227) | def FormIdProperty(*expressions, **kwargs): function _rename_key (line 244) | def _rename_key(dct, old, new): function app_template_dir (line 252) | def app_template_dir(slug): function load_app_template (line 257) | def load_app_template(slug): class IndexedSchema (line 262) | class IndexedSchema(DocumentSchema): method with_id (line 270) | def with_id(self, i, parent): method id (line 276) | def id(self): method __eq__ (line 279) | def __eq__(self, other): class Getter (line 286) | class Getter(object): method __init__ (line 288) | def __init__(self, attr): method __call__ (line 291) | def __call__(self, instance): method __get__ (line 297) | def __get__(self, instance, owner): class FormActionCondition (line 303) | class FormActionCondition(DocumentSchema): method is_active (line 316) | def is_active(self): class UpdateableDocument (line 320) | class UpdateableDocument(DocumentSchema): method update_object (line 321) | def update_object(self, updates): class FormAction (line 332) | class FormAction(UpdateableDocument): method is_active (line 339) | def is_active(self): method get_action_paths (line 343) | def get_action_paths(cls, action): method get_action_properties (line 351) | def get_action_properties(cls, action): class ConditionalCaseUpdate (line 370) | class ConditionalCaseUpdate(DocumentSchema): class UpdateCaseAction (line 378) | class UpdateCaseAction(FormAction): method make_multi (line 386) | def make_multi(self): method _multi_updates (line 400) | def _multi_updates(self): method normalize_update (line 403) | def normalize_update(self): method make_single (line 420) | def make_single(self): method apply_updates (line 436) | def apply_updates(self, updates, diffs, allow_conflicts=True): method _get_non_update_properties (line 451) | def _get_non_update_properties(updates): method get_property_names (line 454) | def get_property_names(self): method apply_diffs_to_mappings (line 464) | def apply_diffs_to_mappings(cls, current_mappings, diffs): method _check_for_duplicate_keys (line 479) | def _check_for_duplicate_keys(diffs): method _apply_additions_to_mappings (line 503) | def _apply_additions_to_mappings(current_mappings, additions): method _apply_deletions_to_mappings (line 520) | def _apply_deletions_to_mappings(current_mappings, deletions): method _apply_updates_to_mappings (line 530) | def _apply_updates_to_mappings(current_mappings, updates): method get_mappings (line 551) | def get_mappings(self): class PreloadAction (line 558) | class PreloadAction(FormAction): method is_active (line 562) | def is_active(self): class UpdateReferralAction (line 566) | class UpdateReferralAction(FormAction): method get_followup_date (line 570) | def get_followup_date(self): class OpenReferralAction (line 578) | class OpenReferralAction(UpdateReferralAction): class OpenCaseAction (line 583) | class OpenCaseAction(FormAction): method apply_updates (line 595) | def apply_updates(self, updates, diffs, allow_conflicts=True): method _get_non_update_properties (line 610) | def _get_non_update_properties(updates): method apply_name_update (line 613) | def apply_name_update(self, diffs): method make_multi (line 622) | def make_multi(self): method make_single (line 632) | def make_single(self): method normalize_name_update (line 646) | def normalize_name_update(self): method has_name_update (line 657) | def has_name_update(self): method _update_has_name (line 663) | def _update_has_name(self, update): method get_mappings (line 666) | def get_mappings(self): function _to_json_sans_doc_type (line 673) | def _to_json_sans_doc_type(obj): class OpenSubCaseAction (line 680) | class OpenSubCaseAction(FormAction, IndexedSchema): method form_element_name (line 694) | def form_element_name(self): class OpenCaseDiff (line 698) | class OpenCaseDiff(DocumentSchema): method convert_to_update_diff (line 703) | def convert_to_update_diff(self): class UpdateCaseDiff (line 711) | class UpdateCaseDiff(DocumentSchema): class FormActionsDiff (line 717) | class FormActionsDiff(DocumentSchema): method from_json (line 722) | def from_json(cls, universal_diff_json, is_registration=False): class FormActions (line 749) | class FormActions(UpdateableDocument): method all_property_names (line 768) | def all_property_names(self): method count_subcases_per_repeat_context (line 778) | def count_subcases_per_repeat_context(self): method with_updates (line 781) | def with_updates(self, updates, diffs, allow_conflicts=True): method make_multi (line 798) | def make_multi(self): method make_single (line 805) | def make_single(self, allow_conflicts=True): method get_mappings (line 818) | def get_mappings(self): class CaseIndex (line 827) | class CaseIndex(DocumentSchema): class AdvancedAction (line 836) | class AdvancedAction(IndexedSchema): method get_paths (line 848) | def get_paths(self): method get_property_names (line 855) | def get_property_names(self): method is_subcase (line 859) | def is_subcase(self): method form_element_name (line 863) | def form_element_name(self): class AutoSelectCase (line 867) | class AutoSelectCase(DocumentSchema): class LoadCaseFromFixture (line 889) | class LoadCaseFromFixture(DocumentSchema): class LoadUpdateAction (line 908) | class LoadUpdateAction(AdvancedAction): method case_indices (line 930) | def case_indices(self): method case_indices (line 935) | def case_indices(self, value): method case_indices (line 944) | def case_indices(self): method get_paths (line 947) | def get_paths(self): method get_property_names (line 954) | def get_property_names(self): method case_session_var (line 960) | def case_session_var(self): class AdvancedOpenCaseAction (line 964) | class AdvancedOpenCaseAction(AdvancedAction): method get_paths (line 971) | def get_paths(self): method case_session_var (line 981) | def case_session_var(self): class ArbitraryDatum (line 985) | class ArbitraryDatum(DocumentSchema): class AdvancedFormActions (line 990) | class AdvancedFormActions(DocumentSchema): method get_all_actions (line 998) | def get_all_actions(self): method get_subcase_actions (line 1001) | def get_subcase_actions(self): method get_open_subcase_actions (line 1004) | def get_open_subcase_actions(self, parent_case_type=None): method get_case_tags (line 1014) | def get_case_tags(self): method get_action_from_tag (line 1018) | def get_action_from_tag(self, tag): method actions_meta_by_tag (line 1022) | def actions_meta_by_tag(self): method actions_meta_by_parent_tag (line 1026) | def actions_meta_by_parent_tag(self): method auto_select_actions (line 1030) | def auto_select_actions(self): method _action_meta (line 1034) | def _action_meta(self): method count_subcases_per_repeat_context (line 1066) | def count_subcases_per_repeat_context(self): class FormSource (line 1070) | class FormSource(object): method __get__ (line 1072) | def __get__(self, form, form_cls): method __set__ (line 1097) | def __set__(self, form, value): class CachedStringProperty (line 1111) | class CachedStringProperty(object): method __init__ (line 1113) | def __init__(self, key): method __get__ (line 1116) | def __get__(self, instance, owner): method __set__ (line 1119) | def __set__(self, instance, value): method get (line 1123) | def get(cls, key): method set (line 1127) | def set(cls, key, value): class ScheduleVisit (line 1131) | class ScheduleVisit(IndexedSchema): method id (line 1147) | def id(self): class FormDatum (line 1153) | class FormDatum(DocumentSchema): class FormLink (line 1158) | class FormLink(DocumentSchema): method get_unique_id (line 1180) | def get_unique_id(self, app): class FormSchedule (line 1198) | class FormSchedule(DocumentSchema): class Assertion (line 1224) | class Assertion(DocumentSchema): method has_text (line 1230) | def has_text(self): class CustomAssertion (line 1234) | class CustomAssertion(Assertion): class CustomInstance (line 1242) | class CustomInstance(DocumentSchema): class CommentMixin (line 1251) | class CommentMixin(DocumentSchema): method short_comment (line 1258) | def short_comment(self): class CaseLoadReference (line 1265) | class CaseLoadReference(DocumentSchema): class CaseSaveReference (line 1283) | class CaseSaveReference(DocumentSchema): class CaseSaveReferenceWithPath (line 1295) | class CaseSaveReferenceWithPath(CaseSaveReference): class CaseReferences (line 1303) | class CaseReferences(DocumentSchema): method validate (line 1318) | def validate(self, required=True): method get_load_references (line 1324) | def get_load_references(self): method get_save_references (line 1331) | def get_save_references(self): class MappingItem (line 1341) | class MappingItem(DocumentSchema): method treat_as_expression (line 1348) | def treat_as_expression(self): method key_as_variable (line 1357) | def key_as_variable(self): method key_as_condition (line 1373) | def key_as_condition(self, property=None): method ref_to_key_variable (line 1383) | def ref_to_key_variable(self, index, sort_or_display): class FormBase (line 1392) | class FormBase(DocumentSchema): method __repr__ (line 1434) | def __repr__(self): method wrap (line 1438) | def wrap(cls, data): method case_references (line 1455) | def case_references(self): method requires_case (line 1458) | def requires_case(self): method get_action_type (line 1461) | def get_action_type(self): method get_validation_cache (line 1464) | def get_validation_cache(self): method set_validation_cache (line 1467) | def set_validation_cache(self, cache): method clear_validation_cache (line 1470) | def clear_validation_cache(self): method validator (line 1474) | def validator(self): method is_allowed_to_be_release_notes_form (line 1477) | def is_allowed_to_be_release_notes_form(self): method uses_cases (line 1492) | def uses_cases(self): method can_edit_in_vellum (line 1500) | def can_edit_in_vellum(self): method case_references (line 1504) | def case_references(self, case_references): method pre_delete_hook (line 1507) | def pre_delete_hook(self): method pre_move_hook (line 1510) | def pre_move_hook(self, from_module, to_module): method wrapped_xform (line 1514) | def wrapped_xform(self): method validate_form (line 1517) | def validate_form(self): method is_a_disabled_release_form (line 1546) | def is_a_disabled_release_form(self): method timing_context (line 1550) | def timing_context(self): method validate_for_build (line 1553) | def validate_for_build(self): method get_unique_id (line 1556) | def get_unique_id(self): method get_app (line 1567) | def get_app(self): method get_version (line 1570) | def get_version(self): method add_stuff_to_xform (line 1573) | def add_stuff_to_xform(self, xform, build_profile_id=None): method render_xform (line 1584) | def render_xform(self, build_profile_id=None): method cached_get_questions (line 1589) | def cached_get_questions(self): method get_questions (line 1601) | def get_questions(self, langs, include_triggers=False, method get_case_property_name_formatter (line 1615) | def get_case_property_name_formatter(self): method rename_lang (line 1636) | def rename_lang(self, old_lang, new_lang): method rename_xform_language (line 1643) | def rename_xform_language(self, old_code, new_code): method default_name (line 1649) | def default_name(self): method full_path_name (line 1657) | def full_path_name(self): method has_fixtures (line 1665) | def has_fixtures(self): method get_auto_gps_capture (line 1668) | def get_auto_gps_capture(self): method is_registration_form (line 1675) | def is_registration_form(self, case_type=None): method is_auto_submitting_form (line 1683) | def is_auto_submitting_form(self, case_type=None): method uses_usercase (line 1699) | def uses_usercase(self): method case_list_modules (line 1704) | def case_list_modules(self): method is_case_list_form (line 1711) | def is_case_list_form(self): method get_save_to_case_updates (line 1714) | def get_save_to_case_updates(self): method get_submit_label (line 1724) | def get_submit_label(self, lang): method get_submit_notification_label (line 1729) | def get_submit_notification_label(self, lang): class IndexedFormBase (line 1735) | class IndexedFormBase(FormBase, IndexedSchema, CommentMixin): method get_app (line 1737) | def get_app(self): method get_module (line 1740) | def get_module(self): method get_case_type (line 1743) | def get_case_type(self): method validator (line 1747) | def validator(self): method get_all_case_updates (line 1750) | def get_all_case_updates(self): method get_case_updates_for_case_type (line 1776) | def get_case_updates_for_case_type(self, case_type): class JRResourceProperty (line 1786) | class JRResourceProperty(StringProperty): method validate (line 1788) | def validate(self, value, required=True): class CustomIcon (line 1795) | class CustomIcon(DocumentSchema): method is_text (line 1808) | def is_text(self): method is_xpath (line 1812) | def is_xpath(self): class NavMenuItemMediaMixin (line 1816) | class NavMenuItemMediaMixin(DocumentSchema): method get_app (line 1835) | def get_app(self): method _get_media_by_language (line 1838) | def _get_media_by_language(self, media_attr, lang, strict=False, build... method default_media_image (line 1872) | def default_media_image(self): method default_media_audio (line 1877) | def default_media_audio(self): method icon_by_language (line 1881) | def icon_by_language(self, lang, strict=False, build_profile_id=None): method audio_by_language (line 1884) | def audio_by_language(self, lang, strict=False, build_profile_id=None): method custom_icon_form_and_text_by_language (line 1887) | def custom_icon_form_and_text_by_language(self, lang): method set_media (line 1894) | def set_media(self, media_attr, lang, media_path): method set_icon (line 1916) | def set_icon(self, lang, icon_path): method set_audio (line 1919) | def set_audio(self, lang, audio_path): method _all_media_paths (line 1922) | def _all_media_paths(self, media_attr, lang=None): method uses_image (line 1931) | def uses_image(self, build_profile_id=None): method uses_audio (line 1936) | def uses_audio(self, build_profile_id=None): method all_image_paths (line 1941) | def all_image_paths(self, lang=None): method all_audio_paths (line 1944) | def all_audio_paths(self, lang=None): method icon_app_string (line 1947) | def icon_app_string(self, lang, for_default=False, build_profile_id=No... method audio_app_string (line 1962) | def audio_app_string(self, lang, for_default=False, build_profile_id=N... method custom_icon (line 1974) | def custom_icon(self): class Form (line 1979) | class Form(IndexedFormBase, FormMediaMixin, NavMenuItemMediaMixin): method add_stuff_to_xform (line 1986) | def add_stuff_to_xform(self, xform, build_profile_id=None): method all_other_forms_require_a_case (line 1990) | def all_other_forms_require_a_case(self): method session_var_for_action (line 1994) | def session_var_for_action(self, action): method _get_active_actions (line 2006) | def _get_active_actions(self, types): method get_action_type (line 2023) | def get_action_type(self): method get_icon_help_text (line 2034) | def get_icon_help_text(self): method active_actions (line 2051) | def active_actions(self): method active_non_preloader_actions (line 2072) | def active_non_preloader_actions(self): method validator (line 2078) | def validator(self): method requires_case (line 2081) | def requires_case(self): method requires_case_type (line 2085) | def requires_case_type(self): method requires_referral (line 2089) | def requires_referral(self): method get_registration_actions (line 2092) | def get_registration_actions(self, case_type): method is_registration_form (line 2109) | def is_registration_form(self, case_type=None): method uses_usercase (line 2113) | def uses_usercase(self): method get_case_updates (line 2116) | def get_case_updates(self): method get_subcase_types (line 2132) | def get_subcase_types(self): method case_references (line 2141) | def case_references(self): method case_references (line 2151) | def case_references(self, refs): method get_all_contributed_subcase_properties (line 2161) | def get_all_contributed_subcase_properties(self): method get_contributed_case_relationships (line 2168) | def get_contributed_case_relationships(self): class GraphAnnotations (line 2182) | class GraphAnnotations(IndexedSchema): class GraphSeries (line 2188) | class GraphSeries(DocumentSchema): class GraphConfiguration (line 2197) | class GraphConfiguration(DocumentSchema): class DetailTab (line 2205) | class DetailTab(IndexedSchema): class DetailColumn (line 2229) | class DetailColumn(IndexedSchema): method enum_dict (line 2276) | def enum_dict(self): method rename_lang (line 2283) | def rename_lang(self, old_lang, new_lang): method field_type (line 2288) | def field_type(self): method field_property (line 2295) | def field_property(self): method from_json (line 2302) | def from_json(cls, data): method invisible (line 2317) | def invisible(self): method supports_optimizations (line 2321) | def supports_optimizations(self): class SortElement (line 2325) | class SortElement(IndexedSchema): method has_display_values (line 2340) | def has_display_values(self): method valid (line 2343) | def valid(self): class CaseListLookupMixin (line 2352) | class CaseListLookupMixin(DocumentSchema): class CaseTileGroupConfig (line 2380) | class CaseTileGroupConfig(DocumentSchema): class Detail (line 2387) | class Detail(IndexedSchema, CaseListLookupMixin): method get_instance_name (line 2438) | def get_instance_name(self, module): method get_tab_spans (line 2447) | def get_tab_spans(self): method get_column (line 2464) | def get_column(self, i): method rename_lang (line 2467) | def rename_lang(self, old_lang, new_lang): method sort_nodeset_columns_for_long_detail (line 2471) | def sort_nodeset_columns_for_long_detail(self): method has_persistent_tile (line 2477) | def has_persistent_tile(self): method overwrite_attrs (line 2483) | def overwrite_attrs(self, src_detail, attrs): class CaseList (line 2507) | class CaseList(IndexedSchema, NavMenuItemMediaMixin): method rename_lang (line 2512) | def rename_lang(self, old_lang, new_lang): method get_app (line 2515) | def get_app(self): class Itemset (line 2519) | class Itemset(DocumentSchema): class CaseSearchProperty (line 2527) | class CaseSearchProperty(DocumentSchema): class DefaultCaseSearchProperty (line 2551) | class DefaultCaseSearchProperty(DocumentSchema): class CaseSearchCustomSortProperty (line 2557) | class CaseSearchCustomSortProperty(DocumentSchema): class BaseCaseSearchLabel (line 2564) | class BaseCaseSearchLabel(NavMenuItemMediaMixin): method get_app (line 2565) | def get_app(self): class CaseSearchLabel (line 2569) | class CaseSearchLabel(BaseCaseSearchLabel): class CaseSearch (line 2573) | class CaseSearch(DocumentSchema): method case_session_var (line 2610) | def case_session_var(self): method get_instance_name (line 2613) | def get_instance_name(self): method get_relevant (line 2619) | def get_relevant(self, case_session_var, multi_select=False): method get_search_title_label (line 2626) | def get_search_title_label(self, app, lang, for_default=False): method overwrite_attrs (line 2632) | def overwrite_attrs(self, src_config, slugs): class ParentSelect (line 2644) | class ParentSelect(DocumentSchema): class FixtureSelect (line 2651) | class FixtureSelect(DocumentSchema): class DetailPair (line 2670) | class DetailPair(DocumentSchema): method wrap (line 2675) | def wrap(cls, data): class ShadowFormEndpoint (line 2682) | class ShadowFormEndpoint(DocumentSchema): method __eq__ (line 2686) | def __eq__(self, other): class CaseListForm (line 2693) | class CaseListForm(NavMenuItemMediaMixin): method rename_lang (line 2702) | def rename_lang(self, old_lang, new_lang): method get_app (line 2705) | def get_app(self): class ModuleBase (line 2709) | class ModuleBase(IndexedSchema, ModuleMediaMixin, NavMenuItemMediaMixin,... method __init__ (line 2725) | def __init__(self, *args, **kwargs): method __repr__ (line 2729) | def __repr__(self): method is_surveys (line 2733) | def is_surveys(self): method assign_references (line 2736) | def assign_references(self): method wrap (line 2747) | def wrap(cls, data): method get_or_create_unique_id (line 2763) | def get_or_create_unique_id(self): method get_suite_forms (line 2779) | def get_suite_forms(self): method get_form (line 2783) | def get_form(self, i): method get_form_index (line 2790) | def get_form_index(self, unique_id): method get_child_modules (line 2798) | def get_child_modules(self): method root_module (line 2805) | def root_module(self): method requires_case_details (line 2810) | def requires_case_details(self): method root_requires_same_case (line 2813) | def root_requires_same_case(self): method get_case_types (line 2818) | def get_case_types(self): method get_app (line 2821) | def get_app(self): method is_multi_select (line 2824) | def is_multi_select(self): method is_auto_select (line 2829) | def is_auto_select(self): method max_select_value (line 2835) | def max_select_value(self): method has_grouped_tiles (line 2838) | def has_grouped_tiles(self): method default_name (line 2845) | def default_name(self, app=None): method rename_lang (line 2853) | def rename_lang(self, old_lang, new_lang): method get_form_by_unique_id (line 2860) | def get_form_by_unique_id(self, unique_id): method validator (line 2866) | def validator(self): method validate_for_build (line 2869) | def validate_for_build(self): method get_subcase_types (line 2873) | def get_subcase_types(self): method get_custom_entries (line 2884) | def get_custom_entries(self): method uses_media (line 2893) | def uses_media(self): method uses_usercase (line 2900) | def uses_usercase(self): method add_insert_form (line 2903) | def add_insert_form(self, from_module, form, index=None, with_source=F... method user_deletable (line 2906) | def user_deletable(self): class ModuleDetailsMixin (line 2928) | class ModuleDetailsMixin(object): method case_list_filter (line 2930) | def case_list_filter(self): method detail_sort_elements (line 2937) | def detail_sort_elements(self): method search_detail (line 2943) | def search_detail(self, short_or_long): method rename_lang (line 2948) | def rename_lang(self, old_lang, new_lang): method get_details (line 2954) | def get_details(self): class Module (line 2968) | class Module(ModuleBase, ModuleDetailsMixin): method new_module (line 2988) | def new_module(cls, name, lang): method new_training_module (line 3011) | def new_training_module(cls, name, lang): method new_form (line 3016) | def new_form(self, name, lang, attachment=Ellipsis): method add_insert_form (line 3030) | def add_insert_form(self, from_module, form, index=None, with_source=F... method validator (line 3056) | def validator(self): method requires (line 3059) | def requires(self): method requires_case_details (line 3071) | def requires_case_details(self): method all_forms_require_a_case (line 3082) | def all_forms_require_a_case(self): method uses_usercase (line 3085) | def uses_usercase(self): method grid_display_style (line 3091) | def grid_display_style(self): method additional_case_types (line 3095) | def additional_case_types(self): class AdvancedForm (line 3099) | class AdvancedForm(IndexedFormBase, FormMediaMixin, NavMenuItemMediaMixin): method pre_delete_hook (line 3106) | def pre_delete_hook(self): method get_action_type (line 3114) | def get_action_type(self): method pre_move_hook (line 3126) | def pre_move_hook(self, from_module, to_module): method add_stuff_to_xform (line 3135) | def add_stuff_to_xform(self, xform, build_profile_id=None): method requires_case (line 3139) | def requires_case(self): method requires (line 3145) | def requires(self): method validator (line 3149) | def validator(self): method is_registration_form (line 3152) | def is_registration_form(self, case_type=None): method get_registration_actions (line 3190) | def get_registration_actions(self, case_type=None): method uses_case_type (line 3205) | def uses_case_type(self, case_type, invert_match=False): method uses_usercase (line 3212) | def uses_usercase(self): method all_other_forms_require_a_case (line 3219) | def all_other_forms_require_a_case(self): method get_module (line 3223) | def get_module(self): method get_phase (line 3226) | def get_phase(self): method disable_schedule (line 3234) | def disable_schedule(self): method get_case_updates (line 3241) | def get_case_updates(self): method get_all_contributed_subcase_properties (line 3261) | def get_all_contributed_subcase_properties(self): method get_contributed_case_relationships (line 3268) | def get_contributed_case_relationships(self): class ShadowForm (line 3280) | class ShadowForm(AdvancedForm): method __init__ (line 3288) | def __init__(self, *args, **kwargs): method shadow_parent_form (line 3293) | def shadow_parent_form(self): method source (line 3306) | def source(self): method get_validation_cache (line 3312) | def get_validation_cache(self): method set_validation_cache (line 3317) | def set_validation_cache(self, cache): method xmlns (line 3322) | def xmlns(self): method actions (line 3329) | def actions(self): method validator (line 3337) | def validator(self): method get_shadow_parent_options (line 3340) | def get_shadow_parent_options(self): method _merge_actions (line 3350) | def _merge_actions(source_actions, extra_actions): class SchedulePhaseForm (line 3383) | class SchedulePhaseForm(IndexedSchema): class SchedulePhase (line 3390) | class SchedulePhase(IndexedSchema): method id (line 3403) | def id(self): method phase_id (line 3409) | def phase_id(self): method get_module (line 3412) | def get_module(self): method get_forms (line 3417) | def get_forms(self): method get_form (line 3422) | def get_form(self, desired_form): method get_phase_form_index (line 3425) | def get_phase_form_index(self, form): method remove_form (line 3438) | def remove_form(self, form): method add_form (line 3446) | def add_form(self, form): method change_anchor (line 3455) | def change_anchor(self, new_anchor): class AdvancedModule (line 3465) | class AdvancedModule(ModuleBase): method is_surveys (line 3478) | def is_surveys(self): method new_module (line 3482) | def new_module(cls, name, lang): method new_form (line 3517) | def new_form(self, name, lang, attachment=Ellipsis): method new_shadow_form (line 3533) | def new_shadow_form(self, name, lang): method add_insert_form (line 3546) | def add_insert_form(self, from_module, form, index=None, with_source=F... method rename_lang (line 3629) | def rename_lang(self, old_lang, new_lang): method is_multi_select (line 3633) | def is_multi_select(self): method is_auto_select (line 3636) | def is_auto_select(self): method requires_case_details (line 3639) | def requires_case_details(self): method all_forms_require_a_case (line 3647) | def all_forms_require_a_case(self): method search_detail (line 3650) | def search_detail(self, short_or_long): method get_details (line 3656) | def get_details(self): method validator (line 3671) | def validator(self): method _uses_case_type (line 3674) | def _uses_case_type(self, case_type, invert_match=False): method uses_usercase (line 3677) | def uses_usercase(self): method additional_case_types (line 3683) | def additional_case_types(self): method phase_anchors (line 3687) | def phase_anchors(self): method get_or_create_schedule_phase (line 3690) | def get_or_create_schedule_phase(self, anchor): method _clear_schedule_phases (line 3706) | def _clear_schedule_phases(self): method update_schedule_phases (line 3709) | def update_schedule_phases(self, anchors): method update_schedule_phase_anchors (line 3728) | def update_schedule_phase_anchors(self, new_anchors): class ReportAppFilter (line 3739) | class ReportAppFilter(DocumentSchema): method wrap (line 3742) | def wrap(cls, data): method get_filter_value (line 3748) | def get_filter_value(self, user, ui_filter): function get_all_mobile_filter_configs (line 3755) | def get_all_mobile_filter_configs(): function get_report_filter_class_for_doc_type (line 3774) | def get_report_filter_class_for_doc_type(doc_type): function _filter_by_case_sharing_group_id (line 3783) | def _filter_by_case_sharing_group_id(user, ui_filter): function _filter_by_location_id (line 3791) | def _filter_by_location_id(user, ui_filter): function _filter_by_location_ids (line 3796) | def _filter_by_location_ids(user, ui_filter): function _filter_by_username (line 3802) | def _filter_by_username(user, ui_filter): function _filter_by_user_id (line 3807) | def _filter_by_user_id(user, ui_filter): function _filter_by_parent_location_id (line 3812) | def _filter_by_parent_location_id(user, ui_filter): function get_auto_filter_configurations (line 3822) | def get_auto_filter_configurations(): function _get_auto_filter_function (line 3835) | def _get_auto_filter_function(slug): class AutoFilter (line 3844) | class AutoFilter(ReportAppFilter): method get_filter_value (line 3847) | def get_filter_value(self, user, ui_filter): class CustomDataAutoFilter (line 3851) | class CustomDataAutoFilter(ReportAppFilter): method get_filter_value (line 3854) | def get_filter_value(self, user, ui_filter): class StaticChoiceFilter (line 3860) | class StaticChoiceFilter(ReportAppFilter): method get_filter_value (line 3863) | def get_filter_value(self, user, ui_filter): class StaticChoiceListFilter (line 3868) | class StaticChoiceListFilter(ReportAppFilter): method get_filter_value (line 3871) | def get_filter_value(self, user, ui_filter): class StaticDatespanFilter (line 3876) | class StaticDatespanFilter(ReportAppFilter): method get_filter_value (line 3882) | def get_filter_value(self, user, ui_filter): class CustomDatespanFilter (line 3887) | class CustomDatespanFilter(ReportAppFilter): method get_filter_value (line 3902) | def get_filter_value(self, user, ui_filter): function is_lte (line 3939) | def is_lte(integer): function is_gte (line 3946) | def is_gte(integer): class CustomMonthFilter (line 3953) | class CustomMonthFilter(ReportAppFilter): method wrap (line 3972) | def wrap(cls, doc): method get_filter_value (line 3978) | def get_filter_value(self, user, ui_filter): class MobileSelectFilter (line 4013) | class MobileSelectFilter(ReportAppFilter): method get_filter_value (line 4015) | def get_filter_value(self, user, ui_filter): class AncestorLocationTypeFilter (line 4019) | class AncestorLocationTypeFilter(ReportAppFilter): method get_filter_value (line 4022) | def get_filter_value(self, user, ui_filter): class NumericFilter (line 4038) | class NumericFilter(ReportAppFilter): method wrap (line 4043) | def wrap(cls, doc): method get_filter_value (line 4047) | def get_filter_value(self, user, ui_filter): class ReportAppConfig (line 4054) | class ReportAppConfig(DocumentSchema): method __init__ (line 4075) | def __init__(self, *args, **kwargs): method report (line 4080) | def report(self, domain): method instance_id (line 4087) | def instance_id(self): class ReportModule (line 4091) | class ReportModule(ModuleBase): method reports (line 4105) | def reports(self): method new_module (line 4110) | def new_module(cls, name, lang): method get_details (line 4119) | def get_details(self): method get_custom_entries (line 4123) | def get_custom_entries(self): method get_menus (line 4127) | def get_menus(self, build_profile_id=None): method check_report_validity (line 4148) | def check_report_validity(self): method validator (line 4171) | def validator(self): class ShadowModule (line 4175) | class ShadowModule(ModuleBase, ModuleDetailsMixin): method source_module (line 4204) | def source_module(self): method case_type (line 4213) | def case_type(self): method additional_case_types (line 4219) | def additional_case_types(self): method requires (line 4225) | def requires(self): method root_module_id (line 4233) | def root_module_id(self): method root_module_id (line 4242) | def root_module_id(self, value): method get_suite_forms (line 4248) | def get_suite_forms(self): method get_form (line 4254) | def get_form(self, i): method requires_case_details (line 4257) | def requires_case_details(self): method get_case_types (line 4262) | def get_case_types(self): method get_subcase_types (line 4268) | def get_subcase_types(self): method all_forms_require_a_case (line 4274) | def all_forms_require_a_case(self): method is_multi_select (line 4279) | def is_multi_select(self): method is_auto_select (line 4284) | def is_auto_select(self): method max_select_value (line 4290) | def max_select_value(self): method new_module (line 4294) | def new_module(cls, name, lang, shadow_module_version=2): method validator (line 4316) | def validator(self): class LazyBlobDoc (line 4320) | class LazyBlobDoc(BlobMixin): method __init__ (line 4336) | def __init__(self, *args, **kwargs): method wrap (line 4344) | def wrap(cls, data): method __attachment_cache_key (line 4371) | def __attachment_cache_key(self, name): method __set_cached_attachment (line 4374) | def __set_cached_attachment(self, name, content, timeout=60 * 10): method __get_cached_attachment (line 4378) | def __get_cached_attachment(self, name): method put_attachment (line 4390) | def put_attachment(self, content, name=None, *args, **kw): method has_attachment (line 4395) | def has_attachment(self, name): method lazy_put_attachment (line 4398) | def lazy_put_attachment(self, content, name=None, content_type=None, method lazy_fetch_attachment (line 4411) | def lazy_fetch_attachment(self, name): method lazy_list_attachments (line 4437) | def lazy_list_attachments(self): method save (line 4443) | def save(self, **params): function absolute_url_property (line 4460) | def absolute_url_property(method): class BuildProfile (line 4475) | class BuildProfile(DocumentSchema): method __eq__ (line 4480) | def __eq__(self, other): class ApplicationBase (line 4484) | class ApplicationBase(LazyBlobDoc, SnapshotMixin, method assert_app_v2 (line 4576) | def assert_app_v2(self): method id (line 4604) | def id(self): method origin_id (line 4608) | def origin_id(self): method is_deleted (line 4612) | def is_deleted(self): method unretire (line 4615) | def unretire(self): method get_doc_type (line 4619) | def get_doc_type(self): method wrap (line 4626) | def wrap(cls, data): method global_app_config (line 4635) | def global_app_config(self): method rename_lang (line 4638) | def rename_lang(self, old_lang, new_lang): method is_remote_app (line 4641) | def is_remote_app(self): method get_latest_build (line 4645) | def get_latest_build(self): method _get_version_comparison_build (line 4655) | def _get_version_comparison_build(self): method get_latest_saved (line 4664) | def get_latest_saved(self): method set_admin_password (line 4672) | def set_admin_password(self, raw_password): method get_build (line 4682) | def get_build(self): method build_version (line 4686) | def build_version(self): method commcare_minor_release (line 4694) | def commcare_minor_release(self): method short_name (line 4699) | def short_name(self): method url_base (line 4703) | def url_base(self): method post_url (line 4708) | def post_url(self): method key_server_url (line 4716) | def key_server_url(self): method heartbeat_url (line 4719) | def heartbeat_url(self, build_profile_id=None): method base_heartbeat_url (line 4723) | def base_heartbeat_url(self): method ota_restore_url (line 4727) | def ota_restore_url(self): method hq_profile_url (line 4731) | def hq_profile_url(self): method media_profile_url (line 4740) | def media_profile_url(self): method profile_loc (line 4746) | def profile_loc(self): method jar_url (line 4750) | def jar_url(self): method recovery_measures_url (line 4754) | def recovery_measures_url(self): method create_build_files (line 4757) | def create_build_files(self, build_profile_id=None): method timing_context (line 4765) | def timing_context(self): method validate_app (line 4768) | def validate_app(self): method odk_profile_url (line 4772) | def odk_profile_url(self): method odk_media_profile_url (line 4776) | def odk_media_profile_url(self): method get_odk_qr_code (line 4779) | def get_odk_qr_code(self, with_media=False, build_profile_id=None, dow... method generate_shortened_url (line 4799) | def generate_shortened_url(self, view_name, build_profile_id=None): method get_short_odk_url (line 4815) | def get_short_odk_url(self, with_media=False, build_profile_id=None): method make_build (line 4834) | def make_build(self, comment=None, user_id=None): method convert_app_to_build (line 4878) | def convert_app_to_build(self, copy_of, user_id, comment=None): method convert_build_to_app (line 4892) | def convert_build_to_app(self): method get_attachments (line 4901) | def get_attachments(self): method save_attachments (line 4909) | def save_attachments(self, attachments, save=None): method copy_attachments (line 4916) | def copy_attachments(self, other, regexp=ATTACHMENT_REGEX): method delete_app (line 4921) | def delete_app(self): method save (line 4936) | def save(self, response_json=None, increment_version=None, **params): method save_docs (line 4969) | def save_docs(cls, docs, **kwargs): method set_form_versions (line 4977) | def set_form_versions(self): method set_media_versions (line 4981) | def set_media_versions(self): method get_build_langs (line 4984) | def get_build_langs(self, build_profile_id=None): method convert_to_application (line 4990) | def convert_to_application(self): method commcare_flavor (line 5001) | def commcare_flavor(self): function _refresh_data_dictionary (line 5005) | def _refresh_data_dictionary(domain, get_id): # easy patch target function validate_lang (line 5010) | def validate_lang(lang): class SavedAppBuild (line 5015) | class SavedAppBuild(ApplicationBase): method releases_list_json (line 5016) | def releases_list_json(self, timezone): class Application (line 5052) | class Application(ApplicationBase, ApplicationMediaMixin, ApplicationInt... method __repr__ (line 5081) | def __repr__(self): method has_modules (line 5085) | def has_modules(self): method commtrack_enabled (line 5090) | def commtrack_enabled(self): method wrap (line 5097) | def wrap(cls, data): method save (line 5111) | def save(self, *args, **kwargs): method delete_copy (line 5124) | def delete_copy(self, copy): method make_reversion_to_copy (line 5130) | def make_reversion_to_copy(self, copy): method profile_url (line 5163) | def profile_url(self): method suite_url (line 5167) | def suite_url(self): method suite_loc (line 5171) | def suite_loc(self): method media_suite_url (line 5178) | def media_suite_url(self): method media_suite_loc (line 5182) | def media_suite_loc(self): method default_language (line 5189) | def default_language(self): method set_form_versions (line 5193) | def set_form_versions(self): method set_media_versions (line 5231) | def set_media_versions(self): method ensure_module_unique_ids (line 5253) | def ensure_module_unique_ids(self, should_save=False): method set_translations (line 5268) | def set_translations(self, lang, translations): method create_app_strings (line 5271) | def create_app_strings(self, lang, build_profile_id=None): method create_profile (line 5279) | def create_profile(self, is_odk=False, with_media=False, method custom_suite (line 5357) | def custom_suite(self): method set_custom_suite (line 5363) | def set_custom_suite(self, value): method create_suite (line 5367) | def create_suite(self, build_profile_id=None): method create_media_suite (line 5371) | def create_media_suite(self, build_profile_id=None): method get_practice_user_id (line 5375) | def get_practice_user_id(self, build_profile_id=None): method enable_practice_users (line 5385) | def enable_practice_users(self): method enable_update_prompts (line 5393) | def enable_update_prompts(self): method get_practice_user (line 5399) | def get_practice_user(self, build_profile_id=None): method create_practice_user_restore (line 5419) | def create_practice_user_restore(self, build_profile_id=None): method get_form_filename (line 5437) | def get_form_filename(cls, type=None, form=None, module=None): method _make_language_files (line 5441) | def _make_language_files(self, prefix, build_profile_id): method _get_form_files (line 5449) | def _get_form_files(self, prefix, build_profile_id): method create_all_files (line 5466) | def create_all_files(self, build_profile_id=None): method get_module (line 5517) | def get_module(self, i): method get_module_by_unique_id (line 5523) | def get_module_by_unique_id(self, unique_id, error=''): method get_module_index (line 5534) | def get_module_index(self, unique_id): method get_report_modules (line 5542) | def get_report_modules(self): method get_forms (line 5547) | def get_forms(self, bare=True): method get_form (line 5556) | def get_form(self, form_unique_id, bare=True): method get_form_location (line 5566) | def get_form_location(self, form_unique_id): method new_app (line 5574) | def new_app(cls, domain, name, lang="en"): method add_module (line 5578) | def add_module(self, module): method delete_module (line 5582) | def delete_module(self, module_unique_id): method new_form (line 5595) | def new_form(self, module_id, name, lang, attachment=Ellipsis): method delete_form (line 5599) | def delete_form(self, module_unique_id, form_unique_id): method rename_lang (line 5624) | def rename_lang(self, old_lang, new_lang): method rearrange_modules (line 5641) | def rearrange_modules(self, from_index, to_index): method rearrange_forms (line 5660) | def rearrange_forms(self, from_module_uid, to_module_uid, from_index, ... method move_child_modules_after_parents (line 5688) | def move_child_modules_after_parents(self): method from_source (line 5705) | def from_source(cls, source, domain): method export_json (line 5713) | def export_json(self, dump_json=True): method scrub_source (line 5728) | def scrub_source(self, source): method copy_form (line 5737) | def copy_form(self, from_module, form, to_module, rename=False): method case_type_exists (line 5763) | def case_type_exists(self, case_type): method get_case_types (line 5767) | def get_case_types(self): method has_media (line 5774) | def has_media(self): method get_xmlns_map (line 5778) | def get_xmlns_map(self): method get_forms_by_xmlns (line 5784) | def get_forms_by_xmlns(self, xmlns, log_missing=True): method get_xform_by_xmlns (line 5805) | def get_xform_by_xmlns(self, xmlns, log_missing=True): method get_questions (line 5814) | def get_questions(self, xmlns, langs=None, include_triggers=False, inc... method validate_app (line 5823) | def validate_app(self): method get_profile_setting (line 5832) | def get_profile_setting(self, s_type, s_id): method get_case_metadata (line 5849) | def get_case_metadata(self): method get_subcase_types (line 5853) | def get_subcase_types(self, case_type): method grid_display_for_some_modules (line 5862) | def grid_display_for_some_modules(self): method grid_display_for_all_modules (line 5866) | def grid_display_for_all_modules(self): class RemoteApp (line 5870) | class RemoteApp(ApplicationBase): method is_remote_app (line 5883) | def is_remote_app(self): method new_app (line 5887) | def new_app(cls, domain, name, lang='en'): method create_profile (line 5891) | def create_profile(self, is_odk=False, langs=None): method strip_location (line 5895) | def strip_location(self, location): method fetch_file (line 5898) | def fetch_file(self, location): method get_build_langs (line 5909) | def get_build_langs(self): method get_locations (line 5920) | def get_locations(cls, suite): method SUITE_XPATH (line 5929) | def SUITE_XPATH(self): method create_all_files (line 5932) | def create_all_files(self, build_profile_id=None): method make_questions_map (line 5983) | def make_questions_map(self): method get_questions (line 6006) | def get_questions(self, xmlns): class LinkedApplication (line 6016) | class LinkedApplication(Application): method supported_settings (line 6030) | def supported_settings(self): method domain_link (line 6035) | def domain_link(self): method get_master_app_briefs (line 6040) | def get_master_app_briefs(self): method master_is_remote (line 6046) | def master_is_remote(self): method get_master_name (line 6050) | def get_master_name(self): method get_latest_master_release (line 6057) | def get_latest_master_release(self, master_app_id): method get_latest_master_releases_versions (line 6062) | def get_latest_master_releases_versions(self): method get_latest_build_from_upstream (line 6071) | def get_latest_build_from_upstream(self, upstream_app_id): method _get_version_comparison_build (line 6080) | def _get_version_comparison_build(self): method reapply_overrides (line 6089) | def reapply_overrides(self): function import_app (line 6100) | def import_app(app_id_or_doc, domain, extra_properties=None, request=None): function _get_source_app (line 6137) | def _get_source_app(app_id_or_doc): function _get_attachments (line 6145) | def _get_attachments(doc): function _create_app_from_doc (line 6154) | def _create_app_from_doc(domain, doc): function _update_report_config_ids (line 6164) | def _update_report_config_ids(app, report_map, domain): function _update_valid_domains_for_media (line 6177) | def _update_valid_domains_for_media(app, domain_to_add): class DeleteApplicationRecord (line 6185) | class DeleteApplicationRecord(DeleteRecord): method undo (line 6189) | def undo(self): class DeleteModuleRecord (line 6199) | class DeleteModuleRecord(DeleteRecord): method undo (line 6205) | def undo(self): class DeleteFormRecord (line 6217) | class DeleteFormRecord(DeleteRecord): method undo (line 6225) | def undo(self): class ExchangeApplication (line 6245) | class ExchangeApplication(models.Model): class Meta (line 6253) | class Meta(object): class ExchangeApplicationAdmin (line 6257) | class ExchangeApplicationAdmin(admin.ModelAdmin): class GlobalAppConfig (line 6266) | class GlobalAppConfig(models.Model): class Meta (line 6278) | class Meta(object): method by_app (line 6284) | def by_app(cls, app): method by_app_id (line 6290) | def by_app_id(cls, domain, app_id): method save (line 6297) | def save(self, force_insert=False, force_update=False, using=DEFAULT_D... method app (line 6305) | def app(self): method get_latest_apk_version (line 6312) | def get_latest_apk_version(self): method get_latest_app_version (line 6325) | def get_latest_app_version(self): method get_latest_version_info (line 6343) | def get_latest_version_info(cls, domain, app_id): method clear_version_caches (line 6350) | def clear_version_caches(self): class AppReleaseByLocation (line 6356) | class AppReleaseByLocation(models.Model): class Meta (line 6366) | class Meta: method save (line 6369) | def save(self, *args, **kwargs): method build (line 6375) | def build(self): method clean (line 6378) | def clean(self): method update_status (line 6390) | def update_status(cls, domain, app_id, build_id, location_id, version,... method deactivate (line 6406) | def deactivate(self): method activate (line 6412) | def activate(self): method to_json (line 6418) | def to_json(self): class ApplicationReleaseLog (line 6433) | class ApplicationReleaseLog(models.Model): method to_json (line 6456) | def to_json(self): class CredentialApplication (line 6465) | class CredentialApplication(models.Model): class Meta (line 6478) | class Meta: FILE: corehq/apps/app_manager/remote_app.py class AutoSetVersions (line 13) | class AutoSetVersions(WrappedNode): method auto_set_versions (line 15) | def auto_set_versions(self, version): class ProfileXML (line 25) | class ProfileXML(AutoSetVersions): method set_property (line 27) | def set_property(self, key, value): method set_attribute (line 37) | def set_attribute(self, key, value): function reset_suite_remote_url (line 41) | def reset_suite_remote_url(suite_node, url_base, profile_url, download_i... function strip_location (line 49) | def strip_location(profile_url, location): function make_remote_profile (line 60) | def make_remote_profile(app, langs=None): function make_remote_suite (line 95) | def make_remote_suite(app, suite_xml): FILE: corehq/apps/app_manager/signals.py function create_app_structure_repeat_records (line 9) | def create_app_structure_repeat_records(sender, application, **kwargs): function update_callcenter_config (line 18) | def update_callcenter_config(sender, application, **kwargs): FILE: corehq/apps/app_manager/static/app_manager/js/bootstrap3/add_ons.js function EditAddOns (line 6) | function EditAddOns(addOns, layout, saveUrl) { FILE: corehq/apps/app_manager/static/app_manager/js/bootstrap3/app_manager.js function parse (line 63) | function parse(version) { function initDragHandles (line 270) | function initDragHandles() { function nestChildModules (line 279) | function nestChildModules() { function getModulesByUid (line 298) | function getModulesByUid() { function addChildModuleToParent (line 305) | function addChildModuleToParent(childModule, parent) { function moveModuleToBottom (line 313) | function moveModuleToBottom(module) { function initChildModuleUpdateListener (line 316) | function initChildModuleUpdateListener() { function modulesWereReordered (line 340) | function modulesWereReordered() { function promptToSaveOrdering (line 345) | function promptToSaveOrdering() { function initSortable (line 348) | function initSortable($sortable) { function updateAfterMove (line 359) | function updateAfterMove(e, ui, $sortable) { function rearrangeForms (line 371) | function rearrangeForms(ui, $sortable) { function rearrangeModules (line 384) | function rearrangeModules($module) { function resetIndexes (line 395) | function resetIndexes() { function saveRearrangement (line 404) | function saveRearrangement(url, from, to, fromModuleUid, toModuleUid) { function displayError (line 605) | function displayError(errorMsg) { FILE: corehq/apps/app_manager/static/app_manager/js/bootstrap3/app_manager_media.js function initNavMenuMedia (line 173) | function initNavMenuMedia(qualifier, imageRef, audioRef, objectMap, defa... function interpolatePath (line 210) | function interpolatePath(path) { FILE: corehq/apps/app_manager/static/app_manager/js/bootstrap3/manage_releases_by_location.js function manageReleasesViewModel (line 74) | function manageReleasesViewModel(appReleasesByLocation) { function manageReleaseSearchViewModel (line 84) | function manageReleaseSearchViewModel() { FILE: corehq/apps/app_manager/static/app_manager/js/bootstrap3/supported_languages.js function Language (line 9) | function Language(langcode, languages) { function SupportedLanguages (line 48) | function SupportedLanguages(options) { FILE: corehq/apps/app_manager/static/app_manager/js/bootstrap5/add_ons.js function EditAddOns (line 7) | function EditAddOns(addOns, layout, saveUrl) { FILE: corehq/apps/app_manager/static/app_manager/js/bootstrap5/app_manager.js function parse (line 64) | function parse(version) { function initDragHandles (line 276) | function initDragHandles() { function nestChildModules (line 285) | function nestChildModules() { function getModulesByUid (line 304) | function getModulesByUid() { function addChildModuleToParent (line 311) | function addChildModuleToParent(childModule, parent) { function moveModuleToBottom (line 319) | function moveModuleToBottom(module) { function initChildModuleUpdateListener (line 322) | function initChildModuleUpdateListener() { function modulesWereReordered (line 346) | function modulesWereReordered() { function promptToSaveOrdering (line 351) | function promptToSaveOrdering() { function initSortable (line 354) | function initSortable($sortable) { function updateAfterMove (line 365) | function updateAfterMove(e, ui, $sortable) { function rearrangeForms (line 377) | function rearrangeForms(ui, $sortable) { function rearrangeModules (line 390) | function rearrangeModules($module) { function resetIndexes (line 401) | function resetIndexes() { function saveRearrangement (line 410) | function saveRearrangement(url, from, to, fromModuleUid, toModuleUid) { function displayError (line 615) | function displayError(errorMsg) { FILE: corehq/apps/app_manager/static/app_manager/js/bootstrap5/app_manager_media.js function initNavMenuMedia (line 173) | function initNavMenuMedia(qualifier, imageRef, audioRef, objectMap, defa... function interpolatePath (line 210) | function interpolatePath(path) { FILE: corehq/apps/app_manager/static/app_manager/js/bootstrap5/manage_releases_by_location.js function manageReleasesViewModel (line 74) | function manageReleasesViewModel(appReleasesByLocation) { function manageReleaseSearchViewModel (line 84) | function manageReleaseSearchViewModel() { FILE: corehq/apps/app_manager/static/app_manager/js/bootstrap5/supported_languages.js function Language (line 9) | function Language(langcode, languages) { function SupportedLanguages (line 48) | function SupportedLanguages(options) { FILE: corehq/apps/app_manager/static/app_manager/js/custom_icon.js function customIconManager (line 3) | function customIconManager() { FILE: corehq/apps/app_manager/static/app_manager/js/details/bootstrap3/column.js function containsSpecialFunctions (line 263) | function containsSpecialFunctions(str) { function fireChange (line 493) | function fireChange() { FILE: corehq/apps/app_manager/static/app_manager/js/details/bootstrap3/graph_config.js function getGraphViewJS (line 151) | function getGraphViewJS(serverGraphObject, moduleOptions) { function origOrDefault (line 492) | function origOrDefault(prop, fallback) { FILE: corehq/apps/app_manager/static/app_manager/js/details/bootstrap3/screen_config.js function addScreen (line 59) | function addScreen(pair, columnType) { function bindCalculatedPropsWithSortCols (line 96) | function bindCalculatedPropsWithSortCols() { FILE: corehq/apps/app_manager/static/app_manager/js/details/bootstrap5/column.js function containsSpecialFunctions (line 263) | function containsSpecialFunctions(str) { function fireChange (line 493) | function fireChange() { FILE: corehq/apps/app_manager/static/app_manager/js/details/bootstrap5/graph_config.js function getGraphViewJS (line 151) | function getGraphViewJS(serverGraphObject, moduleOptions) { function origOrDefault (line 492) | function origOrDefault(prop, fallback) { FILE: corehq/apps/app_manager/static/app_manager/js/details/bootstrap5/screen_config.js function addScreen (line 59) | function addScreen(pair, columnType) { function bindCalculatedPropsWithSortCols (line 96) | function bindCalculatedPropsWithSortCols() { FILE: corehq/apps/app_manager/static/app_manager/js/details/parent_select.js function getTranslation (line 59) | function getTranslation(name, langs) { FILE: corehq/apps/app_manager/static/app_manager/js/forms/bootstrap3/form_view.js function formFilterMatches (line 28) | function formFilterMatches(filter, substringMatches) { function formFilterModel (line 41) | function formFilterModel() { FILE: corehq/apps/app_manager/static/app_manager/js/forms/bootstrap5/form_view.js function formFilterMatches (line 28) | function formFilterMatches(filter, substringMatches) { function formFilterModel (line 41) | function formFilterModel() { FILE: corehq/apps/app_manager/static/app_manager/js/forms/case_knockout_bindings.js function wrappedValueAccessor (line 170) | function wrappedValueAccessor() { FILE: corehq/apps/app_manager/static/app_manager/js/forms/form_action_diffs.js function getBaseline (line 4) | function getBaseline(formActions) { function getDiff (line 11) | function getDiff(baseline, incoming) { function getUpdateMultiDiff (line 28) | function getUpdateMultiDiff(original, incoming) { function getNameDiff (line 82) | function getNameDiff(original, updated) { function omitDocType (line 103) | function omitDocType(updateObject) { FILE: corehq/apps/app_manager/static/app_manager/js/forms/form_designer_analytics.js function workflow (line 4) | function workflow(message) { function usage (line 8) | function usage(label, group, message) { function fbUsage (line 12) | function fbUsage(group, message) { FILE: corehq/apps/app_manager/static/app_manager/js/modules/case_list_setting.js function getLabel (line 5) | function getLabel(slug) { return $('.case-list-setting-label[data-slug="... function getShow (line 6) | function getShow(slug) { return $('.case-list-setting-show[data-slug="' ... function getMedia (line 7) | function getMedia(slug) { return $('.case-list-setting-media[data-slug="... function updateCaseListLabelError (line 9) | function updateCaseListLabelError(slug) { function updateCaseListLabel (line 21) | function updateCaseListLabel(slug, show) { FILE: corehq/apps/app_manager/static/app_manager/js/releases/bootstrap3/language_profiles.js function setProfileUrl (line 20) | function setProfileUrl(url) { FILE: corehq/apps/app_manager/static/app_manager/js/releases/bootstrap3/releases.js function savedAppModel (line 12) | function savedAppModel(appData, releasesMain) { function releasesMainModel (line 243) | function releasesMainModel(o) { FILE: corehq/apps/app_manager/static/app_manager/js/releases/bootstrap3/update_prompt.js function updatePromptModel (line 4) | function updatePromptModel(form) { FILE: corehq/apps/app_manager/static/app_manager/js/releases/bootstrap5/language_profiles.js function setProfileUrl (line 20) | function setProfileUrl(url) { FILE: corehq/apps/app_manager/static/app_manager/js/releases/bootstrap5/releases.js function savedAppModel (line 13) | function savedAppModel(appData, releasesMain) { function releasesMainModel (line 243) | function releasesMainModel(o) { FILE: corehq/apps/app_manager/static/app_manager/js/releases/bootstrap5/update_prompt.js function updatePromptModel (line 4) | function updatePromptModel(form) { FILE: corehq/apps/app_manager/static/app_manager/js/settings/bootstrap3/commcare_settings.js function CommcareSettings (line 9) | function CommcareSettings(options) { function update (line 459) | function update(appVersion) { FILE: corehq/apps/app_manager/static/app_manager/js/settings/bootstrap5/commcare_settings.js function CommcareSettings (line 9) | function CommcareSettings(options) { function update (line 459) | function update(appVersion) { FILE: corehq/apps/app_manager/static/app_manager/js/vellum/150.js function m (line 1) | function m(e){a.A.init({javaRosa:{langs:["en"]},core:{onReady:function()... function e (line 1) | function e(e,t){return c("isPropertyLocked",e,t)} function t (line 1) | function t(e){return c("isMugPathMoveable",e)} function n (line 1) | function n(e){return c("isMugRemoveable",c("getMugByPath",e),e)} function o (line 1) | function o(e){return c("isMugTypeChangeable",c("getMugByPath",e),e)} function e (line 1) | function e(e){d(e?"normal":"value_locked");var t=i()(".btn.current-quest... function t (line 1) | function t(e){d(e?"value_locked":"normal");var t=f("relevantAttr").paren... function k (line 1) | function k(e,t,n){if((n=u.Ay.defaults(n||{},{normalize_xmlns:!1,not:!1})... function b (line 1) | function b(e,t,n){if(e!==t){var o=(0,s.createPatch)("",e,t,"actual","exp... function y (line 1) | function y(e){return(e=e.replace(/^\t+/gm,(function(e){return e.replace(... function x (line 1) | function x(e){return w("getCurrentMugInput",e)} function _ (line 1) | function _(e){var t=c()("#vellum").vellum("get"),n=u.Ay.isString(e)?c()(... function w (line 1) | function w(){var e=Array.prototype.slice.call(arguments),t=c()("#vellum"... function A (line 1) | function A(){var e=[],t=u.Ay.map(arguments,(function(t){var n=u.Ay.isStr... function j (line 1) | function j(e){0!==e.indexOf("/")&&(e="/data/"+e);var t=w("getMugByPath",... FILE: corehq/apps/app_manager/static/app_manager/js/vellum/1664.js function x (line 1) | function x(e,t,a){if((a=u.Ay.defaults(a||{},{normalize_xmlns:!1,not:!1})... function b (line 1) | function b(e,t,a){if(e!==t){var n=(0,c.createPatch)("",e,t,"actual","exp... function y (line 1) | function y(e){return(e=e.replace(/^\t+/gm,(function(e){return e.replace(... function q (line 1) | function q(e){return w("getCurrentMugInput",e)} function A (line 1) | function A(e){var t=d()("#vellum").vellum("get"),a=u.Ay.isString(e)?d()(... function w (line 1) | function w(){var e=Array.prototype.slice.call(arguments),t=d()("#vellum"... function _ (line 1) | function _(){var e=[],t=u.Ay.map(arguments,(function(t){var a=u.Ay.isStr... function j (line 1) | function j(e){0!==e.indexOf("/")&&(e="/data/"+e);var t=w("getMugByPath",... FILE: corehq/apps/app_manager/static/app_manager/js/vellum/1879.js function b (line 1) | function b(t,e,n){if((n=l.Ay.defaults(n||{},{normalize_xmlns:!1,not:!1})... function y (line 1) | function y(t,e,n){if(t!==e){var a=(0,d.createPatch)("",t,e,"actual","exp... function x (line 1) | function x(t){return(t=t.replace(/^\t+/gm,(function(t){return t.replace(... function A (line 1) | function A(t){return w("getCurrentMugInput",t)} function q (line 1) | function q(t){var e=u()("#vellum").vellum("get"),n=l.Ay.isString(t)?u()(... function w (line 1) | function w(){var t=Array.prototype.slice.call(arguments),e=u()("#vellum"... function _ (line 1) | function _(){var t=[],e=l.Ay.map(arguments,(function(e){var n=l.Ay.isStr... function M (line 1) | function M(t){0!==t.indexOf("/")&&(t="/data/"+t);var e=w("getMugByPath",... FILE: corehq/apps/app_manager/static/app_manager/js/vellum/2229.js function x (line 1) | function x(t,e,n){if((n=m.Ay.defaults(n||{},{normalize_xmlns:!1,not:!1})... function _ (line 1) | function _(t,e,n){if(t!==e){var a=(0,i.createPatch)("",t,e,"actual","exp... function w (line 1) | function w(t){return(t=t.replace(/^\t+/gm,(function(t){return t.replace(... function b (line 1) | function b(t){return A("getCurrentMugInput",t)} function y (line 1) | function y(t){var e=u()("#vellum").vellum("get"),n=m.Ay.isString(t)?u()(... function A (line 1) | function A(){var t=Array.prototype.slice.call(arguments),e=u()("#vellum"... function j (line 1) | function j(){var t=[],e=m.Ay.map(arguments,(function(e){var n=m.Ay.isStr... function q (line 1) | function q(t){0!==t.indexOf("/")&&(t="/data/"+t);var e=A("getMugByPath",... FILE: corehq/apps/app_manager/static/app_manager/js/vellum/2773.js function o (line 1) | function o(){t.addMessage(null,{key:"test-message",level:t.ERROR,message... function x (line 1) | function x(e,t,n){if((n=u.Ay.defaults(n||{},{normalize_xmlns:!1,not:!1})... function b (line 1) | function b(e,t,n){if(e!==t){var r=(0,s.createPatch)("",e,t,"actual","exp... function y (line 1) | function y(e){return(e=e.replace(/^\t+/gm,(function(e){return e.replace(... function A (line 1) | function A(e){return q("getCurrentMugInput",e)} function w (line 1) | function w(e){var t=c()("#vellum").vellum("get"),n=u.Ay.isString(e)?c()(... function q (line 1) | function q(){var e=Array.prototype.slice.call(arguments),t=c()("#vellum"... function M (line 1) | function M(){var e=[],t=u.Ay.map(arguments,(function(t){var n=u.Ay.isStr... function j (line 1) | function j(e){0!==e.indexOf("/")&&(e="/data/"+e);var t=q("getMugByPath",... FILE: corehq/apps/app_manager/static/app_manager/js/vellum/2979.js function t (line 1) | function t(t,a,o){it("should "+(o?"show ":"not show ")+a+" in menu for "... function v (line 1) | function v(t,e,n){if((n=s.Ay.defaults(n||{},{normalize_xmlns:!1,not:!1})... function b (line 1) | function b(t,e,n){if(t!==e){var a=(0,d.createPatch)("",t,e,"actual","exp... function A (line 1) | function A(t){return(t=t.replace(/^\t+/gm,(function(t){return t.replace(... function q (line 1) | function q(t){return w("getCurrentMugInput",t)} function y (line 1) | function y(t){var e=c()("#vellum").vellum("get"),n=s.Ay.isString(t)?c()(... function w (line 1) | function w(){var t=Array.prototype.slice.call(arguments),e=c()("#vellum"... function M (line 1) | function M(){var t=[],e=s.Ay.map(arguments,(function(e){var n=s.Ay.isStr... function j (line 1) | function j(t){0!==t.indexOf("/")&&(t="/data/"+t);var e=w("getMugByPath",... FILE: corehq/apps/app_manager/static/app_manager/js/vellum/3333.js function a (line 1) | function a(t,e){var a=l.Ay.find(t.instanceMetadata,(function(t){return t... function v (line 1) | function v(t,e,a){if((a=l.Ay.defaults(a||{},{normalize_xmlns:!1,not:!1})... function b (line 1) | function b(t,e,a){if(t!==e){var n=(0,c.createPatch)("",t,e,"actual","exp... function q (line 1) | function q(t){return(t=t.replace(/^\t+/gm,(function(t){return t.replace(... function w (line 1) | function w(t){return y("getCurrentMugInput",t)} function A (line 1) | function A(t){var e=u()("#vellum").vellum("get"),a=l.Ay.isString(t)?u()(... function y (line 1) | function y(){var t=Array.prototype.slice.call(arguments),e=u()("#vellum"... function _ (line 1) | function _(){var t=[],e=l.Ay.map(arguments,(function(e){var a=l.Ay.isStr... function j (line 1) | function j(t){0!==t.indexOf("/")&&(t="/data/"+t);var e=y("getMugByPath",... FILE: corehq/apps/app_manager/static/app_manager/js/vellum/3534.js function x (line 1) | function x(e,t,n){if((n=d.Ay.defaults(n||{},{normalize_xmlns:!1,not:!1})... function A (line 1) | function A(e,t,n){if(e!==t){var a=(0,l.createPatch)("",e,t,"actual","exp... function b (line 1) | function b(e){return(e=e.replace(/^\t+/gm,(function(e){return e.replace(... function y (line 1) | function y(e){return q("getCurrentMugInput",e)} function w (line 1) | function w(e){var t=c()("#vellum").vellum("get"),n=d.Ay.isString(e)?c()(... function q (line 1) | function q(){var e=Array.prototype.slice.call(arguments),t=c()("#vellum"... function k (line 1) | function k(){var e=[],t=d.Ay.map(arguments,(function(t){var n=d.Ay.isStr... function X (line 1) | function X(e){0!==e.indexOf("/")&&(e="/data/"+e);var t=q("getMugByPath",... FILE: corehq/apps/app_manager/static/app_manager/js/vellum/3576.js function y (line 1) | function y(e,n,t){if((t=u.Ay.defaults(t||{},{normalize_xmlns:!1,not:!1})... function x (line 1) | function x(e,n,t){if(e!==n){var r=(0,l.createPatch)("",e,n,"actual","exp... function A (line 1) | function A(e){return(e=e.replace(/^\t+/gm,(function(e){return e.replace(... function b (line 1) | function b(e){return j("getCurrentMugInput",e)} function w (line 1) | function w(e){var n=d()("#vellum").vellum("get"),t=u.Ay.isString(e)?d()(... function j (line 1) | function j(){var e=Array.prototype.slice.call(arguments),n=d()("#vellum"... function M (line 1) | function M(){var e=[],n=u.Ay.map(arguments,(function(n){var t=u.Ay.isStr... function I (line 1) | function I(e){0!==e.indexOf("/")&&(e="/data/"+e);var n=j("getMugByPath",... FILE: corehq/apps/app_manager/static/app_manager/js/vellum/358.js function m (line 1) | function m(e,t,n){if((n=u.Ay.defaults(n||{},{normalize_xmlns:!1,not:!1})... function v (line 1) | function v(e,t,n){if(e!==t){var o=(0,c.createPatch)("",e,t,"actual","exp... function k (line 1) | function k(e){return(e=e.replace(/^\t+/gm,(function(e){return e.replace(... function S (line 1) | function S(e){return y("getCurrentMugInput",e)} function Q (line 1) | function Q(e){var t=d()("#vellum").vellum("get"),n=u.Ay.isString(e)?d()(... function y (line 1) | function y(){var e=Array.prototype.slice.call(arguments),t=d()("#vellum"... function b (line 1) | function b(){var e=[],t=u.Ay.map(arguments,(function(t){var n=u.Ay.isStr... function T (line 1) | function T(e){0!==e.indexOf("/")&&(e="/data/"+e);var t=y("getMugByPath",... FILE: corehq/apps/app_manager/static/app_manager/js/vellum/3588.js function e (line 1) | function e(e,t){it("question "+e+(t?" is marked as required":" is ignore... function t (line 1) | function t(t,n,a){it("the default value for "+t+(n?" matches the expecte... function y (line 1) | function y(e,t,n){if((n=l.Ay.defaults(n||{},{normalize_xmlns:!1,not:!1})... function A (line 1) | function A(e,t,n){if(e!==t){var a=(0,u.createPatch)("",e,t,"actual","exp... function b (line 1) | function b(e){return(e=e.replace(/^\t+/gm,(function(e){return e.replace(... function x (line 1) | function x(e){return I("getCurrentMugInput",e)} function _ (line 1) | function _(e){var t=c()("#vellum").vellum("get"),n=l.Ay.isString(e)?c()(... function I (line 1) | function I(){var e=Array.prototype.slice.call(arguments),t=c()("#vellum"... function M (line 1) | function M(){var e=[],t=l.Ay.map(arguments,(function(t){var n=l.Ay.isStr... function w (line 1) | function w(e){0!==e.indexOf("/")&&(e="/data/"+e);var t=I("getMugByPath",... FILE: corehq/apps/app_manager/static/app_manager/js/vellum/3606.js function x (line 1) | function x(e,n,t){if((t=u.Ay.defaults(t||{},{normalize_xmlns:!1,not:!1})... function y (line 1) | function y(e,n,t){if(e!==n){var o=(0,l.createPatch)("",e,n,"actual","exp... function A (line 1) | function A(e){return(e=e.replace(/^\t+/gm,(function(e){return e.replace(... function q (line 1) | function q(e){return b("getCurrentMugInput",e)} function w (line 1) | function w(e){var n=c()("#vellum").vellum("get"),t=u.Ay.isString(e)?c()(... function b (line 1) | function b(){var e=Array.prototype.slice.call(arguments),n=c()("#vellum"... function j (line 1) | function j(){var e=[],n=u.Ay.map(arguments,(function(n){var t=u.Ay.isStr... function M (line 1) | function M(e){0!==e.indexOf("/")&&(e="/data/"+e);var n=b("getMugByPath",... FILE: corehq/apps/app_manager/static/app_manager/js/vellum/3720.js function c (line 1) | function c(t,e,n){if((n=m.Ay.defaults(n||{},{normalize_xmlns:!1,not:!1})... function q (line 1) | function q(t,e,n){if(t!==e){var o=(0,s.createPatch)("",t,e,"actual","exp... function w (line 1) | function w(t){return(t=t.replace(/^\t+/gm,(function(t){return t.replace(... function b (line 1) | function b(t){return y("getCurrentMugInput",t)} function j (line 1) | function j(t){var e=d()("#vellum").vellum("get"),n=m.Ay.isString(t)?d()(... function y (line 1) | function y(){var t=Array.prototype.slice.call(arguments),e=d()("#vellum"... function A (line 1) | function A(){var t=[],e=m.Ay.map(arguments,(function(e){var n=m.Ay.isStr... function M (line 1) | function M(t){0!==t.indexOf("/")&&(t="/data/"+t);var e=y("getMugByPath",... FILE: corehq/apps/app_manager/static/app_manager/js/vellum/375.js function v (line 1) | function v(t){return t.startsWith("fa-")?i()("").addClass(t).html("&n... function b (line 1) | function b(){return v("fcc-fd-case-property")} function g (line 1) | function g(t,e,n,a,o){var r=i()("").addClass("label label-datanode... function x (line 1) | function x(t){return''} function y (line 1) | function y(t){return i()("
").append(t)} function _ (line 1) | function _(t){return y(i()("

").text("​").append(t).append("​"))} function w (line 1) | function w(t){return y(t).html()} function A (line 1) | function A(t){u.A.init({javaRosa:{langs:["en"]},core:{dataSourcesEndpoin... function q (line 1) | function q(t){const e=document.createElement("div");e.innerHTML=t;const ... function T (line 1) | function T(t){return t.replace(/]*)\s+id="[^"]*"([^>]*)>/g," "+t);u=t} function u (line 1) | function u(t,n,e){var a=t.replace(/\r/g,"\\r").replace(/\n/g,"\\n").repl... FILE: corehq/apps/app_manager/static/app_manager/js/vellum/4334.js function q (line 1) | function q(t){const e=u.A.parseXML(t).find("vellum\\:case_mappings > map... function w (line 1) | function w(){return i()(".fd-content-right").find('fieldset[data-slug="c... function x (line 1) | function x(t,e,n){if((n=u.Ay.defaults(n||{},{normalize_xmlns:!1,not:!1})... function q (line 1) | function q(t,e,n){if(t!==e){var a=(0,r.createPatch)("",t,e,"actual","exp... function w (line 1) | function w(t){return(t=t.replace(/^\t+/gm,(function(t){return t.replace(... function M (line 1) | function M(t){return y("getCurrentMugInput",t)} function b (line 1) | function b(t){var e=p()("#vellum").vellum("get"),n=u.Ay.isString(t)?p()(... function y (line 1) | function y(){var t=Array.prototype.slice.call(arguments),e=p()("#vellum"... function A (line 1) | function A(){var t=[],e=u.Ay.map(arguments,(function(e){var n=u.Ay.isStr... function j (line 1) | function j(t){0!==t.indexOf("/")&&(t="/data/"+t);var e=y("getMugByPath",... FILE: corehq/apps/app_manager/static/app_manager/js/vellum/4437.js function p (line 1) | function p(e){return e.toXPath()} function s (line 1) | function s(e,t,a){var s=d.A.getMug(n[e]||"text");m(d.A.isTreeNodeValid(s... function e (line 1) | function e(e){return e.toHashtag()} function s (line 1) | function s(t,a){var n=i.Ay.map(t.getHashtags(),e);m.includeMembers(n,a.h... function x (line 1) | function x(e,t,a){if((a=c.Ay.defaults(a||{},{normalize_xmlns:!1,not:!1})... function A (line 1) | function A(e,t,a){if(e!==t){var n=(0,d.createPatch)("",e,t,"actual","exp... function b (line 1) | function b(e){return(e=e.replace(/^\t+/gm,(function(e){return e.replace(... function q (line 1) | function q(e){return w("getCurrentMugInput",e)} function y (line 1) | function y(e){var t=u()("#vellum").vellum("get"),a=c.Ay.isString(e)?u()(... function w (line 1) | function w(){var e=Array.prototype.slice.call(arguments),t=u()("#vellum"... function _ (line 1) | function _(){var e=[],t=c.Ay.map(arguments,(function(t){var a=c.Ay.isStr... function M (line 1) | function M(e){0!==e.indexOf("/")&&(e="/data/"+e);var t=w("getMugByPath",... FILE: corehq/apps/app_manager/static/app_manager/js/vellum/4518.js function l (line 1) | function l(e,a=!1){var t=n(e||""),s=document.implementation.createHTMLDo... function v (line 1) | function v(e,a){if(!e)return"";if(o.Ay.isString(e)){if(!/[<>&]/.test(e))... function n (line 1) | function n(e){return e.replace(/<(([\w:.-]+)(?:\s[^>]*|))\/>/g,"<$1>-1,a=(t=n?t.replace(" + Ch... function o (line 1) | function o(t,e){var n=t.indexOf(" + Choices")>-1,a=(t=n?t.replace(" + Ch... FILE: corehq/apps/app_manager/static/app_manager/js/vellum/576.js function d (line 1) | function d(t,e){function n(n){return e.tokenize=n,n(t,e)}var r=t.next();... function f (line 1) | function f(t,e){var n,r,a=t.next();if(">"==a||"/"==a&&t.eat(">"))return ... function m (line 1) | function m(t,e){return function(n,r){for(;!n.eol();){if(n.match(e)){r.to... function g (line 1) | function g(t){return function(e,n){for(var r;null!=(r=e.next());){if("<"... function p (line 1) | function p(t,e,n){this.prev=t.context,this.tagName=e||"",this.indent=t.i... function h (line 1) | function h(t){t.context&&(t.context=t.context.prev)} function x (line 1) | function x(t,e){for(var n;;){if(!t.context)return;if(n=t.context.tagName... function k (line 1) | function k(t,e,n){return"openTag"==t?(n.tagStart=e.column(),b):"closeTag... function b (line 1) | function b(t,e,n){return"word"==t?(n.tagName=e.current(),i="tag",N):u.al... function w (line 1) | function w(t,e,n){if("word"==t){var r=e.current();return n.context&&n.co... function v (line 1) | function v(t,e,n){return"endTag"!=t?(i="error",v):(h(n),k)} function T (line 1) | function T(t,e,n){return i="error",v(t,0,n)} function N (line 1) | function N(t,e,n){if("word"==t)return i="attribute",C;if("endTag"==t||"s... function C (line 1) | function C(t,e,n){return"equals"==t?y:(u.allowMissing||(i="error"),N(t,0... function y (line 1) | function y(t,e,n){return"string"==t?z:"word"==t&&u.allowUnquoted?(i="str... function z (line 1) | function z(t,e,n){return"string"==t?z:N(t,0,n)} FILE: corehq/apps/app_manager/static/app_manager/js/vellum/6077.js function h (line 1) | function h(t,e,n){if((n=l.Ay.defaults(n||{},{normalize_xmlns:!1,not:!1})... function x (line 1) | function x(t,e,n){if(t!==e){var a=(0,s.createPatch)("",t,e,"actual","exp... function y (line 1) | function y(t){return(t=t.replace(/^\t+/gm,(function(t){return t.replace(... function b (line 1) | function b(t){return w("getCurrentMugInput",t)} function j (line 1) | function j(t){var e=c()("#vellum").vellum("get"),n=l.Ay.isString(t)?c()(... function w (line 1) | function w(){var t=Array.prototype.slice.call(arguments),e=c()("#vellum"... function A (line 1) | function A(){var t=[],e=l.Ay.map(arguments,(function(e){var n=l.Ay.isStr... function M (line 1) | function M(t){0!==t.indexOf("/")&&(t="/data/"+t);var e=w("getMugByPath",... FILE: corehq/apps/app_manager/static/app_manager/js/vellum/6129.js function v (line 1) | function v(t,e,n){if((n=s.Ay.defaults(n||{},{normalize_xmlns:!1,not:!1})... function A (line 1) | function A(t,e,n){if(t!==e){var a=(0,l.createPatch)("",t,e,"actual","exp... function y (line 1) | function y(t){return(t=t.replace(/^\t+/gm,(function(t){return t.replace(... function b (line 1) | function b(t){return I("getCurrentMugInput",t)} function w (line 1) | function w(t){var e=c()("#vellum").vellum("get"),n=s.Ay.isString(t)?c()(... function I (line 1) | function I(){var t=Array.prototype.slice.call(arguments),e=c()("#vellum"... function _ (line 1) | function _(){var t=[],e=s.Ay.map(arguments,(function(e){var n=s.Ay.isStr... function k (line 1) | function k(t){0!==t.indexOf("/")&&(t="/data/"+t);var e=I("getMugByPath",... FILE: corehq/apps/app_manager/static/app_manager/js/vellum/6367.js function t (line 1) | function t(){this.Diff_Timeout=1,this.Diff_EditCost=4,this.Match_Thresho... function i (line 1) | function i(e){for(var t="",i=0,r=-1,o=n.length;rt;)n+... function n (line 1) | function n(e,n){let a=e.split(" "),i="";for(let e of a)i+=t(e,n),i+=" ";... function a (line 1) | function a(t,a,o,d){return function(t,u){if(r.Ay.contains(e.invalidCaseP... function i (line 1) | function i(e,t,n){var o=r.Ay.chain(e&&e.structure).map((function(e,r){re... function t (line 1) | function t(e){var t=e.toHashtag;return e.toHashtag=function(e){var n=t(e... function v (line 1) | function v(e){return function(t,n,a){if(t){var i=l.A.query(t);i.find("ou... function n (line 1) | function n(e,t,n,i){var r=[e];return a.Ay.each(n,(function(e){a.Ay.each(... function n (line 1) | function n(a){e.currentXY=[a.pageX,a.pageY],t.off("mousemove",n)} function a (line 1) | function a(n){var i=e.currentXY[0]-n.pageX,r=e.currentXY[1]-n.pageY;Math... function d (line 1) | function d(e,t){if(this._text=e||"",this._xpathParser=t,"string"==typeof... function u (line 1) | function u(e,t){t.allowedDataNodeReferences=t.allowedDataNodeReferences|... function n (line 1) | function n(t,n){if(n.ref){if(n.mug!==e.ufid)throw new Error([e,n]);i[n.r... function a (line 1) | function a(t){o[t]=i.addReferences(e,t,n)} function o (line 1) | function o(e){if(!e)return e;var t=new d(e,a.xpath),n=t.getText();t.upda... function o (line 1) | function o(){var t;return d&&"Ignored"===d.__className||(d=f(i,r),n.push... function p (line 1) | function p(e,t){for(var n=null,a=/[\/[][^\/[]+$/;!n&&e&&a.test(e);)(e=e.... function f (line 1) | function f(e,t){var n=e.mugTypes.make("Ignored",e);return n.p.nodeID=e.g... function h (line 1) | function h(e){var t=l.serializeToString(e[0]),n=t.indexOf(">");return-1=... function g (line 1) | function g(e,t){var n=m(e[t+"ElementSibling"]);return n&&n+", "+n.replac... function m (line 1) | function m(e){if(!e)return null;var t=r()(e),n=t.xmlAttr("nodeset"),a=t.... function M (line 1) | function M(e,t){return{androidIntentAppId:t||"",intentXmlns:A,androidInt... function I (line 1) | function I(e,t,n){var i,r=(i=t.androidIntentAppId,a.Ay.find(v,(function(... function k (line 1) | function k(e,t){if("AndroidIntent"===t.__className||"PrintIntent"===t.__... function P (line 1) | function P(e,t,n,i){i[t]=a.Ay.clone(n.p[t]),""===i[t][""]&&delete i[t][""]} function D (line 1) | function D(e){return!e.custom_intents&&!e.templated_intents} function N (line 1) | function N(e){return e.templated_intents&&!e.custom_intents} function O (line 1) | function O(e,t){var n=r()(R()()),a=n.find("[name=instance-id]"),i=n.find... function L (line 1) | function L(e){function t(e,n){return a.Ay.map(e,(function(e,i){var r=[],... function c (line 1) | function c(){return u.query=l(),u} function p (line 1) | function p(e){u=e,d(e.query||"")} function s (line 1) | function s(e){return!e||a.Ay.all(a.Ay.map(e,a.Ay.isEmpty))} function l (line 1) | function l(){var e=c();return e?JSON.parse(e):o} function d (line 1) | function d(e){var t=o;s(e)||(t=JSON.stringify(e),u.equivalentOption(t)||... function $ (line 1) | function $(e,t){var n=t.form.getChildren(t);if(n.length)return n[0];var ... function n (line 1) | function n(e){return!e||a.Ay.all(a.Ay.map(e,a.Ay.isEmpty))} function i (line 1) | function i(t){var n=p(),a=q.autocompleteChoices(t,n?n.src:"");return z.A... function o (line 1) | function o(t){if(l=t,d=!0,u){var a=i(t);a&&a.length&&n(s.value)&&(e=Y(e,... function W (line 1) | function W(e){var t=e.search(H);return-1!==t?{value:e.slice(0,t),filter:... function G (line 1) | function G(e){var t=e.form.vellum.datasources.getDataSources([]);return ... function Y (line 1) | function Y(e,t){return e.p.labelRef||(a.Ay.contains(t,"name")?e.p.labelR... function K (line 1) | function K(e,t){var n=y.A.text(e,t),a=e.p.itemsetData,i=a?a.instance:nul... function J (line 1) | function J(e){return function(t){var n=t.p[e];if(!n)return"pass";var i=t... function o (line 1) | function o(){return ge.A.getDefaultItextId(e,n.path.replace(/Itext$/,""))} function s (line 1) | function s(){l(o()),u(!0)} function u (line 1) | function u(e){d.prop("checked",e)} function c (line 1) | function c(){return d.prop("checked")} function i (line 1) | function i(t){try{var n=e.form.xpath.parse(t);if(n instanceof e.form.xpa... function r (line 1) | function r(t,i){var r=!t||t===ge.A.getDefaultItextId(e,i);if(t){var o=a[... function s (line 1) | function s(e,t){var n=e.xmlAttr("ref");return r(n?i(n):"",t)} function n (line 1) | function n(e,n){(n=o.A.query(n)).find("output").each((function(){!functi... function s (line 1) | function s(e,t){return function(n){var a=n.p[e];if(!(a&&a.hasHumanReadab... function l (line 1) | function l(e){function n(e,t){var n=o.A.query(e);return n.find("output")... function d (line 1) | function d(e){return e.trackLogicReferences=!0,e} function u (line 1) | function u(e){var t=e.p.constraintMsgItext;return e.p.constraintAttr||!t... function Qe (line 1) | function Qe(e){return e&&Re.hasOwnProperty(e.__className)} function We (line 1) | function We(e,t){t.addInstanceIfNotExists({id:"ledger",src:"jr://instanc... function Ge (line 1) | function Ge(e,t,n,a){var i=n.parentMug?n.absolutePathNoRoot+"/":"/";a.id... function et (line 1) | function et(e){return e&&"Repeat"===e.__className&&e.p.dataSource.idsQuery} function st (line 1) | function st(e){return!!e&&e.p.useCreate} function lt (line 1) | function lt(e){return!!e&&e.p.useClose} function dt (line 1) | function dt(e){return!!e&&e.p.useUpdate} function ut (line 1) | function ut(e){return!!e&&e.p.useIndex} function n (line 1) | function n(e,t,n){return t=t||[],new Se.A.Node(t,{getNodeID:function(){r... function i (line 1) | function i(e,t){return a.Ay.chain(e).map((function(e,i){if(i)return n(i,... function n (line 1) | function n(t,n){return a.Ay.chain(n).omit("").map((function(n,a){return{... function Yt (line 1) | function Yt(e,t){t.defaultOptions=Kt(t.vellum.data.caseManagement,e),t.u... function Kt (line 1) | function Kt(e,t,n){const a=new Set(e.properties);Object.keys(e.caseMappi... function Jt (line 1) | function Jt(e,t,n){if(!e.absolutePath)return;const a=t.caseMappingsByQue... function nn (line 1) | function nn(e,t){const n={key:Zt,message:b.A.format(gettext('"{casePrope... class an (line 1) | class an{updateMappingsFromXML(e,t,n){if(!n)return;const a=n.find(":root... method updateMappingsFromXML (line 1) | updateMappingsFromXML(e,t,n){if(!n)return;const a=n.find(":root > h\\:... method buildMappingsFromXMLElements (line 1) | buildMappingsFromXMLElements(e){const t={};return e.forEach((e=>{const... method buildQuestionFromXMLElement (line 1) | buildQuestionFromXMLElement(e){const t={};for(let n=0;n").text(h.A.humanize(e)).html()).re... function D (line 1) | function D(e,t){var n;return N(e)?(e=e.slice(15),n=c.A.transform):n=t.tr... function N (line 1) | function N(e){return e.startsWith(b)} function E (line 1) | function E(e,t,n){return e?function(e){return"

"+(e=e.replace(/\n/g,"<... function R (line 1) | function R(e,t,n){return function(e,t,n){var a,i,o,s=h.A.xhtml(e),l={},d... function O (line 1) | function O(e){var t=e.xmlAttr("vellum:value")||e.xmlAttr("value")||e.xml... function q (line 1) | function q(e){return e?e.replace(/(%[YymnbdeHhMS3a])/g,(function(e,t){re... function F (line 1) | function F(e){var t,n,a=r()(e),i=a.closest(".form-control"),o=e.getAttri... function i (line 1) | function i(e,t=!1){const n=document.activeElement===a;let i;if(!n&&p&&f)... function s (line 1) | function s(e,t,n=0){n<5&&(null!=o(r()(e))?t():setTimeout((()=>s(e,t,n+1)... function u (line 1) | function u(e){const t=window.getSelection();if(!t.rangeCount)return;cons... function m (line 1) | function m(e){e.preventDefault();const a=window.getSelection();let i="";... function y (line 1) | function y(e){if(window.getSelection){const t=window.getSelection();if(t... function r (line 1) | function r(e,t){this.value=t,this.children=e||[],this.parent=null} function o (line 1) | function o(e,t){a.A.eventuality(this),this.rootNode=new r(null,null),thi... function r (line 1) | function r(e){return e=null===e||a.Ay.isUndefined(e)?"":String(e),i.test... function l (line 1) | function l(e){if(e<=s)throw new Error("last index "+s+" -> "+e);s=e} function a (line 1) | function a(){this.undoItems=[],this.redoItems=[],this.isUpdating=!1,this... function i (line 1) | function i(e){this.element=e,this.undoStack=new a} function r (line 1) | function r(e){const t=window.getSelection();if(0===t.rangeCount)return n... function o (line 1) | function o(e,t){if(!t)return;let n=e;t.nodePath.forEach((t=>{n=n.childNo... function s (line 1) | function s(e){const t=new Event("input",{bubbles:!0,cancelable:!0});e.di... function n (line 1) | function n(e){return(e=e.replace(/^\t+/gm,(function(e){return e.replace(... function t (line 1) | function t(e){try{return JSON.parse(e)}catch(t){return e}} function P (line 1) | function P(e,t){var n=c()(),a={};return e.messages.each(t,(function(i){c... function T (line 1) | function T(e,t){return e.data("vellum_widget",t),e} function r (line 1) | function r(){var t=e.form.vellum.nodeIDFromLabel(e);n.input.attr("placeh... function r (line 1) | function r(){var e={};return d.Ay.each(n.kvInput.find(".fd-kv-pair"),(fu... function r (line 1) | function r(e){e.on("DOMMouseScroll mousewheel",(function(e){var t=i()(th... function o (line 1) | function o(e,t,n){var a,r,o,s;e.hasClass("fd-content-vertical-divider")?... function o (line 1) | function o(e,t=!1){var n=l(e||""),a=document.implementation.createHTMLDo... function s (line 1) | function s(e,t){if(!e)return"";if(r.Ay.isString(e)){if(!/[<>&]/.test(e))... function l (line 1) | function l(e){return e.replace(/<(([\w:.-]+)(?:\s[^>]*|))\/>/g,"<$1>2&&void 0!==arguments[2]?argument... function s (line 2) | function s(){var e={};for(i.push(e);oe.length)return!1;for(var t=0;t1?o(e,i,i.... FILE: corehq/apps/app_manager/static/app_manager/js/vellum/8454.js function d (line 1) | function d(t){var e=a.A.call("getData").core.form.fuse.search(t);return ... function f (line 1) | function f(){return s()(".atwho-view").filter((function(){return"block"=... function m (line 1) | function m(t){u.strictEqual(f().find("li").length,t)} function t (line 1) | function t(t){var e=a.A.clickQuestion("one")[0],n=s()("[name=property-re... function e (line 1) | function e(e,n){const o=a.A.getMug("text3"),r=s()("[name=property-defaul... function x (line 1) | function x(t,e,n){if((n=u.Ay.defaults(n||{},{normalize_xmlns:!1,not:!1})... function y (line 1) | function y(t,e,n){if(t!==e){var a=(0,l.createPatch)("",t,e,"actual","exp... function b (line 1) | function b(t){return(t=t.replace(/^\t+/gm,(function(t){return t.replace(... function w (line 1) | function w(t){return q("getCurrentMugInput",t)} function A (line 1) | function A(t){var e=d()("#vellum").vellum("get"),n=u.Ay.isString(t)?d()(... function q (line 1) | function q(){var t=Array.prototype.slice.call(arguments),e=d()("#vellum"... function j (line 1) | function j(){var t=[],e=u.Ay.map(arguments,(function(e){var n=u.Ay.isStr... function _ (line 1) | function _(t){0!==t.indexOf("/")&&(t="/data/"+t);var e=q("getMugByPath",... FILE: corehq/apps/app_manager/static/app_manager/js/vellum/8985.js function s (line 1) | function s(){this.undoItems=[],this.redoItems=[],this.isUpdating=!1,this... function u (line 1) | function u(t){this.element=t,this.undoStack=new s} function o (line 1) | function o(t){const n=window.getSelection();if(0===n.rangeCount)return n... function i (line 1) | function i(t,n){if(!n)return;let e=t;n.nodePath.forEach((n=>{e=e.childNo... function l (line 1) | function l(t){const n=new Event("input",{bubbles:!0,cancelable:!0});t.di... FILE: corehq/apps/app_manager/static/app_manager/js/vellum/9084.js function t (line 2) | function t(e){this.$inputor=e,this.domInputor=this.$inputor[0]} function t (line 2) | function t(e){this.$inputor=e,this.domInputor=this.$inputor[0]} function t (line 2) | function t(e){this.$inputor=e} function t (line 2) | function t(t){this.currentFlag=null,this.controllers={},this.aliasMaps={... function r (line 2) | function r(t,r){this.app=t,this.at=r,this.$inputor=this.app.$inputor,thi... function n (line 2) | function n(){this.constructor=e} function r (line 2) | function r(){return r.__super__.constructor.apply(this,arguments)} function n (line 2) | function n(){this.constructor=e} function n (line 2) | function n(){return n.__super__.constructor.apply(this,arguments)} function t (line 2) | function t(e){this.context=e,this.at=this.context.at,this.storage=this.c... function t (line 2) | function t(t){this.context=t,this.$el=e("

    0;--t)e.removeChild(e.firs... function E (line 2) | function E(e,t){return C(e).appendChild(t)} function A (line 2) | function A(e,t,r,n){var i=document.createElement(e);if(r&&(i.className=r... function T (line 2) | function T(e,t,r,n){var i=A(e,t,r,n);return i.setAttribute("role","prese... function L (line 2) | function L(e,t){if(3==t.nodeType&&(t=t.parentNode),e.contains)return e.c... function M (line 2) | function M(){var e;try{e=document.activeElement}catch(t){e=document.body... function D (line 2) | function D(e,t){var r=e.className;j(t).test(r)||(e.className+=(r?" ":"")... function O (line 2) | function O(e,t){for(var r=e.split(" "),n=0;n"€"&&(e.toUpperCase()!=e.toLowerCase... function ee (line 2) | function ee(e,t){return t?!!(t.source.indexOf("\\w")>-1&&J(e))||t.test(e... function te (line 2) | function te(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;retu... function ne (line 2) | function ne(e){return e.charCodeAt(0)>=768&&re.test(e)} function ie (line 2) | function ie(e,t,r){for(;(r<0?t>0:tr?-1:1;;){if(t==r)return t;var i=(t+r)/2,... function ae (line 2) | function ae(e,t,r){var n;se=null;for(var i=0;i0} function ve (line 2) | function ve(e){e.prototype.on=function(e,t){ue(this,e,t)},e.prototype.of... function be (line 2) | function be(e){e.preventDefault?e.preventDefault():e.returnValue=!1} function ye (line 2) | function ye(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0} function xe (line 2) | function xe(e){return null!=e.defaultPrevented?e.defaultPrevented:0==e.r... function we (line 2) | function we(e){be(e),ye(e)} function ke (line 2) | function ke(e){return e.target||e.srcElement} function je (line 2) | function je(e){var t=e.which;return null==t&&(1&e.button?t=1:2&e.button?... function Ee (line 2) | function Ee(e){if(null==Se){var t=A("span","​");E(e,A("span",[t,document... function Ae (line 2) | function Ae(e){if(null!=Ne)return Ne;var t=E(e,document.createTextNode("... function Re (line 2) | function Re(e,t){arguments.length>2&&(t.dependencies=Array.prototype.sli... function Pe (line 2) | function Pe(e){if("string"==typeof e&&Fe.hasOwnProperty(e))e=Fe[e];else ... function Be (line 2) | function Be(e,t){t=Pe(t);var r=Ie[t.name];if(!r)return Be(e,"text/plain"... function qe (line 2) | function qe(e,t){R(t,ze.hasOwnProperty(e)?ze[e]:ze[e]={})} function He (line 2) | function He(e,t){if(!0===t)return t;if(e.copyState)return e.copyState(t)... function $e (line 2) | function $e(e,t){for(var r;e.innerMode&&(r=e.innerMode(t))&&r.mode!=e;)t... function We (line 2) | function We(e,t,r){return!e.startState||e.startState(t,r)} function Xe (line 2) | function Xe(e,t){if((t-=e.first)<0||t>=e.size)throw new Error("There is ... function Ke (line 2) | function Ke(e,t,r){var n=[],i=t.line;return e.iter(t.line,r.line+1,(func... function Ve (line 2) | function Ve(e,t,r){var n=[];return e.iter(t,r,(function(e){n.push(e.text... function Ge (line 2) | function Ge(e,t){var r=t-e.height;if(r)for(var n=e;n;n=n.parent)n.height... function Ze (line 2) | function Ze(e){if(null==e.parent)return null;for(var t=e.parent,r=z(t.li... function Qe (line 2) | function Qe(e,t){var r=e.first;e:do{for(var n=0;n=e.first&&te.lastLine())return t;var r,n=Xe(e,t);if(!qt(e,n))... function qt (line 2) | function qt(e,t){var r=wt&&t.markedSpans;if(r)for(var n=void 0,i=0;i=e.display.viewFrom&&tr||(n?e.left:e.right)>t)} function Jr (line 2) | function Jr(e,t,r,n,i){i-=$t(t);var o=Lr(e,t),s=Hr(t),a=0,l=t.text.lengt... function en (line 2) | function en(e,t,r,n,i,o,s){var a=oe((function(a){var l=i[a],c=1!=l.level... function tn (line 2) | function tn(e,t,r,n,i,o,s){var a=Zr(e,t,n,s),l=a.begin,c=a.end;/\s/.test... function rn (line 2) | function rn(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(... function nn (line 2) | function nn(e){if(null!=e.cachedCharWidth)return e.cachedCharWidth;var t... function on (line 2) | function on(e){for(var t=e.display,r={},n={},i=t.gutters.clientLeft,o=t.... function sn (line 2) | function sn(e){return e.scroller.getBoundingClientRect().left-e.sizer.ge... function an (line 2) | function an(e){var t=rn(e.display),r=e.options.lineWrapping,n=r&&Math.ma... function ln (line 2) | function ln(e){var t=e.doc,r=an(e);t.iter((function(e){var t=r(e);t!=e.h... function cn (line 2) | function cn(e,t,r,n){var i=e.display;if(!r&&"true"==ke(t).getAttribute("... function hn (line 2) | function hn(e,t){if(t>=e.display.viewTo)return null;if((t-=e.display.vie... function un (line 2) | function un(e,t,r,n){null==t&&(t=e.doc.first),null==r&&(r=e.doc.first+e.... function dn (line 2) | function dn(e,t,r){e.curOp.viewChanged=!0;var n=e.display,i=e.display.ex... function fn (line 2) | function fn(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display... function pn (line 2) | function pn(e,t,r,n){var i,o=hn(e,t),s=e.display.view;if(!wt||r==e.doc.f... function gn (line 2) | function gn(e){for(var t=e.display.view,r=0,n=0;n=e.display.viewTo)){... function si (line 2) | function si(e,t){var r=e.display,n=e.doc;if(t.editorIsHidden)return fn(e... function ai (line 2) | function ai(e,t){for(var r=t.viewport,n=!0;;n=!1){if(n&&e.options.lineWr... function li (line 2) | function li(e,t){var r=new oi(e,t);if(si(e,r)){Nn(e),ai(e,r);var n=Pn(e)... function ci (line 2) | function ci(e){var t=e.gutters.offsetWidth;e.sizer.style.marginLeft=t+"p... function hi (line 2) | function hi(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.disp... function ui (line 2) | function ui(e){var t=e.display,r=t.view;if(t.alignWidgets||t.gutters.fir... function di (line 2) | function di(e){if(!e.options.lineNumbers)return!1;var t=e.doc,r=Je(e.opt... function fi (line 2) | function fi(e,t){for(var r=[],n=!1,i=0;ie.first?at(e,et(t.line-1... function ao (line 2) | function ao(e){e.setSelection(et(e.firstLine(),0),et(e.lastLine()),H)} function lo (line 2) | function lo(e,t,r){var n={canceled:!1,from:t.from,to:t.to,text:t.text,or... function co (line 2) | function co(e,t,r){if(e.cm){if(!e.cm.curOp)return ei(e.cm,co)(e,t,r);if(... function ho (line 2) | function ho(e,t){if(1!=t.text.length||""!=t.text[0]||0!=tt(t.from,t.to))... function uo (line 2) | function uo(e,t,r){var n=e.cm&&e.cm.state.suppressEdits;if(!n||r){for(va... function fo (line 2) | function fo(e,t){if(0!=t&&(e.first+=t,e.sel=new wi(G(e.sel.ranges,(funct... function po (line 2) | function po(e,t,r,n){if(e.cm&&!e.cm.curOp)return ei(e.cm,po)(e,t,r,n);if... function go (line 2) | function go(e,t,r,n,i){var o;n||(n=r),tt(n,r)<0&&(r=(o=[n,r])[0],n=o[1])... function mo (line 2) | function mo(e,t,r,n){re.text.length?nu... function Jo (line 2) | function Jo(e,t,r){var n=Yo(e,t.ch,r);return null==n?null:new et(t.line,... function es (line 2) | function es(e,t,r,n,i){if(e){"rtl"==t.doc.direction&&(i=-i);var o=ce(r,t... function rs (line 2) | function rs(e,t){var r=Xe(e.doc,t),n=Pt(r);return n!=r&&(t=Ze(n)),es(!0,... function ns (line 2) | function ns(e,t){var r=rs(e,t.line),n=Xe(e.doc,r.line),i=ce(n,e.doc.dire... function is (line 2) | function is(e,t,r){if("string"==typeof t&&!(t=ts[t]))return!1;e.display.... function ss (line 2) | function ss(e,t,r,n){var i=e.state.keySeq;if(i){if(Ko(t))return"handled"... function as (line 2) | function as(e,t,r,n){var i=function(e,t,r){for(var n=0;n>24&255,n=t>>16&255,i=t>>8&255,o=255&t,s=e.sbox[... function c (line 2) | function c(e,t,r){let n,o=t,s=r;for(let t=0;t>>8&16711935} function c (line 2) | function c(e,t,r,n,i,o,s){var a=e+(t&r|~t&n)+i+s;return(a<>>32-o)+t} function h (line 2) | function h(e,t,r,n,i,o,s){var a=e+(t&n|r&~n)+i+s;return(a<>>32-o)+t} function u (line 2) | function u(e,t,r,n,i,o,s){var a=e+(t^r^n)+i+s;return(a<>>32-o)+t} function d (line 2) | function d(e,t,r,n,i,o,s){var a=e+(r^(t|~n))+i+s;return(a<>>32-o)+t} function t (line 2) | function t(e,t,r,n){var i,o=this._iv;o?(i=o.slice(0),this._iv=void 0):i=... function t (line 2) | function t(e){if(255&~(e>>24))e+=1<<24;else{var t=e>>16&255,r=e>>8&255,n... function l (line 2) | function l(){for(var e=this._X,t=this._C,r=0;r<8;r++)o[r]=t[r];for(t[0]=... function l (line 2) | function l(){for(var e=this._X,t=this._C,r=0;r<8;r++)o[r]=t[r];for(t[0]=... function o (line 2) | function o(){for(var e=this._S,t=this._i,r=this._j,n=0,i=0;i<4;i++){r=(r... function f (line 2) | function f(e,t,r){return e^t^r} function p (line 2) | function p(e,t,r){return e&t|~e&r} function g (line 2) | function g(e,t,r){return(e|~t)^r} function m (line 2) | function m(e,t,r){return e&r|t&~r} function _ (line 2) | function _(e,t,r){return e^(t|~r)} function v (line 2) | function v(e,t){return e<>>32-t} function t (line 2) | function t(t){for(var r=e.sqrt(t),n=2;n<=r;n++)if(!(t%n))return!1;return!0} function r (line 2) | function r(e){return 4294967296*(e-(0|e))|0} function a (line 2) | function a(){return i.create.apply(i,arguments)} function d (line 2) | function d(e,t){var r=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=r,... function f (line 2) | function f(e,t){var r=(this._rBlock>>>e^this._lBlock)&t;this._lBlock^=r,... function t (line 2) | function t(e,t){e&&(this.encoding=e),t&&(this.version=t)} function r (line 2) | function r(e){for(var t=e.c.length;t--;)"object"==typeof e.c[t]&&r(e.c[t... function n (line 2) | function n(e,t,r,i){var o,s,a=t+"<"+e.n,l=e.c.length,c=0;for(o in e.a)a+... function t (line 2) | function t(){console.log.apply(console,arguments)} function n (line 2) | function n(e,t){var n;for(n in this.list=e,this.options=t=t||{},r)r.hasO... function i (line 2) | function i(e){return"[object Array]"===Object.prototype.toString.call(e)} function o (line 2) | function o(e,t){t=t||{},this.options=t,this.options.location=t.location|... function n (line 2) | function n(e){return Array.prototype.slice.call(arguments,1).forEach((fu... function i (line 2) | function i(e){return Object.prototype.toString.call(e)} function o (line 2) | function o(e){return"[object Function]"===i(e)} function s (line 2) | function s(e){return e.replace(/[.?*+^$[\]\\(){}|-]/g,"\\$&")} function h (line 2) | function h(e){var t=e.re=r(2879)(e.__opts__),n=e.__tlds__.slice();functi... function u (line 2) | function u(e,t){var r=e.__index__,n=e.__last_index__,i=e.__text_cache__.... function d (line 2) | function d(e,t){var r=new u(e,t);return e.__compiled__[r.schema].normali... function f (line 2) | function f(e,t){if(!(this instanceof f))return new f(e,t);var r;t||(r=e,... function i (line 2) | function i(e,t){return n.call(e,t)} function o (line 2) | function o(e){return!(e>=55296&&e<=57343||e>=64976&&e<=65007||!(65535&~e... function s (line 2) | function s(e){if(e>65535){var t=55296+((e-=65536)>>10),r=56320+(1023&e);... function p (line 2) | function p(e){return f[e]} function g (line 2) | function g(e){var t=e.trim().toLowerCase();return!f.test(t)||!!p.test(t)} function _ (line 2) | function _(e){var t=h.parse(e,!0);if(t.hostname&&(!t.protocol||m.indexOf... function v (line 2) | function v(e){var t=h.parse(e,!0);if(t.hostname&&(!t.protocol||m.indexOf... function b (line 2) | function b(e,t){if(!(this instanceof b))return new b(e,t);t||n.isString(... function o (line 2) | function o(){this.ruler=new n;for(var e=0;e/i.test(e)} function o (line 2) | function o(e,t){return i[t.toLowerCase()]} function s (line 2) | function s(e){var t,r,i=0;for(t=e.length-1;t>=0;t--)"text"!==(r=e[t]).ty... function a (line 2) | function a(e){var r,n,i=0;for(r=e.length-1;r>=0;r--)"text"!==(n=e[r]).ty... function l (line 2) | function l(e,t,r){return e.substr(0,t)+r+e.substr(t+1)} function c (line 2) | function c(e,t){var r,s,c,h,u,d,f,p,g,m,_,v,b,y,x,w,k,j,S,N,C;for(S=[],r... function i (line 2) | function i(e,t,r){this.src=e,this.env=r,this.tokens=[],this.inlineMode=!... function t (line 2) | function t(e,t){var r,n,i,o,s,a,l,c,h={},u=t.length;if(u){var d=0,f=-2,p... function t (line 2) | function t(e,t){var r,n,i,o,s,a;for(r=t.length-1;r>=0;r--)95!==(n=t[r]).... function a (line 2) | function a(e,t,r,n){this.src=e,this.env=r,this.md=t,this.tokens=n,this.t... function t (line 2) | function t(e,t){var r,n,i,o,s,a=[],l=t.length;for(r=0;r1&&(n=r[0]+"@",e=... function f (line 2) | function f(e){const t=[];let r=0;const n=e.length;for(;r0||ve("1 or more",e)} function we (line 2) | function we(e){e.length>1||ve("2 or more",e)} function ke (line 2) | function ke(e){return 1===arguments.length||be(arguments),A(e)&&e.SN_ima... function je (line 2) | function je(e){return function(t){return 1===arguments.length||be(argume... function Se (line 2) | function Se(e){return function(t,r){var n=arguments.length;if(n>1||we(ar... function Ne (line 2) | function Ne(e){return function(t){var r=arguments.length;r>0||xe(argumen... function Ce (line 2) | function Ce(e){_e("&assertion","div/mod second argument is zero",e)} function Ee (line 2) | function Ee(e,t){return function(r,n){if(2===arguments.length||ye(argume... function Ae (line 2) | function Ae(e){return e.toString(2)} function Te (line 2) | function Te(t){var r=Ae(e(t)),n=r.indexOf(".");return-1===n?0:r.length-n-1} function Le (line 2) | function Le(e){return o(2,Te(e))} function Me (line 2) | function Me(e){return e<9007199254740992&&e>-9007199254740992?mt(e):new ... function De (line 2) | function De(e,n){return n>0?t(e/n):n<0?r(e/n):(0==n&&Ce(E(n)),NaN)} function Oe (line 2) | function Oe(e){return function(){return e(this)}} function Ie (line 2) | function Ie(e,t){return function(){var r=e(this);return d(r)?t(this):E(r)}} function qe (line 2) | function qe(e){return le(e.SN_magnitude().SN_log(),e.SN_angle())} function He (line 2) | function He(e){return gt.SN_multiply(pt.SN_multiply(e).SN_add(ht.SN_subt... function $e (line 2) | function $e(e){return ze.SN_divide(dt).SN_subtract(He(e))} function We (line 2) | function We(e,t){if(e.SN_isZero()){if(t.SN_isZero())return E(1);if(t.SN_... function Ue (line 2) | function Ue(e,t){var r=Xe(e,t);return[r,e.SN_subtract(r.SN_multiply(t))]} function Xe (line 2) | function Xe(e,t){return t.SN_isNegative()?e.SN_divide(t).SN_ceiling():e.... function Ke (line 2) | function Ke(e,t){return e.SN_subtract(Xe(e,t).SN_multiply(t))} function Ve (line 2) | function Ve(e,t){return t.SN_isZero()?e:e.SN_isZero()&&t.SN_isUnit()?t.S... function Ge (line 2) | function Ge(e,t){return new Qe(e,t)} function Ze (line 2) | function Ze(e,t){return e.SN_isExact()?Ve(e,t):new Qe(e,t)} function Qe (line 2) | function Qe(e,t){this._x=e,this._y=t} function Ye (line 2) | function Ye(e,t){return"-"===t[0]||"+"===t[0]?e+t+"i":e+"+"+t+"i"} function Je (line 2) | function Je(e){return e._x.SN_square().SN_add(e._y.SN_square())} function et (line 2) | function et(e,t,r,n){return Ze(e.SN_multiply(r).SN_subtract(t.SN_multipl... function tt (line 2) | function tt(e,t,r){var n=Je(r);return et(e,t,r._x.SN_divide(n),r._y.SN_d... function rt (line 2) | function rt(e){var t="000000000000000".substring(0,15&e);return e>15&&(t... function nt (line 2) | function nt(e,t){t.SN_isZero()&&P();var r=Nt(e.SN_abs(),t.SN_abs());retu... function it (line 2) | function it(e,t){return t===ht?e:new ot(e,t)} function ot (line 2) | function ot(e,t){this._n=e,this._d=t} function st (line 2) | function st(e,t,r){var n=f(t,r);return n<9007199254740992?mt(e*n):jt(t,e... function at (line 2) | function at(e,t){for(var r=t.SN_abs(),n=e,i=ht;r.SN_isPositive();)r.SN_i... function lt (line 2) | function lt(e){this._=e} function mt (line 2) | function mt(e){return ft[e]||(-1==e?ut:new lt(e))} function _t (line 2) | function _t(e){return e.SN_negate()} function vt (line 2) | function vt(e){return e.SN_reciprocal()} function bt (line 2) | function bt(e,t){var r=e+t;return r>-9007199254740992&&r<900719925474099... function yt (line 2) | function yt(e,n,i){0===n&&P();var o=n>0?t(e/n):r(e/n);if(0===i)return mt... function wt (line 2) | function wt(e){return e.compareAbs(xt)>=0?new kt(e):mt(e.toJSValue())} function kt (line 2) | function kt(e){this._=e} function jt (line 2) | function jt(e,t,r){return n=BigInteger.parse(e,r),t<0&&(n=n.negate()),ne... function St (line 2) | function St(e,t){for(var r;0!==e;)r=e,e=t%e,t=r;return mt(t)} function Nt (line 2) | function Nt(e,t){if(e instanceof lt&&t instanceof lt)return St(e.valueOf... function Ct (line 2) | function Ct(e){var t=ie[e],r={};function n(e,i,o){e&&e.forEach((function... function n (line 2) | function n(e){return function(){return this.mainXPath()+this.predicateXP... function t (line 2) | function t(e){return function(){return this.id+"("+this.args.map(e).join... function n (line 2) | function n(e){return function(){var n="";this.predicates.length>0&&(n="[... function u (line 2) | function u(e){return function(){var t=e(this.left)+" "+a(this.type)+" "+... function t (line 2) | function t(e){return function(){return"-"+e(this.value)}} function Q (line 2) | function Q(){this.yy={}} function x (line 2) | function x(e,t){return t=null==t?e.length-1:+t,function(){for(var r=Math... function w (line 2) | function w(e){var t=typeof e;return"function"===t||"object"===t&&!!e} function k (line 2) | function k(e){return void 0===e} function j (line 2) | function j(e){return!0===e||!1===e||"[object Boolean]"===l.call(e)} function S (line 2) | function S(e){var t="[object "+e+"]";return function(e){return l.call(e)... function H (line 2) | function H(e,t){return null!=e&&c.call(e,t)} function U (line 2) | function U(e){return C(e)&&m(e)} function X (line 2) | function X(e){return function(){return e}} function K (line 2) | function K(e){return function(t){var r=e(t);return"number"==typeof r&&r>... function V (line 2) | function V(e){return function(t){return null==t?void 0:t[e]}} function ee (line 2) | function ee(e,t){t=function(e){for(var t={},r=e.length,n=0;n0&&(r=t.apply(this,ar... function ht (line 2) | function ht(e,t,r){t=Pe(t,r);for(var n,i=te(e),o=0,s=i.length;o0?0:i... function pt (line 2) | function pt(e,t,r,n){for(var i=(r=Pe(r,n,1))(t),o=0,s=J(e);o
      0;--t)e.removeChild(e.firs... function N (line 2) | function N(e,t){return C(e).appendChild(t)} function E (line 2) | function E(e,t,n,r){var i=document.createElement(e);if(n&&(i.className=n... function M (line 2) | function M(e,t,n,r){var i=E(e,t,n,r);return i.setAttribute("role","prese... function T (line 2) | function T(e,t){if(3==t.nodeType&&(t=t.parentNode),e.contains)return e.c... function I (line 2) | function I(){var e;try{e=document.activeElement}catch(t){e=document.body... function P (line 2) | function P(e,t){var n=e.className;A(t).test(n)||(e.className+=(n?" ":"")... function D (line 2) | function D(e,t){for(var n=e.split(" "),r=0;r"€"&&(e.toUpperCase()!=e.toLowerCase... function ee (line 2) | function ee(e,t){return t?!!(t.source.indexOf("\\w")>-1&&J(e))||t.test(e... function te (line 2) | function te(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;retu... function re (line 2) | function re(e){return e.charCodeAt(0)>=768&&ne.test(e)} function ie (line 2) | function ie(e,t,n){for(;(n<0?t>0:tn?-1:1;;){if(t==n)return t;var i=(t+n)/2,... function se (line 2) | function se(e,t,n){var r;oe=null;for(var i=0;i0} function _e (line 2) | function _e(e){e.prototype.on=function(e,t){de(this,e,t)},e.prototype.of... function ye (line 2) | function ye(e){e.preventDefault?e.preventDefault():e.returnValue=!1} function xe (line 2) | function xe(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0} function be (line 2) | function be(e){return null!=e.defaultPrevented?e.defaultPrevented:0==e.r... function we (line 2) | function we(e){ye(e),xe(e)} function ke (line 2) | function ke(e){return e.target||e.srcElement} function Ae (line 2) | function Ae(e){var t=e.which;return null==t&&(1&e.button?t=1:2&e.button?... function Ne (line 2) | function Ne(e){if(null==Se){var t=E("span","​");N(e,E("span",[t,document... function Ee (line 2) | function Ee(e){if(null!=je)return je;var t=N(e,document.createTextNode("... function Re (line 2) | function Re(e,t){arguments.length>2&&(t.dependencies=Array.prototype.sli... function Fe (line 2) | function Fe(e){if("string"==typeof e&&Le.hasOwnProperty(e))e=Le[e];else ... function qe (line 2) | function qe(e,t){t=Fe(t);var n=Oe[t.name];if(!n)return qe(e,"text/plain"... function ze (line 2) | function ze(e,t){R(t,Be.hasOwnProperty(e)?Be[e]:Be[e]={})} function He (line 2) | function He(e,t){if(!0===t)return t;if(e.copyState)return e.copyState(t)... function $e (line 2) | function $e(e,t){for(var n;e.innerMode&&(n=e.innerMode(t))&&n.mode!=e;)t... function Ue (line 2) | function Ue(e,t,n){return!e.startState||e.startState(t,n)} function Xe (line 2) | function Xe(e,t){if((t-=e.first)<0||t>=e.size)throw new Error("There is ... function We (line 2) | function We(e,t,n){var r=[],i=t.line;return e.iter(t.line,n.line+1,(func... function Qe (line 2) | function Qe(e,t,n){var r=[];return e.iter(t,n,(function(e){r.push(e.text... function Ge (line 2) | function Ge(e,t){var n=t-e.height;if(n)for(var r=e;r;r=r.parent)r.height... function Ke (line 2) | function Ke(e){if(null==e.parent)return null;for(var t=e.parent,n=B(t.li... function Ye (line 2) | function Ye(e,t){var n=e.first;e:do{for(var r=0;r=e.first&&te.lastLine())return t;var n,r=Xe(e,t);if(!zt(e,r))... function zt (line 2) | function zt(e,t){var n=wt&&t.markedSpans;if(n)for(var r=void 0,i=0;i h\\:... method buildMappingsFromXMLElements (line 2) | buildMappingsFromXMLElements(e){const t={};return e.forEach((e=>{const... method buildQuestionFromXMLElement (line 2) | buildQuestionFromXMLElement(e){const t={};for(let n=0;n=e.display.viewFrom&&tn||(r?e.left:e.right)>t)} function er (line 2) | function er(e,t,n,r,i){i-=$t(t);var a=In(e,t),o=$n(t),s=0,l=t.text.lengt... function tr (line 2) | function tr(e,t,n,r,i,a,o){var s=ae((function(s){var l=i[s],c=1!=l.level... function nr (line 2) | function nr(e,t,n,r,i,a,o){var s=Yn(e,t,r,o),l=s.begin,c=s.end;/\s/.test... function rr (line 2) | function rr(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(... function ir (line 2) | function ir(e){if(null!=e.cachedCharWidth)return e.cachedCharWidth;var t... function ar (line 2) | function ar(e){for(var t=e.display,n={},r={},i=t.gutters.clientLeft,a=t.... function or (line 2) | function or(e){return e.scroller.getBoundingClientRect().left-e.sizer.ge... function sr (line 2) | function sr(e){var t=rr(e.display),n=e.options.lineWrapping,r=n&&Math.ma... function lr (line 2) | function lr(e){var t=e.doc,n=sr(e);t.iter((function(e){var t=n(e);t!=e.h... function cr (line 2) | function cr(e,t,n,r){var i=e.display;if(!n&&"true"==ke(t).getAttribute("... function ur (line 2) | function ur(e,t){if(t>=e.display.viewTo)return null;if((t-=e.display.vie... function dr (line 2) | function dr(e,t,n,r){null==t&&(t=e.doc.first),null==n&&(n=e.doc.first+e.... function hr (line 2) | function hr(e,t,n){e.curOp.viewChanged=!0;var r=e.display,i=e.display.ex... function fr (line 2) | function fr(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display... function pr (line 2) | function pr(e,t,n,r){var i,a=ur(e,t),o=e.display.view;if(!wt||n==e.doc.f... function gr (line 2) | function gr(e){for(var t=e.display.view,n=0,r=0;r=e.display.viewTo)){... function oi (line 2) | function oi(e,t){var n=e.display,r=e.doc;if(t.editorIsHidden)return fr(e... function si (line 2) | function si(e,t){for(var n=t.viewport,r=!0;;r=!1){if(r&&e.options.lineWr... function li (line 2) | function li(e,t){var n=new ai(e,t);if(oi(e,n)){jr(e),si(e,n);var r=Fr(e)... function ci (line 2) | function ci(e){var t=e.gutters.offsetWidth;e.sizer.style.marginLeft=t+"p... function ui (line 2) | function ui(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.disp... function di (line 2) | function di(e){var t=e.display,n=t.view;if(t.alignWidgets||t.gutters.fir... function hi (line 2) | function hi(e){if(!e.options.lineNumbers)return!1;var t=e.doc,n=Je(e.opt... function fi (line 2) | function fi(e,t){for(var n=[],r=!1,i=0;ie.first?st(e,et(t.line-1... function sa (line 2) | function sa(e){e.setSelection(et(e.firstLine(),0),et(e.lastLine()),H)} function la (line 2) | function la(e,t,n){var r={canceled:!1,from:t.from,to:t.to,text:t.text,or... function ca (line 2) | function ca(e,t,n){if(e.cm){if(!e.cm.curOp)return ei(e.cm,ca)(e,t,n);if(... function ua (line 2) | function ua(e,t){if(1!=t.text.length||""!=t.text[0]||0!=tt(t.from,t.to))... function da (line 2) | function da(e,t,n){var r=e.cm&&e.cm.state.suppressEdits;if(!r||n){for(va... function ha (line 2) | function ha(e,t){if(0!=t&&(e.first+=t,e.sel=new wi(G(e.sel.ranges,(funct... function fa (line 2) | function fa(e,t,n,r){if(e.cm&&!e.cm.curOp)return ei(e.cm,fa)(e,t,n,r);if... function pa (line 2) | function pa(e,t,n,r,i){var a;r||(r=n),tt(r,n)<0&&(n=(a=[r,n])[0],r=a[1])... function ga (line 2) | function ga(e,t,n,r){ne.text.length?nu... function Za (line 2) | function Za(e,t,n){var r=Ya(e,t.ch,n);return null==r?null:new et(t.line,... function Ja (line 2) | function Ja(e,t,n,r,i){if(e){"rtl"==t.doc.direction&&(i=-i);var a=ce(n,t... function to (line 2) | function to(e,t){var n=Xe(e.doc,t),r=Ft(n);return r!=n&&(t=Ke(r)),Ja(!0,... function no (line 2) | function no(e,t){var n=to(e,t.line),r=Xe(e.doc,n.line),i=ce(r,e.doc.dire... function ro (line 2) | function ro(e,t,n){if("string"==typeof t&&!(t=eo[t]))return!1;e.display.... function ao (line 2) | function ao(e,t,n,r){var i=e.state.keySeq;if(i){if(Xa(t))return"handled"... function oo (line 2) | function oo(e,t,n,r){var i=function(e,t,n){for(var r=0;r"==i||"/"==i&&e.eat(">"))return ... function f (line 2) | function f(e,t){return function(n,r){for(;!n.eol();){if(n.match(t)){r.to... function p (line 2) | function p(e){return function(t,n){for(var r;null!=(r=t.next());){if("<"... function g (line 2) | function g(e,t,n){this.prev=e.context,this.tagName=t||"",this.indent=e.i... function m (line 2) | function m(e){e.context&&(e.context=e.context.prev)} function v (line 2) | function v(e,t){for(var n;;){if(!e.context)return;if(n=e.context.tagName... function _ (line 2) | function _(e,t,n){return"openTag"==e?(n.tagStart=t.column(),y):"closeTag... function y (line 2) | function y(e,t,n){return"word"==e?(n.tagName=t.current(),o="tag",k):l.al... function x (line 2) | function x(e,t,n){if("word"==e){var r=t.current();return n.context&&n.co... function b (line 2) | function b(e,t,n){return"endTag"!=e?(o="error",b):(m(n),_)} function w (line 2) | function w(e,t,n){return o="error",b(e,0,n)} function k (line 2) | function k(e,t,n){if("word"==e)return o="attribute",A;if("endTag"==e||"s... function A (line 2) | function A(e,t,n){return"equals"==e?S:(l.allowMissing||(o="error"),k(e,0... function S (line 2) | function S(e,t,n){return"string"==e?j:"word"==e&&l.allowUnquoted?(o="str... function j (line 2) | function j(e,t,n){return"string"==e?j:k(e,0,n)} function l (line 2) | function l(e,t){let n=t>>24&255,r=t>>16&255,i=t>>8&255,a=255&t,o=e.sbox[... function c (line 2) | function c(e,t,n){let r,a=t,o=n;for(let t=0;t>>8&16711935} function c (line 2) | function c(e,t,n,r,i,a,o){var s=e+(t&n|~t&r)+i+o;return(s<>>32-a)+t} function u (line 2) | function u(e,t,n,r,i,a,o){var s=e+(t&r|n&~r)+i+o;return(s<>>32-a)+t} function d (line 2) | function d(e,t,n,r,i,a,o){var s=e+(t^n^r)+i+o;return(s<>>32-a)+t} function h (line 2) | function h(e,t,n,r,i,a,o){var s=e+(n^(t|~r))+i+o;return(s<>>32-a)+t} function t (line 2) | function t(e,t,n,r){var i,a=this._iv;a?(i=a.slice(0),this._iv=void 0):i=... function t (line 2) | function t(e){if(255&~(e>>24))e+=1<<24;else{var t=e>>16&255,n=e>>8&255,r... function l (line 2) | function l(){for(var e=this._X,t=this._C,n=0;n<8;n++)a[n]=t[n];for(t[0]=... function l (line 2) | function l(){for(var e=this._X,t=this._C,n=0;n<8;n++)a[n]=t[n];for(t[0]=... function a (line 2) | function a(){for(var e=this._S,t=this._i,n=this._j,r=0,i=0;i<4;i++){n=(n... function f (line 2) | function f(e,t,n){return e^t^n} function p (line 2) | function p(e,t,n){return e&t|~e&n} function g (line 2) | function g(e,t,n){return(e|~t)^n} function m (line 2) | function m(e,t,n){return e&n|t&~n} function v (line 2) | function v(e,t,n){return e^(t|~n)} function _ (line 2) | function _(e,t){return e<>>32-t} function t (line 2) | function t(t){for(var n=e.sqrt(t),r=2;r<=n;r++)if(!(t%r))return!1;return!0} function n (line 2) | function n(e){return 4294967296*(e-(0|e))|0} function s (line 2) | function s(){return i.create.apply(i,arguments)} function h (line 2) | function h(e,t){var n=(this._lBlock>>>e^this._rBlock)&t;this._rBlock^=n,... function f (line 2) | function f(e,t){var n=(this._rBlock>>>e^this._lBlock)&t;this._lBlock^=n,... function t (line 2) | function t(){this.Diff_Timeout=1,this.Diff_EditCost=4,this.Match_Thresho... function i (line 2) | function i(e){for(var t="",i=0,a=-1,o=n.length;a=55296&&e<=57343||e>=64976&&e<=65007||!(65535&~e... function o (line 2) | function o(e){if(e>65535){var t=55296+((e-=65536)>>10),n=56320+(1023&e);... function p (line 2) | function p(e){return f[e]} function g (line 2) | function g(e){var t=e.trim().toLowerCase();return!f.test(t)||!!p.test(t)} function v (line 2) | function v(e){var t=u.parse(e,!0);if(t.hostname&&(!t.protocol||m.indexOf... function _ (line 2) | function _(e){var t=u.parse(e,!0);if(t.hostname&&(!t.protocol||m.indexOf... function y (line 2) | function y(e,t){if(!(this instanceof y))return new y(e,t);t||r.isString(... function a (line 2) | function a(){this.ruler=new r;for(var e=0;e/i.test(e)} function a (line 2) | function a(e,t){return i[t.toLowerCase()]} function o (line 2) | function o(e){var t,n,i=0;for(t=e.length-1;t>=0;t--)"text"!==(n=e[t]).ty... function s (line 2) | function s(e){var n,r,i=0;for(n=e.length-1;n>=0;n--)"text"!==(r=e[n]).ty... function l (line 2) | function l(e,t,n){return e.substr(0,t)+n+e.substr(t+1)} function c (line 2) | function c(e,t){var n,o,c,u,d,h,f,p,g,m,v,_,y,x,b,w,k,A,S,j,C;for(S=[],n... function i (line 2) | function i(e,t,n){this.src=e,this.env=n,this.tokens=[],this.inlineMode=!... function t (line 2) | function t(e,t){var n,r,i,a,o,s,l,c,u={},d=t.length;if(d){var h=0,f=-2,p... function t (line 2) | function t(e,t){var n,r,i,a,o,s;for(n=t.length-1;n>=0;n--)95!==(r=t[n]).... function s (line 2) | function s(e,t,n,r){this.src=e,this.env=n,this.md=t,this.tokens=r,this.t... function t (line 2) | function t(e,t){var n,r,i,a,o,s=[],l=t.length;for(n=0;n1&&(r=n[0]+"@",e=... function f (line 2) | function f(e){const t=[];let n=0;const r=e.length;for(;n0||_e("1 or more",e)} function we (line 2) | function we(e){e.length>1||_e("2 or more",e)} function ke (line 2) | function ke(e){return 1===arguments.length||ye(arguments),E(e)&&e.SN_ima... function Ae (line 2) | function Ae(e){return function(t){return 1===arguments.length||ye(argume... function Se (line 2) | function Se(e){return function(t,n){var r=arguments.length;if(r>1||we(ar... function je (line 2) | function je(e){return function(t){var n=arguments.length;n>0||be(argumen... function Ce (line 2) | function Ce(e){ve("&assertion","div/mod second argument is zero",e)} function Ne (line 2) | function Ne(e,t){return function(n,r){if(2===arguments.length||xe(argume... function Ee (line 2) | function Ee(e){return e.toString(2)} function Me (line 2) | function Me(t){var n=Ee(e(t)),r=n.indexOf(".");return-1===r?0:n.length-r-1} function Te (line 2) | function Te(e){return a(2,Me(e))} function Ie (line 2) | function Ie(e){return e<9007199254740992&&e>-9007199254740992?mt(e):new ... function Pe (line 2) | function Pe(e,n){return n>0?t(e/n):n<0?r(e/n):(0==n&&Ce(N(n)),NaN)} function De (line 2) | function De(e){return function(){return e(this)}} function Oe (line 2) | function Oe(e,t){return function(){var n=e(this);return h(n)?t(this):N(n)}} function ze (line 2) | function ze(e){return le(e.SN_magnitude().SN_log(),e.SN_angle())} function He (line 2) | function He(e){return gt.SN_multiply(pt.SN_multiply(e).SN_add(ut.SN_subt... function $e (line 2) | function $e(e){return Be.SN_divide(ht).SN_subtract(He(e))} function Ue (line 2) | function Ue(e,t){if(e.SN_isZero()){if(t.SN_isZero())return N(1);if(t.SN_... function Ve (line 2) | function Ve(e,t){var n=Xe(e,t);return[n,e.SN_subtract(n.SN_multiply(t))]} function Xe (line 2) | function Xe(e,t){return t.SN_isNegative()?e.SN_divide(t).SN_ceiling():e.... function We (line 2) | function We(e,t){return e.SN_subtract(Xe(e,t).SN_multiply(t))} function Qe (line 2) | function Qe(e,t){return t.SN_isZero()?e:e.SN_isZero()&&t.SN_isUnit()?t.S... function Ge (line 2) | function Ge(e,t){return new Ye(e,t)} function Ke (line 2) | function Ke(e,t){return e.SN_isExact()?Qe(e,t):new Ye(e,t)} function Ye (line 2) | function Ye(e,t){this._x=e,this._y=t} function Ze (line 2) | function Ze(e,t){return"-"===t[0]||"+"===t[0]?e+t+"i":e+"+"+t+"i"} function Je (line 2) | function Je(e){return e._x.SN_square().SN_add(e._y.SN_square())} function et (line 2) | function et(e,t,n,r){return Ke(e.SN_multiply(n).SN_subtract(t.SN_multipl... function tt (line 2) | function tt(e,t,n){var r=Je(n);return et(e,t,n._x.SN_divide(r),n._y.SN_d... function nt (line 2) | function nt(e){var t="000000000000000".substring(0,15&e);return e>15&&(t... function rt (line 2) | function rt(e,t){t.SN_isZero()&&F();var n=jt(e.SN_abs(),t.SN_abs());retu... function it (line 2) | function it(e,t){return t===ut?e:new at(e,t)} function at (line 2) | function at(e,t){this._n=e,this._d=t} function ot (line 2) | function ot(e,t,n){var r=f(t,n);return r<9007199254740992?mt(e*r):At(t,e... function st (line 2) | function st(e,t){for(var n=t.SN_abs(),r=e,i=ut;n.SN_isPositive();)n.SN_i... function lt (line 2) | function lt(e){this._=e} function mt (line 2) | function mt(e){return ft[e]||(-1==e?dt:new lt(e))} function vt (line 2) | function vt(e){return e.SN_negate()} function _t (line 2) | function _t(e){return e.SN_reciprocal()} function yt (line 2) | function yt(e,t){var n=e+t;return n>-9007199254740992&&n<900719925474099... function xt (line 2) | function xt(e,n,i){0===n&&F();var a=n>0?t(e/n):r(e/n);if(0===i)return mt... function wt (line 2) | function wt(e){return e.compareAbs(bt)>=0?new kt(e):mt(e.toJSValue())} function kt (line 2) | function kt(e){this._=e} function At (line 2) | function At(e,t,r){return n=BigInteger.parse(e,r),t<0&&(n=n.negate()),ne... function St (line 2) | function St(e,t){for(var n;0!==e;)n=e,e=t%e,t=n;return mt(t)} function jt (line 2) | function jt(e,t){if(e instanceof lt&&t instanceof lt)return St(e.valueOf... function Ct (line 2) | function Ct(e){var t=ie[e],n={};function r(e,i,a){e&&e.forEach((function... function r (line 2) | function r(e){return function(){return this.mainXPath()+this.predicateXP... function t (line 2) | function t(e){return function(){return this.id+"("+this.args.map(e).join... function r (line 2) | function r(e){return function(){var r="";this.predicates.length>0&&(r="[... function d (line 2) | function d(e){return function(){var t=e(this.left)+" "+s(this.type)+" "+... function t (line 2) | function t(e){return function(){return"-"+e(this.value)}} function Y (line 2) | function Y(){this.yy={}} function f (line 2) | function f(e,t,n){var i=t.form;return{at:e,displayTpl:d(),insertTpl:n.in... function i (line 2) | function i(){e.one("focus",(function(){e.atwho(f(t.form.getBasePath(),t,... function i (line 2) | function i(e,t){const n={},i={},o={};new Set([...Object.keys(e),...Objec... function a (line 2) | function a(e,t,n){n[e]=n[e]||[],n[e].push(t)} function p (line 2) | function p(e){e.addQuestionButton.show(),e.container.hide(),e.input.val(... function g (line 2) | function g(e){function t(e,t){if(!t)throw new Error("getArg parameter is... function m (line 2) | function m(e){if(e.input.atwho("isSelecting"))a.Ay.defer(m,e);else{var t... function _ (line 2) | function _(e,t){0===e.length&&(e=a()("body")),g.css({top:e.offset().top}... function y (line 2) | function y(e,t){e.focus();var n=g.val();return t&&n&&g.val(""),n} function b (line 2) | function b(e){var t="1",n=/^(.*)Itext(?::([^-]+)-(.*))?$/.exec(e);return... function w (line 2) | function w(e){var t=r.data.core.mugTypes.allTypes[e];return t&&t.typeNam... function k (line 2) | function k(e,t){for(var n,i;;){if(!e.parent||t.id.startsWith(e.id+"/")){... function A (line 2) | function A(e){var t=r.getCurrentlySelectedMug(!0,!0),n={};if(e||(f().usa... function S (line 2) | function S(e){f().workflow("Paste questions in form builder");var t=u.A.... function e (line 2) | function e(){n.hide(),r.removeClass("hide"),i.val(A(!0))} function F (line 2) | function F(e,t,n){if("init"!==n||"core"===e)if(0!==n.indexOf("_"))t.plug... function t (line 2) | function t(){e.opts().core.onReady.apply(e)} function we (line 2) | function we(e,t){var n=t.p.getDefinition(e);return n&&t.isVisible(e)?{wi... function c (line 2) | function c(){a.empty().append(B.A.util.getMessages(e,null))} function d (line 2) | function d(e){var t=e.$f.find(".fd-external-sources-container"),n=t.find... function h (line 2) | function h(e){var t=e.$f.find(".fd-accessory-pane"),n=t.find(".fd-head-e... function l (line 2) | function l(e){function t(t){e.cache={sources:t.length?t:[{id:"",uri:"",p... function c (line 2) | function c(e,t,n){var r=e.cache;if(r.hasOwnProperty(t))return r[t];var i... function t (line 2) | function t(e,t){if(e.length<=t)return e;let n="",r=e;for(;r.length>t;)n+... function n (line 2) | function n(e,n){let r=e.split(" "),i="";for(let e of r)i+=t(e,n),i+=" ";... function r (line 2) | function r(t,r,o,c){return function(t,u){if(a.Ay.contains(e.invalidCaseP... function i (line 2) | function i(e,t,n){var o=a.Ay.chain(e&&e.structure).map((function(e,a){re... function t (line 2) | function t(e){var t=e.toHashtag;return e.toHashtag=function(e){var n=t(e... function T (line 2) | function T(e,t){if(t){l.A.isInvalid(t)&&(t=l.A.unescapeXPath(t,e));try{r... function b (line 2) | function b(e,t,n){t=d.xpath.models.expressionTypeEnumToXPathLiteral(t),v... function v (line 2) | function v(e){return function(t,n,r){if(t){var i=l.A.query(t);i.find("ou... function n (line 2) | function n(e,t,n,i){var a=[e];return r.Ay.each(n,(function(e){r.Ay.each(... function n (line 2) | function n(r){e.currentXY=[r.pageX,r.pageY],t.off("mousemove",n)} function r (line 2) | function r(n){var i=e.currentXY[0]-n.pageX,a=e.currentXY[1]-n.pageY;Math... function c (line 2) | function c(e,t){if(this._text=e||"",this._xpathParser=t,"string"==typeof... function u (line 2) | function u(e,t){t.allowedDataNodeReferences=t.allowedDataNodeReferences|... function n (line 2) | function n(t,n){if(n.ref){if(n.mug!==e.ufid)throw new Error([e,n]);i[n.r... function r (line 2) | function r(t){o[t]=i.addReferences(e,t,n)} function o (line 2) | function o(e){if(!e)return e;var t=new c(e,r.xpath),n=t.getText();t.upda... function l (line 2) | function l(e,t,n,r){e&&/\binstance\(/.test(e)&&(r.instances=a.Ay.extend(... function c (line 2) | function c(e,t,n,r){u(e,n);var i=e[t];if(i)try{i=n.form.xpath.parse(i).t... function u (line 2) | function u(e,t){e.hasOwnProperty("instances")&&!a.Ay.isEmpty(e.instances... function d (line 2) | function d(e){e.p.conflictedNodeId=null} function t (line 2) | function t(e){return e?"limited"===e.options.possibleDataParent?e:t(e.pa... function m (line 2) | function m(){this.messages={}} function _ (line 2) | function _(e){this.__data={},this.__spec=e.spec,this.__mug=e.mug,this.sh... function Q (line 2) | function Q(e,t,n,r){var s=null;o.A.eventuality(this),r&&(s=a.Ay.object(a... function G (line 2) | function G(e,t,n){var r=this,s=n.features.group_in_field_list;W.normal.I... function g (line 2) | function g(e){var t=this;function n(e){i(e),t.dataset.push(m(e.mug)),t.f... function m (line 2) | function m(e){if(e){var t=e.form.vellum.getMugDisplayName(e);return{id:e... function v (line 2) | function v(e){var t=[];return e.richText&&(t=r.Ay.chain(e.vellum.datasou... function b (line 2) | function b(){var e=a()(".fd-undo-delete");return!!e.hasClass("in")&&e.le... function w (line 2) | function w(e){var t,n;e.length&&!b()?(t=r.Ay.map(e,(function(e){return e... function k (line 2) | function k(){this.undoStack=[],f.A.eventuality(this)} function i (line 2) | function i(e,t){n.writeStartElement("setvalue"),n.writeAttributeString("... function O (line 2) | function O(e,t,n){var i=this;this.setValues=[],this._setValueId=1,this._... function i (line 2) | function i(t){return t.attributes.id===e} function F (line 2) | function F(e){return r.Ay.chain(a()(e)[0].attributes).map((function(e){r... function q (line 2) | function q(e){var t=function(t,n){return t?n.changeMugType(t,e):t=n.mugT... function B (line 2) | function B(e){var t=function(t,n){return n.mugTypes.make(e,n)};return t.... function z (line 2) | function z(e,t){if(!e)return t;var n=e.toLowerCase().replace(/\s/g,"");r... function H (line 2) | function H(e,t,n,r){if(!e)return null;var i,a,o=U(t,e,"ref",r),s=t.tree.... function $ (line 2) | function $(e,t,n){var r;try{r=n.xpath.parse(e)}catch(t){return e}return ... function U (line 2) | function U(e,t,n,r){var i=(r?t.xmlAttr:t.popAttr).bind(t),a=i("vellum:"+... function n (line 2) | function n(e){return e.value.ufid} function i (line 2) | function i(t,o){for(var s=function(e){var t=0,n=e.length;return function... function w (line 2) | function w(e){const t=(new DOMParser).parseFromString(e,"text/html"),n=d... function k (line 2) | function k(e,t,n){function r(e){var t=0,n=Array.from(e.childNodes),i=n.l... function j (line 2) | function j(e){var t=e.value;return r.Ay.each(S,(function(n){e[n]&&(t=A[n... function C (line 2) | function C(e,t){var n,r,i,o,s,l,c=function(e,t){if(!y.test(e)){if(t.isVa... function N (line 2) | function N(e,t){var n=O(a()(t)),i=e.normalizeHashtag(n.value,!0),o=r.Ay.... function E (line 2) | function E(e,t,n){var r,i,a=p.A.xhtml(e),o={};return r=n?function(){var ... function M (line 2) | function M(e,t){return(e=a()("
      ").text(p.A.humanize(e)).html()).re... function T (line 2) | function T(e,t){var n;return I(e)?(e=e.slice(15),n=d.A.transform):n=t.tr... function I (line 2) | function I(e){return e.startsWith(x)} function P (line 2) | function P(e,t,n){return e?function(e){return"

      "+(e=e.replace(/\n/g,"<... function D (line 2) | function D(e,t,n){return function(e,t,n){var r,i,o,s=p.A.xhtml(e),l={},c... function O (line 2) | function O(e){var t=e.xmlAttr("vellum:value")||e.xmlAttr("value")||e.xml... function R (line 2) | function R(e){return e?e.replace(/(%[YymnbdeHhMS3a])/g,(function(e,t){re... function F (line 2) | function F(e){var t,n,r=a()(e),i=r.closest(".form-control"),o=e.getAttri... function i (line 2) | function i(e,t=!1){const n=document.activeElement===r;let i;if(!n&&h&&f)... function s (line 2) | function s(e,t,n=0){n<5&&(null!=o(a()(e))?t():setTimeout((()=>s(e,t,n+1)... function u (line 2) | function u(e){const t=window.getSelection();if(!t.rangeCount)return;cons... function m (line 2) | function m(e){e.preventDefault();const r=window.getSelection();let i="";... function y (line 2) | function y(e){if(window.getSelection){const t=window.getSelection();if(t... function a (line 2) | function a(e,t){this.value=t,this.children=e||[],this.parent=null} function o (line 2) | function o(e,t){r.A.eventuality(this),this.rootNode=new a(null,null),thi... function a (line 2) | function a(e){return e=null===e||r.Ay.isUndefined(e)?"":String(e),i.test... function l (line 2) | function l(e){if(e<=s)throw new Error("last index "+s+" -> "+e);s=e} function r (line 2) | function r(){this.undoItems=[],this.redoItems=[],this.isUpdating=!1,this... function i (line 2) | function i(e){this.element=e,this.undoStack=new r} function a (line 2) | function a(e){const t=window.getSelection();if(0===t.rangeCount)return n... function o (line 2) | function o(e,t){if(!t)return;let n=e;t.nodePath.forEach((t=>{n=n.childNo... function s (line 2) | function s(e){const t=new Event("input",{bubbles:!0,cancelable:!0});e.di... function n (line 2) | function n(e){return(e=e.replace(/^\t+/gm,(function(e){return e.replace(... function t (line 2) | function t(e){try{return JSON.parse(e)}catch(t){return e}} function N (line 2) | function N(e,t){var n=d()(),r={};return e.messages.each(t,(function(i){c... function E (line 2) | function E(e,t){return e.data("vellum_widget",t),e} function a (line 2) | function a(){var t=e.form.vellum.nodeIDFromLabel(e);n.input.attr("placeh... function a (line 2) | function a(){var e={};return c.Ay.each(n.kvInput.find(".fd-kv-pair"),(fu... function a (line 2) | function a(e){e.on("DOMMouseScroll mousewheel",(function(e){var t=i()(th... function o (line 2) | function o(e,t,n){var r,a,o,s;e.hasClass("fd-content-vertical-divider")?... function o (line 2) | function o(e,t=!1){var n=l(e||""),r=document.implementation.createHTMLDo... function s (line 2) | function s(e,t){if(!e)return"";if(a.Ay.isString(e)){if(!/[<>&]/.test(e))... function l (line 2) | function l(e){return e.replace(/<(([\w:.-]+)(?:\s[^>]*|))\/>/g,"<$1>... function Q (line 2) | function Q(e){return function(t){return null==t?void 0:t[e]}} function ee (line 2) | function ee(e,t){t=function(e){for(var t={},n=e.length,r=0;r0&&(n=t.apply(this,ar... function ut (line 2) | function ut(e,t,n){t=Fe(t,n);for(var r,i=te(e),a=0,o=i.length;a0?0:i... function pt (line 2) | function pt(e,t,n,r){for(var i=(n=Fe(n,r,1))(t),a=0,o=J(e);a... function ee (line 2) | function ee(e){return function(t){return null==t?void 0:t[e]}} function oe (line 2) | function oe(e,t){t=function(e){for(var t={},n=e.length,r=0;rc?r=setTime... function Tt (line 2) | function Tt(e,t){return bt(t,e)} function It (line 2) | function It(e){return function(){return!e.apply(this,arguments)}} function Pt (line 2) | function Pt(){var e=arguments,t=e.length-1;return function(){for(var n=t... function Dt (line 2) | function Dt(e,t){return function(){if(--e<1)return t.apply(this,argument... function Ot (line 2) | function Ot(e,t){var n;return function(){return--e>0&&(n=t.apply(this,ar... function Rt (line 2) | function Rt(e,t,n){t=Ye(t,n);for(var r,i=se(e),a=0,o=i.length;a0?0:... function zt (line 2) | function zt(e,t,n,r){for(var i=(n=Ye(n,r,1))(t),a=0,o=ae(e);a=3;return... function Zt (line 2) | function Zt(e,t,n){var r=[];return t=Ye(t,n),Wt(e,(function(e,n,i){t(e,n... function Jt (line 2) | function Jt(e,t,n){return Zt(e,It(Ye(t)),n)} function en (line 2) | function en(e,t,n){t=Ye(t,n);for(var r=!kt(e)&&se(e),i=(r||e).length,a=0... method updateMappingsFromXML (line 2) | updateMappingsFromXML(e,t,n){if(!n)return;const r=n.find(":root > h\\:... method buildMappingsFromXMLElements (line 2) | buildMappingsFromXMLElements(e){const t={};return e.forEach((e=>{const... method buildQuestionFromXMLElement (line 2) | buildQuestionFromXMLElement(e){const t={};for(let n=0;n");return-1=... function h (line 2) | function h(e,t){var n=f(e[t+"ElementSibling"]);return n&&n+", "+n.replac... function f (line 2) | function f(e){if(!e)return null;var t=n()(e),r=t.xmlAttr("nodeset"),i=t.... function x (line 2) | function x(e,t){return{androidIntentAppId:t||"",intentXmlns:_,androidInt... function k (line 2) | function k(t,n,r){var i,a=(i=n.androidIntentAppId,e.Ay.find(p,(function(... function A (line 2) | function A(t,n){if("AndroidIntent"===n.__className||"PrintIntent"===n.__... function S (line 2) | function S(t,n,r,i){i[n]=e.Ay.clone(r.p[n]),""===i[n][""]&&delete i[n][""]} function N (line 2) | function N(e){return!e.custom_intents&&!e.templated_intents} function E (line 2) | function E(e){return e.templated_intents&&!e.custom_intents} function I (line 2) | function I(e,t){var r=n()(T()()),i=r.find("[name=instance-id]"),a=r.find... function P (line 2) | function P(t){function n(t,r){return e.Ay.map(t,(function(t,i){var a=[],... function d (line 2) | function d(){return u.query=l(),u} function h (line 2) | function h(e){u=e,c(e.query||"")} function s (line 2) | function s(t){return!t||e.Ay.all(e.Ay.map(t,e.Ay.isEmpty))} function l (line 2) | function l(){var e=d();return e?JSON.parse(e):o} function c (line 2) | function c(e){var t=o;s(e)||(t=JSON.stringify(e),u.equivalentOption(t)||... function $ (line 2) | function $(e,t){var n=t.form.getChildren(t);if(n.length)return n[0];var ... function i (line 2) | function i(t){return!t||e.Ay.all(e.Ay.map(t,e.Ay.isEmpty))} function a (line 2) | function a(e){var r=h(),i=D.autocompleteChoices(e,r?r.src:"");return q.A... function o (line 2) | function o(e){if(l=e,c=!0,u){var n=a(e);n&&n.length&&i(s.value)&&(t=W(t,... function V (line 2) | function V(e){var t=e.search(H);return-1!==t?{value:e.slice(0,t),filter:... function X (line 2) | function X(e){var t=e.form.vellum.datasources.getDataSources([]);return ... function W (line 2) | function W(t,n){return t.p.labelRef||(e.Ay.contains(n,"name")?t.p.labelR... function Q (line 2) | function Q(e,t){var n=m.A.text(e,t),r=e.p.itemsetData,i=r?r.instance:nul... function G (line 2) | function G(t){return function(n){var r=n.p[t];if(!r)return"pass";var i=n... function o (line 2) | function o(){return he.A.getDefaultItextId(e,r.path.replace(/Itext$/,""))} function s (line 2) | function s(){l(o()),u(!0)} function u (line 2) | function u(e){c.prop("checked",e)} function d (line 2) | function d(){return c.prop("checked")} function a (line 2) | function a(t){try{var n=e.form.xpath.parse(t);if(n instanceof e.form.xpa... function o (line 2) | function o(t,r){var a=!t||t===he.A.getDefaultItextId(e,r);if(t){var o=i[... function s (line 2) | function s(e,t){var n=e.xmlAttr("ref");return o(n?a(n):"",t)} function i (line 2) | function i(e,i){(i=r.A.query(i)).find("output").each((function(){!functi... function s (line 2) | function s(e,t){return function(n){var r=n.p[e];if(!(r&&r.hasHumanReadab... function l (line 2) | function l(t){function a(e,t){var i=r.A.query(e);return i.find("output")... function c (line 2) | function c(e){return e.trackLogicReferences=!0,e} function u (line 2) | function u(e){var t=e.p.constraintMsgItext;return e.p.constraintAttr||!t... function Ue (line 2) | function Ue(e){return e&&Te.hasOwnProperty(e.__className)} function Ve (line 2) | function Ve(e,t){t.addInstanceIfNotExists({id:"ledger",src:"jr://instanc... function Xe (line 2) | function Xe(e,t,n,r){var i=n.parentMug?n.absolutePathNoRoot+"/":"/";r.id... function Ye (line 2) | function Ye(e){return e&&"Repeat"===e.__className&&e.p.dataSource.idsQuery} function it (line 2) | function it(e){return!!e&&e.p.useCreate} function at (line 2) | function at(e){return!!e&&e.p.useClose} function ot (line 2) | function ot(e){return!!e&&e.p.useUpdate} function st (line 2) | function st(e){return!!e&&e.p.useIndex} function r (line 2) | function r(e,t,n){return t=t||[],new Ce.A.Node(t,{getNodeID:function(){r... function i (line 2) | function i(t,n){return e.Ay.chain(t).map((function(t,i){if(i)return r(i,... function r (line 2) | function r(n,r){return e.Ay.chain(r).omit("").map((function(e,r){return{... function Wt (line 2) | function Wt(t,n){n.defaultOptions=Qt(n.vellum.data.caseManagement,t),n.u... function Qt (line 2) | function Qt(e,t,n){const r=new Set(e.properties);Object.keys(e.caseMappi... function Gt (line 2) | function Gt(e,t,n){if(!e.absolutePath)return;const r=t.caseMappingsByQue... function Jt (line 2) | function Jt(e,t){const n={key:Kt,message:v.A.format(gettext('"{casePrope... class en (line 2) | class en{updateMappingsFromXML(e,t,n){if(!n)return;const r=n.find(":root... method updateMappingsFromXML (line 2) | updateMappingsFromXML(e,t,n){if(!n)return;const r=n.find(":root > h\\:... method buildMappingsFromXMLElements (line 2) | buildMappingsFromXMLElements(e){const t={};return e.forEach((e=>{const... method buildQuestionFromXMLElement (line 2) | buildQuestionFromXMLElement(e){const t={};for(let n=0;n1)... function g (line 2) | function g(e,t){this.fun=e,this.array=t} function m (line 2) | function m(){} function R (line 2) | function R(e){if(e.__esModule)return e;var t=Object.defineProperty({},"_... function L (line 2) | function L(e){throw new Error('Could not dynamically require "'+e+'". Pl... function k (line 2) | function k(){} function C (line 2) | function C(){C.init.call(this)} function O (line 2) | function O(e){return void 0===e._maxListeners?C.defaultMaxListeners:e._m... function P (line 2) | function P(e,t,r,n){var i,o,s,a;if("function"!=typeof r)throw new TypeEr... function q (line 2) | function q(e,t,r){var n=!1;function i(){e.removeListener(t,i),n||(n=!0,r... function I (line 2) | function I(e){var t=this._events;if(t){var r=t[e];if("function"==typeof ... function U (line 2) | function U(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r} function H (line 2) | function H(){M=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopq... function G (line 2) | function G(e,t,r){for(var n,i=[],o=t;o>1,l=-7,f=r?i-1:0... function $ (line 2) | function $(e,t,r,n,i,o){var s,a,u,c=8*o-i-1,l=(1<>1,p=23===i?M... function K (line 2) | function K(){return Q.TYPED_ARRAY_SUPPORT?2147483647:1073741823} function Z (line 2) | function Z(e,t){if(K()=K())throw new RangeError("Attempt to allocate Buffe... function ie (line 2) | function ie(e){return!(null==e||!e._isBuffer)} function oe (line 2) | function oe(e,t){if(ie(e))return e.length;if("undefined"!=typeof ArrayBu... function se (line 2) | function se(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)re... function ae (line 2) | function ae(e,t,r){var n=e[t];e[t]=e[r],e[r]=n} function ue (line 2) | function ue(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n... function ce (line 2) | function ce(e,t,r,n,i){var o,s=1,a=e.length,u=t.length;if(void 0!==n&&("... function le (line 2) | function le(e,t,r,n){r=Number(r)||0;var i=e.length-r;n?(n=Number(n))>i&&... function fe (line 2) | function fe(e,t,r,n){return Oe(ke(t,e.length-r),e,r,n)} function pe (line 2) | function pe(e,t,r,n){return Oe(function(e){for(var t=[],r=0;ri)&&(r=... function _e (line 2) | function _e(e,t,r){for(var n=e.slice(t,r),i="",o=0;oe.length)throw new RangeError("Index out... function Ne (line 2) | function Ne(e,t,r,n,i){return i||xe(e,0,r,4),$(e,t,r,n,23,4),r+4} function Re (line 2) | function Re(e,t,r,n,i){return i||xe(e,0,r,8),$(e,t,r,n,52,8),r+8} function ke (line 2) | function ke(e,t){var r;t=t||1/0;for(var n=e.length,i=null,o=[],s=0;s=t.length||i>=e.length);++i)... function Pe (line 2) | function Pe(e){return!!e.constructor&&"function"==typeof e.constructor.i... function qe (line 2) | function qe(){throw new Error("setTimeout has not been defined")} function Ie (line 2) | function Ie(){throw new Error("clearTimeout has not been defined")} function Be (line 2) | function Be(e){if(Ue===setTimeout)return setTimeout(e,0);if((Ue===qe||!U... function Ge (line 2) | function Ge(){Me&&je&&(Me=!1,je.length?Ve=je.concat(Ve):He=-1,Ve.length&... function ze (line 2) | function ze(){if(!Me){var e=Be(Ge);Me=!0;for(var t=Ve.length;t;){for(je=... function Ye (line 2) | function Ye(e){var t=new Array(arguments.length-1);if(arguments.length>1... function $e (line 2) | function $e(e,t){this.fun=e,this.array=t} function We (line 2) | function We(){} function ut (line 2) | function ut(e){if(!At(e)){for(var t=[],r=0;r=3&&... function dt (line 2) | function dt(e,t){var r=ht.styles[t];return r?"["+ht.colors[r][0]+"m"+e+... function gt (line 2) | function gt(e,t){return e} function mt (line 2) | function mt(e,t,r){if(e.customInspect&&t&&kt(t.inspect)&&t.inspect!==ht&... function yt (line 2) | function yt(e){return"["+Error.prototype.toString.call(e)+"]"} function bt (line 2) | function bt(e,t,r,n,i,o){var s,a,u;if((u=Object.getOwnPropertyDescriptor... function vt (line 2) | function vt(e){return Array.isArray(e)} function wt (line 2) | function wt(e){return"boolean"==typeof e} function Et (line 2) | function Et(e){return null===e} function _t (line 2) | function _t(e){return null==e} function Tt (line 2) | function Tt(e){return"number"==typeof e} function At (line 2) | function At(e){return"string"==typeof e} function St (line 2) | function St(e){return"symbol"==typeof e} function Dt (line 2) | function Dt(e){return void 0===e} function xt (line 2) | function xt(e){return Nt(e)&&"[object RegExp]"===Pt(e)} function Nt (line 2) | function Nt(e){return"object"==typeof e&&null!==e} function Rt (line 2) | function Rt(e){return Nt(e)&&"[object Date]"===Pt(e)} function Lt (line 2) | function Lt(e){return Nt(e)&&("[object Error]"===Pt(e)||e instanceof Err... function kt (line 2) | function kt(e){return"function"==typeof e} function Ct (line 2) | function Ct(e){return null===e||"boolean"==typeof e||"number"==typeof e|... function Ot (line 2) | function Ot(e){return Q.isBuffer(e)} function Pt (line 2) | function Pt(e){return Object.prototype.toString.call(e)} function qt (line 2) | function qt(e){return e<10?"0"+e.toString(10):e.toString(10)} function Ut (line 2) | function Ut(){console.log("%s - %s",function(){var e=new Date,t=[qt(e.ge... function Ft (line 2) | function Ft(e,t){if(!t||!Nt(t))return e;for(var r=Object.keys(t),n=r.len... function Bt (line 2) | function Bt(e,t){return Object.prototype.hasOwnProperty.call(e,t)} function Mt (line 2) | function Mt(){this.head=null,this.tail=null,this.length=0} function Gt (line 2) | function Gt(e){switch(this.encoding=(e||"utf8").toLowerCase().replace(/[... function zt (line 2) | function zt(e){return e.toString(this.encoding)} function Yt (line 2) | function Yt(e){this.charReceived=e.length%2,this.charLength=this.charRec... function $t (line 2) | function $t(e){this.charReceived=e.length%3,this.charLength=this.charRec... function Jt (line 2) | function Jt(e,t){e=e||{},this.objectMode=!!e.objectMode,t instanceof Sr&... function Kt (line 2) | function Kt(e){if(!(this instanceof Kt))return new Kt(e);this._readableS... function Zt (line 2) | function Zt(e,t,r,n,i){var o=function(e,t){var r=null;return Q.isBuffer(... function Xt (line 2) | function Xt(e,t){return e<=0||0===t.length&&t.ended?0:t.objectMode?1:e!=... function er (line 2) | function er(e){var t=e._readableState;t.needReadable=!1,t.emittedReadabl... function tr (line 2) | function tr(e){Wt("emit readable"),e.emit("readable"),or(e)} function rr (line 2) | function rr(e,t){for(var r=t.length;!t.reading&&!t.flowing&&!t.ended&&t.... function nr (line 2) | function nr(e){Wt("readable nexttick read 0"),e.read(0)} function ir (line 2) | function ir(e,t){t.reading||(Wt("resume read 0"),e.read(0)),t.resumeSche... function or (line 2) | function or(e){var t=e._readableState;for(Wt("flow",t.flowing);t.flowing... function sr (line 2) | function sr(e,t){return 0===t.length?null:(t.objectMode?r=t.buffer.shift... function ar (line 2) | function ar(e){var t=e._readableState;if(t.length>0)throw new Error('"en... function ur (line 2) | function ur(e,t){e.endEmitted||0!==e.length||(e.endEmitted=!0,t.readable... function cr (line 2) | function cr(e,t){for(var r=0,n=e.length;r=0;n--){var i=e[n];"."===i?e... function Hr (line 2) | function Hr(){for(var e="",t=!1,r=arguments.length-1;r>=-1&&!t;r--){var ... function Gr (line 2) | function Gr(e){var t=zr(e),r="/"===Xr(e,-1);return(e=jr(Qr(e.split("/"),... function zr (line 2) | function zr(e){return"/"===e.charAt(0)} function Yr (line 2) | function Yr(){return Gr(Qr(Array.prototype.slice.call(arguments,0),(func... function $r (line 2) | function $r(e,t){function r(e){for(var t=0;t2&&void 0!==arguments[2]?argumen... function Mn (line 2) | function Mn(e){return function(e){if(Array.isArray(e))return Hn(e)}(e)||... function Hn (line 2) | function Hn(e,t){(null==t||t>e.length)&&(t=e.length);for(var r=0,n=new A... function Gn (line 2) | function Gn(e,t,r,n,i,o,s){s||(s={}),void 0===s.context&&(s.context=4);v... function zn (line 2) | function zn(e){var t=[];e.oldFileName==e.newFileName&&t.push("Index: "+e... function Yn (line 2) | function Yn(e,t,r,n,i,o,s){return zn(Gn(e,t,r,n,i,o,s))} function Wn (line 2) | function Wn(e,t){if(t.length>e.length)return!1;for(var r=0;re.length)&&(t=e.length);for(var r=0,n=new A... function ei (line 2) | function ei(e){var t=gi(e.lines),r=t.oldLines,n=t.newLines;void 0!==r?e.... function ti (line 2) | function ti(e,t){if("string"==typeof e){if(/^@@/m.test(e)||/^Index:/m.te... function ri (line 2) | function ri(e){return e.newFileName&&e.newFileName!==e.oldFileName} function ni (line 2) | function ni(e,t,r){return t===r?t:(e.conflict=!0,{mine:t,theirs:r})} function ii (line 2) | function ii(e,t){return e.oldStart=1.5*r;return Math.round(e/r)+" "+n+(i?"s":... function ki (line 2) | function ki(){Li=!0;for(var e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmno... function Ci (line 2) | function Ci(e,t,r){for(var n,i=[],o=t;o>1,l=-7,f=r?i-1:... function qi (line 2) | function qi(e,t,r,n,i,o){var s,a,u,c=8*o-i-1,l=(1<>1,p=23===i?... function Fi (line 2) | function Fi(){return ji.TYPED_ARRAY_SUPPORT?2147483647:1073741823} function Bi (line 2) | function Bi(e,t){if(Fi()=Fi())throw new RangeError("Attempt to allocate Buff... function Yi (line 2) | function Yi(e){return!(null==e||!e._isBuffer)} function $i (line 2) | function $i(e,t){if(Yi(e))return e.length;if("undefined"!=typeof ArrayBu... function Wi (line 2) | function Wi(e,t,r){var n=!1;if((void 0===t||t<0)&&(t=0),t>this.length)re... function Ji (line 2) | function Ji(e,t,r){var n=e[t];e[t]=e[r],e[r]=n} function Ki (line 2) | function Ki(e,t,r,n,i){if(0===e.length)return-1;if("string"==typeof r?(n... function Zi (line 2) | function Zi(e,t,r,n,i){var o,s=1,a=e.length,u=t.length;if(void 0!==n&&("... function Qi (line 2) | function Qi(e,t,r,n){r=Number(r)||0;var i=e.length-r;n?(n=Number(n))>i&&... function Xi (line 2) | function Xi(e,t,r,n){return _o(wo(t,e.length-r),e,r,n)} function eo (line 2) | function eo(e,t,r,n){return _o(function(e){for(var t=[],r=0;ri)&&(r=... function lo (line 2) | function lo(e,t,r){for(var n=e.slice(t,r),i="",o=0;oe.length)throw new RangeError("Index out... function yo (line 2) | function yo(e,t,r,n,i){return i||mo(e,0,r,4),qi(e,t,r,n,23,4),r+4} function bo (line 2) | function bo(e,t,r,n,i){return i||mo(e,0,r,8),qi(e,t,r,n,52,8),r+8} function wo (line 2) | function wo(e,t){var r;t=t||1/0;for(var n=e.length,i=null,o=[],s=0;s=t.length||i>=e.length);++i)... function To (line 2) | function To(e){return null!=e&&(!!e._isBuffer||Ao(e)||function(e){return... function Ao (line 2) | function Ao(e){return!!e.constructor&&"function"==typeof e.constructor.i... function s (line 2) | function s(e,t){switch(t){case"function":return"[Function]";case"object"... function u (line 2) | function u(e,t,r){if(void 0===t)return l(e);var n=t*(r=r||1),i=Array.isA... function u (line 2) | function u(e,t){r.push(e),t(),r.pop()} function jo (line 2) | function jo(e,t,r,n){var i=t>=1.5*r;return Math.round(e/r)+" "+n+(i?"s":... function t (line 2) | function t(e){let n,i,o,s=null;function a(...e){if(!a.enabled)return;con... function r (line 2) | function r(e,r){const n=t(this.namespace+(void 0===r?":":r)+e);return n.... function n (line 2) | function n(e){return e.toString().substring(2,e.toString().length-2).rep... function $o (line 2) | function $o(e,t){var r=new TypeError(e);return r.code=zo.INVALID_REPORTE... function Wo (line 2) | function Wo(e,t){var r=new Error(e);return r.code=zo.INVALID_INTERFACE,r... function Jo (line 2) | function Jo(e,t,r){var n=new TypeError(e);return n.code=zo.INVALID_ARG_T... function Ko (line 2) | function Ko(e,t,r){switch(t){case"reporter":return $o(e,r);case"ui":retu... function fs (line 2) | function fs(e,t){this.title=e,this.fn=t,this.body=(t||"").toString(),thi... function s (line 2) | function s(i){var s=r.timeout();if(!r.timedOut){if(t)return function(e){... function vs (line 2) | function vs(e,t){ds.call(this,e,t),this.type="hook"} function d (line 2) | function d(e,t,r){if(!c(e))throw p.createInvalidArgumentTypeError('Suite... function e (line 2) | function e(e){e.reset()} function e (line 2) | function e(e){for(var t=0;t":">",s=[];for(var a in t)Object.protot... function u (line 2) | function u(e,n){t.call(this,e,n);var u=0,c="";function l(e,t){var r=t,n=... function c (line 2) | function c(e,r){t.call(this,e,r);var s=this,c=.5*t.window.width|0,l=e.to... function l (line 2) | function l(e,r){t.call(this,e,r);var n=this,l=.75*t.window.width|0,f=x.s... function a (line 2) | function a(e,r){t.call(this,e,r);var a=this,l=e.total;e.once(o,(function... function u (line 2) | function u(e){x.stdout.write(JSON.stringify(e)+"\n")} function c (line 2) | function c(e){return{title:e.title,fullTitle:e.fullTitle(),file:e.file,d... function La (line 2) | function La(e,t){if(!xa(e))throw Da('Test argument "title" should be a s... function Wa (line 2) | function Wa(){} function T (line 2) | function T(e={}){e={...a,...e},this.files=[],this.options=e,this.suite=n... function su (line 2) | function su(){for(var e=(new eu).getTime();ou.length&&(new eu).getTime()... function A (line 2) | function A(e,t){return t=null==t?e.length-1:+t,function(){for(var r=Math... function S (line 2) | function S(e){var t=typeof e;return"function"===t||"object"===t&&!!e} function D (line 2) | function D(e){return null===e} function x (line 2) | function x(e){return void 0===e} function N (line 2) | function N(e){return!0===e||!1===e||"[object Boolean]"===f.call(e)} function R (line 2) | function R(e){return!(!e||1!==e.nodeType)} function L (line 2) | function L(e){var t="[object "+e+"]";return function(e){return f.call(e)... function $ (line 2) | function $(e,t){return null!=e&&p.call(e,t)} function K (line 2) | function K(e){return!I(e)&&w(e)&&!isNaN(parseFloat(e))} function Z (line 2) | function Z(e){return C(e)&&v(e)} function Q (line 2) | function Q(e){return function(){return e}} function X (line 2) | function X(e){return function(t){var r=e(t);return"number"==typeof r&&r>... function ee (line 2) | function ee(e){return function(t){return null==t?void 0:t[e]}} function se (line 2) | function se(e,t){t=function(e){for(var t={},r=e.length,n=0;nc?n=setTime... function kt (line 2) | function kt(e,t){return Et(t,e)} function Ct (line 2) | function Ct(e){return function(){return!e.apply(this,arguments)}} function Ot (line 2) | function Ot(){var e=arguments,t=e.length-1;return function(){for(var r=t... function Pt (line 2) | function Pt(e,t){return function(){if(--e<1)return t.apply(this,argument... function qt (line 2) | function qt(e,t){var r;return function(){return--e>0&&(r=t.apply(this,ar... function Ut (line 2) | function Ut(e,t,r){t=Ze(t,r);for(var n,i=ae(e),o=0,s=i.length;o0?0:... function Vt (line 2) | function Vt(e,t,r,n){for(var i=(r=Ze(r,n,1))(t),o=0,s=oe(e);o=3;return... function Qt (line 2) | function Qt(e,t,r){var n=[];return t=Ze(t,r),$t(e,(function(e,r,i){t(e,r... function Xt (line 2) | function Xt(e,t,r){return Qt(e,Ct(Ze(t)),r)} function er (line 2) | function er(e,t,r){t=Ze(t,r);for(var n=!Tt(e)&&ae(e),i=(n||e).length,o=0... function tr (line 2) | function tr(e,t,r){t=Ze(t,r);for(var n=!Tt(e)&&ae(e),i=(n||e).length,o=0... function rr (line 2) | function rr(e,t,r,n){return Tt(e)||(e=Ne(e)),("number"!=typeof r||n)&&(r... function ir (line 2) | function ir(e,t){return Wt(e,$e(t))} function or (line 2) | function or(e,t){return Qt(e,Ye(t))} function sr (line 2) | function sr(e,t,r){var n,i,o=-1/0,s=-1/0;if(null==t||"number"==typeof t&... function ar (line 2) | function ar(e,t,r){var n,i,o=1/0,s=1/0;if(null==t||"number"==typeof t&&"... function ur (line 2) | function ur(e,t,r){if(null==t||r)return Tt(e)||(e=Ne(e)),e[rt(e.length-1... function cr (line 2) | function cr(e){return ur(e,1/0)} function lr (line 2) | function lr(e,t,r){var n=0;return t=Ze(t,r),ir(Wt(e,(function(e,r,i){ret... function fr (line 2) | function fr(e,t){return function(r,n,i){var o=t?[[],[]]:{};return n=Ze(n... function yr (line 2) | function yr(e){return e?Y(e)?l.call(e):k(e)?e.match(mr):Tt(e)?Wt(e,ze):N... function br (line 2) | function br(e){return null==e?0:Tt(e)?e.length:ae(e).length} function vr (line 2) | function vr(e,t,r){return t in r} function _r (line 2) | function _r(e,t,r){return l.call(e,0,Math.max(0,e.length-(null==t||r?1:t... function Tr (line 2) | function Tr(e,t,r){return null==e||e.length<1?null==t||r?void 0:[]:null=... function Ar (line 2) | function Ar(e,t,r){return l.call(e,null==t||r?1:t)} function Sr (line 2) | function Sr(e,t,r){return null==e||e.length<1?null==t||r?void 0:[]:null=... function Dr (line 2) | function Dr(e){return Qt(e,Boolean)} function xr (line 2) | function xr(e,t){return At(e,t,!1)} function Lr (line 2) | function Lr(e,t,r,n){N(t)||(n=r,r=t,t=!1),null!=r&&(r=Ze(r,n));for(var i... function Cr (line 2) | function Cr(e){for(var t=[],r=arguments.length,n=0,i=oe(e);n "XFormBuilder": class QuestionGroup (line 437) | class QuestionGroup(object): method __init__ (line 439) | def __init__(self, name, xform, parents=None): method new_question (line 444) | def new_question(self, name, label, data_type='string', choices=None, ... method new_group (line 447) | def new_group(self, name, label, data_type='group', label_safe=False, ... FILE: corehq/apps/app_manager/xpath.py function dot_interpolate (line 34) | def dot_interpolate(string, replacement): function _ensure_no_case_references (line 72) | def _ensure_no_case_references(string, module, form, interpolate_dots=Tr... function interpolate_xpath (line 86) | def interpolate_xpath(string, case_xpath=None, fixture_xpath=None, modul... function session_var (line 114) | def session_var(var, path='data'): class XPath (line 122) | class XPath(str): method __new__ (line 124) | def __new__(cls, string='', compound=False): method __init__ (line 127) | def __init__(self, string='', compound=False): method paren (line 130) | def paren(self, force=False): method slash (line 133) | def slash(self, xpath): method select_raw (line 139) | def select_raw(self, expression): method select (line 142) | def select(self, ref, value, quote=None): method count (line 149) | def count(self): method eq (line 152) | def eq(self, b): method neq (line 155) | def neq(self, b): method gt (line 158) | def gt(self, b): method expr (line 162) | def expr(template, args, chainable=False): method if_ (line 174) | def if_(a, b, c): method string (line 178) | def string(a): method and_ (line 183) | def and_(*args): method or_ (line 187) | def or_(*args): method not_ (line 191) | def not_(a): method date (line 195) | def date(a): method int (line 199) | def int(a): method empty_string (line 203) | def empty_string(): class CaseSelectionXPath (line 207) | class CaseSelectionXPath(XPath): method case (line 210) | def case(self, instance_name='casedb', case_name='case'): method get_instance_root (line 217) | def get_instance_root(instance_name): class CaseIDXPath (line 223) | class CaseIDXPath(CaseSelectionXPath): class CaseTypeXpath (line 227) | class CaseTypeXpath(CaseSelectionXPath): method case (line 230) | def case(self, instance_name='casedb', case_name='case'): method cases (line 234) | def cases(self, additional_types, instance_name='casedb', case_name='c... class UsercaseXPath (line 245) | class UsercaseXPath(XPath): method case (line 247) | def case(self): class CaseXPath (line 252) | class CaseXPath(XPath): method index_id (line 254) | def index_id(self, name): method parent_id (line 257) | def parent_id(self): method property (line 260) | def property(self, property): class LocationXpath (line 264) | class LocationXpath(XPath): method location (line 266) | def location(self, ref, hierarchy): method validate (line 298) | def validate(self, ref, hierarchy): method _parse_input (line 318) | def _parse_input(self, input): method _ordered_types (line 330) | def _ordered_types(self, hierarchy): class CaseClaimXpath (line 346) | class CaseClaimXpath(object): method __init__ (line 347) | def __init__(self, session_var_name): method default_relevant (line 350) | def default_relevant(self): method multi_case_relevant (line 356) | def multi_case_relevant(cls): class LedgerdbXpath (line 361) | class LedgerdbXpath(XPath): method ledger (line 363) | def ledger(self): class LedgerXpath (line 369) | class LedgerXpath(XPath): method section (line 371) | def section(self, section): class LedgerSectionXpath (line 375) | class LedgerSectionXpath(XPath): method entry (line 377) | def entry(self, id): class InstanceXpath (line 381) | class InstanceXpath(XPath): method instance (line 385) | def instance(self): class SessionInstanceXpath (line 392) | class SessionInstanceXpath(InstanceXpath): class ItemListFixtureXpath (line 397) | class ItemListFixtureXpath(InstanceXpath): method id (line 400) | def id(self): method path (line 404) | def path(self): class ProductInstanceXpath (line 408) | class ProductInstanceXpath(InstanceXpath): class IndicatorXpath (line 413) | class IndicatorXpath(InstanceXpath): method id (line 417) | def id(self): class SearchSelectedCasesInstanceXpath (line 421) | class SearchSelectedCasesInstanceXpath(InstanceXpath): method id (line 426) | def id(self): class LocationInstanceXpath (line 430) | class LocationInstanceXpath(InstanceXpath): class CommCareSession (line 435) | class CommCareSession(object): class ScheduleFixtureInstance (line 440) | class ScheduleFixtureInstance(XPath): method visit (line 442) | def visit(self): method expires (line 445) | def expires(self): method starts (line 448) | def starts(self): method unscheduled_visits (line 451) | def unscheduled_visits(self): class ScheduleFormXPath (line 455) | class ScheduleFormXPath(object): method __init__ (line 460) | def __init__(self, form, phase, module): method fixture_id (line 481) | def fixture_id(self): method fixture (line 486) | def fixture(self): method xpath_phase_set (line 490) | def xpath_phase_set(self): method first_visit_phase_set (line 499) | def first_visit_phase_set(self): method next_visit_due_num (line 516) | def next_visit_due_num(self): method is_unscheduled_visit (line 521) | def is_unscheduled_visit(self): method next_visit_date (line 531) | def next_visit_date(last_visit_dates): method filter_condition (line 555) | def filter_condition(self, phase_id): method current_schedule_phase_calculation (line 561) | def current_schedule_phase_calculation(self, termination_condition, tr... method within_form_relevancy (line 581) | def within_form_relevancy(self): method before_form_relevancy_expires (line 593) | def before_form_relevancy_expires(self): method next_valid_schedules (line 601) | def next_valid_schedules(self, phase_id=None, include_beginning_of_rel... method before_window (line 625) | def before_window(self): method within_window (line 654) | def within_window(self): method next_visits (line 699) | def next_visits(self): method upcoming_scheduled_visits (line 710) | def upcoming_scheduled_visits(self): method visit_allowed (line 717) | def visit_allowed(self): method due_first (line 729) | def due_first(self): method due_later (line 735) | def due_later(self): method next_visit_id (line 757) | def next_visit_id(self): method first_due_date (line 763) | def first_due_date(self): method due_date (line 766) | def due_date(self): class QualifiedScheduleFormXPath (line 770) | class QualifiedScheduleFormXPath(ScheduleFormXPath): method __init__ (line 777) | def __init__(self, form, phase, module, case_xpath): method next_visit_date (line 786) | def next_visit_date(forms, case_xpath): FILE: corehq/apps/app_manager/xpath_validator/config.py function get_xpath_validator_path (line 4) | def get_xpath_validator_path(): FILE: corehq/apps/app_manager/xpath_validator/exceptions.py class XPathValidationError (line 3) | class XPathValidationError(Exception): FILE: corehq/apps/app_manager/xpath_validator/nodejs/xpathConfig.js constant XPATH_CONFIG (line 8) | const XPATH_CONFIG = (function () { function getAllowedHashtags (line 9) | function getAllowedHashtags(allowCaseHashtags) { function configureHashtags (line 22) | function configureHashtags(allowCaseHashtags) { FILE: corehq/apps/app_manager/xpath_validator/tests.py class XPathValidatorTest (line 9) | class XPathValidatorTest(SimpleTestCase): method test_simple_valid (line 11) | def test_simple_valid(self): method test_simple_invalid (line 16) | def test_simple_invalid(self): function test_whitespace (line 25) | def test_whitespace(self): function test_unicode (line 30) | def test_unicode(self): function test_real_valid (line 35) | def test_real_valid(self): function test_real_invalid (line 41) | def test_real_invalid(self): function test_good_hashtag (line 51) | def test_good_hashtag(self): function test_bad_hashtag (line 56) | def test_bad_hashtag(self): function test_case_hashtag (line 62) | def test_case_hashtag(self): function test_disallowed_case_hashtag (line 67) | def test_disallowed_case_hashtag(self): FILE: corehq/apps/app_manager/xpath_validator/wrapper.py function validate_xpath (line 15) | def validate_xpath(xpath, allow_case_hashtags=False): FILE: corehq/apps/appstore/exceptions.py class CopiedFromDeletedException (line 1) | class CopiedFromDeletedException(Exception): FILE: corehq/apps/appstore/management/commands/export_exchange.py class Command (line 12) | class Command(BaseCommand): method add_arguments (line 17) | def add_arguments(self, parser): method handle (line 20) | def handle(self, outfile, **options): FILE: corehq/apps/appstore/models.py class SnapshotMixin (line 9) | class SnapshotMixin(DocumentSchema): method is_copy (line 13) | def is_copy(self): method copied_from (line 18) | def copied_from(self): FILE: corehq/apps/auditcare/__init__.py class AuditcareConfig (line 12) | class AuditcareConfig(AppConfig): method ready (line 21) | def ready(self): function install_trace_id_header (line 29) | def install_trace_id_header(): FILE: corehq/apps/auditcare/management/commands/export_audit_data.py class Command (line 8) | class Command(BaseCommand): method add_arguments (line 11) | def add_arguments(self, parser): method handle (line 28) | def handle(self, filename=None, **options): FILE: corehq/apps/auditcare/management/commands/export_domain_logins.py class Command (line 14) | class Command(BaseCommand): method create_parser (line 25) | def create_parser(self, prog_name, subcommand, **kwargs): method add_arguments (line 31) | def add_arguments(self, parser): method handle (line 43) | def handle(self, **options): method validate_domains (line 73) | def validate_domains(domains): FILE: corehq/apps/auditcare/management/commands/gdpr_scrub_user_auditcare.py class Command (line 10) | class Command(BaseCommand): method add_arguments (line 14) | def add_arguments(self, parser): method handle (line 17) | def handle(self, username, **options): FILE: corehq/apps/auditcare/management/commands/generate_request_report.py class Command (line 14) | class Command(BaseCommand): method create_parser (line 30) | def create_parser(self, prog_name, subcommand, **kwargs): method add_arguments (line 36) | def add_arguments(self, parser): method handle (line 65) | def handle(self, filename, **options): FILE: corehq/apps/auditcare/management/commands/resolve_urls.py class Command (line 8) | class Command(BaseCommand): method handle (line 11) | def handle(self, **options): FILE: corehq/apps/auditcare/middleware.py class AuditMiddleware (line 11) | class AuditMiddleware: method __init__ (line 13) | def __init__(self, get_response): method process_view (line 32) | def process_view(self, request, view_func, view_args, view_kwargs): method __call__ (line 44) | def __call__(self, request): method should_audit (line 52) | def should_audit(self, view_func): method _save_audit (line 68) | def _save_audit(self, request, response): FILE: corehq/apps/auditcare/migrations/0001_sqlmodels.py function add_partitions (line 10) | def add_partitions(apps, schema_editor): class Migration (line 14) | class Migration(migrations.Migration): FILE: corehq/apps/auditcare/migrations/0002_uniques.py function delete_duplicates (line 21) | def delete_duplicates(model): class Migration (line 57) | class Migration(migrations.Migration): FILE: corehq/apps/auditcare/migrations/0003_truncatechars.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/auditcare/migrations/0004_add_couch_id.py function _create_index_sql (line 12) | def _create_index_sql(table_name, index_name): function _drop_index_sql (line 19) | def _drop_index_sql(index_name): class Migration (line 23) | class Migration(migrations.Migration): FILE: corehq/apps/auditcare/migrations/0005_auditcaremigrationmeta.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/auditcare/migrations/0006_auto_20210811_1215.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/auditcare/migrations/0007_delete_auditcaremigrationmeta.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/auditcare/models.py function make_uuid (line 23) | def make_uuid(): function getdate (line 27) | def getdate(): function get_standard_headers (line 55) | def get_standard_headers(request_meta, exclude=None): class UserAgent (line 66) | class UserAgent(models.Model): class HttpAccept (line 70) | class HttpAccept(models.Model): class ViewName (line 74) | class ViewName(models.Model): class AuditEvent (line 78) | class AuditEvent(models.Model): method doc_type (line 92) | def doc_type(self): method description (line 96) | def description(self): class Meta (line 99) | class Meta: method __str__ (line 106) | def __str__(self): method create_audit (line 110) | def create_audit(cls, request, user): class NavigationEventAudit (line 130) | class NavigationEventAudit(AuditEvent): class Meta (line 142) | class Meta(AuditEvent.Meta): method description (line 149) | def description(self): method request_path (line 153) | def request_path(self): method request_method (line 157) | def request_method(self): method audit_view (line 162) | def audit_view(cls, request, user, view_func, view_kwargs): class AccessAudit (line 187) | class AccessAudit(AuditEvent): class Meta (line 194) | class Meta(AuditEvent.Meta): method description (line 204) | def description(self): method create_audit (line 208) | def create_audit(cls, request, user, access_type): method audit_login (line 218) | def audit_login(cls, request, user, *args, **kwargs): method audit_login_failed (line 223) | def audit_login_failed(cls, request, username, *args, **kwargs): method audit_logout (line 228) | def audit_logout(cls, request, user): function audit_login (line 233) | def audit_login(sender, *, request, user, **kwargs): function audit_logout (line 237) | def audit_logout(sender, *, request, user, **kwargs): function audit_login_failed (line 241) | def audit_login_failed(sender, *, request, credentials, **kwargs): function get_domain (line 245) | def get_domain(request): FILE: corehq/apps/auditcare/tests/test_auth.py class TestAccessAudit (line 17) | class TestAccessAudit(AuditcareTest): method setUp (line 19) | def setUp(self): method create_user (line 22) | def create_user(self): method create_web_user (line 27) | def create_web_user(self): method login (line 33) | def login(self, password='mockmock'): method test_login (line 40) | def test_login(self): method test_login_failed (line 49) | def test_login_failed(self): method test_logout_authenticated_user (line 60) | def test_logout_authenticated_user(self): function get_latest_access (line 72) | def get_latest_access(username): FILE: corehq/apps/auditcare/tests/test_export.py class TestNavigationEventsQueries (line 31) | class TestNavigationEventsQueries(AuditcareTest): method setUpClass (line 37) | def setUpClass(cls): method tearDownClass (line 56) | def tearDownClass(cls): method test_navigation_events_query (line 59) | def test_navigation_events_query(self): method test_navigation_events_date_range_query (line 66) | def test_navigation_events_date_range_query(self): method test_recent_all_log_events_query (line 74) | def test_recent_all_log_events_query(self): method test_all_log_events_date_range_query (line 82) | def test_all_log_events_date_range_query(self): method test_all_log_events_query_returns_events_from_couch (line 91) | def test_all_log_events_query_returns_events_from_couch(self): method test_write_export_from_all_log_events (line 100) | def test_write_export_from_all_log_events(self): method test_query_window_size (line 142) | def test_query_window_size(self): method test_related_query_error (line 148) | def test_related_query_error(self): method test_get_domain_first_access_times (line 157) | def test_get_domain_first_access_times(self): class TestGetGenericLogEventRow (line 195) | class TestGetGenericLogEventRow(AuditcareTest): method test_date_format_is_sortable_utc_string (line 197) | def test_date_format_is_sortable_utc_string(self): method test_date_format_with_zero_microseconds (line 209) | def test_date_format_with_zero_microseconds(self): method test_row_includes_status_code_for_navigation_event (line 221) | def test_row_includes_status_code_for_navigation_event(self): method test_row_has_empty_status_code_for_access_event (line 236) | def test_row_has_empty_status_code_for_access_event(self): class TestNavigationEventsQueriesWithoutData (line 249) | class TestNavigationEventsQueriesWithoutData(AuditcareTest): method test_get_all_log_events_returns_empty (line 251) | def test_get_all_log_events_returns_empty(self): function patch_window_size (line 257) | def patch_window_size(size): class TestGetDateRangeWhere (line 264) | class TestGetDateRangeWhere(AuditcareTest): method test_with_datetime_objects (line 267) | def test_with_datetime_objects(self): method test_with_date_objects (line 274) | def test_with_date_objects(self): method test_with_string_dates (line 284) | def test_with_string_dates(self): method test_with_none_start (line 292) | def test_with_none_start(self): method test_with_none_end (line 298) | def test_with_none_end(self): method test_with_both_none (line 304) | def test_with_both_none(self): method test_with_midnight_datetime_as_end (line 308) | def test_with_midnight_datetime_as_end(self): class TestBuildIPFilter (line 318) | class TestBuildIPFilter(AuditcareTest): method test_exact_match (line 320) | def test_exact_match(self): method test_prefix_match (line 324) | def test_prefix_match(self): method test_multiple_or (line 328) | def test_multiple_or(self): method test_empty_returns_none (line 332) | def test_empty_returns_none(self): class TestBuildPathFilters (line 337) | class TestBuildPathFilters(AuditcareTest): method test_include_contains (line 339) | def test_include_contains(self): method test_include_startswith (line 343) | def test_include_startswith(self): method test_include_multiple_or (line 347) | def test_include_multiple_or(self): method test_include_empty_returns_none (line 351) | def test_include_empty_returns_none(self): method test_exclude_contains (line 355) | def test_exclude_contains(self): method test_exclude_startswith (line 359) | def test_exclude_startswith(self): method test_exclude_multiple_and_not (line 363) | def test_exclude_multiple_and_not(self): method test_exclude_empty_returns_none (line 367) | def test_exclude_empty_returns_none(self): class TestNavigationEventsWithDatetime (line 372) | class TestNavigationEventsWithDatetime(AuditcareTest): method setUpClass (line 378) | def setUpClass(cls): method test_filter_by_time_range (line 397) | def test_filter_by_time_range(self): FILE: corehq/apps/auditcare/tests/test_gdpr_scrub_user_auditcare.py class TestGDPRScrubUserAuditcare (line 11) | class TestGDPRScrubUserAuditcare(AuditcareTest): method setUp (line 13) | def setUp(self): method test_update_username_no_returned_docs (line 20) | def test_update_username_no_returned_docs(self): method test_update_username_returned_docs (line 25) | def test_update_username_returned_docs(self): function count_events (line 31) | def count_events(username): FILE: corehq/apps/auditcare/tests/test_middleware.py class TestAuditMiddleware (line 11) | class TestAuditMiddleware(SimpleTestCase): method setUp (line 13) | def setUp(self): method test_generic_view_not_audited_with_default_settings (line 16) | def test_generic_view_not_audited_with_default_settings(self): method test_admin_view_is_audited_with_audit_admin_views_setting (line 22) | def test_admin_view_is_audited_with_audit_admin_views_setting(self): method test_generic_view_is_audited_with_audit_all_views_setting (line 29) | def test_generic_view_is_audited_with_audit_all_views_setting(self): method test_generic_view_class_is_audited_with_audit_all_views_setting (line 36) | def test_generic_view_class_is_audited_with_audit_all_views_setting(se... method test_audit_views_setting (line 43) | def test_audit_views_setting(self): method test_audit_modules_setting (line 52) | def test_audit_modules_setting(self): method test_debug_media_view_not_audited (line 59) | def test_debug_media_view_not_audited(self): method test_staticfiles_not_audited (line 65) | def test_staticfiles_not_audited(self): method test_process_response_without_audit_doc (line 71) | def test_process_response_without_audit_doc(self): method test_process_response_with_audit_doc_with_user (line 76) | def test_process_response_with_audit_doc_with_user(self): method test_process_response_with_audit_doc_and_audit_user (line 84) | def test_process_response_with_audit_doc_and_audit_user(self): method test_process_response_with_audit_doc_and_couch_user (line 93) | def test_process_response_with_audit_doc_and_couch_user(self): method test_should_save_audit_doc_exactly_once (line 102) | def test_should_save_audit_doc_exactly_once(self): method test_should_save_audit_doc_on_error (line 113) | def test_should_save_audit_doc_on_error(self): method test_audit_save_error_does_not_disrupt_response (line 127) | def test_audit_save_error_does_not_disrupt_response(self): method assert_audit (line 133) | def assert_audit(self, request): method assert_no_audit (line 137) | def assert_no_audit(self, request): function test_make_view_function (line 141) | def test_make_view_function(): function test_make_view_class (line 147) | def test_make_view_class(): function test_make_admin_view_function (line 153) | def test_make_admin_view_function(): function test_make_admin_view_class (line 159) | def test_make_admin_view_class(): class FakeAuditDoc (line 165) | class FakeAuditDoc(Config): method save (line 167) | def save(self): class AuditSaveErrorDoc (line 174) | class AuditSaveErrorDoc(FakeAuditDoc): method save (line 176) | def save(self): function default_get_response (line 190) | def default_get_response(request): function configured_middleware (line 195) | def configured_middleware(settings=Settings, get_response=default_get_re... function make_view (line 201) | def make_view(name="the_view", module="corehq.apps.auditcare.views"): function fake_audit (line 213) | def fake_audit(request, user, view_func, view_kwargs, extra={}): class UnhandledError (line 217) | class UnhandledError(Exception): FILE: corehq/apps/auditcare/tests/test_models.py class TestAccessAudit (line 21) | class TestAccessAudit(AuditcareTest): method test_audit_login_should_set_properties (line 23) | def test_audit_login_should_set_properties(self): method test_audit_login_failed_should_set_properties (line 37) | def test_audit_login_failed_should_set_properties(self): method test_audit_logout_should_set_properties (line 52) | def test_audit_logout_should_set_properties(self): method test_audit_logout_anonymous_should_set_properties (line 66) | def test_audit_logout_anonymous_should_set_properties(self): method test_audit_trace_id_header (line 74) | def test_audit_trace_id_header(self): class TestNavigationEventAudit (line 88) | class TestNavigationEventAudit(AuditcareTest): method test_audit_view_should_set_properties (line 90) | def test_audit_view_should_set_properties(self): method test_audit_view_should_truncate_params (line 102) | def test_audit_view_should_truncate_params(self): method test_audit_trace_id_header (line 112) | def test_audit_trace_id_header(self): method test_audit_view_should_not_save (line 121) | def test_audit_view_should_not_save(self): function test_get_domain (line 133) | def test_get_domain(cfg): function make_request (line 140) | def make_request(path="/path", session_key="abc", params=None, **headers): function make_user (line 148) | def make_user(): function intercept_save (line 153) | def intercept_save(cls): function patch_trace_id_header (line 165) | def patch_trace_id_header(): FILE: corehq/apps/auditcare/tests/testutils.py class AuditcareTest (line 12) | class AuditcareTest(TestCase): method databases (line 15) | def databases(self): function save_couch_doc (line 19) | def save_couch_doc(doc_type, user, **doc): function delete_couch_docs (line 25) | def delete_couch_docs(couch_ids): FILE: corehq/apps/auditcare/utils/__init__.py function to_django_header (line 2) | def to_django_header(value): FILE: corehq/apps/auditcare/utils/export.py function filters_for_audit_event_query (line 17) | def filters_for_audit_event_query(user, domain=None, start_date=None, en... function all_audit_events_by_user (line 29) | def all_audit_events_by_user(user, domain=None, start_date=None, end_dat... function navigation_events_by_user (line 43) | def navigation_events_by_user(user, domain=None, start_date=None, end_da... function access_events_by_user (line 58) | def access_events_by_user(user, domain=None, start_date=None, end_date=N... function write_log_events (line 70) | def write_log_events(writer, user, domain=None, override_user=None, star... function write_log_event (line 75) | def write_log_event(writer, event, override_user=None): function get_users_for_domain (line 88) | def get_users_for_domain(domain): function get_all_log_events (line 100) | def get_all_log_events(start_date=None, end_date=None): function get_domain_first_access_times (line 108) | def get_domain_first_access_times(domains, start_date=None, end_date=None): function write_generic_log_event (line 149) | def write_generic_log_event(writer, event): function get_action_and_resource (line 154) | def get_action_and_resource(event): function get_generic_log_event_row (line 168) | def get_generic_log_event_row(event): function write_export_from_all_log_events (line 184) | def write_export_from_all_log_events(file_obj, start, end): function get_date_range_where (line 194) | def get_date_range_where(start_date, end_date): class AuditWindowQuery (line 236) | class AuditWindowQuery: method __iter__ (line 240) | def __iter__(self): function get_foreign_names (line 264) | def get_foreign_names(model): class NoForeignQuery (line 271) | class NoForeignQuery: method __attrs_post_init__ (line 285) | def __attrs_post_init__(self): method __getattr__ (line 288) | def __getattr__(self, name): class ForeignKeyAccessError (line 294) | class ForeignKeyAccessError(AttributeError): function build_ip_filter (line 298) | def build_ip_filter(parsed_ips): function _q_for_path (line 318) | def _q_for_path(pattern, mode): function build_path_include_filter (line 327) | def build_path_include_filter(patterns, mode): function build_path_exclude_filter (line 345) | def build_path_exclude_filter(patterns, mode): FILE: corehq/apps/auditcare/utils/resolver.py function _pattern_resolve_to_name (line 7) | def _pattern_resolve_to_name(self, path): function _resolver_resolve_to_name (line 20) | def _resolver_resolve_to_name(self, path): function resolve_to_name (line 37) | def resolve_to_name(path, urlconf=None): FILE: corehq/apps/auditcare/utils/show_urls.py function show_urls (line 6) | def show_urls(urllist, depth=0): FILE: corehq/apps/auditcare/views.py function export_all (line 15) | def export_all(request): FILE: corehq/apps/builds/management/commands/add_commcare_build.py class Command (line 14) | class Command(BaseCommand): method add_arguments (line 22) | def add_arguments(self, parser): method handle (line 31) | def handle(self, **options): method _create_build_with_version (line 40) | def _create_build_with_version(self, version): function _get_latest_commcare_build_version (line 49) | def _get_latest_commcare_build_version(): function _update_commcare_build_menu (line 59) | def _update_commcare_build_menu(version): function _add_build_menu_item (line 68) | def _add_build_menu_item(build_config, version): function _update_default_build_spec_to_version (line 76) | def _update_default_build_spec_to_version(build_config, version): FILE: corehq/apps/builds/models.py class SemanticVersionProperty (line 23) | class SemanticVersionProperty(StringProperty): method validate (line 25) | def validate(self, value, required=True): class CommCareBuild (line 39) | class CommCareBuild(Document): method create_without_artifacts (line 45) | def create_without_artifacts(cls, version, build_number): method minor_release (line 51) | def minor_release(self): method major_release (line 55) | def major_release(self): method get_build (line 60) | def get_build(cls, version, build_number=None, latest=False): method all_builds (line 98) | def all_builds(cls): class BuildSpec (line 102) | class BuildSpec(DocumentSchema): method get_build (line 107) | def get_build(self): method is_null (line 113) | def is_null(self): method get_label (line 116) | def get_label(self): method get_menu_item_label (line 123) | def get_menu_item_label(self): method __str__ (line 130) | def __str__(self): method to_string (line 135) | def to_string(self): method from_string (line 139) | def from_string(cls, string): method minor_release (line 147) | def minor_release(self): method major_release (line 151) | def major_release(self): method patch_release (line 154) | def patch_release(self): method release_greater_than_or_equal_to (line 158) | def release_greater_than_or_equal_to(self, version): class BuildMenuItem (line 164) | class BuildMenuItem(DocumentSchema): method get_build (line 169) | def get_build(self): method get_label (line 172) | def get_label(self): class CommCareBuildConfig (line 176) | class CommCareBuildConfig(Document): method bootstrap (line 185) | def bootstrap(cls): method clear_local_cache (line 192) | def clear_local_cache(cls): method fetch (line 197) | def fetch(cls): method get_default (line 203) | def get_default(self, application_version=APP_V2): method get_menu (line 207) | def get_menu(self): class BuildRecord (line 211) | class BuildRecord(BuildSpec): FILE: corehq/apps/builds/static/builds/js/edit_builds.js function versionModel (line 9) | function versionModel(version, label, superuserOnly) { function menuModel (line 18) | function menuModel() { function outputJSON (line 57) | function outputJSON(menu) { function postGo (line 84) | function postGo(url, params) { FILE: corehq/apps/builds/tests.py function test_extract_build_info_from_filename (line 6) | def test_extract_build_info_from_filename(): function test_extract_build_info_from_filename_error (line 13) | def test_extract_build_info_from_filename_error(): FILE: corehq/apps/builds/tests/test_utils.py class TestVersionUtils (line 5) | class TestVersionUtils(SimpleTestCase): method test_is_out_of_date (line 7) | def test_is_out_of_date(self): FILE: corehq/apps/builds/utils.py function get_all_versions (line 6) | def get_all_versions(versions): function get_default_build_spec (line 17) | def get_default_build_spec(): function extract_build_info_from_filename (line 21) | def extract_build_info_from_filename(content_disposition): function get_latest_version_at_time (line 45) | def get_latest_version_at_time(config, target_time, cache=None): function get_build_time (line 74) | def get_build_time(version, cache=None): function is_out_of_date (line 92) | def is_out_of_date(version_in_use, latest_version): function _parse_version (line 108) | def _parse_version(version_str): FILE: corehq/apps/builds/views.py function post (line 27) | def post(request): function get_all (line 41) | def get_all(request): class EditMenuView (line 46) | class EditMenuView(BasePageView): method dispatch (line 54) | def dispatch(self, *args, **kwargs): method page_context (line 58) | def page_context(self): method page_url (line 68) | def page_url(self): method post (line 71) | def post(self, request, *args, **kwargs): function import_build (line 81) | def import_build(request): FILE: corehq/apps/cachehq/cachemodels.py class ReportGenerationCache (line 4) | class ReportGenerationCache(GenerationCache): class UserReportsDataSourceCache (line 15) | class UserReportsDataSourceCache(GenerationCache): FILE: corehq/apps/cachehq/invalidate.py function _get_cache_processor (line 7) | def _get_cache_processor(): function invalidate_document (line 11) | def invalidate_document(document, deleted=False): FILE: corehq/apps/cachehq/mixins.py class _InvalidateCacheMixin (line 13) | class _InvalidateCacheMixin(object): method clear_caches (line 15) | def clear_caches(self): method save (line 18) | def save(self, **params): method save_docs (line 25) | def save_docs(cls, docs, use_uuids=True): method delete (line 32) | def delete(self, *args, **kw): method delete_docs (line 45) | def delete_docs(cls, docs, empty_on_delete=False): function dont_cache_docs (line 55) | def dont_cache_docs(*args, **kwargs): class QuickCachedDocumentMixin (line 63) | class QuickCachedDocumentMixin(_InvalidateCacheMixin): method clear_caches (line 65) | def clear_caches(self): method get (line 72) | def get(cls, doc_id, *args, dont_cache_docs=False, **kwargs): class CachedCouchDocumentMixin (line 76) | class CachedCouchDocumentMixin(QuickCachedDocumentMixin): method view (line 83) | def view(cls, view_name, wrapper=None, dynamic_properties=None, wrap_d... FILE: corehq/apps/cachehq/signals.py function invalidate_cached_domain (line 6) | def invalidate_cached_domain(sender, domain, **kwargs): function invalidate_cached_user (line 10) | def invalidate_cached_user(sender, couch_user, **kwargs): FILE: corehq/apps/cachehq/tests.py class Super (line 13) | class Super(JsonObject): method get (line 17) | def get(cls, *args, **kwargs): method save (line 20) | def save(self, *args, **kwargs): method delete (line 23) | def delete(self, *args, **kwargs): method bulk_save (line 27) | def bulk_save(self, *args, **kwargs): method bulk_delete (line 33) | def bulk_delete(self, *args, **kwargs): method get_db (line 39) | def get_db(cls): method _doc (line 43) | def _doc(self): class BlogPost (line 47) | class BlogPost(CachedCouchDocumentMixin, Super): class TestCachedCouchDocumentMixin (line 52) | class TestCachedCouchDocumentMixin(SimpleTestCase): method test_get (line 55) | def test_get(self, doc_get): method test_clear_caches (line 74) | def test_clear_caches(self, clear_caches): FILE: corehq/apps/callcenter/app_parser.py function get_call_center_config_from_app (line 9) | def get_call_center_config_from_app(app): function parse_indicator (line 21) | def parse_indicator(indicator_name, custom_domain_indicators=None): function get_indicators_used_in_app (line 53) | def get_indicators_used_in_app(app): function _get_indicators_used_in_modules (line 57) | def _get_indicators_used_in_modules(app): function _get_indicators_used_in_forms (line 68) | def _get_indicators_used_in_forms(app): function _get_indicators_in_detail (line 87) | def _get_indicators_in_detail(detail): FILE: corehq/apps/callcenter/checks.py class DomainStats (line 19) | class DomainStats(namedtuple('DomainStats', 'name, forms, cases, case_ac... method iter_data_source_stats (line 20) | def iter_data_source_stats(self): function get_call_center_data_source_stats (line 26) | def get_call_center_data_source_stats(domains): function _compile_stats (line 60) | def _compile_stats(name, ucr_count, es_count): function _get_css_class (line 76) | def _get_css_class(percent, default): FILE: corehq/apps/callcenter/data_source.py function call_center_data_source_configuration_provider (line 24) | def call_center_data_source_configuration_provider(): function get_data_source_templates (line 47) | def get_data_source_templates(): function get_sql_adapters_for_domain (line 56) | def get_sql_adapters_for_domain(domain_name): function _get_sql_adapter (line 65) | def _get_sql_adapter(domain_name, data_source_json): function _make_data_source_for_domain (line 71) | def _make_data_source_for_domain(data_source_json, domain_name): function _get_json (line 81) | def _get_json(path): FILE: corehq/apps/callcenter/fixturegenerators.py function should_sync (line 16) | def should_sync(domain, last_sync, utcnow=None): class IndicatorsFixturesProvider (line 42) | class IndicatorsFixturesProvider(FixtureProvider): method __call__ (line 45) | def __call__(self, restore_state): method _should_return_no_fixtures (line 84) | def _should_return_no_fixtures(domain, last_sync): function gen_fixture (line 95) | def gen_fixture(restore_user, indicator_set): FILE: corehq/apps/callcenter/indicator_sets.py function seconds_till_midnight (line 31) | def seconds_till_midnight(timezone): function cache_key (line 37) | def cache_key(user_id, date): class CachedIndicators (line 41) | class CachedIndicators(JsonObject): class CallCenterIndicators (line 48) | class CallCenterIndicators(object): method __init__ (line 79) | def __init__(self, domain_name, domain_timezone, cc_case_type, user, method data_sources (line 104) | def data_sources(self): method date_ranges (line 110) | def date_ranges(self): method call_center_cases (line 124) | def call_center_cases(self): method user_to_case_map (line 132) | def user_to_case_map(self): method cached_data (line 140) | def cached_data(self): method users_needing_data (line 154) | def users_needing_data(self): method owners_needing_data (line 163) | def owners_needing_data(self): method case_types (line 177) | def case_types(self): method case_sharing_groups (line 187) | def case_sharing_groups(self): method group_to_user_ids (line 192) | def group_to_user_ids(self): method user_id_to_groups (line 196) | def user_id_to_groups(self): method _add_data (line 204) | def _add_data(self, queryset, indicator_name, transformer=None): method _update_dataset (line 231) | def _update_dataset(self, dataset, owner_id, cnt): method _reformat_and_add (line 245) | def _reformat_and_add(self, data_dict, indicator_name, legacy_name=None): method _add_case_data_total (line 251) | def _add_case_data_total(self, queryset, indicator_prefix, range_name,... method _add_case_data_by_type (line 270) | def _add_case_data_by_type(self, queryset, indicator_prefix, range_nam... method add_case_data (line 300) | def add_case_data(self, query, slug, indicator_config, legacy_prefix=N... method add_case_total_legacy (line 333) | def add_case_total_legacy(self): method add_custom_form_data (line 339) | def add_custom_form_data(self, indicator_name, range_name, xmlns, indi... method add_form_data (line 345) | def add_form_data(self, indicator_config): method add_custom_data (line 360) | def add_custom_data(self, indicator_config): method get_data (line 376) | def get_data(self): method _populate_dataset (line 407) | def _populate_dataset(self): FILE: corehq/apps/callcenter/management/commands/rebuild_call_center_datasources.py class Command (line 13) | class Command(BaseCommand): method add_arguments (line 16) | def add_arguments(self, parser): method handle (line 38) | def handle(self, domains, **options): FILE: corehq/apps/callcenter/models.py class BasicIndicator (line 18) | class BasicIndicator(JsonObject): class TypedIndicator (line 23) | class TypedIndicator(BasicIndicator): class ByTypeWithTotal (line 27) | class ByTypeWithTotal(JsonObject): method enabled (line 33) | def enabled(self): method enabled_types (line 37) | def enabled_types(self): method types_by_date_range (line 40) | def types_by_date_range(self): method get_or_add_for_type (line 51) | def get_or_add_for_type(self, type_): class CallCenterIndicatorConfig (line 62) | class CallCenterIndicatorConfig(JsonObject): method includes_legacy (line 75) | def includes_legacy(self): method default_config (line 83) | def default_config(cls, domain_name=None, include_legacy=True): method set_indicator (line 108) | def set_indicator(self, parsed_indicator): FILE: corehq/apps/callcenter/queries.py class BaseQuery (line 11) | class BaseQuery(metaclass=ABCMeta): method sql_adapter (line 13) | def sql_adapter(self): method sql_table (line 18) | def sql_table(self): method _run_query (line 21) | def _run_query(self, query): class CaseQuery (line 28) | class CaseQuery(BaseQuery): method __init__ (line 30) | def __init__(self, domain, cc_case_type, owners_needing_data): method get_results (line 36) | def get_results(self, include_type_in_result, limit_types, start_date,... method sql_adapter (line 40) | def sql_adapter(self): method owner_column (line 45) | def owner_column(self): method type_column (line 49) | def type_column(self): method columns (line 52) | def columns(self, include_type_in_result, distinct_docs=False): method group_by (line 68) | def group_by(self, include_type_in_result): method type_filter (line 76) | def type_filter(self, limit_types): method _build_query (line 82) | def _build_query(self, include_type_in_result, limit_types, where_clau... class CaseQueryOpenedClosed (line 99) | class CaseQueryOpenedClosed(CaseQuery): method __init__ (line 110) | def __init__(self, domain, cc_case_type, owners_needing_data, opened=T... method owner_column (line 117) | def owner_column(self): method date_column (line 121) | def date_column(self): method get_results (line 124) | def get_results(self, include_type_in_result, limit_types, start_date,... class CaseQueryTotal (line 133) | class CaseQueryTotal(CaseQuery): method get_results (line 141) | def get_results(self, include_type_in_result, limit_types, start_date,... class CaseQueryActive (line 152) | class CaseQueryActive(CaseQuery): method sql_adapter (line 161) | def sql_adapter(self): method get_results (line 165) | def get_results(self, include_type_in_result, limit_types, start_date,... class CaseQueryTotalLegacy (line 173) | class CaseQueryTotalLegacy(BaseQuery): method __init__ (line 177) | def __init__(self, domain, cc_case_type, users_needing_data): method sql_adapter (line 183) | def sql_adapter(self): method get_results (line 187) | def get_results(self): class FormQuery (line 201) | class FormQuery(BaseQuery): method __init__ (line 202) | def __init__(self, domain, users_needing_data): method sql_adapter (line 207) | def sql_adapter(self): class StandardFormQuery (line 212) | class StandardFormQuery(FormQuery): method get_results (line 217) | def get_results(self, start_date, end_date): class CustomFormQuery (line 232) | class CustomFormQuery(FormQuery): method get_results (line 238) | def get_results(self, xmlns, indicator_type, start_date, end_date): FILE: corehq/apps/callcenter/sync_usercase.py class _UserCaseHelper (line 23) | class _UserCaseHelper: method __init__ (line 27) | def __init__(self, domain, owner_id, user_id): method commit (line 35) | def commit(cls, helpers): method re_open_case (line 49) | def re_open_case(case): method create_usercase (line 54) | def create_usercase(self, fields): method update_user_case (line 66) | def update_user_case(self, case, fields, close): method _user_case_changed (line 83) | def _user_case_changed(self, fields): function _domain_has_new_fields (line 94) | def _domain_has_new_fields(domain, field_names): function _get_sync_usercase_helper (line 105) | def _get_sync_usercase_helper(user, domain, case_type, owner_id, case=No... function _get_user_case_fields (line 126) | def _get_user_case_fields(user, case_type, owner_id, domain): function _get_changed_fields (line 171) | def _get_changed_fields(case, fields): function _iter_call_center_case_helpers (line 200) | def _iter_call_center_case_helpers(user): function _get_call_center_case_and_owner (line 212) | def _get_call_center_case_and_owner(user, domain_obj): function _call_center_location_owner (line 229) | def _call_center_location_owner(user, ancestor_level): function _iter_sync_usercase_helpers (line 244) | def _iter_sync_usercase_helpers(user, domain): function sync_usercases (line 254) | def sync_usercases(user, domain, sync_call_center=True): FILE: corehq/apps/callcenter/tasks.py function calculate_indicators (line 25) | def calculate_indicators(): function bulk_sync_usercases_if_applicable (line 51) | def bulk_sync_usercases_if_applicable(domain, user_ids): function sync_usercases_if_applicable (line 59) | def sync_usercases_if_applicable(domain, user, spawn_task): function sync_usercases_task (line 75) | def sync_usercases_task(user_id, domain): FILE: corehq/apps/callcenter/tests/sql_fixture.py function get_table (line 11) | def get_table(mapping): function get_formdata (line 15) | def get_formdata(days_ago, domain, user_id, xmlns=None, duration=1): function get_casedata (line 38) | def get_casedata(case_info, domain, user_id, owner_id, opened_by, closed... function load_data (line 59) | def load_data(domain, form_user_id, case_user_id=None, function _insert_docs (line 100) | def _insert_docs(data_source_adapter, docs): function load_custom_data (line 106) | def load_custom_data(domain, user_id, xmlns): function clear_data (line 127) | def clear_data(domain): FILE: corehq/apps/callcenter/tests/test_datasources.py class TestCallCenterDataSources (line 12) | class TestCallCenterDataSources(SimpleTestCase): function test_call_center_data_source_provider (line 38) | def test_call_center_data_source_provider(self, domain, tables): FILE: corehq/apps/callcenter/tests/test_indicator_fixture.py class MockIndicatorSet (line 24) | class MockIndicatorSet(object): method __init__ (line 26) | def __init__(self, name, indicators): method get_data (line 30) | def get_data(self): method reference_date (line 34) | def reference_date(self): class CallcenterFixtureTests (line 43) | class CallcenterFixtureTests(SimpleTestCase): method test_callcenter_fixture_format (line 45) | def test_callcenter_fixture_format(self): method test_callcenter_fixture_commcare_user (line 68) | def test_callcenter_fixture_commcare_user(self): method test_callcenter_fixture_web_user (line 84) | def test_callcenter_fixture_web_user(self): method test_should_sync_none (line 93) | def test_should_sync_none(self): method test_should_sync_no_date (line 96) | def test_should_sync_no_date(self): method test_should_sync_false (line 99) | def test_should_sync_false(self): method test_should_sync_true (line 104) | def test_should_sync_true(self): method test_should_sync_timezone (line 109) | def test_should_sync_timezone(self): FILE: corehq/apps/callcenter/tests/test_indicators.py function create_domain_and_user (line 45) | def create_domain_and_user(domain_name, username): function get_indicators (line 61) | def get_indicators(prefix, values, case_type=None, is_legacy=False, limi... function expected_standard_indicators (line 85) | def expected_standard_indicators( class BaseCCTests (line 130) | class BaseCCTests(TestCase): method setUp (line 133) | def setUp(self): method tearDown (line 137) | def tearDown(self): method _test_indicators (line 140) | def _test_indicators(self, user, data_set, expected): class CallCenterTests (line 162) | class CallCenterTests(BaseCCTests): method setUpClass (line 166) | def setUpClass(cls): method tearDownClass (line 176) | def tearDownClass(cls): method check_cc_indicators (line 186) | def check_cc_indicators(self, data_set, expected): method test_standard_indicators (line 191) | def test_standard_indicators(self, mock): method test_standard_indicators_no_legacy (line 211) | def test_standard_indicators_no_legacy(self, mock): method test_standard_indicators_case_totals_only (line 227) | def test_standard_indicators_case_totals_only(self, mock): method test_standard_indicators_case_dog_only (line 251) | def test_standard_indicators_case_dog_only(self, mock): method test_standard_indicators_case_week1_only (line 283) | def test_standard_indicators_case_week1_only(self, mock): method test_sync_log (line 308) | def test_sync_log(self, mock): method test_custom_indicators (line 324) | def test_custom_indicators(self, mock): method test_custom_indicators_limited (line 353) | def test_custom_indicators_limited(self, mock): method test_caching (line 388) | def test_caching(self, mock): method test_no_cases_owned_by_user (line 416) | def test_no_cases_owned_by_user(self, mock): class CallCenterSupervisorGroupTest (line 433) | class CallCenterSupervisorGroupTest(BaseCCTests): method setUp (line 436) | def setUp(self): method tearDown (line 459) | def tearDown(self): method test_users_assigned_via_group (line 466) | def test_users_assigned_via_group(self, mock): class CallCenterCaseSharingTest (line 482) | class CallCenterCaseSharingTest(BaseCCTests): method setUp (line 485) | def setUp(self): method tearDown (line 514) | def tearDown(self): method test_cases_owned_by_group (line 521) | def test_cases_owned_by_group(self, mock): class CallCenterTestOpenedClosed (line 538) | class CallCenterTestOpenedClosed(BaseCCTests): method setUp (line 541) | def setUp(self): method tearDown (line 556) | def tearDown(self): method test_opened_closed (line 563) | def test_opened_closed(self, mock): class TestSavingToUCRDatabase (line 585) | class TestSavingToUCRDatabase(BaseCCTests): method setUp (line 588) | def setUp(self): method tearDown (line 600) | def tearDown(self): method test_standard_indicators (line 611) | def test_standard_indicators(self, mock): FILE: corehq/apps/callcenter/tests/test_location_owners.py class CallCenterLocationOwnerTest (line 18) | class CallCenterLocationOwnerTest(TestCase): method get_call_center_config (line 21) | def get_call_center_config(cls): method setUpClass (line 30) | def setUpClass(cls): method tearDownClass (line 55) | def tearDownClass(cls): method tearDown (line 59) | def tearDown(self): method test_no_location_sync (line 62) | def test_no_location_sync(self): method test_location_sync (line 67) | def test_location_sync(self): method test_location_change_sync (line 71) | def test_location_change_sync(self): method test_ancestor_location_sync (line 82) | def test_ancestor_location_sync(self): method assertCallCenterCaseOwner (line 103) | def assertCallCenterCaseOwner(self, owner_id): FILE: corehq/apps/callcenter/tests/test_models.py function get_indicator_slugs_from_config (line 13) | def get_indicator_slugs_from_config(config, all_types=None): class ModelTests (line 55) | class ModelTests(SimpleTestCase): method test_types_by_date_range (line 57) | def test_types_by_date_range(self): method test_real_example (line 72) | def test_real_example(self): method test_empty (line 100) | def test_empty(self): method test_default (line 103) | def test_default(self): FILE: corehq/apps/callcenter/tests/test_owner_options_view.py class CallCenterLocationOwnerOptionsViewTest (line 26) | class CallCenterLocationOwnerOptionsViewTest(TestCase): method setUpClass (line 29) | def setUpClass(cls): method tearDownClass (line 69) | def tearDownClass(cls): method test_pages (line 76) | def test_pages(self): FILE: corehq/apps/callcenter/tests/test_sync_usercases_tasks.py class TestWebUserSyncUsercase (line 16) | class TestWebUserSyncUsercase(TestCase): method setUpClass (line 19) | def setUpClass(cls): method _get_usercase_properties (line 43) | def _get_usercase_properties(self, user_id): method test_sync_usercases (line 48) | def test_sync_usercases(self): method test_close_deactivated_web_users_usercase (line 54) | def test_close_deactivated_web_users_usercase(self): method test_location_data (line 68) | def test_location_data(self): method test_location_data_for_commcare_user (line 88) | def test_location_data_for_commcare_user(self): class TestBulkSyncUsercases (line 110) | class TestBulkSyncUsercases(TestCase): method setUpClass (line 112) | def setUpClass(cls): method test_bulk_sync_usercases (line 131) | def test_bulk_sync_usercases(self): FILE: corehq/apps/callcenter/tests/test_use_fixtures_configuration.py class TestUseFixturesConfig (line 22) | class TestUseFixturesConfig(SimpleTestCase): method test_fixture_provider (line 24) | def test_fixture_provider(self): class TestIndicatorsFromApp (line 41) | class TestIndicatorsFromApp(SimpleTestCase, TestFileMixin): method test_indicators (line 46) | def test_indicators(self): method test_get_indicators_used_in_app_blank (line 61) | def test_get_indicators_used_in_app_blank(self): method test_get_indicators_used_in_modules (line 69) | def test_get_indicators_used_in_modules(self): method test_get_indicators_used_in_forms (line 80) | def test_get_indicators_used_in_forms(self): method test_get_config_from_app (line 92) | def test_get_config_from_app(self): method test_get_config_from_app_report_module (line 112) | def test_get_config_from_app_report_module(self): method _get_app (line 123) | def _get_app(self): method _add_indicators_to_module_details (line 131) | def _add_indicators_to_module_details(self, module, indicators): method _add_indicators_to_form (line 136) | def _add_indicators_to_form(self, form, indicators, instance_name='ind... function test_parse_indicator (line 173) | def test_parse_indicator(self, indicator_name, parsed_tuple): function test_get_config_from_app_bad_names (line 188) | def test_get_config_from_app_bad_names(self, indicators, expected): function _get_detail_column (line 200) | def _get_detail_column(indicator_name): FILE: corehq/apps/callcenter/tests/test_utils.py class CallCenterUtilsTests (line 50) | class CallCenterUtilsTests(TestCase): method setUpClass (line 52) | def setUpClass(cls): method tearDownClass (line 64) | def tearDownClass(cls): method tearDown (line 69) | def tearDown(self): method test_sync (line 72) | def test_sync(self): method test_sync_full_name (line 81) | def test_sync_full_name(self): method test_sync_inactive (line 91) | def test_sync_inactive(self): method test_sync_retired (line 101) | def test_sync_retired(self): method test_sync_update_update (line 111) | def test_sync_update_update(self): method test_sync_custom_user_data (line 125) | def test_sync_custom_user_data(self): method test_get_call_center_cases_for_user (line 161) | def test_get_call_center_cases_for_user(self): method test_get_call_center_cases_all (line 180) | def test_get_call_center_cases_all(self): method test_call_center_not_default_case_owner (line 195) | def test_call_center_not_default_case_owner(self): method test_opened_by_id_is_system (line 212) | def test_opened_by_id_is_system(self): method _get_user_case (line 217) | def _get_user_case(self, user_id=None): class CallCenterUtilsUsercaseTests (line 223) | class CallCenterUtilsUsercaseTests(TestCase): method __init__ (line 224) | def __init__(self, *args, **kwargs): method setUpClass (line 228) | def setUpClass(cls): method setUp (line 232) | def setUp(self): method tearDown (line 236) | def tearDown(self): method tearDownClass (line 240) | def tearDownClass(cls): method _get_user_case (line 245) | def _get_user_case(self, user_id=None): method test_sync_usercase_custom_user_data_on_create (line 249) | def test_sync_usercase_custom_user_data_on_create(self): method test_sync_usercase_custom_user_data_on_update (line 259) | def test_sync_usercase_custom_user_data_on_update(self): method test_sync_usercase_overwrite_hq_props (line 271) | def test_sync_usercase_overwrite_hq_props(self): method _check_update_matches (line 285) | def _check_update_matches(self, case, expected_update): method test_reactivate_user (line 290) | def test_reactivate_user(self): method test_update_deactivated_user (line 306) | def test_update_deactivated_user(self): method test_update_and_reactivate_in_one_save (line 325) | def test_update_and_reactivate_in_one_save(self): method test_update_no_change (line 348) | def test_update_no_change(self): method test_bulk_upload_usercases (line 359) | def test_bulk_upload_usercases(self): method test_web_user_removed (line 406) | def test_web_user_removed(self): method test_web_user_location_fields_sync (line 415) | def test_web_user_location_fields_sync(self): method _make_web_user (line 430) | def _make_web_user(self): class DomainTimezoneTests (line 436) | class DomainTimezoneTests(SimpleTestCase): method _test_midnights (line 438) | def _test_midnights(self, utcnow, test_cases): method test_midnight_for_domain_general (line 443) | def test_midnight_for_domain_general(self): method test_midnight_for_domain_cross_boundry (line 461) | def test_midnight_for_domain_cross_boundry(self): method test_midnight_for_domain_dst (line 471) | def test_midnight_for_domain_dst(self): method test_is_midnight_for_domain (line 482) | def test_is_midnight_for_domain(self): class CallCenterDomainTest (line 496) | class CallCenterDomainTest(SimpleTestCase): method test_get_call_center_domains (line 499) | def test_get_call_center_domains(self, _): function _create_domain (line 515) | def _create_domain(name, cc_enabled, cc_use_fixtures, cc_case_type, cc_c... class CallCenterDomainMockTest (line 532) | class CallCenterDomainMockTest(TestCase): method setUpClass (line 539) | def setUpClass(cls): method tearDownClass (line 544) | def tearDownClass(cls): FILE: corehq/apps/callcenter/utils.py class DomainLite (line 16) | class DomainLite(object): method midnights (line 25) | def midnights(self, utcnow=None): class CallCenterCase (line 45) | class CallCenterCase(namedtuple('CallCenterCase', 'case_id hq_user_id')): method from_case (line 47) | def from_case(cls, case): function is_midnight_for_domain (line 56) | def is_midnight_for_domain(midnight_form_domain, error_margin=15, curren... function get_call_center_domains (line 62) | def get_call_center_domains(): function get_call_center_cases (line 96) | def get_call_center_cases(domain_name, case_type, user=None): function get_call_center_case_type_if_enabled (line 114) | def get_call_center_case_type_if_enabled(domain): FILE: corehq/apps/callcenter/views.py class _CallCenterOwnerOptionsUtils (line 15) | class _CallCenterOwnerOptionsUtils(object): method __init__ (line 16) | def __init__(self, domain): method user_tuple (line 19) | def user_tuple(self, user): method reporting_group_tuple (line 24) | def reporting_group_tuple(self, group): method location_tuple (line 27) | def location_tuple(self, location): method static_options (line 32) | def static_options(self): class CallCenterOptionsController (line 44) | class CallCenterOptionsController(EmwfOptionsController): method active_user_es_query (line 46) | def active_user_es_query(self, query): method convert_owner_id_to_select_choice (line 51) | def convert_owner_id_to_select_choice(owner_id, domain): method utils (line 71) | def utils(self): method get_locations_query (line 74) | def get_locations_query(self, query): method group_es_query (line 79) | def group_es_query(self, query): method data_sources (line 83) | def data_sources(self): class CallCenterOwnerOptionsView (line 92) | class CallCenterOwnerOptionsView(EmwfOptionsView): method options_controller (line 97) | def options_controller(self): FILE: corehq/apps/campaign/apps.py class CampaignConfig (line 4) | class CampaignConfig(AppConfig): FILE: corehq/apps/campaign/forms.py class DashboardWidgetBaseForm (line 24) | class DashboardWidgetBaseForm(forms.ModelForm): class Meta (line 26) | class Meta: method __init__ (line 47) | def __init__(self, domain, *args, **kwargs): method save (line 55) | def save(self, commit=True): method _get_display_order (line 60) | def _get_display_order(self): class DashboardMapForm (line 81) | class DashboardMapForm(DashboardWidgetBaseForm): class Meta (line 83) | class Meta(DashboardWidgetBaseForm.Meta): method __init__ (line 99) | def __init__(self, domain, *args, **kwargs): method _get_case_types (line 130) | def _get_case_types(self): method _get_geo_case_properties (line 134) | def _get_geo_case_properties(self): class DashboardReportForm (line 141) | class DashboardReportForm(DashboardWidgetBaseForm): class Meta (line 143) | class Meta(DashboardWidgetBaseForm.Meta): method __init__ (line 153) | def __init__(self, domain, *args, **kwargs): method _get_report_configurations (line 157) | def _get_report_configurations(self): class DashboardGaugeForm (line 165) | class DashboardGaugeForm(DashboardWidgetBaseForm): class Meta (line 167) | class Meta(DashboardWidgetBaseForm.Meta): method __init__ (line 184) | def __init__(self, domain, *args, **kwargs): method _get_case_type_choices (line 188) | def _get_case_type_choices(self): FILE: corehq/apps/campaign/migrations/0001_initial.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/campaign/migrations/0002_dashboardmap_dashboardreport.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/apps/campaign/migrations/0003_add_dashboard_widget_fields.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/campaign/migrations/0004_gauge.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/campaign/models.py class Dashboard (line 13) | class Dashboard(models.Model): class Meta (line 19) | class Meta: method get_map_report_widgets_by_tab (line 22) | def get_map_report_widgets_by_tab(self): class DashboardTab (line 35) | class DashboardTab(models.TextChoices): class DashboardWidgetBase (line 43) | class DashboardWidgetBase(models.Model): class Meta (line 56) | class Meta: class DashboardMap (line 61) | class DashboardMap(DashboardWidgetBase): class Meta (line 73) | class Meta(DashboardWidgetBase.Meta): method to_widget (line 76) | def to_widget(self): class DashboardReport (line 83) | class DashboardReport(DashboardWidgetBase): class Meta (line 94) | class Meta(DashboardWidgetBase.Meta): method report_configuration (line 98) | def report_configuration(self): method url (line 102) | def url(self): method to_widget (line 113) | def to_widget(self): class DashboardGauge (line 121) | class DashboardGauge(DashboardWidgetBase): method to_widget (line 141) | def to_widget(self): class WidgetType (line 148) | class WidgetType(models.TextChoices): method get_form_class (line 154) | def get_form_class(cls, widget_type): method get_model_class (line 168) | def get_model_class(cls, widget_type): function model_to_widget (line 172) | def model_to_widget(instance, fields=None, exclude=None, properties=()): FILE: corehq/apps/campaign/services.py function get_gauge_metric_value (line 4) | def get_gauge_metric_value(gauge): function _get_number_of_cases (line 9) | def _get_number_of_cases(gauge): function _get_number_of_mobile_workers (line 18) | def _get_number_of_mobile_workers(gauge): function _get_number_of_active_mobile_workers (line 22) | def _get_number_of_active_mobile_workers(gauge): function _get_number_of_inactive_mobile_workers (line 26) | def _get_number_of_inactive_mobile_workers(gauge): function _get_number_of_forms_submitted_by_mobile_workers (line 31) | def _get_number_of_forms_submitted_by_mobile_workers(gauge): FILE: corehq/apps/campaign/static/campaign/js/dashboard.js method setData (line 16) | setData(id, type, title) { method resetData (line 22) | resetData() { function tabSwitch (line 75) | function tabSwitch(e) { function printActiveTabToPdf (line 110) | function printActiveTabToPdf() { function fetchMapData (line 173) | function fetchMapData(queryStr) { function loadCases (line 197) | function loadCases(caseData) { FILE: corehq/apps/campaign/tests/test_models.py function dashboard_fixture (line 9) | def dashboard_fixture(): function dashboard_maps (line 19) | def dashboard_maps(): function dashboard_reports (line 62) | def dashboard_reports(): function dashboard_gauges (line 101) | def dashboard_gauges(): function test_dashboard_map_ordering (line 127) | def test_dashboard_map_ordering(): function test_dashboard_map_widget (line 142) | def test_dashboard_map_widget(): function test_dashboard_report_ordering (line 159) | def test_dashboard_report_ordering(): function test_dashboard_report_url (line 174) | def test_dashboard_report_url(): function test_dashboard_report_widget (line 181) | def test_dashboard_report_widget(): function test_dashboard_map_report_widgets (line 198) | def test_dashboard_map_report_widgets(): function test_dashboard_gauge_widget (line 298) | def test_dashboard_gauge_widget(): FILE: corehq/apps/campaign/tests/test_services.py function test_get_number_of_cases_without_case_type (line 11) | def test_get_number_of_cases_without_case_type(case_search_es_patch): function test_get_number_of_cases_with_case_type (line 28) | def test_get_number_of_cases_with_case_type(case_search_es_patch): function test_get_number_of_mobile_workers (line 46) | def test_get_number_of_mobile_workers(user_es_patch): function test_get_number_of_active_mobile_workers (line 65) | def test_get_number_of_active_mobile_workers(user_es_patch): function test_get_number_of_inactive_mobile_workers (line 84) | def test_get_number_of_inactive_mobile_workers(user_es_patch): function test_get_number_of_forms_submitted_by_mobile_workers (line 103) | def test_get_number_of_forms_submitted_by_mobile_workers(form_es_patch): FILE: corehq/apps/campaign/tests/test_views.py class BaseTestCampaignView (line 31) | class BaseTestCampaignView(TestCase): method setUpClass (line 35) | def setUpClass(cls): method tearDownClass (line 50) | def tearDownClass(cls): method endpoint (line 56) | def endpoint(self): method login_endpoint (line 60) | def login_endpoint(self): method _make_request (line 63) | def _make_request(self, query_data=None, headers=None, is_logged_in=Tr... class TestDashboardView (line 70) | class TestDashboardView(BaseTestCampaignView): method setUpClass (line 74) | def setUpClass(cls): method test_not_logged_in (line 120) | def test_not_logged_in(self): method test_ff_not_enabled (line 124) | def test_ff_not_enabled(self): method test_success (line 130) | def test_success(self, metric_value_patch): class TestDashboardViewNoDashboard (line 211) | class TestDashboardViewNoDashboard(BaseTestCampaignView): method test_no_dashboard (line 215) | def test_no_dashboard(self): class TestPaginatedCasesWithGPSView (line 223) | class TestPaginatedCasesWithGPSView(BaseTestCampaignView): method setUpClass (line 229) | def setUpClass(cls): method test_not_logged_in (line 253) | def test_not_logged_in(self): method test_get_paginated_cases_with_gps (line 257) | def test_get_paginated_cases_with_gps(self): class TestDashboardWidgetView (line 269) | class TestDashboardWidgetView(BaseTestCampaignView): method setUpClass (line 276) | def setUpClass(cls): method tearDown (line 281) | def tearDown(self): method test_not_logged_in (line 286) | def test_not_logged_in(self): method test_ff_not_enabled (line 290) | def test_ff_not_enabled(self): method _assert_for_get_form_success (line 295) | def _assert_for_get_form_success(response, widget_type): method _assert_for_save_form_success (line 301) | def _assert_for_save_form_success(response, widget_type): class TestNewWidget (line 306) | class TestNewWidget(TestDashboardWidgetView): method test_new_map_widget (line 310) | def test_new_map_widget(self, *args): method test_new_report_widget (line 321) | def test_new_report_widget(self, *args): method test_new_widget_invalid_widget_type (line 331) | def test_new_widget_invalid_widget_type(self, *args): method test_save_new_map_widget (line 341) | def test_save_new_map_widget(self, mocked_case_types): method test_save_new_report_widget (line 363) | def test_save_new_report_widget(self, mocked_get_report_configurations): method test_save_new_widget_form_error (line 384) | def test_save_new_widget_form_error(self): class TestEditWidget (line 402) | class TestEditWidget(TestDashboardWidgetView): method test_edit_map_widget_form (line 406) | def test_edit_map_widget_form(self, *args): method _sample_map_widget (line 421) | def _sample_map_widget(self): method test_edit_report_widget_form (line 432) | def test_edit_report_widget_form(self, *args): method _sample_report_widget (line 447) | def _sample_report_widget(self, report_id): method test_save_existing_map_widget (line 457) | def test_save_existing_map_widget(self, mocked_case_types): method test_save_existing_report_widget (line 482) | def test_save_existing_report_widget(self, mocked_get_report_configura... method test_edit_nonexistent_widget (line 506) | def test_edit_nonexistent_widget(self): class TestDeleteWidget (line 519) | class TestDeleteWidget(TestDashboardWidgetView): method _create_sample_map_widget (line 522) | def _create_sample_map_widget(self): method test_delete_success (line 532) | def test_delete_success(self, *args): method test_delete_nonexistent_widget (line 550) | def test_delete_nonexistent_widget(self): method test_invalid_widget_type (line 564) | def test_invalid_widget_type(self, *args): class TestGetGeoCaseProperties (line 583) | class TestGetGeoCaseProperties(BaseTestCampaignView): method setUpClass (line 587) | def setUpClass(cls): method test_not_logged_in (line 590) | def test_not_logged_in(self): method test_success (line 595) | def test_success(self, *args): method test_missing_case_type (line 600) | def test_missing_case_type(self, *args): FILE: corehq/apps/campaign/views.py class DashboardMapFilterMixin (line 40) | class DashboardMapFilterMixin(object): method dashboard_map_case_filters_context (line 46) | def dashboard_map_case_filters_context(self): method dashboard_map_filter_classes (line 61) | def dashboard_map_filter_classes(self): class DashboardView (line 69) | class DashboardView(BaseProjectReportSectionView, DashboardMapFilterMixin): method page_url (line 75) | def page_url(self): method dashboard (line 80) | def dashboard(self): method get_context_data (line 88) | def get_context_data(self, **kwargs): method _dashboard_gauge_configs (line 103) | def _dashboard_gauge_configs(self): method _get_gauge_config (line 115) | def _get_gauge_config(dashboard_gauge): class PaginatedCasesWithGPSView (line 130) | class PaginatedCasesWithGPSView(BaseDomainView, CaseListMixin): method dispatch (line 134) | def dispatch(self, request, *args, **kwargs): method get (line 138) | def get(self, request, domain, *args, **kwargs): method _get_paginated_cases_with_gps (line 141) | def _get_paginated_cases_with_gps(self): method _base_query (line 162) | def _base_query(self): method _parse_case (line 168) | def _parse_case(self, case_obj, gps_property): method _get_cases_page (line 187) | def _get_cases_page(self, query): class DashboardWidgetView (line 204) | class DashboardWidgetView(HqHtmxActionMixin, BaseDomainView): method section_url (line 209) | def section_url(self): method new_widget (line 213) | def new_widget(self, request, *args, **kwargs): method _validate_request_widget_type (line 222) | def _validate_request_widget_type(self): method widget_type (line 227) | def widget_type(self): method form_class (line 234) | def form_class(self): method dashboard (line 238) | def dashboard(self): method save_widget (line 243) | def save_widget(self, request, *args, **kwargs): method model_class (line 264) | def model_class(self): method edit_widget (line 268) | def edit_widget(self, request, *args, **kwargs): method widget_id (line 280) | def widget_id(self): method delete_widget (line 287) | def delete_widget(self, request, *args, **kwargs): function get_geo_case_properties_view (line 298) | def get_geo_case_properties_view(request, domain): function get_geo_case_properties (line 311) | def get_geo_case_properties(domain, case_type): FILE: corehq/apps/case_importer/admin.py class CaseUploadRecordAdmin (line 6) | class CaseUploadRecordAdmin(admin.ModelAdmin): method has_add_permission (line 11) | def has_add_permission(self, request, obj=None): method has_delete_permission (line 14) | def has_delete_permission(self, request, obj=None): FILE: corehq/apps/case_importer/base.py function location_safe_case_imports_enabled (line 15) | def location_safe_case_imports_enabled(view_func, request, *args, **kwar... class ImportCases (line 20) | class ImportCases(DataInterface): method __init__ (line 28) | def __init__(self, request, **kwargs): method template_context (line 33) | def template_context(self, domain=None): method section_context (line 41) | def section_context(cls, domain=None): method current_page_context (line 48) | def current_page_context(cls, domain=None): method get_subpages (line 56) | def get_subpages(cls): FILE: corehq/apps/case_importer/const.py class LookupErrors (line 35) | class LookupErrors(object): FILE: corehq/apps/case_importer/do_import.py function do_import (line 69) | def do_import(spreadsheet, config, domain, task=None, record_form_callba... class _TimedAndThrottledImporter (line 108) | class _TimedAndThrottledImporter: method __init__ (line 110) | def __init__( method do_import (line 141) | def do_import(self, spreadsheet): method _do_import (line 151) | def _do_import(self, spreadsheet): method import_row (line 175) | def import_row(self, row_num, raw_row, import_context): method _validate_payment_fields (line 222) | def _validate_payment_fields(self, fields): method _has_custom_case_import_operations (line 245) | def _has_custom_case_import_operations(self): method _perform_custom_case_import_operations (line 251) | def _perform_custom_case_import_operations(self, row_num, raw_row, fie... method user (line 262) | def user(self): method mobile_money_integration_ff_enabled (line 266) | def mobile_money_integration_ff_enabled(self): method _parse_search_id (line 269) | def _parse_search_id(self, row): method _populate_updated_fields (line 287) | def _populate_updated_fields(self, row): method _create_field_map (line 339) | def _create_field_map(self): method _report_import_timings (line 368) | def _report_import_timings(self, timer, results): class SubmitCaseBlockHandler (line 382) | class SubmitCaseBlockHandler: method __init__ (line 391) | def __init__( method add_caseblock (line 434) | def add_caseblock(self, caseblock): method commit_caseblocks (line 440) | def commit_caseblocks(self): method submit_and_process_caseblocks (line 447) | def submit_and_process_caseblocks(self, caseblocks): method pre_submit_hook (line 482) | def pre_submit_hook(self): method submit_case_blocks (line 508) | def submit_case_blocks(self, caseblocks): method _submit_case_blocks (line 519) | def _submit_case_blocks(self, caseblocks): class _CaseImportRow (line 533) | class _CaseImportRow(object): method __init__ (line 534) | def __init__(self, search_id, fields_to_update, config, domain, user_i... method _check_case_name (line 556) | def _check_case_name(self): method _check_valid_external_id (line 560) | def _check_valid_external_id(self): method validate_parent_column (line 568) | def validate_parent_column(self): method relies_on_uncreated_case (line 583) | def relies_on_uncreated_case(self, uncreated_external_ids): method existing_case (line 588) | def existing_case(self): method is_new_case (line 601) | def is_new_case(self): method _get_owner_id (line 604) | def _get_owner_id(self): method _get_parent_index (line 614) | def _get_parent_index(self): method _get_external_id (line 633) | def _get_external_id(self): method _get_caseblock_kwargs (line 638) | def _get_caseblock_kwargs(self): method get_create_caseblock (line 647) | def get_create_caseblock(self): method get_update_caseblock (line 658) | def get_update_caseblock(self): function _log_case_lookup (line 672) | def _log_case_lookup(domain): class _ImportResults (line 676) | class _ImportResults(object): method __init__ (line 681) | def __init__(self): method add_error (line 686) | def add_error(self, row_num, error): method add_errors (line 710) | def add_errors(self, row_num, errors): method add_created (line 714) | def add_created(self, row_num): method add_updated (line 717) | def add_updated(self, row_num): method to_json (line 720) | def to_json(self): function _convert_field_value (line 731) | def _convert_field_value(value): class _OwnerAccessor (line 736) | class _OwnerAccessor(object): method __init__ (line 737) | def __init__(self, domain, user): method get_id_from_name (line 743) | def get_id_from_name(self, name): method _get_id_from_name (line 746) | def _get_id_from_name(self, name): method check_owner_id (line 780) | def check_owner_id(self, owner_id): method _check_owner_id (line 783) | def _check_owner_id(self, owner_id): method _check_owner (line 793) | def _check_owner(self, owner, owner_field): method _location_is_accessible (line 805) | def _location_is_accessible(self, owner): method _accessible_locations (line 815) | def _accessible_locations(self): function cached_function_call (line 823) | def cached_function_call(fn, param, cache): FILE: corehq/apps/case_importer/exceptions.py class ImporterError (line 9) | class ImporterError(Exception): class ImporterRawError (line 18) | class ImporterRawError(ImporterError): class ImporterFileNotFound (line 22) | class ImporterFileNotFound(ImporterError): class ImporterExcelError (line 26) | class ImporterExcelError(ImporterError, xlrd.XLRDError): class ImporterExcelFileEncrypted (line 34) | class ImporterExcelFileEncrypted(ImporterExcelError): class ImporterExcelTooManyRows (line 38) | class ImporterExcelTooManyRows(ImporterError): method __init__ (line 41) | def __init__(self, row_count): method __str__ (line 44) | def __str__(self): class InvalidCustomFieldNameException (line 51) | class InvalidCustomFieldNameException(ImporterError): class CustomImporterError (line 56) | class CustomImporterError(ImporterError): class CaseRowErrorList (line 60) | class CaseRowErrorList(Exception): method __init__ (line 61) | def __init__(self, errors=None): method __iter__ (line 65) | def __iter__(self): class CaseRowError (line 69) | class CaseRowError(Exception): method __init__ (line 74) | def __init__(self, column_name=None, message=None, sample=None): class InvalidOwnerName (line 83) | class InvalidOwnerName(CaseRowError): class InvalidOwner (line 91) | class InvalidOwner(CaseRowError): class InvalidParentId (line 100) | class InvalidParentId(CaseRowError): class InvalidDate (line 108) | class InvalidDate(CaseRowError): class InvalidNumber (line 115) | class InvalidNumber(CaseRowError): class InvalidGPS (line 122) | class InvalidGPS(CaseRowError): class InvalidPhoneNumber (line 130) | class InvalidPhoneNumber(CaseRowError): class InvalidSelectValue (line 137) | class InvalidSelectValue(CaseRowError): class BlankExternalId (line 145) | class BlankExternalId(CaseRowError): class CaseGeneration (line 153) | class CaseGeneration(CaseRowError): class DuplicateLocationName (line 160) | class DuplicateLocationName(CaseRowError): class InvalidLocation (line 169) | class InvalidLocation(CaseRowError): class InvalidInteger (line 177) | class InvalidInteger(CaseRowError): class ImportErrorMessage (line 185) | class ImportErrorMessage(CaseRowError): class TooManyMatches (line 192) | class TooManyMatches(CaseRowError): class CaseNameTooLong (line 200) | class CaseNameTooLong(CaseRowError): class ExternalIdTooLong (line 205) | class ExternalIdTooLong(CaseRowError): class UnexpectedError (line 210) | class UnexpectedError(CaseRowError): FILE: corehq/apps/case_importer/extension_points.py function custom_case_upload_file_operations (line 7) | def custom_case_upload_file_operations(domain, case_upload) -> List[str]: function custom_case_import_operations (line 18) | def custom_case_import_operations(domain, row_num, raw_row, fields_to_up... FILE: corehq/apps/case_importer/management/commands/import_cases.py class Command (line 12) | class Command(BaseCommand): method add_arguments (line 27) | def add_arguments(self, parser): method handle (line 32) | def handle(self, export_file, config_file, domain, **options): FILE: corehq/apps/case_importer/management/commands/terminate_case_import.py class Command (line 7) | class Command(BaseCommand): method add_arguments (line 10) | def add_arguments(self, parser): method handle (line 13) | def handle(self, upload_id, **options): FILE: corehq/apps/case_importer/management/commands/update_case_property.py class Command (line 10) | class Command(BaseCommand): method add_arguments (line 15) | def add_arguments(self, parser): method handle (line 20) | def handle(self, domain, infile, logfile, *args, **options): FILE: corehq/apps/case_importer/migrations/0001_initial.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/case_importer/migrations/0002_auto_20161206_1937.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/case_importer/migrations/0003_caseuploadrecord_couch_user_id.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/case_importer/migrations/0004_caseuploadrecord_case_type.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/case_importer/migrations/0005_caseuploadfilemeta.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/case_importer/migrations/0006_caseuploadrecord_upload_file_meta.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/case_importer/migrations/0007_auto_20161209_2004.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/case_importer/migrations/0008_caseuploadrecord_task_status_json.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/case_importer/migrations/0009_caseuploadrecord_comment.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/case_importer/migrations/0010_caseuploadformrecord.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/case_importer/migrations/0011_update_blob_paths.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/case_importer/migrations/0012_auto_20190405_1747.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/case_importer/migrations/0013_make_duplicates_errors.py function iterator (line 10) | def iterator(queryset): function migrate_record_duplicates (line 20) | def migrate_record_duplicates(apps, schema_editor): class Migration (line 37) | class Migration(migrations.Migration): FILE: corehq/apps/case_importer/migrations/0014_rename_caseuploadrecord_domain_created_case_import_domain_21a470_idx.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/case_importer/static/case_importer/js/excel_fields.js function excelFieldRows (line 5) | function excelFieldRows(excelFields, caseFieldSpecs, systemFields) { FILE: corehq/apps/case_importer/suggested_fields.py function _combine_field_specs (line 15) | def _combine_field_specs(field_specs, exclude_fields): function get_suggested_case_fields (line 33) | def get_suggested_case_fields(domain, case_type, exclude=None): class FieldSpec (line 51) | class FieldSpec(jsonobject.StrictJsonObject): function get_special_fields (line 60) | def get_special_fields(): function get_non_discoverable_system_properties (line 109) | def get_non_discoverable_system_properties(): FILE: corehq/apps/case_importer/tasks.py function bulk_import_async (line 29) | def bulk_import_async(config_list_json, domain, excel_id): function store_failed_task_result (line 67) | def store_failed_task_result(upload_id): function _alert_on_result (line 72) | def _alert_on_result(result, domain): function _merge_import_results (line 87) | def _merge_import_results(result_list): function _create_deprecated_error_dict (line 101) | def _create_deprecated_error_dict(case_type): FILE: corehq/apps/case_importer/tests/test_importer.py class TestValidColumnNames (line 42) | class TestValidColumnNames(SimpleTestCase): method test_validate_column_names (line 43) | def test_validate_column_names(self): class TestCaseImportRow (line 52) | class TestCaseImportRow(SimpleTestCase): method get_row (line 54) | def get_row(self, fields_to_update): method test_get_caseblock_kwargs_update (line 65) | def test_get_caseblock_kwargs_update(self): method test_get_caseblock_kwargs_external_id (line 76) | def test_get_caseblock_kwargs_external_id(self): class ImporterTest (line 90) | class ImporterTest(TestCase): method setUpClass (line 93) | def setUpClass(cls): method tearDownClass (line 106) | def tearDownClass(cls): method setUp (line 111) | def setUp(self): method tearDown (line 117) | def tearDown(self): method _config (line 122) | def _config(self, col_names, search_column=None, case_type=None, method testImportFileMissing (line 136) | def testImportFileMissing(self, update_state): method testImportBasic (line 148) | def testImportBasic(self): method testCreateCasesWithDuplicateExternalIds (line 176) | def testCreateCasesWithDuplicateExternalIds(self): method testImportNamedColumns (line 194) | def testImportNamedColumns(self): method testImportTrailingWhitespace (line 208) | def testImportTrailingWhitespace(self): method testCaseIdMatching (line 223) | def testCaseIdMatching(self): method testCaseLookupTypeCheck (line 253) | def testCaseLookupTypeCheck(self): method testCaseLookupDomainCheck (line 272) | def testCaseLookupDomainCheck(self): method testExternalIdMatching (line 292) | def testExternalIdMatching(self): method test_external_id_matching_on_create_with_custom_column_name (line 319) | def test_external_id_matching_on_create_with_custom_column_name(self): method testNoCreateNew (line 338) | def testNoCreateNew(self): method testBlankRows (line 355) | def testBlankRows(self): method testBasicChunking (line 371) | def testBasicChunking(self): method testExternalIdChunking (line 387) | def testExternalIdChunking(self): method testParentCase (line 415) | def testParentCase(self): method testExtensionCase (line 454) | def testExtensionCase(self): method import_mock_file (line 484) | def import_mock_file(self, rows): method testLocationOwner (line 489) | def testLocationOwner(self): method test_date_validity_checking (line 528) | def test_date_validity_checking(self): method test_select_validity_checking (line 563) | def test_select_validity_checking(self): method test_columns_and_rows_align (line 597) | def test_columns_and_rows_align(self): method test_user_can_access_location (line 612) | def test_user_can_access_location(self): method test_user_can_access_owner (line 630) | def test_user_can_access_owner(self): method test_bad_owner_proper_column_name (line 652) | def test_bad_owner_proper_column_name(self): method test_case_name_too_long (line 666) | def test_case_name_too_long(self): class SubmitCaseBlockHandlerTests (line 679) | class SubmitCaseBlockHandlerTests(TestCase): method setUpClass (line 682) | def setUpClass(cls): method test_case_import_sets_form_name (line 687) | def test_case_import_sets_form_name(self): function make_worksheet_wrapper (line 703) | def make_worksheet_wrapper(*rows): function restrict_user_to_location (line 708) | def restrict_user_to_location(domain, test_case, location): function make_business_units (line 723) | def make_business_units(domain, shares_cases=True): function get_commcare_user (line 737) | def get_commcare_user(domain_name): class MultipleDomainImporterTest (line 745) | class MultipleDomainImporterTest(TestCase): method setUp (line 753) | def setUp(self): method tearDown (line 777) | def tearDown(self): method _config (line 785) | def _config(self, col_names, search_column=None, case_type=None, method import_mock_file (line 798) | def import_mock_file(self, rows): method test_multiple_domain_case_import (line 804) | def test_multiple_domain_case_import(self): method test_multiple_domain_case_import_mirror_domain_disabled (line 851) | def test_multiple_domain_case_import_mirror_domain_disabled(self): FILE: corehq/apps/case_importer/tests/test_importer_config_compat.py class ImporterConfigCompatTest (line 11) | class ImporterConfigCompatTest(SimpleTestCase): method test_e296e568__2016_12_16 (line 16) | def test_e296e568__2016_12_16(self): method test_41e39e16__2016_12_16 (line 37) | def test_41e39e16__2016_12_16(self): FILE: corehq/apps/case_importer/tests/test_suggested_fields.py class SuggestedFieldTest (line 14) | class SuggestedFieldTest(SimpleTestCase, DocTestMixin): method _test (line 19) | def _test(self, get_special_fields, get_case_properties_for_case_type, method test_excludes_from_both (line 31) | def test_excludes_from_both(self): method test_special_wins_out (line 42) | def test_special_wins_out(self): method test_basic_inclusion_and_sorting (line 54) | def test_basic_inclusion_and_sorting(self): class TestSystemProperties (line 74) | class TestSystemProperties(SimpleTestCase): method test_get_non_discoverable_system_properties (line 76) | def test_get_non_discoverable_system_properties(self): FILE: corehq/apps/case_importer/tests/test_util.py class Unexpected (line 14) | class Unexpected(Exception): class TestImporterUtils (line 19) | class TestImporterUtils(TestCase): method setUpClass (line 22) | def setUpClass(cls): method tearDownClass (line 31) | def tearDownClass(cls): method test_lookup_case_with_case_id (line 37) | def test_lookup_case_with_case_id(self): method test_lookup_case_with_case_id_and_wrong_type (line 41) | def test_lookup_case_with_case_id_and_wrong_type(self): method test_lookup_case_with_unknown_case_id (line 45) | def test_lookup_case_with_unknown_case_id(self): method test_lookup_case_with_external_id (line 49) | def test_lookup_case_with_external_id(self): method test_lookup_case_with_external_id_and_wrong_type (line 53) | def test_lookup_case_with_external_id_and_wrong_type(self): method test_lookup_case_with_unknown_external_id (line 57) | def test_lookup_case_with_unknown_external_id(self): method test_lookup_case_with_multiple_results (line 61) | def test_lookup_case_with_multiple_results(self): method checkResult (line 69) | def checkResult(self, result, case, code): FILE: corehq/apps/case_importer/tracking/analytics.py function get_case_upload_files_total_bytes (line 6) | def get_case_upload_files_total_bytes(): FILE: corehq/apps/case_importer/tracking/case_upload_tracker.py class CaseUpload (line 22) | class CaseUpload(object): method __init__ (line 24) | def __init__(self, upload_id): method create (line 28) | def create(cls, file_object, filename, domain): method get (line 33) | def get(cls, upload_id): method _case_upload_record (line 38) | def _case_upload_record(self): method get_tempfile (line 41) | def get_tempfile(self): method check_file (line 44) | def check_file(self): method get_spreadsheet (line 55) | def get_spreadsheet(self, worksheet_index=0): method trigger_upload (line 58) | def trigger_upload(self, domain, config_list, comment=None, is_bulk=Fa... method store_task_result (line 86) | def store_task_result(self, task_status): method store_failed_task_result (line 89) | def store_failed_task_result(self): method record_form (line 92) | def record_form(self, form_id): FILE: corehq/apps/case_importer/tracking/dbaccessors.py function get_case_upload_records (line 12) | def get_case_upload_records(domain, user, limit, skip=0, query=''): function get_case_upload_record_count (line 24) | def get_case_upload_record_count(domain, user): function get_case_ids_for_case_upload (line 31) | def get_case_ids_for_case_upload(case_upload): function get_form_ids_for_case_upload (line 41) | def get_form_ids_for_case_upload(case_upload): FILE: corehq/apps/case_importer/tracking/filestorage.py class PersistentFileStore (line 18) | class PersistentFileStore(object): method __init__ (line 27) | def __init__(self, meta_model): method write_file (line 34) | def write_file(self, f, filename, domain): method get_tempfile_ref_for_contents (line 50) | def get_tempfile_ref_for_contents(self, identifier): method get_filename (line 57) | def get_filename(self, identifier): class TransientFileStore (line 64) | class TransientFileStore(object): method __init__ (line 69) | def __init__(self, bucket, timeout): method _get_key (line 74) | def _get_key(self, identifier): method _get_filename_key (line 77) | def _get_filename_key(self, identifier): method write_file (line 80) | def write_file(self, f, filename, domain): method get_tempfile_ref_for_contents (line 87) | def get_tempfile_ref_for_contents(self, identifier): method get_filename (line 97) | def get_filename(self, identifier): method _get_filename_content (line 102) | def _get_filename_content(self, identifier): function make_temp_file (line 106) | def make_temp_file(content, suffix): FILE: corehq/apps/case_importer/tracking/jsmodels.py class CaseUploadJSON (line 14) | class CaseUploadJSON(jsonobject.StrictJsonObject): function case_upload_to_user_json (line 31) | def case_upload_to_user_json(case_upload, request): FILE: corehq/apps/case_importer/tracking/models.py class CaseUploadRecord (line 18) | class CaseUploadRecord(models.Model): class Meta (line 35) | class Meta(object): method task (line 40) | def task(self): method get_task_status_json (line 44) | def get_task_status_json(self): method save_task_status_json (line 50) | def save_task_status_json(self, task_status_json): method save_task_status_json_if_failed (line 60) | def save_task_status_json_if_failed(self): method get_tempfile_ref_for_upload_ref (line 71) | def get_tempfile_ref_for_upload_ref(self): class CaseUploadFileMeta (line 76) | class CaseUploadFileMeta(models.Model): class CaseUploadFormRecord (line 82) | class CaseUploadFormRecord(models.Model): FILE: corehq/apps/case_importer/tracking/permissions.py function user_may_view_file_upload (line 1) | def user_may_view_file_upload(domain, couch_user, case_upload_record): function user_may_update_comment (line 9) | def user_may_update_comment(couch_user, case_upload_record): FILE: corehq/apps/case_importer/tracking/task_status.py class TaskStatus (line 7) | class TaskStatus(jsonobject.StrictJsonObject): method is_finished (line 13) | def is_finished(self): class TaskStatusProgress (line 17) | class TaskStatusProgress(jsonobject.StrictJsonObject): class TaskStatusResult (line 21) | class TaskStatusResult(jsonobject.StrictJsonObject): class TaskStatusResultError (line 28) | class TaskStatusResultError(jsonobject.StrictJsonObject): function normalize_task_status_result (line 39) | def normalize_task_status_result(result): function normalize_task_status_result_errors (line 51) | def normalize_task_status_result_errors(result): function get_task_status_json (line 74) | def get_task_status_json(task_id): function make_task_status_success (line 110) | def make_task_status_success(result): FILE: corehq/apps/case_importer/tracking/tests/test_dbaccessors.py class DbaccessorsTest (line 27) | class DbaccessorsTest(TestCase): method setUpClass (line 30) | def setUpClass(cls): method tearDownClass (line 65) | def tearDownClass(cls): method assert_model_lists_equal (line 73) | def assert_model_lists_equal(self, list_1, list_2): method test_get_case_uploads (line 77) | def test_get_case_uploads(self): method test_get_case_uploads_by_query (line 92) | def test_get_case_uploads_by_query(self): class FormAndCaseIdsTest (line 104) | class FormAndCaseIdsTest(TestCase): method tearDownClass (line 110) | def tearDownClass(cls): method _get_config (line 115) | def _get_config(self, excel_fields): method _import_rows (line 128) | def _import_rows(self, rows, get_by_user_id): method test_order (line 149) | def test_order(self): FILE: corehq/apps/case_importer/tracking/tests/test_filestorage.py class FilestorageTest (line 11) | class FilestorageTest(TestCase): method setUpClass (line 13) | def setUpClass(cls): function test_transient (line 24) | def test_transient(self, file_store): FILE: corehq/apps/case_importer/tracking/views.py function case_uploads (line 37) | def case_uploads(request, domain): function case_upload_status (line 67) | def case_upload_status(request, domain, upload_id): function update_case_upload_comment (line 78) | def update_case_upload_comment(request, domain, upload_id): function case_upload_file (line 101) | def case_upload_file(request, domain, upload_id): function case_upload_form_ids (line 118) | def case_upload_form_ids(request, domain, upload_id): function case_upload_case_ids (line 133) | def case_upload_case_ids(request, domain, upload_id): function _get_case_upload_record (line 147) | def _get_case_upload_record(domain, upload_id, user): FILE: corehq/apps/case_importer/util.py class ImporterConfig (line 35) | class ImporterConfig(namedtuple('ImporterConfig', [ method __new__ (line 50) | def __new__(cls, *args, **kwargs): method __detect_schema_change (line 55) | def __detect_schema_change(args, kwargs): method to_dict (line 63) | def to_dict(self): method to_json (line 66) | def to_json(self): method from_dict (line 70) | def from_dict(cls, json_dict): method from_json (line 74) | def from_json(cls, json_rep): method from_request (line 78) | def from_request(cls, request): class WorksheetWrapper (line 91) | class WorksheetWrapper(object): method __init__ (line 93) | def __init__(self, worksheet): method from_workbook (line 97) | def from_workbook(cls, workbook, worksheet_index=0): method _headers_by_index (line 108) | def _headers_by_index(self): method get_header_columns (line 119) | def get_header_columns(self): method max_row (line 123) | def max_row(self): method iter_rows (line 126) | def iter_rows(self): method iter_row_dicts (line 130) | def iter_row_dicts(self): function lookup_case (line 139) | def lookup_case(search_field, search_id, domain, case_type): function open_spreadsheet_download_ref (line 164) | def open_spreadsheet_download_ref(filename): function get_spreadsheet (line 173) | def get_spreadsheet(filename, worksheet_index=0): function get_importer_error_message (line 185) | def get_importer_error_message(e): function exit_celery_with_error_message (line 200) | def exit_celery_with_error_message(task, error_message): function get_interned_exception (line 216) | def get_interned_exception(message): function merge_dicts (line 223) | def merge_dicts(dict_list, keys_to_exclude): FILE: corehq/apps/case_importer/views.py function render_error (line 77) | def render_error(request, domain, message): function validate_column_names (line 83) | def validate_column_names(column_names, invalid_column_names): function _case_importer_breadcrumb_context (line 93) | def _case_importer_breadcrumb_context(page_name, domain): function excel_config (line 108) | def excel_config(request, domain): function _get_workbook_sheet_names (line 140) | def _get_workbook_sheet_names(case_upload): function _process_spreadsheet_columns (line 145) | def _process_spreadsheet_columns(spreadsheet, max_columns=None): function _process_bulk_sheets (line 172) | def _process_bulk_sheets(case_upload, worksheet_titles): function _process_single_sheet (line 182) | def _process_single_sheet(case_upload): function _is_bulk_import (line 187) | def _is_bulk_import(domain, case_types_from_apps, unrecognized_case_type... function _process_file_and_get_upload (line 199) | def _process_file_and_get_upload(uploaded_file_handle, request, domain, ... function _process_excel_mapping (line 279) | def _process_excel_mapping(domain, spreadsheet, search_column): function _create_bulk_configs (line 298) | def _create_bulk_configs(domain, request, case_upload): function excel_fields (line 337) | def excel_fields(request, domain): function excel_commit (line 428) | def excel_commit(request, domain): function bulk_case_upload_api (line 470) | def bulk_case_upload_api(request, domain, **kwargs): function _bulk_case_upload_api (line 485) | def _bulk_case_upload_api(request, domain): function _get_missing_payment_fields (line 554) | def _get_missing_payment_fields(columns): FILE: corehq/apps/case_search/admin.py class CaseSearchConfigForm (line 9) | class CaseSearchConfigForm(forms.ModelForm): method __init__ (line 12) | def __init__(self, *args, **kwargs): method clean_index_name (line 16) | def clean_index_name(self): function _construct_index_name (line 24) | def _construct_index_name(field, domain): function _get_valid_index_name (line 33) | def _get_valid_index_name(domain): class CaseSearchConfigAdmin (line 38) | class CaseSearchConfigAdmin(admin.ModelAdmin): FILE: corehq/apps/case_search/const.py class _INDEXED_METADATA (line 31) | class _INDEXED_METADATA: method get_value (line 38) | def get_value(self, doc): method es_field_name (line 44) | def es_field_name(self): FILE: corehq/apps/case_search/dsl_utils.py function unwrap_value (line 11) | def unwrap_value(value, context): FILE: corehq/apps/case_search/exceptions.py class CaseSearchException (line 1) | class CaseSearchException(Exception): class CaseSearchNotEnabledException (line 5) | class CaseSearchNotEnabledException(CaseSearchException): class CaseSearchUserError (line 9) | class CaseSearchUserError(CaseSearchException): class CaseFilterError (line 13) | class CaseFilterError(Exception): method __init__ (line 15) | def __init__(self, message, filter_part): class TooManyRelatedCasesError (line 20) | class TooManyRelatedCasesError(CaseFilterError): class XPathFunctionException (line 24) | class XPathFunctionException(CaseFilterError): FILE: corehq/apps/case_search/filter_dsl.py class SearchFilterContext (line 36) | class SearchFilterContext: method __post_init__ (line 45) | def __post_init__(self): function print_ast (line 52) | def print_ast(node): function _require_related_lookups_flag (line 78) | def _require_related_lookups_flag(context): function build_filter_from_ast (line 84) | def build_filter_from_ast(node, context): function build_filter_from_xpath (line 148) | def build_filter_from_xpath(xpath, *, domain=None, context=None): FILE: corehq/apps/case_search/fixtures.py function _get_user_template_info (line 19) | def _get_user_template_info(restore_user): function _get_template_renderer (line 28) | def _get_template_renderer(restore_user): function custom_csql_fixture_context (line 37) | def custom_csql_fixture_context(domain, restore_user): function _run_query (line 41) | def _run_query(domain, csql, index): function _get_index (line 52) | def _get_index(domain): class CaseSearchFixtureProvider (line 59) | class CaseSearchFixtureProvider(FixtureProvider): method __call__ (line 62) | def __call__(self, restore_state): method _to_xml (line 76) | def _to_xml(self, name, value): function _get_indicators_for_user (line 80) | def _get_indicators_for_user(domain, user): FILE: corehq/apps/case_search/forms.py class CSQLFixtureExpressionForm (line 6) | class CSQLFixtureExpressionForm(forms.ModelForm): class Meta (line 9) | class Meta: method __init__ (line 16) | def __init__(self, domain, *args, **kwargs): method get_context (line 30) | def get_context(self): method save (line 37) | def save(self, commit=True): class UserDataCriteriaForm (line 42) | class UserDataCriteriaForm(forms.Form): class CSQLFixtureFilterForm (line 63) | class CSQLFixtureFilterForm(forms.ModelForm): class Meta (line 66) | class Meta: method clean (line 70) | def clean(self): method get_context (line 78) | def get_context(self): method _get_criteria_forms (line 85) | def _get_criteria_forms(self): FILE: corehq/apps/case_search/migrations/0001_initial.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/case_search/migrations/0002_auto_20161114_1901.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/case_search/migrations/0003_casesearchqueryaddition.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/case_search/migrations/0004_auto_20170518_2018.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/case_search/migrations/0005_migrate_json_config.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/case_search/migrations/0006_remove_casesearchconfig__config.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/case_search/migrations/0007_auto_20170522_1506.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/case_search/migrations/0008_auto_20180119_1716.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/case_search/migrations/0009_delete_casesearchqueryaddition.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/case_search/migrations/0010_casesearchconfig_synchronous_web_apps.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/case_search/migrations/0011_domainsnotincasesearchindex.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/case_search/migrations/0012_casesearchconfig_sync_cases_on_form_entry.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/case_search/migrations/0013_casesearchconfig_fuzzy_prefix_length.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/apps/case_search/migrations/0014_casesearchconfig_index_name.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/case_search/migrations/0015_csqlfixtureexpression_csqlfixtureexpressionlog.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/case_search/migrations/0016_csqlfixtureexpression_user_data_criteria.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/case_search/models.py function _flatten_singleton_list (line 58) | def _flatten_singleton_list(value): class SearchCriteria (line 63) | class SearchCriteria: method is_empty (line 68) | def is_empty(self): method has_missing_filter (line 72) | def has_missing_filter(self): method value_as_list (line 78) | def value_as_list(self): method has_multiple_terms (line 83) | def has_multiple_terms(self): method is_daterange (line 87) | def is_daterange(self): method is_ancestor_query (line 93) | def is_ancestor_query(self): method is_index_query (line 97) | def is_index_query(self): method index_query_identifier (line 101) | def index_query_identifier(self): method get_date_range (line 104) | def get_date_range(self): method clone_without_blanks (line 109) | def clone_without_blanks(self): method _value_without_empty (line 112) | def _value_without_empty(self): method validate (line 115) | def validate(self): method _validate_multiple_terms (line 119) | def _validate_multiple_terms(self): method _validate_daterange (line 140) | def _validate_daterange(self): function criteria_dict_to_criteria_list (line 155) | def criteria_dict_to_criteria_list(criteria_dict): class CommcareSortProperty (line 163) | class CommcareSortProperty: function _parse_commcare_sort_properties (line 169) | def _parse_commcare_sort_properties(values): class CaseSearchRequestConfig (line 187) | class CaseSearchRequestConfig: method _require_case_type (line 196) | def _require_case_type(self, attribute, value): method _is_string (line 203) | def _is_string(self, attribute, value): function extract_search_request_config (line 208) | def extract_search_request_config(request_dict): class FuzzyProperties (line 220) | class FuzzyProperties(models.Model): class Meta (line 238) | class Meta(object): class IgnorePatterns (line 242) | class IgnorePatterns(models.Model): class CaseSearchConfig (line 269) | class CaseSearchConfig(models.Model): class Meta (line 273) | class Meta(object): method enabled_domains (line 299) | def enabled_domains(cls): method to_json (line 302) | def to_json(self): method create_model_and_index_from_json (line 313) | def create_model_and_index_from_json(cls, domain, json_def): function case_search_enabled_for_domain (line 348) | def case_search_enabled_for_domain(domain): function case_search_synchronous_web_apps_for_domain (line 358) | def case_search_synchronous_web_apps_for_domain(domain): function case_search_sync_cases_on_form_entry_enabled_for_domain (line 369) | def case_search_sync_cases_on_form_entry_enabled_for_domain(domain): function enable_case_search (line 376) | def enable_case_search(domain): function disable_case_search (line 386) | def disable_case_search(domain): class DomainsNotInCaseSearchIndex (line 400) | class DomainsNotInCaseSearchIndex(models.Model): function validate_user_data_criteria (line 424) | def validate_user_data_criteria(value): class CSQLFixtureExpression (line 434) | class CSQLFixtureExpression(models.Model): method by_domain (line 449) | def by_domain(cls, domain): method matches_user_data_criteria (line 453) | def matches_user_data_criteria(cls, user_data, user_data_criteria): method soft_delete (line 474) | def soft_delete(self): method save (line 482) | def save(self, *args, **kwargs): class CSQLFixtureExpressionLog (line 487) | class CSQLFixtureExpressionLog(models.Model): class Action (line 488) | class Action(models.TextChoices): function after_save (line 501) | def after_save(sender, instance, created, **kwargs): FILE: corehq/apps/case_search/tasks.py function reindex_case_search_for_domain (line 6) | def reindex_case_search_for_domain(domain): FILE: corehq/apps/case_search/tests/test_ancestor_functions.py class TestIsAncestorPath (line 14) | class TestIsAncestorPath(SimpleTestCase): method test_is_ancestor_query (line 24) | def test_is_ancestor_query(self, expression, expected): method test_is_ancestor_path_expression (line 37) | def test_is_ancestor_path_expression(self, expression, expected): class TestAncestorQueries (line 43) | class TestAncestorQueries(BaseCaseSearchTest): method setUp (line 44) | def setUp(self): method test_single_term_ancestor_query (line 79) | def test_single_term_ancestor_query(self): method test_multi_term_ancestor_query (line 87) | def test_multi_term_ancestor_query(self): method test_case_id_shortcut (line 95) | def test_case_id_shortcut(self): method test_parent (line 110) | def test_parent(self): method test_parentparent (line 118) | def test_parentparent(self): method test_host (line 126) | def test_host(self): method test_hosthost (line 134) | def test_hosthost(self): method test_hostparent (line 142) | def test_hostparent(self): method test_parenthost (line 150) | def test_parenthost(self): method test_nested_ancestor_exists (line 158) | def test_nested_ancestor_exists(self): method test_search_criteria_validate (line 171) | def test_search_criteria_validate(self, xpath): FILE: corehq/apps/case_search/tests/test_case_search_endpoint.py class TestCaseSearchEndpoint (line 28) | class TestCaseSearchEndpoint(TestCase): method setUpClass (line 32) | def setUpClass(cls): method tearDownClass (line 70) | def tearDownClass(cls): method test_basic (line 74) | def test_basic(self): method test_case_id_criteia (line 80) | def test_case_id_criteia(self): method test_dynamic_property (line 84) | def test_dynamic_property(self): method test_app_aware_related_cases (line 88) | def test_app_aware_related_cases(self): FILE: corehq/apps/case_search/tests/test_case_search_es_queries.py class CaseSearchTests (line 20) | class CaseSearchTests(ElasticTestMixin, TestCase): method setUp (line 21) | def setUp(self): method test_add_blacklisted_ids (line 25) | def test_add_blacklisted_ids(self): method test_add_ignore_pattern_queries (line 68) | def test_add_ignore_pattern_queries(self): method test_multi_xpath_query (line 260) | def test_multi_xpath_query(self): method test_indices_query (line 309) | def test_indices_query(self): method test_add_custom_sort_properties (line 375) | def test_add_custom_sort_properties(self): function test_use_custom_index (line 427) | def test_use_custom_index(): FILE: corehq/apps/case_search/tests/test_case_search_filters.py class TestCaseSearchLookups (line 11) | class TestCaseSearchLookups(BaseCaseSearchTest): method setUp (line 12) | def setUp(self): method test_date_range_criteria (line 16) | def test_date_range_criteria(self): method test_fuzzy_properties (line 34) | def test_fuzzy_properties(self): method test_ignore_patterns (line 55) | def test_ignore_patterns(self): method test_multiple_case_types (line 72) | def test_multiple_case_types(self): method test_blank_case_search (line 87) | def test_blank_case_search(self): method test_blank_case_search_parent (line 103) | def test_blank_case_search_parent(self): method test_selected_any_function (line 119) | def test_selected_any_function(self): method test_selected_all_function (line 137) | def test_selected_all_function(self): method test_selected_any_function_string_prop_name (line 157) | def test_selected_any_function_string_prop_name(self): method test_selected_validate_property_name (line 175) | def test_selected_validate_property_name(self): method test_index_case_search (line 183) | def test_index_case_search(self): method test_match_all (line 200) | def test_match_all(self): method test_match_none (line 218) | def test_match_none(self): FILE: corehq/apps/case_search/tests/test_case_search_registry.py function case (line 40) | def case(name, type_, properties): function parent_and_child_cases (line 50) | def parent_and_child_cases(parent_name, child_name): function get_app_with_case_search (line 69) | def get_app_with_case_search(domain): class TestCaseSearchRegistry (line 92) | class TestCaseSearchRegistry(TestCase): method setUpClass (line 95) | def setUpClass(cls): method setup_domain (line 146) | def setup_domain(cls, domain, cases): method tearDownClass (line 151) | def tearDownClass(cls): method _run_query (line 155) | def _run_query(self, domain, case_types, criteria_dict, registry_slug): method test_query_all_domains_in_registry (line 160) | def test_query_all_domains_in_registry(self): method test_case_property_query (line 175) | def test_case_property_query(self): method test_subset_of_domains_accessible (line 189) | def test_subset_of_domains_accessible(self): method test_in_registry_but_no_grants (line 203) | def test_in_registry_but_no_grants(self): method test_invalid_registry_can_access_own_cases (line 215) | def test_invalid_registry_can_access_own_cases(self): method test_case_type_not_in_registry (line 227) | def test_case_type_not_in_registry(self): method test_access_related_case_type_not_in_registry (line 239) | def test_access_related_case_type_not_in_registry(self): method test_search_commcare_project (line 252) | def test_search_commcare_project(self): method test_commcare_project_field_doesnt_expand_access (line 264) | def test_commcare_project_field_doesnt_expand_access(self): method test_includes_project_property (line 275) | def test_includes_project_property(self): method test_related_cases_included (line 292) | def test_related_cases_included(self): method test_primary_cases_not_included_with_related_cases (line 309) | def test_primary_cases_not_included_with_related_cases(self): class TestCaseSearchRegistryPermissions (line 324) | class TestCaseSearchRegistryPermissions(TestCase): method setUpClass (line 326) | def setUpClass(cls): method test_user_without_permission_cannot_access_all_domains (line 343) | def test_user_without_permission_cannot_access_all_domains(self): method test_user_with_permission_can_access_all_domains (line 347) | def test_user_with_permission_can_access_all_domains(self): method _get_query_helper (line 352) | def _get_query_helper(self, permissions): FILE: corehq/apps/case_search/tests/test_filter_dsl.py class TestFilterDsl (line 37) | class TestFilterDsl(ElasticTestMixin, SimpleTestCase): method test_simple_filter (line 39) | def test_simple_filter(self): method test_simple_metadata_filter (line 45) | def test_simple_metadata_filter(self): method test_simple_filter_with_date (line 53) | def test_simple_filter_with_date(self, mock_get_timezone): method test_datetime_metadata_property_filter_optimized (line 62) | def test_datetime_metadata_property_filter_optimized(self, mock_get_ti... method test_system_datetime_property_comparison (line 71) | def test_system_datetime_property_comparison(self): method test_system_datetime_property_match (line 78) | def test_system_datetime_property_match(self): method test_not_filter (line 84) | def test_not_filter(self): method test_metadata_not_filter (line 90) | def test_metadata_not_filter(self): method test_starts_with (line 96) | def test_starts_with(self): method test_date_comparison (line 102) | def test_date_comparison(self): method test_date_comparison_today (line 109) | def test_date_comparison_today(self): method test_date_property_comparison_now (line 116) | def test_date_property_comparison_now(self): method test_numeric_comparison (line 122) | def test_numeric_comparison(self): method test_numeric_comparison_negative (line 128) | def test_numeric_comparison_negative(self): method test_numeric_equality_negative (line 134) | def test_numeric_equality_negative(self): method test_case_property_existence (line 140) | def test_case_property_existence(self): method test_nested_filter (line 146) | def test_nested_filter(self): method test_selected (line 156) | def test_selected(self): method test_selected_any (line 167) | def test_selected_any(self): method test_selected_all (line 174) | def test_selected_all(self): method test_self_reference (line 180) | def test_self_reference(self): method test_filter_today (line 191) | def test_filter_today(self): method test_filter_date_today (line 198) | def test_filter_date_today(self): method test_within_distance_filter (line 204) | def test_within_distance_filter(self): method test_fuzzy_match (line 210) | def test_fuzzy_match(self): method test_fuzzy_date (line 216) | def test_fuzzy_date(self): method _test_xpath_query (line 231) | def _test_xpath_query(self, query_string, expected_filter): method test_match_all (line 239) | def test_match_all(self): method test_match_none (line 245) | def test_match_none(self): method test_status_query (line 251) | def test_status_query(self): method test_not_equals_query (line 257) | def test_not_equals_query(self): class TestFilterDslLookups (line 265) | class TestFilterDslLookups(ElasticTestMixin, TestCase): method setUpClass (line 269) | def setUpClass(cls): method tearDownClass (line 349) | def tearDownClass(cls): method test_parent_lookups (line 353) | def test_parent_lookups(self): method test_nested_parent_lookups (line 392) | def test_nested_parent_lookups(self): method test_subcase_exists (line 430) | def test_subcase_exists(self): method test_subcase_exists__filter_no_match (line 436) | def test_subcase_exists__filter_no_match(self): method test_subcase_exists__no_subase_filter (line 442) | def test_subcase_exists__no_subase_filter(self): method test_subcase_exists_inverted (line 448) | def test_subcase_exists_inverted(self): method test_subcase_count__no_subcase_filter (line 454) | def test_subcase_count__no_subcase_filter(self): method test_subcase_count__filter_no_match (line 460) | def test_subcase_count__filter_no_match(self): method test_subcase_count_gt (line 466) | def test_subcase_count_gt(self): method test_subcase_count_lt (line 472) | def test_subcase_count_lt(self): method test_subcase_count_lt_no_match (line 478) | def test_subcase_count_lt_no_match(self): method test_subcase_count_no_match (line 486) | def test_subcase_count_no_match(self): method test_subcase_count_eq (line 492) | def test_subcase_count_eq(self): method test_subcase_filter_relationship (line 498) | def test_subcase_filter_relationship(self): method test_subcase_filter_relationship_no_hits (line 504) | def test_subcase_filter_relationship_no_hits(self): function test_subcase_query_logging (line 514) | def test_subcase_query_logging(): FILE: corehq/apps/case_search/tests/test_fixtures.py class TestCaseSearchFixtures (line 26) | class TestCaseSearchFixtures(TestCase): method setUpClass (line 30) | def setUpClass(cls): method _get_case_blocks (line 39) | def _get_case_blocks(owner_id): method render (line 57) | def render(self, template_string): method generate_fixtures (line 60) | def generate_fixtures(self): method test_no_interpolation (line 66) | def test_no_interpolation(self): method test_user_id (line 70) | def test_user_id(self): method test_bha_custom_csql_fixture_context (line 75) | def test_bha_custom_csql_fixture_context(self, get_user_clinic_ids): method test_fixture_generator (line 88) | def test_fixture_generator(self, run_query, get_indicators_for_user): method test_full_query (line 107) | def test_full_query(self, get_indicators_for_user): class TestGetIndicatorsForUser (line 124) | class TestGetIndicatorsForUser(TestCase): method setUp (line 125) | def setUp(self): method _create_user (line 166) | def _create_user(self, email, user_data): method test_user_with_valid_data (line 171) | def test_user_with_valid_data(self): method test_user_with_non_boolean_value (line 178) | def test_user_with_non_boolean_value(self): method test_user_with_blank_value (line 185) | def test_user_with_blank_value(self): method test_user_with_non_existent_field (line 192) | def test_user_with_non_existent_field(self): FILE: corehq/apps/case_search/tests/test_get_related_cases.py class TestCaseSearchAppStuff (line 29) | class TestCaseSearchAppStuff(TestCase): method setUpTestData (line 33) | def setUpTestData(cls): method test_get_app_context (line 61) | def test_get_app_context(self): class TestGetRelatedCases (line 76) | class TestGetRelatedCases(BaseCaseSearchTest): method test_get_path_related_cases_results (line 77) | def test_get_path_related_cases_results(self): method test_get_related_cases_duplicates_and_tags (line 109) | def test_get_related_cases_duplicates_and_tags(self): method test_get_related_cases_expanded_results (line 169) | def test_get_related_cases_expanded_results(self): method test_get_child_case_results (line 214) | def test_get_child_case_results(self): method test__get_all_related_cases (line 246) | def test__get_all_related_cases(self): method test_get_related_cases_result (line 291) | def test_get_related_cases_result(self): method _assert_related_case_ids (line 338) | def _assert_related_case_ids(self, cases, paths, expected_case_ids): method _assert_case_ids (line 342) | def _assert_case_ids(self, expected_case_ids, result_cases): method _assert_is_only_related_case_tag (line 348) | def _assert_is_only_related_case_tag(self, primary_cases, related_cases): FILE: corehq/apps/case_search/tests/test_models.py function test_extract_criteria_config (line 30) | def test_extract_criteria_config(self, case_type, data_registry, custom_... function _make_request_dict (line 55) | def _make_request_dict(params): function test_search_criteria_validate (line 70) | def test_search_criteria_validate(self, key, value): FILE: corehq/apps/case_search/tests/test_subcase_query_parser.py function test_subcase_query_parsing (line 55) | def test_subcase_query_parsing(query, expected): function test_subcase_query_parsing_validations (line 99) | def test_subcase_query_parsing_validations(query, msg): FILE: corehq/apps/case_search/tests/test_utils.py function test_get_expanded_case_results (line 12) | def test_get_expanded_case_results(get_cases_mock): function test_profiler_search_class (line 25) | def test_profiler_search_class(): FILE: corehq/apps/case_search/tests/test_value_functions.py class TestDateFunctions (line 24) | class TestDateFunctions(TestCase): method setUpClass (line 26) | def setUpClass(cls): method tearDownClass (line 33) | def tearDownClass(cls): method test_today_no_domain (line 36) | def test_today_no_domain(self): method test_today_domain_tz (line 41) | def test_today_domain_tz(self): method test_arg_validation (line 46) | def test_arg_validation(self): method test_date_string (line 51) | def test_date_string(self): method test_date_int (line 57) | def test_date_int(self): method test_date_today (line 62) | def test_date_today(self): method test_now (line 67) | def test_now(self): function test_datetime (line 81) | def test_datetime(expression, expected): function test_date_add (line 112) | def test_date_add(expression, expected): function test_date_add_errors (line 143) | def test_date_add_errors(expression): function test_double (line 158) | def test_double(expression, expected): function test_double_random_string (line 164) | def test_double_random_string(): FILE: corehq/apps/case_search/tests/test_views.py class TestCSQLFixtureExpressionView (line 11) | class TestCSQLFixtureExpressionView(HtmxViewTestCase): method get_url (line 12) | def get_url(self): method test_create_update_delete (line 15) | def test_create_update_delete(self): method test_new_criteria (line 50) | def test_new_criteria(self): method test_save_filter_modal (line 55) | def test_save_filter_modal(self): FILE: corehq/apps/case_search/tests/test_xpath_functions.py function test_invalid (line 41) | def test_invalid(xpath, error_msg): FILE: corehq/apps/case_search/tests/utils.py function get_case_search_query (line 8) | def get_case_search_query(domain, case_types, criteria_dict, commcare_so... FILE: corehq/apps/case_search/utils.py class CaseSearchProfiler (line 62) | class CaseSearchProfiler(ESQueryProfiler): function time_function (line 69) | def time_function(): function get_case_search_results_from_request (line 83) | def get_case_search_results_from_request(domain, app_id, couch_user, req... function get_case_search_results (line 104) | def get_case_search_results(domain, case_types, criteria, function get_primary_case_search_results (line 122) | def get_primary_case_search_results(helper, case_types, criteria, commca... function _get_helper (line 140) | def _get_helper(couch_user, domain, case_types, registry_slug): class QueryHelper (line 154) | class QueryHelper: method __init__ (line 155) | def __init__(self, domain): method get_base_queryset (line 160) | def get_base_queryset(self, slug=None): method wrap_case (line 166) | def wrap_case(self, es_hit, include_score=False): method get_all_related_live_cases (line 169) | def get_all_related_live_cases(self, initial_cases): method config (line 174) | def config(self): class RegistryQueryHelper (line 184) | class RegistryQueryHelper(QueryHelper): method __init__ (line 185) | def __init__(self, domain, couch_user, registry_helper): method get_base_queryset (line 190) | def get_base_queryset(self, slug=None): method wrap_case (line 194) | def wrap_case(self, es_hit, include_score=False): method get_all_related_live_cases (line 199) | def get_all_related_live_cases(self, initial_cases): class CaseSearchQueryBuilder (line 205) | class CaseSearchQueryBuilder: method __init__ (line 208) | def __init__(self, helper, case_types): method build_query (line 214) | def build_query(self, search_criteria, commcare_sort=None): method _get_initial_search_es (line 221) | def _get_initial_search_es(self): method _apply_sort (line 230) | def _apply_sort(self, search_es, commcare_sort=None): method _sort_by_case_properties (line 235) | def _sort_by_case_properties(self, search_es, commcare_sort_properties): method _apply_filter (line 244) | def _apply_filter(self, search_es, criteria): method _build_filter_from_xpath (line 267) | def _build_filter_from_xpath(self, xpath, fuzzy=False): method _get_daterange_query (line 272) | def _get_daterange_query(self, criteria): method _get_case_property_query (line 276) | def _get_case_property_query(self, criteria): method _get_case_property_or_missing_query (line 283) | def _get_case_property_or_missing_query(self, criteria): method _get_query (line 293) | def _get_query(self, criteria): method _remove_ignored_patterns (line 314) | def _remove_ignored_patterns(self, case_property, value): method _patterns_to_remove (line 323) | def _patterns_to_remove(self): method _fuzzy_properties (line 333) | def _fuzzy_properties(self): function get_and_tag_related_cases (line 343) | def get_and_tag_related_cases(helper, app_id, case_types, cases, function get_related_cases_result (line 375) | def get_related_cases_result(helper, app_id, case_types, source_cases, i... function get_app_context (line 395) | def get_app_context(domain, app_id, case_types): function get_app_context_by_case_type (line 407) | def get_app_context_by_case_type(domain, app_id): function _get_all_related_cases (line 418) | def _get_all_related_cases(helper, source_cases): function get_search_detail_relationship_paths (line 426) | def get_search_detail_relationship_paths(app): function get_path_related_cases_results (line 446) | def get_path_related_cases_results(helper, cases, paths): function get_child_case_types (line 475) | def get_child_case_types(app): function get_child_case_results (line 492) | def get_child_case_results(helper, parent_case_ids, child_case_types=None): function get_expanded_case_results (line 500) | def get_expanded_case_results(helper, custom_related_case_property, cases): function _get_case_search_cases (line 509) | def _get_case_search_cases(helper, case_ids): function _tag_is_related_case (line 515) | def _tag_is_related_case(case): function _require_case_search_advanced (line 521) | def _require_case_search_advanced(domain): FILE: corehq/apps/case_search/views.py class _BaseCaseSearchView (line 35) | class _BaseCaseSearchView(BaseDomainView): method section_url (line 39) | def section_url(self): method page_url (line 43) | def page_url(self): method get (line 47) | def get(self, request, *args, **kwargs): class CaseSearchView (line 55) | class CaseSearchView(_BaseCaseSearchView): method page_context (line 61) | def page_context(self): method post (line 70) | def post(self, request, *args, **kwargs): class ProfileCaseSearchView (line 117) | class ProfileCaseSearchView(_BaseCaseSearchView): method post (line 124) | def post(self, request, *args, **kwargs): method _make_profile_downloadable (line 138) | def _make_profile_downloadable(query): class CSQLFixtureExpressionView (line 154) | class CSQLFixtureExpressionView(HqHtmxActionMixin, BaseProjectDataView): method page_context (line 160) | def page_context(self): method new_expression (line 167) | def new_expression(self, *args, **kwargs): method save_expression (line 171) | def save_expression(self, request, domain, *args, **kwargs): method delete_expression (line 183) | def delete_expression(self, request, domain, *args, **kwargs): method new_criteria (line 189) | def new_criteria(self, request, *args, **kwargs): method save_filter_modal (line 193) | def save_filter_modal(self, request, domain, *args, **kwargs): FILE: corehq/apps/case_search/xpath_functions/ancestor_functions.py function is_ancestor_comparison (line 13) | def is_ancestor_comparison(node): function ancestor_comparison_query (line 24) | def ancestor_comparison_query(context, node): function walk_ancestor_hierarchy (line 39) | def walk_ancestor_hierarchy(context, ancestor_path_node, case_ids): function _is_ancestor_path_expression (line 74) | def _is_ancestor_path_expression(node): function _child_case_lookup (line 90) | def _child_case_lookup(context, case_ids, identifier): function ancestor_exists (line 97) | def ancestor_exists(node, context): function process_ancestor_exists (line 114) | def process_ancestor_exists(ancestor_path_node, ancestor_case_filter_nod... function _validate_ancestor_exists_filter (line 121) | def _validate_ancestor_exists_filter(node): function _get_case_ids_from_ast_filter (line 137) | def _get_case_ids_from_ast_filter(context, filter_node): FILE: corehq/apps/case_search/xpath_functions/comparison.py function property_comparison_query (line 27) | def property_comparison_query(context, case_property_name_raw, op, value... function _create_query (line 46) | def _create_query(context, case_property_name, op, value, node): function _case_property_range_query (line 54) | def _case_property_range_query(case_property_name, op, value, node): function case_property_range_query (line 67) | def case_property_range_query(case_property_name, gt=None, gte=None, lt=... function _parse_date_or_datetime (line 88) | def _parse_date_or_datetime(value): function _parse_date (line 98) | def _parse_date(value): function _parse_datetime (line 105) | def _parse_datetime(value): function _create_system_datetime_query (line 112) | def _create_system_datetime_query(domain, meta_property, op, value, node): function adjust_input_date_by_timezone (line 144) | def adjust_input_date_by_timezone(date_, timezone, op): function _create_system_query (line 151) | def _create_system_query(meta_property, op, value): FILE: corehq/apps/case_search/xpath_functions/query_functions.py function not_ (line 25) | def not_(node, context): function starts_with (line 31) | def starts_with(node, context): function selected_any (line 38) | def selected_any(node, context): function selected_all (line 42) | def selected_all(node, context): function _selected_query (line 46) | def _selected_query(node, context, operator): function within_distance (line 54) | def within_distance(node, context): function phonetic_match (line 84) | def phonetic_match(node, context): function fuzzy_match (line 92) | def fuzzy_match(node, context): function fuzzy_date (line 101) | def fuzzy_date(node, context): function date_permutations (line 116) | def date_permutations(date_str): function validate_date (line 143) | def validate_date(date_text): function _property_name_to_string (line 151) | def _property_name_to_string(value, node): function match_all (line 162) | def match_all(node, context): function match_none (line 171) | def match_none(node, context): FILE: corehq/apps/case_search/xpath_functions/subcase_functions.py class SubCaseQuery (line 18) | class SubCaseQuery: method __post_init__ (line 34) | def __post_init__(self): method as_tuple (line 39) | def as_tuple(self): method filter_count (line 45) | def filter_count(self, count): function subcase (line 51) | def subcase(node, context): function _get_parent_case_ids_matching_subcase_query (line 64) | def _get_parent_case_ids_matching_subcase_query(subcase_query, context): function _run_subcase_query (line 92) | def _run_subcase_query(subcase_query, context): function _parse_normalize_subcase_query (line 120) | def _parse_normalize_subcase_query(node) -> SubCaseQuery: function _normalize_param (line 128) | def _normalize_param(case_count, count_op): function _extract_subcase_query_parts (line 154) | def _extract_subcase_query_parts(node): FILE: corehq/apps/case_search/xpath_functions/utils.py function confirm_args_count (line 8) | def confirm_args_count(node, expected): FILE: corehq/apps/case_search/xpath_functions/value_functions.py function date (line 20) | def date(node, context): function value_to_date (line 37) | def value_to_date(node, value): function datetime_ (line 59) | def datetime_(node, context): function _value_to_datetime (line 72) | def _value_to_datetime(node, value): function today (line 94) | def today(node, context): function now (line 105) | def now(node, context): function date_add (line 112) | def date_add(node, context): function datetime_add (line 127) | def datetime_add(node, context): function _date_or_datetime_add (line 134) | def _date_or_datetime_add(node, context, converter_fn): function _get_timedelta (line 151) | def _get_timedelta(node, interval_type, quantity): function unwrap_list (line 185) | def unwrap_list(node, context): function double (line 193) | def double(node, context): FILE: corehq/apps/casegroups/dbaccessors.py function get_case_groups_in_domain (line 10) | def get_case_groups_in_domain(domain): function get_case_group_meta_in_domain (line 16) | def get_case_group_meta_in_domain(domain): function search_case_groups_in_domain (line 20) | def search_case_groups_in_domain(domain, search_string, limit=10): function get_number_of_case_groups_in_domain (line 30) | def get_number_of_case_groups_in_domain(domain): FILE: corehq/apps/casegroups/models.py class CommCareCaseGroup (line 7) | class CommCareCaseGroup(UndoableDocument): method get_time_zone (line 16) | def get_time_zone(self): method get_cases (line 22) | def get_cases(self, limit=None, skip=None): method get_total_cases (line 32) | def get_total_cases(self, clean_list=False): method clean_cases (line 37) | def clean_cases(self): method create_delete_record (line 49) | def create_delete_record(self, *args, **kwargs): method clear_caches (line 52) | def clear_caches(self): method save (line 56) | def save(self, *args, **kwargs): method delete (line 60) | def delete(self, *args, **kwargs): class DeleteCaseGroupRecord (line 65) | class DeleteCaseGroupRecord(DeleteDocRecord): method get_doc (line 67) | def get_doc(self): FILE: corehq/apps/casegroups/tests.py class DBAccessorsTest (line 11) | class DBAccessorsTest(TestCase): method setUpClass (line 14) | def setUpClass(cls): method tearDownClass (line 29) | def tearDownClass(cls): method get_ids (line 35) | def get_ids(self, groups): method test_get_case_groups_in_domain (line 38) | def test_get_case_groups_in_domain(self): method test_get_number_of_case_groups_in_domain (line 45) | def test_get_number_of_case_groups_in_domain(self): method test_get_case_group_meta_in_domain (line 48) | def test_get_case_group_meta_in_domain(self): FILE: corehq/apps/celery/__init__.py class Config (line 17) | class Config(AppConfig): method __init__ (line 22) | def __init__(self, *args, **kw): function _init_celery_app (line 27) | def _init_celery_app(): function config_loggers (line 37) | def config_loggers(*args, **kwargs): FILE: corehq/apps/celery/analytics.py function analytics_task (line 8) | def analytics_task( FILE: corehq/apps/celery/durable.py class DurableTask (line 6) | class DurableTask(Task): method __init__ (line 11) | def __init__(self): method apply_async (line 22) | def apply_async(self, args=None, kwargs=None, **opts): method after_return (line 55) | def after_return(self, state, retval, task_id, *args): function delete_task_record (line 60) | def delete_task_record(task_id, state): class UnsupportedSerializationError (line 72) | class UnsupportedSerializationError(Exception): FILE: corehq/apps/celery/management/commands/requeue_task_records.py class Command (line 8) | class Command(BaseCommand): method add_arguments (line 31) | def add_arguments(self, parser): method handle (line 62) | def handle(self, task_name, start, end, commit, **options): method _requeue (line 97) | def _requeue(self, records): method _parse_datetime (line 136) | def _parse_datetime(self, value, flag): FILE: corehq/apps/celery/migrations/0001_taskrecord.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/celery/migrations/0002_taskrecord_kombu_serialization.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/celery/models.py class KombuJSONDecoder (line 9) | class KombuJSONDecoder(json.JSONDecoder): method __init__ (line 14) | def __init__(self, *args, **kwargs): class TaskRecord (line 19) | class TaskRecord(models.Model): method __str__ (line 36) | def __str__(self): FILE: corehq/apps/celery/periodic.py class PeriodicTask (line 13) | class PeriodicTask(DurableTask): method on_bound (line 16) | def on_bound(cls, app): function periodic_task (line 26) | def periodic_task(**options): function periodic_task_when_true (line 40) | def periodic_task_when_true(boolean, *args, **kwargs): FILE: corehq/apps/celery/serial.py function serial_task (line 9) | def serial_task( function _get_unique_key (line 83) | def _get_unique_key(format_str, fn, *args, **kwargs): class CouldNotAcquireLockError (line 92) | class CouldNotAcquireLockError(Exception): FILE: corehq/apps/celery/shared_task.py function task (line 7) | def task(*args, **kwargs): FILE: corehq/apps/celery/tests/test_celery_app.py function test_init_celery_app (line 9) | def test_init_celery_app(): function test_celery_always_eager (line 14) | def test_celery_always_eager(): function test_celery_current_app (line 19) | def test_celery_current_app(): function test_current_app_pre_init_error (line 24) | def test_current_app_pre_init_error(): FILE: corehq/apps/celery/tests/test_durable_task.py class TestDurableTaskApplyAsync (line 22) | class TestDurableTaskApplyAsync(TestCase): method setUp (line 28) | def setUp(self): method test_task_is_not_tracked (line 43) | def test_task_is_not_tracked(self): method test_explicitly_not_durable_task_is_not_tracked (line 48) | def test_explicitly_not_durable_task_is_not_tracked(self): method test_task_is_tracked (line 57) | def test_task_is_tracked(self): method test_unable_to_send_task_to_broker (line 61) | def test_unable_to_send_task_to_broker(self): method test_args_and_kwargs_are_serialized (line 75) | def test_args_and_kwargs_are_serialized(self): method test_existing_record_is_updated_on_retry (line 92) | def test_existing_record_is_updated_on_retry(self): class TestDurableTaskAfterReturn (line 116) | class TestDurableTaskAfterReturn(TestCase): method test_plain_task_does_not_call_delete (line 117) | def test_plain_task_does_not_call_delete(self): method test_durable_task_record_is_deleted_when_in_complete_state (line 132) | def test_durable_task_record_is_deleted_when_in_complete_state( method test_durable_task_record_is_not_deleted_when_in_incomplete_state (line 153) | def test_durable_task_record_is_not_deleted_when_in_incomplete_state( class TestDurableTaskArgSerialization (line 166) | class TestDurableTaskArgSerialization(TestCase): method test_special_types_survive_field_round_trip (line 171) | def test_special_types_survive_field_round_trip(self): method test_kombu_preserialized_args_are_doubly_encoded (line 186) | def test_kombu_preserialized_args_are_doubly_encoded(self): class TestDurableTaskMisc (line 201) | class TestDurableTaskMisc(TestCase): method test_durable_task_with_pickling_raises_exception (line 202) | def test_durable_task_with_pickling_raises_exception(self): method test_celery_uses_uuid4 (line 209) | def test_celery_uses_uuid4(self): function plain_task (line 221) | def plain_task(): function durable_task (line 226) | def durable_task(): function durable_task_with_args (line 231) | def durable_task_with_args(test_id, test_data=None): class MockAsyncResult (line 236) | class MockAsyncResult: FILE: corehq/apps/celery/tests/test_requeue_task_records.py class TestRequeueTaskRecords (line 21) | class TestRequeueTaskRecords(TestCase): method setUp (line 23) | def setUp(self): method _requeue_task_records (line 30) | def _requeue_task_records(self, **kwargs): method test_invalid_start_raises_error (line 37) | def test_invalid_start_raises_error(self): method test_invalid_end_raises_error (line 41) | def test_invalid_end_raises_error(self): method test_dry_run_does_not_requeue (line 47) | def test_dry_run_does_not_requeue(self): method test_no_matching_records (line 54) | def test_no_matching_records(self): method test_requeue_all (line 59) | def test_requeue_all(self): method test_task_id_is_preserved_on_requeue (line 65) | def test_task_id_is_preserved_on_requeue(self): method test_args_and_kwargs_are_deserialized (line 72) | def test_args_and_kwargs_are_deserialized(self): method test_filter_by_task_name (line 83) | def test_filter_by_task_name(self): method test_filter_by_start (line 96) | def test_filter_by_start(self): method test_filter_by_end (line 111) | def test_filter_by_end(self): method test_unregistered_task_is_skipped (line 129) | def test_unregistered_task_is_skipped(self): method test_requeue_error_is_reported (line 136) | def test_requeue_error_is_reported(self): function make_record (line 143) | def make_record(name=TASK_NAME, args=[], kwargs={}, date_created=None): FILE: corehq/apps/change_feed/connection.py function get_kafka_client (line 9) | def get_kafka_client(client_id=GENERIC_KAFKA_CLIENT_ID): function get_kafka_consumer (line 17) | def get_kafka_consumer(): FILE: corehq/apps/change_feed/consumer/feed.py class KafkaChangeFeed (line 23) | class KafkaChangeFeed(ChangeFeed): method __init__ (line 29) | def __init__(self, topics, client_id, strict=False, num_processes=1, method __str__ (line 45) | def __str__(self): method topics (line 49) | def topics(self): method _get_single_topic_or_fail (line 52) | def _get_single_topic_or_fail(self): method iter_changes (line 57) | def iter_changes( method get_current_checkpoint_offsets (line 105) | def get_current_checkpoint_offsets(self): method get_processed_offsets (line 122) | def get_processed_offsets(self): method get_latest_offsets (line 125) | def get_latest_offsets(self): method get_latest_offsets_json (line 128) | def get_latest_offsets_json(self): method get_latest_offsets_as_checkpoint_value (line 131) | def get_latest_offsets_as_checkpoint_value(self): method consumer (line 135) | def consumer(self): method _init_consumer (line 140) | def _init_consumer(self, timeout=MIN_TIMEOUT, auto_offset_reset='earli... method _filter_offsets (line 162) | def _filter_offsets(self, offsets) -> Optional[Dict[TopicPartition, in... method _filter_partitions (line 172) | def _filter_partitions(self, topic_partitions): class KafkaCheckpointEventHandler (line 189) | class KafkaCheckpointEventHandler(PillowCheckpointEventHandler): method __init__ (line 194) | def __init__(self, checkpoint, checkpoint_frequency, change_feed, chec... method get_new_seq (line 199) | def get_new_seq(self, change): function change_from_kafka_message (line 203) | def change_from_kafka_message(message): function change_meta_from_kafka_message (line 230) | def change_meta_from_kafka_message(message): FILE: corehq/apps/change_feed/data_sources.py function get_document_store (line 41) | def get_document_store(data_source_type, data_source_name, domain, load_... function get_document_store_for_doc_type (line 76) | def get_document_store_for_doc_type(domain, doc_type, case_type_or_xmlns... FILE: corehq/apps/change_feed/document_types.py function get_doc_meta_object_from_document (line 22) | def get_doc_meta_object_from_document(document): function _make_document_type (line 28) | def _make_document_type(raw_doc_type, document): function _get_document_type (line 41) | def _get_document_type(document_or_none): function _case_doc_type_constructor (line 45) | def _case_doc_type_constructor(raw_doc_type, document): function _form_doc_type_constructor (line 51) | def _form_doc_type_constructor(raw_doc_type, document): function _domain_doc_type_constructor (line 57) | def _domain_doc_type_constructor(raw_doc_type, document): function change_meta_from_doc (line 64) | def change_meta_from_doc(document, data_source_type, data_source_name): function change_meta_from_doc_meta_and_document (line 72) | def change_meta_from_doc_meta_and_document(doc_meta, document, data_sour... function change_meta_from_hard_delete (line 91) | def change_meta_from_hard_delete(document, data_source_type, data_source... function _get_domain (line 101) | def _get_domain(document): function is_deletion (line 105) | def is_deletion(raw_doc_type): FILE: corehq/apps/change_feed/exceptions.py class UnknownDocumentStore (line 3) | class UnknownDocumentStore(ValueError): class MissingMetaInformationError (line 7) | class MissingMetaInformationError(Exception): class UnavailableKafkaOffset (line 11) | class UnavailableKafkaOffset(Exception): FILE: corehq/apps/change_feed/management/commands/create_kafka_topics.py class Command (line 7) | class Command(BaseCommand): method handle (line 9) | def handle(self, **options): function create_kafka_topics (line 13) | def create_kafka_topics(): FILE: corehq/apps/change_feed/management/commands/list_kafka_topics.py class Command (line 6) | class Command(BaseCommand): method handle (line 8) | def handle(self, **options): FILE: corehq/apps/change_feed/management/commands/pillow_topic_assignments.py class Command (line 9) | class Command(BaseCommand): method add_arguments (line 12) | def add_arguments(self, parser): method handle (line 17) | def handle(self, pillow_name, process_count, **options): FILE: corehq/apps/change_feed/management/commands/validate_kafka_pillow_checkpoints.py class Command (line 11) | class Command(BaseCommand): method add_arguments (line 15) | def add_arguments(self, parser): method handle (line 24) | def handle(self, **options): function validate_checkpoints (line 29) | def validate_checkpoints(print_only): function _get_checkpoint_dict (line 47) | def _get_checkpoint_dict(pillow): FILE: corehq/apps/change_feed/pillow.py class KafkaProcessor (line 19) | class KafkaProcessor(PillowProcessor): method __init__ (line 30) | def __init__(self, data_source_type, data_source_name, default_topic): method process_change (line 36) | def process_change(self, change): function get_default_couch_db_change_feed_pillow (line 51) | def get_default_couch_db_change_feed_pillow(pillow_id, **kwargs): function get_user_groups_db_kafka_pillow (line 55) | def get_user_groups_db_kafka_pillow(pillow_id, **kwargs): function get_domain_db_kafka_pillow (line 61) | def get_domain_db_kafka_pillow(pillow_id, **kwargs): function get_application_db_kafka_pillow (line 65) | def get_application_db_kafka_pillow(pillow_id, **kwargs): function get_change_feed_pillow_for_db (line 70) | def get_change_feed_pillow_for_db(pillow_id, couch_db, default_topic=None): function _get_doc_type_from_change (line 97) | def _get_doc_type_from_change(change): function _create_deleted_couch_doc (line 111) | def _create_deleted_couch_doc(doc_id, doc_type, deleted_on): FILE: corehq/apps/change_feed/producer.py class ChangeProducer (line 18) | class ChangeProducer(object): method __init__ (line 20) | def __init__(self, auto_flush=True): method producer (line 25) | def producer(self): method send_change (line 39) | def send_change(self, topic, change_meta): method flush (line 54) | def flush(self, timeout=None): function _on_error (line 58) | def _on_error(change_meta, exc_info): FILE: corehq/apps/change_feed/tests/test_connection.py class TestKafkaConnection (line 6) | class TestKafkaConnection(SimpleTestCase): method test_get_kafka_client_with_api_version (line 9) | def test_get_kafka_client_with_api_version(self): FILE: corehq/apps/change_feed/tests/test_data_sources.py class DocumentStoreTests (line 32) | class DocumentStoreTests(SimpleTestCase): method test_missing_db (line 33) | def test_missing_db(self): method test_unknown_store (line 37) | def test_unknown_store(self): function test_get_document_store (line 61) | def test_get_document_store(self, source_type, source_name, expected): function couch_data (line 69) | def couch_data(): function case_form_data (line 85) | def case_form_data(): function case_data (line 108) | def case_data(): function form_data (line 114) | def form_data(): function location_data (line 120) | def location_data(): function ledger_data (line 143) | def ledger_data(): function synclog_data (line 171) | def synclog_data(): function sms_data (line 188) | def sms_data(): class DocumentStoreDbTests (line 203) | class DocumentStoreDbTests(TestCase): method test_couch_document_store (line 205) | def test_couch_document_store(self): function _test_document_store (line 217) | def _test_document_store(self, doc_store_cls, doc_store_args, data_conte... function test_document_store (line 236) | def test_document_store(*args): class CaseDocumentStoreTests (line 240) | class CaseDocumentStoreTests(TestCase): method setUpClass (line 243) | def setUpClass(cls): method test_get_doc_by_case_id (line 263) | def test_get_doc_by_case_id(self): method test_get_doc_by_external_id (line 268) | def test_get_doc_by_external_id(self): method test_external_id_not_found (line 273) | def test_external_id_not_found(self): method test_case_not_found (line 277) | def test_case_not_found(self): method test_get_doc_by_duplicate_external_id (line 281) | def test_get_doc_by_duplicate_external_id(self): FILE: corehq/apps/change_feed/tests/test_document_types.py class DocumentTypeTest (line 11) | class DocumentTypeTest(SimpleTestCase): function test_document_meta (line 33) | def test_document_meta(self, raw_doc, expected_subtype=None, function test_change_from_doc_failures (line 48) | def test_change_from_doc_failures(self, doc): function test_change_from_doc_success (line 56) | def test_change_from_doc_success(self, doc, expected_id): FILE: corehq/apps/change_feed/tests/test_kafka_change_feed.py class KafkaChangeFeedTest (line 25) | class KafkaChangeFeedTest(SimpleTestCase): method test_multiple_topics (line 27) | def test_multiple_topics(self): method test_expired_checkpoint_iteration_strict (line 40) | def test_expired_checkpoint_iteration_strict(self): method test_non_expired_checkpoint_iteration_strict (line 50) | def test_non_expired_checkpoint_iteration_strict(self): method test_filter_partitions_without_migration_process (line 56) | def test_filter_partitions_without_migration_process(self): method test_filter_partitions_for_migration_process (line 68) | def test_filter_partitions_for_migration_process(self): method test_filter_partitions_for_non_migration_process (line 80) | def test_filter_partitions_for_non_migration_process(self): method test_iter_changes_forever (line 92) | def test_iter_changes_forever(self): class Msg (line 119) | class Msg: method __init__ (line 120) | def __init__(self, value): class StopConsuming (line 127) | class StopConsuming(Exception): class KafkaCheckpointTest (line 131) | class KafkaCheckpointTest(TestCase): method test_checkpoint_with_multiple_topics (line 133) | def test_checkpoint_with_multiple_topics(self): method test_dont_create_checkpoint_past_current (line 168) | def test_dont_create_checkpoint_past_current(self): function publish_stub_change (line 198) | def publish_stub_change(topic): FILE: corehq/apps/change_feed/tests/test_pillow.py class ChangeFeedPillowTest (line 24) | class ChangeFeedPillowTest(SimpleTestCase): method setUp (line 27) | def setUp(self): method tearDown (line 47) | def tearDown(self): method test_process_change (line 51) | def test_process_change(self): method test_process_change_with_unicode_domain (line 72) | def test_process_change_with_unicode_domain(self): method test_no_domain (line 83) | def test_no_domain(self): method test_publish_timestamp (line 94) | def test_publish_timestamp(self): class TestElasticProcessorPillows (line 107) | class TestElasticProcessorPillows(TestCase): method setUp (line 109) | def setUp(self): method test_mismatched_rev (line 112) | def test_mismatched_rev(self): class TestKafkaProcessor (line 195) | class TestKafkaProcessor(TestCase): method setUp (line 197) | def setUp(self): method test_deleted_couch_doc (line 202) | def test_deleted_couch_doc(self): FILE: corehq/apps/change_feed/tests/test_topics.py class TopicTests (line 8) | class TopicTests(SimpleTestCase): function test_get_topic_for_doc_type (line 16) | def test_get_topic_for_doc_type(self, doc_type, data_source, expected_to... FILE: corehq/apps/change_feed/tests/utils.py function get_test_kafka_consumer (line 11) | def get_test_kafka_consumer(*topics): FILE: corehq/apps/change_feed/topics.py function get_topic_for_doc_type (line 41) | def get_topic_for_doc_type(doc_type, data_source_type=None, default_topi... function get_topic_offset (line 72) | def get_topic_offset(topic): function get_multi_topic_offset (line 78) | def get_multi_topic_offset(topics): function get_multi_topic_first_available_offsets (line 84) | def get_multi_topic_first_available_offsets(topics): function _get_topic_offsets (line 90) | def _get_topic_offsets(topics, latest): function get_all_kafka_partitons_for_topic (line 106) | def get_all_kafka_partitons_for_topic(topic): function validate_offsets (line 116) | def validate_offsets(expected_offsets): FILE: corehq/apps/cleanup/dbaccessors.py function find_sql_forms_for_deleted_domains (line 17) | def find_sql_forms_for_deleted_domains(): function find_sql_cases_for_deleted_domains (line 21) | def find_sql_cases_for_deleted_domains(): function _find_sql_model_for_deleted_domains (line 25) | def _find_sql_model_for_deleted_domains(model): function find_es_docs_for_deleted_domains (line 41) | def find_es_docs_for_deleted_domains(): function find_ucr_tables_for_deleted_domains (line 56) | def find_ucr_tables_for_deleted_domains(): FILE: corehq/apps/cleanup/management/commands/couch_integrity.py class Command (line 54) | class Command(BaseCommand): method add_arguments (line 59) | def add_arguments(self, parser): method handle_label (line 72) | def handle_label(self, filename, **options): function integrity_check (line 79) | def integrity_check(config, wiggle=0): function print_result (line 114) | def print_result(matches, view, database): class CouchConfig (line 133) | class CouchConfig(JsonObject): method __init__ (line 139) | def __init__(self, obj=None, **kwargs): method uri (line 158) | def uri(self): class SuiteConfig (line 166) | class SuiteConfig(JsonObject): class IntegrityConfig (line 171) | class IntegrityConfig(JsonObject): class Colors (line 176) | class Colors(object): FILE: corehq/apps/cleanup/management/commands/delete_case_indices.py class CaseMeta (line 16) | class CaseMeta: class Command (line 24) | class Command(BaseCommand): method add_arguments (line 27) | def add_arguments(self, parser): method handle (line 35) | def handle(self, cases_csv_file, **options): method check_submit_case_blocks (line 81) | def check_submit_case_blocks(self, domain, case_block_and_meta, batch_... method write_output (line 99) | def write_output(self, meta, form_id, status): function get_index_by_ref_id (line 105) | def get_index_by_ref_id(case, case_meta: CaseMeta): FILE: corehq/apps/cleanup/management/commands/delete_couch_dbs.py class Command (line 11) | class Command(BaseCommand): method add_arguments (line 14) | def add_arguments(self, parser): method handle (line 27) | def handle(self, *, dbname=None, **options): FILE: corehq/apps/cleanup/management/commands/delete_doc_conflicts.py function bulk_delete (line 14) | def bulk_delete(db, docs): class Command (line 32) | class Command(BaseCommand): method add_arguments (line 35) | def add_arguments(self, parser): method handle (line 45) | def handle(self, **options): FILE: corehq/apps/cleanup/management/commands/delete_duplicate_users.py class Command (line 14) | class Command(BaseCommand): method add_arguments (line 17) | def add_arguments(self, parser): method handle (line 20) | def handle(self, domain, **options): function get_duplicate_users (line 66) | def get_duplicate_users(domain): function get_users_with_forms (line 78) | def get_users_with_forms(domain, user_ids): function delete_duplicate_users (line 87) | def delete_duplicate_users(all_users, duplicates_to_delete): FILE: corehq/apps/cleanup/management/commands/delete_es_docs_for_domain.py class Command (line 8) | class Command(BaseCommand): method add_arguments (line 13) | def add_arguments(self, parser): method handle (line 16) | def handle(self, domain, **options): FILE: corehq/apps/cleanup/management/commands/delete_forms.py class Command (line 13) | class Command(BaseCommand): method add_arguments (line 14) | def add_arguments(self, parser): method handle (line 22) | def handle(self, domain, filename, resume_id=None, permanent=False, **... method _process_rows (line 28) | def _process_rows(self, rows, domain, resume_id, permanent): method delete_forms (line 41) | def delete_forms(self, domain, rows, permanent): method hard_delete_forms (line 57) | def hard_delete_forms(self, domain, form_ids): method soft_delete_forms (line 67) | def soft_delete_forms(self, domain, form_ids): FILE: corehq/apps/cleanup/management/commands/evaluate_couch_model_for_sql.py class Command (line 19) | class Command(BaseCommand): method add_arguments (line 33) | def add_arguments(self, parser): method handle (line 65) | def handle(self, django_app, class_name, chunk_size, **options): method evaluate_doc (line 107) | def evaluate_doc(self, doc, prefix=None): method init_field (line 170) | def init_field(self, key, field_type, params=None): method field_type (line 187) | def field_type(self, key): method update_field_type (line 190) | def update_field_type(self, key, value): method update_field_max_length (line 193) | def update_field_max_length(self, key, new_length): method update_field_null (line 197) | def update_field_null(self, key, value): method add_index (line 200) | def add_index(self, fields): method standardize_max_lengths (line 207) | def standardize_max_lengths(self): method correlate_with_couch_schema (line 220) | def correlate_with_couch_schema(self, couch_class, prefix=None): method couch_type_to_sql_type (line 248) | def couch_type_to_sql_type(self, couch_property): method standardize_nulls (line 273) | def standardize_nulls(self): method generate_models_changes (line 279) | def generate_models_changes(self): method generate_management_command (line 314) | def generate_management_command(self): method generate_test_file (line 352) | def generate_test_file(self): method is_submodel_key (line 359) | def is_submodel_key(self, key): method is_field_type_submodel (line 362) | def is_field_type_submodel(self, key): function render_tempate (line 366) | def render_tempate(template_filename, **kwargs): FILE: corehq/apps/cleanup/management/commands/fire_repeaters.py class Command (line 7) | class Command(BaseCommand): method add_arguments (line 10) | def add_arguments(self, parser): method handle (line 13) | def handle(self, domain, **options): FILE: corehq/apps/cleanup/management/commands/get_doc_info.py class Command (line 12) | class Command(BaseCommand): method add_arguments (line 15) | def add_arguments(self, parser): method handle (line 24) | def handle(self, filename, **options): method handle_doc (line 35) | def handle_doc(self, id): FILE: corehq/apps/cleanup/management/commands/multi_populate.py class Command (line 8) | class Command(BaseCommand): method add_arguments (line 10) | def add_arguments(self, parser): method handle (line 57) | def handle(self, commands, log_dir=None, **options): FILE: corehq/apps/cleanup/management/commands/pillow_reset.py class Command (line 14) | class Command(BaseCommand): method add_arguments (line 17) | def add_arguments(self, parser): method handle (line 22) | def handle(self, file_path, **options): class PillowResetConfig (line 58) | class PillowResetConfig(JsonObject): method pillows (line 63) | def pillows(self): FILE: corehq/apps/cleanup/management/commands/populate_sql_model_from_couch_model.py class PopulateSQLCommand (line 37) | class PopulateSQLCommand(BaseCommand): method couch_db_slug (line 47) | def couch_db_slug(cls): method couch_doc_type (line 52) | def couch_doc_type(cls): method sql_class (line 56) | def sql_class(self): method _should_migrate_in_bulk (line 73) | def _should_migrate_in_bulk(self): method get_ids_to_ignore (line 76) | def get_ids_to_ignore(self, docs): method diff_couch_and_sql (line 90) | def diff_couch_and_sql(cls, couch, sql): method get_filtered_diffs (line 100) | def get_filtered_diffs(cls, couch, sql): method get_diff_as_string (line 107) | def get_diff_as_string(cls, couch, sql): method diff_attr (line 112) | def diff_attr(cls, name, doc, obj, wrap_couch=None, wrap_sql=None, nam... method diff_value (line 125) | def diff_value(cls, name, couch, sql, name_prefix=None): method diff_lists (line 131) | def diff_lists(cls, name, docs, objects, attr_list=None): method handle_override_is_completed (line 145) | def handle_override_is_completed(self, override_is_completed, verify_o... method _set_migration_completed (line 159) | def _set_migration_completed(self): method _override_migration_status (line 168) | def _override_migration_status(self, is_completed): method _avg_items_to_be_migrated (line 179) | def _avg_items_to_be_migrated(self, verify_only=False): method count_items_to_be_migrated (line 189) | def count_items_to_be_migrated(cls, verify_only=False): method get_migration_status (line 199) | def get_migration_status(cls, verify_only): method discard_resume_state (line 203) | def discard_resume_state(cls, verify_only): method commit_adding_migration (line 210) | def commit_adding_migration(cls): method migrate_from_migration (line 220) | def migrate_from_migration(cls, apps, schema_editor): method couch_db (line 266) | def couch_db(cls): method add_arguments (line 269) | def add_arguments(self, parser): method handle (line 336) | def handle(self, chunk_size, fixup_diffs, override_is_completed, debug... method _migrate_docs (line 456) | def _migrate_docs(self, docs, logfile, fixup_diffs): method _prepare_for_submodel_creation (line 517) | def _prepare_for_submodel_creation(self, docs): method _create_submodels (line 521) | def _create_submodels(self, doc, obj, submodel_specs): method _group_submodels (line 532) | def _group_submodels(self, creates, submodel_specs): method _sql_query_from_docs (line 541) | def _sql_query_from_docs(self, docs): method _verify_docs (line 552) | def _verify_docs(self, docs, logfile, verify_only): method _do_diff (line 570) | def _do_diff(self, doc, obj, logfile, exit=False): method _verify_doc (line 586) | def _verify_doc(self, doc, logfile, verify_only): method _migrate_doc (line 599) | def _migrate_doc(self, doc, logfile): method _get_couch_doc_count_for_domains (line 611) | def _get_couch_doc_count_for_domains(self, domains): method _get_sql_doc_count_for_domains (line 617) | def _get_sql_doc_count_for_domains(self, domains): method _iter_couch_docs_for_domains (line 620) | def _iter_couch_docs_for_domains(self, domains, chunk_size): method _resume_iter_couch_view (line 632) | def _resume_iter_couch_view(cls, chunk_size=1000, verify_only=False): method should_process (line 644) | def should_process(self, result): method get_couch_view_name_and_parameters (line 652) | def get_couch_view_name_and_parameters(cls): method get_couch_view_name_and_parameters_for_domains (line 665) | def get_couch_view_name_and_parameters_for_domains(cls, domains=None): method _get_couch_doc_count_for_type (line 678) | def _get_couch_doc_count_for_type(cls): method open_log (line 682) | def open_log(log_path, mode="a"): class IterDocsEvents (line 691) | class IterDocsEvents(PaginationEventHandler): method __init__ (line 693) | def __init__(self, iterator): method page_start (line 697) | def page_start(self, total_emitted, *args, **kwargs): method stop (line 700) | def stop(self): class DiffDocs (line 705) | class DiffDocs: method __iter__ (line 711) | def __iter__(self): method __len__ (line 715) | def __len__(self): method iter_doc_ids (line 718) | def iter_doc_ids(self, quiet=False): FILE: corehq/apps/cleanup/management/commands/purge_docs.py class Command (line 9) | class Command(BaseCommand): method handle (line 12) | def handle(self, doc_types, *args, **options): FILE: corehq/apps/cleanup/management/commands/rebuild_cases.py class Command (line 12) | class Command(BaseCommand): method add_arguments (line 15) | def add_arguments(self, parser): method handle (line 19) | def handle(self, domain, cases_csv_file, **options): function rebuild_cases (line 28) | def rebuild_cases(domain, cases, logger): FILE: corehq/apps/cleanup/management/commands/remove_deleted_cases_from_es.py class Command (line 8) | class Command(BaseCommand): method add_arguments (line 11) | def add_arguments(self, parser): method handle (line 15) | def handle(self, domain, **options): function should_case_be_deleted (line 28) | def should_case_be_deleted(case_id, domain): function get_case_ids_missing_from_case_search (line 44) | def get_case_ids_missing_from_case_search(domain): FILE: corehq/apps/cleanup/management/commands/reprocess_error_forms.py class Command (line 10) | class Command(BaseCommand): method add_arguments (line 16) | def add_arguments(self, parser): method handle (line 32) | def handle(self, domain, **options): method _get_form_ids (line 64) | def _get_form_ids(self, domain): FILE: corehq/apps/cleanup/management/commands/reprocess_incomplete_submissions.py function confirm (line 30) | def confirm(): class Command (line 39) | class Command(BaseCommand): method add_arguments (line 42) | def add_arguments(self, parser): method handle (line 60) | def handle(self, domain, **options): method print_stats (line 107) | def print_stats(self): FILE: corehq/apps/cleanup/management/commands/republish_forms_rebuild_cases.py class Command (line 18) | class Command(BaseCommand): method add_arguments (line 21) | def add_arguments(self, parser): method handle (line 24) | def handle(self, form_ids_file, **options): function rebuild_case_changes (line 49) | def rebuild_case_changes(form, rebuild_reason=None): FILE: corehq/apps/cleanup/management/commands/undelete_docs.py function get_deleted_doc (line 16) | def get_deleted_doc(db, doc_id, rev): function undelete_docs (line 31) | def undelete_docs(db, doc_ids): class Command (line 49) | class Command(BaseCommand): method add_arguments (line 54) | def add_arguments(self, parser): method handle (line 58) | def handle(self, database, ids_file, **options): function get_output_file (line 96) | def get_output_file(results, iter_db): FILE: corehq/apps/cleanup/management/commands/undo_uuid_clash.py function get_forms_to_reprocess (line 33) | def get_forms_to_reprocess(form_ids): function undo_form_edits (line 57) | def undo_form_edits(form_tuples, logger): function update_case_transactions_for_form (line 102) | def update_case_transactions_for_form(case_cache, live_case_updates, dep... function rebuild_cases (line 153) | def rebuild_cases(cases_to_rebuild_by_domain, logger): function rebuild_ledgers (line 161) | def rebuild_ledgers(ledgers_to_rebuild_by_domain, logger): class Command (line 168) | class Command(BaseCommand): method add_arguments (line 171) | def add_arguments(self, parser): method handle (line 178) | def handle(self, domain, **options): method __enter__ (line 217) | def __enter__(self): method __exit__ (line 220) | def __exit__(self, exc_type, exc_val, exc_tb): method log (line 223) | def log(self, message): function check_and_process_forms (line 227) | def check_and_process_forms(form_ids, logger, debug): FILE: corehq/apps/cleanup/migrations/0001_convert_change_feed_checkpoint_to_sql.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/cleanup/migrations/0002_convert_mc_checkpoint_to_sql.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/cleanup/migrations/0003_convert_fluff_checkpoints_to_sql.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/cleanup/migrations/0004_convert_ucr_checkpoints_to_sql.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/cleanup/migrations/0005_convert_mvp_checkpoints_to_sql.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/cleanup/migrations/0006_convert_report_es_checkpoints_to_sql.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/cleanup/migrations/0007_convert_es_checkpoints_to_sql.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/cleanup/migrations/0008_convert_sofabed_checkpoints_to_sql.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/cleanup/migrations/0009_convert_final_checkpoints_to_sql.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/cleanup/migrations/0010_rename_default_change_feed_checkpoint.py function copy_checkpoint (line 4) | def copy_checkpoint(apps, schema_editor): function delete_checkpoint (line 16) | def delete_checkpoint(apps, schema_editor): class Migration (line 25) | class Migration(migrations.Migration): FILE: corehq/apps/cleanup/migrations/0011_merge_couch_sql_pillows.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/cleanup/migrations/0012_add_es_index_to_checkpoint_ids.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/apps/cleanup/migrations/0013_migrate_kafka_checkpoint_format.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/cleanup/migrations/0014_deletedcouchdoc.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/cleanup/migrations/0015_deletedcouchdoc_unique_id_and_type.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/cleanup/migrations/0016_add_deletedsqldoc.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/cleanup/migrations/0017_delete_oauth_integrations_models.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/cleanup/migrations/0018_delete_ewsghana_models.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/cleanup/models.py class DeletedCouchDoc (line 4) | class DeletedCouchDoc(models.Model): class Meta (line 9) | class Meta: class DeletedSQLDoc (line 15) | class DeletedSQLDoc(models.Model): class Meta (line 22) | class Meta: FILE: corehq/apps/cleanup/tasks.py function permanently_delete_eligible_data (line 27) | def permanently_delete_eligible_data(dry_run=False): function clear_expired_sessions (line 50) | def clear_expired_sessions(): function check_for_sql_cases_without_existing_domain (line 55) | def check_for_sql_cases_without_existing_domain(): function check_for_sql_forms_without_existing_domain (line 69) | def check_for_sql_forms_without_existing_domain(): function check_for_elasticsearch_data_without_existing_domain (line 83) | def check_for_elasticsearch_data_without_existing_domain(): function check_for_ucr_tables_without_existing_domain (line 98) | def check_for_ucr_tables_without_existing_domain(): function check_for_conflicting_domains (line 111) | def check_for_conflicting_domains(): FILE: corehq/apps/cleanup/tests/test_dbaccessors.py class TestFindSQLFormsForDeletedDomains (line 24) | class TestFindSQLFormsForDeletedDomains(TestCase): method test_deleted_domain_with_form_data_is_flagged (line 26) | def test_deleted_domain_with_form_data_is_flagged(self): method test_missing_domain_with_form_data_is_not_flagged (line 31) | def test_missing_domain_with_form_data_is_not_flagged(self): method test_active_domain_with_form_data_is_not_flagged (line 36) | def test_active_domain_with_form_data_is_not_flagged(self): method setUpClass (line 42) | def setUpClass(cls): class TestFindSQLCasesForDeletedDomains (line 51) | class TestFindSQLCasesForDeletedDomains(TestCase): method test_deleted_domain_with_case_data_is_flagged (line 53) | def test_deleted_domain_with_case_data_is_flagged(self): method test_missing_domain_with_case_data_is_not_flagged (line 58) | def test_missing_domain_with_case_data_is_not_flagged(self): method test_active_domain_with_case_data_is_not_flagged (line 63) | def test_active_domain_with_case_data_is_not_flagged(self): method setUpClass (line 69) | def setUpClass(cls): class TestFindESDocsForDeletedDomains (line 85) | class TestFindESDocsForDeletedDomains(TestCase): method test_deleted_domain_with_es_data_is_flagged (line 87) | def test_deleted_domain_with_es_data_is_flagged(self): method test_missing_domain_with_es_data_is_not_flagged (line 96) | def test_missing_domain_with_es_data_is_not_flagged(self): method test_active_domain_with_es_data_is_not_flagged (line 104) | def test_active_domain_with_es_data_is_not_flagged(self): method setUpClass (line 114) | def setUpClass(cls): class TestFindUCRTablesForDeletedDomains (line 123) | class TestFindUCRTablesForDeletedDomains(TestCase): method test_deleted_domain_with_ucr_tables_is_flagged (line 125) | def test_deleted_domain_with_ucr_tables_is_flagged(self): method test_missing_domain_with_ucr_tables_is_not_flagged (line 135) | def test_missing_domain_with_ucr_tables_is_not_flagged(self): method test_active_domain_with_ucr_tables_is_not_flagged (line 145) | def test_active_domain_with_ucr_tables_is_not_flagged(self): method setUpClass (line 156) | def setUpClass(cls): method _create_data_source_config (line 165) | def _create_data_source_config(domain): FILE: corehq/apps/cleanup/tests/test_delete_es_docs_for_domain.py class TestDeleteESDocsForDomain (line 25) | class TestDeleteESDocsForDomain(TestCase): method setUpClass (line 28) | def setUpClass(cls): method test_es_docs_are_cleaned_up_for_tombstoned_domain (line 36) | def test_es_docs_are_cleaned_up_for_tombstoned_domain(self): method test_es_docs_are_cleaned_up_for_nonexistant_domain (line 51) | def test_es_docs_are_cleaned_up_for_nonexistant_domain(self): method test_es_docs_for_other_domains_are_not_impacted (line 68) | def test_es_docs_for_other_domains_are_not_impacted(self): method test_fails_on_active_domain (line 86) | def test_fails_on_active_domain(self): FILE: corehq/apps/cleanup/tests/test_populate_sql_model_from_couch_model.py class TestPopulateSQLCommand (line 21) | class TestPopulateSQLCommand(TestCase): method test_resume_migration (line 23) | def test_resume_migration(self): method test_verify_does_not_change_resume_state (line 57) | def test_verify_does_not_change_resume_state(self): method test_fixup_diffs_does_not_change_resume_state (line 80) | def test_fixup_diffs_does_not_change_resume_state(self): method test_domains_migration_does_not_change_resume_state (line 106) | def test_domains_migration_does_not_change_resume_state(self): method tearDown (line 129) | def tearDown(self): function call_command (line 136) | def call_command(*, log_path, **options): function stop_at_diff (line 158) | def stop_at_diff(doc_id): class Command (line 167) | class Command(PopulateSQLCommand): method couch_doc_type (line 170) | def couch_doc_type(cls): method sql_class (line 174) | def sql_class(cls): method get_ids_to_ignore (line 177) | def get_ids_to_ignore(self, docs): method _sql_query_from_docs (line 180) | def _sql_query_from_docs(self, docs): method diff_couch_and_sql (line 185) | def diff_couch_and_sql(cls, couch, sql): class TestDoc (line 189) | class TestDoc(SyncCouchToSQLMixin, Document): class Meta (line 192) | class Meta: method _migration_get_fields (line 195) | def _migration_get_fields(self): class FakeModel (line 199) | class FakeModel(SyncSQLToCouchMixin): method _migration_get_couch_model_class (line 204) | def _migration_get_couch_model_class(cls): class objects (line 207) | class objects: method bulk_create (line 208) | def bulk_create(objs, ignore_conflicts=False): method count (line 211) | def count(): method filter (line 214) | def filter(**params): method __repr__ (line 221) | def __repr__(self): function create_doc (line 225) | def create_doc(_id, **data): class MockQueryset (line 233) | class MockQueryset(list): method only (line 234) | def only(self, *a, **kw): method count (line 237) | def count(self): function templog (line 242) | def templog(): class Log (line 247) | class Log: method __init__ (line 248) | def __init__(self, tmp, name="log.txt"): method content (line 252) | def content(self): FILE: corehq/apps/cleanup/tests/test_tasks.py class TestPermanentlyDeleteEligibleData (line 12) | class TestPermanentlyDeleteEligibleData(TestCase): method test_deletes_data (line 18) | def test_deletes_data(self): method test_does_not_delete_data (line 27) | def test_does_not_delete_data(self): method test_does_not_delete_data_if_in_dry_run_mode (line 34) | def test_does_not_delete_data_if_in_dry_run_mode(self): method setUp (line 42) | def setUp(self): FILE: corehq/apps/cleanup/tests/test_utils.py class TestDeletedDomains (line 8) | class TestDeletedDomains(TestCase): method test_is_domain_deleted_returns_true_for_deleted_domain (line 10) | def test_is_domain_deleted_returns_true_for_deleted_domain(self): method test_is_domain_deleted_returns_false_for_active_domain (line 14) | def test_is_domain_deleted_returns_false_for_active_domain(self): method test_is_domain_deleted_returns_false_for_inactive_domain (line 18) | def test_is_domain_deleted_returns_false_for_inactive_domain(self): method setUpClass (line 23) | def setUpClass(cls): class TestMigrateToDeletedOn (line 34) | class TestMigrateToDeletedOn(TestCase): method test_deleted_on_is_set_if_object_is_deleted (line 36) | def test_deleted_on_is_set_if_object_is_deleted(self): method test_deleted_on_is_not_set_if_object_is_not_deleted (line 42) | def test_deleted_on_is_not_set_if_object_is_not_deleted(self): FILE: corehq/apps/cleanup/tests/util.py class ModelAttrEqualityHelper (line 14) | class ModelAttrEqualityHelper(SimpleTestCase): class DummySQLModel (line 19) | class DummySQLModel(models.Model, SyncSQLToCouchMixin): class DummyCouchModel (line 22) | class DummyCouchModel(Document, SyncCouchToSQLMixin): method _get_user_defined_attrs (line 30) | def _get_user_defined_attrs(cls, model_cls, dummy_model): method get_sql_attrs (line 37) | def get_sql_attrs(cls, model_cls): method get_cleaned_couch_attrs (line 41) | def get_cleaned_couch_attrs(cls, couch_model_cls): function is_monday (line 48) | def is_monday(): FILE: corehq/apps/cleanup/utils.py function abort (line 12) | def abort(): function confirm_destructive_operation (line 17) | def confirm_destructive_operation(): function confirm (line 30) | def confirm(msg): class DeletedDomains (line 36) | class DeletedDomains: method _deleted_domains (line 45) | def _deleted_domains(self): method is_domain_deleted (line 48) | def is_domain_deleted(self, domain): function migrate_to_deleted_on (line 52) | def migrate_to_deleted_on(db_cls, old_field, should_audit=False): function get_cutoff_date_for_data_deletion (line 72) | def get_cutoff_date_for_data_deletion(): FILE: corehq/apps/cloudcare/api.py function get_app_json (line 10) | def get_app_json(app): function look_up_app_json (line 18) | def look_up_app_json(domain, app_id): function get_cloudcare_app (line 26) | def get_cloudcare_app(domain, app_name): FILE: corehq/apps/cloudcare/dbaccessors.py function get_application_access_for_domain (line 7) | def get_application_access_for_domain(domain): function get_cloudcare_apps (line 15) | def get_cloudcare_apps(domain): FILE: corehq/apps/cloudcare/decorators.py function require_cloudcare_access_ex (line 14) | def require_cloudcare_access_ex(): FILE: corehq/apps/cloudcare/esaccessors.py function login_as_user_query (line 6) | def login_as_user_query( function _limit_login_as (line 50) | def _limit_login_as(couch_user, domain): FILE: corehq/apps/cloudcare/exceptions.py class RemoteAppError (line 3) | class RemoteAppError(Exception): FILE: corehq/apps/cloudcare/middleware.py class CloudcareMiddleware (line 7) | class CloudcareMiddleware(MiddlewareMixin): method process_response (line 9) | def process_response(self, request, response): method _set_formplayer_session_cookie (line 14) | def _set_formplayer_session_cookie(request, response): FILE: corehq/apps/cloudcare/migrations/0001_initial.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/cloudcare/migrations/0002_sqlapplicationaccess.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/cloudcare/migrations/0003_rename_sqlapplicationaccess.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/cloudcare/models.py class ApplicationAccess (line 7) | class ApplicationAccess(models.Model): method save (line 11) | def save(self, force_insert=False, force_update=False, using=DEFAULT_D... method user_can_access_app (line 18) | def user_can_access_app(self, user, app_id): method get_template_json (line 30) | def get_template_json(self, apps): class SQLAppGroup (line 57) | class SQLAppGroup(models.Model): class Meta (line 62) | class Meta(object): FILE: corehq/apps/cloudcare/static/cloudcare/js/form_entry/entries.js function Entry (line 23) | function Entry(question) { function EntryArrayAnswer (line 106) | function EntryArrayAnswer(question) { function EntrySingleAnswer (line 144) | function EntrySingleAnswer(question, options) { function InfoEntry (line 210) | function InfoEntry(question) { function UnsupportedEntry (line 223) | function UnsupportedEntry(question) { function FreeTextEntry (line 235) | function FreeTextEntry(question, options) { function AddressEntry (line 292) | function AddressEntry(question, options) { function IntEntry (line 357) | function IntEntry(question, options) { function PhoneEntry (line 391) | function PhoneEntry(question, options) { function FloatEntry (line 413) | function FloatEntry(question, options) { function MultiSelectEntry (line 436) | function MultiSelectEntry(question, options) { function MultiDropdownEntry (line 480) | function MultiDropdownEntry(question, options) { function SingleSelectEntry (line 498) | function SingleSelectEntry(question, options) { function ButtonSelectEntry (line 550) | function ButtonSelectEntry(question, options) { function ChoiceLabelEntry (line 577) | function ChoiceLabelEntry(question, options) { function DropdownEntry (line 613) | function DropdownEntry(question, options) { function ComboboxEntry (line 658) | function ComboboxEntry(question, options) { function DateTimeEntryBase (line 784) | function DateTimeEntryBase(question, options) { function DateEntry (line 821) | function DateEntry(question, options) { function TimeEntry (line 834) | function TimeEntry(question, options) { function EthiopianDateEntry (line 852) | function EthiopianDateEntry(question, options) { function FileEntry (line 921) | function FileEntry(question, options) { function ImageEntry (line 1037) | function ImageEntry(question, options) { function DocumentEntry (line 1049) | function DocumentEntry(question, options) { function AudioEntry (line 1062) | function AudioEntry(question, options) { function VideoEntry (line 1074) | function VideoEntry(question, options) { function SignatureEntry (line 1086) | function SignatureEntry(question, options) { function GeoPointEntry (line 1154) | function GeoPointEntry(question, options) { function getEntry (line 1257) | function getEntry(question) { function intpad (line 1444) | function intpad(x, n) { function _getDisplayOptions (line 1455) | function _getDisplayOptions(question) { function select2ify (line 1467) | function select2ify(entry, additionalOptions, isMulti) { function applySelect2Labelledby (line 1482) | function applySelect2Labelledby(entryId, isMulti) { function select2AnswerChange (line 1493) | function select2AnswerChange(parentClass) { FILE: corehq/apps/cloudcare/static/cloudcare/js/form_entry/form_ui.js function relativeIndex (line 26) | function relativeIndex(ix) { function getIx (line 47) | function getIx(o) { function getForIx (line 61) | function getForIx(o, ix) { function getQuestions (line 74) | function getQuestions(o) { function getMatchingStyles (line 90) | function getMatchingStyles(pattern, styleStr) { function stylesContaining (line 104) | function stylesContaining(pattern, style) { function stylesContains (line 109) | function stylesContains(pattern, style) { function parseMeta (line 113) | function parseMeta(type, style) { function getParentForm (line 147) | function getParentForm(self) { function getNPerRowStyleFromRepeatStyle (line 155) | function getNPerRowStyleFromRepeatStyle(styleStr) { function processNPerRowRepeatStyle (line 166) | function processNPerRowRepeatStyle(json) { function Container (line 188) | function Container(json) { function addToCurrentGroup (line 345) | function addToCurrentGroup(child) { function resetCurrentGroup (line 357) | function resetCurrentGroup() { function removeSiblingsOfRepeatGroup (line 401) | function removeSiblingsOfRepeatGroup(rootNode, deletedGroupIx) { function Form (line 440) | function Form(json) { function Group (line 717) | function Group(json, parent) { function GroupedElementTileRow (line 844) | function GroupedElementTileRow(json, parent) { function Question (line 901) | function Question(json, parent) { FILE: corehq/apps/cloudcare/static/cloudcare/js/form_entry/spec/fixtures.js function textJSON (line 3) | function textJSON(options = {}) { function selectJSON (line 34) | function selectJSON(options = {}) { function labelJSON (line 65) | function labelJSON(options = {}) { function groupJSON (line 96) | function groupJSON(options = {}) { function noQuestionGroupJSON (line 128) | function noQuestionGroupJSON() { FILE: corehq/apps/cloudcare/static/cloudcare/js/form_entry/web_form_session.js function WebFormSession (line 14) | function WebFormSession(params) { function applyLangListener (line 605) | function applyLangListener(session) { function changeLang (line 614) | function changeLang(lang) { function updateDisplayOptionLang (line 623) | function updateDisplayOptionLang(lang) { FILE: corehq/apps/cloudcare/static/cloudcare/js/formplayer/app.js function makeSyncRequest (line 454) | function makeSyncRequest(route, requestData) { function shouldSync (line 510) | function shouldSync() { FILE: corehq/apps/cloudcare/static/cloudcare/js/formplayer/apps/api.js function fetchAllApps (line 13) | function fetchAllApps(restoreAs) { function fetchPredefinedApps (line 21) | function fetchPredefinedApps() { FILE: corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/collections.js function addBreadcrumb (line 13) | function addBreadcrumb(collection, type, data) { FILE: corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/views.js function resetIcon (line 346) | function resetIcon() { method onAttach (line 1202) | onAttach() { FILE: corehq/apps/cloudcare/static/cloudcare/js/formplayer/menus/views/query.js method childView (line 537) | childView(item) { method buildChildView (line 545) | buildChildView(child, ChildViewClass, childViewOptions) { FILE: corehq/apps/cloudcare/static/cloudcare/js/formplayer/router.js function start (line 279) | function start() { FILE: corehq/apps/cloudcare/static/cloudcare/js/markdown.js function updateTarget (line 6) | function updateTarget(tokens, idx, target) { function initMd (line 16) | function initMd() { function render (line 45) | function render(text) { function appendExtraStyleClass (line 59) | function appendExtraStyleClass(htmlString, element, styleClass) { function reset (line 70) | function reset() { FILE: corehq/apps/cloudcare/static/cloudcare/js/preview_app/preview_app.js function start (line 4) | function start(options) { FILE: corehq/apps/cloudcare/static/cloudcare/js/utils.js function getSentryMessage (line 245) | function getSentryMessage(data) { FILE: corehq/apps/cloudcare/tests/test_api.py class ReadableQuestionsAPITest (line 16) | class ReadableQuestionsAPITest(TestCase): method setUpClass (line 23) | def setUpClass(cls): method tearDownClass (line 38) | def tearDownClass(cls): method test_readable_questions (line 43) | def test_readable_questions(self): FILE: corehq/apps/cloudcare/tests/test_doc_tests.py function test_view_doctests (line 6) | def test_view_doctests(): FILE: corehq/apps/cloudcare/tests/test_esaccessors.py class TestLoginAsUserQuery (line 13) | class TestLoginAsUserQuery(TestCase): method setUpClass (line 16) | def setUpClass(cls): method _send_user_to_es (line 24) | def _send_user_to_es(self, _id=None, username=None, user_data=None): method test_login_as_user_query_username (line 47) | def test_login_as_user_query_username(self): method test_login_as_user_query_all (line 63) | def test_login_as_user_query_all(self): method test_limited_users (line 78) | def test_limited_users(self): method test_limited_users_case_insensitive (line 94) | def test_limited_users_case_insensitive(self): method test_limited_users_partial_match (line 111) | def test_limited_users_partial_match(self): method test_default_user (line 127) | def test_default_user(self): FILE: corehq/apps/cloudcare/tests/test_models.py class MockApplication (line 8) | class MockApplication(object): method __init__ (line 9) | def __init__(self, domain, name): method get_id (line 15) | def get_id(self): class ModelsTest (line 19) | class ModelsTest(TestCase): method tearDownClass (line 23) | def tearDownClass(cls): method test_application_access (line 28) | def test_application_access(self): FILE: corehq/apps/cloudcare/tests/test_session.py class SessionUtilsTest (line 19) | class SessionUtilsTest(TestCase): method test_load_session_data_for_mobile_worker (line 21) | def test_load_session_data_for_mobile_worker(self): method test_default_user_data (line 31) | def test_default_user_data(self): method test_user_data_profile (line 47) | def test_user_data_profile(self): method test_load_session_data_for_web_user (line 71) | def test_load_session_data_for_web_user(self): method test_load_session_data_for_commconnect_case (line 80) | def test_load_session_data_for_commconnect_case(self): FILE: corehq/apps/cloudcare/tests/test_utils.py class TestShouldRestrictWebAppsUsage (line 30) | class TestShouldRestrictWebAppsUsage(TestCase): method test_returns_false_if_domain_ucr_count_is_under_limit_and_neither_toggle_is_enable (line 34) | def test_returns_false_if_domain_ucr_count_is_under_limit_and_neither_... method test_returns_false_if_domain_ucr_count_exceeds_limit_and_neither_toggle_is_enabled (line 41) | def test_returns_false_if_domain_ucr_count_exceeds_limit_and_neither_t... method test_returns_false_if_domain_ucr_count_exceeds_limit_and_ALLOW_WEB_APPS_RESTRICTION_is_enabled (line 48) | def test_returns_false_if_domain_ucr_count_exceeds_limit_and_ALLOW_WEB... method test_returns_false_if_domain_ucr_count_exceeds_limit_and_MOBILE_UCR_is_enabled (line 55) | def test_returns_false_if_domain_ucr_count_exceeds_limit_and_MOBILE_UC... method test_returns_false_if_domain_ucr_count_is_under_limit_and_both_flags_are_enabled (line 62) | def test_returns_false_if_domain_ucr_count_is_under_limit_and_both_fla... method test_returns_false_if_domain_ucr_count_equals_limit_and_both_flags_are_enabled (line 69) | def test_returns_false_if_domain_ucr_count_equals_limit_and_both_flags... method test_returns_true_if_domain_ucr_count_exceeds_limit_and_both_flags_are_enabled (line 76) | def test_returns_true_if_domain_ucr_count_exceeds_limit_and_both_flags... method setUpClass (line 82) | def setUpClass(cls): class TestGetMobileUCRCount (line 87) | class TestGetMobileUCRCount(TestCase): method test_returns_zero_if_neither_toggle_is_enable (line 91) | def test_returns_zero_if_neither_toggle_is_enable(self): method test_returns_zero_if_ALLOW_WEB_APPS_RESTRICTION_is_enabled (line 98) | def test_returns_zero_if_ALLOW_WEB_APPS_RESTRICTION_is_enabled(self): method test_returns_zero_if_MOBILE_UCR_is_enabled (line 105) | def test_returns_zero_if_MOBILE_UCR_is_enabled(self): method test_returns_ucr_count_if_both_flags_are_enabled (line 112) | def test_returns_ucr_count_if_both_flags_are_enabled(self): method _create_app_with_reports (line 117) | def _create_app_with_reports(self, report_count=1): method setUpClass (line 127) | def setUpClass(cls): class TestCanUserAccessWebApp (line 133) | class TestCanUserAccessWebApp(TestCase): method test_commcare_user_has_access_if_assigned_role_that_can_access_all_web_apps (line 135) | def test_commcare_user_has_access_if_assigned_role_that_can_access_all... method test_commcare_user_has_access_if_assigned_role_that_cannot_access_web_apps (line 142) | def test_commcare_user_has_access_if_assigned_role_that_cannot_access_... method test_commcare_user_has_access_if_assigned_role_that_can_access_specific_app (line 150) | def test_commcare_user_has_access_if_assigned_role_that_can_access_spe... method test_commcare_user_does_not_have_access_if_assigned_role_that_can_access_different_app (line 159) | def test_commcare_user_does_not_have_access_if_assigned_role_that_can_... method test_web_user_has_access_if_assigned_role_that_can_access_all_web_apps (line 166) | def test_web_user_has_access_if_assigned_role_that_can_access_all_web_... method test_web_user_does_not_have_access_if_assigned_role_that_cannot_access_web_apps (line 173) | def test_web_user_does_not_have_access_if_assigned_role_that_cannot_ac... method test_web_user_has_access_if_assigned_role_that_can_access_specific_app (line 180) | def test_web_user_has_access_if_assigned_role_that_can_access_specific... method test_web_user_has_access_to_canonical_if_assigned_role_that_can_access_specific_app (line 189) | def test_web_user_has_access_to_canonical_if_assigned_role_that_can_ac... method test_web_user_does_not_have_access_if_assigned_role_that_can_access_different_app (line 198) | def test_web_user_does_not_have_access_if_assigned_role_that_can_acces... method test_web_user_does_not_have_access_to_canonical_if_assigned_role_that_can_access_different_app (line 205) | def test_web_user_does_not_have_access_to_canonical_if_assigned_role_t... method test_commcare_user_has_access_if_assigned_role_that_cannot_access_web_apps_and_in_group_with_access_to_specific_app (line 213) | def test_commcare_user_has_access_if_assigned_role_that_cannot_access_... method test_commcare_user_does_not_have_access_if_assigned_role_that_can_access_different_app_and_in_group_with_access_to_specific_app (line 222) | def test_commcare_user_does_not_have_access_if_assigned_role_that_can_... method test_commcare_user_does_not_have_access_if_assigned_role_that_can_access_different_app_and_in_group_with_access_to_different_app (line 232) | def test_commcare_user_does_not_have_access_if_assigned_role_that_can_... method test_commcare_user_has_access_if_assigned_role_that_can_access_specific_app_and_in_group_with_access_to_specific_app (line 241) | def test_commcare_user_has_access_if_assigned_role_that_can_access_spe... method test_commcare_user_has_access_if_assigned_role_that_can_access_specific_app_and_in_group_with_access_to_different_app (line 252) | def test_commcare_user_has_access_if_assigned_role_that_can_access_spe... method test_permission_takes_precedence_over_group_for_web_user (line 263) | def test_permission_takes_precedence_over_group_for_web_user(self): method setUpClass (line 272) | def setUpClass(cls): method setUp (line 278) | def setUp(self): method set_role_on_user_with_permissions (line 291) | def set_role_on_user_with_permissions(self, user, permissions): method add_user_to_group_for_app_id (line 295) | def add_user_to_group_for_app_id(self, user, app_id): class TestGetWebAppsAvailableToUser (line 306) | class TestGetWebAppsAvailableToUser(TestCase): method setUpClass (line 310) | def setUpClass(cls): method assert_apps (line 316) | def assert_apps(self, expected): method _make_app (line 326) | def _make_app(self): method test (line 335) | def test(self): method test_deleted_app_is_gone (line 378) | def test_deleted_app_is_gone(self): FILE: corehq/apps/cloudcare/touchforms_api.py class BaseSessionDataHelper (line 9) | class BaseSessionDataHelper(object): method __init__ (line 11) | def __init__(self, domain, couch_user): method get_session_data (line 15) | def get_session_data(self, device_id=CLOUDCARE_DEVICE_ID): method get_full_context (line 26) | def get_full_context(self, root_extras=None, session_extras=None): class CaseSessionDataHelper (line 43) | class CaseSessionDataHelper(BaseSessionDataHelper): method __init__ (line 45) | def __init__(self, domain, couch_user, case_id_or_case, app, form, del... method case (line 58) | def case(self): method case_type (line 64) | def case_type(self): method _case_parent_id (line 68) | def _case_parent_id(self): method delegation (line 73) | def delegation(self): method get_session_data (line 78) | def get_session_data(self, device_id=CLOUDCARE_DEVICE_ID): method case_session_variable_name (line 95) | def case_session_variable_name(self): function get_user_contributions_to_touchforms_session (line 104) | def get_user_contributions_to_touchforms_session(domain, couch_user_or_c... FILE: corehq/apps/cloudcare/utils.py function can_user_access_web_app (line 16) | def can_user_access_web_app(domain, user, app_id): function _get_latest_build_for_web_apps (line 36) | def _get_latest_build_for_web_apps(domain, username, app_id): function get_web_apps_available_to_user (line 43) | def get_web_apps_available_to_user(domain, user): function get_latest_build_id_for_web_apps (line 58) | def get_latest_build_id_for_web_apps(domain, username, app_id): function get_web_app_ids_available_to_user (line 65) | def get_web_app_ids_available_to_user(domain, user): function should_show_preview_app (line 81) | def should_show_preview_app(request, app, username): function get_mobile_ucr_count (line 86) | def get_mobile_ucr_count(domain): function should_restrict_web_apps_usage (line 108) | def should_restrict_web_apps_usage(domain, ucr_count): FILE: corehq/apps/cloudcare/views.py function default (line 90) | def default(request, domain): class FormplayerMain (line 95) | class FormplayerMain(View): method dispatch (line 103) | def dispatch(self, request, *args, **kwargs): method get_web_apps_for_user (line 106) | def get_web_apps_for_user(self, domain, user, app_id=None, build_id=No... method get_restore_as_user (line 119) | def get_restore_as_user(request, domain): method get (line 170) | def get(self, request, domain, **kwargs): method get_option_apps (line 185) | def get_option_apps(self, request, domain, app_id, build_id): method get_main (line 190) | def get_main(self, request, domain, app_id, build_id): class PreviewAppView (line 231) | class PreviewAppView(TemplateView): method get (line 236) | def get(self, request, *args, **kwargs): function has_geocoder_privs (line 252) | def has_geocoder_privs(domain): class LoginAsUsers (line 260) | class LoginAsUsers(View): method dispatch (line 268) | def dispatch(self, *args, **kwargs): method get (line 271) | def get(self, request, domain, **kwargs): method _user_query (line 301) | def _user_query(self, search_string, page, limit): method _format_user (line 310) | def _format_user(self, user_json): function _format_app_doc (line 325) | def _format_app_doc(doc): class ReadableQuestions (line 335) | class ReadableQuestions(View): method dispatch (line 341) | def dispatch(self, request, *args, **kwargs): method post (line 344) | def post(self, request, domain): class HttpResponseConflict (line 365) | class HttpResponseConflict(HttpResponse): class EditCloudcareUserPermissionsView (line 369) | class EditCloudcareUserPermissionsView(BaseUserSettingsView): method page_title (line 374) | def page_title(self): method dispatch (line 381) | def dispatch(self, request, *args, **kwargs): method page_context (line 385) | def page_context(self): method put (line 395) | def put(self, request, *args, **kwargs): function report_formplayer_error (line 420) | def report_formplayer_error(request, domain): function report_sentry_error (line 461) | def report_sentry_error(request, domain): function _message_to_tag_value (line 485) | def _message_to_tag_value(message, allowed_chars=string.ascii_lowercase ... function _message_to_sentry_thread_topic (line 510) | def _message_to_sentry_thread_topic(message): function session_endpoint (line 525) | def session_endpoint(request, domain, app_id, endpoint_id=None): class BlockWebAppsView (line 564) | class BlockWebAppsView(BaseDomainView): method get (line 569) | def get(self, request, *args, **kwargs): method get_context_for_ucr_limit_error (line 575) | def get_context_for_ucr_limit_error(domain, mobile_ucr_count): function api_histogram_metrics (line 590) | def api_histogram_metrics(request, domain): FILE: corehq/apps/commtrack/const.py function enum (line 22) | def enum(**enums): function get_commtrack_user_id (line 34) | def get_commtrack_user_id(domain): FILE: corehq/apps/commtrack/consumption.py function get_consumption_for_ledger_json (line 4) | def get_consumption_for_ledger_json(ledger_json): function should_exclude_invalid_periods (line 27) | def should_exclude_invalid_periods(domain): FILE: corehq/apps/commtrack/exceptions.py class LinkedSupplyPointNotFoundError (line 1) | class LinkedSupplyPointNotFoundError(Exception): class NotAUserClassError (line 5) | class NotAUserClassError(Exception): class InvalidProductException (line 9) | class InvalidProductException(Exception): class DuplicateProductCodeException (line 13) | class DuplicateProductCodeException(InvalidProductException): class NoDefaultLocationException (line 17) | class NoDefaultLocationException(Exception): class MissingProductId (line 21) | class MissingProductId(Exception): class LedgerParseError (line 25) | class LedgerParseError(ValueError): class InvalidDate (line 29) | class InvalidDate(LedgerParseError): class RequisitionsHaveBeenRemoved (line 33) | class RequisitionsHaveBeenRemoved(Exception): FILE: corehq/apps/commtrack/fixtures.py function simple_fixture_generator (line 5) | def simple_fixture_generator(restore_user, id, name, fields, data, user_... function remove_exponent (line 47) | def remove_exponent(d: Decimal) -> Decimal: FILE: corehq/apps/commtrack/forms.py class CommTrackSettingsForm (line 18) | class CommTrackSettingsForm(forms.Form): method clean (line 51) | def clean(self): method __init__ (line 70) | def __init__(self, *args, **kwargs): class ConsumptionForm (line 114) | class ConsumptionForm(forms.Form): method __init__ (line 116) | def __init__(self, domain, *args, **kwargs): method save (line 141) | def save(self): FILE: corehq/apps/commtrack/helpers.py function make_product (line 17) | def make_product(domain, name, code): function make_supply_point (line 26) | def make_supply_point(domain, location): function update_supply_point_from_location (line 48) | def update_supply_point_from_location(supply_point, location): function _submit_commtrack_caseblock (line 76) | def _submit_commtrack_caseblock(domain, caseblock, source): FILE: corehq/apps/commtrack/migrations/0001_initial.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/commtrack/migrations/0002_stockstate_last_modified_form_id.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/commtrack/migrations/0003_create_config_models.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/commtrack/migrations/0004_update_overstock_threshold.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/commtrack/migrations/0005_populate_config_models.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/commtrack/migrations/0006_remove_sqlcommtrackconfig_couch_id.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/commtrack/migrations/0007_rename_sql_models.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/commtrack/migrations/0008_delete_stockstate.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/commtrack/models.py class CommtrackConfig (line 26) | class CommtrackConfig(models.Model): method all_actions (line 38) | def all_actions(self): method set_actions (line 42) | def set_actions(self, actions): method action_by_keyword (line 47) | def action_by_keyword(self, keyword): method for_domain (line 51) | def for_domain(cls, domain): method get_consumption_config (line 54) | def get_consumption_config(self): method get_ota_restore_settings (line 75) | def get_ota_restore_settings(self): method to_json (line 93) | def to_json(self): class ActionConfig (line 118) | class ActionConfig(models.Model): class Meta (line 132) | class Meta: method keyword (line 136) | def keyword(self): method keyword (line 140) | def keyword(self, val): method name (line 144) | def name(self): method is_stock (line 148) | def is_stock(self): method __repr__ (line 151) | def __repr__(self): method to_json (line 159) | def to_json(self): class ConsumptionConfig (line 168) | class ConsumptionConfig(models.Model): method to_json (line 181) | def to_json(self): class StockLevelsConfig (line 191) | class StockLevelsConfig(models.Model): method to_json (line 203) | def to_json(self): class AlertConfig (line 212) | class AlertConfig(models.Model): method to_json (line 224) | def to_json(self): class StockRestoreConfig (line 233) | class StockRestoreConfig(models.Model): method to_json (line 244) | def to_json(self): function close_supply_point_case (line 252) | def close_supply_point_case(domain, supply_point_id): function _reopen_or_create_supply_point (line 262) | def _reopen_or_create_supply_point(location): function sync_supply_point (line 280) | def sync_supply_point(location, is_deletion=False, update_fields=None): function remove_data (line 300) | def remove_data(sender, xform, *args, **kwargs): function reprocess_form (line 306) | def reprocess_form(sender, xform, *args, **kwargs): FILE: corehq/apps/commtrack/processing.py class StockProcessingResult (line 22) | class StockProcessingResult(object): method __init__ (line 28) | def __init__(self, xform, relevant_cases=None, stock_report_helpers=No... method populate_models (line 38) | def populate_models(self): method commit (line 65) | def commit(self): method finalize (line 72) | def finalize(self): function compute_ledger_values (line 82) | def compute_ledger_values(lazy_original_balance, report_type, quantity): function process_stock (line 111) | def process_stock(xforms, case_db=None): function mark_cases_changed (line 152) | def mark_cases_changed(case_action_intents, case_db): FILE: corehq/apps/commtrack/resources/v0_1.py class ProductResource (line 17) | class ProductResource(HqBaseResource): method obj_get (line 30) | def obj_get(self, request, **kwargs): method obj_get_list (line 33) | def obj_get_list(self, request, **kwargs): class Meta (line 36) | class Meta(CustomResourceMeta): FILE: corehq/apps/commtrack/sms.py class SMSError (line 34) | class SMSError(RuntimeError): function handle (line 38) | def handle(verified_contact, text, msg): function process (line 61) | def process(domain, data): class StockReportParser (line 72) | class StockReportParser(object): method __init__ (line 75) | def __init__(self, domain, verified_contact, location=None): method parse (line 96) | def parse(self, text): method verify_location_registration (line 128) | def verify_location_registration(self): method single_action_transactions (line 135) | def single_action_transactions(self, action, args): method get_supply_point_and_location (line 183) | def get_supply_point_and_location(self, loc_code): method product_from_code (line 190) | def product_from_code(self, prod_code): method looks_like_prod_code (line 198) | def looks_like_prod_code(self, code): method unpack_transactions (line 205) | def unpack_transactions(self, txs): function verify_transaction_cases (line 219) | def verify_transaction_cases(transactions): function process_transactions (line 229) | def process_transactions(E, transactions): function process_balances (line 245) | def process_balances(E, balances): function process_transfers (line 262) | def process_transfers(E, transfers): function convert_transactions_to_blocks (line 286) | def convert_transactions_to_blocks(E, transactions): function get_device_id (line 305) | def get_device_id(data): function verify_transaction_actions (line 312) | def verify_transaction_actions(transactions): function to_instance (line 322) | def to_instance(data): function truncate (line 351) | def truncate(text, maxlen, ellipsis='...'): function send_confirmation (line 358) | def send_confirmation(v, data): FILE: corehq/apps/commtrack/static/commtrack/js/sms.js function commtrackSettingsViewModel (line 6) | function commtrackSettingsViewModel(otherSmsCodes) { function actionModel (line 103) | function actionModel(data) { function initCommtrackSettingsView (line 147) | function initCommtrackSettingsView($element, settings, otherSmsCodes) { FILE: corehq/apps/commtrack/tests/data/balances.py function balance_ota_block (line 9) | def balance_ota_block(sp, section_id, soh_reports, datestring): function submission_wrap (line 22) | def submission_wrap(instance_id, products, user, sp_id, sp2_id, insides,... function products_xml (line 57) | def products_xml(product_amount_tuples): function _enumerated_products_xml (line 65) | def _enumerated_products_xml(product_amount_tuples, section_id='stock'): function balance_submission (line 75) | def balance_submission(product_amounts, section_id='stock'): function balance_enumerated (line 83) | def balance_enumerated(product_amounts, section_id='stock'): function transfer_dest_only (line 91) | def transfer_dest_only(product_amounts): function transfer_source_only (line 101) | def transfer_source_only(product_amounts): function transfer_both (line 111) | def transfer_both(product_amounts): function receipts_enumerated (line 120) | def receipts_enumerated(product_amounts): function balance_first (line 130) | def balance_first(balance_amounts, transfer_amounts): function transfer_first (line 134) | def transfer_first(transfer_amounts, balance_amounts): FILE: corehq/apps/commtrack/tests/test_dbaccessors.py class SupplyPointDBAccessorsTest (line 9) | class SupplyPointDBAccessorsTest(TestCase): method setUp (line 11) | def setUp(self): method tearDown (line 23) | def tearDown(self): method test_get_supply_point_ids_in_domain_by_location (line 30) | def test_get_supply_point_ids_in_domain_by_location(self): method test_get_supply_point_by_location_id (line 38) | def test_get_supply_point_by_location_id(self): FILE: corehq/apps/commtrack/tests/test_fixture.py class FixtureTest (line 29) | class FixtureTest(TestCase, TestXmlMixin): method setUpClass (line 33) | def setUpClass(cls): method tearDownClass (line 41) | def tearDownClass(cls): method _random_string (line 45) | def _random_string(self, length): method _initialize_product_names (line 49) | def _initialize_product_names(self, count): method generate_product_xml (line 57) | def generate_product_xml(self, user, randomize_data=True): method generate_product_fixture_xml (line 125) | def generate_product_fixture_xml(self, user, randomize_data=True): method test_product_fixture (line 137) | def test_product_fixture(self): method test_selective_product_sync (line 164) | def test_selective_product_sync(self): method generate_program_xml (line 214) | def generate_program_xml(self, program_list, user): method _get_latest_synclog (line 239) | def _get_latest_synclog(self): method test_program_fixture (line 242) | def test_program_fixture(self): method test_selective_program_sync (line 271) | def test_selective_program_sync(self): class MockUser (line 326) | class MockUser: class SimpleFixtureGeneratorTests (line 330) | class SimpleFixtureGeneratorTests(TestCase): method test_product_decimal_value (line 332) | def test_product_decimal_value(self): method test_sqlproduct_decimal_value (line 366) | def test_sqlproduct_decimal_value(self): method get_expected_xml (line 379) | def get_expected_xml(): function get_sql_products (line 404) | def get_sql_products(): function test_doctests (line 436) | def test_doctests(): FILE: corehq/apps/commtrack/tests/test_locations.py function _count_locations (line 14) | def _count_locations(domain): function _count_root_locations (line 18) | def _count_root_locations(domain): class LocationsTest (line 22) | class LocationsTest(TestCase): method setUpClass (line 26) | def setUpClass(cls): method tearDownClass (line 33) | def tearDownClass(cls): method setUp (line 38) | def setUp(self): method tearDown (line 45) | def tearDown(self): method test_archive (line 50) | def test_archive(self): method test_archive_flips_sp_cases (line 86) | def test_archive_flips_sp_cases(self): method test_full_delete (line 99) | def test_full_delete(self): method test_delete_closes_sp_cases (line 128) | def test_delete_closes_sp_cases(self): FILE: corehq/apps/commtrack/tests/test_products.py class ProductsTest (line 11) | class ProductsTest(TestCase): method setUpClass (line 15) | def setUpClass(cls): method tearDownClass (line 20) | def tearDownClass(cls): method test_archive (line 24) | def test_archive(self): method test_sync (line 60) | def test_sync(self): FILE: corehq/apps/commtrack/tests/test_programs.py class ProgramsTest (line 15) | class ProgramsTest(TestCase): method test_programs (line 16) | def test_programs(self): FILE: corehq/apps/commtrack/tests/test_rebuild.py class RebuildStockStateTest (line 36) | class RebuildStockStateTest(TestCase): method setUp (line 38) | def setUp(self): method _assert_stats (line 54) | def _assert_stats(self, epxected_tx_count, expected_stock_state_balanc... method _submit_ledgers (line 62) | def _submit_ledgers(self, ledger_blocks): method test_simple (line 66) | def test_simple(self): method test_case_actions (line 74) | def test_case_actions(self): method test_edit_submissions_simple (line 85) | def test_edit_submissions_simple(self): FILE: corehq/apps/commtrack/tests/test_settings.py class CommTrackSettingsTest (line 17) | class CommTrackSettingsTest(TestCase): method setUp (line 20) | def setUp(self): method tearDown (line 24) | def tearDown(self): method testOTASettings (line 28) | def testOTASettings(self): class Typish (line 58) | class Typish: FILE: corehq/apps/commtrack/tests/test_sms_reporting.py class SMSTests (line 17) | class SMSTests(TestCase): method setUpClass (line 21) | def setUpClass(cls): method tearDownClass (line 33) | def tearDownClass(cls): method tearDown (line 40) | def tearDown(self): method check_stock (line 44) | def check_stock(self, code, amount, case_id=None, section_id='stock'): method testStockReportRoaming (line 58) | def testStockReportRoaming(self): method testStockReportFixed (line 82) | def testStockReportFixed(self): method check_transaction_amounts (line 101) | def check_transaction_amounts(self, ledger_transactions, amounts): method check_form_type (line 110) | def check_form_type(self, is_consumption): method testReceipt (line 120) | def testReceipt(self): method testLosses (line 153) | def testLosses(self): method testConsumption (line 186) | def testConsumption(self): function iter_commtrack_forms (line 220) | def iter_commtrack_forms(domain_name): function _get_location_from_form (line 226) | def _get_location_from_form(form): function _get_location_from_sp (line 230) | def _get_location_from_sp(sp): FILE: corehq/apps/commtrack/tests/test_stock_report.py function _get_name_for_domain (line 26) | def _get_name_for_domain(): class StockReportDomainTest (line 33) | class StockReportDomainTest(TestCase): method create_report (line 34) | def create_report(self, transactions=None, tag=None, date=None): method _create_models_for_stock_report_helper (line 44) | def _create_models_for_stock_report_helper(self, form, stock_report_he... method setUpClass (line 51) | def setUpClass(cls): method tearDownClass (line 62) | def tearDownClass(cls): method setUp (line 66) | def setUp(self): method tearDown (line 93) | def tearDown(self): method test_get_case_ledger_state (line 98) | def test_get_case_ledger_state(self): method _validate_case_data (line 105) | def _validate_case_data(self, data, expected): method _test_get_current_ledger_transactions (line 110) | def _test_get_current_ledger_transactions(self, tester_fn): method test_get_case_ledger_state_1 (line 143) | def test_get_case_ledger_state_1(self): method test_get_current_ledger_state (line 153) | def test_get_current_ledger_state(self): FILE: corehq/apps/commtrack/tests/test_supply_points.py class SupplyPointTest (line 13) | class SupplyPointTest(TestCase): method setUp (line 15) | def setUp(self): method tearDown (line 20) | def tearDown(self): method testMakeSupplyPoint (line 25) | def testMakeSupplyPoint(self): method testMakeOwnedSupplyPoint (line 40) | def testMakeOwnedSupplyPoint(self): FILE: corehq/apps/commtrack/tests/test_utils.py class CommtrackUtilsTest (line 10) | class CommtrackUtilsTest(TestCase): method test_unicode_slug (line 12) | def test_unicode_slug(self): method test_make_domain_commtrack (line 23) | def test_make_domain_commtrack(self): class GenerateCodeTest (line 89) | class GenerateCodeTest(unittest.TestCase): method test_no_change_needed (line 91) | def test_no_change_needed(self): method test_sluggifies (line 100) | def test_sluggifies(self): method test_strips_spaces (line 109) | def test_strips_spaces(self): method test_adds_1 (line 118) | def test_adds_1(self): method test_increments_number (line 127) | def test_increments_number(self): method test_doesnt_strip_numbers (line 136) | def test_doesnt_strip_numbers(self): method test_doesnt_die_on_only_numbers (line 145) | def test_doesnt_die_on_only_numbers(self): method test_empty_values (line 154) | def test_empty_values(self): FILE: corehq/apps/commtrack/tests/test_xml.py class XMLTest (line 66) | class XMLTest(TestCase): method setUp (line 69) | def setUp(self): method delete_ledger_transactions (line 93) | def delete_ledger_transactions(self, form_id): method delete_ledger_values (line 96) | def delete_ledger_values(self, case_id): method tearDown (line 99) | def tearDown(self): class CommTrackOTATest (line 105) | class CommTrackOTATest(XMLTest): method test_ota_blank_balances (line 107) | def test_ota_blank_balances(self): method test_ota_basic (line 110) | def test_ota_basic(self): method test_ota_multiple_stocks (line 128) | def test_ota_multiple_stocks(self): method test_ota_consumption (line 154) | def test_ota_consumption(self): method test_force_consumption (line 197) | def test_force_consumption(self): method _save_settings_and_clear_cache (line 229) | def _save_settings_and_clear_cache(self): class CommTrackSubmissionTest (line 237) | class CommTrackSubmissionTest(XMLTest): method setUpClass (line 240) | def setUpClass(cls): method setUp (line 244) | def setUp(self): method submit_xml_form (line 252) | def submit_xml_form(self, xml_method, timestamp=None, date_formatter=j... method check_product_stock (line 275) | def check_product_stock(self, case, product_id, expected_soh, expected... method _get_all_ledger_transactions (line 291) | def _get_all_ledger_transactions(self, q_): class CommTrackBalanceTransferTest (line 295) | class CommTrackBalanceTransferTest(CommTrackSubmissionTest): method test_balance_submit (line 297) | def test_balance_submit(self): method test_balance_submit_date (line 303) | def test_balance_submit_date(self): method test_balance_enumerated (line 309) | def test_balance_enumerated(self): method test_balance_consumption (line 315) | def test_balance_consumption(self): method test_balance_consumption_with_date (line 330) | def test_balance_consumption_with_date(self): method test_archived_product_submissions (line 340) | def test_archived_product_submissions(self): method test_balance_submit_multiple_stocks (line 358) | def test_balance_submit_multiple_stocks(self): method test_transfer_dest_only (line 371) | def test_transfer_dest_only(self): method test_transfer_source_only (line 377) | def test_transfer_source_only(self): method test_transfer_both (line 387) | def test_transfer_both(self): method test_transfer_with_date (line 398) | def test_transfer_with_date(self): method test_transfer_enumerated (line 404) | def test_transfer_enumerated(self): method test_balance_first_doc_order (line 414) | def test_balance_first_doc_order(self): method test_transfer_first_doc_order (line 422) | def test_transfer_first_doc_order(self): method test_blank_quantities (line 437) | def test_blank_quantities(self): method test_blank_product_id (line 454) | def test_blank_product_id(self): method test_blank_case_id_in_balance (line 462) | def test_blank_case_id_in_balance(self): method test_blank_case_id_in_transfer (line 476) | def test_blank_case_id_in_transfer(self): class BugSubmissionsTest (line 489) | class BugSubmissionsTest(CommTrackSubmissionTest): method test_device_report_submissions_ignored (line 491) | def test_device_report_submissions_ignored(self): method test_xform_id_added_to_case_xform_list (line 521) | def test_xform_id_added_to_case_xform_list(self): method test_xform_id_added_to_case_xform_list_only_once (line 532) | def test_xform_id_added_to_case_xform_list_only_once(self): method test_archived_form_gets_removed_from_case_xform_ids (line 551) | def test_archived_form_gets_removed_from_case_xform_ids(self): class CommTrackSyncTest (line 568) | class CommTrackSyncTest(CommTrackSubmissionTest): method setUp (line 570) | def setUp(self): method testStockSyncToken (line 591) | def testStockSyncToken(self): class CommTrackArchiveSubmissionTest (line 607) | class CommTrackArchiveSubmissionTest(CommTrackSubmissionTest): method setUp (line 609) | def setUp(self): method test_archive_last_form (line 614) | def test_archive_last_form(self): method test_archive_only_form (line 661) | def test_archive_only_form(self): function _report_soh (line 692) | def _report_soh(soh_reports, case_id, domain): function _get_ota_balance_blocks (line 709) | def _get_ota_balance_blocks(project, user): FILE: corehq/apps/commtrack/tests/util.py function bootstrap_domain (line 50) | def bootstrap_domain(domain_name): function bootstrap_user (line 59) | def bootstrap_user(setup, username=TEST_USER, domain=TEST_DOMAIN, function bootstrap_location_types (line 86) | def bootstrap_location_types(domain): function make_product (line 106) | def make_product(domain, name, code, program_id): function bootstrap_products (line 116) | def bootstrap_products(domain): function make_loc (line 123) | def make_loc(code, name=None, domain=TEST_DOMAIN, type=TEST_LOCATION_TYP... function get_ota_balance_xml (line 134) | def get_ota_balance_xml(project, user): function extract_balance_xml (line 139) | def extract_balance_xml(xml_payload): function get_single_balance_block (line 146) | def get_single_balance_block(case_id, product_id, quantity, date_string=... function get_single_transfer_block (line 157) | def get_single_transfer_block(src_id, dest_id, product_id, quantity, dat... function submit_stock_update (line 171) | def submit_stock_update(user, site_code, product_code, balance): FILE: corehq/apps/commtrack/util.py function all_sms_codes (line 29) | def all_sms_codes(domain): function get_supply_point_and_location (line 44) | def get_supply_point_and_location(domain, site_code): function make_program (line 54) | def make_program(domain, name, code, default=False): function get_or_create_default_program (line 64) | def get_or_create_default_program(domain): function _create_commtrack_config_if_needed (line 78) | def _create_commtrack_config_if_needed(domain): function _enable_commtrack_previews (line 120) | def _enable_commtrack_previews(domain): function make_domain_commtrack (line 128) | def make_domain_commtrack(domain_object): function due_date_weekly (line 137) | def due_date_weekly(dow, past_period=0): # 0 == sunday function due_date_monthly (line 148) | def due_date_monthly(day, from_end=False, past_period=0): function location_map_case_id (line 169) | def location_map_case_id(user): function get_commtrack_location_id (line 175) | def get_commtrack_location_id(user, domain): function unicode_slug (line 187) | def unicode_slug(text): function encode_if_needed (line 191) | def encode_if_needed(val): function _fetch_ending_numbers (line 195) | def _fetch_ending_numbers(s): function generate_code (line 204) | def generate_code(object_name, existing_codes): FILE: corehq/apps/commtrack/views.py function default (line 27) | def default(request, domain): function default_commtrack_url (line 33) | def default_commtrack_url(domain): class BaseCommTrackManageView (line 38) | class BaseCommTrackManageView(BaseDomainView): method section_url (line 42) | def section_url(self): method get (line 45) | def get(self, *args, **kwargs): method dispatch (line 51) | def dispatch(self, request, *args, **kwargs): class CommTrackSettingsView (line 56) | class CommTrackSettingsView(BaseCommTrackManageView): method commtrack_settings (line 63) | def commtrack_settings(self): method page_context (line 67) | def page_context(self): method commtrack_settings_form (line 74) | def commtrack_settings_form(self): method set_ota_restore_config (line 87) | def set_ota_restore_config(self): method post (line 110) | def post(self, request, *args, **kwargs): class DefaultConsumptionView (line 156) | class DefaultConsumptionView(BaseCommTrackManageView): method consumption_form (line 163) | def consumption_form(self): method page_context (line 169) | def page_context(self): method post (line 174) | def post(self, request, *args, **kwargs): class SMSSettingsView (line 185) | class SMSSettingsView(BaseCommTrackManageView): method page_context (line 191) | def page_context(self): method settings_context (line 198) | def settings_context(self): method _get_action_info (line 204) | def _get_action_info(self, action): method get_other_sms_codes (line 212) | def get_other_sms_codes(self): method post (line 217) | def post(self, request, *args, **kwargs): FILE: corehq/apps/commtrack/xmlutil.py function XML (line 6) | def XML(ns=const.COMMTRACK_REPORT_XMLNS, prefix=None): FILE: corehq/apps/consumption/migrations/0001_initial.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/consumption/migrations/0002_populate_sqldefaultconsumption.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/consumption/migrations/0003_remove_sqldefaultconsumption_couch_id.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/consumption/migrations/0004_rename_sqldefaultconsumption.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/consumption/models.py class DefaultConsumption (line 9) | class DefaultConsumption(models.Model): method get_domain_default (line 23) | def get_domain_default(cls, domain): method get_product_default (line 27) | def get_product_default(cls, domain, product_id): method get_supply_point_default (line 31) | def get_supply_point_default(cls, domain, product_id, supply_point_id): FILE: corehq/apps/consumption/shortcuts.py function get_default_monthly_consumption (line 11) | def get_default_monthly_consumption(domain, product_id, location_type, c... function set_default_monthly_consumption_for_domain (line 53) | def set_default_monthly_consumption_for_domain(domain, amount): function set_default_consumption_for_product (line 58) | def set_default_consumption_for_product(domain, product_id, amount): function _update_or_create_default (line 63) | def _update_or_create_default(domain, amount, default, type, **kwargs): function build_consumption_dict (line 76) | def build_consumption_dict(domain): function _hash_key (line 87) | def _hash_key(default_consumption): function get_loaded_default_monthly_consumption (line 96) | def get_loaded_default_monthly_consumption(consumption_dict, domain, pro... FILE: corehq/apps/consumption/tests.py class ConsumptionTestBase (line 25) | class ConsumptionTestBase(TestCase): method setUp (line 27) | def setUp(self): method tearDown (line 31) | def tearDown(self): class GetDefaultConsumptionTestCase (line 36) | class GetDefaultConsumptionTestCase(ConsumptionTestBase): method get_default_consumption (line 38) | def get_default_consumption(self, domain, product_id, location_type, c... method testGetNoDefault (line 46) | def testGetNoDefault(self): method testGetDomainOnly (line 49) | def testGetDomainOnly(self): method testGetForProduct (line 54) | def testGetForProduct(self): method testGetForType (line 65) | def testGetForType(self): method testGetForId (line 84) | def testGetForId(self): class ConsumptionShortcutsTestCase (line 118) | class ConsumptionShortcutsTestCase(ConsumptionTestBase): method testSetForDomain (line 120) | def testSetForDomain(self): method testSetForProduct (line 130) | def testSetForProduct(self): function _create_domain_consumption (line 141) | def _create_domain_consumption(amt, domain=domain): function _create_product_consumption (line 145) | def _create_product_consumption(amt, domain=domain, product_id=product_id): function _create_type_consumption (line 154) | def _create_type_consumption(amt, domain=domain, product_id=product_id, ... function _create_id_consumption (line 164) | def _create_id_consumption(amt, domain=domain, product_id=product_id, su... function _count_consumptions (line 174) | def _count_consumptions(): function _delete_all_consumptions (line 178) | def _delete_all_consumptions(): FILE: corehq/apps/custom_data_fields/edit_entity.py function with_prefix (line 29) | def with_prefix(string, prefix): function without_prefix (line 37) | def without_prefix(string, prefix): function add_prefix (line 42) | def add_prefix(field_dict, prefix): function get_prefixed (line 52) | def get_prefixed(field_dict, prefix): class CustomDataEditor (line 65) | class CustomDataEditor(object): method __init__ (line 70) | def __init__(self, field_view, domain, existing_custom_data=None, post... method model (line 83) | def model(self): method is_valid (line 89) | def is_valid(self): method errors (line 93) | def errors(self): method get_data_to_save (line 97) | def get_data_to_save(self): method _make_field (line 111) | def _make_field(self, field): method make_fieldsets (line 142) | def make_fieldsets(self, form_fields, is_post, field_name_includes_pre... method fields (line 194) | def fields(self): method init_form (line 201) | def init_form(self, post_dict=None): method uncategorized_form (line 297) | def uncategorized_form(self): FILE: corehq/apps/custom_data_fields/edit_model.py class CustomDataFieldsForm (line 32) | class CustomDataFieldsForm(forms.Form): method verify_no_duplicates (line 42) | def verify_no_duplicates(cls, data_fields): method verify_no_reserved_words (line 53) | def verify_no_reserved_words(cls, data_fields): method verify_no_duplicate_profiles (line 64) | def verify_no_duplicate_profiles(cls, profiles): method verify_no_profiles_missing_fields (line 74) | def verify_no_profiles_missing_fields(cls, data_fields, profiles): method verify_no_empty_profile_fields (line 87) | def verify_no_empty_profile_fields(cls, data_fields, profiles): method verify_profiles_validate (line 101) | def verify_profiles_validate(cls, data_fields, profiles): method clean_data_fields (line 123) | def clean_data_fields(self): method clean_profiles (line 143) | def clean_profiles(self): method clean_require_profile (line 160) | def clean_require_profile(self): method clean (line 168) | def clean(self): class XmlSlugField (line 188) | class XmlSlugField(forms.SlugField): class CustomDataFieldForm (line 196) | class CustomDataFieldForm(forms.Form): method __init__ (line 219) | def __init__(self, raw, *args, **kwargs): method clean_choices (line 226) | def clean_choices(self): method clean_required_for (line 229) | def clean_required_for(self): method clean_regex (line 232) | def clean_regex(self): class CustomDataFieldsProfileForm (line 242) | class CustomDataFieldsProfileForm(forms.Form): method clean_fields (line 259) | def clean_fields(self): class CustomDataModelMixin (line 266) | class CustomDataModelMixin(object): method dispatch (line 282) | def dispatch(self, request, *args, **kwargs): method get_validator (line 286) | def get_validator(cls, domain): method page_name (line 291) | def page_name(cls): method show_profiles (line 295) | def show_profiles(self): method get_definition (line 299) | def get_definition(self): method get_profile_required_for_user_type (line 302) | def get_profile_required_for_user_type(self): method update_profile_required (line 306) | def update_profile_required(self, profile_required_for_user_type): method get_profiles (line 314) | def get_profiles(self): method get_definition_for_domain (line 319) | def get_definition_for_domain(cls, domain): method is_field_required (line 323) | def is_field_required(cls, field): method validate_incoming_fields (line 327) | def validate_incoming_fields(cls, existing_fields, new_fields, can_edi... method save_custom_fields (line 355) | def save_custom_fields(self): method save_profiles (line 373) | def save_profiles(self): method delete_eligible_profiles (line 394) | def delete_eligible_profiles(self, all_profiles, updated_profile_list): method get_field (line 414) | def get_field(self, field): method page_context (line 435) | def page_context(self): method form (line 469) | def form(self): method is_managed_by_upstream_domain (line 484) | def is_managed_by_upstream_domain(self): method can_edit_linked_data (line 488) | def can_edit_linked_data(self): method post (line 491) | def post(self, request, *args, **kwargs): method save_data (line 495) | def save_data(self, request): method update_existing_models (line 525) | def update_existing_models(self): FILE: corehq/apps/custom_data_fields/migrations/0001_initial.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/custom_data_fields/migrations/0002_populate_customdatafieldsdefinition.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/custom_data_fields/migrations/0003_remove_sqlcustomdatafieldsdefinition_couch_id.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/custom_data_fields/migrations/0004_rename_tables.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/custom_data_fields/migrations/0005_customdatafieldsprofile.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/custom_data_fields/migrations/0006_auto_20200924_1753.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/custom_data_fields/migrations/0007_custom_data_fields_erm_support.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/custom_data_fields/migrations/0008_custom_data_fields_upstream_ids.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/custom_data_fields/migrations/0009_field_required_for.py function update_user_fields_required_for (line 13) | def update_user_fields_required_for(apps, schema_editor): class Migration (line 29) | class Migration(migrations.Migration): FILE: corehq/apps/custom_data_fields/migrations/0010_customdatafieldsdefinition_profile_required_for_user_type.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/custom_data_fields/models.py function validate_reserved_words (line 28) | def validate_reserved_words(slug): function is_system_key (line 36) | def is_system_key(slug): class Field (line 44) | class Field(models.Model): class Meta (line 58) | class Meta: method validate_choices (line 61) | def validate_choices(self, value): method validate_regex (line 72) | def validate_regex(self, value): method validate_required (line 77) | def validate_required(self, value, field_view): method to_dict (line 85) | def to_dict(self): method __repr__ (line 89) | def __repr__(self): class CustomDataFieldsDefinition (line 93) | class CustomDataFieldsDefinition(models.Model): class Meta (line 98) | class Meta: method get (line 102) | def get(cls, domain, field_type): method get_or_create (line 106) | def get_or_create(cls, domain, field_type): method get_profile_required_for_user_type_list (line 116) | def get_profile_required_for_user_type_list(cls, domain, field_type): method get_profiles_by_name (line 124) | def get_profiles_by_name(cls, domain, field_type): class FieldFilterConfig (line 135) | class FieldFilterConfig: method __init__ (line 136) | def __init__(self, required_only=False, is_required_check_func=None): method get_fields (line 141) | def get_fields(self, field_filter_config: FieldFilterConfig = None, in... method set_fields (line 154) | def set_fields(self, fields): method get_profiles (line 159) | def get_profiles(self): method get_validator (line 162) | def get_validator(self, field_view): method get_model_and_uncategorized (line 181) | def get_model_and_uncategorized(self, data_dict): class CustomDataFieldsProfile (line 203) | class CustomDataFieldsProfile(models.Model): method has_users_assigned (line 210) | def has_users_assigned(self): method user_ids_assigned (line 213) | def user_ids_assigned(self): method to_json (line 216) | def to_json(self): FILE: corehq/apps/custom_data_fields/static/custom_data_fields/js/custom_data_fields.js function Choice (line 10) | function Choice(choice) { function Field (line 16) | function Field(options, parent) { function Profile (line 121) | function Profile(options, parent) { function CustomDataFieldsModel (line 173) | function CustomDataFieldsModel(options) { FILE: corehq/apps/custom_data_fields/tasks.py function refresh_es_for_profile_users (line 14) | def refresh_es_for_profile_users(domain, profile_id): FILE: corehq/apps/custom_data_fields/tests/test_edit_model.py class FieldsView (line 21) | class FieldsView(CustomDataModelMixin, View): method __init__ (line 28) | def __init__(self, domain, fields=None, profiles=None, has_edit_permis... method form (line 35) | def form(self): method can_edit_linked_data (line 45) | def can_edit_linked_data(self): method get (line 48) | def get(self, request, *args, **kwargs): function fields_are_equal (line 52) | def fields_are_equal(left, right): class FieldsViewMixin (line 56) | class FieldsViewMixin: method create_field (line 58) | def create_field(self, slug='test_field', label='Test Field', is_requi... class TestEditModel (line 74) | class TestEditModel(FieldsViewMixin, TestCase): method test_saves_custom_fields (line 77) | def test_saves_custom_fields(self): method test_overwrites_custom_fields (line 87) | def test_overwrites_custom_fields(self): method test_fails_to_overwrite_without_proper_role (line 99) | def test_fails_to_overwrite_without_proper_role(self): method _create_initial_fields (line 113) | def _create_initial_fields(self, fields): method _create_request (line 117) | def _create_request(self): class TestValidateIncomingFields (line 123) | class TestValidateIncomingFields(FieldsViewMixin, SimpleTestCase): method test_no_conflicts_produces_no_errors (line 124) | def test_no_conflicts_produces_no_errors(self): method test_new_entry_produces_no_errors (line 131) | def test_new_entry_produces_no_errors(self): method test_deletion_produces_no_errors (line 138) | def test_deletion_produces_no_errors(self): method test_sync_turned_on_produces_error (line 145) | def test_sync_turned_on_produces_error(self): method test_sync_turned_off_produces_error (line 153) | def test_sync_turned_off_produces_error(self): method test_can_update_synced_data_with_permission (line 161) | def test_can_update_synced_data_with_permission(self): method test_updating_synced_data_without_permission_produces_error (line 168) | def test_updating_synced_data_without_permission_produces_error(self): method test_deleting_synced_data_without_permission_produces_error (line 176) | def test_deleting_synced_data_without_permission_produces_error(self): method test_cannot_create_new_synced_data (line 184) | def test_cannot_create_new_synced_data(self): method test_synced_slugs_can_change (line 192) | def test_synced_slugs_can_change(self): method test_duplicate_upstream_ids_cause_error (line 199) | def test_duplicate_upstream_ids_cause_error(self): class TestCustomDataModelValidation (line 211) | class TestCustomDataModelValidation(FieldsViewMixin, SimpleTestCase): method test_error_in_data_fiels_does_not_cause_error_in_profiles (line 213) | def test_error_in_data_fiels_does_not_cause_error_in_profiles(self): class TestCustomDataFieldsForm (line 228) | class TestCustomDataFieldsForm(FieldsViewMixin, SimpleTestCase): method test_valid (line 229) | def test_valid(self): method test_can_assign_empty_profile_values_to_optional_fields (line 236) | def test_can_assign_empty_profile_values_to_optional_fields(self): method test_cannot_assign_empty_profile_values_to_required_fields (line 243) | def test_cannot_assign_empty_profile_values_to_required_fields(self): method _create_form (line 250) | def _create_form(self, fields, profiles): class TestProfileRequiredForUserType (line 259) | class TestProfileRequiredForUserType(FieldsViewMixin, TestCase): method test_req_for_defaults_to_none (line 263) | def test_req_for_defaults_to_none(self): method test_update_profile_required (line 271) | def test_update_profile_required(self): class TestCustomDataFieldForm (line 294) | class TestCustomDataFieldForm(SimpleTestCase): method test_required_for_and_choices_field_serialization (line 295) | def test_required_for_and_choices_field_serialization(self): FILE: corehq/apps/custom_data_fields/tests/test_fields.py class TestCustomDataFieldsFields (line 13) | class TestCustomDataFieldsFields(SimpleTestCase): method test_validate_required (line 14) | def test_validate_required(self): method test_web_user_required_field (line 34) | def test_web_user_required_field(self): method test_commcare_user_required_field (line 44) | def test_commcare_user_required_field(self): method test_commcare_and_web_user_required_field (line 54) | def test_commcare_and_web_user_required_field(self): method test_location_required_field (line 64) | def test_location_required_field(self): method test_validate_choices (line 73) | def test_validate_choices(self): method test_validate_regex (line 89) | def test_validate_regex(self): FILE: corehq/apps/custom_data_fields/tests/test_form.py class FieldsViewMixin (line 15) | class FieldsViewMixin: method create_field (line 17) | def create_field(self, slug='test_field', label='Test Field', is_requi... class TestCustomDataEditorFormFields (line 37) | class TestCustomDataEditorFormFields(SimpleTestCase, FieldsViewMixin): method setUp (line 39) | def setUp(self, mock_init_form): method test_web_user_field_required_for_web_user (line 49) | def test_web_user_field_required_for_web_user(self): method test_commcare_user_field_not_required_for_web_user (line 53) | def test_commcare_user_field_not_required_for_web_user(self): method test_web_user_field_not_required_for_commcare_user (line 57) | def test_web_user_field_not_required_for_commcare_user(self): method test_commcare_user_field_required_for_commcare_user (line 61) | def test_commcare_user_field_required_for_commcare_user(self): method test_location_field_is_always_required (line 65) | def test_location_field_is_always_required(self): FILE: corehq/apps/custom_data_fields/tests/test_models.py class FieldTests (line 5) | class FieldTests(SimpleTestCase): method test_to_dict_serializes_all_fields (line 6) | def test_to_dict_serializes_all_fields(self): class CustomDataFieldsDefinitionTests (line 30) | class CustomDataFieldsDefinitionTests(TestCase): method setUp (line 31) | def setUp(self): method test_get_all_fields (line 58) | def test_get_all_fields(self): method test_get_required_fields (line 61) | def test_get_required_fields(self): method test_get_non_system_fields (line 68) | def test_get_non_system_fields(self): method test_get_required_non_system_fields (line 73) | def test_get_required_non_system_fields(self): method test_get_fields_with_custom_required_check (line 81) | def test_get_fields_with_custom_required_check(self): FILE: corehq/apps/custom_data_fields/tests/test_profiles.py class TestCustomDataFieldsProfile (line 18) | class TestCustomDataFieldsProfile(TestCase): method setUpClass (line 20) | def setUpClass(cls): method tearDownClass (line 52) | def tearDownClass(cls): method setUp (line 57) | def setUp(self): method test_to_json (line 70) | def test_to_json(self): method test_get_profiles (line 82) | def test_get_profiles(self): method test_users_assigned (line 104) | def test_users_assigned(self): method test_profile_wont_delete_if_mobile_user_is_active (line 116) | def test_profile_wont_delete_if_mobile_user_is_active(self): method test_profile_wont_delete_if_web_user_is_in_domain (line 133) | def test_profile_wont_delete_if_web_user_is_in_domain(self): FILE: corehq/apps/custom_data_fields/tests/test_verification.py class TestCustomDataFieldsVerification (line 6) | class TestCustomDataFieldsVerification(SimpleTestCase): method setUpClass (line 8) | def setUpClass(cls): method test_no_duplicates (line 28) | def test_no_duplicates(self): method test_no_duplicate_profiles (line 38) | def test_no_duplicate_profiles(self): method test_no_reserved_words (line 48) | def test_no_reserved_words(self): method test_no_profiles_missing_fields (line 58) | def test_no_profiles_missing_fields(self): method test_profiles_validate (line 69) | def test_profiles_validate(self): FILE: corehq/apps/dashboard/models.py class Tile (line 12) | class Tile(object): method __init__ (line 14) | def __init__(self, request, title, slug, icon, paginator_class=None, method is_visible (line 44) | def is_visible(self): method paginator (line 61) | def paginator(self): method get_url (line 64) | def get_url(self, request): method _default_url_generator (line 70) | def _default_url_generator(urlname, request): method _default_visibility_check (line 74) | def _default_visibility_check(request): class TilePaginator (line 78) | class TilePaginator(object): method __init__ (line 83) | def __init__(self, request): method _fmt_item (line 87) | def _fmt_item(name, method total (line 111) | def total(self): method paginated_items (line 117) | def paginated_items(self, current_page, items_per_page): method _paginated_items (line 124) | def _paginated_items(self, items_per_page, skip): class ReportsPaginator (line 129) | class ReportsPaginator(TilePaginator): method total (line 132) | def total(self): method _paginated_items (line 143) | def _paginated_items(self, items_per_page, skip): class AppsPaginator (line 160) | class AppsPaginator(TilePaginator): method total (line 163) | def total(self): method applications (line 168) | def applications(self): method _paginated_items (line 173) | def _paginated_items(self, items_per_page, skip): class DataPaginator (line 193) | class DataPaginator(TilePaginator): method __init__ (line 194) | def __init__(self, *args, **kwargs): method total (line 199) | def total(self): method form_exports (line 204) | def form_exports(self): method case_exports (line 212) | def case_exports(self): method _paginated_items (line 218) | def _paginated_items(self, items_per_page, skip): FILE: corehq/apps/dashboard/views.py function _get_tile (line 48) | def _get_tile(request, slug): function dashboard_tile (line 59) | def dashboard_tile(request, domain, slug): function dashboard_tile_total (line 69) | def dashboard_tile_total(request, domain, slug): class DomainDashboardView (line 77) | class DomainDashboardView(LoginAndDomainMixin, BillingModalsMixin, BaseP... method main_context (line 83) | def main_context(self): method page_url (line 91) | def page_url(self): method page_context (line 95) | def page_context(self): function _get_default_tiles (line 123) | def _get_default_tiles(request): function dismiss_self_signup (line 290) | def dismiss_self_signup(request, domain): FILE: corehq/apps/data_analytics/admin.py class MALTRowAdmin (line 8) | class MALTRowAdmin(admin.ModelAdmin): FILE: corehq/apps/data_analytics/daily_calcs.py function _calc_web_users (line 50) | def _calc_web_users(ctx): function _calc_active_mobile_workers (line 54) | def _calc_active_mobile_workers(ctx): function _calc_active_mobile_workers_365 (line 58) | def _calc_active_mobile_workers_365(ctx): function _calc_mobile_workers (line 62) | def _calc_mobile_workers(ctx): function _calc_active_cases (line 66) | def _calc_active_cases(ctx): function _calc_users_with_submission (line 70) | def _calc_users_with_submission(ctx): function _calc_inactive_cases (line 81) | def _calc_inactive_cases(ctx): function _calc_cases_30d (line 85) | def _calc_cases_30d(ctx): function _calc_cases_60d (line 89) | def _calc_cases_60d(ctx): function _calc_cases_90d (line 93) | def _calc_cases_90d(ctx): function _calc_cases (line 97) | def _calc_cases(ctx): function _calc_forms (line 101) | def _calc_forms(ctx): function _calc_forms_30d (line 105) | def _calc_forms_30d(ctx): function _calc_forms_60d (line 109) | def _calc_forms_60d(ctx): function _calc_forms_90d (line 113) | def _calc_forms_90d(ctx): function _calc_first_domain (line 117) | def _calc_first_domain(ctx): function _calc_first_form (line 121) | def _calc_first_form(ctx): function _calc_last_form (line 125) | def _calc_last_form(ctx): function _calc_is_active (line 129) | def _calc_is_active(ctx): function _calc_has_app (line 133) | def _calc_has_app(ctx): function _calc_last_updated (line 137) | def _calc_last_updated(ctx): function _calc_incoming_sms (line 141) | def _calc_incoming_sms(ctx): function _calc_outgoing_sms (line 145) | def _calc_outgoing_sms(ctx): function _calc_total_sms (line 149) | def _calc_total_sms(ctx): function _calc_sms_30d (line 153) | def _calc_sms_30d(ctx): function _calc_sms_60d (line 157) | def _calc_sms_60d(ctx): function _calc_sms_90d (line 161) | def _calc_sms_90d(ctx): function _calc_has_used_sms (line 165) | def _calc_has_used_sms(ctx): function _calc_has_used_sms_30d (line 169) | def _calc_has_used_sms_30d(ctx): function _calc_incoming_sms_30d (line 173) | def _calc_incoming_sms_30d(ctx): function _calc_incoming_sms_60d (line 177) | def _calc_incoming_sms_60d(ctx): function _calc_incoming_sms_90d (line 181) | def _calc_incoming_sms_90d(ctx): function _calc_outgoing_sms_30d (line 185) | def _calc_outgoing_sms_30d(ctx): function _calc_outgoing_sms_60d (line 189) | def _calc_outgoing_sms_60d(ctx): function _calc_outgoing_sms_90d (line 193) | def _calc_outgoing_sms_90d(ctx): function _calc_300th_form (line 197) | def _calc_300th_form(ctx): function _calc_usercases_30d (line 201) | def _calc_usercases_30d(ctx): function _calc_telerivet (line 205) | def _calc_telerivet(ctx): function _calc_security_settings (line 213) | def _calc_security_settings(ctx): function _calc_custom_roles (line 220) | def _calc_custom_roles(ctx): function _calc_has_locations (line 224) | def _calc_has_locations(ctx): function _calc_loc_restricted_roles (line 228) | def _calc_loc_restricted_roles(ctx): function _calc_case_sharing_locs (line 234) | def _calc_case_sharing_locs(ctx): function _calc_case_sharing_groups (line 239) | def _calc_case_sharing_groups(ctx): function _calc_repeaters (line 243) | def _calc_repeaters(ctx): function _calc_case_exports (line 247) | def _calc_case_exports(ctx): function _calc_deid_exports (line 251) | def _calc_deid_exports(ctx): function _calc_saved_exports (line 258) | def _calc_saved_exports(ctx): function _calc_rb_reports (line 265) | def _calc_rb_reports(ctx): function _calc_ucrs (line 269) | def _calc_ucrs(ctx): function _calc_lookup_tables (line 273) | def _calc_lookup_tables(ctx): function _calc_project_icon (line 277) | def _calc_project_icon(ctx): function _calc_apps_with_icon (line 281) | def _calc_apps_with_icon(ctx): function _calc_apps (line 286) | def _calc_apps(ctx): function _calc_apps_multi_lang (line 290) | def _calc_apps_multi_lang(ctx): function _calc_custom_exports (line 294) | def _calc_custom_exports(ctx): FILE: corehq/apps/data_analytics/esaccessors.py function get_app_submission_breakdown_es (line 16) | def get_app_submission_breakdown_es(domain_name, monthspan, user_ids=None): function get_domain_device_breakdown_es (line 32) | def get_domain_device_breakdown_es(domain_name, monthspan): function get_mobile_users (line 41) | def get_mobile_users(domains): function active_mobile_users (line 50) | def active_mobile_users(domain, start, end, *args): function get_forms_for_users (line 82) | def get_forms_for_users(domain, user_ids, start, end): function get_possibly_experienced (line 94) | def get_possibly_experienced(domain, start): FILE: corehq/apps/data_analytics/feature_calcs.py function calc_has_multimedia (line 27) | def calc_has_multimedia(domain_context): function calc_has_case_management (line 35) | def calc_has_case_management(domain_context): function calc_has_eof_navigation (line 44) | def calc_has_eof_navigation(domain_context): function calc_has_web_apps (line 59) | def calc_has_web_apps(domain_context): function calc_has_app_profiles (line 67) | def calc_has_app_profiles(domain_context): function calc_has_save_to_case (line 75) | def calc_has_save_to_case(domain_context): function calc_bulk_case_editing_sessions (line 93) | def calc_bulk_case_editing_sessions(domain_context): function calc_has_custom_branding (line 98) | def calc_has_custom_branding(domain_context): function calc_has_data_dictionary (line 110) | def calc_has_data_dictionary(domain_context): function calc_form_exports (line 119) | def calc_form_exports(domain_context): function calc_case_exports_only (line 124) | def calc_case_exports_only(domain_context): function calc_scheduled_exports (line 129) | def calc_scheduled_exports(domain_context): function calc_has_excel_dashboard (line 137) | def calc_has_excel_dashboard(domain_context): function calc_case_list_explorer_reports (line 145) | def calc_case_list_explorer_reports(domain_context): function calc_det_configs (line 168) | def calc_det_configs(domain_context): function calc_odata_feeds (line 176) | def calc_odata_feeds(domain_context): function calc_linked_domains (line 184) | def calc_linked_domains(domain_context): function calc_has_case_deduplication (line 192) | def calc_has_case_deduplication(domain_context): function calc_mobile_user_groups (line 203) | def calc_mobile_user_groups(domain_context): function calc_has_user_case_management (line 208) | def calc_has_user_case_management(domain_context): function calc_has_organization (line 221) | def calc_has_organization(domain_context): function calc_user_profiles (line 228) | def calc_user_profiles(domain_context): function calc_has_2fa_required (line 239) | def calc_has_2fa_required(domain_context): function calc_has_shortened_timeout (line 244) | def calc_has_shortened_timeout(domain_context): function calc_has_strong_passwords (line 249) | def calc_has_strong_passwords(domain_context): function calc_has_sso (line 256) | def calc_has_sso(domain_context): FILE: corehq/apps/data_analytics/gir_generator.py class GIRTableGenerator (line 28) | class GIRTableGenerator(object): method __init__ (line 34) | def __init__(self, datespan_object_list): method build_table (line 37) | def build_table(self): method classify_users (line 63) | def classify_users(domain, monthspan): method get_bu (line 86) | def get_bu(domain): method get_active_recent (line 95) | def get_active_recent(domain, monthspan): method get_max_device (line 103) | def get_max_device(domain, monthspan): method get_gir_dict_for_domain_and_monthspan (line 126) | def get_gir_dict_for_domain_and_monthspan(domain, monthspan): FILE: corehq/apps/data_analytics/malt_generator.py function generate_malt (line 33) | def generate_malt(monthspans, domains=None): function _get_last_run_date_for_malt_by_month (line 58) | def _get_last_run_date_for_malt_by_month(domain_name, monthspans): function _get_malt_app_data (line 70) | def _get_malt_app_data(domain, app_id): function _build_malt_row_dict (line 89) | def _build_malt_row_dict(app_row, domain_name, user, monthspan, run_date): function _get_malt_row_dicts (line 111) | def _get_malt_row_dicts(domain_name, monthspan, users_by_id, run_date): function _save_malt_row_dicts_to_db (line 129) | def _save_malt_row_dicts_to_db(malt_row_dicts): function _update_or_create_malt_row (line 139) | def _update_or_create_malt_row(malt_row_dict): FILE: corehq/apps/data_analytics/management/commands/add_to_malt_table.py class Command (line 8) | class Command(BaseCommand): method add_arguments (line 15) | def add_arguments(self, parser): method handle (line 22) | def handle(self, file_paths, **options): FILE: corehq/apps/data_analytics/management/commands/collect_feature_metrics.py class Command (line 8) | class Command(BaseCommand): method add_arguments (line 11) | def add_arguments(self, parser): method handle (line 18) | def handle(self, *args, **options): FILE: corehq/apps/data_analytics/management/commands/update_gir_table.py class Command (line 10) | class Command(BaseCommand): method add_arguments (line 17) | def add_arguments(self, parser): method handle (line 24) | def handle(self, month_years, **options): FILE: corehq/apps/data_analytics/management/commands/update_malt_table.py class Command (line 10) | class Command(BaseCommand): method add_arguments (line 17) | def add_arguments(self, parser): method handle (line 24) | def handle(self, month_years, **options): FILE: corehq/apps/data_analytics/metric_registry.py class MetricDef (line 13) | class MetricDef: class DomainContext (line 22) | class DomainContext: method __init__ (line 25) | def __init__(self, domain_obj, all_stats=None): method apps (line 31) | def apps(self): method form_exports (line 38) | def form_exports(self): method case_exports (line 42) | def case_exports(self): function get_metrics_registry (line 46) | def get_metrics_registry(): function get_metrics_by_schedule (line 58) | def get_metrics_by_schedule(metrics, schedule): function collect_metrics_for_domain (line 62) | def collect_metrics_for_domain(domain_obj, metrics, existing_metrics=None): function collect_daily_metrics_for_domain (line 85) | def collect_daily_metrics_for_domain(domain_obj, all_stats): FILE: corehq/apps/data_analytics/migrations/0001_squashed_0004_auto_20150810_1710.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/data_analytics/migrations/0002_maltrow_threshold.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/data_analytics/migrations/0003_auto_20160205_0927.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/data_analytics/migrations/0004_experienced_threshold.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/data_analytics/migrations/0005_girrow.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/data_analytics/migrations/0006_unique_girrow.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/data_analytics/migrations/0007_auto_20160819_1423.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/data_analytics/migrations/0008_auto_20161114_1903.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_analytics/migrations/0009_remove_girrow_wam.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_analytics/migrations/0010_maltrow_last_run_date.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_analytics/migrations/0011_domainmetrics.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_analytics/migrations/0012_update_domainmetrics_fields.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_analytics/migrations/0013_domainmetrics_bulk_case_editing_sessions_and_more.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_analytics/models.py class MALTRow (line 47) | class MALTRow(models.Model): class Meta (line 76) | class Meta(object): method get_unique_fields (line 80) | def get_unique_fields(cls): class GIRRow (line 84) | class GIRRow(models.Model): class Meta (line 117) | class Meta(object): method export_row (line 120) | def export_row(self, past_months): class DomainMetrics (line 249) | class DomainMetrics(models.Model): method has_app (line 365) | def has_app(self): method has_used_sms (line 369) | def has_used_sms(self): method has_used_sms_in_last_30_days (line 373) | def has_used_sms_in_last_30_days(self): method to_calculated_properties (line 376) | def to_calculated_properties(self): FILE: corehq/apps/data_analytics/tasks.py function build_last_month_MALT (line 40) | def build_last_month_MALT(): function update_current_MALT (line 49) | def update_current_MALT(): function build_last_month_GIR (line 59) | def build_last_month_GIR(): function update_malt (line 82) | def update_malt(month_dict, domains): function run_datadog_user_stats (line 88) | def run_datadog_user_stats(): function datadog_report_user_stats (line 97) | def datadog_report_user_stats(metric_name, commcare_users_by_domain): function summarize_user_counts (line 105) | def summarize_user_counts(commcare_users_by_domain, n): function update_domain_metrics (line 127) | def update_domain_metrics(): function update_domain_metrics_for_domains (line 134) | def update_domain_metrics_for_domains(domains): function _update_or_create_domain_metrics (line 149) | def _update_or_create_domain_metrics(domain, all_stats): function get_domains_to_update (line 166) | def get_domains_to_update(): function collect_feature_metrics (line 203) | def collect_feature_metrics(): function collect_feature_metrics_for_domains (line 211) | def collect_feature_metrics_for_domains(domains): function _collect_feature_metrics_for_domain (line 216) | def _collect_feature_metrics_for_domain(domain_name): function _iter_domain_names_standard_and_higher (line 247) | def _iter_domain_names_standard_and_higher(): FILE: corehq/apps/data_analytics/tests/test_app_feature_metrics.py function _make_ctx (line 18) | def _make_ctx(apps=None, domain_attrs=None): function _make_app_with_modules (line 29) | def _make_app_with_modules(modules): function _make_module (line 40) | def _make_module(case_type='', forms=None): class TestCalcHasMultimedia (line 47) | class TestCalcHasMultimedia(SimpleTestCase): method test_true_when_app_has_multimedia (line 49) | def test_true_when_app_has_multimedia(self): method test_false_when_no_multimedia (line 56) | def test_false_when_no_multimedia(self): method test_false_when_no_apps (line 63) | def test_false_when_no_apps(self): class TestCalcHasCaseManagement (line 68) | class TestCalcHasCaseManagement(SimpleTestCase): method test_true_when_module_has_case_type (line 70) | def test_true_when_module_has_case_type(self): method test_false_when_no_case_type (line 76) | def test_false_when_no_case_type(self): method test_false_when_no_apps (line 82) | def test_false_when_no_apps(self): method test_true_with_multiple_modules (line 86) | def test_true_with_multiple_modules(self): class TestCalcHasEofNavigation (line 94) | class TestCalcHasEofNavigation(SimpleTestCase): method test_true_when_form_has_non_default_workflow (line 96) | def test_true_when_form_has_non_default_workflow(self): method test_false_when_all_default_workflow (line 104) | def test_false_when_all_default_workflow(self): method test_false_when_no_apps (line 112) | def test_false_when_no_apps(self): method test_false_when_no_forms (line 116) | def test_false_when_no_forms(self): class TestCalcHasWebApps (line 123) | class TestCalcHasWebApps(SimpleTestCase): method test_true_when_cloudcare_enabled (line 125) | def test_true_when_cloudcare_enabled(self): method test_false_when_cloudcare_disabled (line 132) | def test_false_when_cloudcare_disabled(self): method test_false_when_no_apps (line 139) | def test_false_when_no_apps(self): class TestCalcHasAppProfiles (line 144) | class TestCalcHasAppProfiles(SimpleTestCase): method test_true_when_build_profiles_exist (line 146) | def test_true_when_build_profiles_exist(self): method test_false_when_no_build_profiles (line 153) | def test_false_when_no_build_profiles(self): method test_false_when_no_apps (line 160) | def test_false_when_no_apps(self): class TestCalcHasSaveToCase (line 165) | class TestCalcHasSaveToCase(SimpleTestCase): method test_true_when_form_has_save_to_case (line 172) | def test_true_when_form_has_save_to_case(self): method test_false_when_save_to_case_updates_empty (line 180) | def test_false_when_save_to_case_updates_empty(self): method test_false_when_form_has_no_get_save_to_case_updates (line 188) | def test_false_when_form_has_no_get_save_to_case_updates(self): method test_false_when_no_apps (line 196) | def test_false_when_no_apps(self): class TestCalcBulkCaseEditingSessions (line 201) | class TestCalcBulkCaseEditingSessions(SimpleTestCase): method test_counts_sessions (line 204) | def test_counts_sessions(self, mock_manager): method test_zero_when_no_sessions (line 210) | def test_zero_when_no_sessions(self, mock_manager): class TestCalcHasCustomBranding (line 216) | class TestCalcHasCustomBranding(SimpleTestCase): method test_true_when_domain_has_custom_logo (line 218) | def test_true_when_domain_has_custom_logo(self): method test_true_when_app_has_logo_refs (line 222) | def test_true_when_app_has_logo_refs(self): method test_false_when_no_branding (line 232) | def test_false_when_no_branding(self): method test_false_when_no_apps (line 242) | def test_false_when_no_apps(self): FILE: corehq/apps/data_analytics/tests/test_collect_feature_metrics_command.py class TestCollectFeatureMetricsCommand (line 8) | class TestCollectFeatureMetricsCommand(SimpleTestCase): method test_processes_specified_domains (line 14) | def test_processes_specified_domains(self, mock_collect): FILE: corehq/apps/data_analytics/tests/test_data_export_feature_metrics.py function _make_ctx (line 20) | def _make_ctx(form_exports=None, case_exports=None): function _make_export (line 31) | def _make_export(**kwargs): class TestCalcHasDataDictionary (line 35) | class TestCalcHasDataDictionary(SimpleTestCase): method test_false_when_no_typed_case_properties_exist (line 38) | def test_false_when_no_typed_case_properties_exist(self, mock_cp_manag... method test_true_when_case_property_has_type (line 44) | def test_true_when_case_property_has_type(self, mock_cp_manager): class TestCalcFormExports (line 50) | class TestCalcFormExports(SimpleTestCase): method test_returns_count (line 52) | def test_returns_count(self): method test_returns_zero_when_empty (line 56) | def test_returns_zero_when_empty(self): class TestCalcCaseExportsOnly (line 61) | class TestCalcCaseExportsOnly(SimpleTestCase): method test_returns_count (line 63) | def test_returns_count(self): method test_returns_zero_when_empty (line 67) | def test_returns_zero_when_empty(self): class TestCalcScheduledExports (line 72) | class TestCalcScheduledExports(SimpleTestCase): method test_counts_daily_saved_exports (line 74) | def test_counts_daily_saved_exports(self): method test_returns_zero_when_none_scheduled (line 80) | def test_returns_zero_when_none_scheduled(self): method test_counts_across_both_types (line 85) | def test_counts_across_both_types(self): class TestCalcHasExcelDashboard (line 94) | class TestCalcHasExcelDashboard(SimpleTestCase): method test_true_when_dashboard_feed_exists (line 96) | def test_true_when_dashboard_feed_exists(self): method test_false_when_no_dashboard_feed (line 105) | def test_false_when_no_dashboard_feed(self): class TestCalcCaseListExplorerReports (line 115) | class TestCalcCaseListExplorerReports(SimpleTestCase): method test_counts_matching_slug (line 119) | def test_counts_matching_slug(self, mock_get_db, mock_cached_view): method test_returns_zero_when_no_matches (line 130) | def test_returns_zero_when_no_matches(self, mock_get_db, mock_cached_v... method test_returns_zero_when_empty (line 139) | def test_returns_zero_when_empty(self, mock_get_db, mock_cached_view): class TestCalcDetConfigs (line 145) | class TestCalcDetConfigs(SimpleTestCase): method test_counts_det_enabled (line 147) | def test_counts_det_enabled(self): method test_returns_zero_when_none_enabled (line 156) | def test_returns_zero_when_none_enabled(self): class TestCalcOdataFeeds (line 162) | class TestCalcOdataFeeds(SimpleTestCase): method test_counts_odata_configs (line 164) | def test_counts_odata_configs(self): method test_returns_zero_when_none (line 170) | def test_returns_zero_when_none(self): class TestCalcLinkedDomains (line 176) | class TestCalcLinkedDomains(SimpleTestCase): method test_counts_links (line 179) | def test_counts_links(self, mock_manager): method test_returns_zero_when_no_links (line 185) | def test_returns_zero_when_no_links(self, mock_manager): class TestCalcHasCaseDeduplication (line 191) | class TestCalcHasCaseDeduplication(SimpleTestCase): method test_true_when_rule_exists (line 194) | def test_true_when_rule_exists(self, mock_manager): method test_false_when_no_rules (line 200) | def test_false_when_no_rules(self, mock_manager): FILE: corehq/apps/data_analytics/tests/test_esaccessors.py class MaltAnalyticsTest (line 17) | class MaltAnalyticsTest(SimpleTestCase): function test_app_submission_breakdown (line 38) | def test_app_submission_breakdown(self, combination_count_list): FILE: corehq/apps/data_analytics/tests/test_gir.py class GirTest (line 9) | class GirTest(TestCase): method _fake_device_data (line 11) | def _fake_device_data(self, *args, **kwargs): method test_max_device_id (line 23) | def test_max_device_id(self): FILE: corehq/apps/data_analytics/tests/test_malt_generator.py class MaltGeneratorTest (line 38) | class MaltGeneratorTest(TestCase): method setUpClass (line 48) | def setUpClass(cls): method tearDownClass (line 55) | def tearDownClass(cls): method _setup_domain (line 61) | def _setup_domain(cls): method _setup_user (line 66) | def _setup_user(cls): method _setup_app (line 71) | def _setup_app(cls): method _save_form_data (line 77) | def _save_form_data(self, app_id, received_on): method test_successfully_creates (line 86) | def test_successfully_creates(self): method test_successfully_updates (line 103) | def test_successfully_updates(self): method test_does_not_update (line 129) | def test_does_not_update(self): method test_multiple_months (line 153) | def test_multiple_months(self): class TestSaveMaltRowDictsToDB (line 168) | class TestSaveMaltRowDictsToDB(TestCase): method test_successful_bulk_create (line 170) | def test_successful_bulk_create(self): method test_update_or_create_called_if_integrity_error (line 180) | def test_update_or_create_called_if_integrity_error(self): class TestUpdateOrCreateMaltRow (line 198) | class TestUpdateOrCreateMaltRow(TestCase): method setUp (line 200) | def setUp(self): method test_successful_create (line 204) | def test_successful_create(self): method test_successful_update (line 212) | def test_successful_update(self): class TestGetMaltAppData (line 226) | class TestGetMaltAppData(SimpleTestCase): method setUp (line 228) | def setUp(self) -> None: method test_returns_default_app_data_if_no_app_id (line 232) | def test_returns_default_app_data_if_no_app_id(self): method test_returns_default_app_data_if_get_app_raises_Http404 (line 236) | def test_returns_default_app_data_if_get_app_raises_Http404(self): method test_returns_expected_app_data (line 242) | def test_returns_expected_app_data(self): method test_returns_expected_app_data_if_deleted (line 255) | def test_returns_expected_app_data_if_deleted(self): class TestBuildMaltRowDict (line 270) | class TestBuildMaltRowDict(SimpleTestCase): method setUp (line 272) | def setUp(self): method test_returns_expected_value_for_month (line 286) | def test_returns_expected_value_for_month(self): method test_app_id_set_to_missing_if_none (line 295) | def test_app_id_set_to_missing_if_none(self): method test_wam_and_pam_values_of_not_set_map_to_none (line 304) | def test_wam_and_pam_values_of_not_set_map_to_none(self): method test_wam_and_pam_values_of_yes_map_to_true (line 315) | def test_wam_and_pam_values_of_yes_map_to_true(self): method test_wam_and_pam_values_of_no_map_to_false (line 326) | def test_wam_and_pam_values_of_no_map_to_false(self): method test_user_type_for_web_user (line 337) | def test_user_type_for_web_user(self): method test_user_type_for_mobile_user (line 344) | def test_user_type_for_mobile_user(self): class TestGetMaltRowDicts (line 354) | class TestGetMaltRowDicts(SimpleTestCase): method setUp (line 356) | def setUp(self) -> None: method test_num_of_forms (line 379) | def test_num_of_forms(self): function create_malt_app_data (line 395) | def create_malt_app_data(wam=AMPLIFIES_NOT_SET, function create_user_for_malt_tests (line 403) | def create_user_for_malt_tests(is_web_user=True, user_id='user_id', user... function create_mock_nested_query_row (line 411) | def create_mock_nested_query_row(user_id='user_id', app_id='abc123', dev... function create_malt_row_dict (line 421) | def create_malt_row_dict(data): FILE: corehq/apps/data_analytics/tests/test_metric_registry.py class TestMetricDef (line 25) | class TestMetricDef(SimpleTestCase): method test_metric_def_boolean_defaults (line 27) | def test_metric_def_boolean_defaults(self): method test_metric_def_count (line 36) | def test_metric_def_count(self): method test_get_metrics_by_schedule_filters (line 45) | def test_get_metrics_by_schedule_filters(self): class TestDomainContext (line 55) | class TestDomainContext(SimpleTestCase): method test_apps_cached (line 57) | def test_apps_cached(self): method test_excludes_remote_apps (line 69) | def test_excludes_remote_apps(self): method test_domain_name (line 80) | def test_domain_name(self): class TestCollectMetricsForDomain (line 87) | class TestCollectMetricsForDomain(SimpleTestCase): method test_skips_boolean_already_true (line 89) | def test_skips_boolean_already_true(self): method test_computes_boolean_when_false (line 108) | def test_computes_boolean_when_false(self): method test_computes_boolean_when_none (line 122) | def test_computes_boolean_when_none(self): method test_always_computes_count (line 136) | def test_always_computes_count(self): method test_handles_no_existing_metrics (line 151) | def test_handles_no_existing_metrics(self): method test_logs_and_skips_on_calc_error (line 164) | def test_logs_and_skips_on_calc_error(self): class TestDomainAPIExposesFeatureMetrics (line 184) | class TestDomainAPIExposesFeatureMetrics(SimpleTestCase): method test_feature_metrics_in_domain_metrics_to_properties_map (line 192) | def test_feature_metrics_in_domain_metrics_to_properties_map(self): method test_feature_metrics_returned_by_to_calculated_properties (line 206) | def test_feature_metrics_returned_by_to_calculated_properties(self): class TestRegistryCoversMap (line 243) | class TestRegistryCoversMap(SimpleTestCase): method test_registry_covers_all_salesforce_mappings (line 245) | def test_registry_covers_all_salesforce_mappings(self): method test_no_duplicate_field_names (line 257) | def test_no_duplicate_field_names(self): class DomainCalculatedPropertiesTest (line 265) | class DomainCalculatedPropertiesTest(BaseCalculatedPropertiesTest): method test_calculated_properties_are_serializable (line 267) | def test_calculated_properties_are_serializable(self): method test_domain_does_not_have_project_icon (line 272) | def test_domain_does_not_have_project_icon(self): FILE: corehq/apps/data_analytics/tests/test_tasks.py class TestGetDomainsToUpdate (line 31) | class TestGetDomainsToUpdate(TestCase): method test_domain_metrics_never_updated_is_included (line 32) | def test_domain_metrics_never_updated_is_included(self): method test_domain_metrics_updated_over_one_week_ago_is_included (line 41) | def test_domain_metrics_updated_over_one_week_ago_is_included(self): method test_domain_metrics_updated_exactly_one_week_ago_is_excluded (line 49) | def test_domain_metrics_updated_exactly_one_week_ago_is_excluded(self): method test_domain_metrics_updated_less_than_one_week_ago_is_excluded (line 57) | def test_domain_metrics_updated_less_than_one_week_ago_is_excluded(self): method test_form_submission_in_the_last_day_is_included (line 65) | def test_form_submission_in_the_last_day_is_included(self): method test_form_submission_over_one_day_ago_is_excluded (line 74) | def test_form_submission_over_one_day_ago_is_excluded(self): method test_inactive_domain_is_excluded (line 83) | def test_inactive_domain_is_excluded(self): method index_domain (line 90) | def index_domain(self, name, active=True, cp_last_updated=None): method index_form (line 99) | def index_form(self, domain, received_on): method create_domain_metrics (line 105) | def create_domain_metrics(self, domain, last_modified=None): class TestCollectFeatureMetrics (line 120) | class TestCollectFeatureMetrics(SimpleTestCase): method test_updates_domain_metrics (line 126) | def test_updates_domain_metrics(self, mock_get_by_name, mock_collect): method test_skips_when_no_updates (line 143) | def test_skips_when_no_updates(self, mock_get_by_name, mock_collect): method test_skips_when_no_existing_metrics (line 157) | def test_skips_when_no_existing_metrics(self, mock_get_by_name, mock_c... method test_skips_when_domain_not_found (line 171) | def test_skips_when_domain_not_found(self, mock_get_by_name): class TestIterDomainNamesStandardAndHigher (line 178) | class TestIterDomainNamesStandardAndHigher(TestCase): method setUpClass (line 181) | def setUpClass(cls): method _subscribe (line 189) | def _subscribe( method test_includes_standard_domain (line 206) | def test_includes_standard_domain(self): method test_excludes_free_domain (line 213) | def test_excludes_free_domain(self): method test_excludes_inactive_subscription (line 220) | def test_excludes_inactive_subscription(self): method test_excludes_dimagi_only_enterprise (line 237) | def test_excludes_dimagi_only_enterprise(self): FILE: corehq/apps/data_analytics/tests/test_user_security_feature_metrics.py function _make_ctx (line 18) | def _make_ctx(apps=None, **domain_attrs): class TestCalcMobileUserGroups (line 27) | class TestCalcMobileUserGroups(SimpleTestCase): method test_counts_groups (line 30) | def test_counts_groups(self, mock_by_domain): method test_zero_when_no_groups (line 36) | def test_zero_when_no_groups(self, mock_by_domain): class TestCalcHasUserCaseManagement (line 42) | class TestCalcHasUserCaseManagement(SimpleTestCase): method test_true_when_usercase (line 45) | def test_true_when_usercase(self, mock_fn): method test_false_when_no_usercase (line 58) | def test_false_when_no_usercase(self, mock_fn): method test_false_when_no_apps (line 70) | def test_false_when_no_apps(self): method test_skips_forms_without_actions (line 75) | def test_skips_forms_without_actions(self, mock_fn): class TestCalcHasOrganization (line 87) | class TestCalcHasOrganization(SimpleTestCase): method test_true_when_location_types_exist (line 90) | def test_true_when_location_types_exist(self, mock_manager): method test_false_when_no_location_types (line 96) | def test_false_when_no_location_types(self, mock_manager): class TestCalcUserProfiles (line 102) | class TestCalcUserProfiles(SimpleTestCase): method test_counts_profiles (line 105) | def test_counts_profiles(self, mock_get): method test_zero_when_no_definition (line 113) | def test_zero_when_no_definition(self, mock_get): method test_zero_when_no_profiles (line 119) | def test_zero_when_no_profiles(self, mock_get): class TestCalcHas2faRequired (line 127) | class TestCalcHas2faRequired(SimpleTestCase): method test_true_when_enabled (line 129) | def test_true_when_enabled(self): method test_false_when_disabled (line 133) | def test_false_when_disabled(self): method test_false_when_attr_missing (line 137) | def test_false_when_attr_missing(self): class TestCalcHasShortenedTimeout (line 145) | class TestCalcHasShortenedTimeout(SimpleTestCase): method test_true_when_enabled (line 147) | def test_true_when_enabled(self): method test_false_when_disabled (line 151) | def test_false_when_disabled(self): class TestCalcHasStrongPasswords (line 156) | class TestCalcHasStrongPasswords(SimpleTestCase): method test_true_when_enabled (line 158) | def test_true_when_enabled(self): method test_false_when_disabled (line 162) | def test_false_when_disabled(self): class TestCalcHasSso (line 167) | class TestCalcHasSso(SimpleTestCase): method test_true_when_sso_configured (line 170) | def test_true_when_sso_configured(self, mock_manager): method test_false_when_no_sso (line 176) | def test_false_when_no_sso(self, mock_manager): FILE: corehq/apps/data_analytics/tests/test_util.py class TestSummarizeUserCounts (line 6) | class TestSummarizeUserCounts(SimpleTestCase): method test_summarize_user_counts (line 7) | def test_summarize_user_counts(self): FILE: corehq/apps/data_analytics/tests/utils.py function save_to_es_analytics_db (line 7) | def save_to_es_analytics_db(domain, received_on, app_id, device_id, user... FILE: corehq/apps/data_analytics/util.py function last_month_dict (line 6) | def last_month_dict(): function last_month_datespan (line 11) | def last_month_datespan(): function get_last_month (line 16) | def get_last_month(): FILE: corehq/apps/data_cleaning/columns.py class EditableHtmxColumn (line 9) | class EditableHtmxColumn(TemplateColumn): method __init__ (line 12) | def __init__(self, column_spec, *args, **kwargs): method get_htmx_partial_response_context (line 29) | def get_htmx_partial_response_context(cls, column_spec, record, table): class SelectableHtmxColumn (line 48) | class SelectableHtmxColumn(CheckBoxColumn): method __init__ (line 54) | def __init__(self, session, request, select_record_action, select_page... method get_selected_record_checkbox_id (line 74) | def get_selected_record_checkbox_id(self, value): method read_only_response (line 77) | def read_only_response(self): method header (line 87) | def header(self): method render (line 105) | def render(self, value, bound_column, record): method is_checked (line 127) | def is_checked(self, record): FILE: corehq/apps/data_cleaning/decorators.py function require_bulk_data_cleaning_cases (line 9) | def require_bulk_data_cleaning_cases(view_func): function bulk_data_cleaning_enabled_for_request (line 20) | def bulk_data_cleaning_enabled_for_request(request): FILE: corehq/apps/data_cleaning/exceptions.py class UnsupportedActionException (line 1) | class UnsupportedActionException(Exception): class UnsupportedFilterValueException (line 5) | class UnsupportedFilterValueException(Exception): FILE: corehq/apps/data_cleaning/filters.py class SessionPinnedFilterMixin (line 19) | class SessionPinnedFilterMixin(ABC): method __init__ (line 20) | def __init__(self, session, *args, **kwargs): method filter_type (line 26) | def filter_type(self): method pinned_filter (line 36) | def pinned_filter(self): method filter_query (line 40) | def filter_query(cls, query, pinned_filter): method get_value_for_db (line 55) | def get_value_for_db(self): method update_stored_value (line 68) | def update_stored_value(self): class CaseOwnersPinnedFilter (line 76) | class CaseOwnersPinnedFilter(SessionPinnedFilterMixin, CaseListFilter): method filter_context (line 83) | def filter_context(self): method selected (line 96) | def selected(self): method _get_default_db_value (line 100) | def _get_default_db_value(cls): method get_value_for_db (line 103) | def get_value_for_db(self): method filter_query (line 108) | def filter_query(cls, query, pinned_filter): class CaseStatusPinnedFilter (line 153) | class CaseStatusPinnedFilter(SessionPinnedFilterMixin, SelectOpenCloseFi... method filter_context (line 158) | def filter_context(self): method selected (line 165) | def selected(self): method get_value_for_db (line 168) | def get_value_for_db(self): method filter_query (line 173) | def filter_query(cls, query, pinned_filter): FILE: corehq/apps/data_cleaning/forms/bulk_edit.py class EditSelectedRecordsForm (line 19) | class EditSelectedRecordsForm(forms.Form): method __init__ (line 73) | def __init__(self, session, *args, **kwargs): method clean (line 176) | def clean(self): method get_bulk_edit_change (line 221) | def get_bulk_edit_change(self): FILE: corehq/apps/data_cleaning/forms/columns.py class AddColumnForm (line 21) | class AddColumnForm(forms.Form): method __init__ (line 36) | def __init__(self, session, *args, **kwargs): method clean_column_label (line 108) | def clean_column_label(self): method clean_column_data_type (line 114) | def clean_column_data_type(self): method clean_column_prop_id (line 120) | def clean_column_prop_id(self): method clean (line 128) | def clean(self): method add_column (line 144) | def add_column(self): FILE: corehq/apps/data_cleaning/forms/filters.py class DynamicMultipleChoiceField (line 28) | class DynamicMultipleChoiceField(forms.MultipleChoiceField): method valid_value (line 29) | def valid_value(self, value): class AddFilterForm (line 36) | class AddFilterForm(forms.Form): method __init__ (line 75) | def __init__(self, session, *args, **kwargs): method clean_prop_id (line 285) | def clean_prop_id(self): method clean_data_type (line 291) | def clean_data_type(self): method clean (line 295) | def clean(self): method _clean_text_filter (line 316) | def _clean_text_filter(self, cleaned_data): method _clean_number_filter (line 329) | def _clean_number_filter(self, cleaned_data): method _clean_date_filter (line 340) | def _clean_date_filter(self, cleaned_data): method _clean_required_match_type (line 369) | def _clean_required_match_type(self, match_type_field_name, cleaned_da... method _clean_multi_select_filter (line 375) | def _clean_multi_select_filter(self, cleaned_data): method _clean_value_for_match_type (line 382) | def _clean_value_for_match_type(self, value_field_name, cleaned_data, ... method _save_to_cleaned_data (line 392) | def _save_to_cleaned_data(self, cleaned_data, match_type, value): method create_filter (line 405) | def create_filter(self): FILE: corehq/apps/data_cleaning/forms/start_session.py class SelectCaseTypeForm (line 14) | class SelectCaseTypeForm(forms.Form): method __init__ (line 20) | def __init__(self, domain, *args, **kwargs): method clean_case_type (line 45) | def clean_case_type(self): class ResumeOrRestartCaseSessionForm (line 54) | class ResumeOrRestartCaseSessionForm(forms.Form): method __init__ (line 70) | def __init__(self, domain, container_id, cancel_url, *args, **kwargs): method clean_case_type (line 115) | def clean_case_type(self): FILE: corehq/apps/data_cleaning/management/commands/dc_create_test_app.py function get_plant_app_template (line 13) | def get_plant_app_template(): class Command (line 18) | class Command(BaseCommand): method add_arguments (line 24) | def add_arguments(self, parser): method handle (line 27) | def handle(self, domain, **options): FILE: corehq/apps/data_cleaning/management/commands/dc_create_test_data.py class Command (line 19) | class Command(BaseCommand): method add_arguments (line 25) | def add_arguments(self, parser): method handle (line 30) | def handle(self, domain, submitting_web_user, num_submissions, **optio... method create_fake_data (line 60) | def create_fake_data(self, domain, web_user, data_cleaning_fake_users,... method get_case_data (line 90) | def get_case_data(self, fake_data): method get_form_data (line 133) | def get_form_data(self, fake_data): FILE: corehq/apps/data_cleaning/management/commands/dc_create_test_users.py class Command (line 14) | class Command(BaseCommand): method add_arguments (line 20) | def add_arguments(self, parser): method handle (line 25) | def handle(self, domain, user_password, num_users, **options): FILE: corehq/apps/data_cleaning/management/commands/utils/fake_data_users.py function get_first_name (line 6) | def get_first_name(): function get_last_name (line 39) | def get_last_name(): FILE: corehq/apps/data_cleaning/management/commands/utils/fake_plant_data.py function get_plant_name (line 8) | def get_plant_name(): function get_plant_submission_dates (line 74) | def get_plant_submission_dates(): function get_plant_nickname (line 146) | def get_plant_nickname(): function get_plant_description (line 277) | def get_plant_description(): function get_health_indicators (line 315) | def get_health_indicators(): function get_pot_type (line 329) | def get_pot_type(): function get_user_details (line 342) | def get_user_details(commcare_users): function get_plant_case_data_with_issues (line 347) | def get_plant_case_data_with_issues(commcare_users): FILE: corehq/apps/data_cleaning/management/commands/utils/input_validation.py function is_real_domain (line 7) | def is_real_domain(domain): function get_domain_missing_error (line 12) | def get_domain_missing_error(domain): function get_fake_app (line 16) | def get_fake_app(domain): FILE: corehq/apps/data_cleaning/management/commands/utils/issues.py function is_mostly_false (line 4) | def is_mostly_false(): function get_random_spaces (line 8) | def get_random_spaces(): function simulate_capitalization_issues (line 13) | def simulate_capitalization_issues(value): function simulate_whitespace_issues (line 24) | def simulate_whitespace_issues(value): function simulate_missing_value_issues (line 33) | def simulate_missing_value_issues(value): function simulate_free_input_issues (line 38) | def simulate_free_input_issues(value, is_missing=True, whitespace=True, ... FILE: corehq/apps/data_cleaning/migrations/0001_initial.py class Migration (line 10) | class Migration(migrations.Migration): FILE: corehq/apps/data_cleaning/migrations/0002_update_fields_and_ordering.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_cleaning/migrations/0003_column_filter_unique_ids_match_type_updates.py function delete_columns_and_filters (line 7) | def delete_columns_and_filters(apps, schema_editor): class Migration (line 17) | class Migration(migrations.Migration): FILE: corehq/apps/data_cleaning/migrations/0004_alter_bulkeditcolumn_data_type_and_more.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_cleaning/migrations/0005_rename_bulkeditcolumnfilter_bulkeditfilter.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/data_cleaning/migrations/0006_alter_bulkeditchange_action_type.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_cleaning/migrations/0007_alter_bulkeditrecord_doc_id_and_more.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_cleaning/models/change.py class BulkEditChangeManager (line 12) | class BulkEditChangeManager(models.Manager): method apply_inline_edit (line 15) | def apply_inline_edit(self, record, prop_id, value): method apply_reset (line 34) | def apply_reset(self, record, prop_id): class BulkEditChange (line 50) | class BulkEditChange(models.Model): class Meta (line 67) | class Meta: method action_title (line 71) | def action_title(self): method action_detail (line 78) | def action_detail(self): method num_records (line 100) | def num_records(self): method edited_value (line 103) | def edited_value(self, case, edited_properties=None): method _string_edited_value (line 132) | def _string_edited_value(self, old_value): FILE: corehq/apps/data_cleaning/models/column.py class BulkEditColumnManager (line 12) | class BulkEditColumnManager(models.Manager): method create_session_defaults (line 25) | def create_session_defaults(self, session): method copy_to_session (line 45) | def copy_to_session(self, source_session, dest_session): method create_for_session (line 66) | def create_for_session(self, session, prop_id, label, data_type=None): class BulkEditColumn (line 81) | class BulkEditColumn(models.Model): class Meta (line 96) | class Meta: method is_system_property (line 100) | def is_system_property(prop_id): method slug (line 110) | def slug(self): method choice_label (line 117) | def choice_label(self): FILE: corehq/apps/data_cleaning/models/filters.py class BulkEditFilterManager (line 21) | class BulkEditFilterManager(models.Manager): method create_for_session (line 26) | def create_for_session(self, session, prop_id, data_type, match_type, ... method apply_to_query (line 37) | def apply_to_query(self, session, query): method copy_to_session (line 48) | def copy_to_session(self, source_session, dest_session): class BulkEditFilter (line 60) | class BulkEditFilter(models.Model): class Meta (line 79) | class Meta: method human_readable_match_type (line 83) | def human_readable_match_type(self): method filter_query (line 101) | def filter_query(self, query): method is_data_and_match_type_valid (line 113) | def is_data_and_match_type_valid(match_type, data_type): method get_quoted_value (line 130) | def get_quoted_value(value): method get_xpath_expression (line 146) | def get_xpath_expression(self): class BulkEditPinnedFilterManager (line 190) | class BulkEditPinnedFilterManager(models.Manager): method create_session_defaults (line 193) | def create_session_defaults(self, session): method apply_to_query (line 208) | def apply_to_query(self, session, query): method copy_to_session (line 213) | def copy_to_session(self, source_session, dest_session): class BulkEditPinnedFilter (line 231) | class BulkEditPinnedFilter(models.Model): class Meta (line 248) | class Meta: method get_report_filter_class (line 251) | def get_report_filter_class(self): method filter_query (line 262) | def filter_query(self, query): FILE: corehq/apps/data_cleaning/models/record.py class BulkEditRecordManager (line 7) | class BulkEditRecordManager(models.Manager): method get_for_inline_editing (line 10) | def get_for_inline_editing(self, session, doc_id): method select (line 13) | def select(self, session, doc_id): method deselect (line 22) | def deselect(self, session, doc_id): method select_multiple (line 39) | def select_multiple(self, session, doc_ids): method deselect_multiple (line 65) | def deselect_multiple(self, session, doc_ids): method get_unrecorded_doc_ids (line 79) | def get_unrecorded_doc_ids(self, session, doc_ids): class BulkEditRecord (line 86) | class BulkEditRecord(models.Model): class Meta (line 95) | class Meta: method has_property_updates (line 104) | def has_property_updates(self): method should_reset_calculated_change_id (line 110) | def should_reset_calculated_change_id(self): method reset_changes (line 113) | def reset_changes(self, prop_id): method get_edited_case_properties (line 116) | def get_edited_case_properties(self, case): FILE: corehq/apps/data_cleaning/models/session.py class BulkEditSessionManager (line 19) | class BulkEditSessionManager(models.Manager): method _get_active_session (line 20) | def _get_active_session(self, user, domain_name, identifier, session_t... method active_case_session (line 33) | def active_case_session(self, user, domain_name, case_type): method active_form_session (line 36) | def active_form_session(self, user, domain_name, xmlns): method _get_recent_session (line 39) | def _get_recent_session(self, user, domain_name, session_type): method recent_case_session (line 50) | def recent_case_session(self, user, domain_name): method recent_form_session (line 53) | def recent_form_session(self, user, domain_name): method new_case_session (line 56) | def new_case_session(self, user, domain_name, case_type, is_default=Tr... method new_form_session (line 68) | def new_form_session(self, user, domain_name, xmlns): method restart_case_session (line 73) | def restart_case_session(self, user, domain_name, case_type): method all_sessions (line 80) | def all_sessions(self, user, domain_name): class BulkEditSession (line 84) | class BulkEditSession(models.Model): class Meta (line 102) | class Meta: method get_resumed_session (line 105) | def get_resumed_session(self): method is_read_only (line 118) | def is_read_only(self): method form_ids (line 122) | def form_ids(self): method percent_complete (line 128) | def percent_complete(self): method has_any_filtering (line 134) | def has_any_filtering(self): method reset_filtering (line 137) | def reset_filtering(self): method has_filters (line 142) | def has_filters(self): method reset_filters (line 145) | def reset_filters(self): method has_pinned_values (line 149) | def has_pinned_values(self): method reset_pinned_filters (line 152) | def reset_pinned_filters(self): method add_filter (line 157) | def add_filter(self, prop_id, data_type, match_type, value=None): method add_column (line 169) | def add_column(self, prop_id, label, data_type=None): method _update_order (line 181) | def _update_order(related_manager, id_field, provided_ids): method update_filter_order (line 210) | def update_filter_order(self, filter_ids): method update_column_order (line 217) | def update_column_order(self, column_ids): method _delete_and_update_order (line 224) | def _delete_and_update_order(self, related_manager, id_field, provided... method remove_filter (line 241) | def remove_filter(self, filter_id): method remove_column (line 252) | def remove_column(self, column_id): method get_queryset (line 262) | def get_queryset(self): method get_document_from_queryset (line 268) | def get_document_from_queryset(self, doc_id): method get_num_selected_records (line 278) | def get_num_selected_records(self): method get_num_selected_records_in_queryset (line 281) | def get_num_selected_records_in_queryset(self): method apply_inline_edit (line 296) | def apply_inline_edit(self, doc_id, prop_id, value): method _attach_change_to_records (line 307) | def _attach_change_to_records(self, change, doc_ids=None): method apply_change_to_selected_records (line 327) | def apply_change_to_selected_records(self, change): method num_changed_records (line 343) | def num_changed_records(self): method has_changes (line 350) | def has_changes(self): method are_bulk_edits_allowed (line 353) | def are_bulk_edits_allowed(self): method purge_records (line 356) | def purge_records(self): method undo_last_change (line 364) | def undo_last_change(self): method clear_all_changes (line 370) | def clear_all_changes(self): method select_record (line 374) | def select_record(self, doc_id): method deselect_record (line 377) | def deselect_record(self, doc_id): method select_multiple_records (line 380) | def select_multiple_records(self, doc_ids): method deselect_multiple_records (line 383) | def deselect_multiple_records(self, doc_ids): method _apply_operation_on_queryset (line 386) | def _apply_operation_on_queryset(self, operation): method select_all_records_in_queryset (line 394) | def select_all_records_in_queryset(self): method deselect_all_records_in_queryset (line 400) | def deselect_all_records_in_queryset(self): method _get_num_unrecorded (line 406) | def _get_num_unrecorded(self): method can_select_all (line 417) | def can_select_all(self, table_num_records=None): method update_result (line 439) | def update_result(self, record_count, form_id=None, error=None, num_co... FILE: corehq/apps/data_cleaning/models/types.py class BulkEditSessionType (line 4) | class BulkEditSessionType: class PinnedFilterType (line 13) | class PinnedFilterType: class DataType (line 25) | class DataType: method get_filter_category (line 123) | def get_filter_category(cls, data_type): class FilterMatchType (line 129) | class FilterMatchType: class EditActionType (line 227) | class EditActionType: FILE: corehq/apps/data_cleaning/records.py class EditableCaseSearchElasticRecord (line 7) | class EditableCaseSearchElasticRecord(CaseSearchElasticRecord): method __init__ (line 8) | def __init__(self, record, request, session=None, **kwargs): method edited_record (line 14) | def edited_record(self): method is_selected (line 21) | def is_selected(self): method edited_properties (line 28) | def edited_properties(self): method __getitem__ (line 33) | def __getitem__(self, item): FILE: corehq/apps/data_cleaning/tables.py class EditCasesTable (line 18) | class EditCasesTable(BaseHtmxTable, ElasticTable): class Meta (line 23) | class Meta(BaseHtmxTable.Meta): method __init__ (line 33) | def __init__(self, session=None, **kwargs): method get_select_column (line 38) | def get_select_column(cls, session, request, select_record_action, sel... method get_columns_from_session (line 68) | def get_columns_from_session(cls, session): method is_read_only (line 75) | def is_read_only(self): method has_any_filtering (line 80) | def has_any_filtering(self): method num_selected_records (line 88) | def num_selected_records(self): method num_visible_selected_records (line 96) | def num_visible_selected_records(self): method has_changes (line 106) | def has_changes(self): class RecentCaseSessionsTable (line 110) | class RecentCaseSessionsTable(BaseHtmxTable, tables.Table): class Meta (line 111) | class Meta(BaseHtmxTable.Meta): FILE: corehq/apps/data_cleaning/tasks.py function commit_data_cleaning (line 23) | def commit_data_cleaning(self, bulk_edit_session_id): function _claim_bulk_edit_session_for_task (line 81) | def _claim_bulk_edit_session_for_task(task, bulk_edit_session_id): function _purge_unedited_records (line 107) | def _purge_unedited_records(session): function _prune_completed_records (line 113) | def _prune_completed_records(session, completed_doc_ids, errored_doc_ids): function _create_case_blocks (line 119) | def _create_case_blocks(session, records): function _submit_case_blocks (line 148) | def _submit_case_blocks(session, blocks): function _log_unusual_empty_case_block (line 160) | def _log_unusual_empty_case_block(session, record_batch): function _record_case_block_creation_error (line 171) | def _record_case_block_creation_error(session, error, doc_id): function _record_submission_error (line 190) | def _record_submission_error(session, error, record_batch): FILE: corehq/apps/data_cleaning/templatetags/data_cleaning.py function dc_filter_value (line 21) | def dc_filter_value(dc_filter): function dc_data_type_icon (line 39) | def dc_data_type_icon(data_type): function get_edited_value (line 50) | def get_edited_value(record, bound_column): function has_edits (line 74) | def has_edits(edited_value): function _validate_htmx_column (line 82) | def _validate_htmx_column(bound_column): function is_editable_column (line 90) | def is_editable_column(bound_column): function cell_request_params (line 96) | def cell_request_params(record, bound_column): function get_cell_value (line 120) | def get_cell_value(value, edited_value): function display_dc_value (line 126) | def display_dc_value(value): function _replace_whitespace (line 157) | def _replace_whitespace(css_class, character, help_text): function whitespaces (line 176) | def whitespaces(value): FILE: corehq/apps/data_cleaning/tests/mixins.py class CaseDataTestMixin (line 9) | class CaseDataTestMixin: method make_case (line 11) | def make_case(self, domain, case_properties, index=None): method bootstrap_cases_in_es_for_domain (line 22) | def bootstrap_cases_in_es_for_domain(self, domain, input_cases): FILE: corehq/apps/data_cleaning/tests/test_add_column_form.py class TestAddColumnForm (line 14) | class TestAddColumnForm(TestCase): method setUpClass (line 20) | def setUpClass(cls): method setUp (line 39) | def setUp(self): method _get_post_data (line 48) | def _get_post_data(prop_id, label, data_type): method test_validation_fails_column_prop_id_is_required (line 55) | def test_validation_fails_column_prop_id_is_required(self): method test_validation_ok_new_property (line 65) | def test_validation_ok_new_property(self): method test_form_add_column (line 70) | def test_form_add_column(self): method test_validation_fails_column_prop_id_exists (line 81) | def test_validation_fails_column_prop_id_exists(self): method test_validation_fails_column_data_type_is_required (line 92) | def test_validation_fails_column_data_type_is_required(self): method test_validation_fails_column_label_is_required (line 102) | def test_validation_fails_column_label_is_required(self): method test_validation_fails_system_property_incorrect_type (line 112) | def test_validation_fails_system_property_incorrect_type(self): method test_validation_ok_system_property_correct_type (line 122) | def test_validation_ok_system_property_correct_type(self): FILE: corehq/apps/data_cleaning/tests/test_add_filter_form.py class TestAddFilterForm (line 17) | class TestAddFilterForm(TestCase): method setUpClass (line 23) | def setUpClass(cls): method setUp (line 45) | def setUp(self): method _get_post_data (line 54) | def _get_post_data( method test_validation_fails_prop_id_is_required (line 81) | def test_validation_fails_prop_id_is_required(self): method test_data_type_always_text_if_missing (line 93) | def test_data_type_always_text_if_missing(self): method test_validation_fails_incorrect_data_type (line 105) | def test_validation_fails_incorrect_data_type(self): method test_missing_match_types (line 118) | def test_missing_match_types(self): method test_missing_values_for_text_choices (line 132) | def test_missing_values_for_text_choices(self): method test_missing_values_for_number_choices (line 150) | def test_missing_values_for_number_choices(self): method test_missing_values_for_date_choices (line 168) | def test_missing_values_for_date_choices(self): method test_missing_values_for_multi_select_choices (line 189) | def test_missing_values_for_multi_select_choices(self): method test_validation_ok_for_non_value_matches_with_text (line 207) | def test_validation_ok_for_non_value_matches_with_text(self): method test_validation_ok_for_non_value_matches_with_number (line 220) | def test_validation_ok_for_non_value_matches_with_number(self): method test_validation_ok_for_non_value_matches_with_date (line 233) | def test_validation_ok_for_non_value_matches_with_date(self): method test_validation_ok_for_non_value_matches_with_multi_select (line 246) | def test_validation_ok_for_non_value_matches_with_multi_select(self): method test_validation_ok (line 259) | def test_validation_ok(self): method test_validation_fails_bad_date_format (line 297) | def test_validation_fails_bad_date_format(self): method test_validation_fails_bad_datetime_format (line 312) | def test_validation_fails_bad_datetime_format(self): method test_validation_fails_data_type_match_type_mismatch (line 330) | def test_validation_fails_data_type_match_type_mismatch(self): method test_validation_fails_when_text_contains_both_quotes (line 345) | def test_validation_fails_when_text_contains_both_quotes(self): method test_create_filter (line 357) | def test_create_filter(self): FILE: corehq/apps/data_cleaning/tests/test_bulk_edit_form.py class TestEditSelectedRecordsForm (line 12) | class TestEditSelectedRecordsForm(TestCase): method setUpClass (line 18) | def setUpClass(cls): method setUp (line 26) | def setUp(self): method _get_post_data (line 38) | def _get_post_data( method test_form_is_visible (line 57) | def test_form_is_visible(self): method test_form_is_not_visible (line 61) | def test_form_is_not_visible(self): method test_validation_fails_uneditable_property (line 66) | def test_validation_fails_uneditable_property(self): method test_validation_fails_replace_without_value (line 76) | def test_validation_fails_replace_without_value(self): method test_validation_ok_replace_with_value (line 86) | def test_validation_ok_replace_with_value(self): method test_validation_fails_find_without_value (line 91) | def test_validation_fails_find_without_value(self): method test_validation_ok_find_with_value (line 101) | def test_validation_ok_find_with_value(self): method test_validation_fails_find_with_invalid_regex (line 106) | def test_validation_fails_find_with_invalid_regex(self): method test_validation_ok_find_with_valid_regex (line 116) | def test_validation_ok_find_with_valid_regex(self): method test_validation_fails_copy_from_prop_id_not_selected (line 121) | def test_validation_fails_copy_from_prop_id_not_selected(self): method test_validation_fails_copy_from_prop_id_same_as_edit_prop_id (line 131) | def test_validation_fails_copy_from_prop_id_same_as_edit_prop_id(self): method test_validation_ok_copy_from_prop_id_different_from_edit_prop_id (line 141) | def test_validation_ok_copy_from_prop_id_different_from_edit_prop_id(s... method test_get_bulk_edit_change_replace (line 146) | def test_get_bulk_edit_change_replace(self): method test_get_bulk_edit_change_find_replace (line 155) | def test_get_bulk_edit_change_find_replace(self): method test_get_bulk_edit_change_copy_replace (line 172) | def test_get_bulk_edit_change_copy_replace(self): FILE: corehq/apps/data_cleaning/tests/test_changes.py class BulkEditChangeTest (line 19) | class BulkEditChangeTest(TestCase): method setUp (line 23) | def setUp(self): method tearDown (line 41) | def tearDown(self): method test_replace (line 45) | def test_replace(self): method test_replace_none (line 59) | def test_replace_none(self): method test_find_replace (line 67) | def test_find_replace(self): method test_find_replace_none (line 82) | def test_find_replace_none(self): method test_find_replace_regex (line 91) | def test_find_replace_regex(self): method test_find_replace_regex_none (line 107) | def test_find_replace_regex_none(self): method test_strip (line 117) | def test_strip(self): method test_strip_none (line 130) | def test_strip_none(self): method test_copy_replace (line 137) | def test_copy_replace(self): method test_copy_replace_none (line 152) | def test_copy_replace_none(self): method test_title_case (line 160) | def test_title_case(self): method test_title_case_none (line 173) | def test_title_case_none(self): method test_upper_case (line 180) | def test_upper_case(self): method test_upper_case_none (line 193) | def test_upper_case_none(self): method test_lower_case (line 200) | def test_lower_case(self): method test_lower_case_none (line 213) | def test_lower_case_none(self): method test_make_empty (line 220) | def test_make_empty(self): method test_empty_none (line 233) | def test_empty_none(self): method test_make_null (line 240) | def test_make_null(self): method test_make_null_none (line 253) | def test_make_null_none(self): method test_reset (line 260) | def test_reset(self): method test_reset_none (line 273) | def test_reset_none(self): class BulkEditRecordChangesTest (line 281) | class BulkEditRecordChangesTest(TestCase): method setUpClass (line 286) | def setUpClass(cls): method setUp (line 295) | def setUp(self): method tearDown (line 320) | def tearDown(self): method test_initial_has_no_property_updates_or_changes (line 324) | def test_initial_has_no_property_updates_or_changes(self): method test_single_change_to_record (line 332) | def test_single_change_to_record(self): method test_multiple_changes_and_views_to_record (line 350) | def test_multiple_changes_and_views_to_record(self): method test_changes_to_multiple_records (line 392) | def test_changes_to_multiple_records(self): method test_get_edited_case_properties_with_other_case (line 420) | def test_get_edited_case_properties_with_other_case(self): class BulkEditChangeManagerTests (line 435) | class BulkEditChangeManagerTests(TestCase): method setUpClass (line 440) | def setUpClass(cls): method setUp (line 449) | def setUp(self): method test_apply_inline_edit (line 453) | def test_apply_inline_edit(self): method test_apply_reset (line 471) | def test_apply_reset(self): FILE: corehq/apps/data_cleaning/tests/test_filter_outputs.py class BulkEditFilterValueTests (line 20) | class BulkEditFilterValueTests(CaseDataTestMixin, TestCase): method setUpClass (line 25) | def setUpClass(cls): method setUp (line 33) | def setUp(self): method _assert_filters_work_correctly (line 42) | def _assert_filters_work_correctly(self, session, input_cases, expecte... method test_is_empty_filter (line 49) | def test_is_empty_filter(self): method test_is_not_empty_filter (line 66) | def test_is_not_empty_filter(self): method test_is_missing_filter (line 83) | def test_is_missing_filter(self): method test_is_not_missing_filter (line 100) | def test_is_not_missing_filter(self): method test_exact_filter (line 117) | def test_exact_filter(self): method test_is_not_filter (line 136) | def test_is_not_filter(self): method test_starts_filter (line 155) | def test_starts_filter(self): method test_starts_not_filter (line 175) | def test_starts_not_filter(self): method test_fuzzy_filter (line 195) | def test_fuzzy_filter(self): method test_fuzzy_not_filter (line 215) | def test_fuzzy_not_filter(self): method test_phonetic_filter (line 235) | def test_phonetic_filter(self): method test_phonetic_not_filter (line 255) | def test_phonetic_not_filter(self): method test_is_any_filter (line 275) | def test_is_any_filter(self): method test_is_not_any_filter (line 295) | def test_is_not_any_filter(self): method test_is_all_filter (line 315) | def test_is_all_filter(self): method test_is_not_all_filter (line 335) | def test_is_not_all_filter(self): method test_less_than_filter (line 355) | def test_less_than_filter(self): method test_greater_than_filter (line 374) | def test_greater_than_filter(self): method test_less_than_equal_filter (line 393) | def test_less_than_equal_filter(self): method test_greater_than_equal_filter (line 412) | def test_greater_than_equal_filter(self): FILE: corehq/apps/data_cleaning/tests/test_filters.py function test_data_and_match_type_validation (line 112) | def test_data_and_match_type_validation(category, valid_match_types): class BulkEditFilterQueryTests (line 123) | class BulkEditFilterQueryTests(TestCase): method setUpClass (line 127) | def setUpClass(cls): method setUp (line 137) | def setUp(self): method tearDownClass (line 146) | def tearDownClass(cls): method test_filter_query_is_empty (line 150) | def test_filter_query_is_empty(self): method test_filter_query_is_not_empty (line 164) | def test_filter_query_is_not_empty(self): method test_filter_query_is_missing (line 178) | def test_filter_query_is_missing(self): method test_filter_query_is_not_missing (line 192) | def test_filter_query_is_not_missing(self): method filter_query_remains_unchanged_for_other_match_types (line 206) | def filter_query_remains_unchanged_for_other_match_types(self): class BulkEditFilterXpathTest (line 223) | class BulkEditFilterXpathTest(TestCase): method test_exact_text_xpath (line 224) | def test_exact_text_xpath(self): method test_single_quote_xpath (line 233) | def test_single_quote_xpath(self): method test_double_quote_xpath (line 243) | def test_double_quote_xpath(self): method test_mixed_quote_xpath (line 253) | def test_mixed_quote_xpath(self): method test_exact_number_xpath (line 265) | def test_exact_number_xpath(self): method test_exact_date_xpath (line 271) | def test_exact_date_xpath(self): method test_is_not_text_xpath (line 277) | def test_is_not_text_xpath(self): method test_is_not_number_xpath (line 286) | def test_is_not_number_xpath(self): method test_less_than_number_xpath (line 295) | def test_less_than_number_xpath(self): method test_less_than_date_xpath (line 304) | def test_less_than_date_xpath(self): method test_less_than_equal_number_xpath (line 313) | def test_less_than_equal_number_xpath(self): method test_less_than_equal_date_xpath (line 322) | def test_less_than_equal_date_xpath(self): method test_greater_than_number_xpath (line 331) | def test_greater_than_number_xpath(self): method test_greater_than_date_xpath (line 340) | def test_greater_than_date_xpath(self): method test_greater_than_equal_number_xpath (line 349) | def test_greater_than_equal_number_xpath(self): method test_greater_than_equal_date_xpath (line 358) | def test_greater_than_equal_date_xpath(self): method test_starts_with_text_xpath (line 367) | def test_starts_with_text_xpath(self): method test_starts_with_text_single_quote_xpath (line 376) | def test_starts_with_text_single_quote_xpath(self): method test_starts_with_text_double_quote_xpath (line 385) | def test_starts_with_text_double_quote_xpath(self): method test_starts_text_mixed_quote_xpath (line 394) | def test_starts_text_mixed_quote_xpath(self): method test_starts_not_text_xpath (line 404) | def test_starts_not_text_xpath(self): method test_fuzzy_text_xpath (line 413) | def test_fuzzy_text_xpath(self): method test_fuzzy_not_text_xpath (line 422) | def test_fuzzy_not_text_xpath(self): method test_phonetic_text_xpath (line 431) | def test_phonetic_text_xpath(self): method test_phonetic_not_text_xpath (line 440) | def test_phonetic_not_text_xpath(self): method test_is_any_text_xpath (line 449) | def test_is_any_text_xpath(self): method test_is_not_any_text_xpath (line 458) | def test_is_not_any_text_xpath(self): method test_is_all_text_xpath (line 467) | def test_is_all_text_xpath(self): method test_is_not_all_text_xpath (line 476) | def test_is_not_all_text_xpath(self): method test_value_match_types_return_none_all_data_types_xpath (line 485) | def test_value_match_types_return_none_all_data_types_xpath(self): class TestReportFilterSubclasses (line 497) | class TestReportFilterSubclasses(TestCase): method setUpClass (line 501) | def setUpClass(cls): method setUp (line 509) | def setUp(self): method test_case_owners_report_filter_context (line 522) | def test_case_owners_report_filter_context(self): method test_case_owners_report_filter_context_locations (line 552) | def test_case_owners_report_filter_context_locations(self): method test_case_owners_update_stored_value (line 587) | def test_case_owners_update_stored_value(self): method test_case_status_report_filter_context (line 603) | def test_case_status_report_filter_context(self): method test_case_status_update_stored_value (line 626) | def test_case_status_update_stored_value(self): class TestCaseOwnersPinnedFilterQuery (line 639) | class TestCaseOwnersPinnedFilterQuery(BaseCaseOwnersTest): method setUpClass (line 643) | def setUpClass(cls): method setUp (line 663) | def setUp(self): method tearDownClass (line 677) | def tearDownClass(cls): method test_default (line 690) | def test_default(self): method test_default_location_restricted (line 697) | def test_default_location_restricted(self): method test_all_data (line 707) | def test_all_data(self): method test_all_data_location_restricted (line 715) | def test_all_data_location_restricted(self): method test_deactivated (line 727) | def test_deactivated(self): method test_deactivated_location_restricted (line 736) | def test_deactivated_location_restricted(self): method test_selected_user_types (line 747) | def test_selected_user_types(self): method test_selected_user_types_location_restricted (line 770) | def test_selected_user_types_location_restricted(self): method test_selected_user_ids (line 791) | def test_selected_user_ids(self): method test_selected_user_ids_location_restricted (line 801) | def test_selected_user_ids_location_restricted(self): method test_groups (line 817) | def test_groups(self): method test_groups_location_restricted (line 826) | def test_groups_location_restricted(self): method test_location_ids (line 837) | def test_location_ids(self): method test_location_ids_location_restricted (line 847) | def test_location_ids_location_restricted(self): class TestCaseStatusPinnedFilterQuery (line 865) | class TestCaseStatusPinnedFilterQuery(TestCase): method setUpClass (line 869) | def setUpClass(cls): method tearDownClass (line 880) | def tearDownClass(cls): method setUp (line 884) | def setUp(self): method test_default (line 892) | def test_default(self): method test_open (line 899) | def test_open(self): method test_closed (line 908) | def test_closed(self): class TestPinnedFilterDefaults (line 918) | class TestPinnedFilterDefaults(TestCase): method setUpClass (line 922) | def setUpClass(cls): method setUp (line 930) | def setUp(self): method test_default_pinned_filters (line 938) | def test_default_pinned_filters(self): class TestBulkEditFilterManagers (line 946) | class TestBulkEditFilterManagers(TestCase): method setUpClass (line 950) | def setUpClass(cls): method setUp (line 958) | def setUp(self): method test_copy_filters_to_session (line 966) | def test_copy_filters_to_session(self): method test_copy_pinned_filters_to_session (line 986) | def test_copy_pinned_filters_to_session(self): FILE: corehq/apps/data_cleaning/tests/test_records.py class BulkEditRecordSelectionTest (line 11) | class BulkEditRecordSelectionTest(BaseBulkEditSessionTest): method _get_case_id (line 15) | def _get_case_id(): method _add_change_to_record (line 18) | def _add_change_to_record(self, record): method test_select_record (line 27) | def test_select_record(self): method test_deselect_record (line 35) | def test_deselect_record(self): method test_select_record_with_changes (line 42) | def test_select_record_with_changes(self): method test_deselect_record_with_changes (line 60) | def test_deselect_record_with_changes(self): method test_select_multiple_records (line 79) | def test_select_multiple_records(self): method test_select_multiple_records_some_existing (line 90) | def test_select_multiple_records_some_existing(self): method test_deselect_multiple_records (line 111) | def test_deselect_multiple_records(self): method test_deselect_multiple_records_some_edited (line 120) | def test_deselect_multiple_records_some_edited(self): method test_get_unrecorded_doc_ids (line 132) | def test_get_unrecorded_doc_ids(self): class BulkEditRecordManagerTests (line 143) | class BulkEditRecordManagerTests(BaseBulkEditSessionTest): method test_get_for_inline_editing_new (line 147) | def test_get_for_inline_editing_new(self): method test_get_for_inline_editing_existing (line 155) | def test_get_for_inline_editing_existing(self): class BulkEditRecordChangesTest (line 168) | class BulkEditRecordChangesTest(BaseBulkEditSessionTest): method test_should_reset_calculated_change_id_no_changes (line 172) | def test_should_reset_calculated_change_id_no_changes(self): method test_should_reset_calculated_change_id (line 180) | def test_should_reset_calculated_change_id(self): method test_should_reset_calculated_change_id_with_changes (line 190) | def test_should_reset_calculated_change_id_with_changes(self): method test_reset_changes (line 204) | def test_reset_changes(self): FILE: corehq/apps/data_cleaning/tests/test_session.py class BulkEditSessionTest (line 36) | class BulkEditSessionTest(TestCase): method setUpClass (line 41) | def setUpClass(cls): method test_has_no_active_case_session (line 53) | def test_has_no_active_case_session(self): method test_has_no_active_form_session (line 59) | def test_has_no_active_form_session(self): method test_new_case_session (line 65) | def test_new_case_session(self): method test_has_active_case_session (line 74) | def test_has_active_case_session(self): method test_has_no_active_case_session_other_type (line 84) | def test_has_no_active_case_session_other_type(self): method test_has_no_active_case_session_after_committed (line 89) | def test_has_no_active_case_session_after_committed(self): method test_has_no_active_case_session_after_completed (line 98) | def test_has_no_active_case_session_after_completed(self): method test_restart_case_session (line 108) | def test_restart_case_session(self): method test_get_resumed_session (line 118) | def test_get_resumed_session(self): class BulkEditSessionFilteredQuerysetTests (line 151) | class BulkEditSessionFilteredQuerysetTests(TestCase): method setUpClass (line 155) | def setUpClass(cls): method tearDownClass (line 169) | def tearDownClass(cls): method test_add_filters (line 173) | def test_add_filters(self): method test_remove_filters (line 185) | def test_remove_filters(self): method test_remove_column (line 201) | def test_remove_column(self): method test_reorder_wrong_number_of_filter_ids_raises_error (line 212) | def test_reorder_wrong_number_of_filter_ids_raises_error(self): method test_reorder_filters (line 229) | def test_reorder_filters(self): method test_reorder_wrong_number_of_column_ids_raises_error (line 252) | def test_reorder_wrong_number_of_column_ids_raises_error(self): method test_update_column_order (line 264) | def test_update_column_order(self): method test_get_queryset_multiple_filters (line 290) | def test_get_queryset_multiple_filters(self): method test_get_queryset_filters_no_xpath (line 310) | def test_get_queryset_filters_no_xpath(self): method test_get_queryset_filters_xpath_only (line 322) | def test_get_queryset_filters_xpath_only(self): method test_has_filters_and_reset (line 334) | def test_has_filters_and_reset(self): method test_has_pinned_values_and_reset (line 342) | def test_has_pinned_values_and_reset(self): method test_has_any_filtering_and_reset (line 352) | def test_has_any_filtering_and_reset(self): class BaseBulkEditSessionTest (line 367) | class BaseBulkEditSessionTest(TestCase): method setUpClass (line 372) | def setUpClass(cls): method tearDownClass (line 383) | def tearDownClass(cls): method setUp (line 386) | def setUp(self): class BulkEditSessionCaseColumnTests (line 391) | class BulkEditSessionCaseColumnTests(BaseBulkEditSessionTest): method test_default_columns (line 394) | def test_default_columns(self): method test_add_column (line 401) | def test_add_column(self): method test_add_system_column (line 411) | def test_add_system_column(self): method test_copy_to_session (line 420) | def test_copy_to_session(self): class BulkEditSessionSelectionCountTests (line 439) | class BulkEditSessionSelectionCountTests(CaseDataTestMixin, BaseBulkEdit... method test_get_num_selected_records (line 443) | def test_get_num_selected_records(self): method test_get_num_selected_records_in_queryset_no_filter (line 455) | def test_get_num_selected_records_in_queryset_no_filter(self): method test_get_num_selected_records_in_queryset_with_filter (line 463) | def test_get_num_selected_records_in_queryset_with_filter(self): method test_get_num_unrecorded (line 478) | def test_get_num_unrecorded(self): method test_can_select_all_is_true (line 494) | def test_can_select_all_is_true(self): method test_can_select_all_is_false (line 502) | def test_can_select_all_is_false(self): method test_can_select_all_false_table_num_records (line 510) | def test_can_select_all_false_table_num_records(self): class BulkEditSessionChangesTests (line 514) | class BulkEditSessionChangesTests(CaseDataTestMixin, BaseBulkEditSession... method test_apply_change_to_selected_records (line 517) | def test_apply_change_to_selected_records(self): method test_apply_change_to_all_records_with_filter (line 543) | def test_apply_change_to_all_records_with_filter(self): method test_purge_records (line 567) | def test_purge_records(self): method test_undo_last_change (line 590) | def test_undo_last_change(self): method test_clear_all_changes (line 617) | def test_clear_all_changes(self): method test_are_bulk_edits_allowed_below_max_changes (line 644) | def test_are_bulk_edits_allowed_below_max_changes(self): method test_are_bulk_edits_not_allowed_above_max_changes (line 664) | def test_are_bulk_edits_not_allowed_above_max_changes(self): method test_has_changes (line 683) | def test_has_changes(self): method test_num_changed_records_before_commit (line 695) | def test_num_changed_records_before_commit(self): method test_num_changed_records_after_commit (line 704) | def test_num_changed_records_after_commit(self): method test_num_changed_records_after_task_completed (line 727) | def test_num_changed_records_after_task_completed(self): class BulkEditSessionQuerysetTests (line 737) | class BulkEditSessionQuerysetTests(CaseDataTestMixin, BaseBulkEditSessio... method test_get_document_from_queryset (line 740) | def test_get_document_from_queryset(self): class BulkEditSessionInlineEditTests (line 754) | class BulkEditSessionInlineEditTests(BaseBulkEditSessionTest): method test_apply_inline_edit_on_unselected_record (line 757) | def test_apply_inline_edit_on_unselected_record(self): method test_apply_inline_edit_on_selected_record (line 769) | def test_apply_inline_edit_on_selected_record(self): FILE: corehq/apps/data_cleaning/tests/test_tasks.py class CommitCasesTest (line 28) | class CommitCasesTest(TestCase): method setUpClass (line 33) | def setUpClass(cls): method setUp (line 39) | def setUp(self): method _refresh_session (line 72) | def _refresh_session(self): method tearDown (line 75) | def tearDown(self): method test_commit_case (line 79) | def test_commit_case(self): method test_multiple_changes (line 99) | def test_multiple_changes(self): method test_chunking (line 144) | def test_chunking(self): FILE: corehq/apps/data_cleaning/tests/test_utils_cases.py class BaseCaseUtilsTest (line 19) | class BaseCaseUtilsTest(TestCase): method setUpClass (line 24) | def setUpClass(cls): method setUp (line 29) | def setUp(self): class GetCasePropertyDetailsForDataDictionaryTest (line 38) | class GetCasePropertyDetailsForDataDictionaryTest(BaseCaseUtilsTest): method test_text_property (line 40) | def test_text_property(self): method test_date_property (line 61) | def test_date_property(self): method test_number_property (line 82) | def test_number_property(self): method test_select_property (line 103) | def test_select_property(self): method test_barcode_property (line 131) | def test_barcode_property(self): method test_phone_number_property (line 152) | def test_phone_number_property(self): method test_password_property (line 173) | def test_password_property(self): method test_undefined_property (line 194) | def test_undefined_property(self): method test_gps_property (line 215) | def test_gps_property(self): method test_no_properties (line 236) | def test_no_properties(self): method test_no_privilege (line 241) | def test_no_privilege(self): function get_mock_all_case_properties_by_domain (line 261) | def get_mock_all_case_properties_by_domain(result_properties): class GetCasePropertyDetailsTest (line 273) | class GetCasePropertyDetailsTest(BaseCaseUtilsTest): method test_text_system_property (line 285) | def test_text_system_property(self): method test_date_system_property (line 305) | def test_date_system_property(self): method test_editable_system_property (line 325) | def test_editable_system_property(self): method test_skipped_system_property (line 345) | def test_skipped_system_property(self): method test_default_property_format (line 360) | def test_default_property_format(self): method test_dd_override (line 382) | def test_dd_override(self): method test_dd_only_property (line 406) | def test_dd_only_property(self): method test_undefined_property_format (line 436) | def test_undefined_property_format(self): method test_text_property_format (line 465) | def test_text_property_format(self): method test_integer_property_format (line 494) | def test_integer_property_format(self): method test_gps_property_format (line 523) | def test_gps_property_format(self): method test_barcode_property_format (line 552) | def test_barcode_property_format(self): method test_phone_number_property_format (line 581) | def test_phone_number_property_format(self): method test_password_property_format (line 610) | def test_password_property_format(self): method test_multiple_option_property_format (line 639) | def test_multiple_option_property_format(self): class ClearCachesTest (line 666) | class ClearCachesTest(BaseCaseUtilsTest): method test_clear_caches (line 680) | def test_clear_caches(self): FILE: corehq/apps/data_cleaning/tests/test_views.py class CleanCasesViewAccessTest (line 45) | class CleanCasesViewAccessTest(TestCase): method make_user (line 51) | def make_user(cls, email, domain_obj, role): method setUpClass (line 64) | def setUpClass(cls): method tearDownClass (line 226) | def tearDownClass(cls): method test_has_no_access_without_login (line 235) | def test_has_no_access_without_login(self): method test_has_no_access_without_privilege (line 241) | def test_has_no_access_without_privilege(self): method test_has_no_access_without_permission (line 249) | def test_has_no_access_without_permission(self): method test_has_access_with_prereqs (line 257) | def test_has_access_with_prereqs(self): method test_has_no_access_to_wrong_session (line 268) | def test_has_no_access_to_wrong_session(self): method test_redirects_session_with_no_existing_session (line 283) | def test_redirects_session_with_no_existing_session(self): method test_views_not_found_with_invalid_session (line 290) | def test_views_not_found_with_invalid_session(self): method test_has_no_access_with_other_domain (line 302) | def test_has_no_access_with_other_domain(self): FILE: corehq/apps/data_cleaning/utils/cases.py function clear_caches_case_data_cleaning (line 24) | def clear_caches_case_data_cleaning(domain, case_type=None): function get_system_property_data_type (line 38) | def get_system_property_data_type(prop_id): function get_system_property_label (line 47) | def get_system_property_label(prop_id): function _get_system_property_details (line 68) | def _get_system_property_details(): function _get_data_type_from_data_dictionary (line 83) | def _get_data_type_from_data_dictionary(case_property): function _get_default_label (line 99) | def _get_default_label(prop_id): function get_property_details_from_data_dictionary (line 103) | def get_property_details_from_data_dictionary(domain, case_type): function get_case_property_details (line 125) | def get_case_property_details(domain, case_type): FILE: corehq/apps/data_cleaning/utils/decorators.py function retry_on_integrity_error (line 6) | def retry_on_integrity_error(max_retries=3, delay=0.1): FILE: corehq/apps/data_cleaning/views/bulk_edit.py class EditSelectedRecordsFormView (line 21) | class EditSelectedRecordsFormView( method get_context_data (line 28) | def get_context_data(self, form=None, change=None, **kwargs): method create_bulk_edit_change (line 41) | def create_bulk_edit_change(self, request, *args, **kwargs): FILE: corehq/apps/data_cleaning/views/columns.py class ManageColumnsFormView (line 23) | class ManageColumnsFormView( method get_context_data (line 30) | def get_context_data(self, column_form=None, **kwargs): method _trigger_clean_form_refresh (line 41) | def _trigger_clean_form_refresh(self, response): method add_column (line 52) | def add_column(self, request, *args, **kwargs): method update_column_order (line 62) | def update_column_order(self, request, *args, **kwargs): method remove_column (line 70) | def remove_column(self, request, *args, **kwargs): FILE: corehq/apps/data_cleaning/views/filters.py class BaseFilterFormView (line 23) | class BaseFilterFormView(LoginAndDomainMixin, DomainViewMixin, HqHtmxAct... class ManagePinnedFiltersView (line 27) | class ManagePinnedFiltersView(BulkEditSessionViewMixin, BaseFilterFormVi... method timezone (line 33) | def timezone(self): method form_filters (line 38) | def form_filters(self): method update_filters (line 51) | def update_filters(self, request, *args, **kwargs): method reset_filters (line 57) | def reset_filters(self, request, *args, **kwargs): method get_context_data (line 62) | def get_context_data(self, **kwargs): class ManageFiltersView (line 74) | class ManageFiltersView(BulkEditSessionViewMixin, BaseFilterFormView): method get_context_data (line 79) | def get_context_data(self, filter_form=None, **kwargs): method add_filter (line 91) | def add_filter(self, request, *args, **kwargs): method update_filter_order (line 107) | def update_filter_order(self, request, *args, **kwargs): method delete_filter (line 114) | def delete_filter(self, request, *args, **kwargs): FILE: corehq/apps/data_cleaning/views/main.py class BulkEditCasesMainView (line 34) | class BulkEditCasesMainView(BaseProjectDataView): method page_context (line 40) | def page_context(self): class BulkEditCasesSessionView (line 60) | class BulkEditCasesSessionView(BulkEditSessionViewMixin, BaseProjectData... method get_redirect_url (line 71) | def get_redirect_url(self): method case_type (line 75) | def case_type(self): method page_name (line 79) | def page_name(self): method page_url (line 84) | def page_url(self): method parent_pages (line 95) | def parent_pages(self): method page_context (line 104) | def page_context(self): function clear_session_caches (line 135) | def clear_session_caches(request, domain, session_id): function download_form_ids (line 145) | def download_form_ids(request, domain, session_id): FILE: corehq/apps/data_cleaning/views/mixins.py class BulkEditSessionViewMixin (line 10) | class BulkEditSessionViewMixin: method session_id (line 15) | def session_id(self): method get_redirect_url (line 18) | def get_redirect_url(self): method session (line 30) | def session(self): method get_context_data (line 37) | def get_context_data(self, **kwargs): method get (line 47) | def get(self, request, *args, **kwargs): FILE: corehq/apps/data_cleaning/views/start.py class StartCaseSessionView (line 25) | class StartCaseSessionView(LoginAndDomainMixin, DomainViewMixin, HqHtmxA... method get_context_data (line 30) | def get_context_data(self, form=None, next_action=None, **kwargs): method validate_session (line 42) | def validate_session(self, request, *args, **kwargs): method resume_or_restart (line 64) | def resume_or_restart(self, request, *args, **kwargs): method render_session_redirect (line 80) | def render_session_redirect(self, session, creation_method): FILE: corehq/apps/data_cleaning/views/status.py class BaseStatusView (line 26) | class BaseStatusView(LoginAndDomainMixin, DomainViewMixin, HqHtmxActionM... class BulkEditSessionStatusView (line 30) | class BulkEditSessionStatusView(BulkEditSessionViewMixin, BaseStatusView): method seconds_since_complete (line 37) | def seconds_since_complete(self): method is_session_in_progress (line 44) | def is_session_in_progress(self): method weighted_percent_complete (line 48) | def weighted_percent_complete(self): method get_template_names (line 65) | def get_template_names(self): method active_session (line 74) | def active_session(self): method exit_url (line 80) | def exit_url(self): method get_context_data (line 88) | def get_context_data(self, **kwargs): method get (line 103) | def get(self, request, *args, **kwargs): method poll_session_status (line 124) | def poll_session_status(self, request, *args, **kwargs): method resume_session (line 129) | def resume_session(self, request, *args, **kwargs): FILE: corehq/apps/data_cleaning/views/summary.py class ChangesSummaryView (line 21) | class ChangesSummaryView( method get (line 27) | def get(self, request, *args, **kwargs): method undo_changes_summary (line 32) | def undo_changes_summary(self, request, *args, **kwargs): method clear_changes_summary (line 42) | def clear_changes_summary(self, request, *args, **kwargs): method apply_changes_summary (line 53) | def apply_changes_summary(self, request, *args, **kwargs): FILE: corehq/apps/data_cleaning/views/tables.py class BaseDataCleaningTableView (line 37) | class BaseDataCleaningTableView(LoginAndDomainMixin, DomainViewMixin, Se... class EditCasesTableView (line 41) | class EditCasesTableView( method get_host_url (line 47) | def get_host_url(self): method get_first_page (line 58) | def get_first_page(self, request, *args, **kwargs): method get_table_kwargs (line 76) | def get_table_kwargs(self): method get_queryset (line 97) | def get_queryset(self): method get (line 100) | def get(self, request, *args, **kwargs): method clear_filters (line 118) | def clear_filters(self, request, *args, **kwargs): method select_record (line 140) | def select_record(self, request, *args, **kwargs): method select_page (line 161) | def select_page(self, request, *args, **kwargs): method _get_record_count_from_response (line 182) | def _get_record_count_from_response(self, response): method deselect_all (line 194) | def deselect_all(self, request, *args, **kwargs): method select_all (line 210) | def select_all(self, request, *args, **kwargs): method apply_all_changes (line 243) | def apply_all_changes(self, request, *args, **kwargs): method undo_last_change (line 266) | def undo_last_change(self, request, *args, **kwargs): method clear_all_changes (line 278) | def clear_all_changes(self, request, *args, **kwargs): method _trigger_clean_form_refresh (line 289) | def _trigger_clean_form_refresh(self, response): method _render_table_cell_response (line 299) | def _render_table_cell_response(self, doc_id, column, request, *args, ... method _get_cell_request_details (line 325) | def _get_cell_request_details(self, request): method cell_reset_changes (line 334) | def cell_reset_changes(self, request, *args, **kwargs): method cell_inline_edit (line 344) | def cell_inline_edit(self, request, *args, **kwargs): class RecentCaseSessionsTableView (line 354) | class RecentCaseSessionsTableView(BaseDataCleaningTableView): method get_queryset (line 358) | def get_queryset(self): method _get_session_url (line 364) | def _get_session_url(self, session): method _get_record (line 369) | def _get_record(self, session): method _get_active_record (line 382) | def _get_active_record(self, session): FILE: corehq/apps/data_dictionary/bulk.py function process_bulk_upload (line 48) | def process_bulk_upload(bulk_file, domain): function _process_multichoice_sheets (line 69) | def _process_multichoice_sheets(domain, workbook, allowed_value_info, pr... function _process_sheets (line 124) | def _process_sheets(domain, workbook, allowed_value_info): function _process_fhir_resource_type_mapping_sheet (line 213) | def _process_fhir_resource_type_mapping_sheet(domain, worksheet): function _validate_values (line 253) | def _validate_values(allowed_value_info, seen_props, prop_row_info): FILE: corehq/apps/data_dictionary/management/commands/generate_data_dictionary.py class Command (line 8) | class Command(BaseCommand): method add_arguments (line 11) | def add_arguments(self, parser): method handle (line 15) | def handle(self, **options): FILE: corehq/apps/data_dictionary/management/commands/refresh_data_dictionary.py class Command (line 24) | class Command(BaseCommand): method add_arguments (line 31) | def add_arguments(self, parser): method handle (line 45) | def handle(self, **options): FILE: corehq/apps/data_dictionary/migrations/0001_squashed_0002_auto_20161116_2209.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/data_dictionary/migrations/0002_auto_20161118_1537.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/data_dictionary/migrations/0003_auto_20161128_2047.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_dictionary/migrations/0004_auto_20161130_2125.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_dictionary/migrations/0005_casetype_fully_generated.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/data_dictionary/migrations/0006_caseproperty_group.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/data_dictionary/migrations/0007_property_type_choices.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_dictionary/migrations/0008_casepropertyallowedvalue.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/data_dictionary/migrations/0009_caseproperty_label.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_dictionary/migrations/0010_caseproperty_index.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_dictionary/migrations/0011_casepropertygroup.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/data_dictionary/migrations/0012_populate_case_property_groups.py function populate_case_property_group (line 11) | def populate_case_property_group(apps, schema_editor): class Migration (line 20) | class Migration(migrations.Migration): FILE: corehq/apps/data_dictionary/migrations/0013_auto_20230529_1614.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/data_dictionary/migrations/0014_auto_20230705_2007.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_dictionary/migrations/0015_casetype_is_deprecated.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_dictionary/migrations/0016_remove_case_property_group_and_rename_group_obj_caseproperty_group.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_dictionary/migrations/0017_refresh_data_dictionary.py function refresh_data_dictionary (line 12) | def refresh_data_dictionary(apps, schema_editor): class Migration (line 30) | class Migration(migrations.Migration): FILE: corehq/apps/data_dictionary/models.py class CaseType (line 16) | class CaseType(models.Model): class Meta (line 23) | class Meta(object): method __str__ (line 26) | def __str__(self): method get_or_create (line 30) | def get_or_create(cls, domain, case_type): method clear_cache (line 42) | def clear_cache(cls, domain): method save (line 46) | def save(self, *args, **kwargs): method delete (line 50) | def delete(self, *args, **kwargs): class CasePropertyGroup (line 55) | class CasePropertyGroup(models.Model): class Meta (line 67) | class Meta(object): method unique_error_message (line 70) | def unique_error_message(self, model_class, unique_check): class CaseProperty (line 80) | class CaseProperty(models.Model): class DataType (line 82) | class DataType(models.TextChoices): class Meta (line 120) | class Meta(object): method __str__ (line 123) | def __str__(self): method get_or_create (line 129) | def get_or_create(cls, name, case_type, domain): method clear_caches (line 148) | def clear_caches(cls, domain, case_type): method save (line 161) | def save(self, *args, **kwargs): method delete (line 165) | def delete(self, *args, **kwargs): method check_validity (line 169) | def check_validity(self, value): method _validate_date (line 186) | def _validate_date(value): method _validate_number (line 193) | def _validate_number(value): method _validate_select (line 199) | def _validate_select(self, value): method _validate_gps (line 209) | def _validate_gps(value): method _validate_phone_number (line 220) | def _validate_phone_number(value): method valid_values_message (line 229) | def valid_values_message(self): method group_name (line 235) | def group_name(self): class CasePropertyAllowedValue (line 240) | class CasePropertyAllowedValue(models.Model): class Meta (line 250) | class Meta(object): method __str__ (line 253) | def __str__(self): FILE: corehq/apps/data_dictionary/static/data_dictionary/js/data_dictionary.js function subscribePropObservable (line 315) | function subscribePropObservable(prop) { function isNameValid (line 566) | function isNameValid(nameStr) { function doHashNavigation (line 731) | function doHashNavigation() { function ready (line 738) | function ready() { FILE: corehq/apps/data_dictionary/static/data_dictionary/js/partials/case_property_warning.js function casePropertyWarningViewModel (line 6) | function casePropertyWarningViewModel(propertyLimit) { FILE: corehq/apps/data_dictionary/tests/test_import_export.py class DataDictionaryImportTest (line 26) | class DataDictionaryImportTest(TestCase, TestFileMixin): method setUpClass (line 32) | def setUpClass(cls): method tearDownClass (line 44) | def tearDownClass(cls): method setUp (line 49) | def setUp(self): class DataDictionaryImportTestWithDataTypes (line 55) | class DataDictionaryImportTestWithDataTypes(DataDictionaryImportTest): method test_clean_import (line 57) | def test_clean_import(self): method test_broken_import (line 81) | def test_broken_import(self): class DataDictionaryImportTestWithoutDataTypes (line 106) | class DataDictionaryImportTestWithoutDataTypes(DataDictionaryImportTest): method test_import_with_warnings (line 108) | def test_import_with_warnings(self): class DataDictionaryExportTest (line 127) | class DataDictionaryExportTest(DataDictionaryImportTest): method setUpClass (line 130) | def setUpClass(cls): method setUp (line 148) | def setUp(self): class DataDictionaryExportTestWithDataTypes (line 154) | class DataDictionaryExportTestWithDataTypes(DataDictionaryExportTest): method test_export (line 156) | def test_export(self): class DataDictionaryExportTestWithoutDataTypes (line 170) | class DataDictionaryExportTestWithoutDataTypes(DataDictionaryExportTest): method test_export_without_data_type (line 172) | def test_export_without_data_type(self): FILE: corehq/apps/data_dictionary/tests/test_models.py class TestCasePropertyValidation (line 13) | class TestCasePropertyValidation: method test_valid_date (line 14) | def test_valid_date(self): method test_check_invalid_date (line 28) | def test_check_invalid_date(self, value): method test_unvalidated_type (line 33) | def test_unvalidated_type(self): method test_check_valid_number (line 39) | def test_check_valid_number(self, value): method test_check_invalid_number (line 44) | def test_check_invalid_number(self, value): method test_check_valid_gps (line 56) | def test_check_valid_gps(self, value): method test_check_invalid_gps (line 66) | def test_check_invalid_gps(self, value): method test_check_valid_phone_number (line 79) | def test_check_valid_phone_number(self, value): method test_check_invalid_phone_number (line 90) | def test_check_invalid_phone_number(self, value): class TestCasePropertyValidationWithDB (line 96) | class TestCasePropertyValidationWithDB(TestCase): method setUpClass (line 98) | def setUpClass(cls): method test_check_valid_selections (line 115) | def test_check_valid_selections(self): method test_check_invalid_choice (line 119) | def test_check_invalid_choice(self): FILE: corehq/apps/data_dictionary/tests/test_util.py class GenerateDictionaryTest (line 35) | class GenerateDictionaryTest(TestCase): method test_no_types (line 38) | def test_no_types(self, mock): method test_empty_type (line 46) | def test_empty_type(self, mock): method test_no_properties (line 54) | def test_no_properties(self, mock): method test_one_type (line 62) | def test_one_type(self, mock): method test_two_types (line 70) | def test_two_types(self, mock): method test_two_properties (line 78) | def test_two_properties(self, mock): method test_already_existing_property (line 86) | def test_already_existing_property(self, mock): method test_parent_property (line 101) | def test_parent_property(self, mock): class DeleteCasePropertyTest (line 110) | class DeleteCasePropertyTest(TestCase): method setUpClass (line 114) | def setUpClass(cls): method test_delete_case_property (line 123) | def test_delete_case_property(self): class MiscUtilTest (line 134) | class MiscUtilTest(TestCase): method setUpClass (line 138) | def setUpClass(cls): method test_no_data_dict_info (line 186) | def test_no_data_dict_info(self): method test_date_hint (line 191) | def test_date_hint(self): method test_select_hints (line 200) | def test_select_hints(self): method test_get_column_headings (line 216) | def test_get_column_headings(self): method test_map_row_values_to_column_names (line 229) | def test_map_row_values_to_column_names(self): method test_map_row_values_to_column_names_errors (line 244) | def test_map_row_values_to_column_names_errors(self): method test_is_case_type_deprecated (line 250) | def test_is_case_type_deprecated(self): method test_get_data_dict_deprecated_case_types (line 256) | def test_get_data_dict_deprecated_case_types(self): method test_is_case_type_or_prop_name_valid (line 261) | def test_is_case_type_or_prop_name_valid(self): method test_get_case_property_description_dict (line 278) | def test_get_case_property_description_dict(self): method test_get_case_property_label_dict (line 291) | def test_get_case_property_label_dict(self): method test_get_case_property_deprecated_dict (line 304) | def test_get_case_property_deprecated_dict(self): method test_get_case_property_group_name_for_properties (line 316) | def test_get_case_property_group_name_for_properties(self): class TestUnusedCaseTypeAndProperty (line 342) | class TestUnusedCaseTypeAndProperty(TestCase): method setUpClass (line 345) | def setUpClass(cls): method _create_case_block (line 358) | def _create_case_block(cls, case_type, name, props): method test_unused_case_type_returns_true (line 366) | def test_unused_case_type_returns_true(self): method test_used_case_type_returns_false (line 369) | def test_used_case_type_returns_false(self): method test_unused_case_property_returns_true (line 372) | def test_unused_case_property_returns_true(self): method test_used_case_property_returns_false (line 375) | def test_used_case_property_returns_false(self): method test_empty_case_property_returns_true (line 378) | def test_empty_case_property_returns_true(self): method test_null_case_property_returns_true (line 381) | def test_null_case_property_returns_true(self): class TestUpdateUrlQueryParams (line 385) | class TestUpdateUrlQueryParams(SimpleTestCase): method test_add_params (line 388) | def test_add_params(self): method test_update_params (line 392) | def test_update_params(self): method test_no_params (line 396) | def test_no_params(self): class TestGetCasePropertyCount (line 401) | class TestGetCasePropertyCount(TestCase): method test_returns_accurate_count (line 405) | def test_returns_accurate_count(self): method test_exludes_deprecated_properties (line 412) | def test_exludes_deprecated_properties(self): FILE: corehq/apps/data_dictionary/tests/test_views.py class DataDictionaryViewTestBase (line 27) | class DataDictionaryViewTestBase(TestCase): method setUpClass (line 31) | def setUpClass(cls): class UpdateCasePropertyViewTest (line 43) | class UpdateCasePropertyViewTest(DataDictionaryViewTestBase): method setUpClass (line 46) | def setUpClass(cls): method setUp (line 56) | def setUp(self): method _get_property (line 61) | def _get_property(self): method _assert_type (line 67) | def _assert_type(self, value=''): method _get_case_property (line 71) | def _get_case_property(self, name, case_type): method _get_allowed_values_payload (line 77) | def _get_allowed_values_payload(self, prop, all_valid=True): method _assert_allowed_values (line 94) | def _assert_allowed_values(self, prop, payload): method test_new_case_type (line 110) | def test_new_case_type(self): method test_new_case_property (line 121) | def test_new_case_property(self): method test_update_with_incorrect_data_type (line 132) | def test_update_with_incorrect_data_type(self): method test_update_no_name (line 142) | def test_update_no_name(self): method test_update_of_correct_data_type (line 152) | def test_update_of_correct_data_type(self): method test_update_description (line 162) | def test_update_description(self): method test_allowed_values_all_valid (line 174) | def test_allowed_values_all_valid(self): method test_allowed_values_with_invalid_one (line 181) | def test_allowed_values_with_invalid_one(self): method test_update_with_group_name (line 190) | def test_update_with_group_name(self): method test_update_with_no_group_name (line 203) | def test_update_with_no_group_name(self): method test_delete_case_property (line 221) | def test_delete_case_property(self): class DataDictionaryViewTest (line 234) | class DataDictionaryViewTest(TestCase): method make_user_with_data_dict_role (line 238) | def make_user_with_data_dict_role(email, domain_obj, has_data_dict_acc... method setUpClass (line 256) | def setUpClass(cls): method test_has_view_access (line 277) | def test_has_view_access(self): method test_no_view_access (line 282) | def test_no_view_access(self): class TestDeprecateOrRestoreCaseTypeView (line 289) | class TestDeprecateOrRestoreCaseTypeView(DataDictionaryViewTestBase): method setUpClass (line 292) | def setUpClass(cls): method setUp (line 301) | def setUp(self): method _update_deprecate_state (line 309) | def _update_deprecate_state(self, is_deprecated): method test_deprecate_case_type (line 316) | def test_deprecate_case_type(self): method test_restore_case_type (line 336) | def test_restore_case_type(self): class DataDictionaryJsonCaseTypesTest (line 361) | class DataDictionaryJsonCaseTypesTest(DataDictionaryViewTestBase): method setUpClass (line 364) | def setUpClass(cls): method setUp (line 376) | def setUp(self): method test_no_access (line 379) | def test_no_access(self, *args): method test_expected_keys_for_case_type (line 385) | def test_expected_keys_for_case_type(self): method test_app_module_count (line 399) | def test_app_module_count(self): method test_property_count (line 410) | def test_property_count(self): method test_deprecated_property_count (line 420) | def test_deprecated_property_count(self): method test_deprecated_case_types (line 432) | def test_deprecated_case_types(self): method test_is_safe_to_delete (line 443) | def test_is_safe_to_delete(self): method test_fhir_integration (line 454) | def test_fhir_integration(self): method test_geo_case_property (line 469) | def test_geo_case_property(self): class DataDictionaryJsonCasePropertiesTest (line 476) | class DataDictionaryJsonCasePropertiesTest(DataDictionaryViewTestBase): method setUpClass (line 479) | def setUpClass(cls): method setUp (line 488) | def setUp(self): method case_properties_endpoint (line 492) | def case_properties_endpoint(cls, case_type=None): method test_no_access (line 498) | def test_no_access(self): method test_unknown_case_type (line 504) | def test_unknown_case_type(self): method test_expected_keys_for_case_properties_endpoint (line 508) | def test_expected_keys_for_case_properties_endpoint(self): method test_property_count (line 520) | def test_property_count(self): method test_deprecated_property_count (line 528) | def test_deprecated_property_count(self): method test_illegal_values_in_pagination (line 538) | def test_illegal_values_in_pagination(self): method test_pagination (line 542) | def test_pagination(self): method test_expected_keys_for_group (line 571) | def test_expected_keys_for_group(self): method test_deprecated_group (line 587) | def test_deprecated_group(self): method test_index_for_group (line 602) | def test_index_for_group(self): method test_expected_keys_for_case_property (line 626) | def test_expected_keys_for_case_property(self): method test_validation_feature_flag (line 649) | def test_validation_feature_flag(self): method test_fhir_resource_prop_path (line 655) | def test_fhir_resource_prop_path(self): method test_is_safe_to_delete (line 674) | def test_is_safe_to_delete(self): class TestDeleteCaseType (line 699) | class TestDeleteCaseType(DataDictionaryViewTestBase): method setUpClass (line 702) | def setUpClass(cls): method setUp (line 710) | def setUp(self): method test_delete_case_type (line 718) | def test_delete_case_type(self): FILE: corehq/apps/data_dictionary/tests/utils.py function setup_data_dictionary (line 4) | def setup_data_dictionary(domain, case_type_name, prop_list=None, allowe... FILE: corehq/apps/data_dictionary/util.py function generate_data_dictionary (line 30) | def generate_data_dictionary(domain): function _get_properties_by_case_type (line 37) | def _get_properties_by_case_type(domain): function _get_case_properties_from_export_schema (line 52) | def _get_case_properties_from_export_schema(domain, case_type): function _get_current_case_types_and_properties (line 68) | def _get_current_case_types_and_properties(domain): function add_properties_to_data_dictionary (line 83) | def add_properties_to_data_dictionary(domain, case_type, properties): function create_properties_for_case_types (line 87) | def create_properties_for_case_types(domain, case_type_to_prop): function get_case_property_description_dict (line 118) | def get_case_property_description_dict(domain): function get_case_property_label_dict (line 137) | def get_case_property_label_dict(domain): function get_case_property_deprecated_dict (line 156) | def get_case_property_deprecated_dict(domain): function get_values_hints_dict (line 176) | def get_values_hints_dict(domain, case_type_name): function get_deprecated_fields (line 188) | def get_deprecated_fields(domain, case_type_name): function save_case_property_group (line 196) | def save_case_property_group(id, name, case_type, domain, description, i... function save_case_property (line 225) | def save_case_property(name, case_type, domain=None, data_type=None, function delete_case_property (line 291) | def delete_case_property(name, case_type, domain): function get_data_dict_props_by_case_type (line 300) | def get_data_dict_props_by_case_type(domain, exclude_deprecated=True): function get_data_dict_case_types (line 316) | def get_data_dict_case_types(domain, is_deprecated=False): function get_data_dict_deprecated_case_types (line 321) | def get_data_dict_deprecated_case_types(domain): function get_case_properties_by_name (line 326) | def get_case_properties_by_name(domain, case_type_name): function get_gps_properties (line 335) | def get_gps_properties(domain, case_type): function get_column_headings (line 343) | def get_column_headings(row, valid_values, sheet_name, case_prop_name=No... function map_row_values_to_column_names (line 369) | def map_row_values_to_column_names(row, column_headings, sheet_name, def... function is_case_type_deprecated (line 384) | def is_case_type_deprecated(domain, case_type): function is_case_type_or_prop_name_valid (line 392) | def is_case_type_or_prop_name_valid(case_prop_name): function is_case_type_unused (line 399) | def is_case_type_unused(domain, case_type): function is_case_property_unused (line 404) | def is_case_property_unused(domain, case_type, case_property): function get_case_properties (line 409) | def get_case_properties(domain, case_type_name): function get_case_property_group_name_for_properties (line 418) | def get_case_property_group_name_for_properties(domain, case_type_name): function update_url_query_params (line 427) | def update_url_query_params(url, params): function get_case_property_count (line 436) | def get_case_property_count(domain, case_type): FILE: corehq/apps/data_dictionary/views.py function data_dictionary_json_case_types (line 71) | def data_dictionary_json_case_types(request, domain): function data_dictionary_json_case_properties (line 105) | def data_dictionary_json_case_properties(request, domain, case_type_name): function _get_pagination_links (line 218) | def _get_pagination_links(current_url, total_records, skip, limit): function create_case_type (line 233) | def create_case_type(request, domain): function deprecate_or_restore_case_type (line 251) | def deprecate_or_restore_case_type(request, domain, case_type_name): function delete_case_type (line 266) | def delete_case_type(request, domain, case_type_name): function update_case_property (line 281) | def update_case_property(request, domain): function _update_fhir_resource_type (line 337) | def _update_fhir_resource_type(request, domain): function update_case_property_description (line 356) | def update_case_property_description(request, domain): function _export_data_dictionary (line 367) | def _export_data_dictionary(domain): function _generate_data_for_export (line 396) | def _generate_data_for_export(domain, export_fhir_data): function _add_fhir_resource_mapping_sheet (line 440) | def _add_fhir_resource_mapping_sheet(case_type_data, fhir_resource_type_... function _get_headers_for_export (line 451) | def _get_headers_for_export(export_fhir_data, case_type_headers, case_pr... function _export_fhir_data (line 465) | def _export_fhir_data(writer, case_type_headers, case_type_data): function _export_case_prop_data (line 473) | def _export_case_prop_data(writer, case_prop_headers, case_prop_data, al... class ExportDataDictionaryView (line 488) | class ExportDataDictionaryView(View): method dispatch (line 492) | def dispatch(self, request, *args, **kwargs): method get (line 495) | def get(self, request, domain, *args, **kwargs): class DataDictionaryView (line 503) | class DataDictionaryView(BaseProjectDataView): method dispatch (line 512) | def dispatch(self, request, *args, **kwargs): method main_context (line 516) | def main_context(self): class UploadDataDictionaryView (line 541) | class UploadDataDictionaryView(BaseProjectDataView): method dispatch (line 549) | def dispatch(self, request, *args, **kwargs): method parent_pages (line 553) | def parent_pages(self): method page_context (line 560) | def page_context(self): method post (line 575) | def post(self, request, *args, **kwargs): FILE: corehq/apps/data_interfaces/admin.py class DomainCaseRuleRunAdmin (line 9) | class DomainCaseRuleRunAdmin(admin.ModelAdmin): class CaseRuleSubmissionAdmin (line 30) | class CaseRuleSubmissionAdmin(admin.ModelAdmin): FILE: corehq/apps/data_interfaces/app_config.py class DataInterfacesAppConfig (line 6) | class DataInterfacesAppConfig(AppConfig): method ready (line 9) | def ready(self): FILE: corehq/apps/data_interfaces/deduplication.py function _get_es_filtered_case_query (line 22) | def _get_es_filtered_case_query(domain, case, case_filter_criteria=None): function _get_owner_ids_for_definition (line 65) | def _get_owner_ids_for_definition(domain, location_definition): function case_exists_in_es (line 74) | def case_exists_in_es( function find_duplicate_case_ids (line 99) | def find_duplicate_case_ids( function add_case_properties_to_query (line 133) | def add_case_properties_to_query(es, case, case_properties, match_type): function reset_and_backfill_deduplicate_rule (line 166) | def reset_and_backfill_deduplicate_rule(rule): function reset_deduplicate_rule (line 183) | def reset_deduplicate_rule(rule): function backfill_deduplicate_rule (line 196) | def backfill_deduplicate_rule(domain, rule): function get_dedupe_xmlns (line 236) | def get_dedupe_xmlns(rule): function is_dedupe_xmlns (line 241) | def is_dedupe_xmlns(xmlns): FILE: corehq/apps/data_interfaces/dispatcher.py class EditDataInterfaceDispatcher (line 16) | class EditDataInterfaceDispatcher(ReportDispatcher): method dispatch (line 22) | def dispatch(self, request, *args, **kwargs): method bulk_import_case_dispatch (line 35) | def bulk_import_case_dispatch(self, request, *args, **kwargs): method bulk_form_management_dispatch (line 39) | def bulk_form_management_dispatch(self, request, *args, **kwargs): method permissions_check (line 42) | def permissions_check(self, report, request, domain=None, is_navigatio... class BulkEditDataInterfaceDispatcher (line 56) | class BulkEditDataInterfaceDispatcher(EditDataInterfaceDispatcher): method allowed_renderings (line 59) | def allowed_renderings(cls): FILE: corehq/apps/data_interfaces/forms.py function true_or_false (line 43) | def true_or_false(value): function remove_quotes (line 52) | def remove_quotes(value): function is_valid_case_property_name (line 60) | def is_valid_case_property_name(value): function validate_case_property_characters (line 70) | def validate_case_property_characters(value): function validate_case_property_name (line 77) | def validate_case_property_name(value, allow_parent_case_references=True): function hidden_bound_field (line 109) | def hidden_bound_field(field_name, data_value): function validate_case_property_value (line 117) | def validate_case_property_value(value): function validate_non_negative_days (line 128) | def validate_non_negative_days(value): class AddCaseGroupForm (line 140) | class AddCaseGroupForm(forms.Form): method __init__ (line 143) | def __init__(self, *args, **kwargs): method create_group (line 157) | def create_group(self, domain): class UpdateCaseGroupForm (line 166) | class UpdateCaseGroupForm(AddCaseGroupForm): method __init__ (line 170) | def __init__(self, *args, **kwargs): method clean (line 191) | def clean(self): method update_group (line 201) | def update_group(self): class AddCaseToGroupForm (line 207) | class AddCaseToGroupForm(forms.Form): method __init__ (line 210) | def __init__(self, *args, **kwargs): class CaseUpdateRuleForm (line 227) | class CaseUpdateRuleForm(forms.Form): method compute_initial (line 237) | def compute_initial(self, domain, rule): method __init__ (line 242) | def __init__(self, domain, *args, **kwargs): class CaseRuleCriteriaForm (line 266) | class CaseRuleCriteriaForm(forms.Form): method current_values (line 295) | def current_values(self): method constants (line 309) | def constants(self): method compute_initial (line 322) | def compute_initial(self, domain, rule): method show_fieldset_title (line 369) | def show_fieldset_title(self): method fieldset_help_text (line 373) | def fieldset_help_text(self): method allow_parent_case_references (line 377) | def allow_parent_case_references(self): method allow_case_modified_filter (line 381) | def allow_case_modified_filter(self): method allow_case_property_filter (line 385) | def allow_case_property_filter(self): method allow_date_case_property_filter (line 389) | def allow_date_case_property_filter(self): method allow_ucr_filter (line 393) | def allow_ucr_filter(self): method allow_regex_case_property_match (line 397) | def allow_regex_case_property_match(self): method allow_locations_filter (line 405) | def allow_locations_filter(self): method allow_custom_filter (line 409) | def allow_custom_filter(self): method __init__ (line 412) | def __init__(self, domain, *args, **kwargs): method user_locations (line 462) | def user_locations(self): method requires_system_admin_to_edit (line 473) | def requires_system_admin_to_edit(self): method requires_system_admin_to_save (line 482) | def requires_system_admin_to_save(self): method _json_fail_hard (line 485) | def _json_fail_hard(self): method set_case_type_choices (line 488) | def set_case_type_choices(self, initial): method clean_filter_on_server_modified (line 499) | def clean_filter_on_server_modified(self): method clean_server_modified_boundary (line 502) | def clean_server_modified_boundary(self): method clean_custom_match_definitions (line 510) | def clean_custom_match_definitions(self): method clean_property_match_definitions (line 537) | def clean_property_match_definitions(self): method clean_filter_on_closed_parent (line 620) | def clean_filter_on_closed_parent(self): method clean_location_filter_definition (line 623) | def clean_location_filter_definition(self): method clean_ucr_filter_definitions (line 639) | def clean_ucr_filter_definitions(self): method save_criteria (line 665) | def save_criteria(self, rule, save_meta=True): class CaseRuleActionsForm (line 725) | class CaseRuleActionsForm(forms.Form): method current_values (line 735) | def current_values(self): method compute_initial (line 742) | def compute_initial(self, domain, rule): method __init__ (line 760) | def __init__(self, domain, *args, **kwargs): method constants (line 791) | def constants(self): method requires_system_admin_to_edit (line 799) | def requires_system_admin_to_edit(self): method requires_system_admin_to_save (line 808) | def requires_system_admin_to_save(self): method _json_fail_hard (line 811) | def _json_fail_hard(self): method clean_close_case (line 814) | def clean_close_case(self): method clean_properties_to_update (line 817) | def clean_properties_to_update(self): method clean_custom_action_definitions (line 860) | def clean_custom_action_definitions(self): method clean (line 887) | def clean(self): method save_actions (line 902) | def save_actions(self, rule): class DedupeCaseFilterForm (line 925) | class DedupeCaseFilterForm(CaseRuleCriteriaForm): method fieldset_help_text (line 935) | def fieldset_help_text(self): method allow_case_modified_filter (line 939) | def allow_case_modified_filter(self): method allow_case_property_filter (line 943) | def allow_case_property_filter(self): method allow_date_case_property_filter (line 947) | def allow_date_case_property_filter(self): method allow_locations_filter (line 951) | def allow_locations_filter(self): method allow_parent_case_references (line 955) | def allow_parent_case_references(self): method allow_custom_filter (line 959) | def allow_custom_filter(self): method __init__ (line 962) | def __init__(self, domain, *args, **kwargs): method clean_filter_on_server_modified (line 984) | def clean_filter_on_server_modified(self): method clean_server_modified_boundary (line 987) | def clean_server_modified_boundary(self): method clean_custom_match_definitions (line 990) | def clean_custom_match_definitions(self): method clean_filter_on_closed_parent (line 993) | def clean_filter_on_closed_parent(self): method clean_ucr_filter_definitions (line 996) | def clean_ucr_filter_definitions(self): FILE: corehq/apps/data_interfaces/interfaces.py class DataInterface (line 27) | class DataInterface(GenericReportView): method default_report_url (line 36) | def default_report_url(self): class BulkDataInterface (line 40) | class BulkDataInterface(DataInterface): class CaseReassignmentInterface (line 45) | class CaseReassignmentInterface(CaseListMixin, BulkDataInterface): method es_results (line 55) | def es_results(self): method _es_query (line 59) | def _es_query(self): method template_context (line 65) | def template_context(self): method all_case_sharing_groups (line 76) | def all_case_sharing_groups(self): method accessible_case_sharing_locations (line 79) | def accessible_case_sharing_locations(self, user): method headers (line 83) | def headers(self): method rows (line 97) | def rows(self): method bulk_response (line 117) | def bulk_response(self): method bulk_url (line 156) | def bulk_url(self, download_id): method bulk_async_task (line 164) | def bulk_async_task(): method additional_bulk_action_params (line 169) | def additional_bulk_action_params(self): class CaseCopyInterface (line 174) | class CaseCopyInterface(CaseReassignmentInterface): method es_results (line 184) | def es_results(self): method fields (line 193) | def fields(self): method bulk_async_task (line 202) | def bulk_async_task(): method additional_bulk_action_params (line 207) | def additional_bulk_action_params(self): method _parse_sensitive_props (line 213) | def _parse_sensitive_props(props): class FormManagementMode (line 217) | class FormManagementMode(object): method __init__ (line 227) | def __init__(self, mode, validate=False): method validate_mode (line 256) | def validate_mode(cls, mode): method is_archive_mode (line 261) | def is_archive_mode(self): class ArchiveOrNormalFormFilter (line 265) | class ArchiveOrNormalFormFilter(BaseSingleOptionFilter): method options (line 280) | def options(self): method selected (line 284) | def selected(self): class BulkFormManagementInterface (line 289) | class BulkFormManagementInterface(SubmitHistoryMixin, DataInterface, Pro... method __init__ (line 295) | def __init__(self, request, **kwargs): method template_context (line 301) | def template_context(self): method es_query (line 311) | def es_query(self): method headers (line 319) | def headers(self): method rows (line 343) | def rows(self): method form_ids_response (line 357) | def form_ids_response(self): FILE: corehq/apps/data_interfaces/management/commands/get_case_rule_submissions.py class Command (line 12) | class Command(BaseCommand): method add_arguments (line 15) | def add_arguments(self, parser): method handle (line 39) | def handle(self, *args, **options): FILE: corehq/apps/data_interfaces/management/commands/undo_case_rule_submissions.py class Command (line 11) | class Command(BaseCommand): method add_arguments (line 14) | def add_arguments(self, parser): method validate_since (line 30) | def validate_since(self, since): method print_description (line 38) | def print_description(self, domain, rule_id, since, count, undoer): method handle (line 57) | def handle(self, *args, **options): FILE: corehq/apps/data_interfaces/migrations/0001_initial.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0002_remove_exists_option.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0003_update__automaticupdaterulecriteria__match_type__choices.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0004_optional_modified_date_and_prop_type_choices.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0005_remove_match_type_choices.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0006_case_rule_refactor.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0007_logging_models.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0008_update_case_rulesubmission.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0009_scheduling_integration.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0010_automaticupdaterule_workflow.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0011_domaincaserulerun_num_creates.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0012_createscheduleinstanceactiondefinition_reset_case_property_name.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0013_createscheduleinstanceactiondefinition_scheduler_module_info.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0014_createscheduleinstanceactiondefinition_start_date_case_property.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0015_automaticupdaterule_locked_for_editing.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0016_createscheduleinstanceactiondefinition_specific_start_date.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0017_alter_domaincaserulerun.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0018_check_for_rule_migration.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0019_remove_old_rule_models.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0020_make_migrated_nullable.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0021_remove_automaticupdaterule_migrated.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0022_domaincaserulerun_case_type.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0023_auto_20210914_1726.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0024_add_automaticupdaterule_upstream_id.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0025_domaincaserulerun_num_errors.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0026_automaticupdaterule_criteria_operator.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0027_auto_20220511_2017.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0028_auto_20220420_1301.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0029_locationfilterdefinition_include_child_locations.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0030_add_workflow_choices.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0031_add_domaincaserulerun_status_choices.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0032_bootstrap_audit_events_for_update_rules.py function bootstrap_audit_events_for_automatic_update_rule (line 8) | def bootstrap_audit_events_for_automatic_update_rule(apps, schema_editor): class Migration (line 14) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0033_automaticupdaterule_deleted_on.py function set_deleted_on_field (line 7) | def set_deleted_on_field(apps, schema_editor): class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0034_case_name_actions.py function forwards (line 5) | def forwards(apps, schema_editor): function backwards (line 9) | def backwards(apps, schema_editor): function replace_property_value (line 13) | def replace_property_value(old_value, new_value): class Migration (line 24) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0035_add_case_duplicate_new.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0036_backfill_dedupe_match_values.py function forwards_func (line 9) | def forwards_func(apps, schema_editor): function reverse_func (line 14) | def reverse_func(apps, schema_editor): function process_records (line 20) | def process_records(batch_size=500, db_alias=None): function batch_query (line 34) | def batch_query(db_alias, model, query, batch_size): class Migration (line 39) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0037_add_dedupe_update_toggle.py function add_dedupe_update_toggle (line 9) | def add_dedupe_update_toggle(apps, schema_editor): function reverse (line 14) | def reverse(apps, schema_editor): class Migration (line 19) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0038_alter_caseduplicate_potential_duplicates.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/migrations/0039_rename_caserulesubmission_domain_created_on_data_interf_domain_718740_idx_and_more.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/data_interfaces/models.py function _try_date_conversion (line 85) | def _try_date_conversion(date_or_string): class AutomaticUpdateRule (line 98) | class AutomaticUpdateRule(models.Model): class CriteriaOperator (line 123) | class CriteriaOperator(models.TextChoices): class Meta (line 139) | class Meta(object): class MigrationError (line 149) | class MigrationError(Exception): class RuleError (line 152) | class RuleError(Exception): method __str__ (line 155) | def __str__(self): method references_parent_case (line 159) | def references_parent_case(self): method by_domain (line 191) | def by_domain(cls, domain, workflow, active_only=True): method domain_has_conditional_alerts (line 204) | def domain_has_conditional_alerts(cls, domain): method by_domain_cached (line 209) | def by_domain_cached(cls, domain, workflow, active_only=True): method organize_rules_by_case_type (line 221) | def organize_rules_by_case_type(cls, rules): method get_boundary_date (line 231) | def get_boundary_date(rules, now): method iter_cases (line 247) | def iter_cases(cls, domain, case_type, db=None, modified_lte=None, inc... method activate (line 263) | def activate(self, active=True): method soft_delete (line 272) | def soft_delete(self): method hard_delete (line 293) | def hard_delete(self): method memoized_criteria (line 301) | def memoized_criteria(self): method memoized_actions (line 312) | def memoized_actions(self): method run_rule (line 320) | def run_rule(self, case, now): method criteria_match (line 338) | def criteria_match(self, case, now): method _run_method_on_action_definitions (line 372) | def _run_method_on_action_definitions(self, case, method): method run_actions_when_case_matches (line 385) | def run_actions_when_case_matches(self, case): method run_actions_when_case_does_not_match (line 388) | def run_actions_when_case_does_not_match(self, case): method delete_criteria (line 391) | def delete_criteria(self): method delete_actions (line 397) | def delete_actions(self): method log_submission (line 403) | def log_submission(self, form_id): method add_criteria (line 411) | def add_criteria(self, definition_class, **definition_kwargs): method add_action (line 418) | def add_action(self, definition_class, **definition_kwargs): method save (line 425) | def save(self, *args, **kwargs): method clear_caches (line 432) | def clear_caches(cls, domain, workflow): method get_action_definition (line 442) | def get_action_definition(self): method get_schedule (line 456) | def get_schedule(self): method to_json (line 459) | def to_json(self): method to_dict (line 482) | def to_dict(self): class CaseRuleCriteria (line 497) | class CaseRuleCriteria(models.Model): method definition (line 506) | def definition(self): method definition (line 521) | def definition(self, value): method to_dict (line 540) | def to_dict(self): class CaseRuleCriteriaDefinition (line 554) | class CaseRuleCriteriaDefinition(models.Model): class Meta (line 556) | class Meta(object): method matches (line 559) | def matches(self, case, now): class MatchPropertyDefinition (line 563) | class MatchPropertyDefinition(CaseRuleCriteriaDefinition): method get_case_values (line 592) | def get_case_values(self, case): method clean_datetime (line 596) | def clean_datetime(self, timestamp): method check_days_less_than (line 606) | def check_days_less_than(self, case, now): method check_days_less_or_equal (line 609) | def check_days_less_or_equal(self, case, now): method check_days_greater_than (line 612) | def check_days_greater_than(self, case, now): method check_days_greater_or_equal (line 615) | def check_days_greater_or_equal(self, case, now): method check_days (line 618) | def check_days(self, case, now, predicate): method check_equal (line 636) | def check_equal(self, case, now): method check_not_equal (line 641) | def check_not_equal(self, case, now): method check_has_value (line 646) | def check_has_value(self, case, now): method check_has_no_value (line 657) | def check_has_no_value(self, case, now): method check_regex (line 660) | def check_regex(self, case, now): method matches (line 676) | def matches(self, case, now): method to_dict (line 689) | def to_dict(self): class CustomMatchDefinition (line 697) | class CustomMatchDefinition(CaseRuleCriteriaDefinition): method matches (line 700) | def matches(self, case, now): method to_dict (line 712) | def to_dict(self): class ClosedParentDefinition (line 718) | class ClosedParentDefinition(CaseRuleCriteriaDefinition): method matches (line 725) | def matches(self, case, now): class LocationFilterDefinition (line 735) | class LocationFilterDefinition(CaseRuleCriteriaDefinition): method matches (line 740) | def matches(self, case, now): method location (line 759) | def location(self): method get_location_ids (line 762) | def get_location_ids(self): method to_dict (line 770) | def to_dict(self): class UCRFilterDefinition (line 777) | class UCRFilterDefinition(CaseRuleCriteriaDefinition): method _parsed_filter (line 781) | def _parsed_filter(self, domain): method matches (line 785) | def matches(self, case, now): method to_dict (line 790) | def to_dict(self): class CaseRuleAction (line 796) | class CaseRuleAction(models.Model): method definition (line 806) | def definition(self): method definition (line 819) | def definition(self, value): method to_dict (line 835) | def to_dict(self): class CaseRuleActionResult (line 850) | class CaseRuleActionResult(object): method __eq__ (line 852) | def __eq__(self, other): method _validate_int (line 857) | def _validate_int(self, value): method __init__ (line 861) | def __init__(self, num_updates=0, num_closes=0, num_related_updates=0, method add_result (line 877) | def add_result(self, result): method total_updates (line 886) | def total_updates(self): class CaseRuleActionDefinition (line 896) | class CaseRuleActionDefinition(models.Model): class Meta (line 898) | class Meta(object): method when_case_matches (line 901) | def when_case_matches(self, case, rule): method when_case_does_not_match (line 908) | def when_case_does_not_match(self, case, rule): class BaseUpdateCaseDefinition (line 917) | class BaseUpdateCaseDefinition(CaseRuleActionDefinition): class Meta (line 918) | class Meta(object): class PropertyDefinition (line 933) | class PropertyDefinition(JsonObject): method get_properties_to_update (line 946) | def get_properties_to_update(self): method set_properties_to_update (line 949) | def set_properties_to_update(self, properties): method get_case_and_ancestor_updates (line 962) | def get_case_and_ancestor_updates(self, case): method get_cases_to_update (line 1007) | def get_cases_to_update(self): class UpdateCaseDefinition (line 1011) | class UpdateCaseDefinition(BaseUpdateCaseDefinition): method when_case_matches (line 1015) | def when_case_matches(self, case, rule): method to_dict (line 1056) | def to_dict(self): class CustomActionDefinition (line 1063) | class CustomActionDefinition(CaseRuleActionDefinition): method when_case_matches (line 1066) | def when_case_matches(self, case, rule): method to_dict (line 1078) | def to_dict(self): class CaseDeduplicationMatchTypeChoices (line 1084) | class CaseDeduplicationMatchTypeChoices: function case_matching_rule_criteria_exists_in_es (line 1093) | def case_matching_rule_criteria_exists_in_es(case, rule): function find_matching_case_ids_in_es (line 1109) | def find_matching_case_ids_in_es(case, rule, limit=0): class CaseDeduplicationActionDefinition (line 1122) | class CaseDeduplicationActionDefinition(BaseUpdateCaseDefinition): method from_rule (line 1128) | def from_rule(cls, rule): method properties_fit_definition (line 1144) | def properties_fit_definition(self, case_properties): method when_case_matches (line 1158) | def when_case_matches(self, case, rule): method _handle_case_duplicate (line 1161) | def _handle_case_duplicate(self, case, rule): method _case_was_modified (line 1225) | def _case_was_modified(self, existing_duplicate, case_became_closed, c... method _track_fixed_case (line 1233) | def _track_fixed_case(self, case): method _create_duplicates (line 1251) | def _create_duplicates(self, case, rule, current_hash): method _get_case_ids_not_recorded_as_duplicates (line 1277) | def _get_case_ids_not_recorded_as_duplicates(self, all_ids): method _update_duplicates (line 1283) | def _update_duplicates(self, duplicate_ids, case, rule): method _update_cases (line 1290) | def _update_cases(self, domain, rule, duplicate_case_ids): method _get_case_updates (line 1305) | def _get_case_updates(self, duplicate_cases, domain): method to_dict (line 1314) | def to_dict(self): class CaseDuplicateNew (line 1322) | class CaseDuplicateNew(models.Model): class Meta (line 1328) | class Meta: method __str__ (line 1335) | def __str__(self): method delete (line 1341) | def delete(self, *args, check_for_orphans=True, **kwargs): method create (line 1354) | def create(cls, case, action, save=True): method get_case_ids (line 1362) | def get_case_ids(cls, rule_id): method remove_duplicates_for_case_ids (line 1377) | def remove_duplicates_for_case_ids(cls, case_ids): method case_and_action_to_hash (line 1384) | def case_and_action_to_hash(cls, case, action): function hash_arguments (line 1393) | def hash_arguments(*args): class CaseDuplicate (line 1417) | class CaseDuplicate(models.Model): class Meta (line 1423) | class Meta: method __str__ (line 1426) | def __str__(self): method get_case_ids (line 1430) | def get_case_ids(cls, rule_id): method bulk_remove_unique_cases (line 1445) | def bulk_remove_unique_cases(cls, case_ids): method remove_unique_cases (line 1459) | def remove_unique_cases(cls, action, case_id): method remove_duplicates_for_action (line 1472) | def remove_duplicates_for_action(cls, action, case_id): method remove_duplicates_for_case_ids (line 1476) | def remove_duplicates_for_case_ids(cls, case_ids): method bulk_create_duplicate_relationships (line 1482) | def bulk_create_duplicate_relationships(cls, action, initial_case, dup... class VisitSchedulerIntegrationHelper (line 1514) | class VisitSchedulerIntegrationHelper(object): class VisitSchedulerIntegrationException (line 1516) | class VisitSchedulerIntegrationException(Exception): method __init__ (line 1519) | def __init__(self, case, scheduler_module_info): method get_visit_scheduler_module_and_form (line 1525) | def get_visit_scheduler_module_and_form(cls, domain, app_id, form_uniq... method get_visit_scheduler_form_phase (line 1546) | def get_visit_scheduler_form_phase(self, module): method calculate_window_date (line 1555) | def calculate_window_date(self, visit, visit_due_date): method get_case_current_schedule_phase (line 1569) | def get_case_current_schedule_phase(self): method get_visit (line 1576) | def get_visit(self, form): method get_anchor_date (line 1587) | def get_anchor_date(self, anchor_case_property): method get_result (line 1598) | def get_result(self): class CreateScheduleInstanceActionDefinition (line 1615) | class CreateScheduleInstanceActionDefinition(CaseRuleActionDefinition): class SchedulerModuleInfo (line 1646) | class SchedulerModuleInfo(JsonObject): method schedule (line 1667) | def schedule(self): method schedule (line 1676) | def schedule(self, value): method notify_scheduler_integration_exception (line 1692) | def notify_scheduler_integration_exception(self, case, scheduler_modul... method get_date_from_start_date_case_property (line 1704) | def get_date_from_start_date_case_property(self, case): method when_case_matches (line 1717) | def when_case_matches(self, case, rule): method when_case_does_not_match (line 1763) | def when_case_does_not_match(self, case, rule): method delete_schedule_instances (line 1767) | def delete_schedule_instances(self, case): method get_scheduler_module_info (line 1774) | def get_scheduler_module_info(self): method set_scheduler_module_info (line 1777) | def set_scheduler_module_info(self, info): method to_dict (line 1783) | def to_dict(self): class CaseRuleSubmission (line 1793) | class CaseRuleSubmission(models.Model): class Meta (line 1812) | class Meta(object): class CaseRuleUndoer (line 1819) | class CaseRuleUndoer(object): method __init__ (line 1821) | def __init__(self, domain, rule_id=None, since=None): method get_submission_queryset (line 1826) | def get_submission_queryset(self): method bulk_undo (line 1840) | def bulk_undo(self, progress_bar=False): class DomainCaseRuleRun (line 1875) | class DomainCaseRuleRun(models.Model): class Meta (line 1904) | class Meta(object): method done (line 1908) | def done(cls, run_id, cases_checked, result, db=None, halted=False): FILE: corehq/apps/data_interfaces/pillow.py class CaseDeduplicationProcessor (line 18) | class CaseDeduplicationProcessor(PillowProcessor): method process_change (line 30) | def process_change(self, change): method _is_system_change (line 49) | def _is_system_change(change): method _get_applicable_rules (line 62) | def _get_applicable_rules(self, change, case): method _get_rules (line 85) | def _get_rules(self, domain): method _get_associated_form (line 88) | def _get_associated_form(self, change): method _is_applicable (line 104) | def _is_applicable(self, rule, case, case_properties, form_id): FILE: corehq/apps/data_interfaces/signals.py function case_changed_receiver (line 6) | def case_changed_receiver(sender, case, **kwargs): FILE: corehq/apps/data_interfaces/static/data_interfaces/js/archive_forms.js function updateFormCounts (line 9) | function updateFormCounts() { function toggleButton (line 15) | function toggleButton(count) { function selectNone (line 23) | function selectNone() { FILE: corehq/apps/data_interfaces/static/data_interfaces/js/bootstrap3/case_dedupe_main.js function handleCaseTypeChange (line 52) | function handleCaseTypeChange(caseType) { function resetAvailableProperties (line 68) | function resetAvailableProperties() { function clonePropertyMap (line 73) | function clonePropertyMap(originalMap) { function propertyExistsInOriginalMap (line 82) | function propertyExistsInOriginalMap(propName) { function rebuildPropertyMap (line 88) | function rebuildPropertyMap(changedCategory) { function restoreProperty (line 96) | function restoreProperty(propName, currentProperties) { function reserveProperties (line 107) | function reserveProperties(propertyNames, currentProperties) { FILE: corehq/apps/data_interfaces/static/data_interfaces/js/bootstrap3/case_management.js function updateRows (line 45) | function updateRows(caseIds, action, caseCount, newOwner) { function selectAll (line 262) | function selectAll() { function selectNone (line 266) | function selectNone() { FILE: corehq/apps/data_interfaces/static/data_interfaces/js/bootstrap5/case_dedupe_main.js function handleCaseTypeChange (line 52) | function handleCaseTypeChange(caseType) { function resetAvailableProperties (line 68) | function resetAvailableProperties() { function clonePropertyMap (line 73) | function clonePropertyMap(originalMap) { function propertyExistsInOriginalMap (line 82) | function propertyExistsInOriginalMap(propName) { function rebuildPropertyMap (line 88) | function rebuildPropertyMap(changedCategory) { function restoreProperty (line 96) | function restoreProperty(propName, currentProperties) { function reserveProperties (line 107) | function reserveProperties(propertyNames, currentProperties) { FILE: corehq/apps/data_interfaces/static/data_interfaces/js/bootstrap5/case_management.js function updateRows (line 45) | function updateRows(caseIds, action, caseCount, newOwner) { function selectAll (line 262) | function selectAll() { function selectNone (line 266) | function selectNone() { FILE: corehq/apps/data_interfaces/tasks.py function _get_upload_progress_tracker (line 52) | def _get_upload_progress_tracker(upload_id): function reset_and_backfill_deduplicate_rule_task (line 64) | def reset_and_backfill_deduplicate_rule_task(domain, rule_id): function delete_duplicates_for_cases (line 83) | def delete_duplicates_for_cases(case_ids): function bulk_upload_cases_to_group (line 91) | def bulk_upload_cases_to_group(upload_id, domain, case_group_id, cases): function bulk_form_management_async (line 102) | def bulk_form_management_async(archive_or_restore, domain, couch_user, f... function run_case_update_rules (line 119) | def run_case_update_rules(now=None): function run_case_update_rules_for_domain (line 139) | def run_case_update_rules_for_domain(domain, now=None): function run_case_update_rules_for_domain_and_db (line 165) | def run_case_update_rules_for_domain_and_db(domain, now, run_id, case_ty... function run_case_update_rules_on_save_ng (line 181) | def run_case_update_rules_on_save_ng(case_id): function run_case_update_rules_on_save (line 187) | def run_case_update_rules_on_save(case): function delete_old_rule_submission_logs (line 202) | def delete_old_rule_submission_logs(): function task_operate_on_payloads (line 209) | def task_operate_on_payloads( function task_generate_ids_and_operate_on_payloads (line 218) | def task_generate_ids_and_operate_on_payloads( function bulk_case_reassign_async (line 233) | def bulk_case_reassign_async(domain, user_id, owner_id, download_id, rep... function reassign_cases (line 265) | def reassign_cases(domain, user, owner_id, case_ids, task=None): function bulk_case_copy_async (line 291) | def bulk_case_copy_async(domain, user_id, owner_id, download_id, report_... FILE: corehq/apps/data_interfaces/tests/deduplication_helpers.py function create_dedupe_rule (line 8) | def create_dedupe_rule(name='test-name', case_type='test-case', domain='... FILE: corehq/apps/data_interfaces/tests/test_auto_case_updates.py function _with_case (line 36) | def _with_case(domain, case_type, last_modified, **kwargs): function _save_case (line 48) | def _save_case(domain, case): function _update_case (line 52) | def _update_case(domain, case_id, server_modified_on, last_visit_date=No... function set_parent_case (line 63) | def set_parent_case(domain, child_case, parent_case, relationship='child... function dummy_custom_match_function (line 73) | def dummy_custom_match_function(case, now): function dummy_custom_action (line 77) | def dummy_custom_action(case, rule): function _create_empty_rule (line 81) | def _create_empty_rule(domain, case_type='person', active=True, deleted=... class BaseCaseRuleTest (line 94) | class BaseCaseRuleTest(TestCase): method tearDown (line 97) | def tearDown(self): class CaseRuleCriteriaTest (line 104) | class CaseRuleCriteriaTest(BaseCaseRuleTest): method test_match_case_type (line 106) | def test_match_case_type(self): method test_server_modified (line 115) | def test_server_modified(self): method test_case_property_equal (line 127) | def test_case_property_equal(self): method test_case_property_not_equal (line 147) | def test_case_property_not_equal(self): method test_case_property_regex_match (line 167) | def test_case_property_regex_match(self): method test_dates_case_properties_for_equality_inequality (line 202) | def test_dates_case_properties_for_equality_inequality(self): method test_case_property_has_value (line 238) | def test_case_property_has_value(self): method test_case_property_has_no_value (line 257) | def test_case_property_has_no_value(self): method test_date_case_property_before (line 276) | def test_date_case_property_before(self): method test_date_case_property_after (line 321) | def test_date_case_property_after(self): method test_parent_case_reference (line 366) | def test_parent_case_reference(self): method test_host_case_reference (line 389) | def test_host_case_reference(self): method test_parent_case_closed (line 412) | def test_parent_case_closed(self): method test_custom_match (line 433) | def test_custom_match(self): method test_multiple_criteria_ALL (line 455) | def test_multiple_criteria_ALL(self): method test_multiple_criteria_ANY (line 513) | def test_multiple_criteria_ANY(self): method test_location_filter_criteria_does_not_include_child_locations (line 573) | def test_location_filter_criteria_does_not_include_child_locations(self): method test_location_filter_criteria_does_include_child_locations (line 591) | def test_location_filter_criteria_does_include_child_locations(self): method test_ucr_filter (line 631) | def test_ucr_filter(self): function set_case_property_directly (line 655) | def set_case_property_directly(case, property_name, value): class CaseRuleActionsTest (line 659) | class CaseRuleActionsTest(BaseCaseRuleTest): method assertActionResult (line 661) | def assertActionResult(self, rule, submission_count, result=None, expe... method test_update_only (line 671) | def test_update_only(self): method test_update_case_name (line 702) | def test_update_case_name(self): method test_update_name (line 728) | def test_update_name(self): method test_update_external_id (line 754) | def test_update_external_id(self): method test_update_case_id (line 779) | def test_update_case_id(self): method test_close_only (line 803) | def test_close_only(self): method test_update_parent (line 820) | def test_update_parent(self): method test_update_host (line 851) | def test_update_host(self): method test_update_from_other_case_property (line 882) | def test_update_from_other_case_property(self): method test_update_from_parent_case_property (line 910) | def test_update_from_parent_case_property(self): method test_no_update (line 943) | def test_no_update(self): method test_update_and_close (line 971) | def test_update_and_close(self): method test_undo (line 1009) | def test_undo(self): method test_multiple_actions (line 1077) | def test_multiple_actions(self): class CaseRuleOnSaveTests (line 1096) | class CaseRuleOnSaveTests(BaseCaseRuleTest): method enable_updates_on_save (line 1098) | def enable_updates_on_save(self): method disable_updates_on_save (line 1101) | def disable_updates_on_save(self): method tearDown (line 1104) | def tearDown(self): method test_run_on_save (line 1109) | def test_run_on_save(self): method test_do_not_run_on_save_in_response_to_auto_update (line 1139) | def test_do_not_run_on_save_in_response_to_auto_update(self): method test_do_not_run_on_save_when_flag_is_disabled (line 1168) | def test_do_not_run_on_save_when_flag_is_disabled(self): class CaseRuleEndToEndTests (line 1175) | class CaseRuleEndToEndTests(BaseCaseRuleTest): method setUpClass (line 1178) | def setUpClass(cls): method test_get_rules_from_domain (line 1184) | def test_get_rules_from_domain(self): method test_boundary_date (line 1206) | def test_boundary_date(self): method assertRuleRunCount (line 1235) | def assertRuleRunCount(self, count): method assertLastRuleRun (line 1238) | def assertLastRuleRun(self, cases_checked, num_updates=0, num_closes=0... method test_scheduled_task_run (line 1251) | def test_scheduled_task_run(self): method test_single_failure_is_isolated (line 1298) | def test_single_failure_is_isolated(self): class TestParentCaseReferences (line 1321) | class TestParentCaseReferences(BaseCaseRuleTest): method test_closed_parent_criteria (line 1323) | def test_closed_parent_criteria(self): method test_match_property_criteria (line 1328) | def test_match_property_criteria(self): method test_update_case_action (line 1356) | def test_update_case_action(self): method test_create_schedule_instance_action (line 1393) | def test_create_schedule_instance_action(self): FILE: corehq/apps/data_interfaces/tests/test_auto_update_rules.py class AutomaticUpdateRuleAuditingTests (line 8) | class AutomaticUpdateRuleAuditingTests(TestCase): method test_audited_fields_for_rule_are_audited_when_created (line 10) | def test_audited_fields_for_rule_are_audited_when_created(self): method test_active_field_for_rule_is_audited_when_updated (line 27) | def test_active_field_for_rule_is_audited_when_updated(self): method test_deleted_field_for_rule_is_audited_when_deleted (line 41) | def test_deleted_field_for_rule_is_audited_when_deleted(self): method test_bulk_delete_is_audited (line 56) | def test_bulk_delete_is_audited(self): method test_queryset_update_is_audited (line 73) | def test_queryset_update_is_audited(self): FILE: corehq/apps/data_interfaces/tests/test_case_deduplication.py class FindingDuplicatesQueryTest (line 43) | class FindingDuplicatesQueryTest(TestCase): method setUp (line 44) | def setUp(self): method _prime_es_index (line 49) | def _prime_es_index(self, cases): method test_without_filters (line 52) | def test_without_filters(self): method test_with_location_filter (line 67) | def test_with_location_filter(self): method test_with_child_location (line 104) | def test_with_child_location(self, sync_supply_mock, mock_commtrack_en... method test_with_case_properties_filter_match_equal (line 146) | def test_with_case_properties_filter_match_equal(self): method test_with_case_properties_filter_match_not_equal (line 179) | def test_with_case_properties_filter_match_not_equal(self): method test_with_case_properties_filter_match_has_value (line 210) | def test_with_case_properties_filter_match_has_value(self): method test_with_case_properties_filter_match_has_no_value (line 242) | def test_with_case_properties_filter_match_has_no_value(self): method create_rule (line 273) | def create_rule(self, rule_name, case_type): class EnsureCaseExistsTest (line 287) | class EnsureCaseExistsTest(TestCase): method setUp (line 288) | def setUp(self): method _prime_es_index (line 293) | def _prime_es_index(self, cases): method test_when_case_is_not_in_elasticsearch_returns_false (line 296) | def test_when_case_is_not_in_elasticsearch_returns_false(self): method test_when_case_exists_returns_true (line 301) | def test_when_case_exists_returns_true(self): method test_when_case_parameters_do_not_match_returns_false (line 306) | def test_when_case_parameters_do_not_match_returns_false(self): method test_case_requires_matching_on_case_id (line 313) | def test_case_requires_matching_on_case_id(self): method test_when_case_parameters_match_returns_true (line 319) | def test_when_case_parameters_match_returns_true(self): method test_when_case_metadata_parameters_match_returns_true (line 326) | def test_when_case_metadata_parameters_match_returns_true(self): method _create_case (line 332) | def _create_case(self, name='Anakin Skywalker', owner_id=None): class FindingDuplicatesTest (line 337) | class FindingDuplicatesTest(TestCase): method setUp (line 339) | def setUp(self): method _prime_es_index (line 345) | def _prime_es_index(self, cases): method test_find_simple_duplicates (line 348) | def test_find_simple_duplicates(self): method test_find_maximum_number_of_results (line 372) | def test_find_maximum_number_of_results(self): method test_limit_is_respected (line 382) | def test_limit_is_respected(self): method test_limit_overrides_default_maximum (line 393) | def test_limit_overrides_default_maximum(self): method test_duplicates_different_case_types (line 402) | def test_duplicates_different_case_types(self): method test_find_closed_duplicates (line 426) | def test_find_closed_duplicates(self): method test_find_duplicates_any_rule (line 450) | def test_find_duplicates_any_rule(self): method test_find_duplicates_blank_case_properties (line 472) | def test_find_duplicates_blank_case_properties(self): method test_find_duplicates_exclude_copied_cases (line 496) | def test_find_duplicates_exclude_copied_cases(self): class CaseDeduplicationActionTest (line 535) | class CaseDeduplicationActionTest(TestCase): method setUp (line 536) | def setUp(self): method _create_rule (line 558) | def _create_rule(self, case_properties=None, include_closed=False): method _create_cases (line 581) | def _create_cases(self, num_cases=5): method _create_case (line 593) | def _create_case(self, name='George Simon Esq.', age=12, case_id=None,... method test_updates_a_duplicate (line 599) | def test_updates_a_duplicate(self, find_duplicates_mock): method test_updates_a_duplicate_only_once (line 622) | def test_updates_a_duplicate_only_once(self, find_duplicates_mock): method test_unique_not_updated (line 641) | def test_unique_not_updated(self, find_duplicates_mock): method test_stores_new_duplicate (line 663) | def test_stores_new_duplicate(self, find_duplicates_mock): method test_ignores_recent_submissions_not_in_elasticsearch (line 679) | def test_ignores_recent_submissions_not_in_elasticsearch(self, mock_ca... method test_returns_error_result_when_case_not_in_elasticsearch (line 697) | def test_returns_error_result_when_case_not_in_elasticsearch(self, moc... method test_case_no_longer_duplicate (line 708) | def test_case_no_longer_duplicate(self, find_duplicates_mock): method test_orphaned_case_is_removed (line 725) | def test_orphaned_case_is_removed(self, find_duplicates_mock): method test_case_already_marked_duplicate (line 746) | def test_case_already_marked_duplicate(self, find_duplicates_mock): method test_cases_not_fetched_no_updates (line 761) | def test_cases_not_fetched_no_updates(self, find_duplicates_mock, upda... method test_rule_activation (line 786) | def test_rule_activation(self): method test_rule_deletion (line 799) | def test_rule_deletion(self): method test_case_deletion (line 811) | def test_case_deletion(self): method test_rule_that_ignores_closed_cases_removes_recently_closed_case (line 829) | def test_rule_that_ignores_closed_cases_removes_recently_closed_case(s... method test_rule_that_includes_closed_cases_does_not_remove_recently_closed_case (line 843) | def test_rule_that_includes_closed_cases_does_not_remove_recently_clos... method test_integration_test (line 859) | def test_integration_test(self): method test_update_parent (line 877) | def test_update_parent(self): class TestDeduplicationRuleRuns (line 903) | class TestDeduplicationRuleRuns(TestCase): method setUp (line 904) | def setUp(self): method tearDown (line 912) | def tearDown(self): method create_rule (line 916) | def create_rule(self, rule_name, case_type): method _create_mobile_worker (line 928) | def _create_mobile_worker(self, username): method _prime_es_index (line 938) | def _prime_es_index(self, cases): method _send_user_to_es (line 941) | def _send_user_to_es(self, user): method get_case_property_value (line 946) | def get_case_property_value(self, case, property_value): method test_simple_rule (line 949) | def test_simple_rule(self): method test_rule_with_closed_cases (line 987) | def test_rule_with_closed_cases(self): method test_rule_with_location_as_owner (line 1030) | def test_rule_with_location_as_owner(self): method test_rule_with_user_as_owner (line 1110) | def test_rule_with_user_as_owner(self): class DeduplicationBackfillTest (line 1196) | class DeduplicationBackfillTest(TestCase): method setUpClass (line 1198) | def setUpClass(cls): method tearDownClass (line 1219) | def tearDownClass(cls): method _set_up_rule (line 1223) | def _set_up_rule(self, include_closed): method test_include_closed_finds_open_and_closed_cases (line 1244) | def test_include_closed_finds_open_and_closed_cases(self): method test_finds_open_cases_only (line 1253) | def test_finds_open_cases_only(self): FILE: corehq/apps/data_interfaces/tests/test_deduplication.py class ResetDuplicateRuleTests (line 8) | class ResetDuplicateRuleTests(TestCase): method test_removes_all_existing_entries (line 9) | def test_removes_all_existing_entries(self): FILE: corehq/apps/data_interfaces/tests/test_deduplication_rules.py class DeduplicationRuleCreateViewTest (line 18) | class DeduplicationRuleCreateViewTest(TestCase): method setUpClass (line 21) | def setUpClass(cls): method test_newly_created_rule_is_inactive (line 28) | def test_newly_created_rule_is_inactive(self, *args): method test_creating_rule_with_existing_name_fails (line 49) | def test_creating_rule_with_existing_name_fails(self, *args): method _create_request (line 74) | def _create_request(self, params=None, method='post'): method _save_dummy_rule (line 84) | def _save_dummy_rule(self, rule_name, case_type): class DeduplicationRuleEditViewTest (line 99) | class DeduplicationRuleEditViewTest(TestCase): method setUpClass (line 102) | def setUpClass(cls): method test_when_rule_edited_doesnt_throw_error (line 109) | def test_when_rule_edited_doesnt_throw_error(self, *args): method _save_dummy_rule (line 129) | def _save_dummy_rule(self, rule_name, case_type): method _create_request (line 142) | def _create_request(self, params=None, method='post'): FILE: corehq/apps/data_interfaces/tests/test_form_validation.py class TestFormValidation (line 10) | class TestFormValidation(TestCase): method test_validate_case_property_name_with_parent_case_references (line 20) | def test_validate_case_property_name_with_parent_case_references(self): method test_validate_case_property_name_without_parent_case_references (line 54) | def test_validate_case_property_name_without_parent_case_references(se... method test_is_valid_caes_property_name (line 63) | def test_is_valid_caes_property_name(self): FILE: corehq/apps/data_interfaces/tests/test_forms.py class CaseRuleCriteriaFormTests (line 8) | class CaseRuleCriteriaFormTests(SimpleTestCase): method test_validation_with_fully_specified_location (line 9) | def test_validation_with_fully_specified_location(self): method test_form_is_valid_without_location (line 19) | def test_form_is_valid_without_location(self): method test_form_is_valid_when_date_is_using_greater_than (line 25) | def test_form_is_valid_when_date_is_using_greater_than(self): method test_form_is_valid_when_date_is_using_less_than_or_equal (line 44) | def test_form_is_valid_when_date_is_using_less_than_or_equal(self): method setUp (line 63) | def setUp(self): method _create_form_input (line 69) | def _create_form_input(self, match_definition=None, location_filter=No... FILE: corehq/apps/data_interfaces/tests/test_models.py class MatchPropertyDefinitionTests (line 32) | class MatchPropertyDefinitionTests(SimpleTestCase): method test_to_dict_includes_all_fields (line 33) | def test_to_dict_includes_all_fields(self): method test_days_less_or_equal_matches_when_date_is_equal_to_case_date (line 46) | def test_days_less_or_equal_matches_when_date_is_equal_to_case_date(se... method test_days_less_or_equal_does_not_match_when_date_is_greater_than_case_date (line 58) | def test_days_less_or_equal_does_not_match_when_date_is_greater_than_c... method test_days_before_does_not_match_when_date_is_equal_to_case_date (line 70) | def test_days_before_does_not_match_when_date_is_equal_to_case_date(se... method test_days_before_matches_when_date_is_less_than_case_date (line 82) | def test_days_before_matches_when_date_is_less_than_case_date(self): method test_days_after_matches_when_date_is_equal_to_case_date (line 95) | def test_days_after_matches_when_date_is_equal_to_case_date(self): method test_days_after_does_not_match_when_date_is_less_than_case_date (line 108) | def test_days_after_does_not_match_when_date_is_less_than_case_date(se... method test_days_greater_than_matches_when_date_is_greater_than_case_date (line 121) | def test_days_greater_than_matches_when_date_is_greater_than_case_date... method test_days_greater_than_does_not_match_when_date_is_equal_to_case_date (line 134) | def test_days_greater_than_does_not_match_when_date_is_equal_to_case_d... method test_check_days_handles_case_dates_as_strings (line 147) | def test_check_days_handles_case_dates_as_strings(self): class CustomMatchDefinitionTests (line 161) | class CustomMatchDefinitionTests(SimpleTestCase): method test_to_dict_includes_all_fields (line 162) | def test_to_dict_includes_all_fields(self): class UpdateCaseDefinitionTests (line 170) | class UpdateCaseDefinitionTests(SimpleTestCase): method test_to_dict_includes_all_fields (line 171) | def test_to_dict_includes_all_fields(self): class CustomActionDefinitionTests (line 183) | class CustomActionDefinitionTests(SimpleTestCase): method test_to_dict_includes_all_fields (line 184) | def test_to_dict_includes_all_fields(self): class LocationFilterDefinitionTests (line 192) | class LocationFilterDefinitionTests(TestCase): method test_to_dict_includes_all_fields (line 193) | def test_to_dict_includes_all_fields(self): method test_when_case_and_definition_match_return_true (line 201) | def test_when_case_and_definition_match_return_true(self): method test_when_case_and_child_enabled_definition_match_return_true (line 208) | def test_when_case_and_child_enabled_definition_match_return_true(self): method test_when_case_belongs_to_matched_user_return_true (line 215) | def test_when_case_belongs_to_matched_user_return_true(self): method test_when_case_belongs_to_mismatched_user_return_false (line 223) | def test_when_case_belongs_to_mismatched_user_return_false(self): method test_when_case_belongs_to_matched_web_user_return_true (line 231) | def test_when_case_belongs_to_matched_web_user_return_true(self): method test_when_case_belongs_to_mismatched_location_returns_false (line 239) | def test_when_case_belongs_to_mismatched_location_returns_false(self): method test_when_case_belongs_to_group_returns_false (line 248) | def test_when_case_belongs_to_group_returns_false(self): method test_when_user_belongs_to_child_location_returns_true (line 258) | def test_when_user_belongs_to_child_location_returns_true(self, mock_i... method test_when_group_checks_for_child_location_return_false (line 268) | def test_when_group_checks_for_child_location_return_false(self): method setUpClass (line 277) | def setUpClass(cls): method _create_user (line 291) | def _create_user(self, name='test-user', location_id='location_id', is... method _create_group (line 299) | def _create_group(self, id='group_id'): class UCRFilterDefinitionTests (line 306) | class UCRFilterDefinitionTests(SimpleTestCase): method test_to_dict_includes_all_fields (line 307) | def test_to_dict_includes_all_fields(self): class CreateScheduleInstanceActionDefinitionTests (line 315) | class CreateScheduleInstanceActionDefinitionTests(SimpleTestCase): method test_to_dict_includes_all_fields (line 316) | def test_to_dict_includes_all_fields(self): class CaseDeduplicationActionDefinitionTests (line 334) | class CaseDeduplicationActionDefinitionTests(SimpleTestCase): method test_to_dict_includes_all_fields (line 335) | def test_to_dict_includes_all_fields(self): class CaseRuleCriteriaTests (line 349) | class CaseRuleCriteriaTests(SimpleTestCase): method test_to_dict_includes_all_referenced_models (line 350) | def test_to_dict_includes_all_referenced_models(self): method test_to_dict_fills_in_missing_fields (line 366) | def test_to_dict_fills_in_missing_fields(self): method test_to_dict_with_closed_parent_definition_returns_true (line 377) | def test_to_dict_with_closed_parent_definition_returns_true(self): class CaseRuleActionTests (line 382) | class CaseRuleActionTests(SimpleTestCase): method test_to_dict_includes_all_referenced_models (line 383) | def test_to_dict_includes_all_referenced_models(self): method test_to_dict_fills_in_missing_fields (line 399) | def test_to_dict_fills_in_missing_fields(self): class AutomaticUpdateRuleTests (line 410) | class AutomaticUpdateRuleTests(SimpleTestCase): method test_to_json_includes_all_fields (line 411) | def test_to_json_includes_all_fields(self): method test_to_dict_includes_criteria_and_actions (line 442) | def test_to_dict_includes_criteria_and_actions(self): method test_get_boundary_date_returns_none_if_any_rule_does_not_filter_on_server_modified (line 462) | def test_get_boundary_date_returns_none_if_any_rule_does_not_filter_on... method test_get_boundary_date_returns_most_recent_date_if_all_rules_filter_on_server_modified (line 473) | def test_get_boundary_date_returns_most_recent_date_if_all_rules_filte... method setUp (line 485) | def setUp(self): class CaseDuplicateNewTests (line 502) | class CaseDuplicateNewTests(TestCase): method setUp (line 503) | def setUp(self): method test_get_case_ids (line 507) | def test_get_case_ids(self): method test_get_case_ids_with_missing_rule_returns_empty_list (line 515) | def test_get_case_ids_with_missing_rule_returns_empty_list(self): method test_create_creates_duplicate_from_case (line 519) | def test_create_creates_duplicate_from_case(self): method test_removing_record_deletes_orphaned_duplicate (line 527) | def test_removing_record_deletes_orphaned_duplicate(self): method test_removing_record_with_multiple_existing_leaves_duplicates (line 540) | def test_removing_record_with_multiple_existing_leaves_duplicates(self): method test_remove_duplicates_for_case_ids_handles_multiple_actions (line 554) | def test_remove_duplicates_for_case_ids_handles_multiple_actions(self): method test_remove_duplicates_removes_orphaned_records (line 565) | def test_remove_duplicates_removes_orphaned_records(self): method test_remove_duplicates_missing_ids_are_ignored (line 574) | def test_remove_duplicates_missing_ids_are_ignored(self): method _create_action_detecting_duplicates_on (line 583) | def _create_action_detecting_duplicates_on(self, *props): class HashArguments_Tests (line 591) | class HashArguments_Tests(SimpleTestCase): method test_hashes_single_argument (line 592) | def test_hashes_single_argument(self): method test_hashes_multiple_arguments (line 596) | def test_hashes_multiple_arguments(self): method test_same_input_produces_same_output (line 602) | def test_same_input_produces_same_output(self): method test_different_inputs_produce_different_output (line 607) | def test_different_inputs_produce_different_output(self): method test_respects_all_arguments (line 612) | def test_respects_all_arguments(self): method test_deals_with_similar_combinations (line 617) | def test_deals_with_similar_combinations(self): method test_converts_non_string_arguments_to_strings (line 622) | def test_converts_non_string_arguments_to_strings(self): method test_handle_delimiter_character (line 627) | def test_handle_delimiter_character(self): method test_handles_empty_arguments (line 632) | def test_handles_empty_arguments(self): method test_empty_arguments_match (line 636) | def test_empty_arguments_match(self): function create_dict_mock (line 642) | def create_dict_mock(class_, data): FILE: corehq/apps/data_interfaces/tests/test_pillow.py class DeduplicationPillowTest (line 26) | class DeduplicationPillowTest(TestCase): method setUpClass (line 29) | def setUpClass(cls): method setUp (line 37) | def setUp(self): method test_pillow_processes_changes (line 49) | def test_pillow_processes_changes(self): method test_pillow_ignores_deduplication_changes (line 67) | def test_pillow_ignores_deduplication_changes(self): method test_pillow_processes_normalized_system_properties (line 81) | def test_pillow_processes_normalized_system_properties(self): method test_pillow_processes_case_being_closed (line 97) | def test_pillow_processes_case_being_closed(self): method test_pillow_does_not_process_closed_cases (line 113) | def test_pillow_does_not_process_closed_cases(self): method test_pillow_processes_closed_case_when_include_closed_is_true (line 128) | def test_pillow_processes_closed_case_when_include_closed_is_true(self): method test_pillow_processes_resaves (line 147) | def test_pillow_processes_resaves(self): method test_pillow_skips_commtrack_cases (line 166) | def test_pillow_skips_commtrack_cases(self, mock_run_rules): method test_pillow_processes_restored_forms (line 176) | def test_pillow_processes_restored_forms(self): method _create_rule (line 195) | def _create_rule(self, name='test', match_on=None, include_closed=False): method _configure_properties_to_update (line 220) | def _configure_properties_to_update(self, rule, prop_map): FILE: corehq/apps/data_interfaces/tests/test_scheduling_integration.py function get_visit_scheduler_module_and_form_for_test (line 66) | def get_visit_scheduler_module_and_form_for_test(): class CaseRuleSchedulingIntegrationTest (line 91) | class CaseRuleSchedulingIntegrationTest(TestCase): method setUpClass (line 95) | def setUpClass(cls): method tearDownClass (line 106) | def tearDownClass(cls): method tearDown (line 111) | def tearDown(self): method update_case_and_sync (line 126) | def update_case_and_sync(self, domain, case_id, *args, **kwargs): method create_case_and_sync (line 132) | def create_case_and_sync(self, *args, **kwargs): method test_timed_schedule_instance_creation (line 139) | def test_timed_schedule_instance_creation(self, utcnow_patch): method test_alert_schedule_instance_creation (line 197) | def test_alert_schedule_instance_creation(self, utcnow_patch): method test_alert_schedule_reset (line 254) | def test_alert_schedule_reset(self, utcnow_patch): method test_timed_schedule_reset (line 326) | def test_timed_schedule_reset(self, utcnow_patch): method test_timed_schedule_stop_date_case_property (line 405) | def test_timed_schedule_stop_date_case_property(self, utcnow_patch, se... method test_timed_schedule_start_date_case_property (line 527) | def test_timed_schedule_start_date_case_property(self, utcnow_patch): method setup_timed_schedule_with_case (line 637) | def setup_timed_schedule_with_case(self, utcnow_patch): method test_timed_schedule_specific_start_date (line 668) | def test_timed_schedule_specific_start_date(self, utcnow_patch): method test_sync_rule_on_hard_deleted_case (line 739) | def test_sync_rule_on_hard_deleted_case(self, utcnow_patch): method test_sync_messaging_on_hard_deleted_case (line 752) | def test_sync_messaging_on_hard_deleted_case(self, utcnow_patch): method test_timed_schedule_case_property_timed_event (line 765) | def test_timed_schedule_case_property_timed_event(self, utcnow_patch): method test_visit_scheduler_integration (line 847) | def test_visit_scheduler_integration(self, utcnow_patch, module_and_fo... method test_start_offset (line 981) | def test_start_offset(self, utcnow_patch): method _setup_rule (line 1068) | def _setup_rule(self): method test_run_messaging_rule_sharded (line 1088) | def test_run_messaging_rule_sharded(self, es_patch, shard_rule_patch, ... method test_next_available_daily_slot (line 1110) | def test_next_available_daily_slot(self, utcnow_patch, send_patch): method test_next_available_weekly_slot (line 1188) | def test_next_available_weekly_slot(self, utcnow_patch, send_patch): method test_next_available_monthly_slot (line 1269) | def test_next_available_monthly_slot(self, utcnow_patch, send_patch): class VisitSchedulerIntegrationHelperTestCase (line 1347) | class VisitSchedulerIntegrationHelperTestCase(TestCase): method setUpClass (line 1351) | def setUpClass(cls): method get_helper (line 1355) | def get_helper(self, case, visit_number=2, window_position=VISIT_WINDO... method test_get_visit_scheduler_form_phase (line 1367) | def test_get_visit_scheduler_form_phase(self): method test_calculate_window_date (line 1373) | def test_calculate_window_date(self): method test_get_case_current_schedule_phase (line 1393) | def test_get_case_current_schedule_phase(self): method test_get_visit (line 1403) | def test_get_visit(self): method test_get_anchor_date (line 1421) | def test_get_anchor_date(self): FILE: corehq/apps/data_interfaces/tests/test_tasks.py class TestTasks (line 10) | class TestTasks(SimpleTestCase): method test_task_operate_on_payloads_no_action (line 14) | def test_task_operate_on_payloads_no_action( method test_task_operate_on_payloads_no_payload_ids (line 35) | def test_task_operate_on_payloads_no_payload_ids(self): method test_task_generate_ids_and_operate_on_payloads_no_action (line 47) | def test_task_generate_ids_and_operate_on_payloads_no_action( method test_task_generate_ids_and_operate_on_payloads_no_data (line 75) | def test_task_generate_ids_and_operate_on_payloads_no_data(self, get_r... FILE: corehq/apps/data_interfaces/tests/test_utils.py class TestTasks (line 12) | class TestTasks(TestCase): method setUp (line 14) | def setUp(self): method test_generate_ids_and_operate_on_payloads_success (line 22) | def test_generate_ids_and_operate_on_payloads_success( method test_operate_on_payloads_no_task_from_excel_false_resend (line 44) | def test_operate_on_payloads_no_task_from_excel_false_resend( method test_operate_on_payloads_no_task_from_excel_true_resend (line 69) | def test_operate_on_payloads_no_task_from_excel_true_resend( method test_operate_on_payloads_with_task_from_excel_false_resend (line 90) | def test_operate_on_payloads_with_task_from_excel_false_resend( method test_operate_on_payloads_with_task_from_excel_true_resend (line 115) | def test_operate_on_payloads_with_task_from_excel_true_resend( method test_operate_on_payloads_no_task_from_excel_false_cancel (line 136) | def test_operate_on_payloads_no_task_from_excel_false_cancel( method test_operate_on_payloads_no_task_from_excel_true_cancel (line 161) | def test_operate_on_payloads_no_task_from_excel_true_cancel( method test_operate_on_payloads_with_task_from_excel_false_cancel (line 182) | def test_operate_on_payloads_with_task_from_excel_false_cancel( method test_operate_on_payloads_with_task_from_excel_true_cancel (line 207) | def test_operate_on_payloads_with_task_from_excel_true_cancel( method test_operate_on_payloads_no_task_from_excel_false_requeue (line 228) | def test_operate_on_payloads_no_task_from_excel_false_requeue( method test_operate_on_payloads_no_task_from_excel_true_requeue (line 253) | def test_operate_on_payloads_no_task_from_excel_true_requeue( method test_operate_on_payloads_with_task_from_excel_false_requeue (line 274) | def test_operate_on_payloads_with_task_from_excel_false_requeue( method test_operate_on_payloads_with_task_from_excel_true_requeue (line 299) | def test_operate_on_payloads_with_task_from_excel_true_requeue( method test_operate_on_payloads_throws_exception_resend (line 320) | def test_operate_on_payloads_throws_exception_resend( method test_operate_on_payloads_throws_exception_cancel (line 345) | def test_operate_on_payloads_throws_exception_cancel( method test_operate_on_payloads_throws_exception_requeue (line 372) | def test_operate_on_payloads_throws_exception_requeue( method _check_resend (line 395) | def _check_resend(self, mock_payload_one, mock_payload_two, method _check_cancel (line 401) | def _check_cancel(self, mock_payload_one, mock_payload_two, method _check_requeue (line 409) | def _check_requeue(self, mock_payload_one, mock_payload_two, FILE: corehq/apps/data_interfaces/tests/test_views.py class AutomaticUpdateRuleListViewTests (line 21) | class AutomaticUpdateRuleListViewTests(TestCase): method setUpClass (line 23) | def setUpClass(cls): method test_can_delete_existing_rule (line 37) | def test_can_delete_existing_rule(self): method _create_web_user (line 48) | def _create_web_user(cls): method _create_domain (line 61) | def _create_domain(cls, name): method _create_rule (line 66) | def _create_rule(self, domain='test-domain', name='Test Rule', close_c... method _create_deletion_request (line 86) | def _create_deletion_request(self, id): class DeduplicationRuleCreateViewTests (line 94) | class DeduplicationRuleCreateViewTests(TestCase): method test_system_properties_are_included_with_case_properties (line 95) | def test_system_properties_are_included_with_case_properties(self): method test_system_properties_work_with_duplicate_case_properties (line 104) | def test_system_properties_work_with_duplicate_case_properties(self): method test_system_properties_override_deprecated_properties (line 113) | def test_system_properties_override_deprecated_properties(self): method test_properties_are_sorted (line 122) | def test_properties_are_sorted(self): method setUp (line 134) | def setUp(self): FILE: corehq/apps/data_interfaces/tests/test_xform_management.py class XFormManagementTest (line 14) | class XFormManagementTest(TestCase): method setUpClass (line 17) | def setUpClass(cls): method tearDownClass (line 24) | def tearDownClass(cls): method test_get_xform_ids__sanity_check (line 28) | def test_get_xform_ids__sanity_check(self): FILE: corehq/apps/data_interfaces/tests/util.py function create_empty_rule (line 4) | def create_empty_rule(domain, workflow, case_type='person'): FILE: corehq/apps/data_interfaces/utils.py function add_cases_to_case_group (line 18) | def add_cases_to_case_group(domain, case_group_id, uploaded_data, progre... function archive_or_restore_forms (line 66) | def archive_or_restore_forms(domain, user_id, username, form_ids, archiv... function property_references_parent (line 120) | def property_references_parent(case_property): function operate_on_payloads (line 127) | def operate_on_payloads( function _get_sql_repeat_record (line 186) | def _get_sql_repeat_record(domain, record_id): function iter_cases_and_run_rules (line 194) | def iter_cases_and_run_rules(domain, case_iterator, rules, now, run_id, ... function _check_data_migration_in_progress (line 232) | def _check_data_migration_in_progress(domain, last_migration_check_time): function run_rules_for_case (line 240) | def run_rules_for_case(case, rules, now): FILE: corehq/apps/data_interfaces/views.py function default (line 107) | def default(request, domain): function default_data_view_url (line 114) | def default_data_view_url(request, domain): class BulkUploadCasesException (line 147) | class BulkUploadCasesException(Exception): class DataInterfaceSection (line 151) | class DataInterfaceSection(BaseDomainView): method dispatch (line 156) | def dispatch(self, request, *args, **kwargs): method section_url (line 160) | def section_url(self): class CaseGroupListView (line 164) | class CaseGroupListView(BaseMessagingSectionView, CRUDPaginatedViewMixin): method page_url (line 176) | def page_url(self): method total (line 181) | def total(self): method column_names (line 185) | def column_names(self): method page_context (line 193) | def page_context(self): method paginated_list (line 197) | def paginated_list(self): method _get_item_data (line 211) | def _get_item_data(self, case_group): method post (line 219) | def post(self, *args, **kwargs): method get_create_form (line 222) | def get_create_form(self, is_blank=False): method get_update_form (line 227) | def get_update_form(self, initial_data=None): method get_create_item_data (line 232) | def get_create_item_data(self, create_form): method delete_item (line 239) | def delete_item(self, item_id): class CaseGroupCaseManagementView (line 250) | class CaseGroupCaseManagementView(DataInterfaceSection, CRUDPaginatedVie... method group_id (line 262) | def group_id(self): method case_group (line 267) | def case_group(self): method parent_pages (line 274) | def parent_pages(self): method page_name (line 281) | def page_name(self): method page_url (line 285) | def page_url(self): method page_context (line 289) | def page_context(self): method update_case_group_form (line 309) | def update_case_group_form(self): method total (line 320) | def total(self): method column_names (line 324) | def column_names(self): method paginated_list (line 333) | def paginated_list(self): method allowed_actions (line 341) | def allowed_actions(self): method bulk_response (line 347) | def bulk_response(self): method is_bulk_upload (line 351) | def is_bulk_upload(self): method is_case_group_update (line 355) | def is_case_group_update(self): method bulk_upload_id (line 359) | def bulk_upload_id(self): method uploaded_file (line 379) | def uploaded_file(self): method _get_item_data (line 389) | def _get_item_data(self, case): method get_create_form (line 398) | def get_create_form(self, is_blank=False): method get_create_item_data (line 403) | def get_create_item_data(self, create_form): method delete_item (line 432) | def delete_item(self, item_id): method post (line 442) | def post(self, request, *args, **kwargs): class XFormManagementView (line 452) | class XFormManagementView(DataInterfaceSection): method post (line 456) | def post(self, request, *args, **kwargs): method inaccessible_forms_accessed (line 482) | def inaccessible_forms_accessed(self, xform_ids, domain, couch_user): method get_xform_ids (line 488) | def get_xform_ids(self, request): method dispatch (line 526) | def dispatch(self, request, *args, **kwargs): class XFormManagementStatusView (line 531) | class XFormManagementStatusView(DataInterfaceSection): method get (line 536) | def get(self, request, *args, **kwargs): method page_url (line 551) | def page_url(self): function xform_management_job_poll (line 558) | def xform_management_job_poll(request, domain, download_id, class BulkCaseActionSatusView (line 575) | class BulkCaseActionSatusView(DataInterfaceSection): method section_url (line 579) | def section_url(self): method page_title (line 587) | def page_title(self): method get (line 593) | def get(self, request, *args, **kwargs): method poll_url (line 612) | def poll_url(self, download_id): method page_url (line 618) | def page_url(self): method case_action (line 622) | def case_action(self): method is_copy_action (line 626) | def is_copy_action(self): function case_action_job_poll (line 630) | def case_action_job_poll(request, domain, download_id): function find_by_id (line 648) | def find_by_id(request, domain): class AutomaticUpdateRuleListView (line 675) | class AutomaticUpdateRuleListView(DataInterfaceSection): method dispatch (line 692) | def dispatch(self, request, *args, **kwargs): method page_context (line 696) | def page_context(self): method has_linked_data (line 709) | def has_linked_data(self): method can_edit_linked_data (line 712) | def can_edit_linked_data(self): method post (line 715) | def post(self, request, *args, **kwargs): method edit_url_name (line 720) | def edit_url_name(self): method view_url_name (line 724) | def view_url_name(self): method _format_rule (line 727) | def _format_rule(self, rule): method _format_rule_run (line 741) | def _format_rule_run(self, rule_run): method _convert_to_user_time (line 751) | def _convert_to_user_time(self, value): method _rules (line 758) | def _rules(self): method _rule_runs (line 766) | def _rule_runs(self): method _update_rule (line 772) | def _update_rule(self, rule_id, action): method _get_rule (line 786) | def _get_rule(self, rule_id): class AddCaseRuleView (line 801) | class AddCaseRuleView(DataInterfaceSection): method page_url (line 807) | def page_url(self): method initial_rule (line 811) | def initial_rule(self): method is_system_admin (line 816) | def is_system_admin(self): method read_only_mode (line 821) | def read_only_mode(self): method requires_system_admin (line 824) | def requires_system_admin(self): method rule_form (line 832) | def rule_form(self): method criteria_form (line 841) | def criteria_form(self): method actions_form (line 850) | def actions_form(self): method page_context (line 858) | def page_context(self): method post (line 871) | def post(self, request, *args, **kwargs): class EditCaseRuleView (line 908) | class EditCaseRuleView(AddCaseRuleView): method rule_id (line 916) | def rule_id(self): method page_url (line 920) | def page_url(self): method initial_rule (line 925) | def initial_rule(self): class ViewCaseRuleView (line 940) | class ViewCaseRuleView(EditCaseRuleView): method read_only_mode (line 946) | def read_only_mode(self): class DeduplicationRuleListView (line 951) | class DeduplicationRuleListView(DataInterfaceSection, CRUDPaginatedViewM... method post (line 961) | def post(self, *args, **kwargs): method page_context (line 965) | def page_context(self): method paginated_list (line 977) | def paginated_list(self): method total (line 985) | def total(self): method _rules (line 989) | def _rules(self): method column_names (line 997) | def column_names(self): method edit_url_name (line 1007) | def edit_url_name(self): method allowed_actions (line 1011) | def allowed_actions(self): method activate_response (line 1018) | def activate_response(self): method deactivate_response (line 1022) | def deactivate_response(self): method delete_item (line 1025) | def delete_item(self, rule_id): method update_rule (line 1039) | def update_rule(self): method _get_rule (line 1051) | def _get_rule(self, rule_id): method _format_rule (line 1065) | def _format_rule(self, rule): method _get_duplicates_count (line 1096) | def _get_duplicates_count(self, rule): class DeduplicationRuleCreateView (line 1109) | class DeduplicationRuleCreateView(DataInterfaceSection): method page_context (line 1115) | def page_context(self): method get_augmented_data_dict_props_by_case_type (line 1126) | def get_augmented_data_dict_props_by_case_type(cls, domain): method get_context_data (line 1132) | def get_context_data(self, **kwargs): method post (line 1152) | def post(self, request, *args, **kwargs): method _track_rule_created (line 1192) | def _track_rule_created(self, username, rule, action_definition): method case_filter_form (line 1208) | def case_filter_form(self): method parse_params (line 1215) | def parse_params(self, request): method validate_rule_params (line 1241) | def validate_rule_params(self, domain, rule_params, rule=None): method validate_action_params (line 1252) | def validate_action_params(self, action_params): method _create_rule (line 1278) | def _create_rule(self, domain, name, case_type): class DeduplicationRuleEditView (line 1292) | class DeduplicationRuleEditView(DeduplicationRuleCreateView): method page_url (line 1297) | def page_url(self): method rule_id (line 1301) | def rule_id(self): method rule (line 1306) | def rule(self): method dedupe_action (line 1317) | def dedupe_action(self): method page_context (line 1321) | def page_context(self): method post (line 1346) | def post(self, request, *args, **kwargs): method case_filter_form (line 1413) | def case_filter_form(self): method _update_model_instance (line 1420) | def _update_model_instance(self, model, params): FILE: corehq/apps/data_pipeline_audit/dbacessors.py function get_es_counts_by_doc_type (line 22) | def get_es_counts_by_doc_type(domain, es_indices=None, extra_filters=Non... function get_es_case_counts (line 34) | def get_es_case_counts(domain, doc_type, gte, lt, escls=es.CaseES): function get_es_case_range (line 45) | def get_es_case_range(domain, escls=es.CaseES): function _get_index_counts_by_domain_doc_type (line 59) | def _get_index_counts_by_domain_doc_type(es_query_class, domain, extra_f... function get_es_user_counts_by_doc_type (line 79) | def get_es_user_counts_by_doc_type(domain): function get_primary_db_form_counts (line 103) | def get_primary_db_form_counts(domain, startdate=None, enddate=None): function get_primary_db_case_counts (line 121) | def get_primary_db_case_counts(domain, startdate=None, enddate=None): function get_primary_db_case_ids (line 135) | def get_primary_db_case_ids(domain, doc_type, startdate, enddate): function get_primary_db_form_ids (line 152) | def get_primary_db_form_ids(domain, doc_type, startdate, enddate): function get_es_case_ids (line 171) | def get_es_case_ids(domain, doc_type, startdate, enddate, escls=es.CaseES): function get_es_form_ids (line 178) | def get_es_form_ids(domain, doc_type, startdate, enddate): function _get_es_doc_ids (line 185) | def _get_es_doc_ids(es_query_class, domain, doc_type, datefilter=None): function get_es_user_ids (line 201) | def get_es_user_ids(domain, doc_type): function _get_user_base_doc_filter (line 212) | def _get_user_base_doc_filter(doc_type): FILE: corehq/apps/data_pipeline_audit/management/commands/compare_doc_counts.py class Command (line 11) | class Command(BaseCommand): method add_arguments (line 14) | def add_arguments(self, parser): method handle (line 19) | def handle(self, domains, **options): function _get_row_color (line 38) | def _get_row_color(row): FILE: corehq/apps/data_pipeline_audit/management/commands/compare_doc_ids.py class Command (line 35) | class Command(BaseCommand): method add_arguments (line 38) | def add_arguments(self, parser): method handle (line 58) | def handle(self, domain, doc_type, **options): function compare_cases (line 103) | def compare_cases(domain, doc_type, startdate, enddate): function compare_xforms (line 129) | def compare_xforms(domain, doc_type, startdate, enddate): function _compare_users (line 136) | def _compare_users(domain, doc_type, startdate, enddate): function _get_diffs (line 158) | def _get_diffs(primary_ids, es_ids): FILE: corehq/apps/data_pipeline_audit/management/commands/find_sql_forms_not_in_es.py class Command (line 23) | class Command(BaseCommand): method add_arguments (line 26) | def add_arguments(self, parser): method handle (line 42) | def handle(self, **options): function iter_form_ids_by_last_modified (line 57) | def iter_form_ids_by_last_modified(start_datetime, end_datetime): FILE: corehq/apps/data_pipeline_audit/tools.py function get_doc_counts_for_domain (line 19) | def get_doc_counts_for_domain(domain): function _get_primary_db_counts (line 43) | def _get_primary_db_counts(domain): FILE: corehq/apps/data_pipeline_audit/utils.py function map_counter_doc_types (line 13) | def map_counter_doc_types(counter): FILE: corehq/apps/domain/admin.py class OperatorCallLimitSettingsAdmin (line 6) | class OperatorCallLimitSettingsAdmin(admin.ModelAdmin): FILE: corehq/apps/domain/auth.py function _is_api_key_authentication (line 43) | def _is_api_key_authentication(request): function determine_authtype_from_header (line 56) | def determine_authtype_from_header(request, default=DIGEST): function determine_authtype_from_request (line 88) | def determine_authtype_from_request(request, default=DIGEST): function get_username_and_password_from_request (line 104) | def get_username_and_password_from_request(request): function basicauth (line 136) | def basicauth(realm=''): function basic_or_api_key (line 157) | def basic_or_api_key(realm=''): function formplayer_auth (line 174) | def formplayer_auth(view): function formplayer_as_user_auth (line 178) | def formplayer_as_user_auth(view): class ApiKeyFallbackBackend (line 214) | class ApiKeyFallbackBackend(object): method authenticate (line 216) | def authenticate(self, request, username, password): function get_active_users_by_email (line 249) | def get_active_users_by_email(email, domain=None): class HQApiKeyAuthentication (line 274) | class HQApiKeyAuthentication(ApiKeyAuthentication): method __init__ (line 275) | def __init__(self, *args, allow_creds_in_data=True, **kwargs): method is_authenticated (line 279) | def is_authenticated(self, request): method get_identifier (line 334) | def get_identifier(self, request): method extract_credentials (line 348) | def extract_credentials(self, request): function get_connectid_userinfo (line 370) | def get_connectid_userinfo(token): class ConnectIDAuthBackend (line 377) | class ConnectIDAuthBackend: method authenticate (line 379) | def authenticate(self, request, username, password): function user_can_access_domain_specific_pages (line 408) | def user_can_access_domain_specific_pages(request): function connectid_token_auth (line 435) | def connectid_token_auth(view_func): FILE: corehq/apps/domain/calculations.py function num_web_users (line 35) | def num_web_users(domain, *args): function num_mobile_users (line 39) | def num_mobile_users(domain, *args): function active_mobile_users (line 46) | def active_mobile_users(domain, days=30): function inactive_mobile_users (line 50) | def inactive_mobile_users(domain, days=30): function _mobile_users (line 54) | def _mobile_users(domain, days=30, inactive=False): function cases (line 90) | def cases(domain, *args): function cases_in_last (line 94) | def cases_in_last(domain, days, case_type=None): function inactive_cases_in_last (line 108) | def inactive_cases_in_last(domain, days): function forms (line 118) | def forms(domain, *args): function forms_in_last (line 122) | def forms_in_last(domain, days): function get_sms_count (line 130) | def get_sms_count(domain, direction=None, days=None): function sms (line 152) | def sms(domain, direction): function sms_in_last (line 156) | def sms_in_last(domain, days=None): function sms_in_last_bool (line 160) | def sms_in_last_bool(domain, days=None): function sms_in_in_last (line 164) | def sms_in_in_last(domain, days=None): function sms_out_in_last (line 168) | def sms_out_in_last(domain, days=None): function active (line 172) | def active(domain, *args): function display_time (line 176) | def display_time(submission_time, display=True): function first_domain_for_user (line 183) | def first_domain_for_user(domain): function first_form_submission (line 190) | def first_form_submission(domain, display=True): function last_form_submission (line 198) | def last_form_submission(domain, display=True): function get_300th_form_submission_received (line 206) | def get_300th_form_submission_received(domain): function has_app (line 214) | def has_app(domain, *args): function _get_domain_apps (line 218) | def _get_domain_apps(domain): function app_list (line 222) | def app_list(domain, *args): function uses_reminders (line 227) | def uses_reminders(domain, *args): function not_implemented (line 231) | def not_implemented(domain, *args): function dom_calc (line 304) | def dom_calc(calc_tag, dom, extra_arg=''): function all_domain_stats (line 314) | def all_domain_stats(): FILE: corehq/apps/domain/dbaccessors.py function get_doc_count_in_domain_by_class (line 6) | def get_doc_count_in_domain_by_class(domain, doc_class): function get_doc_count_in_domain_by_type (line 11) | def get_doc_count_in_domain_by_type(domain, doc_type, db): function get_doc_ids_in_domain_by_class (line 25) | def get_doc_ids_in_domain_by_class(domain, doc_class): function get_doc_ids_in_domain_by_type (line 31) | def get_doc_ids_in_domain_by_type(domain, doc_type, database=None): function iterate_doc_ids_in_domain_by_type (line 45) | def iterate_doc_ids_in_domain_by_type(domain, doc_type, chunk_size=10000, function get_docs_in_domain_by_class (line 69) | def get_docs_in_domain_by_class(domain, doc_class, limit=None, skip=None): function get_domain_ids_by_names (line 104) | def get_domain_ids_by_names(names): function iter_domains (line 113) | def iter_domains(): function deleted_domain_exists (line 123) | def deleted_domain_exists(domain): function domain_exists (line 130) | def domain_exists(domain): function domain_or_deleted_domain_exists (line 137) | def domain_or_deleted_domain_exists(domain): function iter_all_domains_and_deleted_domains_with_name (line 141) | def iter_all_domains_and_deleted_domains_with_name(domain): FILE: corehq/apps/domain/decorators.py function load_domain (line 69) | def load_domain(req, domain): function _store_project_on_request (line 75) | def _store_project_on_request(request, domain_name): function redirect_for_login_or_domain (line 80) | def redirect_for_login_or_domain(request, login_url=None): function login_and_domain_required (line 85) | def login_and_domain_required(view_func): function _show_deactivated_notice (line 154) | def _show_deactivated_notice(request, domain): function _inactive_domain_response (line 163) | def _inactive_domain_response(request, domain_name): function _is_missing_two_factor (line 172) | def _is_missing_two_factor(view_fn, request): function _page_is_whitelisted (line 178) | def _page_is_whitelisted(path, domain): function _can_access_project_page (line 183) | def _can_access_project_page(request): function _redirect_to_project_access_upgrade (line 192) | def _redirect_to_project_access_upgrade(request): function _ensure_request_couch_user (line 199) | def _ensure_request_couch_user(request): function _ensure_request_project (line 206) | def _ensure_request_project(request): function active_user_logged_in (line 214) | def active_user_logged_in(request): class LoginAndDomainMixin (line 218) | class LoginAndDomainMixin(object): method dispatch (line 221) | def dispatch(self, *args, **kwargs): function _api_key (line 225) | def _api_key(allow_creds_in_data=True): function _oauth2_check (line 242) | def _oauth2_check(scopes): function _login_or_challenge (line 264) | def _login_or_challenge(challenge_fn, allow_cc_users=False, api_key=False, function login_or_basic_ex (line 337) | def login_or_basic_ex(allow_cc_users=False, allow_sessions=True, require... function login_or_basic_or_api_key_ex (line 346) | def login_or_basic_or_api_key_ex(allow_cc_users=False, allow_sessions=Tr... function login_or_digest_ex (line 355) | def login_or_digest_ex(allow_cc_users=False, allow_sessions=True, requir... function login_or_formplayer_ex (line 364) | def login_or_formplayer_ex(allow_cc_users=False, allow_sessions=True, re... function login_or_api_key_ex (line 373) | def login_or_api_key_ex(allow_cc_users=False, allow_sessions=True, requi... function login_or_oauth2_ex (line 383) | def login_or_oauth2_ex(allow_cc_users=False, allow_sessions=True, requir... function get_multi_auth_decorator (line 394) | def get_multi_auth_decorator( function two_factor_exempt (line 431) | def two_factor_exempt(view_func): function api_auth (line 444) | def api_auth(*, allow_creds_in_data=True, oauth_scopes=None): function get_auth_decorator_map (line 463) | def get_auth_decorator_map( function two_factor_check (line 495) | def two_factor_check(view_func, api_key): function sso_check (line 530) | def sso_check(view_func, api_key): function _sso_required (line 548) | def _sso_required(request): function _two_factor_required (line 558) | def _two_factor_required(view_func, domain_obj, request): function cls_to_view (line 591) | def cls_to_view(additional_decorator=None): function api_domain_view (line 615) | def api_domain_view(view): function login_required (line 634) | def login_required(view_func): function active_domains_required (line 645) | def active_domains_required(view_func): function check_lockout (line 658) | def check_lockout(fn): function domain_admin_required_ex (line 680) | def domain_admin_required_ex(redirect_page_name=None): function require_superuser_or_contractor (line 707) | def require_superuser_or_contractor(view_func): function require_superuser (line 720) | def require_superuser(view_func): function check_domain_mobile_access (line 741) | def check_domain_mobile_access(view_func): function track_domain_request (line 759) | def track_domain_request(calculated_prop): FILE: corehq/apps/domain/deletion.py class BaseDeletion (line 39) | class BaseDeletion(object): method __init__ (line 41) | def __init__(self, app_label, models): method get_model_classes (line 45) | def get_model_classes(self): method is_app_installed (line 55) | def is_app_installed(self): class CustomDeletion (line 62) | class CustomDeletion(BaseDeletion): method __init__ (line 64) | def __init__(self, app_label, deletion_fn, models): method execute (line 68) | def execute(self, domain_name): class ModelDeletion (line 73) | class ModelDeletion(BaseDeletion): method __init__ (line 75) | def __init__(self, app_label, model_name, domain_filter_kwarg, method get_model_manager (line 103) | def get_model_manager(self): method execute (line 107) | def execute(self, domain_name): class PartitionedModelDeletion (line 119) | class PartitionedModelDeletion(ModelDeletion): method execute (line 120) | def execute(self, domain_name): class DjangoUserRelatedModelDeletion (line 128) | class DjangoUserRelatedModelDeletion(ModelDeletion): method execute (line 129) | def execute(self, domain_name): function _delete_domain_backend_mappings (line 139) | def _delete_domain_backend_mappings(domain_name): function _delete_domain_backends (line 144) | def _delete_domain_backends(domain_name): function _delete_web_user_membership (line 149) | def _delete_web_user_membership(domain_name): function _log_web_user_membership_removed (line 162) | def _log_web_user_membership_removed(user, domain, via): function _terminate_subscriptions (line 168) | def _terminate_subscriptions(domain_name): function delete_all_cases (line 195) | def delete_all_cases(domain_name): function delete_all_forms (line 205) | def delete_all_forms(domain_name): function iter_ids (line 214) | def iter_ids(model_class, field, domain, chunk_size=1000): function _delete_es_docs (line 233) | def _delete_es_docs(es_query, domain_name): function _delete_data_files (line 247) | def _delete_data_files(domain_name): function _delete_sms_content_events_schedules (line 254) | def _delete_sms_content_events_schedules(domain_name): function _disable_toggles (line 271) | def _disable_toggles(domain_name): function _delete_django_users (line 279) | def _delete_django_users(domain_name): function _delete_filtered_models (line 287) | def _delete_filtered_models(app_name, models, domain_filters): function _delete_demo_user_restores (line 296) | def _delete_demo_user_restores(domain_name): function apply_deletion_operations (line 507) | def apply_deletion_operations(domain_name): FILE: corehq/apps/domain/exceptions.py class NameUnavailableException (line 1) | class NameUnavailableException(Exception): class DomainDoesNotExist (line 5) | class DomainDoesNotExist(Exception): class ErrorInitializingDomain (line 9) | class ErrorInitializingDomain(Exception): FILE: corehq/apps/domain/extension_points.py function custom_domain_module (line 12) | def custom_domain_module(domain) -> Optional[str]: function validate_password_rules (line 24) | def validate_password_rules(password) -> Optional[str]: function has_custom_clean_password (line 39) | def has_custom_clean_password(): FILE: corehq/apps/domain/forms.py function tf_choices (line 151) | def tf_choices(true_txt, false_txt): class ProjectSettingsForm (line 155) | class ProjectSettingsForm(forms.Form): method __init__ (line 177) | def __init__(self, *args, **kwargs): method clean_user_timezone (line 212) | def clean_user_timezone(self): method save (line 218) | def save(self, user, domain): class IPAccessConfigForm (line 230) | class IPAccessConfigForm(forms.Form): method __init__ (line 260) | def __init__(self, *args, **kwargs): method clean (line 283) | def clean(self): class SubAreaMixin (line 316) | class SubAreaMixin(object): method clean_sub_area (line 318) | def clean_sub_area(self): class CallCenterOwnerWidget (line 343) | class CallCenterOwnerWidget(Select2Ajax): method set_domain (line 345) | def set_domain(self, domain): method render (line 348) | def render(self, name, value, attrs=None, renderer=None): class DomainGlobalSettingsForm (line 353) | class DomainGlobalSettingsForm(forms.Form): method __init__ (line 543) | def __init__(self, *args, **kwargs): method get_extra_fields (line 611) | def get_extra_fields(self): method _handle_call_limit_visibility (line 635) | def _handle_call_limit_visibility(self): method _handle_release_mode_setting_value (line 646) | def _handle_release_mode_setting_value(self): method _handle_enable_all_add_ons (line 650) | def _handle_enable_all_add_ons(self): method _handle_orphan_case_alerts_setting_value (line 657) | def _handle_orphan_case_alerts_setting_value(self): method _handle_opt_out_of_data_sharing_setting_value (line 660) | def _handle_opt_out_of_data_sharing_setting_value(self): method _add_range_validation_to_integer_input (line 663) | def _add_range_validation_to_integer_input(self, settings_name, min_va... method clean_default_timezone (line 669) | def clean_default_timezone(self): method clean_default_geocoder_location (line 675) | def clean_default_geocoder_location(self): method _clean_image (line 681) | def _clean_image(self, field_name, permission, error_message): method clean_logo (line 690) | def clean_logo(self): method clean_logo_for_system_emails (line 697) | def clean_logo_for_system_emails(self): method clean_operator_call_limit (line 704) | def clean_operator_call_limit(self): method clean_release_mode_visibility (line 708) | def clean_release_mode_visibility(self): method validate_integer_value (line 715) | def validate_integer_value(value, value_name): method clean (line 721) | def clean(self): method _save_logo_configuration (line 734) | def _save_logo_configuration(self, domain): method _save_logo_for_system_emails (line 754) | def _save_logo_for_system_emails(self, domain_obj): method _save_call_center_configuration (line 766) | def _save_call_center_configuration(self, domain): method _save_timezone_configuration (line 785) | def _save_timezone_configuration(self, domain): method _save_release_mode_setting (line 799) | def _save_release_mode_setting(self, domain): method _save_enable_all_add_ons_setting (line 805) | def _save_enable_all_add_ons_setting(self, domain): method _save_orphan_case_alerts_setting (line 814) | def _save_orphan_case_alerts_setting(self, domain): method _save_opt_out_of_data_sharing_setting (line 817) | def _save_opt_out_of_data_sharing_setting(self, domain): method save (line 820) | def save(self, request, domain): class DomainMetadataForm (line 846) | class DomainMetadataForm(DomainGlobalSettingsForm): method __init__ (line 860) | def __init__(self, *args, **kwargs): method get_extra_fields (line 871) | def get_extra_fields(self): method save (line 881) | def save(self, request, domain): function tuple_of_copies (line 898) | def tuple_of_copies(a_list, blank=True): class PrivacySecurityForm (line 905) | class PrivacySecurityForm(forms.Form): method __init__ (line 982) | def __init__(self, *args, **kwargs): method save (line 1021) | def save(self, domain_obj): class DomainInternalForm (line 1056) | class DomainInternalForm(forms.Form, SubAreaMixin): method __init__ (line 1301) | def __init__(self, domain, can_edit_eula, *args, user, **kwargs): method current_values (line 1403) | def current_values(self): method _get_user_or_fail (line 1410) | def _get_user_or_fail(self, field): method clean_active_ucr_expressions (line 1423) | def clean_active_ucr_expressions(self): method clean_auto_case_update_hour (line 1431) | def clean_auto_case_update_hour(self): method clean_auto_case_update_limit (line 1441) | def clean_auto_case_update_limit(self): method clean_odata_feed_limit (line 1451) | def clean_odata_feed_limit(self): method clean (line 1461) | def clean(self): method save (line 1479) | def save(self, domain): function clean_password (line 1526) | def clean_password(txt): class NoAutocompleteMixin (line 1533) | class NoAutocompleteMixin(object): method __init__ (line 1535) | def __init__(self, *args, **kwargs): function send_password_reset_email (line 1542) | def send_password_reset_email(active_users): class BasePasswordResetForm (line 1593) | class BasePasswordResetForm(NoAutocompleteMixin, forms.Form): method clean_email (line 1611) | def clean_email(self): method save (line 1627) | def save(self, active_users, **kwargs): class UsernameAwareEmailField (line 1631) | class UsernameAwareEmailField(forms.EmailField): method __init__ (line 1632) | def __init__(self, *args, **kwargs): method validate (line 1636) | def validate(self, value): class HQPasswordResetForm (line 1647) | class HQPasswordResetForm(BasePasswordResetForm, NoAutocompleteMixin, fo... method save (line 1650) | def save(self, **kwargs): class UsernameOrEmailField (line 1666) | class UsernameOrEmailField(forms.CharField): method __init__ (line 1667) | def __init__(self, *args, **kwargs): method validate (line 1671) | def validate(self, value): class DomainPasswordResetForm (line 1681) | class DomainPasswordResetForm(BasePasswordResetForm, NoAutocompleteMixin... method __init__ (line 1684) | def __init__(self, *args, domain, **kwargs): method clean_email (line 1688) | def clean_email(self): method save (line 1696) | def save(self, **kwargs): class ConfidentialDomainPasswordResetForm (line 1712) | class ConfidentialDomainPasswordResetForm(DomainPasswordResetForm): method clean_email (line 1714) | def clean_email(self): class ConfidentialPasswordResetForm (line 1723) | class ConfidentialPasswordResetForm(HQPasswordResetForm): method clean_email (line 1725) | def clean_email(self): class HQSetPasswordForm (line 1734) | class HQSetPasswordForm(SetPasswordForm): method save (line 1741) | def save(self, commit=True): class EditBillingAccountInfoForm (line 1750) | class EditBillingAccountInfoForm(forms.ModelForm): class Meta (line 1758) | class Meta(object): method __init__ (line 1764) | def __init__(self, account, domain, creating_user, data=None, *args, *... method clean_phone_number (line 1859) | def clean_phone_number(self): method clean_email_list (line 1872) | def clean_email_list(self): method get_email_lists (line 1875) | def get_email_lists(self): method save (line 1884) | def save(self, commit=True): class ConfirmNewSubscriptionForm (line 1894) | class ConfirmNewSubscriptionForm(EditBillingAccountInfoForm): method __init__ (line 1902) | def __init__( method save (line 1983) | def save(self, commit=True): method send_prepayment_invoice (line 2040) | def send_prepayment_invoice(self, new_date_start, date_end): method new_subscription_start_end_dates (line 2054) | def new_subscription_start_end_dates(self): method current_is_annual_plan (line 2070) | def current_is_annual_plan(self): method is_annual_plan_selected (line 2073) | def is_annual_plan_selected(self): method is_same_edition (line 2076) | def is_same_edition(self): method is_downgrade_from_paid_plan (line 2079) | def is_downgrade_from_paid_plan(self): method is_autopay_required (line 2090) | def is_autopay_required(self): method clean (line 2094) | def clean(self): class ConfirmSubscriptionRenewalForm (line 2099) | class ConfirmSubscriptionRenewalForm(EditBillingAccountInfoForm): method __init__ (line 2107) | def __init__(self, account, domain, creating_user, current_subscription, method save (line 2157) | def save(self, commit=True): method send_prepayment_invoice (line 2185) | def send_prepayment_invoice(self, date_start, date_end): class InternalSubscriptionManagementForm (line 2194) | class InternalSubscriptionManagementForm(forms.Form): method slug (line 2202) | def slug(self): method subscription_type (line 2206) | def subscription_type(self): method account_name (line 2210) | def account_name(self): method account_emails (line 2214) | def account_emails(self): method process_subscription_management (line 2217) | def process_subscription_management(self): method next_account (line 2222) | def next_account(self): method current_subscription (line 2250) | def current_subscription(self): method should_autocomplete_account (line 2255) | def should_autocomplete_account(self): method autocomplete_account_name (line 2263) | def autocomplete_account_name(self): method current_contact_emails (line 2270) | def current_contact_emails(self): method subscription_default_fields (line 2279) | def subscription_default_fields(self): method __init__ (line 2285) | def __init__(self, domain, web_user, *args, **kwargs): method form_actions (line 2291) | def form_actions(self): class DimagiOnlyEnterpriseForm (line 2304) | class DimagiOnlyEnterpriseForm(InternalSubscriptionManagementForm): method __init__ (line 2308) | def __init__(self, domain, web_user, *args, **kwargs): method process_subscription_management (line 2324) | def process_subscription_management(self): method subscription_default_fields (line 2342) | def subscription_default_fields(self): method account_name (line 2352) | def account_name(self): class AdvancedExtendedTrialForm (line 2356) | class AdvancedExtendedTrialForm(InternalSubscriptionManagementForm): method __init__ (line 2374) | def __init__(self, domain, web_user, *args, **kwargs): method process_subscription_management (line 2401) | def process_subscription_management(self): method subscription_default_fields (line 2421) | def subscription_default_fields(self): method account_name (line 2434) | def account_name(self): method account_emails (line 2438) | def account_emails(self): class ContractedPartnerForm (line 2442) | class ContractedPartnerForm(InternalSubscriptionManagementForm): method __init__ (line 2491) | def __init__(self, domain, web_user, *args, **kwargs): method process_subscription_management (line 2568) | def process_subscription_management(self): method is_uneditable (line 2618) | def is_uneditable(self): method subscription_default_fields (line 2626) | def subscription_default_fields(self): method account_name (line 2638) | def account_name(self): method account_emails (line 2642) | def account_emails(self): method clean_end_date (line 2645) | def clean_end_date(self): method clean_sms_credits (line 2661) | def clean_sms_credits(self): method clean_user_credits (line 2664) | def clean_user_credits(self): method _clean_credits (line 2667) | def _clean_credits(self, credits, max_credits, credits_name): class SelectSubscriptionTypeForm (line 2687) | class SelectSubscriptionTypeForm(forms.Form): method __init__ (line 2699) | def __init__(self, defaults=None, disable_input=False, **kwargs): class ManageReleasesByLocationForm (line 2723) | class ManageReleasesByLocationForm(forms.Form): method __init__ (line 2735) | def __init__(self, request, domain, *args, **kwargs): method app_id_choices (line 2760) | def app_id_choices(self): method version_build_id (line 2767) | def version_build_id(self): method clean_app_id (line 2772) | def clean_app_id(self): method clean_location_id (line 2777) | def clean_location_id(self): method clean_version (line 2782) | def clean_version(self): method clean (line 2787) | def clean(self): method save (line 2796) | def save(self): class DomainAlertForm (line 2808) | class DomainAlertForm(forms.Form): method __init__ (line 2825) | def __init__(self, request, *args, **kwargs): class ExtractAppInfoForm (line 2846) | class ExtractAppInfoForm(forms.Form): method __init__ (line 2855) | def __init__(self, *args, **kwargs): method clean_app_url (line 2872) | def clean_app_url(self): method clean (line 2880) | def clean(self): method _get_source_server (line 2912) | def _get_source_server(self, parsed_url): class ImportAppForm (line 2927) | class ImportAppForm(forms.Form): method __init__ (line 2943) | def __init__(self, container_id, cancel_url, validated_data=None, *arg... method clean_app_file (line 2987) | def clean_app_file(self): method construct_download_url (line 2997) | def construct_download_url(self, source_server, source_domain, app_id): class DomainCredentialIssuingAppForm (line 3002) | class DomainCredentialIssuingAppForm(forms.Form): method __init__ (line 3010) | def __init__(self, domain, *args, **kwargs): method get_domain_apps_choices (line 3036) | def get_domain_apps_choices(self, domain): FILE: corehq/apps/domain/management/commands/bootstrap_app.py class Command (line 11) | class Command(BaseCommand): method add_arguments (line 14) | def add_arguments(self, parser): method handle (line 18) | def handle(self, domain_name, app_name, **options): method create_two_module_app (line 34) | def create_two_module_app(self, domain_name, app_name): FILE: corehq/apps/domain/management/commands/calculate_physical_size.py class Command (line 16) | class Command(BaseCommand): method add_arguments (line 19) | def add_arguments(self, parser): method handle (line 45) | def handle(self, domains, **options): function _get_doc_size_in_bytes (line 102) | def _get_doc_size_in_bytes(doc): function _get_totals_for_query (line 106) | def _get_totals_for_query(query): function _get_form_size_stats (line 115) | def _get_form_size_stats(domain, sample_size): function _get_case_size_stats (line 136) | def _get_case_size_stats(domain, sample_size, use_case_search): function _get_human_bytes (line 151) | def _get_human_bytes(num_bytes): FILE: corehq/apps/domain/management/commands/delete_domain.py class Command (line 8) | class Command(BaseCommand): method add_arguments (line 11) | def add_arguments(self, parser): method handle (line 16) | def handle(self, domain_name, **options): FILE: corehq/apps/domain/management/commands/disable_toggles_for_deleted_domains.py class Command (line 9) | class Command(BaseCommand): method add_arguments (line 12) | def add_arguments(self, parser): method handle (line 21) | def handle(self, **options): FILE: corehq/apps/domain/management/commands/first_superuser.py class Command (line 5) | class Command(BaseCommand): method handle (line 8) | def handle(self, **options): FILE: corehq/apps/domain/management/commands/hard_delete_forms_and_cases_in_domain.py class Command (line 11) | class Command(BaseCommand): method add_arguments (line 13) | def add_arguments(self, parser): method handle (line 30) | def handle(self, domain, **options): FILE: corehq/apps/domain/management/commands/make_superuser.py class Command (line 17) | class Command(BaseCommand): method add_arguments (line 20) | def add_arguments(self, parser): method get_password_from_user (line 26) | def get_password_from_user(): method handle (line 33) | def handle(self, username, **options): method grant_all_tags_edit_permissions (line 101) | def grant_all_tags_edit_permissions(username): FILE: corehq/apps/domain/management/commands/redirect_url.py class Command (line 9) | class Command(BaseCommand): method add_arguments (line 18) | def add_arguments(self, parser): method handle (line 30) | def handle(self, domain, **options): function _assert_data_migration (line 52) | def _assert_data_migration(domain): function _assert_valid_url (line 57) | def _assert_valid_url(url): FILE: corehq/apps/domain/management/commands/remove_duplicate_domains.py class Command (line 7) | class Command(BaseCommand): method add_arguments (line 10) | def add_arguments(self, parser): method handle (line 19) | def handle(self, selection_method, dry_run, **options): function score_domain_doc (line 91) | def score_domain_doc(domain_doc, *, is_currently_chosen): FILE: corehq/apps/domain/management/commands/reset_case_search_toggles.py class Command (line 7) | class Command(BaseCommand): method add_arguments (line 10) | def add_arguments(self, parser): method reset_toggle (line 23) | def reset_toggle(self, domain_name, toggle, dry_run): method handle (line 29) | def handle(self, **options): FILE: corehq/apps/domain/management/commands/tests/test_make_superuser.py class TestEmailValidation (line 11) | class TestEmailValidation(SimpleTestCase): method test_make_superuser (line 16) | def test_make_superuser(self, *args): method test_make_superuser_allows_special_domains (line 20) | def test_make_superuser_allows_special_domains(self, *args): method test_make_superuser_rejects_invalid_email_syntax (line 25) | def test_make_superuser_rejects_invalid_email_syntax(self, *args): function patch_fake_webuser (line 31) | def patch_fake_webuser(): function get_fake_superuser (line 36) | def get_fake_superuser(username): FILE: corehq/apps/domain/management/commands/update_case_search_toggles.py function _module_name (line 9) | def _module_name(module): class Command (line 16) | class Command(BaseCommand): method add_arguments (line 19) | def add_arguments(self, parser): method _get_case_list_modules (line 37) | def _get_case_list_modules(app_doc): method _domain_uses_advanced_feature (line 41) | def _domain_uses_advanced_feature(domain_name): method _app_uses_advanced_feature (line 56) | def _app_uses_advanced_feature(app): method _app_uses_deprecated_feature (line 122) | def _app_uses_deprecated_feature(app): method _app_uses_related_lookup_feature (line 149) | def _app_uses_related_lookup_feature(app): method handle (line 193) | def handle(self, **options): FILE: corehq/apps/domain/middleware.py class CCHQPRBACMiddleware (line 11) | class CCHQPRBACMiddleware(MiddlewareMixin): method process_view (line 26) | def process_view(self, request, view_func, view_args, view_kwargs): method apply_prbac (line 31) | def apply_prbac(cls, request): class DomainHistoryMiddleware (line 47) | class DomainHistoryMiddleware(MiddlewareMixin): method process_response (line 49) | def process_response(self, request, response): method remember_domain_visit (line 57) | def remember_domain_visit(self, request, response): class DomainMigrationMiddleware (line 63) | class DomainMigrationMiddleware(MiddlewareMixin): method process_view (line 68) | def process_view(self, request, view_func, view_args, view_kwargs): FILE: corehq/apps/domain/migrations/0001_initial.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/domain/migrations/0002_auto_20171020_1428.py function add_partitions (line 7) | def add_partitions(apps, schema_editor): class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/apps/domain/migrations/0003_auto_20180525_1551.py class Migration (line 10) | class Migration(migrations.Migration): FILE: corehq/apps/domain/migrations/0004_domainauditrecordentry.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/domain/migrations/0005_ga_opt_out.py function _disable_ga (line 8) | def _disable_ga(apps, schema_editor): class Migration (line 15) | class Migration(migrations.Migration): FILE: corehq/apps/domain/migrations/0006_fix_domain_es_docs.py function fix_domain_es_docs (line 10) | def fix_domain_es_docs(apps, schema_editor): class Migration (line 19) | class Migration(migrations.Migration): FILE: corehq/apps/domain/migrations/0007_auto_20200924_1753.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/domain/migrations/0008_use_livequery.py function _set_use_livequery (line 13) | def _set_use_livequery(apps, schema_editor): class Migration (line 27) | class Migration(migrations.Migration): FILE: corehq/apps/domain/migrations/0009_restrict_mob_access_from_FF.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/domain/migrations/0010_projectlimit.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/domain/migrations/0011_alloweducrexpressionsettings.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/domain/migrations/0012_operatorcalllimitsettings.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/domain/migrations/0013_accountconfirmationsettings_squashed_0016_alter_smsaccountconfirmationsettings_project_name.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/domain/migrations/0014_appreleasemodesetting.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/domain/migrations/0015_delete_projectlimit.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/domain/migrations/0016_rename_superuserprojectentryrecord_domain_username_domain_supe_domain_c3d32e_idx.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/domain/migrations/0017_appmanagerdomainsettings.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/domain/migrations/0018_enable_all_add_ons.py function get_enabled_domains (line 8) | def get_enabled_domains(): function enable_all_add_ons (line 18) | def enable_all_add_ons(apps, schema_editor): class Migration (line 31) | class Migration(migrations.Migration): FILE: corehq/apps/domain/migrations/0019_remove_usercase_enabled_field.py function _remove_usercase_enabled (line 13) | def _remove_usercase_enabled(apps, schema_editor): function _pop_field (line 18) | def _pop_field(doc): class Migration (line 24) | class Migration(migrations.Migration): FILE: corehq/apps/domain/migrations/0020_delete_transferdomainrequest.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/domain/migrations/0021_delete_smsaccountconfirmationsettings.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/domain/models.py function all_restricted_ucr_expressions (line 83) | def all_restricted_ucr_expressions(): function cached_property (line 116) | def cached_property(method): function icds_conditional_session_key (line 127) | def icds_conditional_session_key(): class UpdatableSchema (line 136) | class UpdatableSchema(object): method update (line 138) | def update(self, new_dict): class Deployment (line 143) | class Deployment(DocumentSchema, UpdatableSchema): class CallCenterProperties (line 151) | class CallCenterProperties(DocumentSchema): method fixtures_are_active (line 165) | def fixtures_are_active(self): method config_is_valid (line 168) | def config_is_valid(self): method update_from_app_config (line 171) | def update_from_app_config(self, config): class LicenseAgreementType (line 189) | class LicenseAgreementType: class LicenseAgreement (line 194) | class LicenseAgreement(DocumentSchema): class InternalProperties (line 203) | class InternalProperties(DocumentSchema, UpdatableSchema): class CaseDisplaySettings (line 255) | class CaseDisplaySettings(DocumentSchema): class DayTimeWindow (line 267) | class DayTimeWindow(DocumentSchema): class Domain (line 279) | class Domain(QuickCachedDocumentMixin, BlobMixin, Document, SnapshotMixin): method wrap (line 466) | def wrap(cls, data): method get_default_timezone (line 510) | def get_default_timezone(self): method is_secure_session_required (line 517) | def is_secure_session_required(name): method secure_timeout (line 523) | def secure_timeout(name): method active_for_couch_user (line 537) | def active_for_couch_user(couch_user, is_active=True): method active_for_user (line 547) | def active_for_user(user, is_active=True): method add (line 560) | def add(self, model_instance, is_active=True): method applications (line 570) | def applications(self): method full_applications (line 573) | def full_applications(self, include_builds=True): method versions (line 594) | def versions(self): method has_media (line 599) | def has_media(self): method use_cloudcare_releases (line 607) | def use_cloudcare_releases(self): method all_users (line 610) | def all_users(self): method recent_submissions (line 614) | def recent_submissions(self): method get_by_name (line 620) | def get_by_name(cls, name, strict=False): method get_or_create_with_name (line 652) | def get_or_create_with_name(cls, name, is_active=False, secure_submiss... method generate_name (line 667) | def generate_name(cls, hr_name, max_length=25): method get_all (line 697) | def get_all(cls, include_docs=True, include_snapshots=False): method get_all_names (line 710) | def get_all_names(cls, include_snapshots=False): method get_deleted_domain_names (line 714) | def get_deleted_domain_names(cls): method get_all_ids (line 719) | def get_all_ids(cls): method get_names_by_prefix (line 723) | def get_names_by_prefix(cls, prefix): method case_sharing_included (line 738) | def case_sharing_included(self): method save (line 743) | def save(self, **params): method snapshots (line 758) | def snapshots(self, **view_kwargs): method update_deployment (line 768) | def update_deployment(self, **kwargs): method update_internal (line 772) | def update_internal(self, **kwargs): method display_name (line 776) | def display_name(self): method get_license_display (line 783) | def get_license_display(self): method get_license_url (line 786) | def get_license_url(self): method copies (line 789) | def copies(self): method copies_of_parent (line 792) | def copies_of_parent(self): method delete (line 797) | def delete(self, *, leave_tombstone): method _pre_delete (line 817) | def _pre_delete(self): method commtrack_settings (line 829) | def commtrack_settings(self): method has_custom_logo (line 838) | def has_custom_logo(self): method get_custom_logo (line 841) | def get_custom_logo(self): method get_odata_feed_limit (line 847) | def get_odata_feed_limit(self): method put_attachment (line 850) | def put_attachment(self, *args, **kw): method location_types (line 854) | def location_types(self): method has_privilege (line 859) | def has_privilege(self, privilege): method uses_locations (line 865) | def uses_locations(self): method convert_to_commtrack (line 872) | def convert_to_commtrack(self): method clear_caches (line 879) | def clear_caches(self): method get_daily_outbound_sms_limit (line 887) | def get_daily_outbound_sms_limit(self): class DomainAuditRecordEntry (line 895) | class DomainAuditRecordEntry(models.Model): method update_calculations (line 909) | def update_calculations(cls, domain, property_to_update): class AllowedUCRExpressionSettings (line 917) | class AllowedUCRExpressionSettings(models.Model): method get_allowed_ucr_expressions (line 935) | def get_allowed_ucr_expressions(cls, domain_name): method save_allowed_ucr_expressions (line 944) | def save_allowed_ucr_expressions(cls, domain_name, expressions): method disallowed_ucr_expressions (line 953) | def disallowed_ucr_expressions(cls, domain_name): class OperatorCallLimitSettings (line 959) | class OperatorCallLimitSettings(models.Model): class AppReleaseModeSetting (line 974) | class AppReleaseModeSetting(models.Model): method get_settings (line 980) | def get_settings(domain): class AppManagerDomainSettings (line 985) | class AppManagerDomainSettings(models.Model): function all_app_manager_add_ons_enabled (line 992) | def all_app_manager_add_ons_enabled(domain): FILE: corehq/apps/domain/project_access/middleware.py class ProjectAccessMiddleware (line 13) | class ProjectAccessMiddleware(MiddlewareMixin): method process_view (line 14) | def process_view(self, request, view_func, view_args, view_kwargs): method record_superuser_entry (line 23) | def record_superuser_entry(self, domain, username): method record_web_user_entry (line 29) | def record_web_user_entry(user, domain): FILE: corehq/apps/domain/project_access/models.py class SuperuserProjectEntryRecord (line 11) | class SuperuserProjectEntryRecord(models.Model): class Meta (line 16) | class Meta(object): method record_entry (line 20) | def record_entry(cls, username, domain): method entry_recently_recorded (line 25) | def entry_recently_recorded(cls, username, domain): FILE: corehq/apps/domain/shortcuts.py function create_domain (line 9) | def create_domain(name, active=True): function create_user (line 15) | def create_user(username, password, is_staff=False, is_superuser=False, function publish_domain_saved (line 37) | def publish_domain_saved(domain_obj): function _domain_to_change_meta (line 44) | def _domain_to_change_meta(domain_obj): FILE: corehq/apps/domain/signals.py function invalide_cache (line 9) | def invalide_cache(sender, **kwargs): FILE: corehq/apps/domain/static/domain/js/confirm_billing_info.js method basicInfoComplete (line 32) | basicInfoComplete() { method autopayRequirementsMet (line 38) | autopayRequirementsMet() { method canRemoveAutopay (line 41) | canRemoveAutopay() { method showAutopayAndInfoRequiredNotice (line 44) | showAutopayAndInfoRequiredNotice() { method showAutopayRequiredNotice (line 47) | showAutopayRequiredNotice() { method showBillingInfoRequiredNotice (line 50) | showBillingInfoRequiredNotice() { method showAutopayConfirmNotice (line 53) | showAutopayConfirmNotice() { method showAnnualConfirmNotice (line 56) | showAnnualConfirmNotice() { method isSubmitDisabled (line 59) | isSubmitDisabled() { FILE: corehq/apps/domain/static/domain/js/feature_previews.js function ToSModalViewModel (line 6) | function ToSModalViewModel() { function initModalBindings (line 29) | function initModalBindings() { function trackChanges (line 50) | function trackChanges() { FILE: corehq/apps/domain/static/domain/js/internal_calculations.js function loadCalculation (line 5) | function loadCalculation($group) { FILE: corehq/apps/domain/static/domain/js/internal_settings.js function updateSubareas (line 20) | function updateSubareas() { function updateWorkshopRegion (line 38) | function updateWorkshopRegion() { FILE: corehq/apps/domain/static/domain/js/my_project_settings.js function compareGlobalUserTimezones (line 49) | function compareGlobalUserTimezones() { FILE: corehq/apps/domain/static/domain/js/new_stripe_card_manager.js method init (line 17) | init() { method reset (line 24) | reset() { method saveCard (line 32) | saveCard() { FILE: corehq/apps/domain/tasks.py function _domains_over_x_forms (line 13) | def _domains_over_x_forms(num_forms=200, domains=None): function _real_incomplete_domains (line 22) | def _real_incomplete_domains(): function incomplete_self_started_domains (line 35) | def incomplete_self_started_domains(): function self_starter_email (line 57) | def self_starter_email(): FILE: corehq/apps/domain/tests/test_api_key_auth.py function has_credentials (line 19) | def has_credentials(request, allow_creds_in_data=True): function test_no_auth (line 24) | def test_no_auth(): function test_credentials_in_META (line 30) | def test_credentials_in_META(): function test_credentials_in_GET (line 37) | def test_credentials_in_GET(): function test_credentials_in_POST (line 43) | def test_credentials_in_POST(): class AuthenticationTestBase (line 49) | class AuthenticationTestBase(TestCase): method setUpClass (line 53) | def setUpClass(cls): method call_api (line 62) | def call_api(self, request, allow_creds_in_data=False): method test_credentials_in_META (line 71) | def test_credentials_in_META(self): method test_credentials_in_data (line 81) | def test_credentials_in_data(self): method test_credentials_with_basic_auth (line 90) | def test_credentials_with_basic_auth(self): class SSOApiAuthenticationTest (line 99) | class SSOApiAuthenticationTest(AuthenticationTestBase): method setUpClass (line 104) | def setUpClass(cls): method test_sso_user_with_api_key_auth_succeeds (line 126) | def test_sso_user_with_api_key_auth_succeeds(self): method test_sso_user_with_basic_auth_and_api_key_succeeds (line 132) | def test_sso_user_with_basic_auth_and_api_key_succeeds(self): method test_sso_user_with_basic_auth_is_rejected (line 141) | def test_sso_user_with_basic_auth_is_rejected(self): method test_non_sso_user_with_basic_auth_succeeds (line 151) | def test_non_sso_user_with_basic_auth_succeeds(self): FILE: corehq/apps/domain/tests/test_auth.py class TestUserCanAccessDomainSpecificPages (line 19) | class TestUserCanAccessDomainSpecificPages(SimpleTestCase): method test_request_with_no_logged_in_user (line 20) | def test_request_with_no_logged_in_user(self, *args): method test_request_with_no_project (line 27) | def test_request_with_no_project(self, *args): method test_request_with_inactive_project (line 34) | def test_request_with_inactive_project(self, *args): method test_request_with_no_couch_user (line 43) | def test_request_with_no_couch_user(self, *args): method test_request_for_missing_domain_membership_for_non_superuser (line 51) | def test_request_for_missing_domain_membership_for_non_superuser(self,... method test_request_for_missing_domain_membership_for_superuser (line 58) | def test_request_for_missing_domain_membership_for_superuser(self, *ar... method test_request_for_valid_domain_membership_for_non_superuser (line 70) | def test_request_for_valid_domain_membership_for_non_superuser(self, *... class ApiKeyFallbackTests (line 77) | class ApiKeyFallbackTests(TestCase): method test_fails_if_does_not_allow_api_keys_as_passwords (line 78) | def test_fails_if_does_not_allow_api_keys_as_passwords(self): method test_returns_user_on_successful_auth (line 86) | def test_returns_user_on_successful_auth(self): method test_does_not_authenticate_against_inactive_keys (line 94) | def test_does_not_authenticate_against_inactive_keys(self): method test_allows_access_via_domain_restricted_keys (line 102) | def test_allows_access_via_domain_restricted_keys(self): method test_does_not_allow_cross_domain_access (line 110) | def test_does_not_allow_cross_domain_access(self): method test_allows_access_to_ips_on_whitelist (line 118) | def test_allows_access_to_ips_on_whitelist(self): method test_does_not_allow_ips_not_on_whitelist (line 126) | def test_does_not_allow_ips_not_on_whitelist(self): method test_allows_empty_ip_for_non_ip_restrictive_keys (line 134) | def test_allows_empty_ip_for_non_ip_restrictive_keys(self): method test_can_use_current_key (line 142) | def test_can_use_current_key(self): method test_cannot_use_expired_key (line 151) | def test_cannot_use_expired_key(self): method test_domain_scoped_api_key_allows_authentication_to_domain_agnostic_urls (line 160) | def test_domain_scoped_api_key_allows_authentication_to_domain_agnosti... method setUp (line 167) | def setUp(self): method _create_user (line 171) | def _create_user(cls, username): method _create_api_key_for_user (line 175) | def _create_api_key_for_user( method _create_request (line 197) | def _create_request(cls, can_use_api_key=True, for_domain='test-domain... class HQApiKeyAuthenticationTests (line 210) | class HQApiKeyAuthenticationTests(TestCase): method test_successful_attempt_returns_true (line 211) | def test_successful_attempt_returns_true(self): method test_bad_api_key_returns_unauthorized (line 220) | def test_bad_api_key_returns_unauthorized(self): method test_cannot_authenticate_with_inactive_key (line 231) | def test_cannot_authenticate_with_inactive_key(self): method test_can_authenticate_with_domain_restricted_key (line 242) | def test_can_authenticate_with_domain_restricted_key(self): method test_does_not_allow_cross_domain_access (line 251) | def test_does_not_allow_cross_domain_access(self): method test_user_can_authenticate_if_ip_is_on_whitelist (line 262) | def test_user_can_authenticate_if_ip_is_on_whitelist(self): method test_user_cannot_authenticate_with_an_ip_not_in_whitelist (line 271) | def test_user_cannot_authenticate_with_an_ip_not_in_whitelist(self): method test_allows_empty_ip_for_non_ip_restrictive_keys (line 282) | def test_allows_empty_ip_for_non_ip_restrictive_keys(self): method test_user_can_authenticate_with_current_key (line 292) | def test_user_can_authenticate_with_current_key(self): method test_user_cannot_authenticate_with_expired_key (line 302) | def test_user_cannot_authenticate_with_expired_key(self): method test_user_can_authenticate_to_urls_lacking_domain_with_domain_scoped_keys (line 313) | def test_user_can_authenticate_to_urls_lacking_domain_with_domain_scop... method _create_user (line 323) | def _create_user(cls, username): method _create_api_key_for_user (line 327) | def _create_api_key_for_user( method _create_request (line 349) | def _create_request(cls, username='test@dimagi.com', api_key='1234', f... method test_domain_scoped_api_key_allows_authentication_to_domain_agnostic_urls (line 359) | def test_domain_scoped_api_key_allows_authentication_to_domain_agnosti... FILE: corehq/apps/domain/tests/test_auth_decorators.py function sample_view (line 19) | def sample_view(request, *args, **kwargs): function challenge (line 23) | def challenge(check, user): function get_passing_decorator (line 37) | def get_passing_decorator(user=None): function get_failing_decorator (line 41) | def get_failing_decorator(user=None): class LoginOrChallengeTest (line 49) | class LoginOrChallengeTest(SimpleTestCase): method test_challenge (line 51) | def test_challenge(self): method test_failing_challenge (line 57) | def test_failing_challenge(self): function _get_request (line 63) | def _get_request(user=AnonymousUser()): class AuthTestMixin (line 71) | class AuthTestMixin: method assertForbidden (line 73) | def assertForbidden(self, result): class LoginOrChallengeDBTest (line 77) | class LoginOrChallengeDBTest(TestCase, AuthTestMixin): method setUpClass (line 81) | def setUpClass(cls): method tearDownClass (line 90) | def tearDownClass(cls): method _get_test_for_web_user (line 95) | def _get_test_for_web_user(self, allow_cc_users, allow_sessions, requi... method _get_test_for_cc_user (line 102) | def _get_test_for_cc_user(self, allow_cc_users, allow_sessions, requir... method test_no_user_set (line 109) | def test_no_user_set(self): method test_no_cc_users_no_sessions (line 122) | def test_no_cc_users_no_sessions(self): method test_no_cc_users_with_sessions (line 132) | def test_no_cc_users_with_sessions(self): method test_with_cc_users (line 143) | def test_with_cc_users(self): method test_no_domain_no_sessions (line 154) | def test_no_domain_no_sessions(self): method test_no_domain_with_sessions (line 166) | def test_no_domain_with_sessions(self): method test_deactivated_web_user (line 177) | def test_deactivated_web_user(self): function _get_auth_mock (line 194) | def _get_auth_mock(succeed=True): class ApiAuthTest (line 214) | class ApiAuthTest(SimpleTestCase, AuthTestMixin): method test_api_auth_no_auth (line 217) | def test_api_auth_no_auth(self): method _do_auth_test (line 222) | def _do_auth_test(self, auth_header, decorator_to_mock): method test_api_auth_oauth (line 231) | def test_api_auth_oauth(self): method test_api_auth_basic (line 234) | def test_api_auth_basic(self): method test_api_auth_digest (line 237) | def test_api_auth_digest(self): method test_api_auth_key (line 240) | def test_api_auth_key(self): method test_api_auth_oauth_with_scope (line 243) | def test_api_auth_oauth_with_scope(self): method test_api_auth_formplayer (line 253) | def test_api_auth_formplayer(self): function sample_view_with_response (line 268) | def sample_view_with_response(request, *args, **kwargs): class AllowCORSDecoratorTest (line 272) | class AllowCORSDecoratorTest(TestCase): method _assert_no_cors (line 275) | def _assert_no_cors(self, response): method _assert_cors (line 278) | def _assert_cors(self, response): method test_no_decorator_no_cors_headers (line 282) | def test_no_decorator_no_cors_headers(self): method test_decorator_has_headers (line 285) | def test_decorator_has_headers(self): method test_method_exclusions (line 289) | def test_method_exclusions(self): method test_options_no_decorator (line 293) | def test_options_no_decorator(self): method test_options (line 297) | def test_options(self): FILE: corehq/apps/domain/tests/test_auth_type.py class TestDetermineAuthType (line 10) | class TestDetermineAuthType(SimpleTestCase): method _mock_request (line 13) | def _mock_request(user_agent='', auth_header=''): method test_digest_is_default (line 25) | def test_digest_is_default(self): method test_override_default (line 28) | def test_override_default(self): method test_basic_header_overrides_default (line 31) | def test_basic_header_overrides_default(self): class TestDetermineAuthTypeFromRequest (line 36) | class TestDetermineAuthTypeFromRequest(SimpleTestCase): method get_django_request (line 42) | def get_django_request(self, auth=None, headers=None): method test_basic_auth (line 61) | def test_basic_auth(self): method test_digest_auth (line 65) | def test_digest_auth(self): method test_api_auth (line 69) | def test_api_auth(self): method test_api_auth_bad_format (line 76) | def test_api_auth_bad_format(self): FILE: corehq/apps/domain/tests/test_dbaccessors.py class DBAccessorsTest (line 27) | class DBAccessorsTest(TestCase): method setUpClass (line 30) | def setUpClass(cls): method tearDownClass (line 37) | def tearDownClass(cls): method test_get_doc_count_in_domain_by_class (line 43) | def test_get_doc_count_in_domain_by_class(self): method test_get_docs_in_domain_by_class (line 56) | def test_get_docs_in_domain_by_class(self): method test_get_doc_ids_in_domain_by_type_initial_empty (line 68) | def test_get_doc_ids_in_domain_by_type_initial_empty(self): method test_get_doc_ids_in_domain_by_type_match (line 71) | def test_get_doc_ids_in_domain_by_type_match(self): method test_get_doc_ids_in_domain_by_type_nomatch (line 84) | def test_get_doc_ids_in_domain_by_type_nomatch(self): method test_iterate_doc_ids_in_domain_by_type (line 96) | def test_iterate_doc_ids_in_domain_by_type(self): method test_get_domain_ids_by_names (line 130) | def test_get_domain_ids_by_names(self): method test_deleted_domain_exists (line 143) | def test_deleted_domain_exists(self): FILE: corehq/apps/domain/tests/test_delete_domain.py class TestDeleteDomain (line 151) | class TestDeleteDomain(TestCase): method _create_data (line 153) | def _create_data(self, domain_name, i): method setUp (line 194) | def setUp(self): method _assert_sql_counts (line 229) | def _assert_sql_counts(self, domain, number): method test_sql_objects_deletion (line 245) | def test_sql_objects_deletion(self): method test_active_subscription_terminated (line 256) | def test_active_subscription_terminated(self): method test_accounting_future_subscription_suppressed (line 263) | def test_accounting_future_subscription_suppressed(self): method test_active_subscription_credits_transferred_to_account (line 281) | def test_active_subscription_credits_transferred_to_account(self): method test_downgraded (line 307) | def test_downgraded(self, mock_get_response): method _test_case_deletion (line 314) | def _test_case_deletion(self): method test_case_deletion_sql (line 324) | def test_case_deletion_sql(self): method test_disable_toggles (line 330) | def test_disable_toggles(self): method test_form_deletion (line 342) | def test_form_deletion(self): method _assert_queryset_count (line 366) | def _assert_queryset_count(self, queryset_list, count): method _assert_case_importer_counts (line 370) | def _assert_case_importer_counts(self, domain_name, count): method test_case_importer (line 376) | def test_case_importer(self): method _assert_app_manager_counts (line 400) | def _assert_app_manager_counts(self, domain_name, count): method test_app_manager (line 407) | def test_app_manager(self): method _assert_case_search_counts (line 430) | def _assert_case_search_counts(self, domain_name, count): method test_case_search (line 437) | def test_case_search(self): method _assert_cloudcare_counts (line 449) | def _assert_cloudcare_counts(self, domain_name, count): method test_cloudcare (line 454) | def test_cloudcare(self): method _assert_consumption_counts (line 464) | def _assert_consumption_counts(self, domain_name, count): method test_consumption (line 469) | def test_consumption(self): method test_user_data_cascading (line 478) | def test_user_data_cascading(self): method _assert_data_analytics_counts (line 495) | def _assert_data_analytics_counts(self, domain_name, count): method test_data_analytics (line 501) | def test_data_analytics(self): method _assert_data_dictionary_counts (line 534) | def _assert_data_dictionary_counts(self, domain_name, count): method test_data_dictionary (line 541) | def test_data_dictionary(self): method _assert_data_interfaces (line 553) | def _assert_data_interfaces(self, domain_name, count): method test_data_interfaces (line 562) | def test_data_interfaces(self): method _assert_export_counts (line 586) | def _assert_export_counts(self, domain_name, count): method test_export_delete (line 592) | def test_export_delete(self): method _assert_location_counts (line 618) | def _assert_location_counts(self, domain_name, count): method test_location_delete (line 623) | def test_location_delete(self): method _assert_ota_counts (line 633) | def _assert_ota_counts(self, domain_name, count): method test_ota_delete (line 639) | def test_ota_delete(self): method _assert_reports_counts (line 650) | def _assert_reports_counts(self, domain_name, count): method test_reports_delete (line 657) | def test_reports_delete(self): method _assert_phone_counts (line 682) | def _assert_phone_counts(self, domain_name, count): method test_phone_delete (line 687) | def test_phone_delete(self): method _assert_registration_count (line 702) | def _assert_registration_count(self, domain_name, count): method test_registration_delete (line 707) | def test_registration_delete(self): method _assert_reminders_counts (line 722) | def _assert_reminders_counts(self, domain_name, count): method test_reminders_delete (line 727) | def test_reminders_delete(self): method _assert_sms_counts (line 737) | def _assert_sms_counts(self, domain_name, count): method test_sms_delete (line 745) | def test_sms_delete(self): method _assert_smsforms_counts (line 761) | def _assert_smsforms_counts(self, domain_name, count): method test_smsforms_delete (line 766) | def test_smsforms_delete(self): method _assert_translations_count (line 782) | def _assert_translations_count(self, domain_name, count): method test_translations_delete (line 787) | def test_translations_delete(self): method _assert_userreports_counts (line 797) | def _assert_userreports_counts(self, domain_name, count): method test_userreports_delete (line 802) | def test_userreports_delete(self): method _assert_users_counts (line 817) | def _assert_users_counts(self, domain_name, count): method test_users_delete (line 824) | def test_users_delete(self): method test_users_domain_membership (line 837) | def test_users_domain_membership(self): method _assert_role_counts (line 861) | def _assert_role_counts(self, domain_name, roles, permissions, assignm... method test_roles_delete (line 871) | def test_roles_delete(self): method _assert_zapier_counts (line 892) | def _assert_zapier_counts(self, domain_name, count): method test_zapier_delete (line 897) | def test_zapier_delete(self): method _assert_motech_count (line 913) | def _assert_motech_count(self, domain_name, count): method test_motech_delete (line 918) | def test_motech_delete(self): method _assert_repeaters_count (line 928) | def _assert_repeaters_count(self, domain_name, count): method test_repeaters_delete (line 935) | def test_repeaters_delete(self): method _assert_couchforms_counts (line 959) | def _assert_couchforms_counts(self, domain_name, count): method test_couchforms_delete (line 964) | def test_couchforms_delete(self): method test_delete_commtrack_config (line 978) | def test_delete_commtrack_config(self): method test_lookup_tables (line 984) | def test_lookup_tables(self): class TestDomainTombstones (line 1015) | class TestDomainTombstones(TestCase): method setUp (line 1017) | def setUp(self): method test_delete_domain_leave_tombstone_argument_is_required (line 1022) | def test_delete_domain_leave_tombstone_argument_is_required(self): method test_delete_domain_leave_tombstone (line 1027) | def test_delete_domain_leave_tombstone(self): method test_delete_domain_dont_leave_tombstone (line 1031) | def test_delete_domain_dont_leave_tombstone(self): class HardDeleteFormsAndCasesInDomainTests (line 1036) | class HardDeleteFormsAndCasesInDomainTests(TestCase): method test_normal_forms_are_deleted (line 1038) | def test_normal_forms_are_deleted(self): method test_archived_forms_are_deleted (line 1043) | def test_archived_forms_are_deleted(self): method test_soft_deleted_forms_are_deleted (line 1048) | def test_soft_deleted_forms_are_deleted(self): method test_forms_are_deleted_for_specified_domain_only (line 1053) | def test_forms_are_deleted_for_specified_domain_only(self): method test_cases_are_deleted (line 1061) | def test_cases_are_deleted(self): method test_soft_deleted_cases_are_deleted (line 1066) | def test_soft_deleted_cases_are_deleted(self): method test_cases_are_deleted_for_specified_domain_only (line 1072) | def test_cases_are_deleted_for_specified_domain_only(self): method test_forms_and_cases_are_not_deleted_if_domain_in_use (line 1080) | def test_forms_and_cases_are_not_deleted_if_domain_in_use(self): method test_forms_and_cases_are_deleted_if_domain_in_use_but_ignore_flag_is_true (line 1089) | def test_forms_and_cases_are_deleted_if_domain_in_use_but_ignore_flag_... method setUpClass (line 1098) | def setUpClass(cls): method _cleanup_forms_and_cases (line 1115) | def _cleanup_forms_and_cases(self, domain_name): method tearDown (line 1118) | def tearDown(self): class TestDeleteElasticFormsAndCases (line 1124) | class TestDeleteElasticFormsAndCases(TestCase): method test_delete_all_forms_deletes_es_documents (line 1128) | def test_delete_all_forms_deletes_es_documents(self): method test_delete_all_cases_deletes_es_documents (line 1145) | def test_delete_all_cases_deletes_es_documents(self): method setUpClass (line 1161) | def setUpClass(cls): function ensure_deleted (line 1173) | def ensure_deleted(domain): function get_product_plan_version (line 1198) | def get_product_plan_version(edition=SoftwarePlanEdition.ADVANCED): FILE: corehq/apps/domain/tests/test_deletion_models.py function test_deletion_sql_models (line 83) | def test_deletion_sql_models(): FILE: corehq/apps/domain/tests/test_domain_calculated_properties.py class BaseCalculatedPropertiesTest (line 25) | class BaseCalculatedPropertiesTest(TestCase): method setUpClass (line 28) | def setUpClass(cls): method setUp (line 34) | def setUp(self): class GetSMSCountTest (line 45) | class GetSMSCountTest(BaseCalculatedPropertiesTest): method test_sms_count (line 47) | def test_sms_count(self): method test_days_as_str_is_valid (line 52) | def test_days_as_str_is_valid(self): class MobileWorkerCountTest (line 57) | class MobileWorkerCountTest(BaseCalculatedPropertiesTest): method test_yearly_mobile_worker_counts (line 59) | def test_yearly_mobile_worker_counts(self): FILE: corehq/apps/domain/tests/test_domain_name_generation.py class DomainNameGenerationTest (line 7) | class DomainNameGenerationTest(TestCase): method setUp (line 9) | def setUp(self): method add_domain (line 12) | def add_domain(self, name): method tearDown (line 17) | def tearDown(self): method test_conflict (line 21) | def test_conflict(self): method test_failure (line 26) | def test_failure(self): method test_long_names (line 31) | def test_long_names(self): FILE: corehq/apps/domain/tests/test_forms.py class PrivacySecurityFormTests (line 31) | class PrivacySecurityFormTests(SimpleTestCase): method setUp (line 32) | def setUp(self): method test_visible_fields (line 39) | def test_visible_fields(self): method test_hippa_compliance_toggle (line 51) | def test_hippa_compliance_toggle(self, mock_toggle): method test_secure_session_timeout (line 57) | def test_secure_session_timeout(self, mock_toggle): method test_advanced_domain_security (line 62) | def test_advanced_domain_security(self): method create_form (line 69) | def create_form(self): method get_visible_fields (line 72) | def get_visible_fields(self, form): class TestDomainGlobalSettingsForm (line 77) | class TestDomainGlobalSettingsForm(TestCase): method setUp (line 79) | def setUp(self) -> None: method test_operator_call_limit_not_present_when_domain_not_eligible (line 87) | def test_operator_call_limit_not_present_when_domain_not_eligible(self): method test_operator_call_limit_default_present_when_domain_eligible (line 92) | def test_operator_call_limit_default_present_when_domain_eligible(self): method test_operator_call_limit_custom_present_when_domain_eligible (line 100) | def test_operator_call_limit_custom_present_when_domain_eligible(self): method test_operator_call_limit_error_when_invalid_value (line 107) | def test_operator_call_limit_error_when_invalid_value(self): method test_operator_call_limit_error_when_value_less_than_lower_limit (line 116) | def test_operator_call_limit_error_when_value_less_than_lower_limit(se... method test_operator_call_limit_error_when_value_more_than_higher_limit (line 126) | def test_operator_call_limit_error_when_value_more_than_higher_limit(s... method test_opt_out_of_data_sharing_will_save_can_use_data_as_false (line 136) | def test_opt_out_of_data_sharing_will_save_can_use_data_as_false(self): method create_form (line 143) | def create_form(self, domain=None, **kwargs): method tearDown (line 156) | def tearDown(self): class TestAppReleaseModeSettingForm (line 162) | class TestAppReleaseModeSettingForm(TestCase): method setUp (line 164) | def setUp(self) -> None: method test_release_mode_settings_visible_and_saved_without_error (line 169) | def test_release_mode_settings_visible_and_saved_without_error(self): class BaseTestSubscriptionForm (line 185) | class BaseTestSubscriptionForm(TestCase): method setUp (line 186) | def setUp(self): method tearDown (line 192) | def tearDown(self): method create_form_for_submission (line 198) | def create_form_for_submission(self, *args): method create_form (line 207) | def create_form(self, *args, **kwargs): class TestConfirmNewSubscriptionForm (line 211) | class TestConfirmNewSubscriptionForm(BaseTestSubscriptionForm): method setUp (line 212) | def setUp(self): method create_form (line 221) | def create_form(self, new_plan_version, **kwargs): method test_form_initial_values (line 225) | def test_form_initial_values(self): method test_pay_monthly_subscription (line 230) | def test_pay_monthly_subscription(self): method test_pay_annually_subscription (line 244) | def test_pay_annually_subscription(self): method test_pay_annually_creates_prepayment_invoice (line 258) | def test_pay_annually_creates_prepayment_invoice(self): method test_downgrade_minimum_subscription_length (line 274) | def test_downgrade_minimum_subscription_length(self): method test_autopay_required_for_monthly_plan (line 292) | def test_autopay_required_for_monthly_plan(self): method test_autopay_required_if_set_on_account (line 307) | def test_autopay_required_if_set_on_account(self): class TestConfirmSubscriptionRenewalForm (line 323) | class TestConfirmSubscriptionRenewalForm(BaseTestSubscriptionForm): method setUp (line 324) | def setUp(self): method create_form (line 330) | def create_form(self, new_plan_version, **kwargs): method test_form_initial_values (line 334) | def test_form_initial_values(self): method test_form_renews_same_subscription (line 341) | def test_form_renews_same_subscription(self): method test_form_renews_alternate_subscription (line 350) | def test_form_renews_alternate_subscription(self): class TestUsernameOrEmailField (line 363) | class TestUsernameOrEmailField(SimpleTestCase): method setUp (line 364) | def setUp(self): method test_valid_email_address (line 367) | def test_valid_email_address(self): method test_valid_username (line 374) | def test_valid_username(self): method test_invalid_email_format (line 380) | def test_invalid_email_format(self): class TestHQPasswordResetForm (line 388) | class TestHQPasswordResetForm(SimpleTestCase): method setUp (line 389) | def setUp(self): method tearDown (line 396) | def tearDown(self): method test_valid_email_submission (line 401) | def test_valid_email_submission(self, mock_get_user_model): method test_username_like_input_validation (line 411) | def test_username_like_input_validation(self): method test_invalid_email_format (line 418) | def test_invalid_email_format(self): method test_empty_email_field (line 423) | def test_empty_email_field(self): class TestDomainPasswordResetForm (line 430) | class TestDomainPasswordResetForm(SimpleTestCase): method setUp (line 431) | def setUp(self): method tearDown (line 451) | def tearDown(self): method test_valid_email_submission (line 457) | def test_valid_email_submission(self): method test_valid_username_submission (line 463) | def test_valid_username_submission(self): method test_clean_email_handles_email_input (line 474) | def test_clean_email_handles_email_input(self): method test_clean_email_handles_username_input (line 481) | def test_clean_email_handles_username_input(self): method test_save_method_calls_get_active_users_with_domain (line 490) | def test_save_method_calls_get_active_users_with_domain(self): method test_invalid_email_format (line 500) | def test_invalid_email_format(self): class TestConfidentialDomainPasswordResetForm (line 506) | class TestConfidentialDomainPasswordResetForm(SimpleTestCase): method setUp (line 507) | def setUp(self): method tearDown (line 519) | def tearDown(self): method test_clean_email_suppresses_validation_errors (line 524) | def test_clean_email_suppresses_validation_errors(self): class TestPasswordResetFormsNoAutocompleteMixin (line 540) | class TestPasswordResetFormsNoAutocompleteMixin(SimpleTestCase): method test_confidential_forms_autocomplete (line 542) | def test_confidential_forms_autocomplete(self, mock_settings): class TestExtractAppInfoForm (line 556) | class TestExtractAppInfoForm(SimpleTestCase): method test_clean_app_url_with_valid_production_server (line 557) | def test_clean_app_url_with_valid_production_server(self): method test_clean_app_url_with_valid_india_server (line 565) | def test_clean_app_url_with_valid_india_server(self): method test_clean_app_url_with_valid_eu_server (line 573) | def test_clean_app_url_with_valid_eu_server(self): method test_clean_app_url_without_trailing_slash (line 581) | def test_clean_app_url_without_trailing_slash(self): method test_clean_app_url_with_additional_path_segments (line 589) | def test_clean_app_url_with_additional_path_segments(self): method test_clean_app_url_with_http_protocol (line 597) | def test_clean_app_url_with_http_protocol(self): method test_clean_app_url_with_invalid_subdomain (line 603) | def test_clean_app_url_with_invalid_subdomain(self): method test_staging_is_invalid_for_prod_environments (line 609) | def test_staging_is_invalid_for_prod_environments(self): method test_staging_is_valid_for_debug_environments (line 616) | def test_staging_is_valid_for_debug_environments(self): method test_clean_app_url_with_non_commcare_domain (line 621) | def test_clean_app_url_with_non_commcare_domain(self): method test_clean_app_url_same_server_validation (line 628) | def test_clean_app_url_same_server_validation(self): method test_clean_app_url_different_server_validation (line 635) | def test_clean_app_url_different_server_validation(self): method test_clean_app_url_missing_path_segments (line 641) | def test_clean_app_url_missing_path_segments(self): method test_clean_app_url_invalid_path_structure (line 647) | def test_clean_app_url_invalid_path_structure(self): method test_clean_app_url_missing_apps_segment (line 653) | def test_clean_app_url_missing_apps_segment(self): method test_clean_app_url_missing_view_segment (line 659) | def test_clean_app_url_missing_view_segment(self): method test_clean_app_url_invalid_app_id_format (line 665) | def test_clean_app_url_invalid_app_id_format(self): method test_clean_app_url_with_query_parameters (line 671) | def test_clean_app_url_with_query_parameters(self): method test_clean_app_url_with_fragment (line 679) | def test_clean_app_url_with_fragment(self): method test_clean_app_url_with_forms_open_in_app (line 687) | def test_clean_app_url_with_forms_open_in_app(self): method test_clean_app_url_with_port_number (line 696) | def test_clean_app_url_with_port_number(self): FILE: corehq/apps/domain/tests/test_models.py class DomainTests (line 7) | class DomainTests(SimpleTestCase): method test_odata_feed_limit_returns_set_value (line 8) | def test_odata_feed_limit_returns_set_value(self): method test_odata_feed_limit_when_unset_uses_default (line 13) | def test_odata_feed_limit_when_unset_uses_default(self): method test_date_created_defaults_to_utcnow_when_not_specified (line 18) | def test_date_created_defaults_to_utcnow_when_not_specified(self): method test_date_created_can_be_overridden_by_constructor (line 22) | def test_date_created_can_be_overridden_by_constructor(self): FILE: corehq/apps/domain/tests/test_oauth_superuser_access.py function _make_superuser (line 9) | def _make_superuser(): function _make_non_superuser (line 15) | def _make_non_superuser(): function _simulate_oauth_request (line 21) | def _simulate_oauth_request(): function _simulate_non_oauth_request (line 37) | def _simulate_non_oauth_request(): class TestSuperuserIsGlobalAdminByAuthMethod (line 41) | class TestSuperuserIsGlobalAdminByAuthMethod: method setup_method (line 45) | def setup_method(self): method test_superuser_is_global_admin_for_non_oauth_request (line 48) | def test_superuser_is_global_admin_for_non_oauth_request(self): method test_superuser_is_not_global_admin_for_oauth_request (line 52) | def test_superuser_is_not_global_admin_for_oauth_request(self): method test_non_superuser_is_not_global_admin_for_non_oauth_request (line 56) | def test_non_superuser_is_not_global_admin_for_non_oauth_request(self): method test_non_superuser_is_not_global_admin_for_oauth_request (line 60) | def test_non_superuser_is_not_global_admin_for_oauth_request(self): method test_superuser_is_global_admin_when_no_request (line 64) | def test_superuser_is_global_admin_when_no_request(self): FILE: corehq/apps/domain/tests/test_password_reset.py class PasswordResetTest (line 12) | class PasswordResetTest(TestCase): method setUpClass (line 16) | def setUpClass(cls): method tearDownClass (line 21) | def tearDownClass(cls): method test_missing (line 25) | def test_missing(self): method test_web_user_lookup (line 28) | def test_web_user_lookup(self): method test_web_user_by_email (line 36) | def test_web_user_by_email(self): method test_mobile_worker_excluded (line 42) | def test_mobile_worker_excluded(self): method test_mobile_worker_included_with_flag (line 50) | def test_mobile_worker_included_with_flag(self): method test_mobile_worker_lookup (line 58) | def test_mobile_worker_lookup(self): method test_domain_limited_mobile_worker_lookup (line 69) | def test_domain_limited_mobile_worker_lookup(self): FILE: corehq/apps/domain/tests/test_password_strength.py class PasswordStrengthTest (line 8) | class PasswordStrengthTest(SimpleTestCase): method test_weak_password_is_rejected (line 11) | def test_weak_password_is_rejected(self): method test_almost_strong_enough_password_is_rejected (line 14) | def test_almost_strong_enough_password_is_rejected(self): method test_exactly_required_strength_password_is_accepted (line 17) | def test_exactly_required_strength_password_is_accepted(self): method test_stronger_than_required_password_is_accepted (line 20) | def test_stronger_than_required_password_is_accepted(self): method test_sensitivity_to_minimum_zxcvbn_score_setting_bad (line 24) | def test_sensitivity_to_minimum_zxcvbn_score_setting_bad(self): method test_sensitivity_to_minimum_zxcvbn_score_setting_good (line 28) | def test_sensitivity_to_minimum_zxcvbn_score_setting_good(self): method test_shorter_password_is_rejected (line 33) | def test_shorter_password_is_rejected(self): method test_exactly_minimum_length_password_is_accepted (line 37) | def test_exactly_minimum_length_password_is_accepted(self): method test_longer_than_minimum_length_password_is_accepted (line 41) | def test_longer_than_minimum_length_password_is_accepted(self): method assert_good_password (line 44) | def assert_good_password(self, password): method assert_bad_password (line 47) | def assert_bad_password(self, password): FILE: corehq/apps/domain/tests/test_redirect_url.py class TestRedirectUrlCommand (line 18) | class TestRedirectUrlCommand(TestCase): method setUpClass (line 21) | def setUpClass(cls): method tearDownClass (line 26) | def tearDownClass(cls): method test_data_migration_not_enabled (line 30) | def test_data_migration_not_enabled(self): method test_no_https (line 38) | def test_no_https(self): method test_bad_url (line 46) | def test_bad_url(self): method test_set_url (line 54) | def test_set_url(self): method test_unset_url_data_migration_not_enabled (line 61) | def test_unset_url_data_migration_not_enabled(self): method test_unset_url_migration_enabled (line 67) | def test_unset_url_migration_enabled(self): method test_return_set_url_data_migration_not_enabled (line 72) | def test_return_set_url_data_migration_not_enabled(self): method test_return_set_url_migration_enabled (line 81) | def test_return_set_url_migration_enabled(self): method test_return_unset_url_data_migration_not_enabled (line 89) | def test_return_unset_url_data_migration_not_enabled(self): method test_return_unset_url_migration_enabled (line 94) | def test_return_unset_url_migration_enabled(self): method _call_redirect_url (line 99) | def _call_redirect_url(*args, **kwargs): class TestCheckDomainMigration (line 108) | class TestCheckDomainMigration(TestCase): method setUpClass (line 120) | def setUpClass(cls): method tearDownClass (line 128) | def tearDownClass(cls): method test_redirect_response (line 132) | def test_redirect_response(self): method test_normal_response (line 143) | def test_normal_response(self): method test_data_migration_doesnt_block_updates (line 152) | def test_data_migration_doesnt_block_updates(self): method test_disable_endpoints_blocks_updates (line 161) | def test_disable_endpoints_blocks_updates(self): method test_redirect_overrides_disable (line 170) | def test_redirect_overrides_disable(self): method _download_odk_media_profile (line 181) | def _download_odk_media_profile(self): function _set_redirect_url (line 189) | def _set_redirect_url(): FILE: corehq/apps/domain/tests/test_remove_duplicate_domains.py function test_score_domain_doc (line 5) | def test_score_domain_doc(): FILE: corehq/apps/domain/tests/test_two_factor_check.py class TestTwoFactorRequired (line 16) | class TestTwoFactorRequired(TestCase): method setUp (line 19) | def setUp(self): method create_request (line 26) | def create_request(cls, request_url): method test_two_factor_required_for_superuser (line 32) | def test_two_factor_required_for_superuser(self): method test_two_factor_not_required_for_superuser (line 41) | def test_two_factor_not_required_for_superuser(self): method test_two_factor_not_required_with_sso_request (line 49) | def test_two_factor_not_required_with_sso_request(self): method test_two_factor_required_for_domain (line 58) | def test_two_factor_required_for_domain(self): class TestTwoFactorCheck (line 69) | class TestTwoFactorCheck(TestCase): method setUp (line 72) | def setUp(self): method create_request (line 79) | def create_request(cls, request_url): method test_successful_two_factor_check (line 84) | def test_successful_two_factor_check(self): method test_failed_two_factor_check (line 104) | def test_failed_two_factor_check(self): FILE: corehq/apps/domain/tests/test_utils.py function delete_all_domains (line 29) | def delete_all_domains(): class UtilsTests (line 34) | class UtilsTests(TestCase): method setUp (line 36) | def setUp(self): method tearDown (line 41) | def tearDown(self): method test_guess_domain_language (line 44) | def test_guess_domain_language(self): method test_guess_domain_language_no_apps (line 51) | def test_guess_domain_language_no_apps(self): method test_guess_domain_language_for_sms_1 (line 55) | def test_guess_domain_language_for_sms_1(self): method test_guess_domain_language_for_sms_2 (line 65) | def test_guess_domain_language_for_sms_2(self): method test_guess_domain_language_for_sms_3 (line 72) | def test_guess_domain_language_for_sms_3(self): method test_guess_domain_language_for_sms_4 (line 82) | def test_guess_domain_language_for_sms_4(self): method test_guess_domain_language_for_sms_5 (line 92) | def test_guess_domain_language_for_sms_5(self): method test_user_info_encryption_decryption (line 102) | def test_user_info_encryption_decryption(self): class TestGetSerializableWireInvoiceItem (line 112) | class TestGetSerializableWireInvoiceItem(SimpleTestCase): method test_empty_list_is_returned_if_general_credit_is_zero (line 114) | def test_empty_list_is_returned_if_general_credit_is_zero(self): method test_empty_list_is_returned_if_general_credit_is_less_than_zero (line 118) | def test_empty_list_is_returned_if_general_credit_is_less_than_zero(se... method test_item_is_returned_if_general_credit_is_greater_than_zero (line 122) | def test_item_is_returned_if_general_credit_is_greater_than_zero(self): method test_return_value_is_json_serializable (line 126) | def test_return_value_is_json_serializable(self): class TestGetSerializableWireInvoicePrepaidItem (line 133) | class TestGetSerializableWireInvoicePrepaidItem(SimpleTestCase): method test_empty_list_is_returned_if_prepaid_amount_is_zero (line 135) | def test_empty_list_is_returned_if_prepaid_amount_is_zero(self): method test_empty_list_is_returned_if_prepaid_amount_is_greater_than_zero (line 139) | def test_empty_list_is_returned_if_prepaid_amount_is_greater_than_zero... method test_item_is_returned_if_prepaid_amount_is_less_than_zero (line 143) | def test_item_is_returned_if_prepaid_amount_is_less_than_zero(self): method test_return_value_is_json_serializable (line 147) | def test_return_value_is_json_serializable(self): function test_domain (line 156) | def test_domain(name="domain", skip_full_delete=False): class TestUCRExpressionUtils (line 169) | class TestUCRExpressionUtils(TestCase): method test_default_value_when_domain_not_exists (line 170) | def test_default_value_when_domain_not_exists(self): method test_when_domain_exists (line 176) | def test_when_domain_exists(self): class TestGetDomainURLSlug (line 182) | class TestGetDomainURLSlug(SimpleTestCase): method test_defaults_to_project (line 184) | def test_defaults_to_project(self): method test_one_word (line 187) | def test_one_word(self): method test_name_with_underscore (line 190) | def test_name_with_underscore(self): method test_unicode_treated_literally (line 193) | def test_unicode_treated_literally(self): method test_max_length_is_enforced (line 196) | def test_max_length_is_enforced(self): method test_stop_words_excluded (line 204) | def test_stop_words_excluded(self, hr_name, max_length, expected): class IsDomainInUseTests (line 208) | class IsDomainInUseTests(SimpleTestCase): method test_domain_in_use_returns_true (line 210) | def test_domain_in_use_returns_true(self): method test_paused_domain_returns_true (line 214) | def test_paused_domain_returns_true(self): method test_deleted_domain_returns_false (line 218) | def test_deleted_domain_returns_false(self): method test_active_deleted_domain_returns_false (line 222) | def test_active_deleted_domain_returns_false(self): method test_non_existent_domain_returns_false (line 227) | def test_non_existent_domain_returns_false(self): method setUpClass (line 232) | def setUpClass(cls): method setUp (line 240) | def setUp(self): function _delete_test_domain (line 248) | def _delete_test_domain(self, leave_tombstone=False): function patch_domain_deletion (line 256) | def patch_domain_deletion(): function suspend (line 271) | def suspend(patch_obj): FILE: corehq/apps/domain/tests/test_views.py class TestDomainViews (line 48) | class TestDomainViews(TestCase, DomainSubscriptionMixin): method setUp (line 50) | def setUp(self): method tearDown (line 70) | def tearDown(self): method test_allow_domain_requests (line 77) | def test_allow_domain_requests(self): method test_disallow_domain_requests (line 84) | def test_disallow_domain_requests(self): method test_add_repeater (line 91) | def test_add_repeater(self): class BaseAutocompleteTest (line 115) | class BaseAutocompleteTest(TestCase): method verify (line 117) | def verify(self, autocomplete_enabled, view_path, *fields): class TestPasswordResetFormAutocomplete (line 133) | class TestPasswordResetFormAutocomplete(BaseAutocompleteTest): method test_autocomplete_enabled (line 135) | def test_autocomplete_enabled(self): method test_autocomplete_disabled (line 138) | def test_autocomplete_disabled(self): class TestBaseDomainAlertView (line 142) | class TestBaseDomainAlertView(TestCase): method setUpClass (line 144) | def setUpClass(cls): method _create_alert_for_domain (line 164) | def _create_alert_for_domain(domain, alert_text, username): method setUp (line 172) | def setUp(self): method ensure_valid_access_only (line 177) | def ensure_valid_access_only(self, use_post=False): class TestManageDomainAlertsView (line 185) | class TestManageDomainAlertsView(TestBaseDomainAlertView): method setUpClass (line 187) | def setUpClass(cls): method test_valid_access_only (line 194) | def test_valid_access_only(self): method test_only_domain_alerts_listed (line 198) | def test_only_domain_alerts_listed(self): method test_creating_new_alert (line 214) | def test_creating_new_alert(self): method test_creating_new_alert_with_errors (line 236) | def test_creating_new_alert_with_errors(self): class TestUpdateDomainAlertStatusView (line 253) | class TestUpdateDomainAlertStatusView(TestBaseDomainAlertView): method setUpClass (line 255) | def setUpClass(cls): method test_valid_access_only (line 262) | def test_valid_access_only(self): method test_post_access_only (line 266) | def test_post_access_only(self): method test_apply_command_with_missing_alert_id (line 271) | def test_apply_command_with_missing_alert_id(self): method test_apply_command_with_missing_alert (line 281) | def test_apply_command_with_missing_alert(self): method test_apply_command_with_invalid_command (line 294) | def test_apply_command_with_invalid_command(self): method test_apply_command_with_valid_command (line 307) | def test_apply_command_with_valid_command(self): method test_apply_command_with_other_doamin_alert (line 328) | def test_apply_command_with_other_doamin_alert(self): method test_limiting_active_alerts (line 342) | def test_limiting_active_alerts(self): class TestDeleteDomainAlertView (line 369) | class TestDeleteDomainAlertView(TestBaseDomainAlertView): method setUpClass (line 371) | def setUpClass(cls): method test_valid_access_only (line 378) | def test_valid_access_only(self): method test_post_access_only (line 382) | def test_post_access_only(self): method test_with_missing_alert_id (line 387) | def test_with_missing_alert_id(self): method test_with_missing_alert (line 395) | def test_with_missing_alert(self): method test_delete (line 407) | def test_delete(self): class TestEditDomainAlertView (line 419) | class TestEditDomainAlertView(TestBaseDomainAlertView): method setUpClass (line 421) | def setUpClass(cls): method test_valid_access_only (line 428) | def test_valid_access_only(self): method test_only_domain_alerts_accessible (line 432) | def test_only_domain_alerts_accessible(self): method test_only_domain_alerts_accessible_for_update (line 441) | def test_only_domain_alerts_accessible_for_update(self): method test_updating_alert (line 452) | def test_updating_alert(self): method test_updating_alert_with_errors (line 468) | def test_updating_alert_with_errors(self): class TestSubscriptionRenewalViews (line 481) | class TestSubscriptionRenewalViews(TestCase): method setUp (line 482) | def setUp(self): method tearDown (line 490) | def tearDown(self): method _generate_subscription (line 496) | def _generate_subscription(self, edition, annual_plan=False): method test_renewal_page_context (line 501) | def test_renewal_page_context(self): method test_non_paid_edition_raises_404 (line 521) | def test_non_paid_edition_raises_404(self): method test_non_self_renewable_edition (line 527) | def test_non_self_renewable_edition(self): method test_confirm_renewal_page_context (line 536) | def test_confirm_renewal_page_context(self): class TestSetSubscriptionAutoRenew (line 554) | class TestSetSubscriptionAutoRenew(TestCase): method setUp (line 555) | def setUp(self): method tearDown (line 565) | def tearDown(self): method _generate_subscription (line 569) | def _generate_subscription(self, auto_renew, date_start=datetime.today... method test_enable_auto_renew (line 576) | def test_enable_auto_renew(self): method test_disable_auto_renew (line 582) | def test_disable_auto_renew(self): method test_enable_shows_error_if_next_subscription (line 588) | def test_enable_shows_error_if_next_subscription(self): method test_disable_cancels_auto_renewed_next_subscription (line 603) | def test_disable_cancels_auto_renewed_next_subscription(self): method test_disable_leaves_non_auto_renewed_next_subscription (line 620) | def test_disable_leaves_non_auto_renewed_next_subscription(self): class TestCredentialsApplicationSettingsView (line 638) | class TestCredentialsApplicationSettingsView(TestCase): method setUp (line 639) | def setUp(self): method tearDown (line 649) | def tearDown(self): method test_create_new_credential_app (line 654) | def test_create_new_credential_app(self): method test_specify_new_credential_app_with_existing_app (line 669) | def test_specify_new_credential_app_with_existing_app(self): method test_specify_no_credential_app_with_no_existing_issuing_app (line 697) | def test_specify_no_credential_app_with_no_existing_issuing_app(self): method test_specify_no_credential_app_with_existing_issuing_app (line 706) | def test_specify_no_credential_app_with_existing_issuing_app(self): method _get_app (line 725) | def _get_app(self): function domain_fixture (line 733) | def domain_fixture(domain_name, allow_domain_requests=False): function connection_fixture (line 745) | def connection_fixture(domain_name): class TestFlagsAndPrivilegesViewAccess (line 759) | class TestFlagsAndPrivilegesViewAccess(TestCase): method setUpClass (line 764) | def setUpClass(cls): method endpoint (line 792) | def endpoint(self): method test_superuser_access (line 795) | def test_superuser_access(self, *args): method test_non_superuser_access (line 800) | def test_non_superuser_access(self, *args): method test_edit_toggles_access (line 807) | def test_edit_toggles_access(self, mocked_get_editable_toggle_tags_for... class TestFeaturePreviewsView (line 830) | class TestFeaturePreviewsView(TestCase): method setUpClass (line 833) | def setUpClass(cls): method test_enables_feature_and_creates_audit (line 862) | def test_enables_feature_and_creates_audit(self): method test_disables_feature_and_creates_audit (line 875) | def test_disables_feature_and_creates_audit(self): method test_update_feature_no_change_does_not_create_audit (line 888) | def test_update_feature_no_change_does_not_create_audit(self): method test_update_feature_multiple_changes_create_multiple_audits (line 894) | def test_update_feature_multiple_changes_create_multiple_audits(self): FILE: corehq/apps/domain/utils.py function get_custom_domain_module (line 36) | def get_custom_domain_module(domain): function normalize_domain_name (line 43) | def normalize_domain_name(domain): function get_domain_from_url (line 52) | def get_domain_from_url(path): function domain_restricts_superusers (line 61) | def domain_restricts_superusers(domain): function get_domains_created_by_user (line 68) | def get_domains_created_by_user(creating_user): function domain_name_stop_words (line 75) | def domain_name_stop_words(): function get_domain_url_slug (line 81) | def get_domain_url_slug(hr_name, max_length=25): function guess_domain_language (line 103) | def guess_domain_language(domain_name): function guess_domain_language_for_sms (line 113) | def guess_domain_language_for_sms(domain_name): function silence_during_tests (line 129) | def silence_during_tests(): function clear_domain_names (line 138) | def clear_domain_names(*domain_names): function get_serializable_wire_invoice_prepaid_item (line 144) | def get_serializable_wire_invoice_prepaid_item(prepaid_total, prepaid_la... function get_serializable_wire_invoice_general_credit (line 162) | def get_serializable_wire_invoice_general_credit(credit_total, credit_la... function log_domain_changes (line 180) | def log_domain_changes(user, domain, new_obj, old_obj): function encrypt_account_confirmation_info (line 184) | def encrypt_account_confirmation_info(commcare_user): function is_domain_in_use (line 189) | def is_domain_in_use(domain_name): FILE: corehq/apps/domain/views/accounting.py class SubscriptionUpgradeRequiredView (line 146) | class SubscriptionUpgradeRequiredView(LoginAndDomainMixin, BasePageView,... method page_url (line 151) | def page_url(self): method page_name (line 155) | def page_name(self): method is_domain_admin (line 161) | def is_domain_admin(self): method page_context (line 167) | def page_context(self): method missing_privilege (line 180) | def missing_privilege(self): method feature_name (line 184) | def feature_name(self): method required_plan_name (line 188) | def required_plan_name(self): method get (line 191) | def get(self, request, *args, **kwargs): class DomainAccountingSettings (line 199) | class DomainAccountingSettings(BaseProjectSettingsView): method dispatch (line 203) | def dispatch(self, request, *args, **kwargs): method account (line 208) | def account(self): method current_subscription (line 212) | def current_subscription(self): method main_context (line 216) | def main_context(self): class DomainSubscriptionView (line 222) | class DomainSubscriptionView(DomainAccountingSettings): method can_purchase_credits (line 228) | def can_purchase_credits(self): method can_set_auto_renew (line 231) | def can_set_auto_renew(self): method renewal_plan_preview (line 256) | def renewal_plan_preview(self): method plan (line 273) | def plan(self): method _fmt_credit (line 365) | def _fmt_credit(self, credit_amount=None): method _credit_grand_total (line 375) | def _credit_grand_total(self, credit_lines): method get_product_summary (line 378) | def get_product_summary(self, plan_version, account, subscription): method get_feature_summary (line 394) | def get_feature_summary(self, plan_version, account, subscription): method get_next_invoice_due_date (line 426) | def get_next_invoice_due_date(self): method page_context (line 439) | def page_context(self): function sign_autopay_terms (line 466) | def sign_autopay_terms(request): class EditExistingBillingAccountView (line 482) | class EditExistingBillingAccountView(HqHtmxActionMixin, DomainAccounting... method billing_info_form (line 492) | def billing_info_form(self): method dispatch (line 506) | def dispatch(self, request, *args, **kwargs): method page_context (line 512) | def page_context(self): method get_card_context (line 518) | def get_card_context(self): method get_account_cards (line 525) | def get_account_cards(self): method post (line 531) | def post(self, request, *args, **kwargs): method render_payment_methods (line 550) | def render_payment_methods(self, request, error=None): method list_payment_methods (line 558) | def list_payment_methods(self, request, *args, **kwargs): method remove_payment_card (line 562) | def remove_payment_card(self, request, *args, **kwargs): method set_as_autopay (line 578) | def set_as_autopay(self, request, *args, **kwargs): class DomainBillingStatementsView (line 599) | class DomainBillingStatementsView(DomainAccountingSettings, CRUDPaginate... method stripe_cards (line 609) | def stripe_cards(self): method show_hidden (line 613) | def show_hidden(self): method show_unpaid (line 619) | def show_unpaid(self): method invoices (line 626) | def invoices(self): method total (line 635) | def total(self): method paginated_invoices (line 640) | def paginated_invoices(self): method total_balance (line 644) | def total_balance(self): method column_names (line 658) | def column_names(self): method page_context (line 669) | def page_context(self): method can_pay_by_wire (line 699) | def can_pay_by_wire(self): method can_pay_invoices (line 706) | def can_pay_invoices(self): method paginated_list (line 710) | def paginated_list(self): method refresh_item (line 757) | def refresh_item(self, item_id): method post (line 760) | def post(self, *args, **kwargs): method dispatch (line 763) | def dispatch(self, request, *args, **kwargs): class BaseStripePaymentView (line 769) | class BaseStripePaymentView(DomainAccountingSettings): method account (line 773) | def account(self): method billing_admin (line 778) | def billing_admin(self): method get_or_create_payment_method (line 786) | def get_or_create_payment_method(self): method get_payment_handler (line 792) | def get_payment_handler(self): method post (line 797) | def post(self, request, *args, **kwargs): class CreditsStripePaymentView (line 824) | class CreditsStripePaymentView(BaseStripePaymentView): method account (line 829) | def account(self): method get_payment_handler (line 838) | def get_payment_handler(self): class CreditsWireInvoiceView (line 848) | class CreditsWireInvoiceView(DomainAccountingSettings): method dispatch (line 853) | def dispatch(self, request, *args, **kwargs): method post (line 856) | def post(self, request, *args, **kwargs): method validate_emails (line 882) | def validate_emails(request): method validate_amount (line 903) | def validate_amount(request): method validate_daterange (line 910) | def validate_daterange(self, request): method _get_date_or_today (line 919) | def _get_date_or_today(date_string): method validate_unit_cost (line 927) | def validate_unit_cost(request): method validate_quantity (line 938) | def validate_quantity(request): class InvoiceStripePaymentView (line 949) | class InvoiceStripePaymentView(BaseStripePaymentView): method invoice (line 954) | def invoice(self): method account (line 971) | def account(self): method get_payment_handler (line 974) | def get_payment_handler(self): class BulkStripePaymentView (line 980) | class BulkStripePaymentView(BaseStripePaymentView): method account (line 984) | def account(self): method get_payment_handler (line 987) | def get_payment_handler(self): class WireInvoiceView (line 993) | class WireInvoiceView(View): method dispatch (line 999) | def dispatch(self, request, *args, **kwargs): method post (line 1002) | def post(self, request, *args, **kwargs): method validate_emails (line 1024) | def validate_emails(request): class BillingStatementPdfView (line 1045) | class BillingStatementPdfView(View): method dispatch (line 1050) | def dispatch(self, request, *args, **kwargs): method get (line 1053) | def get(self, request, *args, **kwargs): class InternalSubscriptionManagementView (line 1117) | class InternalSubscriptionManagementView(BaseAdminProjectSettingsView): method dispatch (line 1125) | def dispatch(self, request, *args, **kwargs): method post (line 1129) | def post(self, request, *args, **kwargs): method main_context (line 1146) | def main_context(self): method page_context (line 1152) | def page_context(self): method get_post_form (line 1162) | def get_post_form(self): method slug_to_form (line 1167) | def slug_to_form(self): method select_subscription_type_form (line 1176) | def select_subscription_type_form(self): method is_form_editable (line 1201) | def is_form_editable(self): class PlanViewBase (line 1211) | class PlanViewBase(DomainAccountingSettings): method can_domain_unpause (line 1218) | def can_domain_unpause(self): method plan_options (line 1222) | def plan_options(self): method start_date_after_minimum_subscription (line 1263) | def start_date_after_minimum_subscription(self): method next_subscription_edition (line 1274) | def next_subscription_edition(self): method edition_name (line 1283) | def edition_name(self): method parent_pages (line 1288) | def parent_pages(self): method steps (line 1297) | def steps(self): method main_context (line 1309) | def main_context(self): method page_context (line 1319) | def page_context(self): class SelectPlanView (line 1344) | class SelectPlanView(PlanViewBase): method page_context (line 1350) | def page_context(self): class ContactFormViewBase (line 1368) | class ContactFormViewBase(PlanViewBase): method steps (line 1377) | def steps(self): method is_not_redirect (line 1387) | def is_not_redirect(self): method contact_form (line 1392) | def contact_form(self): method post (line 1398) | def post(self, request, *args, **kwargs): method page_context (line 1406) | def page_context(self): class SelectedEnterprisePlanView (line 1413) | class SelectedEnterprisePlanView(ContactFormViewBase): method back_button (line 1419) | def back_button(self): class SelectedAnnualPlanView (line 1423) | class SelectedAnnualPlanView(ContactFormViewBase): method edition (line 1428) | def edition(self): method back_button (line 1432) | def back_button(self): class SelectedCustomPlanView (line 1436) | class SelectedCustomPlanView(ContactFormViewBase): method edition (line 1441) | def edition(self): method back_button (line 1447) | def back_button(self): class GeneralPlanQuestionView (line 1451) | class GeneralPlanQuestionView(ContactFormViewBase): method edition (line 1456) | def edition(self): method back_button (line 1463) | def back_button(self): class ConfirmSelectedPlanView (line 1467) | class ConfirmSelectedPlanView(PlanViewBase): method step_title (line 1472) | def step_title(self): method steps (line 1478) | def steps(self): method is_paused (line 1487) | def is_paused(self): method is_annual_plan (line 1491) | def is_annual_plan(self): method edition (line 1496) | def edition(self): method selected_plan_version (line 1504) | def selected_plan_version(self): method downgrade_messages (line 1507) | def downgrade_messages(self): method is_downgrade (line 1519) | def is_downgrade(self): method is_monthly_upgrade (line 1526) | def is_monthly_upgrade(self): method is_same_edition (line 1535) | def is_same_edition(self): method is_downgrade_before_minimum (line 1539) | def is_downgrade_before_minimum(self): method current_subscription_end_date (line 1545) | def current_subscription_end_date(self): method next_invoice_date (line 1553) | def next_invoice_date(self): method page_context (line 1558) | def page_context(self): method main_context (line 1579) | def main_context(self): method get (line 1586) | def get(self, request, *args, **kwargs): method post (line 1589) | def post(self, request, *args, **kwargs): class ConfirmBillingAccountInfoView (line 1596) | class ConfirmBillingAccountInfoView(HqHtmxActionMixin, ConfirmSelectedPl... method steps (line 1606) | def steps(self): method account (line 1616) | def account(self): method is_form_post (line 1629) | def is_form_post(self): method downgrade_email_note (line 1633) | def downgrade_email_note(self): method billing_account_info_form (line 1641) | def billing_account_info_form(self): method is_autopay_required (line 1659) | def is_autopay_required(self): method page_context (line 1663) | def page_context(self): method post (line 1674) | def post(self, request, *args, **kwargs): method send_downgrade_email (line 1740) | def send_downgrade_email(self): method get_card_context (line 1759) | def get_card_context(self): method render_select_autopay_method (line 1772) | def render_select_autopay_method(self, request, error=None): method select_autopay_method (line 1780) | def select_autopay_method(self, request, *args, **kwargs): method unset_autopay (line 1784) | def unset_autopay(self, request, *args, **kwargs): method set_as_autopay (line 1804) | def set_as_autopay(self, request, *args, **kwargs): class SubscriptionMixin (line 1825) | class SubscriptionMixin(object): method subscription (line 1829) | def subscription(self): class SubscriptionRenewalView (line 1840) | class SubscriptionRenewalView(PlanViewBase, SubscriptionMixin): method current_edition (line 1847) | def current_edition(self): method lead_text (line 1851) | def lead_text(self): method plan_is_self_renewable (line 1858) | def plan_is_self_renewable(self): method monthly_plan_version (line 1863) | def monthly_plan_version(self): method renewal_choices (line 1868) | def renewal_choices(self): method downgrade_messages (line 1878) | def downgrade_messages(self): method page_context (line 1886) | def page_context(self): class ConfirmSubscriptionRenewalView (line 1908) | class ConfirmSubscriptionRenewalView(PlanViewBase, DomainAccountingSetti... method is_request_from_current_step (line 1919) | def is_request_from_current_step(self): method dispatch (line 1923) | def dispatch(self, request, *args, **kwargs): method next_plan_version (line 1928) | def next_plan_version(self): method confirm_form (line 1946) | def confirm_form(self): method page_context (line 1959) | def page_context(self): method new_edition (line 1969) | def new_edition(self): method is_annual_plan (line 1973) | def is_annual_plan(self): method post (line 1976) | def post(self, request, *args, **kwargs): class BaseCardView (line 2013) | class BaseCardView(DomainAccountingSettings): method payment_method (line 2016) | def payment_method(self): method _generic_error (line 2023) | def _generic_error(self): method _stripe_error (line 2029) | def _stripe_error(self, e): class CardView (line 2037) | class CardView(BaseCardView): method post (line 2041) | def post(self, request, domain, card_token): method delete (line 2055) | def delete(self, request, domain, card_token): class CardsView (line 2064) | class CardsView(BaseCardView): method get (line 2068) | def get(self, request, domain): method post (line 2071) | def post(self, request, domain): function _get_downgrade_or_pause_note (line 2086) | def _get_downgrade_or_pause_note(request, is_pause=False): function pause_subscription (line 2113) | def pause_subscription(request, domain): function enable_subscription_auto_renew (line 2172) | def enable_subscription_auto_renew(request, domain): function disable_subscription_auto_renew (line 2196) | def disable_subscription_auto_renew(request, domain): function _cannot_modify_subscription_response (line 2222) | def _cannot_modify_subscription_response(request, domain, account_name): FILE: corehq/apps/domain/views/base.py function covid19 (line 21) | def covid19(request): function select (line 28) | def select(request, do_not_redirect=False, next_view=None): function accept_all_invitations (line 85) | def accept_all_invitations(request): function get_domain_links_for_dropdown (line 96) | def get_domain_links_for_dropdown(couch_user, view_name="domain_homepage"): function get_enterprise_links_for_dropdown (line 103) | def get_enterprise_links_for_dropdown(couch_user, view_name="domain_home... function _domains_to_links (line 116) | def _domains_to_links(domain_objects, view_name, user): class DomainViewMixin (line 127) | class DomainViewMixin(object): method domain (line 138) | def domain(self): method domain_object (line 144) | def domain_object(self): class BaseDomainView (line 151) | class BaseDomainView(LoginAndDomainMixin, BillingModalsMixin, BaseSectio... method main_context (line 154) | def main_context(self): method page_url (line 163) | def page_url(self): FILE: corehq/apps/domain/views/feedback.py function submit_feedback (line 11) | def submit_feedback(request, domain): FILE: corehq/apps/domain/views/fixtures.py class LocationFixtureConfigView (line 14) | class LocationFixtureConfigView(BaseAdminProjectSettingsView): method dispatch (line 22) | def dispatch(self, request, *args, **kwargs): method post (line 25) | def post(self, request, *args, **kwargs): method page_context (line 35) | def page_context(self): FILE: corehq/apps/domain/views/import_apps.py class ImportAppStepsView (line 25) | class ImportAppStepsView(LoginAndDomainMixin, DomainViewMixin, HqHtmxAct... method get_context_data (line 30) | def get_context_data(self, form=None, next_action=None, **kwargs): method extract_app_info_from_url (line 40) | def extract_app_info_from_url(self, request, *args, **kwargs): method import_app (line 59) | def import_app(self, request, *args, **kwargs): method _add_params_to_url (line 90) | def _add_params_to_url(self, source_server, source_domain, source_app_... method render_import_multimedia_instructions (line 100) | def render_import_multimedia_instructions(self, request, source_server... method get_instructions (line 117) | def get_instructions(self, request, *args, **kwargs): FILE: corehq/apps/domain/views/internal.py class BaseInternalDomainSettingsView (line 48) | class BaseInternalDomainSettingsView(BaseProjectSettingsView): method main_context (line 52) | def main_context(self): method page_name (line 60) | def page_name(self): class EditInternalDomainInfoView (line 64) | class EditInternalDomainInfoView(BaseInternalDomainSettingsView): method dispatch (line 74) | def dispatch(self, request, *args, **kwargs): method internal_settings_form (line 79) | def internal_settings_form(self): method page_context (line 138) | def page_context(self): method send_handoff_email (line 145) | def send_handoff_email(self): method post (line 162) | def post(self, request, *args, **kwargs): class EditInternalCalculationsView (line 204) | class EditInternalCalculationsView(BaseInternalDomainSettingsView): method dispatch (line 213) | def dispatch(self, request, *args, **kwargs): method page_context (line 217) | def page_context(self): class FlagsAndPrivilegesView (line 227) | class FlagsAndPrivilegesView(BaseAdminProjectSettingsView): method _get_toggles (line 232) | def _get_toggles(self): method _editable_tags_slugs (line 258) | def _editable_tags_slugs(self): method _get_privileges (line 261) | def _get_privileges(self): method page_context (line 269) | def page_context(self): class ProjectLimitsView (line 279) | class ProjectLimitsView(BaseAdminProjectSettingsView): method page_context (line 285) | def page_context(self): function get_project_limits_context (line 294) | def get_project_limits_context(name_limiter_tuple_list, scope=None): function _get_rate_limits (line 303) | def _get_rate_limits(scope, rate_limiter): function toggle_diff (line 315) | def toggle_diff(request, domain): function _can_copy_toggle (line 340) | def _can_copy_toggle(toggle, domain, other_domain): function calculated_properties (line 350) | def calculated_properties(request, domain): FILE: corehq/apps/domain/views/releases.py class ManageReleasesByLocation (line 26) | class ManageReleasesByLocation(BaseProjectSettingsView): method form (line 32) | def form(self): method _location_path_display (line 40) | def _location_path_display(location_id): method page_context (line 44) | def page_context(self): method post (line 74) | def post(self, request, *args, **kwargs): function deactivate_release_restriction (line 88) | def deactivate_release_restriction(request, domain, restriction_id): function activate_release_restriction (line 94) | def activate_release_restriction(request, domain, restriction_id): function _update_release_restriction (line 98) | def _update_release_restriction(request, domain, restriction_id, active): FILE: corehq/apps/domain/views/settings.py class BaseProjectSettingsView (line 82) | class BaseProjectSettingsView(BaseDomainView): method main_context (line 87) | def main_context(self): method section_url (line 96) | def section_url(self): class DefaultProjectSettingsView (line 101) | class DefaultProjectSettingsView(BaseDomainView): method get (line 104) | def get(self, request, *args, **kwargs): class BaseAdminProjectSettingsView (line 110) | class BaseAdminProjectSettingsView(BaseProjectSettingsView): method dispatch (line 117) | def dispatch(self, request, *args, **kwargs): class BaseEditProjectInfoView (line 121) | class BaseEditProjectInfoView(BaseAdminProjectSettingsView): method main_context (line 128) | def main_context(self): class EditBasicProjectInfoView (line 142) | class EditBasicProjectInfoView(BaseEditProjectInfoView): method dispatch (line 149) | def dispatch(self, request, *args, **kwargs): method can_user_see_meta (line 153) | def can_user_see_meta(self): method can_use_custom_logo (line 157) | def can_use_custom_logo(self): method basic_info_form (line 162) | def basic_info_form(self): method initial_call_center_case_owner (line 201) | def initial_call_center_case_owner(self): method initial_call_center_type (line 211) | def initial_call_center_type(self): method page_context (line 217) | def page_context(self): method post (line 223) | def post(self, request, *args, **kwargs): class EditMyProjectSettingsView (line 234) | class EditMyProjectSettingsView(BaseProjectSettingsView): method dispatch (line 242) | def dispatch(self, *args, **kwargs): method my_project_settings_form (line 247) | def my_project_settings_form(self): method domain_membership (line 267) | def domain_membership(self): method page_context (line 271) | def page_context(self): method post (line 278) | def post(self, request, *args, **kwargs): class EditIPAccessConfigView (line 290) | class EditIPAccessConfigView(BaseProjectSettingsView): method form (line 297) | def form(self): method ip_access_config (line 314) | def ip_access_config(self): method ip_country (line 321) | def ip_country(self): method current_ip (line 327) | def current_ip(self): method page_context (line 331) | def page_context(self): method post (line 336) | def post(self, request, *args, **kwargs): function logo (line 357) | def logo(request, domain): class EditPrivacySecurityView (line 365) | class EditPrivacySecurityView(BaseAdminProjectSettingsView): method dispatch (line 372) | def dispatch(self, request, *args, **kwargs): method privacy_form (line 377) | def privacy_form(self): method page_context (line 399) | def page_context(self): method post (line 404) | def post(self, request, *args, **kwargs): class CaseSearchConfigView (line 413) | class CaseSearchConfigView(BaseAdminProjectSettingsView): method dispatch (line 420) | def dispatch(self, request, *args, **kwargs): method post (line 423) | def post(self, request, *args, **kwargs): method set_ignore_patterns (line 463) | def set_ignore_patterns(self, config, ignore_patterns): method page_context (line 483) | def page_context(self): class FeaturePreviewsView (line 506) | class FeaturePreviewsView(BaseAdminProjectSettingsView): method dispatch (line 513) | def dispatch(self, request, *args, **kwargs): method features (line 517) | def features(self): method get_toggle (line 527) | def get_toggle(self, slug): method page_context (line 533) | def page_context(self): method post (line 539) | def post(self, request, *args, **kwargs): method update_feature (line 546) | def update_feature(self, feature, current_state, new_state): class DomainPasswordResetView (line 560) | class DomainPasswordResetView(PasswordResetView): method get_form_kwargs (line 561) | def get_form_kwargs(self): class CustomPasswordResetView (line 568) | class CustomPasswordResetView(PasswordResetConfirmView): method get_success_url (line 571) | def get_success_url(self): method get_context_data (line 588) | def get_context_data(self, **kwargs): method get (line 595) | def get(self, request, *args, **kwargs): method post (line 600) | def post(self, request, *args, **kwargs): class RecoveryMeasuresHistory (line 639) | class RecoveryMeasuresHistory(BaseAdminProjectSettingsView): method page_context (line 645) | def page_context(self): class ManageDomainMobileWorkersView (line 662) | class ManageDomainMobileWorkersView(ManageMobileWorkersMixin, BaseAdminP... class CredentialsApplicationSettingsView (line 670) | class CredentialsApplicationSettingsView(BaseAdminProjectSettingsView): method form (line 676) | def form(self): method main_context (line 682) | def main_context(self): method post (line 689) | def post(self, request, *args, **kwargs): method set_credential_app (line 707) | def set_credential_app(self, form_data): method create_issuing_app (line 722) | def create_issuing_app(self, new_app_id): method update_issuing_app (line 730) | def update_issuing_app(self, new_app_id, current_credential_app_record): method remove_issuing_app (line 740) | def remove_issuing_app(self, domain_issuing_app_record): method remove_credential_from_app_features (line 746) | def remove_credential_from_app_features(self, app): method add_credential_to_app_features (line 750) | def add_credential_to_app_features(self, app, domain_issuing_app): class BaseDomainAlertsView (line 760) | class BaseDomainAlertsView(BaseProjectSettingsView): method _convert_user_time_to_server_time (line 762) | def _convert_user_time_to_server_time(timestamp, timezone): method _convert_server_time_to_user_time (line 769) | def _convert_server_time_to_user_time(timestamp, timezone): class ManageDomainAlertsView (line 773) | class ManageDomainAlertsView(BaseDomainAlertsView): method page_context (line 779) | def page_context(self): method form (line 802) | def form(self): method post (line 807) | def post(self, request, *args, **kwargs): method _create_alert (line 816) | def _create_alert(self): class EditDomainAlertView (line 841) | class EditDomainAlertView(BaseDomainAlertsView): method page_url (line 848) | def page_url(self): method page_context (line 852) | def page_context(self): method form (line 858) | def form(self): method _get_alert (line 878) | def _get_alert(self): method post (line 884) | def post(self, request, *args, **kwargs): method _update_alert (line 897) | def _update_alert(self, alert): class ImportAppFromAnotherServerView (line 923) | class ImportAppFromAnotherServerView(BaseAdminProjectSettingsView): method get_recent_import_details (line 928) | def get_recent_import_details(self): method page_context (line 942) | def page_context(self): function update_domain_alert_status (line 960) | def update_domain_alert_status(request, domain): function delete_domain_alert (line 975) | def delete_domain_alert(request, domain): function _load_alert (line 987) | def _load_alert(alert_id, domain): function _apply_update (line 997) | def _apply_update(request, alert): function _update_alert (line 1011) | def _update_alert(alert, command): FILE: corehq/apps/domain/views/sms.py class PublicSMSRatesView (line 21) | class PublicSMSRatesView(BasePageView, AsyncHandlerMixin): method dispatch (line 28) | def dispatch(self, request, *args, **kwargs): method page_url (line 32) | def page_url(self): method page_context (line 36) | def page_context(self): method post (line 41) | def post(self, request, *args, **kwargs): class SMSRatesView (line 45) | class SMSRatesView(BaseAdminProjectSettingsView, AsyncHandlerMixin): method dispatch (line 55) | def dispatch(self, request, *args, **kwargs): method rate_calc_form (line 60) | def rate_calc_form(self): method page_context (line 66) | def page_context(self): method post (line 71) | def post(self, request, *args, **kwargs): FILE: corehq/apps/domain/views/tombstone.py class TombstoneManagement (line 22) | class TombstoneManagement(BaseAdminSectionView): method get_context_data (line 30) | def get_context_data(self, **kwargs): method get (line 37) | def get(self, request, *args, **kwargs): function create_tombstone (line 49) | def create_tombstone(request): class TombstoneManagementForm (line 73) | class TombstoneManagementForm(forms.Form): method split_csv (line 80) | def split_csv(comma_separated_list): method clean (line 84) | def clean(self): method __init__ (line 89) | def __init__(self, *args, **kwargs): FILE: corehq/apps/domain_migration_flags/admin.py class DomainMigrationProgressAdmin (line 6) | class DomainMigrationProgressAdmin(admin.ModelAdmin): FILE: corehq/apps/domain_migration_flags/api.py function set_migration_started (line 23) | def set_migration_started(domain, slug, dry_run=False): function set_migration_not_started (line 40) | def set_migration_not_started(domain, slug): function set_migration_complete (line 54) | def set_migration_complete(domain, slug): function get_migration_complete (line 67) | def get_migration_complete(domain, slug): function get_migration_status (line 72) | def get_migration_status(domain, slug, strict=False): function get_uncompleted_migrations (line 80) | def get_uncompleted_migrations(slug): function migration_in_progress (line 100) | def migration_in_progress(domain, slug, include_dry_runs=False): function any_migrations_in_progress (line 106) | def any_migrations_in_progress(domain, strict=False): function all_domains_with_migrations_in_progress (line 119) | def all_domains_with_migrations_in_progress(): function reset_caches (line 127) | def reset_caches(domain, slug): function once_off_migration (line 132) | def once_off_migration(slug): FILE: corehq/apps/domain_migration_flags/exceptions.py class DomainMigrationProgressError (line 1) | class DomainMigrationProgressError(Exception): FILE: corehq/apps/domain_migration_flags/migrations/0001_initial.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/domain_migration_flags/migrations/0002_migrate_data_from_tzmigration.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/domain_migration_flags/migrations/0003_add_migration_dates.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/domain_migration_flags/models.py class MigrationStatus (line 4) | class MigrationStatus(object): class DomainMigrationProgress (line 20) | class DomainMigrationProgress(models.Model): class Meta (line 32) | class Meta(object): FILE: corehq/apps/domain_migration_flags/tests/test_domain_migration_progress.py class DomainMigrationProgressTest (line 24) | class DomainMigrationProgressTest(TestCase): method setUp (line 26) | def setUp(self): method get_progress (line 29) | def get_progress(self, domain): method test_not_started (line 32) | def test_not_started(self): method test_in_progress (line 37) | def test_in_progress(self): method test_dry_run (line 51) | def test_dry_run(self): method test_continue_live_migration (line 65) | def test_continue_live_migration(self): method test_migration_after_live_migration (line 74) | def test_migration_after_live_migration(self): method test_complete (line 82) | def test_complete(self): method test_abort (line 93) | def test_abort(self): method test_any_migrations_in_progress (line 104) | def test_any_migrations_in_progress(self): method test_once_off_decorator (line 114) | def test_once_off_decorator(self): method test_once_off_decorator_failure (line 132) | def test_once_off_decorator_failure(self): FILE: corehq/apps/dropbox/decorators.py function require_dropbox_session (line 9) | def require_dropbox_session(next_url=None): FILE: corehq/apps/dropbox/exceptions.py class DropboxUploadAlreadyInProgress (line 1) | class DropboxUploadAlreadyInProgress(Exception): class DropboxInvalidToken (line 5) | class DropboxInvalidToken(Exception): FILE: corehq/apps/dropbox/management/commands/upload_file_to_dropbox.py class Command (line 8) | class Command(BaseCommand): method add_arguments (line 11) | def add_arguments(self, parser): method handle (line 16) | def handle(self, file_path, token, **options): FILE: corehq/apps/dropbox/migrations/0001_initial.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/apps/dropbox/models.py class DropboxUploadHelper (line 13) | class DropboxUploadHelper(models.Model): class Meta (line 29) | class Meta(object): method create (line 33) | def create(cls, token, **kwargs): method _ensure_valid_token (line 54) | def _ensure_valid_token(token): method upload (line 61) | def upload(self, max_size=None, max_retries=3): FILE: corehq/apps/dropbox/tasks.py function upload (line 18) | def upload(dropbox_helper_id, access_token, size, max_retries): FILE: corehq/apps/dropbox/tests/test_dropbox_upload_helper.py class DropboxUploadHelperTest (line 13) | class DropboxUploadHelperTest(TestCase): method setUpClass (line 16) | def setUpClass(cls): method tearDownClass (line 22) | def tearDownClass(cls): method test_successful_creation (line 27) | def test_successful_creation(self): method test_upload_in_progress_creation (line 40) | def test_upload_in_progress_creation(self): method test_successful_creation_after_failure (line 52) | def test_successful_creation_after_failure(self): FILE: corehq/apps/dropbox/utils.py function get_dropbox_auth_flow (line 14) | def get_dropbox_auth_flow(session): function upload_to_dropbox (line 30) | def upload_to_dropbox(access_token, dropbox_path, file_path, progress_ca... FILE: corehq/apps/dropbox/views.py class DropboxAuthInitiate (line 19) | class DropboxAuthInitiate(View): method get (line 22) | def get(self, request, *args, **kwargs): class DropboxAuthCallback (line 27) | class DropboxAuthCallback(View): method get (line 30) | def get(self, request, *args, **kwargs): FILE: corehq/apps/dump_reload/couch/dump.py class CouchDataDumper (line 46) | class CouchDataDumper(DataDumper): method dump (line 49) | def dump(self, output_stream): method _dump_docs (line 55) | def _dump_docs(self, doc_class, doc_ids, output_stream): function get_doc_ids_to_dump (line 67) | def get_doc_ids_to_dump(domain, exclude_doc_types=None, include_doc_type... class ToggleDumper (line 81) | class ToggleDumper(DataDumper): method dump (line 84) | def dump(self, output_stream): function _get_toggles_to_migrate (line 95) | def _get_toggles_to_migrate(domain): class DomainDumper (line 122) | class DomainDumper(DataDumper): method dump (line 125) | def dump(self, output_stream): FILE: corehq/apps/dump_reload/couch/id_providers.py class BaseIDProvider (line 7) | class BaseIDProvider(metaclass=ABCMeta): method get_doc_ids (line 9) | def get_doc_ids(self, domain): class DocTypeIDProvider (line 17) | class DocTypeIDProvider(BaseIDProvider): method __init__ (line 18) | def __init__(self, doc_type): method get_doc_ids (line 21) | def get_doc_ids(self, domain): class ViewKeyGenerator (line 27) | class ViewKeyGenerator(object): method __call__ (line 28) | def __call__(self, doc_type, domain): method get_key_args (line 31) | def get_key_args(self, doc_type, domain): class DomainKeyGenerator (line 35) | class DomainKeyGenerator(ViewKeyGenerator): method get_key_args (line 36) | def get_key_args(self, doc_type, domain): class ViewIDProvider (line 42) | class ViewIDProvider(BaseIDProvider): method __init__ (line 50) | def __init__(self, doc_type, view_name, key_generator): method get_doc_ids (line 55) | def get_doc_ids(self, domain): class WebUserIDProvider (line 67) | class WebUserIDProvider(BaseIDProvider): method get_doc_ids (line 70) | def get_doc_ids(self, domain): FILE: corehq/apps/dump_reload/couch/load.py function drop_suffix (line 18) | def drop_suffix(doc_type): class CouchDataLoader (line 24) | class CouchDataLoader(DataLoader): method __init__ (line 27) | def __init__(self, *args, **kwargs): method load_objects (line 32) | def load_objects(self, object_strings, force=False, dry_run=False): method _doc_type_matches_filter (line 48) | def _doc_type_matches_filter(self, doc_type): method _get_db_for_doc_type (line 51) | def _get_db_for_doc_type(self, doc_type): method _create_db_for_doc_type (line 58) | def _create_db_for_doc_type(self, doc_type): class LoaderCallback (line 71) | class LoaderCallback(IterDBCallback): method __init__ (line 72) | def __init__(self, _success_counter, stdout=None): method post_commit (line 76) | def post_commit(self, operation, committed_docs, success_ids, errors): class ToggleLoader (line 95) | class ToggleLoader(DataLoader): method load_objects (line 98) | def load_objects(self, object_strings, force=False, dry_run=False): class DomainLoader (line 125) | class DomainLoader(DataLoader): method load_objects (line 128) | def load_objects(self, object_strings, force=False, dry_run=False): FILE: corehq/apps/dump_reload/exceptions.py class DomainDumpError (line 1) | class DomainDumpError(Exception): class DataExistsException (line 5) | class DataExistsException(Exception): class DataLoadException (line 9) | class DataLoadException(Exception): FILE: corehq/apps/dump_reload/interface.py class DataDumper (line 11) | class DataDumper(metaclass=ABCMeta): method slug (line 19) | def slug(self): method __init__ (line 22) | def __init__(self, domain, excludes, includes, stdout=None, stderr=None): method dump (line 30) | def dump(self, output_stream): class DataLoader (line 39) | class DataLoader(metaclass=ABCMeta): method __init__ (line 40) | def __init__(self, object_filter=None, stdout=None, stderr=None, chunk... method slug (line 48) | def slug(self): method load_objects (line 52) | def load_objects(self, object_strings, force=False, dry_run=False): method load_from_path (line 60) | def load_from_path(self, extracted_dump_path, dump_meta, force=False, ... method load_from_file (line 69) | def load_from_file(self, file_path, dump_meta, force=False, dry_run=Fa... FILE: corehq/apps/dump_reload/management/commands/dump_case_data.py class Command (line 13) | class Command(BaseCommand): method add_arguments (line 16) | def add_arguments(self, parser): method ensure_params (line 21) | def ensure_params(self, for_domain, for_case_type, for_db_conn): method handle (line 38) | def handle(self, *args, **options): FILE: corehq/apps/dump_reload/management/commands/dump_domain_data.py class Command (line 15) | class Command(BaseCommand): method add_arguments (line 19) | def add_arguments(self, parser): method handle (line 38) | def handle(self, domain_name, **options): method _print_stats (line 80) | def _print_stats(self, meta): function _get_dump_stream_filename (line 94) | def _get_dump_stream_filename(slug, domain, utcnow): FILE: corehq/apps/dump_reload/management/commands/dump_domain_data_raw.py class Command (line 20) | class Command(BaseCommand): method add_arguments (line 25) | def add_arguments(self, parser): method handle (line 33) | def handle(self, domain, **options): method _create_bucket (line 67) | def _create_bucket(self): method _upload (line 75) | def _upload(self, type_, path): function _dump_docs (line 84) | def _dump_docs(query, type_): function _filename (line 95) | def _filename(domain, type_, date): function _get_file (line 103) | def _get_file(doc_type): function _get_form_query (line 110) | def _get_form_query(domain): function _get_query (line 116) | def _get_query(ES, domain): FILE: corehq/apps/dump_reload/management/commands/load_domain_data.py class Command (line 20) | class Command(BaseCommand): method add_arguments (line 53) | def add_arguments(self, parser): method handle (line 75) | def handle(self, dump_file_path, **options): method _print_stats (line 105) | def _print_stats(self, loaded_meta, dump_meta): method extract_dump_archive (line 118) | def extract_dump_archive(self, dump_file_path): method _load_data (line 128) | def _load_data(self, loader_class, extracted_dump_path, object_filter,... function _get_dump_meta (line 140) | def _get_dump_meta(extracted_dir): function get_tmp_extract_dir (line 148) | def get_tmp_extract_dir(dump_file_path, specifier=""): FILE: corehq/apps/dump_reload/management/commands/print_domain_stats.py class Command (line 34) | class Command(BaseCommand): method add_arguments (line 37) | def add_arguments(self, parser): method handle (line 42) | def handle(self, domain, **options): function _get_row_color (line 70) | def _get_row_color(row): function _get_couchdb_counts (line 78) | def _get_couchdb_counts(domain): function _get_sql_counts (line 102) | def _get_sql_counts(domain): FILE: corehq/apps/dump_reload/sql/dump.py class SqlDataDumper (line 269) | class SqlDataDumper(DataDumper): method dump (line 272) | def dump(self, output_stream): function get_objects_to_dump (line 305) | def get_objects_to_dump(domain, excludes, includes, stats_counter=None, ... function get_objects_to_dump_from_builders (line 316) | def get_objects_to_dump_from_builders(builders, stats_counter=None, stdo... function get_model_iterator_builders_to_dump (line 329) | def get_model_iterator_builders_to_dump(domain, excludes, includes, limi... function get_all_model_iterators_builders_for_domain (line 354) | def get_all_model_iterators_builders_for_domain(model_class, domain, bui... function get_apps_and_models (line 378) | def get_apps_and_models(app_or_model_label): function _get_app_list (line 408) | def _get_app_list(excluded_apps, included_apps): FILE: corehq/apps/dump_reload/sql/filters.py class DomainFilter (line 18) | class DomainFilter(metaclass=ABCMeta): method get_filters (line 20) | def get_filters(self, domain_name, db_alias=None): method count (line 25) | def count(self, domain_name): class SimpleFilter (line 29) | class SimpleFilter(DomainFilter): method __init__ (line 30) | def __init__(self, filter_kwarg): method get_filters (line 33) | def get_filters(self, domain_name, db_alias=None): class ManyFilters (line 37) | class ManyFilters(DomainFilter): method __init__ (line 41) | def __init__(self, *filter_kwargs): method get_filters (line 45) | def get_filters(self, domain_name, db_alias=None): class UsernameFilter (line 52) | class UsernameFilter(DomainFilter): method __init__ (line 53) | def __init__(self, usernames=None): method count (line 56) | def count(self, domain_name): method get_filters (line 59) | def get_filters(self, domain_name, db_alias=None): class IDFilter (line 75) | class IDFilter(DomainFilter): method __init__ (line 76) | def __init__(self, field, ids, chunksize=1000): method count (line 81) | def count(self, domain_name): method get_ids (line 84) | def get_ids(self, domain_name, db_alias=None): method get_filters (line 87) | def get_filters(self, domain_name, db_alias=None): class UserIDFilter (line 93) | class UserIDFilter(IDFilter): method __init__ (line 94) | def __init__(self, user_id_field, include_web_users=True): method get_ids (line 98) | def get_ids(self, domain_name, db_alias=None): class MultimediaBlobMetaFilter (line 103) | class MultimediaBlobMetaFilter(IDFilter): method __init__ (line 107) | def __init__(self): method count (line 112) | def count(self, domain_name): method get_ids (line 118) | def get_ids(self, domain_name, db_alias=None): class UnfilteredModelIteratorBuilder (line 145) | class UnfilteredModelIteratorBuilder(object): method __init__ (line 146) | def __init__(self, model_label, use_all_objects=False): method prepare (line 151) | def prepare(self, domain, model_class, db_alias): method _base_queryset (line 157) | def _base_queryset(self): method querysets (line 164) | def querysets(self): method count (line 167) | def count(self): method iterators (line 170) | def iterators(self): method build (line 174) | def build(self, domain, model_class, db_alias): class FilteredModelIteratorBuilder (line 178) | class FilteredModelIteratorBuilder(UnfilteredModelIteratorBuilder): method __init__ (line 179) | def __init__(self, model_label, filter, use_all_objects=False): method build (line 183) | def build(self, domain, model_class, db_alias): method count (line 188) | def count(self): method querysets (line 194) | def querysets(self): class UniqueFilteredModelIteratorBuilder (line 201) | class UniqueFilteredModelIteratorBuilder(FilteredModelIteratorBuilder): method iterators (line 202) | def iterators(self): FILE: corehq/apps/dump_reload/sql/load.py class SqlDataLoader (line 29) | class SqlDataLoader(DataLoader): method load_objects (line 32) | def load_objects(self, object_strings, force=False, dry_run=False): method line_to_object (line 99) | def line_to_object(self, line): method filter_object (line 108) | def filter_object(self, object): function get_worker_queue (line 115) | def get_worker_queue(process_pool_executor, manager, db_alias): function worker (line 124) | def worker(queue, db_alias): function _reset_sequences (line 140) | def _reset_sequences(load_stats): function load_data_for_db (line 154) | def load_data_for_db(db_alias): function constraint_checks_deferred (line 192) | def constraint_checks_deferred(db_alias): function get_db_alias (line 209) | def get_db_alias(obj: dict) -> str: class DefaultDictWithKey (line 235) | class DefaultDictWithKey(defaultdict): method __missing__ (line 239) | def __missing__(self, key): class LoadStat (line 244) | class LoadStat: method __init__ (line 248) | def __init__(self, db_alias, model_counter): method update (line 252) | def update(self, stat: 'LoadStat'): function update_model_name (line 257) | def update_model_name(obj): FILE: corehq/apps/dump_reload/sql/serialization.py class JsonLinesSerializer (line 9) | class JsonLinesSerializer(JsonSerializer): method start_serialization (line 14) | def start_serialization(self): method end_serialization (line 17) | def end_serialization(self): method get_dump_object (line 20) | def get_dump_object(self, obj): method end_object (line 26) | def end_object(self, obj): FILE: corehq/apps/dump_reload/tests/test_couch_dump_load.py class CouchDumpLoadTest (line 33) | class CouchDumpLoadTest(TestCase): method setUpClass (line 37) | def setUpClass(cls): method tearDownClass (line 44) | def tearDownClass(cls): method tearDown (line 48) | def tearDown(self): method _delete_couch_data (line 51) | def _delete_couch_data(self): method _dump_and_load (line 54) | def _dump_and_load(self, expected_objects, not_expected_objects=None, ... method test_docs_with_domain (line 98) | def test_docs_with_domain(self): method test_multimedia (line 137) | def test_multimedia(self): method test_web_user (line 173) | def test_web_user(self): function delete_doain_couch_data_for_dump_load_test (line 200) | def delete_doain_couch_data_for_dump_load_test(domain_name): class TestDumpLoadToggles (line 209) | class TestDumpLoadToggles(SimpleTestCase): method setUpClass (line 212) | def setUpClass(cls): method setUp (line 216) | def setUp(self): method tearDown (line 220) | def tearDown(self): method test_dump_toggles (line 225) | def test_dump_toggles(self): method _get_mocked_toggles (line 241) | def _get_mocked_toggles(self): method test_load_toggles (line 263) | def test_load_toggles(self): function _get_doc_counts_from_db (line 287) | def _get_doc_counts_from_db(domain): function _get_doc_counts_from_fake_db (line 294) | def _get_doc_counts_from_fake_db(fake_db, doc_to_doc_class=None): function _doc_to_doc_class (line 301) | def _doc_to_doc_class(doc, doc_to_doc_class): function _get_property_value (line 309) | def _get_property_value(prop): FILE: corehq/apps/dump_reload/tests/test_dump_models.py function test_domain_dump_sql_models (line 176) | def test_domain_dump_sql_models(): function test_foreign_keys_for_dumped_sql_models_are_also_included (line 204) | def test_foreign_keys_for_dumped_sql_models_are_also_included(): FILE: corehq/apps/dump_reload/tests/test_serialization.py class TestJSONFieldSerialization (line 19) | class TestJSONFieldSerialization(SimpleTestCase): method test (line 25) | def test(self): class TestForeignKeyFieldSerialization (line 41) | class TestForeignKeyFieldSerialization(SimpleTestCase): method test_natural_foreign_key_returns_iterable_when_serialized (line 51) | def test_natural_foreign_key_returns_iterable_when_serialized(self): method test_foreign_key_on_model_without_natural_key_returns_primary_key_when_serialized (line 63) | def test_foreign_key_on_model_without_natural_key_returns_primary_key_... method test_natural_foreign_key_for_Permission_returns_tuple_when_serialized (line 77) | def test_natural_foreign_key_for_Permission_returns_tuple_when_seriali... method test_natural_foreign_key_for_CommCareCase_returns_str_when_serialized (line 92) | def test_natural_foreign_key_for_CommCareCase_returns_str_when_seriali... method test_natural_foreign_key_for_XFormInstance_returns_str_when_serialized (line 104) | def test_natural_foreign_key_for_XFormInstance_returns_str_when_serial... class TestEncryptedFieldSerialization (line 117) | class TestEncryptedFieldSerialization(SimpleTestCase): method test_encrypted_fields_are_reset_on_model_that_provides_encrypted_fields (line 119) | def test_encrypted_fields_are_reset_on_model_that_provides_encrypted_f... FILE: corehq/apps/dump_reload/tests/test_slugs.py function test_non_overlapping_loader_slugs (line 6) | def test_non_overlapping_loader_slugs(): FILE: corehq/apps/dump_reload/tests/test_sql_data_loader.py class TestSqlDataLoader (line 15) | class TestSqlDataLoader(TestCase): method test_loading_foreign_keys_using_iterable_natural_key (line 17) | def test_loading_foreign_keys_using_iterable_natural_key(self): method test_loading_foreign_keys_using_non_iterable_natural_key (line 37) | def test_loading_foreign_keys_using_non_iterable_natural_key(self): method test_loading_foreign_keys_using_primary_key (line 60) | def test_loading_foreign_keys_using_primary_key(self): class TestLoadingNonUniqueNaturalKeys (line 81) | class TestLoadingNonUniqueNaturalKeys(TestCase): method test_loading_conflicting_case_transactions_saves_distinct_objects_to_db (line 88) | def test_loading_conflicting_case_transactions_saves_distinct_objects_... method test_loading_conflicting_xform_operations_saves_distinct_objects_to_db (line 112) | def test_loading_conflicting_xform_operations_saves_distinct_objects_t... method test_loading_conflicting_ledger_transactions_saves_distinct_objects_to_db (line 135) | def test_loading_conflicting_ledger_transactions_saves_distinct_object... FILE: corehq/apps/dump_reload/tests/test_sql_dump_load.py class BaseDumpLoadTest (line 60) | class BaseDumpLoadTest(TestCase): method setUpClass (line 62) | def setUpClass(cls): method tearDownClass (line 72) | def tearDownClass(cls): method delete_sql_data (line 77) | def delete_sql_data(self): method tearDown (line 80) | def tearDown(self): method _dump_and_load (line 84) | def _dump_and_load(self, expected_dump_counts, load_filter=None, expec... method _load (line 101) | def _load(self, output_stream, expected_load_counts): method _do_load (line 105) | def _do_load(self, output_stream, expected_dump_counts, load_filter, e... method _parse_dump_output (line 126) | def _parse_dump_output(self, output_stream): method _check_signals_handle_raw (line 137) | def _check_signals_handle_raw(self, models): method _post_save_receivers (line 161) | def _post_save_receivers(self): function delete_domain_sql_data_for_dump_load_test (line 171) | def delete_domain_sql_data_for_dump_load_test(domain_name): class TestSQLDumpLoadShardedModels (line 184) | class TestSQLDumpLoadShardedModels(BaseDumpLoadTest): method setUpClass (line 188) | def setUpClass(cls): method tearDownClass (line 195) | def tearDownClass(cls): method test_dump_load_form (line 199) | def test_dump_load_form(self): method test_load_renamed_model (line 218) | def test_load_renamed_model(self): method test_sql_dump_load_case (line 244) | def test_sql_dump_load_case(self): method test_ledgers (line 275) | def test_ledgers(self): class TestSQLDumpLoad (line 314) | class TestSQLDumpLoad(BaseDumpLoadTest): method test_case_search_config (line 315) | def test_case_search_config(self): method test_users (line 341) | def test_users(self): method test_sqluserdata (line 379) | def test_sqluserdata(self): method test_dump_roles (line 400) | def test_dump_roles(self): method test_device_logs (line 428) | def test_device_logs(self): method test_demo_user_restore (line 460) | def test_demo_user_restore(self): method test_products (line 492) | def test_products(self): method test_location_type (line 509) | def test_location_type(self): method test_location (line 549) | def test_location(self): method test_sms (line 598) | def test_sms(self): method test_message_scheduling (line 633) | def test_message_scheduling(self): method test_mobile_backend (line 647) | def test_mobile_backend(self): method test_case_importer (line 695) | def test_case_importer(self): method test_filtered_dump_load (line 725) | def test_filtered_dump_load(self): method test_sms_content (line 738) | def test_sms_content(self): method test_zapier_subscription (line 756) | def test_zapier_subscription(self): method test_lookup_table (line 766) | def test_lookup_table(self): class TestSqlLoadWithError (line 811) | class TestSqlLoadWithError(BaseDumpLoadTest): method setUp (line 812) | def setUp(self): method test_load_error_queue_full (line 819) | def test_load_error_queue_full(self): method test_load_error_queue_full_on_terminate (line 823) | def test_load_error_queue_full_on_terminate(self): method _load_with_errors (line 827) | def _load_with_errors(self, chunk_size): class DefaultDictWithKeyTests (line 846) | class DefaultDictWithKeyTests(SimpleTestCase): method test_intended_use_case (line 848) | def test_intended_use_case(self): method test_not_enough_params (line 856) | def test_not_enough_params(self): method test_too_many_params (line 866) | def test_too_many_params(self): method test_no_factory (line 876) | def test_no_factory(self): function _normalize_object_counter (line 885) | def _normalize_object_counter(counter, for_loaded=False): FILE: corehq/apps/dump_reload/tests/test_sql_filters.py class TestUseAllObjectsInModelIteratorBuilder (line 14) | class TestUseAllObjectsInModelIteratorBuilder(TestCase): method test_default_manager_ignores_deleted_objects (line 16) | def test_default_manager_ignores_deleted_objects(self): method test_using_all_objects_includes_deleted_objects (line 29) | def test_using_all_objects_includes_deleted_objects(self): method setUpClass (line 43) | def setUpClass(cls): class TestMultimediaBlobMetaFilter (line 50) | class TestMultimediaBlobMetaFilter(TestCase): method test_returns_blobmeta_ids_for_multimedia_attached_to_domain (line 52) | def test_returns_blobmeta_ids_for_multimedia_attached_to_domain(self): method test_does_not_return_blobmeta_ids_for_multimedia_outside_of_domain (line 65) | def test_does_not_return_blobmeta_ids_for_multimedia_outside_of_domain... method test_returns_multiple_blobmeta_ids_if_multiple_attached_to_domain (line 73) | def test_returns_multiple_blobmeta_ids_if_multiple_attached_to_domain(... method create_multimedia (line 89) | def create_multimedia(self, content, domain=None): method setUpClass (line 100) | def setUpClass(cls): FILE: corehq/apps/dump_reload/util.py function get_model_label (line 6) | def get_model_label(model_class): function get_model_class (line 10) | def get_model_class(model_label): FILE: corehq/apps/email/forms.py class EmailSMTPSettingsForm (line 13) | class EmailSMTPSettingsForm(forms.ModelForm): class Meta (line 79) | class Meta: method __init__ (line 94) | def __init__(self, *args, **kwargs): method helper (line 104) | def helper(self): method save (line 129) | def save(self, commit=True): FILE: corehq/apps/email/migrations/0001_initial.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/email/migrations/0002_emailsettings_return_path_email.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/email/migrations/0003_emailsettings_password_cbc.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/email/models.py class EmailSettings (line 10) | class EmailSettings(models.Model): method __str__ (line 23) | def __str__(self): method plaintext_password (line 29) | def plaintext_password(self): method plaintext_password (line 36) | def plaintext_password(self, plaintext): FILE: corehq/apps/email/static/email/js/email_settings.js function initFormBindings (line 5) | function initFormBindings() { FILE: corehq/apps/email/tests/test_email_form.py class EmailSMTPSettingsFormTests (line 6) | class EmailSMTPSettingsFormTests(TestCase): method test_valid_form (line 8) | def test_valid_form(self): method test_invalid_form (line 14) | def test_invalid_form(self): method test_clean_port (line 23) | def test_clean_port(self): method test_clean_from_email (line 44) | def test_clean_from_email(self): method _get_valid_form_data (line 59) | def _get_valid_form_data(): FILE: corehq/apps/email/views.py class EmailSMTPSettingsView (line 21) | class EmailSMTPSettingsView(BaseDomainView): method section_url (line 28) | def section_url(self): method get (line 31) | def get(self, request, *args, **kwargs): method post (line 49) | def post(self, request, *args, **kwargs): FILE: corehq/apps/enterprise/api/resources.py class EnterpriseODataAuthentication (line 31) | class EnterpriseODataAuthentication(ODataAuthentication): method is_authenticated (line 32) | def is_authenticated(self, request, **kwargs): class ODataResource (line 49) | class ODataResource(HqBaseResource): class Meta (line 50) | class Meta: method alter_list_data_to_serialize (line 58) | def alter_list_data_to_serialize(self, request, data): method get_object_list (line 73) | def get_object_list(self, request): method obj_get_list (line 77) | def obj_get_list(self, bundle, **kwargs): method determine_format (line 80) | def determine_format(self, request): method create_response (line 89) | def create_response(self, request, data, response_class=HttpResponse, ... method get_schema (line 94) | def get_schema(self, request, **kwargs): method get_fields (line 114) | def get_fields(self): method get_odata_class (line 122) | def get_odata_class(field_object): method get_primary_keys (line 136) | def get_primary_keys(self): method convert_datetime (line 140) | def convert_datetime(cls, datetime_string): class ODataEnterpriseReportResource (line 153) | class ODataEnterpriseReportResource(ODataResource): class Meta (line 165) | class Meta(ODataResource.Meta): method get_object_list (line 168) | def get_object_list(self, request): method dehydrate (line 206) | def dehydrate(self, bundle): method get_report_task (line 215) | def get_report_task(self, request): method _add_query_id_to_request (line 223) | def _add_query_id_to_request(self, request, query_id): class DomainResource (line 230) | class DomainResource(ODataEnterpriseReportResource): method get_primary_keys (line 255) | def get_primary_keys(self): class WebUserResource (line 259) | class WebUserResource(ODataEnterpriseReportResource): method dehydrate (line 281) | def dehydrate(self, bundle): method convert_not_available (line 292) | def convert_not_available(cls, value): method get_primary_keys (line 295) | def get_primary_keys(self): class MobileUserResource (line 299) | class MobileUserResource(ODataEnterpriseReportResource): method get_primary_keys (line 326) | def get_primary_keys(self): class SMSResource (line 330) | class SMSResource(ODataEnterpriseReportResource): method get_report_task (line 345) | def get_report_task(self, request): method get_primary_keys (line 357) | def get_primary_keys(self): function get_date_range_from_request (line 361) | def get_date_range_from_request(request_dict): class ODataFeedResource (line 373) | class ODataFeedResource(ODataEnterpriseReportResource): method get_primary_keys (line 391) | def get_primary_keys(self): class FormSubmissionResource (line 395) | class FormSubmissionResource(ODataEnterpriseReportResource): class Meta (line 396) | class Meta(ODataEnterpriseReportResource.Meta): method get_object_list (line 421) | def get_object_list(self, request): method get_primary_keys (line 441) | def get_primary_keys(self): class CaseManagementResource (line 445) | class CaseManagementResource(ODataEnterpriseReportResource): method get_primary_keys (line 462) | def get_primary_keys(self): class DataExportReportResource (line 466) | class DataExportReportResource(ODataEnterpriseReportResource): method get_primary_keys (line 483) | def get_primary_keys(self): class TwoFactorAuthResource (line 487) | class TwoFactorAuthResource(ODataEnterpriseReportResource): method get_primary_keys (line 496) | def get_primary_keys(self): class CommCareVersionComplianceResource (line 500) | class CommCareVersionComplianceResource(ODataEnterpriseReportResource): method get_primary_keys (line 515) | def get_primary_keys(self): class APIKeysResource (line 519) | class APIKeysResource(ODataEnterpriseReportResource): method get_primary_keys (line 538) | def get_primary_keys(self): class DataForwardingResource (line 542) | class DataForwardingResource(ODataEnterpriseReportResource): method get_primary_keys (line 557) | def get_primary_keys(self): class ApplicationVersionComplianceResource (line 561) | class ApplicationVersionComplianceResource(ODataEnterpriseReportResource): method get_primary_keys (line 580) | def get_primary_keys(self): FILE: corehq/apps/enterprise/decorators.py function require_enterprise_admin (line 11) | def require_enterprise_admin(view_func): FILE: corehq/apps/enterprise/dispatcher.py class EnterpriseReportDispatcher (line 10) | class EnterpriseReportDispatcher(ReportDispatcher): method dispatch (line 16) | def dispatch(self, request, *args, **kwargs): FILE: corehq/apps/enterprise/enterprise.py class EnterpriseReport (line 53) | class EnterpriseReport(ABC): method title (line 72) | def title(self): method total_description (line 76) | def total_description(self): method __init__ (line 82) | def __init__(self, account, couch_user, **kwargs): method headers (line 88) | def headers(self): method filename (line 92) | def filename(self): method create (line 96) | def create(cls, slug, account_id, couch_user, **kwargs): method format_date (line 132) | def format_date(self, date): method domain_properties (line 135) | def domain_properties(self, domain_obj): method rows_for_domain (line 142) | def rows_for_domain(self, domain_obj): method total_for_domain (line 145) | def total_for_domain(self, domain_obj): method domains (line 149) | def domains(self): method rows (line 153) | def rows(self): method total (line 160) | def total(self): class EnterpriseDomainReport (line 167) | class EnterpriseDomainReport(EnterpriseReport): method __init__ (line 171) | def __init__(self, account, couch_user): method headers (line 176) | def headers(self): method rows_for_domain (line 182) | def rows_for_domain(self, domain_obj): method total_for_domain (line 194) | def total_for_domain(self, domain_obj): class EnterpriseWebUserReport (line 198) | class EnterpriseWebUserReport(EnterpriseReport): method headers (line 203) | def headers(self): method rows_for_domain (line 208) | def rows_for_domain(self, domain_obj): method total_for_domain (line 243) | def total_for_domain(self, domain_obj): class EnterpriseMobileWorkerReport (line 247) | class EnterpriseMobileWorkerReport(EnterpriseReport): method headers (line 251) | def headers(self): method rows_for_domain (line 256) | def rows_for_domain(self, domain_obj): method total_for_domain (line 274) | def total_for_domain(self, domain_obj): class EnterpriseFormReport (line 278) | class EnterpriseFormReport(EnterpriseReport): method __init__ (line 285) | def __init__(self, account, couch_user, start_date=None, end_date=None... method headers (line 307) | def headers(self): method _query (line 314) | def _query(self, domain_name): method hits (line 336) | def hits(self, domain_name): method _generate_data_error (line 343) | def _generate_data_error(self): method rows (line 351) | def rows(self): method rows_for_domain (line 362) | def rows_for_domain(self, domain_obj): method total_for_domain (line 382) | def total_for_domain(self, domain_obj): class EnterpriseODataReport (line 386) | class EnterpriseODataReport(EnterpriseReport): method __init__ (line 391) | def __init__(self, account, couch_user): method headers (line 396) | def headers(self): method total_for_domain (line 399) | def total_for_domain(self, domain_obj): method rows_for_domain (line 402) | def rows_for_domain(self, domain_obj): class EnterpriseCaseManagementReport (line 422) | class EnterpriseCaseManagementReport(EnterpriseReport): method headers (line 427) | def headers(self): method rows_for_domain (line 430) | def rows_for_domain(self, domain_obj): method total (line 449) | def total(self): method total_for_domain (line 462) | def total_for_domain(self, domain_obj): method app_query (line 473) | def app_query(self, domain): class EnterpriseDataExportReport (line 481) | class EnterpriseDataExportReport(EnterpriseReport): method headers (line 485) | def headers(self): method type_lookup (line 494) | def type_lookup(self, doc_type): method subtype_lookup (line 509) | def subtype_lookup(self, export): method user_lookup (line 516) | def user_lookup(self, owner_id): method get_exports (line 523) | def get_exports(self, domain_obj): method rows_for_domain (line 530) | def rows_for_domain(self, domain_obj): method total_for_domain (line 539) | def total_for_domain(self, domain_obj): class EnterpriseCommCareVersionReport (line 543) | class EnterpriseCommCareVersionReport(EnterpriseReport): method headers (line 548) | def headers(self): method rows (line 557) | def rows(self): method total (line 566) | def total(self): method rows_for_domain (line 586) | def rows_for_domain(self, domain, config, cache): class EnterpriseSMSReport (line 623) | class EnterpriseSMSReport(EnterpriseReport): method __init__ (line 629) | def __init__(self, account, couch_user, start_date=None, end_date=None... method total_for_domain (line 649) | def total_for_domain(self, domain_obj): method headers (line 662) | def headers(self): method rows_for_domain (line 667) | def rows_for_domain(self, domain_obj): class EnterpriseAPIReport (line 684) | class EnterpriseAPIReport(EnterpriseReport): method headers (line 688) | def headers(self): method rows (line 693) | def rows(self): method total (line 697) | def total(self): method unique_api_keys (line 700) | def unique_api_keys(self): method _get_api_key_row (line 712) | def _get_api_key_row(self, api_key): class Enterprise2FAReport (line 731) | class Enterprise2FAReport(EnterpriseReport): method headers (line 736) | def headers(self): method total_for_domain (line 739) | def total_for_domain(self, domain_obj): method rows_for_domain (line 744) | def rows_for_domain(self, domain_obj): class EnterpriseDataForwardingReport (line 750) | class EnterpriseDataForwardingReport(EnterpriseReport): method headers (line 755) | def headers(self): method total_for_domain (line 758) | def total_for_domain(self, domain_obj): method rows_for_domain (line 761) | def rows_for_domain(self, domain_obj): class EnterpriseAppVersionComplianceReport (line 777) | class EnterpriseAppVersionComplianceReport(EnterpriseReport): method __init__ (line 781) | def __init__(self, account, couch_user): method headers (line 786) | def headers(self): method rows (line 797) | def rows(self): method total (line 804) | def total(self): method rows_for_domain (line 808) | def rows_for_domain(self, domain): method all_last_builds_with_latest_version (line 835) | def all_last_builds_with_latest_version(self, domain, app_ids): method get_latest_build_version (line 858) | def get_latest_build_version(self, domain, app_id, at_datetime): method get_app_builds (line 864) | def get_app_builds(self, domain, app_id): method _find_latest_build_version_from_builds (line 880) | def _find_latest_build_version_from_builds(self, all_builds, at_dateti... method _get_build_info (line 887) | def _get_build_info(self, build_doc): function _format_percentage_for_enterprise_tile (line 899) | def _format_percentage_for_enterprise_tile(dividend, divisor): FILE: corehq/apps/enterprise/exceptions.py class EnterpriseReportError (line 1) | class EnterpriseReportError(Exception): class TooMuchRequestedDataError (line 5) | class TooMuchRequestedDataError(Exception): FILE: corehq/apps/enterprise/filters.py class EnterpriseDomainFilter (line 8) | class EnterpriseDomainFilter(BaseSingleOptionFilter): method options (line 13) | def options(self): FILE: corehq/apps/enterprise/forms.py class EnterpriseSettingsForm (line 18) | class EnterpriseSettingsForm(forms.Form): method __init__ (line 119) | def __init__(self, *args, **kwargs): method clean_restrict_signup_message (line 187) | def clean_restrict_signup_message(self): method save (line 193) | def save(self, account): class EnterpriseManageMobileWorkersForm (line 235) | class EnterpriseManageMobileWorkersForm(forms.Form): method __init__ (line 280) | def __init__(self, *args, **kwargs): method update_settings (line 310) | def update_settings(self): FILE: corehq/apps/enterprise/interface.py class EnterpriseSMSBillablesReport (line 27) | class EnterpriseSMSBillablesReport(GenericTabularReport): method headers (line 48) | def headers(self): method sort_field (line 64) | def sort_field(self): method shared_pagination_GET_params (line 84) | def shared_pagination_GET_params(self): method get_all_rows (line 106) | def get_all_rows(self): method total_records (line 112) | def total_records(self): method rows (line 117) | def rows(self): method _format_billables (line 124) | def _format_billables(self, sms_billables): method sms_billables (line 146) | def sms_billables(self): FILE: corehq/apps/enterprise/iterators.py function raise_after_max_elements (line 12) | def raise_after_max_elements(it, max_elements, exception=None): class IterableEnterpriseFormQuery (line 21) | class IterableEnterpriseFormQuery: method __init__ (line 35) | def __init__(self, account, form_converter, start_date, end_date, last... method execute (line 44) | def execute(self, limit=None): method get_query_params (line 60) | def get_query_params(self, fetched_object): function resolve_start_and_end_date (line 64) | def resolve_start_and_end_date(start_date, end_date, maximum_date_range): class EnterpriseDataConverter (line 82) | class EnterpriseDataConverter(ABC): method convert (line 84) | def convert(self, data): method get_query_params (line 92) | def get_query_params(cls, fetched_object): method get_kwargs_from_map (line 101) | def get_kwargs_from_map(cls, map): class EnterpriseFormReportConverter (line 109) | class EnterpriseFormReportConverter(EnterpriseDataConverter): method __init__ (line 110) | def __init__(self): method convert (line 113) | def convert(self, form): method get_query_params (line 129) | def get_query_params(cls, fetched_object): method get_kwargs_from_map (line 137) | def get_kwargs_from_map(cls, map): method is_initial_query (line 150) | def is_initial_query(cls, map): class AppIdToNameResolver (line 158) | class AppIdToNameResolver: method __init__ (line 159) | def __init__(self): method resolve_app_id_to_name (line 162) | def resolve_app_id_to_name(self, domain, app_id): function run_query_over_domains (line 170) | def run_query_over_domains(query_factory, domains, limit=None, last_doma... function run_query_over_domain (line 186) | def run_query_over_domain(query_factory, domain, limit=None, **kwargs): class ReportQueryFactoryInterface (line 209) | class ReportQueryFactoryInterface(ABC): method get_query (line 214) | def get_query(self, **kwargs): method get_next_query_args (line 221) | def get_next_query_args(self, previous_args, last_hit): class MobileFormSubmissionsQueryFactory (line 229) | class MobileFormSubmissionsQueryFactory(ReportQueryFactoryInterface): method get_query (line 230) | def get_query(self, domain, start_date, end_date, last_time=None, last... method get_next_query_args (line 262) | def get_next_query_args(self, previous_args, last_hit): FILE: corehq/apps/enterprise/management/commands/report_on_enterprise_domain.py class Command (line 18) | class Command(BaseCommand): method add_arguments (line 27) | def add_arguments(self, parser): method _write_file (line 45) | def _write_file(self, slug): method handle (line 65) | def handle(self, account_id, username, **kwargs): FILE: corehq/apps/enterprise/migrations/0001_initial.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/enterprise/migrations/0002_enterprisepermissions_account_unique.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/enterprise/migrations/0003_enterprisepermissions_modify_account.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/enterprise/migrations/0004_enterprisemobileworkersettings.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/enterprise/mixins.py class ManageMobileWorkersMixin (line 21) | class ManageMobileWorkersMixin: method page_context (line 24) | def page_context(self): method account (line 32) | def account(self): method edit_emw_settings_form (line 37) | def edit_emw_settings_form(self): method post (line 49) | def post(self, request, *args, **kwargs): FILE: corehq/apps/enterprise/models.py class EnterprisePermissions (line 14) | class EnterprisePermissions(models.Model): method get_by_domain (line 31) | def get_by_domain(cls, domain): method get_source_domain (line 45) | def get_source_domain(cls, domain): method get_domains (line 57) | def get_domains(cls, source_domain): method is_source_domain (line 69) | def is_source_domain(cls, domain): method save (line 79) | def save(self, *args, **kwargs): class EnterpriseMobileWorkerSettings (line 92) | class EnterpriseMobileWorkerSettings(models.Model): method deactivate_mobile_workers_by_inactivity (line 102) | def deactivate_mobile_workers_by_inactivity(self, domain): method is_domain_using_custom_deactivation (line 130) | def is_domain_using_custom_deactivation(cls, domain): method clear_domain_caches (line 143) | def clear_domain_caches(cls, domain): FILE: corehq/apps/enterprise/static/enterprise/js/project_dashboard.js constant PRESET_LAST_30 (line 13) | const PRESET_LAST_30 = "last_30"; constant PRESET_PREV_MONTH (line 14) | const PRESET_PREV_MONTH = "prev_month"; constant PRESET_CUSTOM (line 15) | const PRESET_CUSTOM = "custom"; function localizeNumberlikeString (line 202) | function localizeNumberlikeString(input) { function updateDisplayTotal (line 216) | function updateDisplayTotal($element, kwargs) { FILE: corehq/apps/enterprise/tasks.py function email_enterprise_report (line 28) | def email_enterprise_report(domain: str, slug, couch_user, **kwargs): function clear_enterprise_permissions_cache_for_all_users (line 74) | def clear_enterprise_permissions_cache_for_all_users(config_id, domain=N... function auto_deactivate_mobile_workers (line 89) | def auto_deactivate_mobile_workers(): function generate_enterprise_report (line 111) | def generate_enterprise_report(slug, billing_account_id, username, **kwa... class TaskProgress (line 119) | class TaskProgress: method __init__ (line 134) | def __init__(self, key, query_id=None): method get_status (line 139) | def get_status(self): method start_task (line 149) | def start_task(self, task): method is_managing_task (line 159) | def is_managing_task(self, task): method complete_task (line 162) | def complete_task(self, data): method get_data (line 180) | def get_data(self): method get_query_id (line 193) | def get_query_id(self): method clear_status (line 204) | def clear_status(self): method get_task (line 207) | def get_task(self): class ReportTaskProgress (line 219) | class ReportTaskProgress(TaskProgress): method __init__ (line 220) | def __init__(self, slug, username, query_id=None): FILE: corehq/apps/enterprise/tests/api/test_resources.py class EnterpriseODataAuthenticationTests (line 48) | class EnterpriseODataAuthenticationTests(TestCase): method setUp (line 49) | def setUp(self): method setUpClass (line 56) | def setUpClass(cls): method test_successful_authentication (line 63) | def test_successful_authentication(self): method test_parent_failure_returns_parent_results (line 69) | def test_parent_failure_returns_parent_results(self): method test_raises_exception_when_billing_account_does_not_exist (line 77) | def test_raises_exception_when_billing_account_does_not_exist(self): method test_raises_exception_when_not_an_enterprise_admin (line 84) | def test_raises_exception_when_not_an_enterprise_admin(self): method _create_enterprise_account_covering_domains (line 95) | def _create_enterprise_account_covering_domains(cls, domains): method _create_user (line 121) | def _create_user(cls, username): method _create_request (line 124) | def _create_request(self, user, domain): class TestDomainResourceMapping (line 131) | class TestDomainResourceMapping(SimpleTestCase): method test_headers (line 132) | def test_headers(self): class TestWebUserResourceMapping (line 151) | class TestWebUserResourceMapping(SimpleTestCase): method test_headers (line 152) | def test_headers(self): class TestMobileUserResourceMapping (line 171) | class TestMobileUserResourceMapping(SimpleTestCase): method test_headers (line 172) | def test_headers(self): class TestSMSResourceMapping (line 193) | class TestSMSResourceMapping(SimpleTestCase): method test_headers (line 194) | def test_headers(self): class TestODataFeedResourceMapping (line 208) | class TestODataFeedResourceMapping(SimpleTestCase): method test_headers (line 209) | def test_headers(self): class TestCaseManagementResourceMapping (line 223) | class TestCaseManagementResourceMapping(SimpleTestCase): method test_headers (line 224) | def test_headers(self): class TestDataExportResourceMapping (line 240) | class TestDataExportResourceMapping(SimpleTestCase): method test_headers (line 241) | def test_headers(self): class TestTwoFactorAuthResourceMapping (line 257) | class TestTwoFactorAuthResourceMapping(SimpleTestCase): method test_headers (line 258) | def test_headers(self): class TestCommCareVersionComplianceResourceMapping (line 270) | class TestCommCareVersionComplianceResourceMapping(SimpleTestCase): method test_headers (line 271) | def test_headers(self): class TestAPIKeysResourceMapping (line 286) | class TestAPIKeysResourceMapping(SimpleTestCase): method test_headers (line 287) | def test_headers(self): class TestDataForwardingResourceMapping (line 304) | class TestDataForwardingResourceMapping(SimpleTestCase): method test_headers (line 305) | def test_headers(self): class TestApplicationVersionComplianceResourceMapping (line 320) | class TestApplicationVersionComplianceResourceMapping(SimpleTestCase): method test_headers (line 321) | def test_headers(self): FILE: corehq/apps/enterprise/tests/test_apis.py class FormSubmissionResourceTests (line 27) | class FormSubmissionResourceTests(TestCase): method test_resource_is_accessible (line 28) | def test_resource_is_accessible(self): method _create_form (line 59) | def _create_form(self, user, form_id=None, received_on=None): method _create_enterprise_account_covering_domains (line 77) | def _create_enterprise_account_covering_domains(self, domains): method _create_enterprise_admin (line 103) | def _create_enterprise_admin(self, email, domain, enterprise_account): method _create_mobile_user (line 121) | def _create_mobile_user(self, username, domain): method _create_api_request (line 126) | def _create_api_request(self, user, domain, api_key, data=None): FILE: corehq/apps/enterprise/tests/test_decorators.py class TestRequireEnterpriseAdminDecorator (line 13) | class TestRequireEnterpriseAdminDecorator(TestCase): method setUpClass (line 16) | def setUpClass(cls): method setUp (line 38) | def setUp(self): method test_request_succeeds_for_enterprise_admin (line 44) | def test_request_succeeds_for_enterprise_admin(self): method test_request_fails_for_unauthorized_user (line 52) | def test_request_fails_for_unauthorized_user(self): method tearDownClass (line 59) | def tearDownClass(cls): FILE: corehq/apps/enterprise/tests/test_enterprise.py class EnterpriseODataReportTests (line 18) | class EnterpriseODataReportTests(SimpleTestCase): method test_headers (line 19) | def test_headers(self): method test_total_number_display_odata_reports_across_enterprise (line 25) | def test_total_number_display_odata_reports_across_enterprise(self): method test_full_report_for_single_domain (line 41) | def test_full_report_for_single_domain(self): method test_full_report_for_multiple_domains (line 54) | def test_full_report_for_multiple_domains(self): method test_report_includes_error_when_too_many_exports (line 69) | def test_report_includes_error_when_too_many_exports(self, mock_export... method test_no_exports_for_domain_includes_no_rows (line 80) | def test_no_exports_for_domain_includes_no_rows(self, mock_export_count): method setUp (line 91) | def setUp(self): method _create_export (line 115) | def _create_export(self, name='TestExport', domain='TestDomain', row_c... method _create_domain (line 121) | def _create_domain(self, name='TestDomain', max_exports=10): method _create_report_for_domains (line 124) | def _create_report_for_domains(self, *domains): class EnterpriseFormReportTests (line 131) | class EnterpriseFormReportTests(SimpleTestCase): method setUp (line 132) | def setUp(self): method test_constructor_with_no_datespan_defaults_to_last_30_days (line 137) | def test_constructor_with_no_datespan_defaults_to_last_30_days(self): method test_constructor_with_provided_dates_uses_that_datespan (line 143) | def test_constructor_with_provided_dates_uses_that_datespan(self): method test_constructor_with_only_end_date_uses_default_num_days (line 151) | def test_constructor_with_only_end_date_uses_default_num_days(self): method test_constructor_with_only_end_date_uses_num_days (line 158) | def test_constructor_with_only_end_date_uses_num_days(self): method test_specifying_timespan_greater_than_90_days_throws_error (line 165) | def test_specifying_timespan_greater_than_90_days_throws_error(self): method test_specifying_timespans_up_to_90_days_works (line 170) | def test_specifying_timespans_up_to_90_days_works(self): FILE: corehq/apps/enterprise/tests/test_enterprise_mobile_worker_settings.py class TestEnterpriseMobileWorkerSettings (line 25) | class TestEnterpriseMobileWorkerSettings(TestCase): method setUpClass (line 28) | def setUpClass(cls): method tearDownClass (line 177) | def tearDownClass(cls): method test_mobile_workers_are_deactivated (line 185) | def test_mobile_workers_are_deactivated(self): class TestEnterpriseMobileWorkerSettingsCustomDeactivation (line 221) | class TestEnterpriseMobileWorkerSettingsCustomDeactivation(TestCase): method setUpClass (line 224) | def setUpClass(cls): method tearDownClass (line 283) | def tearDownClass(cls): method tearDown (line 290) | def tearDown(self): method test_domain_is_enabled (line 296) | def test_domain_is_enabled(self): method test_domain_is_disabled_by_toggle (line 301) | def test_domain_is_disabled_by_toggle(self): method test_domain_has_setting_disabled (line 306) | def test_domain_has_setting_disabled(self): method test_domain_has_no_settings_created (line 311) | def test_domain_has_no_settings_created(self): method _cleanup_cache_test (line 316) | def _cleanup_cache_test(self): method test_cache_clearing (line 320) | def test_cache_clearing(self): FILE: corehq/apps/enterprise/tests/test_enterprise_tasks.py class TestEmailEnterpriseReport (line 14) | class TestEmailEnterpriseReport(TestCase): method setUpClass (line 17) | def setUpClass(cls): method tearDownClass (line 27) | def tearDownClass(cls): method test_email_report_domains_successful (line 34) | def test_email_report_domains_successful(self, mock_send): method test_email_report_web_users (line 51) | def test_email_report_web_users(self, mock_send): method test_email_report_mobile_users (line 68) | def test_email_report_mobile_users(self, mock_send): method test_email_report_form_submissions (line 85) | def test_email_report_form_submissions(self, mock_send): method test_email_report_unknown_type_fails (line 101) | def test_email_report_unknown_type_fails(self): FILE: corehq/apps/enterprise/tests/test_forms.py class EnterpriseManageMobileWorkersFormTest (line 18) | class EnterpriseManageMobileWorkersFormTest(TestCase): method setUpClass (line 21) | def setUpClass(cls): method tearDown (line 49) | def tearDown(self): method test_update_settings_auto_deactivation (line 57) | def test_update_settings_auto_deactivation(self): method test_update_settings_custom_deactivation (line 77) | def test_update_settings_custom_deactivation(self): method test_update_settings_clears_cache (line 98) | def test_update_settings_clears_cache(self, clear_domain_caches): FILE: corehq/apps/enterprise/tests/test_interface.py class TestEnterpriseSMSBillablesReport (line 19) | class TestEnterpriseSMSBillablesReport(TestCase): method test_headers (line 21) | def test_headers(self): method test_sms_billables_sent_between (line 28) | def test_sms_billables_sent_between(self): method test_sms_billables_date_created (line 42) | def test_sms_billables_date_created(self): method test_sms_billables_has_gateway_fee (line 59) | def test_sms_billables_has_gateway_fee(self): method test_sms_billables_not_has_gateway_fee (line 75) | def test_sms_billables_not_has_gateway_fee(self): method test_sms_billables_random_filters (line 91) | def test_sms_billables_random_filters(self): method setUpClass (line 114) | def setUpClass(cls): method tearDownClass (line 147) | def tearDownClass(cls): method setUp (line 153) | def setUp(self): method tearDown (line 157) | def tearDown(self): method create_interface (line 168) | def create_interface( method create_smsbillable (line 198) | def create_smsbillable(self, date, show_billable=True, gateway_fee=None): method create_fake_sms (line 221) | def create_fake_sms(self, backend_api_id, backend_couch_id, text, date): FILE: corehq/apps/enterprise/tests/test_iterators.py class TestRaiseAfterMaxElements (line 18) | class TestRaiseAfterMaxElements(SimpleTestCase): method test_iterating_beyond_max_items_will_raise_the_default_exception (line 19) | def test_iterating_beyond_max_items_will_raise_the_default_exception(s... method test_iterating_beyond_max_items_will_raise_provided_exception (line 24) | def test_iterating_beyond_max_items_will_raise_provided_exception(self): method test_can_iterate_through_all_elements_with_no_exception (line 29) | def test_can_iterate_through_all_elements_with_no_exception(self): class TestLoopOverDomains (line 35) | class TestLoopOverDomains(TestCase): method setUp (line 36) | def setUp(self): method test_iterates_through_multiple_domains (line 44) | def test_iterates_through_multiple_domains(self): method test_respects_limit_across_multiple_domains (line 62) | def test_respects_limit_across_multiple_domains(self): method _create_form (line 82) | def _create_form(self, domain, form_id=None, received_on=None): class TestLoopOverDomain (line 100) | class TestLoopOverDomain(TestCase): method setUp (line 101) | def setUp(self): method test_iterates_through_all_forms_in_domain (line 109) | def test_iterates_through_all_forms_in_domain(self): method test_handles_empty_domain (line 125) | def test_handles_empty_domain(self): method test_includes_inclusive_boundaries (line 135) | def test_includes_inclusive_boundaries(self): method test_ignores_form_in_another_domain (line 150) | def test_ignores_form_in_another_domain(self): method test_sorts_by_date_then_id (line 165) | def test_sorts_by_date_then_id(self): method test_does_not_return_forms_beyond_limit (line 180) | def test_does_not_return_forms_beyond_limit(self): method _create_form (line 196) | def _create_form(self, domain, form_id=None, received_on=None): function map_received_on_to_inserted_at (line 213) | def map_received_on_to_inserted_at(): class TestEnterpriseFormReportConverter (line 229) | class TestEnterpriseFormReportConverter(SimpleTestCase): method test_is_initial_query_is_true_when_no_progress_parameters (line 230) | def test_is_initial_query_is_true_when_no_progress_parameters(self): method test_is_initial_query_is_false_if_domain_progress (line 234) | def test_is_initial_query_is_false_if_domain_progress(self): method test_is_initial_query_is_false_if_inserted_at_progress (line 240) | def test_is_initial_query_is_false_if_inserted_at_progress(self): method test_is_initial_query_is_false_if_id_progress (line 246) | def test_is_initial_query_is_false_if_id_progress(self): FILE: corehq/apps/enterprise/tests/test_permissions.py class EnterprisePermissionsTest (line 21) | class EnterprisePermissionsTest(TestCase): method setUpClass (line 23) | def setUpClass(cls): method setUp (line 53) | def setUp(self): method tearDownClass (line 62) | def tearDownClass(cls): method test_get_by_domain (line 72) | def test_get_by_domain(self): method test_get_source_domain (line 87) | def test_get_source_domain(self): method test_get_domains (line 92) | def test_get_domains(self): method test_is_source_domain (line 97) | def test_is_source_domain(self): method test_permission_mirroring (line 102) | def test_permission_mirroring(self): method test_api_call (line 123) | def test_api_call(self): FILE: corehq/apps/enterprise/tests/test_tasks.py class TestAutoDeactivateMobileWorkersTask (line 18) | class TestAutoDeactivateMobileWorkersTask(TestCase): method setUpClass (line 21) | def setUpClass(cls): method tearDownClass (line 96) | def tearDownClass(cls): method test_auto_deactivate_mobile_workers_task (line 108) | def test_auto_deactivate_mobile_workers_task( FILE: corehq/apps/enterprise/tests/test_views.py class EnterpriseDashboardDownloadTests (line 18) | class EnterpriseDashboardDownloadTests(SimpleTestCase): method test_bom_is_inserted_at_start_of_file (line 19) | def test_bom_is_inserted_at_start_of_file(self): method test_mimetype_is_set_to_csv (line 26) | def test_mimetype_is_set_to_csv(self): method test_filename_is_set_correctly (line 32) | def test_filename_is_set_correctly(self): method setUpClass (line 41) | def setUpClass(cls): method setUp (line 46) | def setUp(self): method _patch_decorators (line 56) | def _patch_decorators(cls): class EnterpriseDashboardEmailTests (line 68) | class EnterpriseDashboardEmailTests(TestCase): method test_custom_date_range_is_not_required (line 69) | def test_custom_date_range_is_not_required(self): method test_custom_date_range_is_sent_to_celery (line 80) | def test_custom_date_range_is_sent_to_celery(self): method setUpClass (line 95) | def setUpClass(cls): method _patch_decorators (line 101) | def _patch_decorators(cls): FILE: corehq/apps/enterprise/tests/utils.py function create_enterprise_permissions (line 22) | def create_enterprise_permissions(email, source_domain, domains=None, ot... function get_enterprise_account (line 60) | def get_enterprise_account(): function get_enterprise_software_plan (line 69) | def get_enterprise_software_plan(): function add_domains_to_enterprise_account (line 89) | def add_domains_to_enterprise_account(account, domains, plan_version, da... FILE: corehq/apps/enterprise/views.py function platform_overview (line 76) | def platform_overview(request, domain): function security_center (line 123) | def security_center(request, domain): function enterprise_dashboard_total (line 155) | def enterprise_dashboard_total(request, domain, slug): function enterprise_dashboard_download (line 172) | def enterprise_dashboard_download(request, domain, slug, export_hash): function _get_export_content (line 192) | def _get_export_content(export_hash): function _get_export_filename (line 197) | def _get_export_filename(request, slug): function enterprise_dashboard_email (line 204) | def enterprise_dashboard_email(request, domain, slug): function get_date_range_kwargs (line 229) | def get_date_range_kwargs(request): function enterprise_settings (line 243) | def enterprise_settings(request, domain): function edit_enterprise_settings (line 275) | def edit_enterprise_settings(request, domain): class BaseEnterpriseAdminView (line 291) | class BaseEnterpriseAdminView(BaseDomainView): method section_url (line 295) | def section_url(self): method page_url (line 299) | def page_url(self): class EnterpriseBillingStatementsView (line 304) | class EnterpriseBillingStatementsView(DomainAccountingSettings, CRUDPagi... method stripe_cards (line 314) | def stripe_cards(self): method show_hidden (line 318) | def show_hidden(self): method show_unpaid (line 324) | def show_unpaid(self): method invoices (line 331) | def invoices(self): method total (line 340) | def total(self): method paginated_invoices (line 345) | def paginated_invoices(self): method total_balance (line 349) | def total_balance(self): method column_names (line 363) | def column_names(self): method page_context (line 373) | def page_context(self): method can_pay_by_wire (line 402) | def can_pay_by_wire(self): method can_pay_invoices (line 409) | def can_pay_invoices(self): method paginated_list (line 413) | def paginated_list(self): method refresh_item (line 461) | def refresh_item(self, item_id): method post (line 464) | def post(self, *args, **kwargs): function enterprise_permissions (line 476) | def enterprise_permissions(request, domain): function disable_enterprise_permissions (line 506) | def disable_enterprise_permissions(request, domain): function add_enterprise_permissions_domain (line 521) | def add_enterprise_permissions_domain(request, domain, target_domain): function remove_enterprise_permissions_domain (line 543) | def remove_enterprise_permissions_domain(request, domain, target_domain): function update_enterprise_permissions_source_domain (line 563) | def update_enterprise_permissions_source_domain(request, domain): class ManageEnterpriseMobileWorkersView (line 585) | class ManageEnterpriseMobileWorkersView(ManageMobileWorkersMixin, BaseEn... FILE: corehq/apps/es/__init__.py function canonical_name_adapter_map (line 52) | def canonical_name_adapter_map(): FILE: corehq/apps/es/aggregations.py class AggregationResult (line 47) | class AggregationResult(object): method __init__ (line 49) | def __init__(self, raw, aggregation): class Aggregation (line 56) | class Aggregation(object): method __init__ (line 63) | def __init__(self): method aggregation (line 66) | def aggregation(self, aggregation): method assemble (line 73) | def assemble(self): method parse_result (line 86) | def parse_result(self, result): class BucketResult (line 90) | class BucketResult(AggregationResult): method keys (line 93) | def keys(self): method buckets (line 97) | def buckets(self): method buckets_dict (line 103) | def buckets_dict(self): method buckets_list (line 107) | def buckets_list(self): method raw_buckets (line 111) | def raw_buckets(self): method normalized_buckets (line 115) | def normalized_buckets(self): method counts_by_bucket (line 118) | def counts_by_bucket(self): class MissingResult (line 122) | class MissingResult(AggregationResult): method bucket (line 125) | def bucket(self): class TopHitsResult (line 129) | class TopHitsResult(AggregationResult): method raw_hits (line 132) | def raw_hits(self): method doc_ids (line 136) | def doc_ids(self): method hits (line 141) | def hits(self): method total (line 146) | def total(self): class StatsResult (line 151) | class StatsResult(AggregationResult): method count (line 154) | def count(self): method max (line 158) | def max(self): method min (line 162) | def min(self): method avg (line 166) | def avg(self): class ExtendedStatsResult (line 170) | class ExtendedStatsResult(StatsResult): method std_dev (line 173) | def std_dev(self): class Bucket (line 177) | class Bucket(object): method __init__ (line 179) | def __init__(self, result, aggregations): method key (line 184) | def key(self): method doc_count (line 188) | def doc_count(self): method __getattr__ (line 191) | def __getattr__(self, attr): method __repr__ (line 196) | def __repr__(self): class TermsAggregation (line 200) | class TermsAggregation(Aggregation): method __init__ (line 215) | def __init__(self, name, field, size=None, missing=None): method order (line 227) | def order(self, field, order="asc", reset=True): method size (line 240) | def size(self, size): class SumResult (line 247) | class SumResult(AggregationResult): method value (line 250) | def value(self): class SumAggregation (line 254) | class SumAggregation(Aggregation): method __init__ (line 264) | def __init__(self, name, field): class MinAggregation (line 273) | class MinAggregation(SumAggregation): class MaxAggregation (line 283) | class MaxAggregation(SumAggregation): class AvgAggregation (line 287) | class AvgAggregation(SumAggregation): class ValueCountAggregation (line 291) | class ValueCountAggregation(SumAggregation): class CardinalityAggregation (line 295) | class CardinalityAggregation(SumAggregation): class MissingAggregation (line 299) | class MissingAggregation(Aggregation): method __init__ (line 311) | def __init__(self, name, field): class StatsAggregation (line 318) | class StatsAggregation(Aggregation): method __init__ (line 329) | def __init__(self, name, field, script=None): class ExtendedStatsAggregation (line 338) | class ExtendedStatsAggregation(StatsAggregation): class TopHitsAggregation (line 346) | class TopHitsAggregation(Aggregation): method __init__ (line 362) | def __init__(self, name, field=None, is_ascending=True, size=1, includ... class FilterResult (line 379) | class FilterResult(AggregationResult): method __getattr__ (line 381) | def __getattr__(self, attr): method doc_count (line 387) | def doc_count(self): class FilterAggregation (line 391) | class FilterAggregation(Aggregation): method __init__ (line 401) | def __init__(self, name, filter): class FiltersAggregation (line 406) | class FiltersAggregation(Aggregation): method __init__ (line 416) | def __init__(self, name, filters=None): method add_filter (line 420) | def add_filter(self, name, filter): class AggregationRange (line 429) | class AggregationRange(namedtuple('AggregationRange', 'start end key')): method __new__ (line 438) | def __new__(cls, start=None, end=None, key=None): method assemble (line 442) | def assemble(self): class RangeResult (line 455) | class RangeResult(BucketResult): method normalized_buckets (line 458) | def normalized_buckets(self): class RangeAggregation (line 474) | class RangeAggregation(Aggregation): method __init__ (line 486) | def __init__(self, name, field, ranges=None, keyed=True): method add_range (line 498) | def add_range(self, range_): class DateHistogramResult (line 509) | class DateHistogramResult(BucketResult): method normalized_buckets (line 512) | def normalized_buckets(self): class DateHistogram (line 522) | class DateHistogram(Aggregation): class Interval (line 535) | class Interval: method __init__ (line 542) | def __init__(self, name, datefield, interval, timezone=None): class GeohashGridAggregation (line 555) | class GeohashGridAggregation(Aggregation): method __init__ (line 565) | def __init__(self, name, field, precision): class GeoBoundsAggregation (line 589) | class GeoBoundsAggregation(Aggregation): method __init__ (line 598) | def __init__(self, name, field): class NestedAggregation (line 605) | class NestedAggregation(Aggregation): method __init__ (line 614) | def __init__(self, name, path): class NestedTermAggregationsHelper (line 624) | class NestedTermAggregationsHelper(object): method __init__ (line 649) | def __init__(self, base_query, terms): method query (line 654) | def query(self): method get_data (line 665) | def get_data(self): method _format_counts (line 678) | def _format_counts(self, counts): FILE: corehq/apps/es/app_config.py class ElasticAppConfig (line 4) | class ElasticAppConfig(AppConfig): method ready (line 8) | def ready(self): FILE: corehq/apps/es/apps.py class AppES (line 20) | class AppES(HQESQuery): method builtin_filters (line 24) | def builtin_filters(self): class ElasticApp (line 35) | class ElasticApp(ElasticDocumentAdapter): method mapping (line 41) | def mapping(self): method model_cls (line 46) | def model_cls(self): method _from_dict (line 50) | def _from_dict(self, app_dict): function build_comment (line 63) | def build_comment(comment): function version (line 67) | def version(version): function is_build (line 71) | def is_build(build=True): function is_released (line 78) | def is_released(released=True): function created_from_template (line 82) | def created_from_template(from_template=True): function uses_case_sharing (line 89) | def uses_case_sharing(case_sharing=True): function cloudcare_enabled (line 93) | def cloudcare_enabled(cloudcare_enabled): function app_id (line 97) | def app_id(app_id): FILE: corehq/apps/es/case_search.py class CaseSearchES (line 55) | class CaseSearchES(CaseES): method builtin_filters (line 59) | def builtin_filters(self): method case_property_query (line 71) | def case_property_query(self, case_property_name, value, clause=querie... method xpath_query (line 87) | def xpath_query(self, domain, xpath, fuzzy=False): method get_child_cases (line 104) | def get_child_cases(self, case_ids, identifier): method sort_by_case_property (line 115) | def sort_by_case_property(self, case_property_name, desc=False, sort_t... class ElasticCaseSearch (line 145) | class ElasticCaseSearch(ElasticDocumentAdapter): method mapping (line 152) | def mapping(self): method model_cls (line 157) | def model_cls(self): method _from_dict (line 161) | def _from_dict(self, case): method _get_domain_from_doc (line 181) | def _get_domain_from_doc(self, doc): method index (line 191) | def index(self, doc, refresh=False): method bulk (line 204) | def bulk(self, actions, refresh=False, raise_errors=True): function multiplex_to_adapter (line 225) | def multiplex_to_adapter(domain): function case_property_query (line 237) | def case_property_query(case_property_name, value, fuzzy=False, multival... function exact_case_property_text_query (line 272) | def exact_case_property_text_query(case_property_name, value): function case_property_text_query (line 291) | def case_property_text_query(case_property_name, value, operator=None): function sounds_like_text_query (line 305) | def sounds_like_text_query(case_property_name, value): function case_property_starts_with (line 312) | def case_property_starts_with(case_property_name, value): function case_property_numeric_range (line 326) | def case_property_numeric_range(case_property_name, gt=None, gte=None, l... function case_property_date_range (line 334) | def case_property_date_range(case_property_name, gt=None, gte=None, lt=N... function reverse_index_case_query (line 342) | def reverse_index_case_query(case_ids, identifier=None): function _case_property_not_set (line 369) | def _case_property_not_set(case_property_name): function case_property_missing (line 378) | def case_property_missing(case_property_name): function case_property_geo_distance (line 386) | def case_property_geo_distance(geopoint_property_name, geopoint, **kwargs): function _base_property_query (line 393) | def _base_property_query(case_property_name, query): function blacklist_owner_id (line 403) | def blacklist_owner_id(owner_id): function external_id (line 407) | def external_id(external_id): function indexed_on (line 411) | def indexed_on(gt=None, gte=None, lt=None, lte=None): function get_case_property_unique_values (line 415) | def get_case_property_unique_values(domain, case_type, property_name, in... function wrap_case_search_hit (line 460) | def wrap_case_search_hit(hit, include_score=False): function _case_fields (line 509) | def _case_fields(): FILE: corehq/apps/es/case_search_sub.py class _SubElasticCaseSearch (line 36) | class _SubElasticCaseSearch(ElasticCaseSearch): method index (line 41) | def index(self, doc, refresh=False): class CaseSearchBhaES (line 53) | class CaseSearchBhaES(CaseSearchES): class ElasticCaseSearchBha (line 57) | class ElasticCaseSearchBha(_SubElasticCaseSearch): class CaseSearchCCPerfES (line 71) | class CaseSearchCCPerfES(CaseSearchES): class ElasticCaseSearchCCPerf (line 75) | class ElasticCaseSearchCCPerf(_SubElasticCaseSearch): FILE: corehq/apps/es/cases.py class CaseES (line 33) | class CaseES(HQESQuery): method builtin_filters (line 37) | def builtin_filters(self): class ElasticCase (line 56) | class ElasticCase(ElasticDocumentAdapter): method mapping (line 62) | def mapping(self): method model_cls (line 67) | def model_cls(self): method _from_dict (line 71) | def _from_dict(self, case): function opened_range (line 100) | def opened_range(gt=None, gte=None, lt=None, lte=None): function closed_range (line 104) | def closed_range(gt=None, gte=None, lt=None, lte=None): function modified_range (line 108) | def modified_range(gt=None, gte=None, lt=None, lte=None): function server_modified_range (line 112) | def server_modified_range(gt=None, gte=None, lt=None, lte=None): function case_name (line 116) | def case_name(name): function is_closed (line 120) | def is_closed(closed=True): function case_type (line 124) | def case_type(type_): function owner (line 128) | def owner(owner_id): function owner_type (line 132) | def owner_type(owner_type): function user (line 136) | def user(user_id): function opened_by (line 140) | def opened_by(user_id): function case_ids (line 144) | def case_ids(case_ids): function active_in_range (line 148) | def active_in_range(gt=None, gte=None, lt=None, lte=None): function user_ids_handle_unknown (line 156) | def user_ids_handle_unknown(user_ids): function touched_total_aggregation (line 173) | def touched_total_aggregation(gt=None, gte=None, lt=None, lte=None): function open_case_aggregation (line 182) | def open_case_aggregation(name='open_case', gt=None, gte=None, lt=None, ... FILE: corehq/apps/es/client.py class BaseAdapter (line 47) | class BaseAdapter: method __init__ (line 50) | def __init__(self): method info (line 53) | def info(self): method ping (line 60) | def ping(self): method elastic_major_version (line 68) | def elastic_major_version(self): method elastic_version (line 72) | def elastic_version(self): class ElasticManageAdapter (line 83) | class ElasticManageAdapter(BaseAdapter): method index_exists (line 85) | def index_exists(self, index): method get_indices (line 100) | def get_indices(self): method get_aliases (line 107) | def get_aliases(self): method cluster_health (line 119) | def cluster_health(self, index=None): method cluster_routing (line 125) | def cluster_routing(self, *, enabled): method _cluster_put_settings (line 133) | def _cluster_put_settings(self, settings, transient=True, is_flat=True): method get_node_info (line 137) | def get_node_info(self, node_id, metric): method get_task (line 146) | def get_task(self, task_id): method cancel_task (line 162) | def cancel_task(self, task_id): method _parse_task_result (line 174) | def _parse_task_result(result, *, _return_one=True): method index_create (line 209) | def index_create(self, index, metadata=None): method index_delete (line 218) | def index_delete(self, index): method index_refresh (line 226) | def index_refresh(self, index): method indices_refresh (line 230) | def indices_refresh(self, indices): method indices_info (line 241) | def indices_info(self): method index_flush (line 260) | def index_flush(self, index): method index_close (line 268) | def index_close(self, index): method index_put_alias (line 276) | def index_put_alias(self, index, name): method index_set_replicas (line 296) | def index_set_replicas(self, index, replicas): method index_configure_for_reindex (line 306) | def index_configure_for_reindex(self, index): method index_configure_for_standard_ops (line 314) | def index_configure_for_standard_ops(self, index): method index_configure_slow_logs (line 322) | def index_configure_slow_logs(self, index): method _index_put_settings (line 329) | def _index_put_settings(self, index, settings): method index_put_mapping (line 336) | def index_put_mapping(self, index, type_, mapping): method index_get_mapping (line 347) | def index_get_mapping(self, index, type_): method index_get_settings (line 362) | def index_get_settings(self, index, values=None): method index_validate_query (line 382) | def index_validate_query(self, index, query, params={}): method _validate_single_index (line 388) | def _validate_single_index(index): method reindex (line 409) | def reindex( class ElasticDocumentAdapter (line 495) | class ElasticDocumentAdapter(BaseAdapter): method __init__ (line 518) | def __init__(self, index_name, type_): method export_adapter (line 528) | def export_adapter(self): method from_python (line 537) | def from_python(self, doc): method _from_dict (line 553) | def _from_dict(self, model_dict): method to_json (line 560) | def to_json(self, doc): method exists (line 575) | def exists(self, doc_id): method get (line 586) | def get(self, doc_id, source_includes=None): method count (line 603) | def count(self, query): method _prepare_count_query (line 612) | def _prepare_count_query(self, query): method get_docs (line 622) | def get_docs(self, doc_ids): method iter_docs (line 643) | def iter_docs(self, doc_ids, chunk_size=100): method _mget (line 654) | def _mget(self, query): method search (line 661) | def search(self, query, **kw): method _search (line 680) | def _search(self, query, **kw): method scroll (line 701) | def scroll(self, query, scroll=SCROLL_KEEPALIVE, size=None): method _scroll (line 723) | def _scroll(self, query, scroll, size): method index (line 790) | def index(self, doc, refresh=False): method _index (line 805) | def _index(self, doc_id, source, refresh): method update (line 810) | def update(self, doc_id, fields, return_doc=False, refresh=False, method _update (line 845) | def _update(self, doc_id, fields, return_doc, _upsert, **kw): method delete (line 862) | def delete(self, doc_id, refresh=False): method _refresh_value (line 876) | def _refresh_value(refresh): method bulk (line 888) | def bulk(self, actions, refresh=False, raise_errors=True): method _bulk (line 905) | def _bulk(self, payload, refresh, raise_errors): method bulk_index (line 915) | def bulk_index(self, docs, **bulk_kw): method bulk_delete (line 926) | def bulk_delete(self, doc_ids, **bulk_kw): method _render_bulk_action (line 937) | def _render_bulk_action(self, action, *, forbid_tombstones=True): method _verify_doc_id (line 968) | def _verify_doc_id(doc_id): method _verify_doc_source (line 979) | def _verify_doc_source(source, *, forbid_tombstones=True): method _fix_hit (line 994) | def _fix_hit(hit): method _fix_hits_in_result (line 1004) | def _fix_hits_in_result(self, result): method _report_and_fail_on_shard_failures (line 1020) | def _report_and_fail_on_shard_failures(result, tags): method delete_tombstones (line 1039) | def delete_tombstones(self): method _get_tombstone_ids (line 1050) | def _get_tombstone_ids(self): method __repr__ (line 1058) | def __repr__(self): class BulkActionItem (line 1062) | class BulkActionItem: method __init__ (line 1073) | def __init__(self, op_type, doc=None, doc_id=None): method delete (line 1087) | def delete(cls, doc): method delete_id (line 1092) | def delete_id(cls, doc_id): method index (line 1097) | def index(cls, doc): method is_delete (line 1102) | def is_delete(self): method is_index (line 1107) | def is_index(self): method __eq__ (line 1111) | def __eq__(self, other): method __repr__ (line 1116) | def __repr__(self): class ElasticMultiplexAdapter (line 1124) | class ElasticMultiplexAdapter(BaseAdapter): method __init__ (line 1126) | def __init__(self, primary_adapter, secondary_adapter): method mapping (line 1137) | def mapping(self): method parent_index_cname (line 1141) | def parent_index_cname(self): method export_adapter (line 1144) | def export_adapter(self): method from_python (line 1149) | def from_python(self, doc): method analysis (line 1157) | def analysis(self): method settings_key (line 1161) | def settings_key(self): method canonical_name (line 1165) | def canonical_name(self): method to_json (line 1168) | def to_json(self, doc): method count (line 1173) | def count(self, *args, **kw): method exists (line 1176) | def exists(self, *args, **kw): method get (line 1179) | def get(self, *args, **kw): method get_docs (line 1182) | def get_docs(self, *args, **kw): method iter_docs (line 1185) | def iter_docs(self, *args, **kw): method scroll (line 1188) | def scroll(self, *args, **kw): method search (line 1191) | def search(self, *args, **kw): method _get_case_search_sub_index_docs (line 1194) | def _get_case_search_sub_index_docs(self, action): method bulk (line 1201) | def bulk(self, actions, refresh=False, raise_errors=True): method _parse_bulk_error (line 1258) | def _parse_bulk_error(error): method _is_delete_not_found (line 1266) | def _is_delete_not_found(error): method _iter_pruned_actions (line 1269) | def _iter_pruned_actions(self, actions): method bulk_index (line 1320) | def bulk_index(self, docs, **bulk_kw): method bulk_delete (line 1323) | def bulk_delete(self, doc_ids, **bulk_kw): method delete (line 1326) | def delete(self, doc_id, refresh=False): method index (line 1337) | def index(self, doc, refresh=False): method update (line 1347) | def update(self, doc_id, fields, return_doc=False, refresh=False, class Tombstone (line 1361) | class Tombstone: method __init__ (line 1370) | def __init__(self, doc_id): method create_document (line 1374) | def create_document(cls): function get_client (line 1378) | def get_client(for_export=False): function _client_default (line 1391) | def _client_default(): function _client_for_export (line 1397) | def _client_for_export(): function _client (line 1408) | def _client(**override_kw): function _elastic_hosts (line 1419) | def _elastic_hosts(): function create_document_adapter (line 1435) | def create_document_adapter(cls, index_name, type_, *, secondary=None): FILE: corehq/apps/es/domains.py class DomainES (line 29) | class DomainES(HQESQuery): method only_snapshots (line 35) | def only_snapshots(self): method builtin_filters (line 41) | def builtin_filters(self): class ElasticDomain (line 56) | class ElasticDomain(ElasticDocumentAdapter): method mapping (line 63) | def mapping(self): method model_cls (line 68) | def model_cls(self): method _from_dict (line 72) | def _from_dict(self, domain_dict): function non_test_domains (line 99) | def non_test_domains(): function incomplete_domains (line 103) | def incomplete_domains(): function real_domains (line 112) | def real_domains(): function created (line 116) | def created(gt=None, gte=None, lt=None, lte=None): function last_modified (line 120) | def last_modified(gt=None, gte=None, lt=None, lte=None): function in_domains (line 124) | def in_domains(domains): function is_active (line 128) | def is_active(is_active=True): function is_active_project (line 132) | def is_active_project(is_active=True): function created_by_user (line 137) | def created_by_user(creating_user): function self_started (line 141) | def self_started(): FILE: corehq/apps/es/es_query.py class InvalidQueryError (line 104) | class InvalidQueryError(Exception): class ESQuery (line 108) | class ESQuery(object): method __init__ (line 139) | def __init__(self, index=None, for_export=False): method clone (line 154) | def clone(self): method builtin_filters (line 165) | def builtin_filters(self): method __getattr__ (line 188) | def __getattr__(self, attr): method __getitem__ (line 199) | def __getitem__(self, sliced_or_int): method run (line 208) | def run(self): method scroll (line 212) | def scroll(self): method _filters (line 231) | def _filters(self): method exclude_source (line 234) | def exclude_source(self): method filter (line 241) | def filter(self, filter): method filters (line 251) | def filters(self): method uses_aggregations (line 258) | def uses_aggregations(self): method aggregation (line 261) | def aggregation(self, aggregation): method aggregations (line 269) | def aggregations(self, aggregations): method terms_aggregation (line 274) | def terms_aggregation(self, term, name, size=None, sort_field=None, or... method _query (line 281) | def _query(self): method set_query (line 284) | def set_query(self, query): method enable_profiling (line 293) | def enable_profiling(self): method add_query (line 298) | def add_query(self, new_query, clause): method get_query (line 317) | def get_query(self): method search_string_query (line 320) | def search_string_query(self, search_string, default_fields): method fields (line 326) | def fields(self, fields): method source (line 335) | def source(self, include, exclude=None): method start (line 351) | def start(self, start): method size (line 357) | def size(self, size): method raw_query (line 367) | def raw_query(self): method _assemble (line 372) | def _assemble(self): method dumps (line 389) | def dumps(self, pretty=False): method pprint (line 394) | def pprint(self): method _sort (line 398) | def _sort(self, sort, reset_sort): method sort (line 409) | def sort(self, field, desc=False, reset_sort=True): method search_after (line 417) | def search_after(self, *sort_values): method nested_sort (line 422) | def nested_sort(self, path, field_name, nested_filter, desc=False, res... method set_sorting_block (line 435) | def set_sorting_block(self, sorting_block): method remove_default_filters (line 441) | def remove_default_filters(self): method remove_default_filter (line 447) | def remove_default_filter(self, default): method values (line 456) | def values(self, *fields): method values_list (line 463) | def values_list(self, *fields, **kwargs): method count (line 471) | def count(self): method exists (line 474) | def exists(self): method get_ids (line 483) | def get_ids(self): method scroll_ids (line 489) | def scroll_ids(self): method scroll_ids_to_disk_and_iter_docs (line 493) | def scroll_ids_to_disk_and_iter_docs(self): class ScanResult (line 531) | class ScanResult(object): method __init__ (line 533) | def __init__(self, count, iterator): method __iter__ (line 537) | def __iter__(self): class ESQuerySet (line 541) | class ESQuerySet(object): method __init__ (line 548) | def __init__(self, raw, query): method normalize_result (line 561) | def normalize_result(query, result): method raw_hits (line 571) | def raw_hits(self): method doc_ids (line 575) | def doc_ids(self): method hits (line 580) | def hits(self): method total (line 588) | def total(self): method aggregation (line 592) | def aggregation(self, name): method aggregations (line 597) | def aggregations(self): method __repr__ (line 603) | def __repr__(self): class HQESQuery (line 607) | class HQESQuery(ESQuery): method builtin_filters (line 612) | def builtin_filters(self): FILE: corehq/apps/es/exceptions.py class ESError (line 1) | class ESError(Exception): class ESShardFailure (line 5) | class ESShardFailure(ESError): class TaskError (line 9) | class TaskError(ESError): method __init__ (line 11) | def __init__(self, tasks_result): class TaskMissing (line 16) | class TaskMissing(TaskError): class IndexNotMultiplexedException (line 20) | class IndexNotMultiplexedException(Exception): class IndexMultiplexedException (line 24) | class IndexMultiplexedException(Exception): class IndexAlreadySwappedException (line 28) | class IndexAlreadySwappedException(Exception): class IndexNotSubindexException (line 32) | class IndexNotSubindexException(Exception): FILE: corehq/apps/es/fake/es_query_fake.py function check_deep_copy (line 18) | def check_deep_copy(method): class ESQueryFake (line 32) | class ESQueryFake(object): method __init__ (line 43) | def __init__(self, result_docs=None): method _clone (line 49) | def _clone(self, result_docs=None): method _filtered (line 63) | def _filtered(self, filter_function): method save_doc (line 67) | def save_doc(cls, doc): method transform_doc (line 74) | def transform_doc(doc): method reset_docs (line 78) | def reset_docs(cls): method remove_doc (line 82) | def remove_doc(cls, doc_id): method _get_all_docs (line 86) | def _get_all_docs(cls): method values_list (line 93) | def values_list(self, *fields, **kwargs): method search_string_query (line 102) | def search_string_query(self, search_string, default_fields=None): method start (line 113) | def start(self, start): method size (line 119) | def size(self, size): method sort (line 125) | def sort(self, field, desc=False): method get_ids (line 131) | def get_ids(self): method source (line 134) | def source(self, fields): method run (line 138) | def run(self): method count (line 161) | def count(self): method scroll (line 164) | def scroll(self): method term (line 185) | def term(self, field, value): method date_range (line 199) | def date_range(self, field, gt=None, gte=None, lt=None, lte=None): method uses_aggregations (line 229) | def uses_aggregations(self): method aggregation (line 232) | def aggregation(self, _): method __getattr__ (line 235) | def __getattr__(self, item): class HQESQueryFake (line 261) | class HQESQueryFake(ESQueryFake): method doc_id (line 263) | def doc_id(self, doc_id): method domain (line 270) | def domain(self, domain): FILE: corehq/apps/es/fake/forms_fake.py class FormESFake (line 9) | class FormESFake(HQESQueryFake): method domain (line 12) | def domain(self, domain): method xmlns (line 17) | def xmlns(self, xmlns): method completed (line 20) | def completed(self, gt=None, gte=None, lt=None, lte=None): method transform_doc (line 24) | def transform_doc(doc): method count (line 30) | def count(self): FILE: corehq/apps/es/fake/groups_fake.py class GroupESFake (line 4) | class GroupESFake(HQESQueryFake): method is_case_sharing (line 7) | def is_case_sharing(self, value=True): FILE: corehq/apps/es/fake/users_fake.py class UserESFake (line 5) | class UserESFake(HQESQueryFake): method domain (line 8) | def domain(self, domain, include_active=True, include_inactive=False): method primary_location (line 23) | def primary_location(self, location_id): method location (line 26) | def location(self, location_id): method mobile_users (line 29) | def mobile_users(self): method user_ids (line 32) | def user_ids(self, user_ids): method transform_doc (line 36) | def transform_doc(doc): method count (line 40) | def count(self): FILE: corehq/apps/es/filters.py function match_all (line 21) | def match_all(): function match_none (line 25) | def match_none(): function prefix (line 29) | def prefix(field, value): function wildcard (line 33) | def wildcard(field, value): function term (line 37) | def term(field, value): function OR (line 52) | def OR(*filters): function AND (line 57) | def AND(*filters): function NOT (line 62) | def NOT(filter_): function not_term (line 67) | def not_term(field, value): function range_filter (line 71) | def range_filter(field, gt=None, gte=None, lt=None, lte=None): function date_range (line 82) | def date_range(field, gt=None, gte=None, lt=None, lte=None): function domain (line 88) | def domain(domain_name): function doc_type (line 93) | def doc_type(doc_type): function doc_id (line 98) | def doc_id(doc_id): function missing (line 103) | def missing(field): function exists (line 108) | def exists(field): function empty (line 113) | def empty(field): function non_null (line 118) | def non_null(field): function nested (line 123) | def nested(path, filter_): function regexp (line 137) | def regexp(field, regex): function geo_bounding_box (line 141) | def geo_bounding_box(field, top_left, bottom_right): function geo_polygon (line 161) | def geo_polygon(field, points): function geo_shape (line 183) | def geo_shape(field, shape, relation='intersects'): function geo_grid (line 227) | def geo_grid(field, geohash): FILE: corehq/apps/es/forms.py class FormES (line 31) | class FormES(HQESQuery): method builtin_filters (line 41) | def builtin_filters(self): method user_aggregation (line 55) | def user_aggregation(self): method domain_aggregation (line 58) | def domain_aggregation(self): method only_archived (line 61) | def only_archived(self): class ElasticForm (line 67) | class ElasticForm(ElasticDocumentAdapter): method mapping (line 73) | def mapping(self): method model_cls (line 78) | def model_cls(self): method _from_dict (line 82) | def _from_dict(cls, xform_dict): function form_ids (line 182) | def form_ids(form_ids): function xmlns (line 186) | def xmlns(xmlnss): function app (line 190) | def app(app_ids): function submitted (line 194) | def submitted(gt=None, gte=None, lt=None, lte=None): function inserted (line 198) | def inserted(gt=None, gte=None, lt=None, lte=None): function completed (line 202) | def completed(gt=None, gte=None, lt=None, lte=None): function user_id (line 206) | def user_id(user_ids): function user_type (line 215) | def user_type(user_types): function user_ids_handle_unknown (line 219) | def user_ids_handle_unknown(user_ids): function updating_cases (line 236) | def updating_cases(case_ids): FILE: corehq/apps/es/groups.py class GroupES (line 29) | class GroupES(HQESQuery): method builtin_filters (line 33) | def builtin_filters(self): class ElasticGroup (line 42) | class ElasticGroup(ElasticDocumentAdapter): method mapping (line 48) | def mapping(self): method model_cls (line 53) | def model_cls(self): function is_case_sharing (line 66) | def is_case_sharing(value=True): function is_reporting (line 70) | def is_reporting(value=True): function group_ids (line 74) | def group_ids(group_ids): function not_deleted (line 78) | def not_deleted(): FILE: corehq/apps/es/index/settings.py function render_index_tuning_settings (line 13) | def render_index_tuning_settings(index_settings_key): class InvalidTuningSettingsError (line 71) | class InvalidTuningSettingsError(Exception): class SettingsKeyCollection (line 75) | class SettingsKeyCollection: method _values (line 88) | def _values(self): method __repr__ (line 99) | def __repr__(self): method __contains__ (line 102) | def __contains__(self, value): method __iter__ (line 105) | def __iter__(self): class _IndexSettingsKey (line 109) | class _IndexSettingsKey(SettingsKeyCollection): class _IndexTuningKey (line 122) | class _IndexTuningKey(SettingsKeyCollection): FILE: corehq/apps/es/management/commands/elastic_sync_multiplexed.py class ESSyncUtil (line 33) | class ESSyncUtil: method __init__ (line 42) | def __init__(self): method start_reindex (line 45) | def start_reindex(self, cname, reindex_batch_size=1000, requests_per_s... method backfill_subindex (line 86) | def backfill_subindex(self, subindex_cname, domain): method _get_source_destination_indexes (line 121) | def _get_source_destination_indexes(self, adapter): method _prepare_index_for_reindex (line 124) | def _prepare_index_for_reindex(self, index_name): method _wait_for_index_to_get_healthy (line 131) | def _wait_for_index_to_get_healthy(self, index_name): method _prepare_index_for_normal_usage (line 141) | def _prepare_index_for_normal_usage(self, secondary_adapter): method display_source_destination_doc_count (line 155) | def display_source_destination_doc_count(self, adapter): method display_backfill_subindex_doc_counts_for_domain (line 183) | def display_backfill_subindex_doc_counts_for_domain(self, source_adapt... method perform_cleanup (line 199) | def perform_cleanup(self, adapter): method cancel_reindex (line 208) | def cancel_reindex(self, task_id): method reindex_status (line 221) | def reindex_status(self, task_id): method delete_index (line 224) | def delete_index(self, cname): method _get_current_and_older_index_name (line 260) | def _get_current_and_older_index_name(cls, cname): method set_checkpoints_for_new_index (line 270) | def set_checkpoints_for_new_index(self, cnames): method _copy_checkpoints (line 312) | def _copy_checkpoints(self, pillow, new_checkpoint_id): method estimate_disk_space_for_reindex (line 317) | def estimate_disk_space_for_reindex(self, stdout=None): method _get_index_name_cname_map (line 336) | def _get_index_name_cname_map(self, ignore_subindices=False): method _format_bytes (line 344) | def _format_bytes(self, size): method _print_table (line 353) | def _print_table(self, rows, output): method set_replicas_for_secondary_index (line 361) | def set_replicas_for_secondary_index(self, cname): method remove_residual_indices (line 372) | def remove_residual_indices(self): method _get_all_known_index_names (line 393) | def _get_all_known_index_names(self): method display_shard_info (line 400) | def display_shard_info(self): class Command (line 411) | class Command(BaseCommand): method add_arguments (line 497) | def add_arguments(self, parser): method handle (line 620) | def handle(self, **options): FILE: corehq/apps/es/management/commands/ensure_indices_reindexed.py class Command (line 18) | class Command(BaseCommand): method add_arguments (line 24) | def add_arguments(self, parser): method handle (line 34) | def handle(self, current_es_version, changelog, **kwargs): method check_indices_are_consistent (line 68) | def check_indices_are_consistent(cls): method _return_missing_index_names (line 104) | def _return_missing_index_names(cls): method is_doc_count_difference_reasonable (line 118) | def is_doc_count_difference_reasonable(self, cname): method _primary_index_name (line 129) | def _primary_index_name(cls, cname): method _secondary_index_name (line 133) | def _secondary_index_name(cls, cname): method get_both_adapters_for_cname (line 137) | def get_both_adapters_for_cname(cls, cname): method get_doc_count_delta_percent (line 151) | def get_doc_count_delta_percent(self, cname): FILE: corehq/apps/es/management/commands/es_version_for_index.py class Command (line 6) | class Command(BaseCommand): method add_arguments (line 9) | def add_arguments(self, parser): method _normalize_version (line 18) | def _normalize_version(self, version): method handle (line 24) | def handle(self, only_older_version_indexes, **options): method print_table (line 39) | def print_table(self, rows): FILE: corehq/apps/es/management/commands/make_elastic_migration.py class Command (line 19) | class Command(makemigrations.Command): method add_arguments (line 25) | def add_arguments(self, parser): method handle (line 63) | def handle(self, creates, updates, deletes, **options): method build_migration (line 94) | def build_migration(self, creates, updates, deletes): method arrange_migration_changes (line 142) | def arrange_migration_changes(self, migration): method adapter_type (line 169) | def adapter_type(value): method adapter_and_name_type (line 186) | def adapter_and_name_type(self, value): method adapter_and_properties_type (line 211) | def adapter_and_properties_type(self, value): FILE: corehq/apps/es/management/commands/resave_failed_forms_and_cases.py class Command (line 18) | class Command(BaseCommand): method add_arguments (line 19) | def add_arguments(self, parser): method handle (line 35) | def handle(self, domain, start_date, end_date, *args, **options): function perform_resave_on_xforms (line 45) | def perform_resave_on_xforms(domain, start_date, end_date, no_input): function perform_resave_on_cases (line 68) | def perform_resave_on_cases(domain, start_date, end_date, no_input): FILE: corehq/apps/es/management/commands/restore_es_snapshot.py class Command (line 20) | class Command(BaseCommand): method add_arguments (line 25) | def add_arguments(self, parser): method handle (line 35) | def handle(self, days_ago, indices, **options): method get_date (line 56) | def get_date(days_ago): method get_indices (line 62) | def get_indices(indices): method get_client_and_close_indices (line 69) | def get_client_and_close_indices(es, indices): method restore_snapshot (line 75) | def restore_snapshot(es, date, indices): method rewind_pillows (line 91) | def rewind_pillows(date): FILE: corehq/apps/es/management/commands/verify_reindex.py class Command (line 9) | class Command(BaseCommand): method create_parser (line 27) | def create_parser(self, prog_name, subcommand, **kwargs): method add_arguments (line 32) | def add_arguments(self, parser): method handle (line 35) | def handle(self, eslog, **options): method _assert_valid_log_string (line 48) | def _assert_valid_log_string(self, log_string): method _parse_reindex_response (line 54) | def _parse_reindex_response(self, log_string): FILE: corehq/apps/es/management/commands/wipe_es.py class Command (line 8) | class Command(BaseCommand): method add_arguments (line 12) | def add_arguments(self, parser): method handle (line 20) | def handle(self, *args, **options): function wipe_es (line 31) | def wipe_es(commit=False): FILE: corehq/apps/es/migration_operations.py class BaseElasticOperation (line 17) | class BaseElasticOperation(RunPython): method run (line 20) | def run(self, *args, **kw): method reverse_run (line 23) | def reverse_run(self, *args, **kw): method _should_skip_operation (line 26) | def _should_skip_operation(self, mapping_es_major_versions): method __repr__ (line 39) | def __repr__(self): class CreateIndex (line 43) | class CreateIndex(BaseElasticOperation): method __init__ (line 48) | def __init__(self, name, type_, mapping, analysis, settings_key, comme... method deconstruct (line 71) | def deconstruct(self): method run (line 83) | def run(self, *args, **kw): method reverse_run (line 100) | def reverse_run(self, *args, **kw): method describe (line 105) | def describe(self): method render_index_metadata (line 109) | def render_index_metadata(type_, mapping, analysis, settings_key, comm... class DeleteIndex (line 137) | class DeleteIndex(BaseElasticOperation): method __init__ (line 142) | def __init__(self, name, reverse_params=None, es_versions=[]): method deconstruct (line 162) | def deconstruct(self): method run (line 178) | def run(self, *args, **kw): method reverse_run (line 185) | def reverse_run(self, *args, **kw): method describe (line 198) | def describe(self): class UpdateIndexMapping (line 202) | class UpdateIndexMapping(BaseElasticOperation): method __init__ (line 232) | def __init__(self, name, type_, properties, comment=None, print_diff=T... method deconstruct (line 257) | def deconstruct(self): method run (line 270) | def run(self, *args, **kw): method get_mapping_text_lines (line 288) | def get_mapping_text_lines(self): method show_diff (line 301) | def show_diff(self, before, after): method describe (line 319) | def describe(self): function make_mapping_meta (line 323) | def make_mapping_meta(comment=None): class CreateIndexIfNotExists (line 337) | class CreateIndexIfNotExists(CreateIndex): method run (line 363) | def run(self, *args, **kwargs): method reverse_run (line 371) | def reverse_run(self, *args, **kw): class DeleteOnlyIfIndexExists (line 375) | class DeleteOnlyIfIndexExists(DeleteIndex): method __init__ (line 384) | def __init__(self, name, es_versions=[]): method run (line 390) | def run(self, *args, **kwargs): method reverse_run (line 398) | def reverse_run(self, *args, **kw): class MappingUpdateFailed (line 402) | class MappingUpdateFailed(Exception): FILE: corehq/apps/es/migrations/0001_bootstrap_es_indexes.py class Migration (line 14) | class Migration(migrations.Migration): FILE: corehq/apps/es/migrations/0002_add_tombstones.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/es/migrations/0003_add_assigned_location_ids.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/es/migrations/0004_make_new_indexes.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/es/migrations/0005_add_epoch_as_valid_date_to_forms.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/es/migrations/0006_verify_es2_indices_reindexed.py function _verify_reindex_status (line 9) | def _verify_reindex_status(apps, schema_editor): class Migration (line 18) | class Migration(migrations.Migration): FILE: corehq/apps/es/migrations/0007_init_indices_for_fresh_es_5.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/es/migrations/0008_add_doc_id_to_all_mappings.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/es/migrations/0009_add_indices_for_reindex_in_es5.py class Migration (line 12) | class Migration(migrations.Migration): FILE: corehq/apps/es/migrations/0010_delete_reverted_indices.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/es/migrations/0011_add_indices_for_es5_reindex.py class Migration (line 10) | class Migration(migrations.Migration): FILE: corehq/apps/es/migrations/0012_add_new_index_for_bha.py function _create_bha_index_on_saas_envs (line 14) | def _create_bha_index_on_saas_envs(apps, schema_editor): function _reverse (line 29) | def _reverse(apps, schema_editor): class Migration (line 34) | class Migration(migrations.Migration): FILE: corehq/apps/es/migrations/0013_add_last_modifed.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/es/migrations/0014_enable_slowlogs.py function _configure_slowlogs (line 9) | def _configure_slowlogs(apps, schema_editor): class Migration (line 14) | class Migration(migrations.Migration): FILE: corehq/apps/es/migrations/0015_add_user_domain_memberships.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/es/migrations/0016_add_new_index_for_cc_perf.py function _create_cc_perf_index (line 12) | def _create_cc_perf_index(apps, schema_editor): function _reverse (line 27) | def _reverse(apps, schema_editor): class Migration (line 32) | class Migration(migrations.Migration): FILE: corehq/apps/es/migrations/0017_add_is_account_confirmed.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/es/profiling.py class ESQueryProfiler (line 7) | class ESQueryProfiler: method __post_init__ (line 38) | def __post_init__(self): method get_profiled_search_class (line 44) | def get_profiled_search_class(self, slug=None): FILE: corehq/apps/es/queries.py function BOOL_CLAUSE (line 26) | def BOOL_CLAUSE(query, **kwargs): function MUST_CLAUSE (line 30) | def MUST_CLAUSE(query, **kwargs): function MUST_NOT_CLAUSE (line 34) | def MUST_NOT_CLAUSE(query, **kwargs): function SHOULD_CLAUSE (line 38) | def SHOULD_CLAUSE(query, **kwargs): function _CLAUSE (line 42) | def _CLAUSE(clause, query, **kwargs): function match_all (line 56) | def match_all(): function search_string_query (line 61) | def search_string_query(search_string, default_fields): function match (line 87) | def match(search_string, field, operator=None): function fuzzy (line 102) | def fuzzy(search_string, field, fuzziness="AUTO", **kwargs): function nested (line 115) | def nested(path, query, *args, **kwargs): function nested_filter (line 130) | def nested_filter(path, filter_, *args, **kwargs): function filtered (line 145) | def filtered(query, filter_): function regexp (line 157) | def regexp(field, regex): function geo_distance (line 167) | def geo_distance(field, geopoint, **kwargs): FILE: corehq/apps/es/sms.py class SMSES (line 16) | class SMSES(HQESQuery): method builtin_filters (line 20) | def builtin_filters(self): method user_aggregation (line 35) | def user_aggregation(self): class ElasticSMS (line 39) | class ElasticSMS(ElasticDocumentAdapter): method mapping (line 45) | def mapping(self): method model_cls (line 50) | def model_cls(self): function incoming_messages (line 63) | def incoming_messages(): function outgoing_messages (line 67) | def outgoing_messages(): function direction (line 71) | def direction(direction_): function processed_or_incoming_messages (line 75) | def processed_or_incoming_messages(): function processed (line 79) | def processed(processed=True): function to_commcare_user (line 83) | def to_commcare_user(): function to_commcare_case (line 87) | def to_commcare_case(): function to_web_user (line 91) | def to_web_user(): function to_couch_user (line 95) | def to_couch_user(): function to_commcare_user_or_case (line 99) | def to_commcare_user_or_case(): function received (line 103) | def received(gt=None, gte=None, lt=None, lte=None): FILE: corehq/apps/es/tests/index/test_analysis.py class TestConstantValues (line 13) | class TestConstantValues(SimpleTestCase): method test_default_analyzer (line 21) | def test_default_analyzer(self): method test_default_analysis (line 31) | def test_default_analysis(self): method test_comma_analysis (line 37) | def test_comma_analysis(self): method test_phonetic_analysis (line 48) | def test_phonetic_analysis(self): FILE: corehq/apps/es/tests/index/test_settings.py function overridden_index_settings (line 21) | def overridden_index_settings(): class TestRenderSettings (line 36) | class TestRenderSettings(SimpleTestCase): method test_render_index_tuning_settings_returns_module_defaults (line 41) | def test_render_index_tuning_settings_returns_module_defaults(self): method test_render_index_tuning_settings_module_settings_by_name_override_module_defaults (line 54) | def test_render_index_tuning_settings_module_settings_by_name_override... method test_render_index_tuning_settings_default_django_settings_override_module_values (line 70) | def test_render_index_tuning_settings_default_django_settings_override... method test_render_index_tuning_settings_django_settings_by_name_override_all (line 87) | def test_render_index_tuning_settings_django_settings_by_name_override... method test_render_index_tuning_settings_special_remove_value_omits_setting (line 99) | def test_render_index_tuning_settings_special_remove_value_omits_setti... method test_render_index_tuning_settings_special_remove_value_is_overridden_by_later_values (line 113) | def test_render_index_tuning_settings_special_remove_value_is_overridd... method test_render_index_tuning_settings_invalid_settings_key_raises_invalidtuningsettingserror (line 124) | def test_render_index_tuning_settings_invalid_settings_key_raises_inva... class TestConstantValues (line 130) | class TestConstantValues(SimpleTestCase): method test_remove_value (line 139) | def test_remove_value(self): method test_default (line 142) | def test_default(self): method test_index_settings_key_attrs (line 145) | def test_index_settings_key_attrs(self): method test_index_settings_keys_members (line 155) | def test_index_settings_keys_members(self): method test_index_tuning_key_attrs (line 164) | def test_index_tuning_key_attrs(self): method test_index_tuning_key_members (line 168) | def test_index_tuning_key_members(self): method test_default_replicas (line 174) | def test_default_replicas(self): method test_default_shards (line 177) | def test_default_shards(self): method test_default_tuning_settings (line 180) | def test_default_tuning_settings(self): class TestSettingsKeyCollection (line 214) | class TestSettingsKeyCollection(SimpleTestCase): class _PluralPets (line 216) | class _PluralPets(SettingsKeyCollection): method test___repr__ (line 224) | def test___repr__(self): method test___contains__ (line 230) | def test___contains__(self): method test_not__contains__ (line 233) | def test_not__contains__(self): method test___iter__ (line 236) | def test___iter__(self): FILE: corehq/apps/es/tests/test_aggregations.py class TestAggregations (line 33) | class TestAggregations(ElasticTestMixin, SimpleTestCase): method test_bad_aggregation_name (line 35) | def test_bad_aggregation_name(self): method test_nesting_aggregations (line 40) | def test_nesting_aggregations(self): method test_result_parsing_basic (line 90) | def test_result_parsing_basic(self): method test_result_parsing_complex (line 110) | def test_result_parsing_complex(self): method test_range_aggregation (line 177) | def test_range_aggregation(self): method test_stats_aggregation (line 216) | def test_stats_aggregation(self): method test_extended_stats_aggregation (line 245) | def test_extended_stats_aggregation(self): method test_top_hits_aggregation (line 274) | def test_top_hits_aggregation(self): method test_missing_aggregation (line 317) | def test_missing_aggregation(self): method test_date_histogram (line 348) | def test_date_histogram(self): method test_histogram_aggregation (line 379) | def test_histogram_aggregation(self): method test_nested_aggregation (line 402) | def test_nested_aggregation(self): method test_terms_aggregation_with_order (line 433) | def test_terms_aggregation_with_order(self): method test_terms_aggregation_does_not_accept_zero_size (line 465) | def test_terms_aggregation_does_not_accept_zero_size(self): method test_geohash_grid_aggregation (line 476) | def test_geohash_grid_aggregation(self): class TestDateHistogram (line 512) | class TestDateHistogram(SimpleTestCase): method setUpClass (line 516) | def setUpClass(cls): method tearDownClass (line 545) | def tearDownClass(cls): method _run_aggregation (line 548) | def _run_aggregation(self, aggregation): method test_year_histogram (line 555) | def test_year_histogram(self): method test_month_histogram (line 561) | def test_month_histogram(self): method test_day_histogram (line 567) | def test_day_histogram(self): method test_only_nonzero_buckets_returned (line 573) | def test_only_nonzero_buckets_returned(self): FILE: corehq/apps/es/tests/test_app_adapter.py class TestFromPythonInApplication (line 9) | class TestFromPythonInApplication(TestCase): method setUpClass (line 12) | def setUpClass(cls): method _create_app (line 19) | def _create_app(self, name): method test_from_python_works_with_application_objects (line 27) | def test_from_python_works_with_application_objects(self): method test_from_python_works_with_application_dicts (line 30) | def test_from_python_works_with_application_dicts(self): method test_from_python_raises_for_other_objects (line 33) | def test_from_python_raises_for_other_objects(self): method test_index_can_handle_app_dicts (line 36) | def test_index_can_handle_app_dicts(self): method test_index_can_handle_app_objects (line 47) | def test_index_can_handle_app_objects(self): FILE: corehq/apps/es/tests/test_case_adapter.py class TestFromPythonInCases (line 9) | class TestFromPythonInCases(TestCase): method setUpClass (line 12) | def setUpClass(cls): method test_from_python_works_with_case_objects (line 17) | def test_from_python_works_with_case_objects(self): method test_from_python_works_with_case_dicts (line 20) | def test_from_python_works_with_case_dicts(self): method test_from_python_raises_for_other_objects (line 23) | def test_from_python_raises_for_other_objects(self): method test_index_can_handle_case_dicts (line 26) | def test_index_can_handle_case_dicts(self): method test_index_can_handle_case_objects (line 37) | def test_index_can_handle_case_objects(self): FILE: corehq/apps/es/tests/test_case_search_adapter.py class TestFromPythonInCaseSearch (line 22) | class TestFromPythonInCaseSearch(TestCase): method setUpClass (line 25) | def setUpClass(cls): method test_from_python_works_with_case_objects (line 30) | def test_from_python_works_with_case_objects(self): method test_from_python_works_with_case_dicts (line 33) | def test_from_python_works_with_case_dicts(self): method test_from_python_raises_for_other_objects (line 36) | def test_from_python_raises_for_other_objects(self): method test_index_can_handle_case_dicts (line 39) | def test_index_can_handle_case_dicts(self): method test_index_can_handle_case_objects (line 50) | def test_index_can_handle_case_objects(self): class TestCaseSearchAdapterAlsoWritesToAnotherIndex (line 62) | class TestCaseSearchAdapterAlsoWritesToAnotherIndex(TestCase): method setUpClass (line 65) | def setUpClass(cls): method _get_normalized_cases_from_hits (line 82) | def _get_normalized_cases_from_hits(self, cases): method _normalise_case (line 89) | def _normalise_case(self, case): method test_index_writes_to_both_adapters (line 93) | def test_index_writes_to_both_adapters(self): method test_index_not_writes_to_bha_adapter_if_not_required (line 104) | def test_index_not_writes_to_bha_adapter_if_not_required(self): method test_bulk_with_bha_mutliplexing (line 115) | def test_bulk_with_bha_mutliplexing(self): method test_bulk_without_bha_mutliplexing (line 129) | def test_bulk_without_bha_mutliplexing(self): method test_index_with_multiplexed_adapter (line 147) | def test_index_with_multiplexed_adapter(self, _): method test_index_with_multiplexed_adapter_without_sub_index_settings (line 188) | def test_index_with_multiplexed_adapter_without_sub_index_settings(sel... FILE: corehq/apps/es/tests/test_case_search_es.py class TestCaseSearchES (line 38) | class TestCaseSearchES(ElasticTestMixin, SimpleTestCase): method setUp (line 40) | def setUp(self): method test_simple_case_property_query (line 43) | def test_simple_case_property_query(self): method test_multiple_case_search_queries (line 102) | def test_multiple_case_search_queries(self): method test_blacklisted_owner_ids (line 205) | def test_blacklisted_owner_ids(self): method test_fuzzy_property_query (line 223) | def test_fuzzy_property_query(self): class TestCaseSearchHitConversions (line 269) | class TestCaseSearchHitConversions(SimpleTestCase): method test_wrap_case_search_hit (line 272) | def test_wrap_case_search_hit(self): method test_wrap_case_search_hit_include_score (line 308) | def test_wrap_case_search_hit_include_score(self): method make_hit (line 313) | def make_hit(): class BaseCaseSearchTest (line 366) | class BaseCaseSearchTest(TestCase): method setUp (line 368) | def setUp(self): method _make_case (line 374) | def _make_case(self, domain, case_properties, index=None): method _bootstrap_cases_in_es_for_domain (line 386) | def _bootstrap_cases_in_es_for_domain(self, domain, input_cases): method _assert_query_runs_correctly (line 393) | def _assert_query_runs_correctly(self, domain, input_cases, query, xpa... method _create_case_search_config (line 406) | def _create_case_search_config(self): class TestCaseSearchLookups (line 412) | class TestCaseSearchLookups(BaseCaseSearchTest): method test_simple_case_property_query (line 413) | def test_simple_case_property_query(self): method test_fuzzy_case_property_query (line 425) | def test_fuzzy_case_property_query(self): method test_fuzzy_date (line 440) | def test_fuzzy_date(self): method test_multiple_case_search_queries (line 454) | def test_multiple_case_search_queries(self): method test_multiple_case_search_queries_should_clause (line 470) | def test_multiple_case_search_queries_should_clause(self): method test_blacklisted_owner_ids (line 486) | def test_blacklisted_owner_ids(self): method test_missing_case_property (line 498) | def test_missing_case_property(self): method test_full_text_query (line 511) | def test_full_text_query(self): method test_date_range_query (line 523) | def test_date_range_query(self): method test_case_property_query (line 543) | def test_case_property_query(self): method test_geopoint_query_for_gps_properties (line 557) | def test_geopoint_query_for_gps_properties(self, _): method test_geopoint_query_for_domain_geo_case_property (line 571) | def test_geopoint_query_for_domain_geo_case_property(self, *args): method test_starts_with_query (line 581) | def test_starts_with_query(self): method test_get_case_property_unique_values (line 599) | def test_get_case_property_unique_values(self): method test_get_case_property_unique_values_with_empty (line 612) | def test_get_case_property_unique_values_with_empty(self): method test_get_case_property_unique_values_no_cases (line 627) | def test_get_case_property_unique_values_no_cases(self): class TestForwardTimezoneAdjustment (line 632) | class TestForwardTimezoneAdjustment(TestCase): method setUp (line 634) | def setUp(self): method test_user_input_forward_timezone_adjustment_1 (line 638) | def test_user_input_forward_timezone_adjustment_1(self): method test_user_input_forward_timezone_adjustment_2 (line 647) | def test_user_input_forward_timezone_adjustment_2(self): method test_user_input_forward_timezone_adjustment_3 (line 656) | def test_user_input_forward_timezone_adjustment_3(self): method test_user_input_forward_timezone_adjustment_4 (line 665) | def test_user_input_forward_timezone_adjustment_4(self): class TestBackwardTimezoneAdjustment (line 675) | class TestBackwardTimezoneAdjustment(TestCase): method setUp (line 677) | def setUp(self): method test_user_input_backwards_timezone_adjustment_1 (line 681) | def test_user_input_backwards_timezone_adjustment_1(self): method test_user_input_backwards_timezone_adjustment_2 (line 690) | def test_user_input_backwards_timezone_adjustment_2(self): method test_user_input_backwards_timezone_adjustment_3 (line 699) | def test_user_input_backwards_timezone_adjustment_3(self): method test_user_input_backwards_timezone_adjustment_4 (line 708) | def test_user_input_backwards_timezone_adjustment_4(self): FILE: corehq/apps/es/tests/test_client.py class TestClient (line 51) | class TestClient(SimpleTestCase): method tearDown (line 53) | def tearDown(self): method test_elastic_host (line 59) | def test_elastic_host(self): method test_elastic_hosts (line 64) | def test_elastic_hosts(self): method test_elastic_hosts_fall_back_to_host (line 73) | def test_elastic_hosts_fall_back_to_host(self): method test_elastic_host_is_ignored_if_hosts_present (line 79) | def test_elastic_host_is_ignored_if_hosts_present(self): method test_elastic_host_fails_non_int_port (line 84) | def test_elastic_host_fails_non_int_port(self): method test_elastic_host_fails_empty_port (line 89) | def test_elastic_host_fails_empty_port(self): method test_elastic_hosts_alt_default_port (line 94) | def test_elastic_hosts_alt_default_port(self): method test_elastic_hosts_alt_host_spec (line 99) | def test_elastic_hosts_alt_host_spec(self): method test_get_client (line 103) | def test_get_client(self): method test_get_client_for_export (line 108) | def test_get_client_for_export(self): method test_get_client_is_memoized (line 114) | def test_get_client_is_memoized(self): class TestBaseAdapter (line 123) | class TestBaseAdapter(SimpleTestCase): method test_info (line 127) | def test_info(self): method test_ping (line 131) | def test_ping(self): method test_ping_fail (line 134) | def test_ping_fail(self): method test_elastic_version (line 147) | def test_elastic_version(self): method test_elastic_version_hits_cluster_only_once (line 151) | def test_elastic_version_hits_cluster_only_once(self): method test_elastic_version_raises_eserror_on_elasticsearchexception (line 157) | def test_elastic_version_raises_eserror_on_elasticsearchexception(self): method test_elastic_version_raises_eserror_on_malformed_payload (line 164) | def test_elastic_version_raises_eserror_on_malformed_payload(self): method test_elastic_version_raises_eserror_on_invalid_version_number (line 168) | def test_elastic_version_raises_eserror_on_invalid_version_number(self): method test_elastic_major_version (line 180) | def test_elastic_major_version(self): function patch_elastic_version (line 186) | def patch_elastic_version(adapter, version_or_exception): class AdapterWithIndexTestCase (line 203) | class AdapterWithIndexTestCase(SimpleTestCase): method setUp (line 206) | def setUp(self): method tearDown (line 211) | def tearDown(self): method _purge_test_index (line 216) | def _purge_test_index(self): class TestElasticManageAdapter (line 225) | class TestElasticManageAdapter(AdapterWithIndexTestCase): method test_index_exists (line 230) | def test_index_exists(self): method test_cluster_health (line 236) | def test_cluster_health(self): method test_cluster_health_of_index (line 239) | def test_cluster_health_of_index(self): method test_cluster_routing (line 243) | def test_cluster_routing(self): method test_cluster_routing_disable (line 255) | def test_cluster_routing_disable(self): method _clear_cluster_routing (line 267) | def _clear_cluster_routing(self, verify=False): method test_get_node_info (line 281) | def test_get_node_info(self): method test_get_task (line 287) | def test_get_task(self): method test_cancel_task_with_invalid_task_id (line 293) | def test_cancel_task_with_invalid_task_id(self): method test_cancel_task_with_valid_task_id (line 315) | def test_cancel_task_with_valid_task_id(self): method _mock_single_task_response (line 346) | def _mock_single_task_response(self): method test_get_task_missing (line 377) | def test_get_task_missing(self): method test_get_task_error (line 383) | def test_get_task_error(self): method test__parse_task_result_empty_valid_failure_and_cause (line 387) | def test__parse_task_result_empty_valid_failure_and_cause(self): method test__parse_task_result_empty_unknown_reason (line 397) | def test__parse_task_result_empty_unknown_reason(self): method test__parse_task_result_empty_unknown_fail_type (line 403) | def test__parse_task_result_empty_unknown_fail_type(self): method test__parse_task_result_empty_unknown_caused_by_type (line 409) | def test__parse_task_result_empty_unknown_caused_by_type(self): method test__parse_task_result_empty_missing_caused_by (line 418) | def test__parse_task_result_empty_missing_caused_by(self): method test__parse_task_result_empty_multi_failures (line 426) | def test__parse_task_result_empty_multi_failures(self): method test__parse_task_result_single_task_valid (line 432) | def test__parse_task_result_single_task_valid(self): method test__parse_task_result_multi_tasks_expected (line 437) | def test__parse_task_result_multi_tasks_expected(self): method test__parse_task_result_multi_tasks_not_expected (line 453) | def test__parse_task_result_multi_tasks_not_expected(self): method test_index_create (line 462) | def test_index_create(self): method test_index_delete (line 467) | def test_index_delete(self): method test_index_refresh (line 473) | def test_index_refresh(self): method test_reindex_with_all_params (line 478) | def test_reindex_with_all_params(self): method test_reindex_with_copy_doc_ids (line 500) | def test_reindex_with_copy_doc_ids(self): method test_reindex_with_wait_for_completion_is_true (line 526) | def test_reindex_with_wait_for_completion_is_true(self): method test_reindex_with_wait_for_completion_is_false (line 539) | def test_reindex_with_wait_for_completion_is_false(self): method test_reindex_with_query_parameter_set (line 559) | def test_reindex_with_query_parameter_set(self): method test_reindex_for_users_index (line 581) | def test_reindex_for_users_index(self): method _index_test_docs_for_reindex (line 634) | def _index_test_docs_for_reindex(self): method _get_all_doc_ids_in_index (line 642) | def _get_all_doc_ids_in_index(self, index): method test_indices_refresh (line 646) | def test_indices_refresh(self): method test_indices_refresh_requires_list_similar (line 663) | def test_indices_refresh_requires_list_similar(self): method test_indices_info (line 670) | def test_indices_info(self): method test_index_flush (line 679) | def test_index_flush(self): method test_index_close (line 687) | def test_index_close(self): method test_index_put_alias (line 696) | def test_index_put_alias(self): method test_index_put_alias_flips_existing (line 704) | def test_index_put_alias_flips_existing(self): method _assert_alias_on_single_index (line 714) | def _assert_alias_on_single_index(self, alias, index): method test_index_validate_query_returns_true_for_valid_query (line 719) | def test_index_validate_query_returns_true_for_valid_query(self): method test_index_validate_query_returns_false_for_invalid_query (line 725) | def test_index_validate_query_returns_false_for_invalid_query(self): method test_index_set_replicas (line 739) | def test_index_set_replicas(self): method test_index_configure_for_reindex (line 746) | def test_index_configure_for_reindex(self): method test_index_configure_for_standard_ops (line 755) | def test_index_configure_for_standard_ops(self): method test__index_put_settings (line 764) | def test__index_put_settings(self): method test__index_put_settings_nested (line 774) | def test__index_put_settings_nested(self): method _get_index_settings (line 788) | def _get_index_settings(self, index, setting_name=None): method _verify_index_settings (line 797) | def _verify_index_settings(self, index, settings_flattened): method test_index_put_mapping (line 802) | def test_index_put_mapping(self): method test_index_put_mapping_clears_existing_mapping_metadata (line 813) | def test_index_put_mapping_clears_existing_mapping_metadata(self): method test_index_put_mapping_updates_existing_mapping_properties (line 825) | def test_index_put_mapping_updates_existing_mapping_properties(self): method test_index_get_mapping (line 840) | def test_index_get_mapping(self): method test_index_get_settings (line 846) | def test_index_get_settings(self): method test_index_get_settings_for_specific_values (line 869) | def test_index_get_settings_for_specific_values(self): method test_index_get_settings_for_invalid_value_raises_keyerror (line 880) | def test_index_get_settings_for_invalid_value_raises_keyerror(self): method test__validate_single_index (line 886) | def test__validate_single_index(self): method test__validate_single_index_fails_empty (line 889) | def test__validate_single_index_fails_empty(self): method test__validate_single_index_fails_None (line 893) | def test__validate_single_index_fails_None(self): method test__validate_single_index_fails__all (line 897) | def test__validate_single_index_fails__all(self): method test__validate_single_index_fails_multi_syntax (line 901) | def test__validate_single_index_fails_multi_syntax(self): method test__validate_single_index_fails_wildcard (line 905) | def test__validate_single_index_fails_wildcard(self): class TestDocumentAdapterWithExtras (line 911) | class TestDocumentAdapterWithExtras(TestDocumentAdapter): method index_exists (line 916) | def index_exists(self): method create_index (line 919) | def create_index(self, metadata=None): method delete_index (line 922) | def delete_index(self): method refresh_index (line 925) | def refresh_index(self): class ESTestHelpers (line 933) | class ESTestHelpers: method _index_many_new_docs (line 934) | def _index_many_new_docs(self, count, refresh=True): method _index_new_doc (line 942) | def _index_new_doc(self, refresh=True): method _make_doc (line 947) | def _make_doc(self, value=None): method _search_hits_dict (line 955) | def _search_hits_dict(self, query): method _scroll_hits_dict (line 963) | def _scroll_hits_dict(self, *args, **kw): method _make_shards_fail (line 970) | def _make_shards_fail(shards_obj, result_getter): method _index_tombstones (line 978) | def _index_tombstones(self, quantity): class TestElasticDocumentAdapter (line 985) | class TestElasticDocumentAdapter(AdapterWithIndexTestCase, ESTestHelpers): method setUp (line 991) | def setUp(self): method test_exists (line 998) | def test_exists(self): method test_not_exists_returns_bool (line 1002) | def test_not_exists_returns_bool(self): method test_get (line 1006) | def test_get(self): method test_get_limit_fields (line 1010) | def test_get_limit_fields(self): method test_count (line 1015) | def test_count(self): method test_get_docs (line 1021) | def test_get_docs(self): method test_iter_docs (line 1042) | def test_iter_docs(self): method test_iter_docs_chunks_requests (line 1050) | def test_iter_docs_chunks_requests(self): method test_iter_docs_yields_same_as_get_docs (line 1059) | def test_iter_docs_yields_same_as_get_docs(self): method test__mget (line 1069) | def test__mget(self): method test_search (line 1077) | def test_search(self): method test_search_limited_results (line 1081) | def test_search_limited_results(self): method test_search_raises_on_shards_failure (line 1089) | def test_search_raises_on_shards_failure(self): method test__search (line 1099) | def test__search(self): method test_scroll (line 1116) | def test_scroll(self): method test_scroll_yields_same_as_search (line 1121) | def test_scroll_yields_same_as_search(self): method test_scroll_raises_on_shards_failure (line 1131) | def test_scroll_raises_on_shards_failure(self): method test_scroll_cancels_after_exhaustion (line 1142) | def test_scroll_cancels_after_exhaustion(self): method test_scroll_cancels_after_failure (line 1149) | def test_scroll_cancels_after_failure(self): method test__scroll (line 1164) | def test__scroll(self): method test_scroll_no_searchtype_scan (line 1187) | def test_scroll_no_searchtype_scan(self): method test_scroll_query_extended (line 1191) | def test_scroll_query_extended(self): method test_scroll_query_sort_safe (line 1196) | def test_scroll_query_sort_safe(self): method _validate_scroll_search_params (line 1200) | def _validate_scroll_search_params(self, scroll_query, search_query): method test_scroll_ambiguous_size_raises (line 1219) | def test_scroll_ambiguous_size_raises(self): method test_scroll_query_size_as_keyword (line 1224) | def test_scroll_query_size_as_keyword(self): method test_scroll_query_size_in_query (line 1228) | def test_scroll_query_size_in_query(self): method test_scroll_size_default (line 1233) | def test_scroll_size_default(self): method _test_scroll_backend_calls (line 1237) | def _test_scroll_backend_calls(self, query, call_count, **scroll_kw): method test_scroll_returns_over_2x_size_docs (line 1253) | def test_scroll_returns_over_2x_size_docs(self): method test_index (line 1262) | def test_index(self): method test_index_fails_with_invalid_id (line 1269) | def test_index_fails_with_invalid_id(self): method test_index_fails_with_invalid_source (line 1276) | def test_index_fails_with_invalid_source(self): method test_index_succeeds_if_exists (line 1285) | def test_index_succeeds_if_exists(self): method test_index_with_change_succeeds_if_exists (line 1292) | def test_index_with_change_succeeds_if_exists(self): method test_update (line 1304) | def test_update(self): method test_update_tolerates_id_in_fields (line 1311) | def test_update_tolerates_id_in_fields(self): method test_update_fails_ambiguous_id_values (line 1317) | def test_update_fails_ambiguous_id_values(self): method test_update_fails_if_missing (line 1324) | def test_update_fails_if_missing(self): method test_update_ignores_retry_on_conflict_if_not_present (line 1333) | def test_update_ignores_retry_on_conflict_if_not_present(self): method test_update_passes_retry_on_conflict_arg_directly_to_client (line 1338) | def test_update_passes_retry_on_conflict_arg_directly_to_client(self): method test_update_does_not_accept_arbitrary_low_level_elastic_kwargs (line 1344) | def test_update_does_not_accept_arbitrary_low_level_elastic_kwargs(self): method test_update_returns_none_by_default (line 1348) | def test_update_returns_none_by_default(self): method test_update_returns_full_doc_if_specified (line 1353) | def test_update_returns_full_doc_if_specified(self): method test_update_performs_upsert_for_missing_doc_with_private_kwarg (line 1359) | def test_update_performs_upsert_for_missing_doc_with_private_kwarg(self): method test__update_does_not_need_version_without_return_doc (line 1368) | def test__update_does_not_need_version_without_return_doc(self): method test__update_return_doc_requires_elasticsearch_2_5_6_7_8 (line 1379) | def test__update_return_doc_requires_elasticsearch_2_5_6_7_8(self): method test__update_return_doc_uses_fields_kwarg_for_elasticsearch_2 (line 1389) | def test__update_return_doc_uses_fields_kwarg_for_elasticsearch_2(self): method test__update_return_doc_uses__source_kwarg_for_elasticsearch_5_6_7 (line 1397) | def test__update_return_doc_uses__source_kwarg_for_elasticsearch_5_6_7... method test__update_return_doc_uses_source_kwarg_for_elasticsearch_8 (line 1406) | def test__update_return_doc_uses_source_kwarg_for_elasticsearch_8(self): method test_delete (line 1414) | def test_delete(self): method test_delete_fails_if_missing (line 1420) | def test_delete_fails_if_missing(self): method test_bulk (line 1436) | def test_bulk(self): method test_bulk_iterates_actions_only_once (line 1446) | def test_bulk_iterates_actions_only_once(self): method test_bulk_index_iterates_docs_only_once (line 1454) | def test_bulk_index_iterates_docs_only_once(self): method test_bulk_delete_iterates_doc_ids_only_once (line 1462) | def test_bulk_delete_iterates_doc_ids_only_once(self): method test_bulk_index_and_delete (line 1470) | def test_bulk_index_and_delete(self): method test_bulk_index (line 1484) | def test_bulk_index(self): method test_bulk_index_fails_with_invalid_id (line 1495) | def test_bulk_index_fails_with_invalid_id(self): method test_bulk_index_fails_with_invalid_source (line 1502) | def test_bulk_index_fails_with_invalid_source(self): method test_bulk_delete (line 1511) | def test_bulk_delete(self): method test_bulk_delete_fails_with_invalid_id (line 1517) | def test_bulk_delete_fails_with_invalid_id(self): method test__report_and_fail_on_shard_failures (line 1522) | def test__report_and_fail_on_shard_failures(self): method test__report_and_fail_on_shard_failures_raises_on_shard_failure (line 1528) | def test__report_and_fail_on_shard_failures_raises_on_shard_failure(se... method test__report_and_fail_on_shard_failures_with_invalid_result_raises_valueerror (line 1537) | def test__report_and_fail_on_shard_failures_with_invalid_result_raises... method test_get_all_tombstones (line 1541) | def test_get_all_tombstones(self): method test_delete_tombstones (line 1550) | def test_delete_tombstones(self): class TestElasticDocumentAdapterWithoutRequests (line 1560) | class TestElasticDocumentAdapterWithoutRequests(SimpleTestCase): method test_from_python (line 1565) | def test_from_python(self): method test_to_json (line 1570) | def test_to_json(self): method test_to_json_id_null (line 1575) | def test_to_json_id_null(self): method test__prepare_count_query (line 1580) | def test__prepare_count_query(self): method test__render_bulk_action_index (line 1585) | def test__render_bulk_action_index(self): method test__render_bulk_action_delete (line 1598) | def test__render_bulk_action_delete(self): method test__render_bulk_action_delete_id (line 1609) | def test__render_bulk_action_delete_id(self): method test__render_bulk_action_fails_unsupported_action (line 1620) | def test__render_bulk_action_fails_unsupported_action(self): method test__render_bulk_action_fails_invalid_ids (line 1636) | def test__render_bulk_action_fails_invalid_ids(self): method test__verify_doc_id (line 1645) | def test__verify_doc_id(self): method test__verify_doc_id_fails_empty_string (line 1648) | def test__verify_doc_id_fails_empty_string(self): method test__verify_doc_id_fails_non_strings (line 1652) | def test__verify_doc_id_fails_non_strings(self): method test__verify_doc_source (line 1657) | def test__verify_doc_source(self): method test__verify_doc_source_fails_if_not_dict (line 1661) | def test__verify_doc_source_fails_if_not_dict(self): method test__verify_doc_source_fails_if_id_present (line 1665) | def test__verify_doc_source_fails_if_id_present(self): method test__fix_hit (line 1669) | def test__fix_hit(self): method test__fix_hits_in_result (line 1677) | def test__fix_hits_in_result(self): class TestBulkActionItem (line 1691) | class TestBulkActionItem(SimpleTestCase): method test_delete (line 1693) | def test_delete(self): method test_delete_id (line 1702) | def test_delete_id(self): method test_index (line 1711) | def test_index(self): method test_create_fails_with_invalid_action (line 1720) | def test_create_fails_with_invalid_action(self): method test_create_fails_without_doc_params (line 1725) | def test_create_fails_without_doc_params(self): method test_create_fails_with_multiple_doc_params (line 1731) | def test_create_fails_with_multiple_doc_params(self): method test_create_fails_with_doc_id_for_index (line 1736) | def test_create_fails_with_doc_id_for_index(self): method test_index___eq__ (line 1740) | def test_index___eq__(self): method test_delete___eq__ (line 1751) | def test_delete___eq__(self): method test_delete_id___eq__ (line 1762) | def test_delete_id___eq__(self): method test_delete_delete_and_delete_id_not_equal (line 1773) | def test_delete_delete_and_delete_id_not_equal(self): class TestElasticMultiplexAdapter (line 1787) | class TestElasticMultiplexAdapter(SimpleTestCase, ESTestHelpers): method setUpClass (line 1798) | def setUpClass(cls): method test_to_json (line 1808) | def test_to_json(self): method test_from_python_for_tombstones (line 1813) | def test_from_python_for_tombstones(self): method test_to_json_use_primary_index (line 1820) | def test_to_json_use_primary_index(self): method test_from_python_use_primary_index (line 1826) | def test_from_python_use_primary_index(self): method test_count (line 1832) | def test_count(self): method test_exists (line 1837) | def test_exists(self): method test_get (line 1842) | def test_get(self): method test_get_docs (line 1847) | def test_get_docs(self): method test_iter_docs (line 1852) | def test_iter_docs(self): method test_scroll (line 1857) | def test_scroll(self): method test_search (line 1862) | def test_search(self): method assert_passthru_primary_only (line 1867) | def assert_passthru_primary_only(self, p_mock, s_mock, *args, **kw): method test_bulk (line 1872) | def test_bulk(self): method test_bulk_returns_when_raise_errors_is_false (line 1890) | def test_bulk_returns_when_raise_errors_is_false(self): method test_bulk_raises_when_raise_errors_is_not_false (line 1902) | def test_bulk_raises_when_raise_errors_is_not_false(self): method test_bulk_action_delete_creates_tombstones_if_missing_on_secondary (line 1917) | def test_bulk_action_delete_creates_tombstones_if_missing_on_secondary... method test__parse_bulk_error_for_delete (line 1934) | def test__parse_bulk_error_for_delete(self): method test__parse_bulk_error_for_index (line 1942) | def test__parse_bulk_error_for_index(self): method test__is_delete_not_found (line 1950) | def test__is_delete_not_found(self): method test__is_delete_not_found_returns_false_for_non_404_delete_error (line 1955) | def test__is_delete_not_found_returns_false_for_non_404_delete_error(s... method test__is_delete_not_found_returns_false_for_index_error (line 1960) | def test__is_delete_not_found_returns_false_for_index_error(self): method test__iter_pruned_actions_prunes_all_but_last_delete_for_id (line 1965) | def test__iter_pruned_actions_prunes_all_but_last_delete_for_id(self): method test__iter_pruned_actions_prunes_all_but_last_index_for_id (line 1980) | def test__iter_pruned_actions_prunes_all_but_last_index_for_id(self): method test__iter_pruned_actions_prunes_all_but_last_index_and_later_delete_for_id (line 1994) | def test__iter_pruned_actions_prunes_all_but_last_index_and_later_dele... method test_bulk_index (line 2011) | def test_bulk_index(self): method test_bulk_delete (line 2022) | def test_bulk_delete(self): method test_delete (line 2034) | def test_delete(self): method test_delete_creates_tombstone_when_missing_in_secondary (line 2045) | def test_delete_creates_tombstone_when_missing_in_secondary(self): method test_index (line 2061) | def test_index(self): method test_index_raises_transporterror_on_failure (line 2072) | def test_index_raises_transporterror_on_failure(self): method test_update (line 2086) | def test_update(self): method assertPrimaryAndSecondaryDocIdsEqual (line 2098) | def assertPrimaryAndSecondaryDocIdsEqual(self, expected): method assertIndexDocIds (line 2111) | def assertIndexDocIds(self, adapter, expected): function patch_adapters_method (line 2121) | def patch_adapters_method(adapter, name, **kw): class TestTombstone (line 2129) | class TestTombstone(SimpleTestCase): method test_property_name_is_unchanged (line 2131) | def test_property_name_is_unchanged(self): method test_id (line 2136) | def test_id(self): method test_create_document (line 2141) | def test_create_document(self): class TestCreateDocumentAdapter (line 2149) | class TestCreateDocumentAdapter(SimpleTestCase): method test_create_document_adapter_returns_doc_adapter (line 2151) | def test_create_document_adapter_returns_doc_adapter(self): method test_returns_doc_adapter_without_multiplexed_setting (line 2159) | def test_returns_doc_adapter_without_multiplexed_setting(self): method test_returns_multiplexer_adapter_with_multiplexed_setting (line 2170) | def test_returns_multiplexer_adapter_with_multiplexed_setting(self): method test_returns_multiplexer_with_swapped_indexes (line 2183) | def test_returns_multiplexer_with_swapped_indexes(self): method test_returns_doc_adapter_with_secondary_index (line 2196) | def test_returns_doc_adapter_with_secondary_index(self): method test_settings_have_no_effect_if_secondary_is_None (line 2208) | def test_settings_have_no_effect_if_secondary_is_None(self): method test_reindex_config_has_no_effect_if_es_multiplex_to_version_is_not_set (line 2217) | def test_reindex_config_has_no_effect_if_es_multiplex_to_version_is_no... method test_reindex_config_works_if_es_multiplex_to_version_is_set (line 2234) | def test_reindex_config_works_if_es_multiplex_to_version_is_set(self): method test_reindex_log_has_unique_values (line 2251) | def test_reindex_log_has_unique_values(self): method test_es_multiplex_to_version_is_set_correctly_in_tests (line 2255) | def test_es_multiplex_to_version_is_set_correctly_in_tests(self): method _get_duplicate_items (line 2263) | def _get_duplicate_items(self, arr): class OneshotIterable (line 2275) | class OneshotIterable: method __init__ (line 2277) | def __init__(self, items): method __iter__ (line 2281) | def __iter__(self): class IterableExhaustedError (line 2288) | class IterableExhaustedError(Exception): FILE: corehq/apps/es/tests/test_command_make_elastic_migration.py class mock_datetime (line 20) | class mock_datetime: method utcnow (line 25) | def utcnow(cls): class TestMakeElasticMigrationCommand (line 30) | class TestMakeElasticMigrationCommand(TestCase): method test_build_migration_create_index (line 33) | def test_build_migration_create_index(self): method test_build_migration_delete_index (line 46) | def test_build_migration_delete_index(self): method test_build_migration_update_index_mapping (line 59) | def test_build_migration_update_index_mapping(self): method test_build_migration_multi_operation (line 73) | def test_build_migration_multi_operation(self): method test_handle_empty_does_not_create_operations (line 103) | def test_handle_empty_does_not_create_operations(self): method test_handle_fails_for_invalid_migration_name (line 112) | def test_handle_fails_for_invalid_migration_name(self): method test_build_migration (line 117) | def test_build_migration(self): method test_build_migration_fails_for_multiple_operations_on_the_same_index (line 134) | def test_build_migration_fails_for_multiple_operations_on_the_same_ind... method test_arrange_migration_changes_generates_correct_migration_name (line 145) | def test_arrange_migration_changes_generates_correct_migration_name(se... method test_adapter_type (line 168) | def test_adapter_type(self): method test_adapter_type_raises_argumenttypeerror_for_invalid_cname (line 172) | def test_adapter_type_raises_argumenttypeerror_for_invalid_cname(self): method test_adapter_and_name_type (line 179) | def test_adapter_and_name_type(self): method test_adapter_and_name_type_with_new_name (line 184) | def test_adapter_and_name_type_with_new_name(self): method test_adapter_and_name_type_raises_argumenttypeerror_for_empty_new_name (line 189) | def test_adapter_and_name_type_raises_argumenttypeerror_for_empty_new_... method test_adapter_and_properties_type (line 195) | def test_adapter_and_properties_type(self): method test_adapter_and_properties_type_returns_all_properties_if_none_specified (line 200) | def test_adapter_and_properties_type_returns_all_properties_if_none_sp... method test_adapter_and_properties_type_raises_argumenttypeerror_for_invalid_property_name (line 205) | def test_adapter_and_properties_type_raises_argumenttypeerror_for_inva... method test_adapter_and_properties_type_raises_argumenttypeerror_for_empty_property_list (line 211) | def test_adapter_and_properties_type_raises_argumenttypeerror_for_empt... function sort_ops (line 218) | def sort_ops(operation): FILE: corehq/apps/es/tests/test_domain_adapter.py class TestFromPythonInDomain (line 8) | class TestFromPythonInDomain(TestCase): method setUpClass (line 10) | def setUpClass(cls): method test_from_python_works_with_domain_objects (line 16) | def test_from_python_works_with_domain_objects(self): method test_from_python_works_with_domain_dicts (line 19) | def test_from_python_works_with_domain_dicts(self): method test_from_python_raises_for_other_objects (line 22) | def test_from_python_raises_for_other_objects(self): method test_index_can_handle_domain_dicts (line 25) | def test_index_can_handle_domain_dicts(self): method test_index_can_handle_domain_objects (line 35) | def test_index_can_handle_domain_objects(self): FILE: corehq/apps/es/tests/test_elastic_sync_multiplexed_command.py function mutiplexed_adapter_with_overriden_settings (line 35) | def mutiplexed_adapter_with_overriden_settings(): function mock_doc_adapter_from_cname (line 50) | def mock_doc_adapter_from_cname(cname): function mock_iter_index_cnames (line 54) | def mock_iter_index_cnames(): function _get_patched_adapter (line 58) | def _get_patched_adapter(adapter, multiplex_index, swap_index, secondary... class TestElasticSyncMultiplexedCommand (line 92) | class TestElasticSyncMultiplexedCommand(SimpleTestCase): method setUpClass (line 95) | def setUpClass(cls): method tearDown (line 99) | def tearDown(self) -> None: method test_invalid_index_canonical_raises (line 103) | def test_invalid_index_canonical_raises(self): method test_not_mutliplexed_index_raises (line 107) | def test_not_mutliplexed_index_raises(self): method test_pass_multiplexed_index_raise_no_errors (line 120) | def test_pass_multiplexed_index_raise_no_errors(self, sync_mock, clean... method test_reindex_command_copies_all_documents (line 125) | def test_reindex_command_copies_all_documents(self, mock_check_progress): class TestESSyncUtil (line 163) | class TestESSyncUtil(SimpleTestCase): method test_delete_index_fails_on_multiplexed_index (line 166) | def test_delete_index_fails_on_multiplexed_index(self, adapter_patch): method test_delete_index_raises_if_index_not_swapped (line 172) | def test_delete_index_raises_if_index_not_swapped(self, adapter_patch): method test_delete_index_fails_for_incorrect_user_input (line 189) | def test_delete_index_fails_for_incorrect_user_input(self, adapter_pat... method test_delete_index_deletes_the_older_index (line 211) | def test_delete_index_deletes_the_older_index(self, adapter_patch, inp... method test_remove_residual_indices_does_not_remove_known_indices (line 222) | def test_remove_residual_indices_does_not_remove_known_indices(self): method test_remove_residual_indices_remove_closed_indices (line 238) | def test_remove_residual_indices_remove_closed_indices(self): method test_remove_residual_indices_removes_unknown_indices (line 264) | def test_remove_residual_indices_removes_unknown_indices(self): method _setup_indexes (line 306) | def _setup_indexes(self, indexes): method _delete_indexes (line 310) | def _delete_indexes(self, indexes): class TestCopyCheckpointsBeforeIndexSwap (line 322) | class TestCopyCheckpointsBeforeIndexSwap(TestCase): method test_set_checkpoints_for_new_index_raises_on_non_multiplexed_index (line 324) | def test_set_checkpoints_for_new_index_raises_on_non_multiplexed_index... method test_set_checkpoints_for_new_index_raises_swapped_multiplexed_index (line 334) | def test_set_checkpoints_for_new_index_raises_swapped_multiplexed_inde... method test_set_checkpoints_for_new_index (line 343) | def test_set_checkpoints_for_new_index(self): FILE: corehq/apps/es/tests/test_ensure_indices_reindexed.py class TestEnsureIndicesReindexed (line 15) | class TestEnsureIndicesReindexed(SimpleTestCase): method setUp (line 16) | def setUp(self): method _create_index (line 28) | def _create_index(self, index_name, adapter=app_adapter): method _populate (line 34) | def _populate(self, entries, adapters): method test_get_both_adapters_from_cname (line 45) | def test_get_both_adapters_from_cname(self, primary_index_patch, secon... method test_get_doc_count_delta_percent (line 58) | def test_get_doc_count_delta_percent(self, primary_index_patch, second... method test_is_doc_count_difference_reasonable_when_diff_is_0 (line 77) | def test_is_doc_count_difference_reasonable_when_diff_is_0(self, patch... method test_is_doc_count_difference_reasonable_when_diff_is_not_0 (line 85) | def test_is_doc_count_difference_reasonable_when_diff_is_not_0(self, p... method test_is_doc_count_difference_reasonable_diff_gt_1_for_high_frequency_indices (line 93) | def test_is_doc_count_difference_reasonable_diff_gt_1_for_high_frequen... method test_is_doc_count_difference_reasonable_diff_lt_1_for_high_frequency_indices (line 101) | def test_is_doc_count_difference_reasonable_diff_lt_1_for_high_frequen... method test_is_doc_count_difference_reasonable_diff_lt_1_for_rest_indices (line 113) | def test_is_doc_count_difference_reasonable_diff_lt_1_for_rest_indices... method test_command_skips_if_current_es_version_greater (line 125) | def test_command_skips_if_current_es_version_greater(self, patched_fn): method test_command_raises_if_indices_missing (line 134) | def test_command_raises_if_indices_missing(self, primary_index_patch, ... method test_command_do_not_raise_if_indices_count_match (line 149) | def test_command_do_not_raise_if_indices_count_match(self, primary_ind... method test_command_raises_if_indices_count_does_not_match (line 166) | def test_command_raises_if_indices_count_does_not_match(self, primary_... FILE: corehq/apps/es/tests/test_esquery.py class TestESQuery (line 12) | class TestESQuery(ElasticTestMixin, SimpleTestCase): method _check_user_location_query (line 15) | def _check_user_location_query(self, query, with_ids): method test_basic_query (line 50) | def test_basic_query(self): method test_query_size (line 68) | def test_query_size(self): method test_form_query (line 90) | def test_form_query(self): method test_user_query (line 111) | def test_user_query(self): method test_filtered_forms (line 133) | def test_filtered_forms(self): method test_users_at_locations (line 158) | def test_users_at_locations(self): method test_remove_all_defaults (line 163) | def test_remove_all_defaults(self): method test_values_list (line 169) | def test_values_list(self): method test_sort (line 220) | def test_sort(self): method test_sort_raises_on__id_field (line 258) | def test_sort_raises_on__id_field(self): method test_exclude_source (line 262) | def test_exclude_source(self): method test_scroll_uses_scroll_size_from_query (line 287) | def test_scroll_uses_scroll_size_from_query(self): method test_scroll_without_query_size_uses_default_scroll_size (line 294) | def test_scroll_without_query_size_uses_default_scroll_size(self): method test_scroll_ids_uses_scroll_size_from_query (line 301) | def test_scroll_ids_uses_scroll_size_from_query(self): method test_scroll_ids_without_query_size_uses_default_scroll_size (line 308) | def test_scroll_ids_without_query_size_uses_default_scroll_size(self): method test_scroll_with_aggregations_raises (line 315) | def test_scroll_with_aggregations_raises(self): method _scroll_query_mock_assert (line 320) | def _scroll_query_mock_assert(self, **raw_query_assertions): method test_scroll_ids_to_disk_and_iter_docs (line 328) | def test_scroll_ids_to_disk_and_iter_docs(self): method test_scroll_ids_to_disk_and_iter_docs_does_not_raise_for_deleted_doc (line 345) | def test_scroll_ids_to_disk_and_iter_docs_does_not_raise_for_deleted_d... method test_exists_query (line 371) | def test_exists_query(self): FILE: corehq/apps/es/tests/test_esqueryset.py class TestESQuerySet (line 10) | class TestESQuerySet(TestCase): method test_response (line 47) | def test_response(self): method test_error (line 70) | def test_error(self): method test_flatten_field_dicts (line 75) | def test_flatten_field_dicts(self): method test_exclude_source (line 106) | def test_exclude_source(self): FILE: corehq/apps/es/tests/test_filters.py class TestFilters (line 13) | class TestFilters(ElasticTestMixin, SimpleTestCase): method test_nested_filter (line 15) | def test_nested_filter(self): method test_not_term_filter (line 56) | def test_not_term_filter(self): method test_not_or_rewrite (line 86) | def test_not_or_rewrite(self): method test_not_and_rewrite (line 130) | def test_not_and_rewrite(self): method test_geo_bounding_box (line 174) | def test_geo_bounding_box(self): method test_geo_shape (line 212) | def test_geo_shape(self): method test_geo_grid (line 259) | def test_geo_grid(self): class TestSourceFiltering (line 293) | class TestSourceFiltering(ElasticTestMixin, SimpleTestCase): method test_source_include (line 295) | def test_source_include(self): class TestFiltersRun (line 317) | class TestFiltersRun(SimpleTestCase): method _setup_data (line 319) | def _setup_data(self): method test_not_filter_edge_case (line 326) | def test_not_filter_edge_case(self): method test_doc_ids_filter (line 336) | def test_doc_ids_filter(self): FILE: corehq/apps/es/tests/test_form_adapter.py class TestFromPythonInForms (line 9) | class TestFromPythonInForms(TestCase): method setUpClass (line 12) | def setUpClass(cls): method test_from_python_works_with_form_objects (line 17) | def test_from_python_works_with_form_objects(self): method test_from_python_works_with_form_dicts (line 20) | def test_from_python_works_with_form_dicts(self): method test_from_python_raises_for_other_objects (line 23) | def test_from_python_raises_for_other_objects(self): method test_index_can_handle_form_dicts (line 26) | def test_index_can_handle_form_dicts(self): method test_index_can_handle_form_objects (line 37) | def test_index_can_handle_form_objects(self): FILE: corehq/apps/es/tests/test_migration_operations.py class BaseCase (line 30) | class BaseCase(TestCase): method tearDown (line 36) | def tearDown(self): method assertIndexExists (line 44) | def assertIndexExists(self, index): method assertIndexDoesNotExist (line 47) | def assertIndexDoesNotExist(self, index): method assertIndexMappingMatches (line 50) | def assertIndexMappingMatches(self, index, type_, mapping): method assertIndexHasAnalysis (line 60) | def assertIndexHasAnalysis(self, index, analysis): method assertIndexHasTuningSettings (line 66) | def assertIndexHasTuningSettings(self, index, settings_key): class TestCreateIndex (line 79) | class TestCreateIndex(BaseCase): method test_creates_index (line 96) | def test_creates_index(self): method test_creates_index_with_comment (line 105) | def test_creates_index_with_comment(self): method test_index_creation_is_skipped_if_es_version_not_targetted (line 119) | def test_index_creation_is_skipped_if_es_version_not_targetted(self): method test_index_creation_if_es_version_is_targetted (line 128) | def test_index_creation_if_es_version_is_targetted(self): method test_fails_if_index_exists (line 137) | def test_fails_if_index_exists(self): method test_reverse_deletes_index (line 145) | def test_reverse_deletes_index(self): method test_reverse_fails_if_index_does_not_exist (line 152) | def test_reverse_fails_if_index_does_not_exist(self): method test_render_index_metadata (line 158) | def test_render_index_metadata(self): method test_render_index_metadata_returns_dict_copies_for_mapping (line 181) | def test_render_index_metadata_returns_dict_copies_for_mapping(self): method test_render_index_metadata_adds_meta_created (line 198) | def test_render_index_metadata_adds_meta_created(self): method test_render_index_metadata_overrides_existing_created_date (line 209) | def test_render_index_metadata_overrides_existing_created_date(self): method test_render_index_metadata_uses_existing_comment_if_op_comment_is_none (line 219) | def test_render_index_metadata_uses_existing_comment_if_op_comment_is_... method test_render_index_metadata_does_not_add_missing_comment_if_op_comment_is_none (line 229) | def test_render_index_metadata_does_not_add_missing_comment_if_op_comm... method test_render_index_metadata_sets_comment_if_op_comment_is_not_none (line 235) | def test_render_index_metadata_sets_comment_if_op_comment_is_not_none(... method test_render_index_metadata_returns_verbatim_analysis (line 245) | def test_render_index_metadata_returns_verbatim_analysis(self): method test_render_index_metadata_uses_environment_tuning_settings (line 250) | def test_render_index_metadata_uses_environment_tuning_settings(self): method test_describe (line 256) | def test_describe(self): method test_deconstruct (line 263) | def test_deconstruct(self): method test_deconstruct_omits_mapping__meta (line 271) | def test_deconstruct_omits_mapping__meta(self): method test_deconstruct_with_comment (line 293) | def test_deconstruct_with_comment(self): method test_deconstruct_with_es_versions (line 305) | def test_deconstruct_with_es_versions(self): class TestCreateIndexIfNotExists (line 320) | class TestCreateIndexIfNotExists(BaseCase): method setUpClass (line 338) | def setUpClass(cls): method test_does_not_fail_if_index_exists (line 342) | def test_does_not_fail_if_index_exists(self): method test_creates_index_if_not_exists (line 362) | def test_creates_index_if_not_exists(self): method test_reverse_is_noop (line 370) | def test_reverse_is_noop(self): class TestDeleteOnlyIfIndexExists (line 379) | class TestDeleteOnlyIfIndexExists(BaseCase): method setUpClass (line 382) | def setUpClass(cls): method test_deletes_index_if_exists (line 386) | def test_deletes_index_if_exists(self): method test_does_not_fail_if_index_does_not_exists (line 394) | def test_does_not_fail_if_index_does_not_exists(self): method test_reverse_is_noop (line 401) | def test_reverse_is_noop(self): class TestDeleteIndex (line 411) | class TestDeleteIndex(BaseCase): method test_deletes_index (line 413) | def test_deletes_index(self): method test_deletes_index_skipped_if_targetted_es_version_not_match (line 420) | def test_deletes_index_skipped_if_targetted_es_version_not_match(self): method test_deletes_index_when_target_es_version_matches (line 428) | def test_deletes_index_when_target_es_version_matches(self): method test_fails_if_index_does_not_exist (line 436) | def test_fails_if_index_does_not_exist(self): method test_is_irreversible_without_reverse_params (line 442) | def test_is_irreversible_without_reverse_params(self): method test_reverse_creates_index_using_reverse_params (line 447) | def test_reverse_creates_index_using_reverse_params(self): method test_reverse_fails_if_index_exists (line 468) | def test_reverse_fails_if_index_exists(self): method test_describe (line 478) | def test_describe(self): method test_deconstruct (line 485) | def test_deconstruct(self): method test_deconstruct_with_reverse_params (line 493) | def test_deconstruct_with_reverse_params(self): class TestUpdateIndexMapping (line 508) | class TestUpdateIndexMapping(BaseCase): method setUp (line 510) | def setUp(self): method test_updates_meta (line 523) | def test_updates_meta(self): method test_updates_meta_comment_if_provided (line 537) | def test_updates_meta_comment_if_provided(self): method test_adds_new_properties (line 545) | def test_adds_new_properties(self): method test_adds_new_properties_if_targeted_es_version_matches (line 559) | def test_adds_new_properties_if_targeted_es_version_matches(self): method test_new_properties_not_added_if_targeted_es_version_not_matches (line 574) | def test_new_properties_not_added_if_targeted_es_version_not_matches(s... method test_updates_only_meta_and_properties_items_and_retains_all_others (line 590) | def test_updates_only_meta_and_properties_items_and_retains_all_others... method test_extends_existing_property_fields (line 604) | def test_extends_existing_property_fields(self): method test_tolerates_existing_property_noop (line 620) | def test_tolerates_existing_property_noop(self): method test_fails_for_existing_property_type_change (line 630) | def test_fails_for_existing_property_type_change(self): method test_fails_for_changing_existing_property_index_values (line 648) | def test_fails_for_changing_existing_property_index_values(self): method test_mapping_update_generates_diff (line 666) | def test_mapping_update_generates_diff(self): method test_mapping_update_with_print_diff_false_does_not_generate_diff (line 707) | def test_mapping_update_with_print_diff_false_does_not_generate_diff(s... method test_fails_if_index_does_not_exist (line 719) | def test_fails_if_index_does_not_exist(self): method test_raises_mappingupdatefailed_if_acknowledgement_is_missing (line 726) | def test_raises_mappingupdatefailed_if_acknowledgement_is_missing(self): method test_is_irreversible (line 734) | def test_is_irreversible(self): method test_describe (line 739) | def test_describe(self): method test_deconstruct (line 746) | def test_deconstruct(self): method test_deconstruct_with_comment (line 754) | def test_deconstruct_with_comment(self): method test_deconstruct_no_print_diff (line 769) | def test_deconstruct_no_print_diff(self): class TestMakeMappingMeta (line 779) | class TestMakeMappingMeta(SimpleTestCase): method test_make_mapping_meta_adds_created_utcnow_as_isoformat (line 781) | def test_make_mapping_meta_adds_created_utcnow_as_isoformat(self): method test_make_mapping_only_adds_created_and_comment (line 789) | def test_make_mapping_only_adds_created_and_comment(self): method test_make_mapping_meta_omits_comment_by_default (line 795) | def test_make_mapping_meta_omits_comment_by_default(self): method test_make_mapping_meta_adds_comment_if_provided (line 798) | def test_make_mapping_meta_adds_comment_if_provided(self): class TestMappingTransformFunctions (line 803) | class TestMappingTransformFunctions(SimpleTestCase): method test_transform_string_to_text_and_keyword (line 805) | def test_transform_string_to_text_and_keyword(self): function get_datetime_mock (line 832) | def get_datetime_mock(created): class TestMigration (line 857) | class TestMigration(Migration): method __init__ (line 859) | def __init__(self, operation): method apply (line 863) | def apply(self): method unapply (line 867) | def unapply(self): FILE: corehq/apps/es/tests/test_queries.py class TestQueries (line 12) | class TestQueries(TestCase): method assertHasQuery (line 14) | def assertHasQuery(self, es_query, desired_query): method test_query (line 22) | def test_query(self): method test_null_query_string_queries (line 26) | def test_null_query_string_queries(self): method test_basic_query_string_query (line 33) | def test_basic_query_string_query(self): method test_query_with_fields (line 43) | def test_query_with_fields(self): method test_complex_query_with_fields (line 54) | def test_complex_query_with_fields(self): method test_match_raises_with_invalid_operator (line 67) | def test_match_raises_with_invalid_operator(self): function test_valid_geo_distance (line 72) | def test_valid_geo_distance(): function test_invalid_geo_distance (line 87) | def test_invalid_geo_distance(): FILE: corehq/apps/es/tests/test_sms.py class TestSMSES (line 9) | class TestSMSES(ElasticTestMixin, SimpleTestCase): method test_processed_or_incoming (line 10) | def test_processed_or_incoming(self): FILE: corehq/apps/es/tests/test_sorting.py class TestESSort (line 6) | class TestESSort(SimpleTestCase): method test_regular_sort (line 7) | def test_regular_sort(self): method test_nested_sort (line 12) | def test_nested_sort(self): FILE: corehq/apps/es/tests/test_test_utils.py class TestSetupAndCleanups (line 13) | class TestSetupAndCleanups(SimpleTestCase): class TestSimpleTestCase (line 15) | class TestSimpleTestCase(SimpleTestCase): method test_no_setup (line 21) | def test_no_setup(self): method test_no_cleanups (line 27) | def test_no_cleanups(self): method test_no_class_setup (line 35) | def test_no_class_setup(self): method test_no_class_cleanups (line 43) | def test_no_class_cleanups(self): function test_setup_tolerates_existing_index (line 57) | def test_setup_tolerates_existing_index(): function test_setup_cleanup_index (line 77) | def test_setup_cleanup_index(): function test_setup_cleanup_class_index (line 93) | def test_setup_cleanup_class_index(): class TestPartialESTest (line 108) | class TestPartialESTest(SimpleTestCase): method test_no_pet_indexes_exist (line 111) | def test_no_pet_indexes_exist(self): method test_only_cat_index_exists (line 116) | def test_only_cat_index_exists(self): method test_only_dog_index_exists (line 121) | def test_only_dog_index_exists(self): function test_pig_index_exists (line 128) | def test_pig_index_exists(): function test_pig_index_does_not_exist (line 133) | def test_pig_index_does_not_exist(): function assert_index_exists (line 137) | def assert_index_exists(adapter): function assert_not_index_exists (line 143) | def assert_not_index_exists(adapter): function test_setup_class_expects_classmethod (line 150) | def test_setup_class_expects_classmethod(): function test_temporary_index (line 163) | def test_temporary_index(args): function test_temporary_index_fails_with_invalid_args (line 180) | def test_temporary_index_fails_with_invalid_args(has_index, type_, mappi... FILE: corehq/apps/es/tests/test_user_adapter.py class TestFromPythonInElasticUser (line 10) | class TestFromPythonInElasticUser(TestCase): method setUpClass (line 12) | def setUpClass(cls): method test_from_python_works_with_user_objects (line 28) | def test_from_python_works_with_user_objects(self): method test_from_python_works_with_user_dicts (line 32) | def test_from_python_works_with_user_dicts(self): method test_from_python_removes_password_field (line 36) | def test_from_python_removes_password_field(self): method test_from_python_works_fine_if_password_field_not_present (line 42) | def test_from_python_works_fine_if_password_field_not_present(self): method test_from_python_raises_for_other_objects (line 48) | def test_from_python_raises_for_other_objects(self): method test_index_can_handle_user_objects (line 51) | def test_index_can_handle_user_objects(self): class TestUserFilters (line 62) | class TestUserFilters(TestCase): method setUpClass (line 65) | def setUpClass(cls): method test_demo_users_filter (line 101) | def test_demo_users_filter(self): method test_commcareuser_user_domain_membership (line 108) | def test_commcareuser_user_domain_membership(self): method test_web_user_domain_membership (line 114) | def test_web_user_domain_membership(self): method test_list_of_domains (line 125) | def test_list_of_domains(self): FILE: corehq/apps/es/tests/test_users_es.py class TestUserDataFilters (line 20) | class TestUserDataFilters(TestCase): method setUpClass (line 23) | def setUpClass(cls): method test_missing_or_empty_user_data_property (line 65) | def test_missing_or_empty_user_data_property(self): method test_missing_or_empty_user_data_multiple_properties (line 74) | def test_missing_or_empty_user_data_multiple_properties(self): method test_missing_user_data_property (line 84) | def test_missing_user_data_property(self): method test_empty_user_data_property (line 93) | def test_empty_user_data_property(self): class TestIsActiveOnDomain (line 104) | class TestIsActiveOnDomain(TestCase): method setUpTestData (line 106) | def setUpTestData(cls): method make_cc_user (line 134) | def make_cc_user(cls, username, domain, is_active=True): method make_web_user (line 143) | def make_web_user(cls, username, *, active_domains=[], inactive_domain... method test_get_all (line 154) | def test_get_all(self): method test_get_active_in_domain (line 172) | def test_get_active_in_domain(self): method test_get_inactive_in_domain (line 182) | def test_get_inactive_in_domain(self): method test_get_all_in_domain (line 194) | def test_get_all_in_domain(self): method test_get_active_in_domains (line 210) | def test_get_active_in_domains(self): method test_get_inactive_in_domains (line 226) | def test_get_inactive_in_domains(self): method test_iter_web_user_emails (line 242) | def test_iter_web_user_emails(self): method test_exclude_dimagi_users (line 251) | def test_exclude_dimagi_users(self): FILE: corehq/apps/es/tests/test_utils.py function test_es_format_datetime (line 31) | def test_es_format_datetime(date_or_datetime, expected): class TestElasticJSONSerializer (line 37) | class TestElasticJSONSerializer(SimpleTestCase): method test_raises_elastic_exception (line 39) | def test_raises_elastic_exception(self): class TestMappingsUtilsNoIndex (line 48) | class TestMappingsUtilsNoIndex(SimpleTestCase): method test_sorted_mapping (line 50) | def test_sorted_mapping(self): FILE: corehq/apps/es/tests/test_verify_reindex.py class TestVerifyReindex (line 8) | class TestVerifyReindex(SimpleTestCase): method setUpClass (line 11) | def setUpClass(cls): method test__parse_reindex_response_with_success_log (line 20) | def test__parse_reindex_response_with_success_log(self): method test__parse_reindex_response_with_error_logs (line 26) | def test__parse_reindex_response_with_error_logs(self): method test_verify_reindex_command_with_error_log (line 33) | def test_verify_reindex_command_with_error_log(self): method test_verify_reindex_command_with_success_log (line 42) | def test_verify_reindex_command_with_success_log(self): method test_verify_reindex_command_with_cancelled_log (line 48) | def test_verify_reindex_command_with_cancelled_log(self): method test_verify_reindex_command_with_invalid_log (line 55) | def test_verify_reindex_command_with_invalid_log(self): FILE: corehq/apps/es/tests/utils.py class TEST_ES_INFO (line 45) | class TEST_ES_INFO: class ElasticTestMixin (line 50) | class ElasticTestMixin(object): method setUpClass (line 53) | def setUpClass(cls): method tearDownClass (line 61) | def tearDownClass(cls): method validate_query (line 65) | def validate_query(self, query): method checkQuery (line 78) | def checkQuery(self, query, expected_json, is_raw_query=False, validat... function es_test (line 99) | def es_test(test=None, requires=None, setup_class=False): function _index_operations (line 135) | def _index_operations(adapters, comment): function _decorate_test_function (line 158) | def _decorate_test_function(test, operations): function _add_setup_and_cleanup (line 175) | def _add_setup_and_cleanup(test_class, setup_class, operations): function _run_create_index_operation (line 223) | def _run_create_index_operation(index_name, operation): function temporary_index (line 240) | def temporary_index(index, type_=None, mapping=None, *, purge=True): function populate_es_index (line 257) | def populate_es_index(models, index_cname): function populate_user_index (line 264) | def populate_user_index(users): function case_search_es_setup (line 268) | def case_search_es_setup(domain, case_blocks): function populate_case_search_index (line 280) | def populate_case_search_index(cases): function docs_from_result (line 284) | def docs_from_result(result): function docs_to_dict (line 294) | def docs_to_dict(docs): class TestDoc (line 316) | class TestDoc: method __init__ (line 319) | def __init__(self, id=None, value=None): method entropy (line 324) | def entropy(self): method __repr__ (line 329) | def __repr__(self): class TestDocumentAdapter (line 334) | class TestDocumentAdapter(ElasticDocumentAdapter): method from_python (line 353) | def from_python(cls, doc): FILE: corehq/apps/es/transient_util.py function from_dict_with_possible_id (line 13) | def from_dict_with_possible_id(doc): function doc_adapter_from_cname (line 22) | def doc_adapter_from_cname(index_cname, for_export=False): function doc_adapter_from_index_name (line 33) | def doc_adapter_from_index_name(index_name, for_export=False): function _get_doc_adapter (line 43) | def _get_doc_adapter(adapter, for_export): function iter_doc_adapters (line 50) | def iter_doc_adapters(): function iter_index_cnames (line 55) | def iter_index_cnames(): function populate_doc_adapter_map (line 60) | def populate_doc_adapter_map(): function add_dynamic_adapter (line 96) | def add_dynamic_adapter(descriptor, index_, type_, mapping_): FILE: corehq/apps/es/users.py class UserES (line 37) | class UserES(HQESQuery): method builtin_filters (line 44) | def builtin_filters(self): class ElasticUser (line 69) | class ElasticUser(ElasticDocumentAdapter): method model_cls (line 75) | def model_cls(self): method mapping (line 80) | def mapping(self): method _from_dict (line 84) | def _from_dict(self, user_dict): function domain (line 127) | def domain(domain, *, include_active=True, include_inactive=False): function is_active (line 152) | def is_active(domain): function is_inactive (line 162) | def is_inactive(domain): function account_confirmed (line 172) | def account_confirmed(is_confirmed=False): function active_on_any_domain (line 176) | def active_on_any_domain(): function analytics_enabled (line 185) | def analytics_enabled(enabled=True): function username (line 195) | def username(username): function web_users (line 199) | def web_users(): function mobile_users (line 203) | def mobile_users(): function unknown_users (line 207) | def unknown_users(): function admin_users (line 215) | def admin_users(): function demo_users (line 223) | def demo_users(): function exclude_dimagi_users (line 228) | def exclude_dimagi_users(): function created (line 233) | def created(gt=None, gte=None, lt=None, lte=None): function last_logged_in (line 237) | def last_logged_in(gt=None, gte=None, lt=None, lte=None): function last_modified (line 241) | def last_modified(gt=None, gte=None, lt=None, lte=None): function user_ids (line 245) | def user_ids(user_ids): function location (line 249) | def location(location_id): function is_practice_user (line 260) | def is_practice_user(practice_mode=True): function is_admin (line 264) | def is_admin(domain): function role_id (line 274) | def role_id(role_id): function _user_data (line 281) | def _user_data(key, filter_): function query_user_data (line 292) | def query_user_data(key, value): function login_as_user (line 296) | def login_as_user(value): function _missing_user_data_property (line 300) | def _missing_user_data_property(property_name): function _empty_user_data_property (line 310) | def _empty_user_data_property(property_name): function missing_or_empty_user_data_property (line 322) | def missing_or_empty_user_data_property(property_name): function iter_web_user_emails (line 332) | def iter_web_user_emails(domain_name): FILE: corehq/apps/es/utils.py class ElasticJSONSerializer (line 16) | class ElasticJSONSerializer(object): method loads (line 22) | def loads(self, s): method dumps (line 28) | def dumps(self, data): function values_list (line 38) | def values_list(hits, *fields, **kwargs): function flatten_field_dict (line 55) | def flatten_field_dict(results, fields_property='fields'): function es_format_datetime (line 74) | def es_format_datetime(val): function check_task_progress (line 88) | def check_task_progress(task_id, just_once=False): function _format_timedelta (line 157) | def _format_timedelta(td): function sorted_mapping (line 162) | def sorted_mapping(mapping): function mapping_sort_key (line 174) | def mapping_sort_key(item): function index_runtime_name (line 179) | def index_runtime_name(name): function get_es_reindex_setting_value (line 184) | def get_es_reindex_setting_value(name, default): function get_user_domain_memberships (line 198) | def get_user_domain_memberships(user): FILE: corehq/apps/events/migrations/0001_add_events_model.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/events/migrations/0002_attendancetrackingconfig.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/events/migrations/0003_event_attendance_taker_ids.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/events/migrations/0004_event_id_case_id.py function _recreate_events (line 16) | def _recreate_events(apps, schema_editor): function _get_old_case_id (line 35) | def _get_old_case_id(event): function _get_expected_attendees (line 39) | def _get_expected_attendees(event): function _delete_old_style (line 49) | def _delete_old_style(case_factory, event): function _close_ext_cases (line 56) | def _close_ext_cases(case_factory, event): function _set_expected_attendees (line 69) | def _set_expected_attendees(case_factory, event, attendees): class Migration (line 102) | class Migration(migrations.Migration): FILE: corehq/apps/events/migrations/0005_rename_alter_event__attendance_taker_ids.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/apps/events/migrations/0006_remove_end_date_constraint.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/events/migrations/0007_alter_event_attendee_list_status.py function _set_status_under_review (line 4) | def _set_status_under_review(apps, schema_editor): class Migration (line 16) | class Migration(migrations.Migration): FILE: corehq/apps/events/migrations/0008_alter_event__case_id.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/events/migrations/0009_attendeemodel.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/events/migrations/0010_event_location.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/apps/experiments/admin.py class ExperimentEnablerAdmin (line 7) | class ExperimentEnablerAdmin(admin.ModelAdmin): FILE: corehq/apps/experiments/experiment.py class Experiment (line 13) | class Experiment: method __call__ (line 38) | def __call__(self, func=None, /, **kw): method tags (line 46) | def tags(self): method decorate (line 49) | def decorate(self, func): method _run (line 91) | def _run(self, enabled, func, args, kwargs): method _compare (line 113) | def _compare(self, old_result, new_result, old_error, new_error, func,... method _warn_on_duplicate (line 145) | def _warn_on_duplicate(self): function describe (line 154) | def describe(func, args, kwargs, vlen=20): FILE: corehq/apps/experiments/migrations/0001_initial.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/experiments/models.py class ExperimentEnabler (line 9) | class ExperimentEnabler(models.Model): class Meta (line 29) | class Meta: function is_enabled (line 34) | def is_enabled(campaign, path): function should_record_metrics (line 46) | def should_record_metrics(campaign, path): function _get_enabled_percent_for_path (line 54) | def _get_enabled_percent_for_path(campaign, path): function _get_enablers (line 70) | def _get_enablers(campaign): FILE: corehq/apps/experiments/tests/test_enabler.py function enabled (line 19) | def enabled(percent, path=FUNC_PATH, campaign='test'): class TestExperimentEnabled (line 33) | class TestExperimentEnabled(TestCase): method test_disabled_experiment_with_metrics_disabled (line 36) | def test_disabled_experiment_with_metrics_disabled(self): method test_error_in_disabled_experiment_with_metrics_disabled (line 45) | def test_error_in_disabled_experiment_with_metrics_disabled(self): method test_disabled_experiment (line 58) | def test_disabled_experiment(self): method test_error_in_disabled_experiment (line 72) | def test_error_in_disabled_experiment(self): method test_experiment_run_old_and_new (line 90) | def test_experiment_run_old_and_new(self): method test_error_in_experiment_run_old_and_new (line 108) | def test_error_in_experiment_run_old_and_new(self): method test_disabled_experiment_run_only_new (line 130) | def test_disabled_experiment_run_only_new(self): method test_error_in_disabled_experiment_run_only_new (line 144) | def test_error_in_disabled_experiment_run_only_new(self): method test_enabled_experiment_with_metrics_disabled (line 162) | def test_enabled_experiment_with_metrics_disabled(self): method test_error_in_new_only_experiment_with_metrics_disabled (line 171) | def test_error_in_new_only_experiment_with_metrics_disabled(self): function random_seed (line 185) | def random_seed(): class TestIsEnabled (line 193) | class TestIsEnabled(TestCase): method test_0_percent (line 196) | def test_0_percent(self): method test_1_percent (line 201) | def test_1_percent(self): method test_49_percent (line 206) | def test_49_percent(self): method test_75_percent (line 211) | def test_75_percent(self): method test_100_percent (line 216) | def test_100_percent(self): method test_caching (line 221) | def test_caching(self): method test_parent_package_is_disabled (line 236) | def test_parent_package_is_disabled(self): method test_parent_package_is_enabled (line 243) | def test_parent_package_is_enabled(self): method test_parent_package_new_only_enabled_should_not_record_metrics (line 250) | def test_parent_package_new_only_enabled_should_not_record_metrics(self): method test_all_packages_is_disabled (line 257) | def test_all_packages_is_disabled(self): method test_all_packages_enabled (line 264) | def test_all_packages_enabled(self): method test_all_packages_new_only_enabled_should_not_record_metrics (line 271) | def test_all_packages_new_only_enabled_should_not_record_metrics(self): method test_specific_path_wins (line 279) | def test_specific_path_wins(self): method test_other_campaign (line 286) | def test_other_campaign(self): function make_func (line 293) | def make_func(error=None): FILE: corehq/apps/experiments/tests/test_experiment.py function test_experiment (line 19) | def test_experiment(): function test_method_experiment (line 35) | def test_method_experiment(): function test_experiment_timing_metrics (line 51) | def test_experiment_timing_metrics(): function test_experiment_negative_timing_metrics (line 74) | def test_experiment_negative_timing_metrics(): function test_experiment_with_old_error (line 89) | def test_experiment_with_old_error(): function test_experiment_with_new_error (line 108) | def test_experiment_with_new_error(): function test_experiment_with_matching_errors (line 125) | def test_experiment_with_matching_errors(): function test_experiment_with_mismatched_errors (line 138) | def test_experiment_with_mismatched_errors(): function test_is_equal_failure (line 155) | def test_is_equal_failure(): function test_experiment_with_long_arg (line 171) | def test_experiment_with_long_arg(): function test_warning_on_duplicate_experiment (line 181) | def test_warning_on_duplicate_experiment(): function enable_all_experiments (line 193) | def enable_all_experiments(): function fixed_time (line 202) | def fixed_time(times): FILE: corehq/apps/export/const.py class SharingOption (line 112) | class SharingOption(object): FILE: corehq/apps/export/dbaccessors.py function get_latest_case_export_schema (line 8) | def get_latest_case_export_schema(domain, case_type): function get_latest_form_export_schema (line 15) | def get_latest_form_export_schema(domain, app_id, xmlns): function _get_latest_export_schema (line 22) | def _get_latest_export_schema(cls, key): function get_case_inferred_schema (line 35) | def get_case_inferred_schema(domain, case_type): function get_form_inferred_schema (line 51) | def get_form_inferred_schema(domain, app_id, xmlns): function get_case_exports_by_domain (line 67) | def get_case_exports_by_domain(domain): function get_form_exports_by_domain (line 73) | def get_form_exports_by_domain(domain): function get_brief_exports (line 79) | def get_brief_exports(domain, form_or_case=None): function get_brief_deid_exports (line 90) | def get_brief_deid_exports(domain, form_or_case=None): function get_export_count_by_domain (line 105) | def get_export_count_by_domain(domain): function get_deid_export_count (line 118) | def get_deid_export_count(domain): function _get_export_instance (line 129) | def _get_export_instance(cls, key, include_docs=True): function get_daily_saved_export_ids_for_auto_rebuild (line 142) | def get_daily_saved_export_ids_for_auto_rebuild(accessed_after): function get_properly_wrapped_export_instance (line 168) | def get_properly_wrapped_export_instance(doc_id): function _properly_wrap_export_instance (line 174) | def _properly_wrap_export_instance(doc): function delete_all_export_data_schemas (line 186) | def delete_all_export_data_schemas(): function delete_all_export_instances (line 196) | def delete_all_export_instances(): function is_standard (line 205) | def is_standard(export): function is_daily_saved_export (line 210) | def is_daily_saved_export(export): function is_excel_integration (line 216) | def is_excel_integration(export): function is_odata_export (line 222) | def is_odata_export(export): class ODataExportFetcher (line 226) | class ODataExportFetcher: method get_export_count (line 227) | def get_export_count(self, domain): method get_exports (line 230) | def get_exports(self, domain): method _get_odata_exports (line 242) | def _get_odata_exports(self, domain): FILE: corehq/apps/export/det/base.py class DETConfig (line 19) | class DETConfig: method table_names (line 24) | def table_names(self): method get_table (line 27) | def get_table(self, name): method export_to_file (line 32) | def export_to_file(self, output_file): class DETTable (line 43) | class DETTable: method get_sheet_data (line 50) | def get_sheet_data(self): class DETRow (line 74) | class DETRow: FILE: corehq/apps/export/det/exceptions.py class DETConfigError (line 3) | class DETConfigError(Exception): FILE: corehq/apps/export/det/schema_generator.py class DefaultDETSchemaHelper (line 49) | class DefaultDETSchemaHelper(object): method get_path (line 53) | def get_path(self, input_column): method transform_path (line 57) | def transform_path(input_path): method get_map_via (line 61) | def get_map_via(export_item): class CaseDETSchemaHelper (line 70) | class CaseDETSchemaHelper(DefaultDETSchemaHelper): method __init__ (line 74) | def __init__(self, dd_property_types): method get_path (line 77) | def get_path(self, input_column): method get_map_via (line 88) | def get_map_via(self, export_item): class FormDETSchemaHelper (line 95) | class FormDETSchemaHelper(DefaultDETSchemaHelper): method transform_path (line 100) | def transform_path(input_path): class DatasourceDETSchemaHelper (line 105) | class DatasourceDETSchemaHelper(DefaultDETSchemaHelper): class RepeatDETSchemaHelper (line 111) | class RepeatDETSchemaHelper(DefaultDETSchemaHelper): method __init__ (line 115) | def __init__(self, base_path): method transform_path (line 118) | def transform_path(self, input_path): function generate_from_export_instance (line 123) | def generate_from_export_instance(export_instance, output_file): function generate_from_case_export_instance (line 136) | def generate_from_case_export_instance(export_instance, output_file): function generate_from_datasource_export_instance (line 159) | def generate_from_datasource_export_instance(export_instance, output_file): function _get_dd_property_types (line 177) | def _get_dd_property_types(domain, case_type): function _dd_type_to_det_type (line 195) | def _dd_type_to_det_type(data_dictionary_datatype): function generate_from_form_export_instance (line 202) | def generate_from_form_export_instance(export_instance, output_file): function _is_main_form_table (line 237) | def _is_main_form_table(table_configuration): function _add_id_row_if_necessary (line 241) | def _add_id_row_if_necessary(output_table, source_value): function _add_rows_for_table (line 251) | def _add_rows_for_table(input_table, output_table, helper=None): function _get_det_row_for_export_column (line 259) | def _get_det_row_for_export_column(column, helper): FILE: corehq/apps/export/esaccessors.py function get_form_export_base_query (line 8) | def get_form_export_base_query(domain, app_id, xmlns, include_errors): function get_case_export_base_query (line 22) | def get_case_export_base_query(domain, case_type): function get_sms_export_base_query (line 30) | def get_sms_export_base_query(domain): function get_groups_user_ids (line 37) | def get_groups_user_ids(group_ids): function get_case_name (line 51) | def get_case_name(case_id): FILE: corehq/apps/export/exceptions.py class ExportAppException (line 4) | class ExportAppException(Exception): class BadExportConfiguration (line 8) | class BadExportConfiguration(ExportAppException): class ExportFormValidationException (line 12) | class ExportFormValidationException(Exception): class ExportAsyncException (line 16) | class ExportAsyncException(Exception): class ExportODataDuplicateLabelException (line 20) | class ExportODataDuplicateLabelException(Exception): class RejectedStaleExport (line 24) | class RejectedStaleExport(Exception): class InvalidLoginException (line 28) | class InvalidLoginException(Exception): class ExportTooLargeException (line 32) | class ExportTooLargeException(Exception): class CaseTypeOrAppLimitExceeded (line 36) | class CaseTypeOrAppLimitExceeded(Exception): method __init__ (line 46) | def __init__(self, msg=None, *args, **kwargs): class NoTablesException (line 52) | class NoTablesException(Exception): FILE: corehq/apps/export/export.py class ExportFile (line 31) | class ExportFile(object): method __init__ (line 34) | def __init__(self, path, format): method __enter__ (line 38) | def __enter__(self): method __exit__ (line 42) | def __exit__(self, exc_type, exc_val, exc_tb): class _ExportWriter (line 46) | class _ExportWriter(object): method __init__ (line 51) | def __init__(self, writer, temp_path): method open (line 58) | def open(self, export_instances): method write (line 100) | def write(self, table, row): method get_preview (line 116) | def get_preview(self): class _PaginatedExportWriter (line 120) | class _PaginatedExportWriter(object): method __init__ (line 122) | def __init__(self, writer, temp_path): method open (line 132) | def open(self, export_instances): method _get_name (line 154) | def _get_name(self, export_instances): method _get_headers (line 161) | def _get_headers(self, export_instances): method _get_table_names (line 181) | def _get_table_names(self, export_instances): method _paged_table_index (line 203) | def _paged_table_index(self, table): method _get_paginated_headers (line 210) | def _get_paginated_headers(self): method _get_paginated_table_titles (line 228) | def _get_paginated_table_titles(self): method write (line 248) | def write(self, table, row): function get_export_writer (line 268) | def get_export_writer(export_instances, temp_path, allow_pagination=True): function get_export_download (line 289) | def get_export_download(domain, export_ids, exports_type, username, es_f... function get_export_file (line 306) | def get_export_file(export_instances, es_filters, temp_path, function get_export_documents (line 323) | def get_export_documents(export_instance, filters): function get_export_query (line 329) | def get_export_query(export_instance, filters): function get_export_size (line 342) | def get_export_size(export_instance, filters): function write_export_instance (line 346) | def write_export_instance(writer, export_instance, documents, function _time_in_milliseconds (line 413) | def _time_in_milliseconds(): function _record_datadog_export_duration (line 417) | def _record_datadog_export_duration(duration, doc_bytes, n_rows, tags): function _record_export_duration (line 423) | def _record_export_duration(duration, export): function _get_base_query (line 433) | def _get_base_query(export_instance): function rebuild_export (line 449) | def rebuild_export(export_instance, progress_tracker): function save_export_payload (line 469) | def save_export_payload(export, payload): FILE: corehq/apps/export/filters.py function _assert_user_types (line 18) | def _assert_user_types(user_types): class ExportFilter (line 26) | class ExportFilter(object): method to_es_filter (line 31) | def to_es_filter(self): class OR (line 38) | class OR(ExportFilter): method __init__ (line 40) | def __init__(self, *args): method to_es_filter (line 43) | def to_es_filter(self): class AND (line 47) | class AND(ExportFilter): method __init__ (line 49) | def __init__(self, *args): method to_es_filter (line 52) | def to_es_filter(self): class NOT (line 56) | class NOT(ExportFilter): method __init__ (line 57) | def __init__(self, _filter): method to_es_filter (line 60) | def to_es_filter(self): class TermFilter (line 64) | class TermFilter(ExportFilter): method __init__ (line 65) | def __init__(self, term, value): method to_es_filter (line 69) | def to_es_filter(self): class AppFilter (line 73) | class AppFilter(ExportFilter): method __init__ (line 78) | def __init__(self, app_id): method to_es_filter (line 81) | def to_es_filter(self): class RangeExportFilter (line 85) | class RangeExportFilter(ExportFilter): method __init__ (line 87) | def __init__(self, gt=None, gte=None, lt=None, lte=None): class OwnerFilter (line 94) | class OwnerFilter(ExportFilter): method __init__ (line 99) | def __init__(self, owner_id): method to_es_filter (line 102) | def to_es_filter(self): class OwnerTypeFilter (line 106) | class OwnerTypeFilter(ExportFilter): method __init__ (line 108) | def __init__(self, owner_type): method to_es_filter (line 112) | def to_es_filter(self): class IsClosedFilter (line 116) | class IsClosedFilter(ExportFilter): method __init__ (line 121) | def __init__(self, is_closed): method to_es_filter (line 124) | def to_es_filter(self): class NameFilter (line 128) | class NameFilter(TermFilter): method __init__ (line 130) | def __init__(self, case_name): class OpenedOnRangeFilter (line 135) | class OpenedOnRangeFilter(RangeExportFilter): method to_es_filter (line 137) | def to_es_filter(self): class OpenedByFilter (line 141) | class OpenedByFilter(ExportFilter): method __init__ (line 143) | def __init__(self, opened_by): method to_es_filter (line 146) | def to_es_filter(self): class ModifiedOnRangeFilter (line 150) | class ModifiedOnRangeFilter(RangeExportFilter): method to_es_filter (line 152) | def to_es_filter(self): class LastModifiedByFilter (line 156) | class LastModifiedByFilter(ExportFilter): method __init__ (line 158) | def __init__(self, last_modified_by): method to_es_filter (line 161) | def to_es_filter(self): class ClosedOnRangeFilter (line 165) | class ClosedOnRangeFilter(RangeExportFilter): method to_es_filter (line 167) | def to_es_filter(self): class ClosedByFilter (line 171) | class ClosedByFilter(TermFilter): method __init__ (line 173) | def __init__(self, closed_by): class GroupFilter (line 177) | class GroupFilter(ExportFilter): # Abstract base class method __init__ (line 180) | def __init__(self, group_ids): method to_es_filter (line 186) | def to_es_filter(self): class GroupOwnerFilter (line 191) | class GroupOwnerFilter(GroupFilter): class GroupLastModifiedByFilter (line 195) | class GroupLastModifiedByFilter(GroupFilter): class GroupClosedByFilter (line 199) | class GroupClosedByFilter(GroupFilter): class ReceivedOnRangeFilter (line 203) | class ReceivedOnRangeFilter(RangeExportFilter): method to_es_filter (line 205) | def to_es_filter(self): class FormSubmittedByFilter (line 209) | class FormSubmittedByFilter(ExportFilter): method __init__ (line 211) | def __init__(self, submitted_by): method to_es_filter (line 214) | def to_es_filter(self): class UserTypeFilter (line 218) | class UserTypeFilter(ExportFilter): method __init__ (line 220) | def __init__(self, user_types): method to_es_filter (line 224) | def to_es_filter(self): class GroupFormSubmittedByFilter (line 228) | class GroupFormSubmittedByFilter(GroupFilter): class SmsReceivedRangeFilter (line 232) | class SmsReceivedRangeFilter(RangeExportFilter): method to_es_filter (line 234) | def to_es_filter(self): FILE: corehq/apps/export/forms.py class DateSpanField (line 57) | class DateSpanField(forms.CharField): method clean (line 60) | def clean(self, value): class CreateExportTagForm (line 68) | class CreateExportTagForm(forms.Form): method __init__ (line 87) | def __init__(self, has_form_export_permissions, has_case_export_permis... method has_form_permissions_only (line 159) | def has_form_permissions_only(self): method has_case_permissions_only (line 163) | def has_case_permissions_only(self): method clean_model_type (line 166) | def clean_model_type(self): method clean (line 174) | def clean(self): class BaseFilterExportDownloadForm (line 193) | class BaseFilterExportDownloadForm(forms.Form): method __init__ (line 211) | def __init__(self, domain_object, *args, **kwargs): method extra_fields (line 223) | def extra_fields(self): method get_edit_url (line 230) | def get_edit_url(self, export): method get_export_filters (line 237) | def get_export_filters(self, request, data): method format_export_data (line 252) | def format_export_data(self, export): method get_mobile_user_and_group_slugs (line 263) | def get_mobile_user_and_group_slugs(self, data): class DashboardFeedFilterForm (line 271) | class DashboardFeedFilterForm(forms.Form): method __init__ (line 329) | def __init__(self, domain_object, *args, **kwargs): method clean (line 359) | def clean(self): method format_export_data (line 379) | def format_export_data(self, export): method layout_fields (line 390) | def layout_fields(self): method to_export_instance_filters (line 437) | def to_export_instance_filters(self, can_access_all_locations, accessi... method _to_case_export_instance_filters (line 459) | def _to_case_export_instance_filters(self, can_access_all_locations, a... method _to_form_export_instance_filters (line 481) | def _to_form_export_instance_filters(self, can_access_all_locations, a... method get_form_data_from_export_instance_filters (line 500) | def get_form_data_from_export_instance_filters(cls, export_instance_fi... class GenericFilterFormExportDownloadForm (line 542) | class GenericFilterFormExportDownloadForm(BaseFilterExportDownloadForm): method __init__ (line 552) | def __init__(self, domain_object, timezone, *args, **kwargs): method extra_fields (line 570) | def extra_fields(self): method format_export_data (line 578) | def format_export_data(self, export): class EmwfFilterExportMixin (line 586) | class EmwfFilterExportMixin(object): method _get_user_ids (line 593) | def _get_user_ids(self, mobile_user_and_group_slugs): method _get_locations_ids (line 600) | def _get_locations_ids(self, mobile_user_and_group_slugs): method _get_group_ids (line 607) | def _get_group_ids(self, mobile_user_and_group_slugs): method _get_selected_es_user_types (line 614) | def _get_selected_es_user_types(self, mobile_user_and_group_slugs): class AbstractExportFilterBuilder (line 623) | class AbstractExportFilterBuilder(object): method __init__ (line 626) | def __init__(self, domain_object, timezone): method get_user_ids_for_user_types (line 630) | def get_user_ids_for_user_types(self, admin, unknown, web, demo, commt... method _get_users_filter (line 670) | def _get_users_filter(self, user_ids): method _get_datespan_filter (line 677) | def _get_datespan_filter(self, datespan): method _get_locations_filter (line 689) | def _get_locations_filter(self, location_ids): class FormExportFilterBuilder (line 698) | class FormExportFilterBuilder(AbstractExportFilterBuilder): method _get_group_filter (line 702) | def _get_group_filter(self, group_ids): method _get_user_type_filters (line 706) | def _get_user_type_filters(self, user_types): method get_filters (line 727) | def get_filters(self, can_access_all_locations, accessible_location_id... method _create_user_filter (line 756) | def _create_user_filter(self, user_types, user_ids, group_ids, locatio... method _scope_filter (line 776) | def _scope_filter(self, accessible_location_ids, include_inactive_user... class CaseExportFilterBuilder (line 784) | class CaseExportFilterBuilder(AbstractExportFilterBuilder): method get_filters (line 788) | def get_filters(self, can_access_all_locations, accessible_location_id... method _get_filters_from_slugs (line 842) | def _get_filters_from_slugs(self, can_access_all_locations, selected_g... method _get_group_independent_filters (line 873) | def _get_group_independent_filters(self, can_access_all_locations, sel... method _get_selected_locations_and_descendants_ids (line 900) | def _get_selected_locations_and_descendants_ids(self, location_ids): method _scope_filter (line 903) | def _scope_filter(self, accessible_location_ids): class SmsExportFilterBuilder (line 912) | class SmsExportFilterBuilder(AbstractExportFilterBuilder): method get_filters (line 915) | def get_filters(self, datespan): class EmwfFilterFormExport (line 919) | class EmwfFilterFormExport(EmwfFilterExportMixin, GenericFilterFormExpor... method __init__ (line 927) | def __init__(self, domain_object, *args, **kwargs): method get_model_filter (line 931) | def get_model_filter(self, mobile_user_and_group_slugs, can_access_all... method get_edit_url (line 962) | def get_edit_url(self, export): class FilterCaseESExportDownloadForm (line 968) | class FilterCaseESExportDownloadForm(EmwfFilterExportMixin, BaseFilterEx... method __init__ (line 980) | def __init__(self, domain_object, timezone, *args, **kwargs): method get_edit_url (line 991) | def get_edit_url(self, export): method get_model_filter (line 996) | def get_model_filter(self, mobile_user_and_group_slugs, can_access_all... method extra_fields (line 1020) | def extra_fields(self): class FilterSmsESExportDownloadForm (line 1029) | class FilterSmsESExportDownloadForm(BaseFilterExportDownloadForm): method __init__ (line 1036) | def __init__(self, domain_object, timezone, *args, **kwargs): method get_edit_url (line 1047) | def get_edit_url(self, export): method get_filter (line 1050) | def get_filter(self): method get_export_filters (line 1055) | def get_export_filters(self, request, data): method extra_fields (line 1059) | def extra_fields(self): class DatasourceExportDownloadForm (line 1068) | class DatasourceExportDownloadForm(forms.Form): method __init__ (line 1075) | def __init__(self, domain, *args, **kwargs): method domain_datasources (line 1104) | def domain_datasources(domain): FILE: corehq/apps/export/management/commands/deid_export.py class Command (line 11) | class Command(BaseCommand): method add_arguments (line 14) | def add_arguments(self, parser): method handle (line 26) | def handle(self, **options): function _trim_csv_columns (line 96) | def _trim_csv_columns(path, dest, cols_to_keep): function _get_headers (line 105) | def _get_headers(path): function _get_columns_to_keep (line 110) | def _get_columns_to_keep(path, deid_columns): FILE: corehq/apps/export/management/commands/delete_exports.py class Command (line 8) | class Command(BaseCommand): method add_arguments (line 11) | def add_arguments(self, parser): method handle (line 23) | def handle(self, domain, **options): FILE: corehq/apps/export/management/commands/download_saved_export.py function download_saved_export (line 11) | def download_saved_export(export_id, dest_dir=None): class Command (line 27) | class Command(BaseCommand): method add_arguments (line 31) | def add_arguments(self, parser): method handle (line 44) | def handle(self, export_id, **options): FILE: corehq/apps/export/management/commands/process_skipped_pages.py class Command (line 23) | class Command(BaseCommand): method add_arguments (line 26) | def add_arguments(self, parser): method handle (line 45) | def handle(self, **options): method _download_export (line 94) | def _download_export(self, export_instance): method compile_final_zip (line 104) | def compile_final_zip(self, error_pages, export_archive_path, export_i... method _process_pages (line 131) | def _process_pages(self, exporter, unprocessed_pages): method _get_unprocessed_pages (line 143) | def _get_unprocessed_pages(self, export_archive_path, extract_to_path): function _copy_files_from_zip_to_zip (line 175) | def _copy_files_from_zip_to_zip(to_zip, from_zip_path, include_filter=No... FILE: corehq/apps/export/management/commands/rebuild_export.py class Command (line 11) | class Command(BaseCommand): method add_arguments (line 14) | def add_arguments(self, parser): method handle (line 30) | def handle(self, **options): FILE: corehq/apps/export/management/commands/update_export_with_newest_data.py class Command (line 31) | class Command(BaseCommand): method add_arguments (line 34) | def add_arguments(self, parser): method handle (line 45) | def handle(self, export_id, **options): function get_last_run_meta (line 74) | def get_last_run_meta(export_instance, export_archive_path): function _get_column_value_from_last_line (line 108) | def _get_column_value_from_last_line(page_path, form_id_index, date_index): function _get_last_page (line 114) | def _get_last_page(export_archive_path, table_label): function _get_last_line (line 125) | def _get_last_line(file_path): function download_export (line 136) | def download_export(export_instance, download_path=None): FILE: corehq/apps/export/management/commands/upload_saved_export.py class Command (line 9) | class Command(BaseCommand): method add_arguments (line 12) | def add_arguments(self, parser): method handle (line 23) | def handle(self, export_id, **options): FILE: corehq/apps/export/migrations/0001_initial.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/export/migrations/0002_datafile.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/export/migrations/0003_emailexportwhendonerequest.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/export/migrations/0004_datafile_delete_after.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/export/migrations/0005_datafile_blobmeta.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/export/migrations/0006_delete_dailysavedexportnotification.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/export/migrations/0007_auto_20190906_0149.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/export/migrations/0008_auto_20190906_2008.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/export/migrations/0009_incrementalexport_incrementalexportcheckpoint.py class Migration (line 10) | class Migration(migrations.Migration): FILE: corehq/apps/export/migrations/0010_defaultexportsettings.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/export/migrations/0011_defaultexportsettings_usecouchfiletypes.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/export/migrations/0012_defaultexportsettings_remove_duplicates_option.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/export/migrations/0013_rm_incrementalexport.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/export/migrations/0014_deidhash.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/export/models/deid_export.py class DeIdHash (line 10) | class DeIdHash(models.Model): method get_deid (line 15) | def get_deid(cls, value, doc, domain=None): method _get_salt (line 28) | def _get_salt(cls, domain): FILE: corehq/apps/export/models/export_settings.py class ExportFileType (line 7) | class ExportFileType(object): class DefaultExportSettings (line 18) | class DefaultExportSettings(models.Model): method as_dict (line 41) | def as_dict(self): FILE: corehq/apps/export/models/new.py class PathNode (line 143) | class PathNode(DocumentSchema): method __key (line 168) | def __key(self): method __eq__ (line 171) | def __eq__(self, other): method __hash__ (line 179) | def __hash__(self): class ReadablePathMixin (line 183) | class ReadablePathMixin(object): method readable_path (line 185) | def readable_path(self): class ExportItem (line 189) | class ExportItem(DocumentSchema, ReadablePathMixin): method __key (line 211) | def __key(self): method __hash__ (line 218) | def __hash__(self): method __eq__ (line 221) | def __eq__(self, other): method wrap (line 225) | def wrap(cls, data): method create_from_question (line 250) | def create_from_question(cls, question, app_id, app_version, repeats): method merge (line 259) | def merge(cls, one, two): class ExportColumn (line 268) | class ExportColumn(DocumentSchema): method get_value (line 287) | def get_value(self, domain, doc_id, doc, base_path, transform_dates=Fa... method _transform (line 307) | def _transform(self, value, doc, transform_dates, domain): method create_default_from_export_item (line 364) | def create_default_from_export_item( method _is_deleted (line 422) | def _is_deleted(self, app_ids_and_versions): method update_properties_from_app_ids_and_versions (line 428) | def update_properties_from_app_ids_and_versions(self, app_ids_and_vers... method is_deidentifed (line 446) | def is_deidentifed(self): method get_headers (line 449) | def get_headers(self, split_column=False): method wrap (line 456) | def wrap(cls, data): class DocRow (line 485) | class DocRow(namedtuple("DocRow", ["doc", "row"])): class TableConfiguration (line 497) | class TableConfiguration(DocumentSchema, ReadablePathMixin): method __hash__ (line 510) | def __hash__(self): method selected_columns (line 514) | def selected_columns(self): method get_headers (line 518) | def get_headers(self, split_columns=False): method get_rows (line 527) | def get_rows(self, document, row_number, split_columns=False, method _create_index (line 609) | def _create_index(_path, _transform): method _regenerate_column_cache (line 612) | def _regenerate_column_cache(self): method get_column (line 618) | def get_column(self, item_path, item_doc_type, column_transform): method get_column_by_path_str (line 672) | def get_column_by_path_str(self, path, doc_type): method get_hyperlink_column_indices (line 678) | def get_hyperlink_column_indices(self, split_columns): method _get_sub_documents (line 687) | def _get_sub_documents(self, document, row_number, document_id=None): method _get_sub_documents_helper (line 692) | def _get_sub_documents_helper(document_id, path, row_docs): class DatePeriod (line 730) | class DatePeriod(DocumentSchema): method startdate (line 737) | def startdate(self): method enddate (line 742) | def enddate(self): class ExportInstanceFilters (line 747) | class ExportInstanceFilters(DocumentSchema): method is_location_safe_for_user (line 764) | def is_location_safe_for_user(self, request): class CaseExportInstanceFilters (line 785) | class CaseExportInstanceFilters(ExportInstanceFilters): class FormExportInstanceFilters (line 792) | class FormExportInstanceFilters(ExportInstanceFilters): class ExportInstance (line 796) | class ExportInstance(BlobMixin, Document): class Meta (line 847) | class Meta(object): method wrap (line 851) | def wrap(cls, data): method is_safe (line 866) | def is_safe(self): method defaults (line 871) | def defaults(self): method get_filters (line 879) | def get_filters(self): method has_multimedia (line 887) | def has_multimedia(self): method selected_tables (line 895) | def selected_tables(self): method get_table (line 898) | def get_table(self, path): method _new_from_schema (line 905) | def _new_from_schema(cls, schema, export_settings=None): method generate_instance_from_schema (line 909) | def generate_instance_from_schema( method can_edit (line 994) | def can_edit(self, user): method _move_selected_columns_to_top (line 1001) | def _move_selected_columns_to_top(cls, columns): method _insert_system_properties (line 1007) | def _insert_system_properties(self, domain, export_type, table): method __insert_system_properties (line 1067) | def __insert_system_properties(self, table, properties, top=True, **co... method __insert_case_name (line 1101) | def __insert_case_name(cls, table, top=True): method _get_insert_fn (line 1133) | def _get_insert_fn(table, top): method file_size (line 1140) | def file_size(self): method filename (line 1151) | def filename(self): method has_file (line 1154) | def has_file(self): method set_payload (line 1161) | def set_payload(self, payload): method get_payload (line 1168) | def get_payload(self, stream=False): method copy_export (line 1175) | def copy_export(self): method error_messages (line 1183) | def error_messages(self): class CaseExportInstance (line 1197) | class CaseExportInstance(ExportInstance): method wrap (line 1206) | def wrap(cls, data): method identifier (line 1217) | def identifier(self): method _new_from_schema (line 1221) | def _new_from_schema(cls, schema, export_settings=None): method get_filters (line 1235) | def get_filters(self): method has_case_history_table (line 1256) | def has_case_history_table(self): method get_query (line 1264) | def get_query(self, include_filters=True): method get_rows (line 1281) | def get_rows(self): method get_count (line 1284) | def get_count(self): class FormExportInstance (line 1288) | class FormExportInstance(ExportInstance): method wrap (line 1300) | def wrap(cls, data): method identifier (line 1324) | def identifier(self): method formname (line 1328) | def formname(self): method _new_from_schema (line 1332) | def _new_from_schema(cls, schema, export_settings=None): method get_filters (line 1350) | def get_filters(self): method get_query (line 1367) | def get_query(self, include_filters=True): method get_rows (line 1375) | def get_rows(self): method get_count (line 1378) | def get_count(self): class SMSExportInstance (line 1382) | class SMSExportInstance(ExportInstance): method _new_from_schema (line 1388) | def _new_from_schema(cls, schema, export_settings=None): method get_query (line 1408) | def get_query(self, include_filters=True): class DataSourceExportInstance (line 1417) | class DataSourceExportInstance(ExportInstance): class ExportInstanceDefaults (line 1422) | class ExportInstanceDefaults(object): method get_default_instance_name (line 1427) | def get_default_instance_name(schema): method get_default_table_name (line 1431) | def get_default_table_name(table_path): method default_is_table_selected (line 1435) | def default_is_table_selected(path): class FormExportInstanceDefaults (line 1442) | class FormExportInstanceDefaults(ExportInstanceDefaults): method get_default_instance_name (line 1445) | def get_default_instance_name(schema): method get_default_table_name (line 1452) | def get_default_table_name(table_path): class CaseExportInstanceDefaults (line 1466) | class CaseExportInstanceDefaults(ExportInstanceDefaults): method get_default_table_name (line 1469) | def get_default_table_name(table_path): method get_default_instance_name (line 1482) | def get_default_instance_name(schema): class SMSExportInstanceDefaults (line 1489) | class SMSExportInstanceDefaults(ExportInstanceDefaults): method get_default_table_name (line 1491) | def get_default_table_name(table_path): method get_default_instance_name (line 1498) | def get_default_instance_name(schema): class ExportRow (line 1502) | class ExportRow(object): method __init__ (line 1504) | def __init__(self, data, hyperlink_column_indices=(), class ScalarItem (line 1511) | class ScalarItem(ExportItem): class LabelItem (line 1518) | class LabelItem(ExportItem): class CaseIndexItem (line 1524) | class CaseIndexItem(ExportItem): method case_type (line 1532) | def case_type(self): class GeopointItem (line 1536) | class GeopointItem(ExportItem): class MultiMediaItem (line 1544) | class MultiMediaItem(ExportItem): class StockItem (line 1552) | class StockItem(ExportItem): method create_from_question (line 1560) | def create_from_question(cls, question, path, app_id, app_version, rep... class Option (line 1572) | class Option(DocumentSchema): class MultipleChoiceItem (line 1582) | class MultipleChoiceItem(ExportItem): method create_from_question (line 1593) | def create_from_question(cls, question, app_id, app_version, repeats): method merge (line 1604) | def merge(cls, one, two): class ExportGroupSchema (line 1619) | class ExportGroupSchema(DocumentSchema, ReadablePathMixin): class InferredExportGroupSchema (line 1633) | class InferredExportGroupSchema(ExportGroupSchema): method put_item (line 1638) | def put_item(self, path, inferred_from=None, item_cls=ScalarItem): method get_item (line 1655) | def get_item(self, path): class InferredSchema (line 1662) | class InferredSchema(Document): class Meta (line 1681) | class Meta(object): method put_group_schema (line 1684) | def put_group_schema(self, path): method get_group_schema (line 1698) | def get_group_schema(self, path): method identifier (line 1705) | def identifier(self): class CaseInferredSchema (line 1709) | class CaseInferredSchema(InferredSchema): method identifier (line 1713) | def identifier(self): class FormInferredSchema (line 1717) | class FormInferredSchema(InferredSchema): method identifier (line 1727) | def identifier(self): class ExportDataSchema (line 1731) | class ExportDataSchema(Document): class Meta (line 1745) | class Meta(object): method get_number_of_apps_to_process (line 1748) | def get_number_of_apps_to_process(self): method generate_empty_schema (line 1757) | def generate_empty_schema(cls, domain, identifier): method generate_schema_from_builds (line 1778) | def generate_schema_from_builds( method _reorder_schema_from_app (line 1852) | def _reorder_schema_from_app(cls, current_schema, app_id, identifier): method _reorder_schema_from_schema (line 1869) | def _reorder_schema_from_schema(cls, current_schema, ordered_schema): method _merge_schemas (line 1896) | def _merge_schemas(cls, *schemas): method record_update (line 1945) | def record_update(self, app_id, app_version): method _save_export_schema (line 1952) | def _save_export_schema(current_schema, original_id, original_rev): method _process_apps_for_export (line 1973) | def _process_apps_for_export(cls, domain, schema, identifier, app_buil... class FormExportDataSchema (line 2016) | class FormExportDataSchema(ExportDataSchema): method type (line 2029) | def type(self): method schema_version (line 2033) | def schema_version(cls): method _get_inferred_schema (line 2037) | def _get_inferred_schema(cls, domain, app_id, xmlns): method _set_identifier (line 2040) | def _set_identifier(self, form_xmlns): method _get_current_app_ids_for_domain (line 2044) | def _get_current_app_ids_for_domain(cls, domain, app_id): method _get_app_build_ids_to_process (line 2051) | def _get_app_build_ids_to_process(domain, app_ids, last_app_versions): method get_latest_export_schema (line 2061) | def get_latest_export_schema(domain, app_id, form_xmlns): method _process_app_build (line 2065) | def _process_app_build(cls, current_schema, app, form_xmlns, for_new_e... method _add_export_items_for_cases (line 2085) | def _add_export_items_for_cases(cls, root_group_schema, forms, repeats): method _add_export_items_from_subcase_action (line 2174) | def _add_export_items_from_subcase_action(cls, group_schema, root_path... method _add_export_items_for_case (line 2191) | def _add_export_items_for_case(cls, group_schema, root_path, case_prop... method _get_repeat_paths (line 2236) | def _get_repeat_paths(xform, langs): method _generate_schema_from_xform (line 2243) | def _generate_schema_from_xform(cls, xform, langs, app_id, app_version): method _get_stock_items_from_question (line 2302) | def _get_stock_items_from_question(question, app_id, app_version, repe... class CaseExportDataSchema (line 2336) | class CaseExportDataSchema(ExportDataSchema): method type (line 2341) | def type(self): method _set_identifier (line 2344) | def _set_identifier(self, case_type): method schema_version (line 2348) | def schema_version(cls): method _get_inferred_schema (line 2352) | def _get_inferred_schema(cls, domain, app_id, case_type): method _get_current_app_ids_for_domain (line 2356) | def _get_current_app_ids_for_domain(cls, domain, app_id): method _get_app_build_ids_to_process (line 2360) | def _get_app_build_ids_to_process(domain, app_ids, last_app_versions): method get_latest_export_schema (line 2368) | def get_latest_export_schema(domain, app_id, case_type): method _process_app_build (line 2372) | def _process_app_build(cls, current_schema, app, case_type, for_new_ex... method _reorder_case_properties_from_data_dictionary (line 2419) | def _reorder_case_properties_from_data_dictionary(cls, domain, case_ty... method _case_property_groups_to_be_added (line 2451) | def _case_property_groups_to_be_added(domain, for_bulk_export): method _reset_case_property_group_name (line 2455) | def _reset_case_property_group_name(schema): method _generate_schema_from_case_property_mapping (line 2463) | def _generate_schema_from_case_property_mapping(cls, domain, case_prop... method _generate_schema_for_parent_case (line 2504) | def _generate_schema_for_parent_case(cls, app_id, app_version): method _generate_schema_for_case_history (line 2517) | def _generate_schema_for_case_history(cls, case_property_mapping, app_... method _process_apps_for_export (line 2553) | def _process_apps_for_export(cls, domain, schema, identifier, app_buil... method _process_apps_for_bulk_export (line 2569) | def _process_apps_for_bulk_export(cls, domain, schema, app_build_ids, ... class SMSExportDataSchema (line 2614) | class SMSExportDataSchema(ExportDataSchema): method type (line 2618) | def type(self): method generate_schema_from_builds (line 2622) | def generate_schema_from_builds(cls, domain, app_id, identifier, force... method schema_version (line 2627) | def schema_version(cls): method get_latest_export_schema (line 2631) | def get_latest_export_schema(domain, include_metadata, identifier=None): function _string_path_to_list (line 2635) | def _string_path_to_list(path): function _question_path_to_path_nodes (line 2639) | def _question_path_to_path_nodes(string_path, repeats): function _path_nodes_to_string (line 2664) | def _path_nodes_to_string(path, separator=' '): function _merge_lists (line 2670) | def _merge_lists(one, two, keyfn, resolvefn): function _merge_dicts (line 2709) | def _merge_dicts(one, two): class UserDefinedExportColumn (line 2740) | class UserDefinedExportColumn(ExportColumn): method get_value (line 2753) | def get_value(self, domain, doc_id, doc, base_path, **kwargs): class SplitUserDefinedExportColumn (line 2758) | class SplitUserDefinedExportColumn(ExportColumn): method get_value (line 2765) | def get_value(self, domain, doc_id, doc, base_path, transform_dates=Fa... method get_headers (line 2792) | def get_headers(self, **kwargs): class MultiMediaExportColumn (line 2814) | class MultiMediaExportColumn(ExportColumn): method get_value (line 2821) | def get_value(self, domain, doc_id, doc, base_path, transform_dates=Fa... class SplitGPSExportColumn (line 2836) | class SplitGPSExportColumn(ExportColumn): method get_headers (line 2839) | def get_headers(self, split_column=False): method get_value (line 2851) | def get_value(self, domain, doc_id, doc, base_path, split_column=False... method extract_coordinate_array (line 2865) | def extract_coordinate_array(cls, coord_string): class SplitExportColumn (line 2887) | class SplitExportColumn(ExportColumn): method get_value (line 2912) | def get_value(self, domain, doc_id, doc, base_path, split_column=False... method get_headers (line 2941) | def get_headers(self, split_column=False): class RowNumberColumn (line 2964) | class RowNumberColumn(ExportColumn): method get_headers (line 2970) | def get_headers(self, **kwargs): method get_value (line 2976) | def get_value(self, domain, doc_id, doc, base_path, transform_dates=Fa... method update_nested_repeat_count (line 2983) | def update_nested_repeat_count(self, repeat): class CaseIndexExportColumn (line 2987) | class CaseIndexExportColumn(ExportColumn): method get_value (line 2992) | def get_value(self, domain, doc_id, doc, base_path, **kwargs): class StockFormExportColumn (line 3001) | class StockFormExportColumn(ExportColumn): method get_value (line 3007) | def get_value(self, domain, doc_id, doc, base_path, transform_dates=Fa... class StockExportColumn (line 3065) | class StockExportColumn(ExportColumn): method accessor (line 3074) | def accessor(self): method update_domain (line 3077) | def update_domain(self, domain): method _column_tuples (line 3082) | def _column_tuples(self): method _get_product_name (line 3085) | def _get_product_name(self, product_id): method get_headers (line 3091) | def get_headers(self, **kwargs): method get_value (line 3100) | def get_value(self, domain, doc_id, doc, base_path, **kwargs): function _meta_property (line 3115) | def _meta_property(name): class DataFile (line 3121) | class DataFile(object): method __init__ (line 3131) | def __init__(self, meta): method description (line 3135) | def description(self): method get (line 3139) | def get(cls, domain, pk): method meta_query (line 3143) | def meta_query(domain): method get_all (line 3152) | def get_all(cls, domain): method get_total_size (line 3156) | def get_total_size(cls, domain): method save_blob (line 3160) | def save_blob(cls, file_obj, domain, filename, description, content_ty... method get_blob (line 3177) | def get_blob(self): method delete (line 3185) | def delete(self): class EmailExportWhenDoneRequest (line 3191) | class EmailExportWhenDoneRequest(models.Model): class LedgerSectionEntry (line 3197) | class LedgerSectionEntry(models.Model): class Meta (line 3202) | class Meta(object): function get_ledger_section_entry_combinations (line 3206) | def get_ledger_section_entry_combinations(domain): function datasource_export_instance (line 3225) | def datasource_export_instance(config): FILE: corehq/apps/export/multiprocess.py class BaseResult (line 57) | class BaseResult(object): method __init__ (line 60) | def __init__(self, page_number, page_path, page_size): class SuccessResult (line 66) | class SuccessResult(BaseResult): class RetryResult (line 70) | class RetryResult(BaseResult): method __init__ (line 71) | def __init__(self, page_number, page_path, page_size, retry_count): class QueuedResult (line 76) | class QueuedResult(RetryResult): method __init__ (line 77) | def __init__(self, async_result, page_number, page_path, page_size, re... class OutputPaginator (line 82) | class OutputPaginator(object): method __init__ (line 84) | def __init__(self, export_id, start_page_count=0): method __enter__ (line 90) | def __enter__(self): method _new_file (line 93) | def _new_file(self): method __exit__ (line 101) | def __exit__(self, exc_type, exc_val, exc_tb): method next_page (line 108) | def next_page(self): method write (line 113) | def write(self, doc): method get_result (line 117) | def get_result(self): function rebuild_export_mutiprocess (line 121) | def rebuild_export_mutiprocess(export_id, num_processes, page_size=100000): function run_multiprocess_exporter (line 134) | def run_multiprocess_exporter(exporter, filters, paginator, page_size): function run_export_with_logging (line 152) | def run_export_with_logging(export_instance, page_number, dump_path, doc... function run_export (line 172) | def run_export(export_instance, page_number, dump_path, doc_count, progr... function _get_export_documents_from_file (line 178) | def _get_export_documents_from_file(dump_path, doc_count): function _get_export_file_path (line 189) | def _get_export_file_path(export_instance, docs, progress_tracker=None): class LoggingProgressTracker (line 201) | class LoggingProgressTracker(object): method __init__ (line 209) | def __init__(self, name, progress_queue=None, update_frequency=100): method update_state (line 214) | def update_state(self, state=None, meta=None): class MultiprocessExporter (line 226) | class MultiprocessExporter(object): method __init__ (line 229) | def __init__(self, export_instance, total_docs, num_processes, existin... method __enter__ (line 253) | def __enter__(self): method __exit__ (line 257) | def __exit__(self, exc_type, exc_val, exc_tb): method start (line 261) | def start(self): method process_page (line 264) | def process_page(self, page_info): method wait_till_completion (line 277) | def wait_till_completion(self): method get_results (line 285) | def get_results(self, retries_per_page=3): method stop (line 316) | def stop(self): method _safe_terminate (line 323) | def _safe_terminate(self, process): method _get_zipfile_for_final_archive (line 329) | def _get_zipfile_for_final_archive(self): method build_final_export (line 343) | def build_final_export(self, export_results): method upload (line 367) | def upload(self, final_path): function _add_compressed_page_to_zip (line 375) | def _add_compressed_page_to_zip(zip_file, page_number, zip_path_to_add): function _output_progress (line 384) | def _output_progress(queue, total_docs): FILE: corehq/apps/export/static/export/js/datasource_export.js function datasourceExportViewModel (line 5) | function datasourceExportViewModel() { FILE: corehq/apps/export/static/export/js/download_export.js function getFilterString (line 125) | function getFilterString() { FILE: corehq/apps/export/static/export/js/export_list_main.js function getExportAction (line 88) | function getExportAction() { FILE: corehq/apps/export/system_properties.py function get_case_name_column (line 237) | def get_case_name_column(case_id_export_item): FILE: corehq/apps/export/tasks.py function populate_export_download_task (line 43) | def populate_export_download_task(domain, export_ids, exports_type, user... function _start_export_task (line 108) | def _start_export_task(export_instance_id): function _get_saved_export_download_data (line 113) | def _get_saved_export_download_data(export_instance_id): function rebuild_saved_export (line 122) | def rebuild_saved_export(export_instance_id, manual=False): function get_saved_export_task_status (line 144) | def get_saved_export_task_status(export_instance_id): function add_inferred_export_properties (line 155) | def add_inferred_export_properties(sender, domain, case_type, properties): function saved_exports (line 161) | def saved_exports(): function _cached_add_inferred_export_properties (line 168) | def _cached_add_inferred_export_properties(sender, domain, case_type, pr... function generate_schema_for_all_builds (line 214) | def generate_schema_for_all_builds(self, export_type, domain, app_id, id... function process_populate_export_tables (line 227) | def process_populate_export_tables(export_id, progress_id=None): FILE: corehq/apps/export/tests/test_add_inferred_export_properties.py class InferredSchemaSignalTest (line 14) | class InferredSchemaSignalTest(TestCase): method tearDown (line 18) | def tearDown(self): method _add_props (line 24) | def _add_props(self, props, num_queries=3): method _check_sql_props (line 33) | def _check_sql_props(self, props): method test_add_inferred_export_properties (line 41) | def test_add_inferred_export_properties(self, mock_domain_has_privilege): method test_add_inferred_export_properties_saved_schema (line 50) | def test_add_inferred_export_properties_saved_schema(self, mock_domain... method test_add_inferred_export_properties_system (line 69) | def test_add_inferred_export_properties_system(self, mock_domain_has_p... method test_add_inferred_export_properties_system_with_transform (line 82) | def test_add_inferred_export_properties_system_with_transform(self, mo... method test_cache_add_inferred_export_properties (line 93) | def test_cache_add_inferred_export_properties(self, mock_domain_has_pr... FILE: corehq/apps/export/tests/test_daily_saved_exports.py class TestDailySavedExports (line 9) | class TestDailySavedExports(TestCase): method setUpClass (line 12) | def setUpClass(cls): method tearDownClass (line 23) | def tearDownClass(cls): method test_saved_exports_task (line 28) | def test_saved_exports_task(self): FILE: corehq/apps/export/tests/test_dbaccessors.py class TestExportDBAccessors (line 31) | class TestExportDBAccessors(TestCase): method setUpClass (line 38) | def setUpClass(cls): method tearDownClass (line 84) | def tearDownClass(cls): method test_get_latest_form_export_schema (line 89) | def test_get_latest_form_export_schema(self): method test_get_latest_form_export_schema_empty (line 94) | def test_get_latest_form_export_schema_empty(self): method test_get_latest_case_export_schema (line 99) | def test_get_latest_case_export_schema(self): method test_get_latest_case_export_schema_empty (line 104) | def test_get_latest_case_export_schema_empty(self): class TestExportInstanceDBAccessors (line 110) | class TestExportInstanceDBAccessors(TestCase): method setUpClass (line 115) | def setUpClass(cls): method tearDownClass (line 167) | def tearDownClass(cls): method test_get_form_exports_by_domain (line 172) | def test_get_form_exports_by_domain(self): method test_get_case_exports_by_domain (line 176) | def test_get_case_exports_by_domain(self): method test_get_count_export_instances (line 180) | def test_get_count_export_instances(self): method test_get_count_deid_export_instances (line 186) | def test_get_count_deid_export_instances(self): method test_get_case_export_instances_wrong_domain (line 192) | def test_get_case_export_instances_wrong_domain(self): method test_get_daily_saved_exports (line 196) | def test_get_daily_saved_exports(self): method test_get_properly_wrapped_export_instance (line 204) | def test_get_properly_wrapped_export_instance(self): method test_get_brief_exports (line 211) | def test_get_brief_exports(self): method test_get_brief_deid_exports (line 221) | def test_get_brief_deid_exports(self): class TestInferredSchemasDBAccessors (line 232) | class TestInferredSchemasDBAccessors(TestCase): method setUpClass (line 240) | def setUpClass(cls): method tearDownClass (line 271) | def tearDownClass(cls): method test_get_case_inferred_schema (line 276) | def test_get_case_inferred_schema(self): method test_get_case_inferred_schema_missing (line 281) | def test_get_case_inferred_schema_missing(self): method test_get_form_inferred_schema (line 285) | def test_get_form_inferred_schema(self): method test_get_form_inferred_schema_missing (line 290) | def test_get_form_inferred_schema_missing(self): class TestODataExportFetcher (line 296) | class TestODataExportFetcher(TestCase): method setUp (line 297) | def setUp(self): method tearDown (line 301) | def tearDown(self): method test_export_count (line 305) | def test_export_count(self): method test_export_count_ignores_non_odata_exports (line 312) | def test_export_count_ignores_non_odata_exports(self): method test_get_exports (line 318) | def test_get_exports(self): method test_get_exports_ignores_non_odata_exports (line 327) | def test_get_exports_ignores_non_odata_exports(self): method _create_export (line 335) | def _create_export(self, name='Test', domain='test-domain', is_form=Tr... FILE: corehq/apps/export/tests/test_deid_export.py class TestDeIdHash (line 8) | class TestDeIdHash(TestCase): method test_deid_output_format (line 9) | def test_deid_output_format(self): method test_deid_unique_by_domain (line 13) | def test_deid_unique_by_domain(self): method test_deid_consistent_for_value_and_domain (line 20) | def test_deid_consistent_for_value_and_domain(self): method test_none_is_a_deidentifiable_value (line 28) | def test_none_is_a_deidentifiable_value(self): method test_no_value_no_doc_returns_none (line 32) | def test_no_value_no_doc_returns_none(self): method test_uses_domain_from_dict_or_object (line 36) | def test_uses_domain_from_dict_or_object(self): method test_prefers_domain_from_kwarg (line 46) | def test_prefers_domain_from_kwarg(self): FILE: corehq/apps/export/tests/test_det_schema_generation.py class TestDETFCaseInstance (line 22) | class TestDETFCaseInstance(SimpleTestCase, TestFileMixin): method setUpClass (line 27) | def setUpClass(cls): method test_empty (line 32) | def test_empty(self): method test_generate_from_case_schema (line 40) | def test_generate_from_case_schema(self): method test_case_schema_data_dictionary_support (line 92) | def test_case_schema_data_dictionary_support(self, dd_property_type_mo... class TestDETFormInstance (line 115) | class TestDETFormInstance(SimpleTestCase, TestFileMixin): method setUpClass (line 120) | def setUpClass(cls): method test_empty (line 124) | def test_empty(self): method test_generate_from_form_schema (line 136) | def test_generate_from_form_schema(self): class TestDETFormInstanceWithRepeat (line 172) | class TestDETFormInstanceWithRepeat(SimpleTestCase, TestFileMixin): method setUpClass (line 177) | def setUpClass(cls): method test_main_table_not_selected (line 181) | def test_main_table_not_selected(self): method test_generate_from_form_schema (line 195) | def test_generate_from_form_schema(self): method _check_repeat_worksheet (line 202) | def _check_repeat_worksheet(self, repeat_ws): class TestDatasourceInstance (line 211) | class TestDatasourceInstance(SimpleTestCase, TestFileMixin): method setUpClass (line 216) | def setUpClass(cls): method test_generate_from_datasource_export_instance (line 220) | def test_generate_from_datasource_export_instance(self): method _sample_data_source_dict (line 243) | def _sample_data_source_dict(cls): FILE: corehq/apps/export/tests/test_esaccessors.py class TestGroupUserIds (line 12) | class TestGroupUserIds(SimpleTestCase): method _send_group_to_es (line 15) | def _send_group_to_es(self, _id=None, users=None): method test_one_group_to_users (line 27) | def test_one_group_to_users(self): method test_multiple_groups_to_users (line 33) | def test_multiple_groups_to_users(self): method test_one_user_in_group (line 40) | def test_one_user_in_group(self): FILE: corehq/apps/export/tests/test_export.py class GetExportQueryTests (line 12) | class GetExportQueryTests(SimpleTestCase): method test_returns_base_query_if_no_filters (line 14) | def test_returns_base_query_if_no_filters(self): method test_export_filter_instance_returns_successfully (line 23) | def test_export_filter_instance_returns_successfully(self): method test_elasticsearch_filter_returns_successfully (line 33) | def test_elasticsearch_filter_returns_successfully(self): FILE: corehq/apps/export/tests/test_export_column.py class TestExportColumn (line 36) | class TestExportColumn(SimpleTestCase): method test_valid_transform_function (line 38) | def test_valid_transform_function(self): method test_get_value (line 42) | def test_get_value(self): method test_get_value_with_text (line 54) | def test_get_value_with_text(self): class SplitColumnTest (line 67) | class SplitColumnTest(SimpleTestCase): method test_get_value (line 69) | def test_get_value(self): method test_get_value_numerical (line 99) | def test_get_value_numerical(self): method test_ignore_extas (line 117) | def test_ignore_extas(self): method test_basic_get_headers (line 146) | def test_basic_get_headers(self): method test_get_headers_with_template_string (line 156) | def test_get_headers_with_template_string(self): method test_get_headers_with_extras (line 166) | def test_get_headers_with_extras(self): class StockExportColumnTest (line 180) | class StockExportColumnTest(SimpleTestCase): method test_get_headers (line 184) | def test_get_headers(self, _): class TestRowNumberColumn (line 201) | class TestRowNumberColumn(SimpleTestCase): method test_get_headers (line 203) | def test_get_headers(self): method test_get_value_with_simple_index (line 210) | def test_get_value_with_simple_index(self): method test_get_value_with_compound_index (line 217) | def test_get_value_with_compound_index(self): class TestCaseIndexExportColumn (line 225) | class TestCaseIndexExportColumn(SimpleTestCase): method test_get_value (line 227) | def test_get_value(self): method test_get_value_missing_index (line 248) | def test_get_value_missing_index(self): class TestGeopointExportColumn (line 261) | class TestGeopointExportColumn(SimpleTestCase): method test_get_value (line 263) | def test_get_value(self): method test_get_headers (line 276) | def test_get_headers(self): class TestSplitUserDefinedExportColumn (line 288) | class TestSplitUserDefinedExportColumn(SimpleTestCase): method test_get_value (line 290) | def test_get_value(self): method test_get_headers (line 303) | def test_get_headers(self): class TestSplitExportColumn (line 321) | class TestSplitExportColumn(SimpleTestCase): method test_get_value (line 323) | def test_get_value(self): method test_get_headers (line 336) | def test_get_headers(self): class TestMultiMediaExportColumn (line 354) | class TestMultiMediaExportColumn(SimpleTestCase): method test_get_value (line 361) | def test_get_value(self): method test_missing_value (line 370) | def test_missing_value(self): method test_empty_string (line 376) | def test_empty_string(self): method test_mismatched_value_type (line 382) | def test_mismatched_value_type(self): method test_get_value_excel_format (line 388) | def test_get_value_excel_format(self): class TestUserDefinedExportColumn (line 406) | class TestUserDefinedExportColumn(SimpleTestCase): method test_get_value (line 408) | def test_get_value(self): FILE: corehq/apps/export/tests/test_export_data_schema.py class TestFormExportDataSchema (line 55) | class TestFormExportDataSchema(SimpleTestCase, TestXmlMixin): method test_basic_xform_parsing (line 60) | def test_basic_xform_parsing(self): method test_labels_in_xform (line 80) | def test_labels_in_xform(self): method test_xform_parsing_with_repeat_group (line 98) | def test_xform_parsing_with_repeat_group(self): method test_xform_parsing_with_multiple_choice (line 129) | def test_xform_parsing_with_multiple_choice(self): method test_repeat_subcases_schema_generation (line 149) | def test_repeat_subcases_schema_generation(self): method _check_subcase_repeat_group_schema (line 192) | def _check_subcase_repeat_group_schema(self, group_schema, case_proper... method test_xform_parsing_with_stock_questions (line 222) | def test_xform_parsing_with_stock_questions(self): method test_question_path_to_path_nodes (line 256) | def test_question_path_to_path_nodes(self): method test_allow_non_data_nodes (line 301) | def test_allow_non_data_nodes(self): class TestCaseExportDataSchema (line 314) | class TestCaseExportDataSchema(SimpleTestCase, TestXmlMixin): method _get_schema_from_case_property_mapping (line 318) | def _get_schema_from_case_property_mapping(self, for_bulk_export=False): method test_case_type_metadata_parsing (line 339) | def test_case_type_metadata_parsing(self, _): method test_case_history_parsing (line 351) | def test_case_history_parsing(self): method test_case_property_group_name (line 363) | def test_case_property_group_name(self, _): method test_case_property_group_name_skipped_for_bulk_export (line 378) | def test_case_property_group_name_skipped_for_bulk_export(self, _): class TestMergingFormExportDataSchema (line 393) | class TestMergingFormExportDataSchema(SimpleTestCase, TestXmlMixin): method _get_merged_schema (line 398) | def _get_merged_schema(self, form_name1, form_name2): method test_simple_merge (line 416) | def test_simple_merge(self): method test_merge_deleted (line 430) | def test_merge_deleted(self): method test_multiple_choice_merge (line 453) | def test_multiple_choice_merge(self): method test_merge_repeat_group_changed_id (line 480) | def test_merge_repeat_group_changed_id(self): class TestMergingCaseExportDataSchema (line 497) | class TestMergingCaseExportDataSchema(SimpleTestCase, TestXmlMixin): method test_basic_case_prop_merge (line 500) | def test_basic_case_prop_merge(self, get_case_property_group_name_for_... method test_inferred_schema_merge (line 551) | def test_inferred_schema_merge(self, get_case_property_group_name_for_... class TestBuildingSchemaFromApplication (line 605) | class TestBuildingSchemaFromApplication(TestCase, TestXmlMixin): method setUpClass (line 612) | def setUpClass(cls): method tearDownClass (line 650) | def tearDownClass(cls): method setUp (line 655) | def setUp(self): method tearDown (line 680) | def tearDown(self): method test_basic_application_schema (line 683) | def test_basic_application_schema(self): method test_process_app_failure (line 695) | def test_process_app_failure(self): method test_build_from_saved_schema (line 709) | def test_build_from_saved_schema(self): method test_build_with_inferred_schema (line 740) | def test_build_with_inferred_schema(self): method test_build_with_advanced_app (line 755) | def test_build_with_advanced_app(self): class TestAppCasePropertyReferences (line 786) | class TestAppCasePropertyReferences(TestCase, TestXmlMixin): method setUpClass (line 792) | def setUpClass(cls): method tearDownClass (line 812) | def tearDownClass(cls): method testCaseReferencesMakeItToCaseSchema (line 817) | def testCaseReferencesMakeItToCaseSchema(self): class TestExportDataSchemaVersionControl (line 830) | class TestExportDataSchemaVersionControl(TestCase, TestXmlMixin): method setUpClass (line 836) | def setUpClass(cls): method tearDownClass (line 843) | def tearDownClass(cls): method tearDown (line 847) | def tearDown(self): method test_rebuild_version_control (line 851) | def test_rebuild_version_control(self): class TestDelayedSchema (line 880) | class TestDelayedSchema(TestCase, TestXmlMixin): method setUpClass (line 887) | def setUpClass(cls): method tearDownClass (line 915) | def tearDownClass(cls): method tearDown (line 920) | def tearDown(self): method test_basic_delayed_schema (line 923) | def test_basic_delayed_schema(self): class TestCaseDelayedSchema (line 947) | class TestCaseDelayedSchema(TestCase, TestXmlMixin): method setUpClass (line 954) | def setUpClass(cls): method tearDownClass (line 986) | def tearDownClass(cls): method tearDown (line 991) | def tearDown(self): method test_basic_delayed_schema (line 994) | def test_basic_delayed_schema(self): class TestBuildingCaseSchemaFromApplication (line 1018) | class TestBuildingCaseSchemaFromApplication(TestCase, TestXmlMixin): method setUpClass (line 1025) | def setUpClass(cls): method tearDownClass (line 1044) | def tearDownClass(cls): method tearDown (line 1049) | def tearDown(self): method test_basic_application_schema (line 1052) | def test_basic_application_schema(self): method test_build_from_saved_schema (line 1066) | def test_build_from_saved_schema(self): method test_build_with_inferred_schema (line 1106) | def test_build_with_inferred_schema(self): method test_build_with_bulk_schema (line 1137) | def test_build_with_bulk_schema(self, _): class TestBuildingCaseSchemaFromMultipleApplications (line 1151) | class TestBuildingCaseSchemaFromMultipleApplications(TestCase, TestXmlMi... method setUpClass (line 1158) | def setUpClass(cls): method tearDownClass (line 1186) | def tearDownClass(cls): method tearDown (line 1191) | def tearDown(self): method test_multiple_app_schema_generation (line 1194) | def test_multiple_app_schema_generation(self): class TestBuildingParentCaseSchemaFromApplication (line 1213) | class TestBuildingParentCaseSchemaFromApplication(TestCase, TestXmlMixin): method setUpClass (line 1220) | def setUpClass(cls): method tearDownClass (line 1233) | def tearDownClass(cls): method tearDown (line 1238) | def tearDown(self): method test_parent_case_table_generation (line 1241) | def test_parent_case_table_generation(self): method test_parent_case_table_generation_for_parent_case (line 1265) | def test_parent_case_table_generation_for_parent_case(self): class TestOrderingOfSchemas (line 1277) | class TestOrderingOfSchemas(SimpleTestCase): method _create_schema (line 1281) | def _create_schema(self, items): method _assert_item_order (line 1293) | def _assert_item_order(self, schema, path, items): method test_basic_ordering (line 1302) | def test_basic_ordering(self): method test_no_match_ordering (line 1332) | def test_no_match_ordering(self): method test_partial_match_ordering (line 1359) | def test_partial_match_ordering(self): method test_different_doc_types_ordering (line 1387) | def test_different_doc_types_ordering(self): class BaseTestOrderingOfCaseSchemaItems (line 1418) | class BaseTestOrderingOfCaseSchemaItems(TestCase, TestXmlMixin): method setUpClass (line 1425) | def setUpClass(cls): method tearDownClass (line 1464) | def tearDownClass(cls): method _get_schema_item_order (line 1468) | def _get_schema_item_order(self, for_new_export_instance=True): method _generate_schema (line 1472) | def _generate_schema(self): class TestOrderingOfCaseSchemaItemsFromDataDictionary (line 1476) | class TestOrderingOfCaseSchemaItemsFromDataDictionary(BaseTestOrderingOf... method _generate_schema (line 1477) | def _generate_schema(self, for_new_export_instance=True): method test_data_dictionary_setup (line 1485) | def test_data_dictionary_setup(self): method test_default_ordering (line 1500) | def test_default_ordering(self, *args): method test_ordering_for_existing_instance_with_feature_flag (line 1512) | def test_ordering_for_existing_instance_with_feature_flag(self, *args): method test_ordering_for_new_instance_with_feature_flag (line 1518) | def test_ordering_for_new_instance_with_feature_flag(self, *args): class TestOrderingOfBulkCaseExportSchemaItemsFromDataDictionary (line 1525) | class TestOrderingOfBulkCaseExportSchemaItemsFromDataDictionary(BaseTest... method _generate_schema (line 1526) | def _generate_schema(self, **kwargs): method test_default_ordering (line 1533) | def test_default_ordering(self, *args): method test_ordering_for_bulk_export_with_feature_flag (line 1541) | def test_ordering_for_bulk_export_with_feature_flag(self, *args): FILE: corehq/apps/export/tests/test_export_filters.py class ExportFilterTest (line 36) | class ExportFilterTest(SimpleTestCase): method test_or_filter (line 38) | def test_or_filter(self): class ExportFilterResultTest (line 50) | class ExportFilterResultTest(SimpleTestCase): method setUpClass (line 53) | def setUpClass(cls): method test_filter_combination (line 81) | def test_filter_combination(self): method test_group_filters (line 90) | def test_group_filters(self): method test_get_case_export_base_query (line 98) | def test_get_case_export_base_query(self): method test_form_submitted_by_none_filter (line 103) | def test_form_submitted_by_none_filter(self): FILE: corehq/apps/export/tests/test_export_form_subcases.py class TestFormExportSubcases (line 22) | class TestFormExportSubcases(TestCase, TestXmlMixin): method setUpClass (line 48) | def setUpClass(cls): method tearDownClass (line 58) | def tearDownClass(cls): method test (line 63) | def test(self): FILE: corehq/apps/export/tests/test_export_forms.py class FakeDomainObject (line 39) | class FakeDomainObject(object): method __init__ (line 41) | def __init__(self, uses_locations, name, date_created=None): method has_privilege (line 46) | def has_privilege(self, _priv): class TestCreateExportTagForm (line 50) | class TestCreateExportTagForm(SimpleTestCase): method test_required_fields (line 52) | def test_required_fields(self): method test_static_model_type (line 63) | def test_static_model_type(self): class TestDashboardFeedFilterForm (line 81) | class TestDashboardFeedFilterForm(SimpleTestCase): method test_good_data (line 83) | def test_good_data(self): method test_missing_fields (line 92) | def test_missing_fields(self): method test_bad_dates (line 100) | def test_bad_dates(self): class TestEmwfFilterFormExport (line 110) | class TestEmwfFilterFormExport(TestCase): method setUp (line 114) | def setUp(self): method test_attributes (line 119) | def test_attributes(self): class TestEmwfFilterExportMixin (line 126) | class TestEmwfFilterExportMixin(TestCase): method setUpClass (line 131) | def setUpClass(cls): method test_get_user_ids (line 140) | def test_get_user_ids(self): method test_get_users_filter (line 144) | def test_get_users_filter(self): method test_get_location_ids (line 156) | def test_get_location_ids(self): method test_get_locations_filter (line 161) | def test_get_locations_filter(self, users_patch): method test_get_group_ids (line 174) | def test_get_group_ids(self): method test_get_selected_es_user_types (line 181) | def test_get_selected_es_user_types(self): class TestEmwfFilterFormExportFilters (line 186) | class TestEmwfFilterFormExportFilters(TestCase): method setUpClass (line 191) | def setUpClass(cls): method test_attributes (line 196) | def test_attributes(self): method test_get_group_filter (line 203) | def test_get_group_filter(self, patch_object): method test_get_user_type_filter_for_mobile_active_and_deactivated (line 220) | def test_get_user_type_filter_for_mobile_active_and_deactivated(self, ... method test_get_user_type_filter_for_active_mobile (line 231) | def test_get_user_type_filter_for_active_mobile(self, fetch_user_ids_p... method test_get_user_type_filter_for_deactivated_mobile (line 241) | def test_get_user_type_filter_for_deactivated_mobile(self, fetch_user_... method test_get_user_type_filter_for_active_and_deactivated_mobile (line 251) | def test_get_user_type_filter_for_active_and_deactivated_mobile(self, ... method test_get_user_type_filter_for_admin_and_deactivated_and_active_mobile (line 263) | def test_get_user_type_filter_for_admin_and_deactivated_and_active_mob... method test_get_user_type_filter_for_admin (line 281) | def test_get_user_type_filter_for_admin(self, fetch_user_ids_patch): method test_get_user_type_filter_for_unknown (line 294) | def test_get_user_type_filter_for_unknown(self, fetch_user_ids_patch): method test_get_user_type_filter_for_web (line 307) | def test_get_user_type_filter_for_web(self, fetch_user_ids_patch): class TestEmwfFilterFormExportFormFilters (line 324) | class TestEmwfFilterFormExportFormFilters(TestCase): method setUpClass (line 328) | def setUpClass(cls): method test_get_model_filter_for_all_locations_access (line 332) | def test_get_model_filter_for_all_locations_access(self, locations_pat... method test_get_model_filter_for_restricted_locations_access (line 350) | def test_get_model_filter_for_restricted_locations_access(self, user_i... class TestFilterCaseESExportDownloadForm (line 372) | class TestFilterCaseESExportDownloadForm(SimpleTestCase): method setUpClass (line 378) | def setUpClass(cls): method test_attributes (line 385) | def test_attributes(self, *patches): method test_get_model_filter_for_all_data (line 394) | def test_get_model_filter_for_all_data(self, filters_from_slugs_patch,... method test_get_model_filter_for_project_data (line 406) | def test_get_model_filter_for_project_data(self, fetch_user_ids_patch,... method test_get_model_filter_for_project_data_and_web_users (line 425) | def test_get_model_filter_for_project_data_and_web_users(self, fetch_u... method test_get_model_filter_for_project_data_with_deactivated_filter (line 446) | def test_get_model_filter_for_project_data_with_deactivated_filter(sel... method test_get_model_filter_for_deactivated_data (line 465) | def test_get_model_filter_for_deactivated_data(self, fetch_user_ids_pa... method test_get_filters_from_slugs_for_all_locations_access (line 479) | def test_get_filters_from_slugs_for_all_locations_access(self, static_... method test_get_filters_from_slugs_for_restricted_locations_access (line 492) | def test_get_filters_from_slugs_for_restricted_locations_access(self, ... method test_get_group_independent_filters_for_all_access (line 507) | def test_get_group_independent_filters_for_all_access(self, get_user_i... method test_get_group_independent_filters_for_restricted_access (line 525) | def test_get_group_independent_filters_for_restricted_access(self, get... method test_get_model_filter_for_default_data (line 539) | def test_get_model_filter_for_default_data(self, fetch_user_ids_patch,... class TestFormExportFilterBuilder (line 552) | class TestFormExportFilterBuilder(TestCase): method setUpClass (line 555) | def setUpClass(cls, _): method test_active_worker_without_location_restriction (line 587) | def test_active_worker_without_location_restriction(self): method test_location_restricted_active_workers (line 610) | def test_location_restricted_active_workers(self): method test_location_restricted_deactivated_workers (line 635) | def test_location_restricted_deactivated_workers(self): method _transform_to_es_filters (line 660) | def _transform_to_es_filters(self, filters): method _setup_mobile_worker (line 673) | def _setup_mobile_worker(cls, username, location, is_active=True): FILE: corehq/apps/export/tests/test_export_instance.py class TestFormExportInstanceGeneration (line 48) | class TestFormExportInstanceGeneration(SimpleTestCase): method setUpClass (line 51) | def setUpClass(cls): method _generate_instance (line 94) | def _generate_instance(self, build_ids_and_versions, saved_export=None... method test_generate_instance_from_schema (line 102) | def test_generate_instance_from_schema(self, _, __): method test_generate_instance_from_schema_deleted (line 126) | def test_generate_instance_from_schema_deleted(self, _, __): method test_default_table_names (line 138) | def test_default_table_names(self, _, __): method test_export_instance_ordering (line 152) | def test_export_instance_ordering(self, _, __): method test_export_instance_settings_default_values (line 173) | def test_export_instance_settings_default_values(self, _, __): method test_form_export_instance_settings_override (line 185) | def test_form_export_instance_settings_override(self, _, __): class TestCaseExportInstanceGeneration (line 208) | class TestCaseExportInstanceGeneration(SimpleTestCase): method setUpClass (line 211) | def setUpClass(cls): method _generate_instance (line 271) | def _generate_instance(self, build_ids_and_versions, schema, saved_exp... method test_generate_instance_from_schema (line 278) | def test_generate_instance_from_schema(self, _, __): method test_generate_instance_from_bulk_schema (line 289) | def test_generate_instance_from_bulk_schema(self, _, __): class TestExportInstanceGenerationWithInferredSchema (line 306) | class TestExportInstanceGenerationWithInferredSchema(SimpleTestCase): method setUpClass (line 311) | def setUpClass(cls): class TestExportInstanceGenerationMultipleApps (line 362) | class TestExportInstanceGenerationMultipleApps(SimpleTestCase): method setUpClass (line 366) | def setUpClass(cls): method test_ensure_that_column_is_not_deleted (line 411) | def test_ensure_that_column_is_not_deleted(self, _, __): method test_ensure_that_column_is_deleted (line 432) | def test_ensure_that_column_is_deleted(self, _, __): class TestExportInstanceDefaultFilters (line 450) | class TestExportInstanceDefaultFilters(SimpleTestCase): method test_default_form_values (line 452) | def test_default_form_values(self): method test_default_case_values (line 459) | def test_default_case_values(self): class TestExportInstance (line 467) | class TestExportInstance(SimpleTestCase): method setUp (line 469) | def setUp(self): method test_get_table (line 487) | def test_get_table(self): method test_has_multimedia (line 504) | def test_has_multimedia(self): method test_has_multimedia_not_selected (line 507) | def test_has_multimedia_not_selected(self): class TestExportInstanceFromSavedInstance (line 517) | class TestExportInstanceFromSavedInstance(TestCase): method setUpClass (line 520) | def setUpClass(cls): method test_export_instance_from_saved (line 604) | def test_export_instance_from_saved(self, _): method test_export_instance_deleted_columns_updated (line 629) | def test_export_instance_deleted_columns_updated(self, _): method _get_instance (line 651) | def _get_instance(self, build_ids_and_versions): method _update_instance (line 663) | def _update_instance(self, build_ids_and_versions, instance): method test_copy_instance (line 673) | def test_copy_instance(self, _): FILE: corehq/apps/export/tests/test_export_item.py class TestExportItemGeneration (line 22) | class TestExportItemGeneration(SimpleTestCase): method setUp (line 25) | def setUp(self): method test_create_default_from_export_item (line 32) | def test_create_default_from_export_item(self, _): method test_create_default_from_export_item_deleted (line 41) | def test_create_default_from_export_item_deleted(self, _): method test_create_default_from_export_item_deprecated (line 50) | def test_create_default_from_export_item_deprecated(self, _): method test_create_default_from_export_item_not_main_table (line 64) | def test_create_default_from_export_item_not_main_table(self, _): method test_wrap_export_item (line 76) | def test_wrap_export_item(self, _): method test_wrap_export_item_child (line 83) | def test_wrap_export_item_child(self, _): class CreateFromQuestionTests (line 91) | class CreateFromQuestionTests(SimpleTestCase): method test_removes_html_from_label (line 92) | def test_removes_html_from_label(self): FILE: corehq/apps/export/tests/test_export_list_helper.py class ViewTestCase (line 20) | class ViewTestCase(TestCase): method setUpClass (line 23) | def setUpClass(cls): method tearDownClass (line 35) | def tearDownClass(cls): method setUp (line 40) | def setUp(self): class ExportListHelperSharingStatusTest (line 44) | class ExportListHelperSharingStatusTest(ViewTestCase): method setUp (line 45) | def setUp(self): method tearDown (line 54) | def tearDown(self): method create_export (line 58) | def create_export(self, sharing_option, export_owner_id): method assert_export_list_obey_its_sharing_status (line 90) | def assert_export_list_obey_its_sharing_status( method test_export_sharing_is_edit_and_export (line 117) | def test_export_sharing_is_edit_and_export(self, *args): method test_export_sharing_is_export_only (line 129) | def test_export_sharing_is_export_only(self, *args): method test_export_sharing_is_private (line 142) | def test_export_sharing_is_private(self, *args): method test_owner_can_see_own_exports (line 159) | def test_owner_can_see_own_exports(self, *args): FILE: corehq/apps/export/tests/test_export_models_new.py class FormExportInstanceTests (line 19) | class FormExportInstanceTests(TestCase): method setUpTestData (line 22) | def setUpTestData(cls): method setUp (line 27) | def setUp(self): method tearDown (line 36) | def tearDown(self): method _purge_indices (line 40) | def _purge_indices(self): method _make_doc (line 46) | def _make_doc(self, id='1'): method test_get_count_returns_total_row_count (line 58) | def test_get_count_returns_total_row_count(self, mock_get_timezone): class CaseExportInstanceTests (line 74) | class CaseExportInstanceTests(TestCase): method setUp (line 75) | def setUp(self): method _make_doc (line 87) | def _make_doc(self, id='1'): method tearDown (line 95) | def tearDown(self): method _purge_indices (line 99) | def _purge_indices(self): method test_get_count_returns_total_row_count (line 105) | def test_get_count_returns_total_row_count(self): FILE: corehq/apps/export/tests/test_export_utils.py class TestExportUtils (line 14) | class TestExportUtils(TestCase, DomainSubscriptionMixin): method setUp (line 16) | def setUp(self): method tearDown (line 32) | def tearDown(self): method update_subscription (line 39) | def update_subscription(self, plan): method test_default_export_settings_free_domain_returns_none (line 44) | def test_default_export_settings_free_domain_returns_none(self): method test_default_export_settings_standard_domain_returns_none (line 52) | def test_default_export_settings_standard_domain_returns_none(self): method test_default_export_settings_pro_domain_returns_none (line 60) | def test_default_export_settings_pro_domain_returns_none(self): method test_default_export_settings_advanced_domain_returns_none (line 68) | def test_default_export_settings_advanced_domain_returns_none(self): method test_default_export_settings_reseller_domain_returns_none (line 76) | def test_default_export_settings_reseller_domain_returns_none(self): method test_default_export_settings_managed_hosting_domain_returns_none (line 84) | def test_default_export_settings_managed_hosting_domain_returns_none(s... method test_default_export_settings_enterprise_domain_returns_not_none (line 92) | def test_default_export_settings_enterprise_domain_returns_not_none(se... class TestOdataFeedUtils (line 102) | class TestOdataFeedUtils(SimpleTestCase): method test_clean_odata_columns (line 104) | def test_clean_odata_columns(self): FILE: corehq/apps/export/tests/test_export_views.py class FakeDB (line 35) | class FakeDB(object): method __init__ (line 37) | def __init__(self, blobs): method get (line 40) | def get(self, blob_id): method delete (line 44) | def delete(self, blob_id): class ViewTestCase (line 48) | class ViewTestCase(TestCase): method setUpClass (line 51) | def setUpClass(cls): method tearDownClass (line 63) | def tearDownClass(cls): method setUp (line 68) | def setUp(self): class DataFileDownloadDetailTest (line 73) | class DataFileDownloadDetailTest(ViewTestCase): method setUpClass (line 76) | def setUpClass(cls): method tearDownClass (line 91) | def tearDownClass(cls): method setUp (line 95) | def setUp(self): method test_data_file_download (line 101) | def test_data_file_download(self): method test_data_file_download_expired (line 108) | def test_data_file_download_expired(self): function test_data_file_download_partial (line 121) | def test_data_file_download_partial(self, start, end): class ExportViewTest (line 141) | class ExportViewTest(ViewTestCase): method tearDown (line 143) | def tearDown(self): method test_create_form_export (line 147) | def test_create_form_export(self): method test_create_case_export_with_invalid_case (line 155) | def test_create_case_export_with_invalid_case(self): method test_create_case_export (line 163) | def test_create_case_export(self): method test_no_access_outside_of_domain (line 171) | def test_no_access_outside_of_domain(self): method test_commit_form_export (line 182) | def test_commit_form_export(self): method test_edit_case_export (line 223) | def test_edit_case_export(self): method test_edit_daily_saved_export_filters (line 270) | def test_edit_daily_saved_export_filters(self, _): method test_wrong_domain_save (line 327) | def test_wrong_domain_save(self): FILE: corehq/apps/export/tests/test_get_export_file.py function assert_instance_gives_results (line 54) | def assert_instance_gives_results(docs, export_instance, expected_result): class WriterTest (line 64) | class WriterTest(SimpleTestCase): method test_simple_table (line 95) | def test_simple_table(self, export_save): method test_paginated_table (line 138) | def test_paginated_table(self, export_save): method test_split_questions (line 178) | def test_split_questions(self, export_save): method test_array_data_in_scalar_question (line 214) | def test_array_data_in_scalar_question(self, export_save): method test_form_stock_columns (line 255) | def test_form_stock_columns(self, export_save): method test_transform_dates (line 350) | def test_transform_dates(self, export_save): method test_split_questions_false (line 382) | def test_split_questions_false(self, export_save): method test_multi_table (line 418) | def test_multi_table(self, export_save): method test_multi_table_order (line 466) | def test_multi_table_order(self, export_save): method test_multiple_write_export_instance_calls (line 509) | def test_multiple_write_export_instance_calls(self, export_save): method test_empty_location (line 601) | def test_empty_location(self, export_save): method test_empty_table_label (line 642) | def test_empty_table_label(self, export_save): class ExportTest (line 674) | class ExportTest(SimpleTestCase): method setUpClass (line 677) | def setUpClass(cls): method tearDownClass (line 698) | def tearDownClass(cls): method test_get_export_file (line 703) | def test_get_export_file(self, export_save): method test_case_name_transform (line 751) | def test_case_name_transform(self, export_save): method test_export_transforms (line 798) | def test_export_transforms(self, export_save, _): method test_selected_false (line 841) | def test_selected_false(self, export_save): method test_simple_bulk_export (line 859) | def test_simple_bulk_export(self, export_save): class TableHeaderTest (line 938) | class TableHeaderTest(SimpleTestCase): method test_deid_column_headers (line 940) | def test_deid_column_headers(self): FILE: corehq/apps/export/tests/test_inferred_schema.py class InferredSchemaTest (line 11) | class InferredSchemaTest(SimpleTestCase): method test_put_group_schema (line 13) | def test_put_group_schema(self): class InferredExportGroupSchemaTest (line 33) | class InferredExportGroupSchemaTest(SimpleTestCase): method test_put_export_item (line 35) | def test_put_export_item(self): FILE: corehq/apps/export/tests/test_new.py class GPSCoordinateTests (line 6) | class GPSCoordinateTests(SimpleTestCase): method test_no_coords_returns_array_of_empty_strings (line 7) | def test_no_coords_returns_array_of_empty_strings(self): method test_coord_missing_value_returns_array_of_missing_values (line 12) | def test_coord_missing_value_returns_array_of_missing_values(self): method test_empty_values_are_added_to_lat_lng (line 17) | def test_empty_values_are_added_to_lat_lng(self): method test_extra_values_are_ignored (line 23) | def test_extra_values_are_ignored(self): method test_leading_spaces_are_ignored (line 29) | def test_leading_spaces_are_ignored(self): method test_trailing_spaces_are_ignored (line 35) | def test_trailing_spaces_are_ignored(self): method test_multiple_spaces_are_treated_as_one_separator (line 41) | def test_multiple_spaces_are_treated_as_one_separator(self): FILE: corehq/apps/export/tests/test_sms_export.py class TestSmsExport (line 17) | class TestSmsExport(SimpleTestCase): method _make_message (line 21) | def _make_message(self, id, couch_recipient_doc_type='CommCareUser', w... method _message_docs (line 34) | def _message_docs(self): method _make_message_rows (line 40) | def _make_message_rows(self, docs, include_meta=False): method setUpClass (line 59) | def setUpClass(cls): method test_export (line 75) | def test_export(self, docs, owner_id_to_display, export_save): method test_export_meta (line 103) | def test_export_meta(self, docs, owner_id_to_display, export_save): method test_export_doc_type_transform (line 133) | def test_export_doc_type_transform(self, docs, owner_id_to_display, ca... method test_export_workflow_transform (line 170) | def test_export_workflow_transform(self, obj_save, docs, owner_id_to_d... method test_export_recipient_id_transform (line 207) | def test_export_recipient_id_transform(self, docs, owner_id_to_display... FILE: corehq/apps/export/tests/test_table_configuration.py class TableConfigurationDuplicateTests (line 16) | class TableConfigurationDuplicateTests(SimpleTestCase): method test_table_containing_duplicate_paths_with_differing_doc_types_can_find_either (line 17) | def test_table_containing_duplicate_paths_with_differing_doc_types_can... class TableConfigurationTest (line 34) | class TableConfigurationTest(SimpleTestCase): method test_get_column (line 36) | def test_get_column(self): class TableConfigurationGetSubDocumentsTest (line 110) | class TableConfigurationGetSubDocumentsTest(SimpleTestCase): method test_basic (line 112) | def test_basic(self): method test_simple_repeat (line 125) | def test_simple_repeat(self): method test_nested_repeat (line 145) | def test_nested_repeat(self): method test_single_iteration_repeat (line 175) | def test_single_iteration_repeat(self): class TableConfigurationGetRowsTest (line 196) | class TableConfigurationGetRowsTest(SimpleTestCase): method test_simple (line 198) | def test_simple(self): method test_repeat (line 236) | def test_repeat(self): method test_double_repeat (line 267) | def test_double_repeat(self): method test_empty_group (line 327) | def test_empty_group(self): FILE: corehq/apps/export/tests/test_views.py function get_base_export_view (line 29) | def get_base_export_view(export_instance, export_type=None): class BaseExportViewTestCase (line 37) | class BaseExportViewTestCase(TestCase): method setUpClass (line 40) | def setUpClass(cls): method _create_form_export_instance_with_geopoint (line 65) | def _create_form_export_instance_with_geopoint(self): method _create_case_export_instance (line 115) | def _create_case_export_instance(self): class TestPossibleGeoProperties (line 130) | class TestPossibleGeoProperties(BaseExportViewTestCase): method test_possible_geo_properties_privilege_disabled (line 132) | def test_possible_geo_properties_privilege_disabled(self): method test_possible_geo_properties_bulk_case_export (line 147) | def test_possible_geo_properties_bulk_case_export(self): method test_possible_geo_properties_form_export (line 164) | def test_possible_geo_properties_form_export(self): method test_possible_geo_properties_case_export (line 177) | def test_possible_geo_properties_case_export(self): class TestPossibleFormGeoProperties (line 190) | class TestPossibleFormGeoProperties(BaseExportViewTestCase): method test_possible_form_geo_properties_with_geopoint_items (line 192) | def test_possible_form_geo_properties_with_geopoint_items(self): method test_possible_form_geo_properties_no_geopoint_items (line 204) | def test_possible_form_geo_properties_no_geopoint_items(self): method test_possible_form_geo_properties_empty_tables (line 233) | def test_possible_form_geo_properties_empty_tables(self): class TestPossibleCaseGeoProperties (line 250) | class TestPossibleCaseGeoProperties(BaseExportViewTestCase): method test_possible_case_geo_properties_with_gps_properties (line 252) | def test_possible_case_geo_properties_with_gps_properties(self): method test_possible_case_geo_properties_no_gps_properties (line 264) | def test_possible_case_geo_properties_no_gps_properties(self): method test_possible_case_geo_properties_different_domain (line 289) | def test_possible_case_geo_properties_different_domain(self): FILE: corehq/apps/export/tests/util.py function new_case (line 18) | def new_case(domain=DOMAIN, user_id=DEFAULT_USER, owner_id=DEFAULT_USER, function new_form (line 35) | def new_form(form_data): function assertContainsExportItems (line 45) | def assertContainsExportItems(item_tuples, export_group_schema): function get_export_json (line 64) | def get_export_json(export_instance): FILE: corehq/apps/export/transforms.py function case_close_to_boolean (line 16) | def case_close_to_boolean(value, doc): function user_id_to_username (line 20) | def user_id_to_username(user_id, doc): function owner_id_to_display (line 24) | def owner_id_to_display(owner_id, doc): function case_id_to_case_name (line 28) | def case_id_to_case_name(case_id, doc): function case_id_to_link (line 32) | def case_id_to_link(case_id, doc): function form_id_to_link (line 37) | def form_id_to_link(form_id, doc): function case_or_user_id_to_name (line 42) | def case_or_user_id_to_name(id, doc): function workflow_transform (line 49) | def workflow_transform(workflow, doc): function doc_type_transform (line 63) | def doc_type_transform(doc_type, doc): function _cached_case_id_to_case_name (line 75) | def _cached_case_id_to_case_name(case_id): FILE: corehq/apps/export/utils.py function is_occurrence_deleted (line 13) | def is_occurrence_deleted(last_occurrences, app_ids_and_versions): function domain_has_excel_dashboard_access (line 23) | def domain_has_excel_dashboard_access(domain): function domain_has_daily_saved_export_access (line 27) | def domain_has_daily_saved_export_access(domain): function get_export (line 31) | def get_export(export_type, domain, export_id=None, username=None): function get_default_export_settings_if_available (line 58) | def get_default_export_settings_if_available(domain): function get_transform_function (line 72) | def get_transform_function(func_name): function get_deid_transform_function (line 77) | def get_deid_transform_function(func_name): function is_dashboard_feed (line 86) | def is_dashboard_feed(brief_export): FILE: corehq/apps/export/views/download.py class DownloadExportViewHelper (line 80) | class DownloadExportViewHelper(object): method get (line 87) | def get(self, request, domain, form_or_case, is_sms): method __init__ (line 98) | def __init__(self, request, domain): method get_export (line 103) | def get_export(self, id): method get_filter_form (line 106) | def get_filter_form(self, filter_form_data): class FormDownloadExportViewHelper (line 117) | class FormDownloadExportViewHelper(DownloadExportViewHelper): method get_export (line 121) | def get_export(self, export_id=None): class CaseDownloadExportViewHelper (line 125) | class CaseDownloadExportViewHelper(DownloadExportViewHelper): method get_export (line 129) | def get_export(self, export_id=None): class SMSDownloadExportViewHelper (line 133) | class SMSDownloadExportViewHelper(DownloadExportViewHelper): method get_export (line 137) | def get_export(self, export_id=None): class BaseDownloadExportView (line 141) | class BaseDownloadExportView(BaseProjectDataView): method dispatch (line 152) | def dispatch(self, request, *args, **kwargs): method post (line 158) | def post(self, request, *args, **kwargs): method view_helper (line 166) | def view_helper(self): method timezone (line 171) | def timezone(self): method default_datespan (line 176) | def default_datespan(self): method page_context (line 180) | def page_context(self): method download_export_form (line 217) | def download_export_form(self): method export_id (line 221) | def export_id(self): method page_url (line 225) | def page_url(self): method export_list (line 231) | def export_list(self): method max_column_size (line 257) | def max_column_size(self): function _check_export_size (line 264) | def _check_export_size(domain, export_instances, export_filters): function _validate_case_export_instances (line 278) | def _validate_case_export_instances(domain, export_instances): function _check_deid_permissions (line 291) | def _check_deid_permissions(permissions, export_instances): function prepare_custom_export (line 303) | def prepare_custom_export(request, domain): function poll_custom_export_download (line 367) | def poll_custom_export_download(request, domain): class DownloadNewFormExportView (line 419) | class DownloadNewFormExportView(BaseDownloadExportView): method parent_pages (line 428) | def parent_pages(self): function prepare_form_multimedia (line 444) | def prepare_form_multimedia(request, domain): function has_multimedia (line 493) | def has_multimedia(request, domain): class DownloadNewCaseExportView (line 509) | class DownloadNewCaseExportView(BaseDownloadExportView): method parent_pages (line 516) | def parent_pages(self): class DownloadNewDatasourceExportView (line 525) | class DownloadNewDatasourceExportView(BaseProjectDataView): method dispatch (line 531) | def dispatch(self, *args, **kwargs): method page_context (line 537) | def page_context(self): method post (line 542) | def post(self, request, *args, **kwargs): method form (line 555) | def form(self): class DownloadNewSmsExportView (line 561) | class DownloadNewSmsExportView(BaseDownloadExportView): method parent_pages (line 569) | def parent_pages(self): class BulkDownloadNewFormExportView (line 573) | class BulkDownloadNewFormExportView(DownloadNewFormExportView): function add_export_email_request (line 582) | def add_export_email_request(request, domain): class DownloadDETSchemaView (line 604) | class DownloadDETSchemaView(View): method get (line 607) | def get(self, request, domain, export_instance_id): function _render_det_download (line 617) | def _render_det_download(filename, export_instance): FILE: corehq/apps/export/views/edit.py class BaseEditNewCustomExportView (line 28) | class BaseEditNewCustomExportView(BaseExportView): method export_id (line 31) | def export_id(self): method new_export_instance (line 36) | def new_export_instance(self): method get_export_instance (line 39) | def get_export_instance(self, schema, original_export_instance): method page_url (line 50) | def page_url(self): method get (line 53) | def get(self, request, *args, **kwargs): method post (line 80) | def post(self, request, *args, **kwargs): class EditNewCustomFormExportView (line 99) | class EditNewCustomFormExportView(BaseEditNewCustomExportView): method report_class (line 106) | def report_class(self): class EditNewCustomCaseExportView (line 112) | class EditNewCustomCaseExportView(BaseEditNewCustomExportView): method report_class (line 119) | def report_class(self): class EditCaseFeedView (line 125) | class EditCaseFeedView(DashboardFeedMixin, EditNewCustomCaseExportView): class EditFormFeedView (line 131) | class EditFormFeedView(DashboardFeedMixin, EditNewCustomFormExportView): class EditCaseDailySavedExportView (line 136) | class EditCaseDailySavedExportView(DailySavedExportMixin, EditNewCustomC... class EditFormDailySavedExportView (line 140) | class EditFormDailySavedExportView(DailySavedExportMixin, EditNewCustomF... class EditODataCaseFeedView (line 144) | class EditODataCaseFeedView(ODataFeedMixin, EditNewCustomCaseExportView): class EditODataFormFeedView (line 150) | class EditODataFormFeedView(ODataFeedMixin, EditNewCustomFormExportView): class EditExportAttrView (line 157) | class EditExportAttrView(BaseEditNewCustomExportView): method export_type (line 162) | def export_type(self): method get (line 165) | def get(self, request, *args, **kwargs): method commit (line 168) | def commit(self, request): class EditExportNameView (line 172) | class EditExportNameView(EditExportAttrView): method commit (line 175) | def commit(self, request): class EditExportDescription (line 181) | class EditExportDescription(EditExportAttrView): method commit (line 184) | def commit(self, request): FILE: corehq/apps/export/views/list.py class ExportListHelper (line 92) | class ExportListHelper(object): method from_request (line 103) | def from_request(cls, request): method __init__ (line 134) | def __init__(self, request): method _priv_check (line 140) | def _priv_check(self): method bulk_download_url (line 144) | def bulk_download_url(self): method create_export_form_title (line 152) | def create_export_form_title(self): method create_export_form (line 159) | def create_export_form(self): method _can_view_export (line 169) | def _can_view_export(self, export): method get_exports_page (line 176) | def get_exports_page(self, page, limit, my_exports=False): method get_saved_exports (line 194) | def get_saved_exports(self): method _should_appear_in_list (line 204) | def _should_appear_in_list(self, export): method _edit_view (line 207) | def _edit_view(self, export): method _download_view (line 210) | def _download_view(self, export): method fmt_export_data (line 213) | def fmt_export_data(self, export): method _get_additional_odata_urls (line 254) | def _get_additional_odata_urls(self, export): method _get_odata_url (line 267) | def _get_odata_url(self, export): method _fmt_odata_url (line 270) | def _fmt_odata_url(self, export, pk): method get_location_restriction_names (line 283) | def get_location_restriction_names(accessible_location_ids): method _get_daily_saved_export_metadata (line 291) | def _get_daily_saved_export_metadata(self, export): method _get_filters (line 320) | def _get_filters(self, export): method _fmt_emailed_export_fileData (line 326) | def _fmt_emailed_export_fileData(self, fileId, size, last_updated, class DailySavedExportListHelper (line 343) | class DailySavedExportListHelper(ExportListHelper): method _priv_check (line 347) | def _priv_check(self): method create_export_form_title (line 352) | def create_export_form_title(self): method bulk_download_url (line 356) | def bulk_download_url(self): method _should_appear_in_list (line 360) | def _should_appear_in_list(self, export): method _edit_view (line 365) | def _edit_view(self, export): method _download_view (line 371) | def _download_view(self, export): method fmt_export_data (line 377) | def fmt_export_data(self, export): class FormExportListHelper (line 389) | class FormExportListHelper(ExportListHelper): method bulk_download_url (line 393) | def bulk_download_url(self): method create_export_form_title (line 398) | def create_export_form_title(self): method _should_appear_in_list (line 401) | def _should_appear_in_list(self, export): method _edit_view (line 405) | def _edit_view(self, export): method _download_view (line 409) | def _download_view(self, export): class CaseExportListHelper (line 414) | class CaseExportListHelper(ExportListHelper): method _should_appear_in_list (line 418) | def _should_appear_in_list(self, export): method _edit_view (line 422) | def _edit_view(self, export): method _download_view (line 426) | def _download_view(self, export): method fmt_export_data (line 430) | def fmt_export_data(self, export): method create_export_form_title (line 439) | def create_export_form_title(self): class DashboardFeedListHelper (line 443) | class DashboardFeedListHelper(DailySavedExportListHelper): method _priv_check (line 446) | def _priv_check(self): method _should_appear_in_list (line 449) | def _should_appear_in_list(self, export): method _edit_view (line 452) | def _edit_view(self, export): method _download_view (line 458) | def _download_view(self, export): method fmt_export_data (line 464) | def fmt_export_data(self, export): class DeIdFormExportListHelper (line 472) | class DeIdFormExportListHelper(FormExportListHelper): method create_export_form (line 476) | def create_export_form(self): class DeIdCaseExportListHelper (line 480) | class DeIdCaseExportListHelper(CaseExportListHelper): method create_export_form (line 484) | def create_export_form(self): class DeIdDailySavedExportListHelper (line 488) | class DeIdDailySavedExportListHelper(DailySavedExportListHelper): method create_export_form (line 492) | def create_export_form(self): class DeIdDashboardFeedListHelper (line 496) | class DeIdDashboardFeedListHelper(DashboardFeedListHelper): method create_export_form (line 500) | def create_export_form(self): class BaseExportListView (line 504) | class BaseExportListView(BaseProjectDataView): method dispatch (line 516) | def dispatch(self, request, *args, **kwargs): method page_context (line 523) | def page_context(self): function _get_task_status_json (line 554) | def _get_task_status_json(export_instance_id): function get_exports_page (line 574) | def get_exports_page(request, domain): function get_saved_export_progress (line 594) | def get_saved_export_progress(request, domain): function toggle_saved_export_enabled (line 607) | def toggle_saved_export_enabled(request, domain): function update_emailed_export_data (line 624) | def update_emailed_export_data(request, domain): class DailySavedExportListView (line 642) | class DailySavedExportListView(BaseExportListView, DailySavedExportListH... method dispatch (line 646) | def dispatch(self, *args, **kwargs): method page_context (line 652) | def page_context(self): function commit_filters (line 670) | def commit_filters(request, domain): class FormExportListView (line 721) | class FormExportListView(BaseExportListView, FormExportListHelper): class CaseExportListView (line 727) | class CaseExportListView(BaseExportListView, CaseExportListHelper): method dispatch (line 732) | def dispatch(self, request, *args, **kwargs): class DashboardFeedListView (line 748) | class DashboardFeedListView(DailySavedExportListView, DashboardFeedListH... method page_context (line 758) | def page_context(self): class DeIdFormExportListView (line 772) | class DeIdFormExportListView(FormExportListView, DeIdFormExportListHelper): class DeIdCaseExportListView (line 777) | class DeIdCaseExportListView(CaseExportListView, DeIdCaseExportListHelper): class DeIdDailySavedExportListView (line 783) | class DeIdDailySavedExportListView(DailySavedExportListView, DeIdDailySa... class DeIdDashboardFeedListView (line 789) | class DeIdDashboardFeedListView(DashboardFeedListView, DeIdDashboardFeed... function can_download_daily_saved_export (line 794) | def can_download_daily_saved_export(export, domain, couch_user): function download_daily_saved_export (line 810) | def download_daily_saved_export(req, domain, export_instance_id): function get_app_data_drilldown_values (line 866) | def get_app_data_drilldown_values(request, domain): function submit_app_data_drilldown_form (line 889) | def submit_app_data_drilldown_form(request, domain): class ODataFeedListHelper (line 957) | class ODataFeedListHelper(ExportListHelper): method has_form_export_permissions (line 965) | def has_form_export_permissions(self): method has_case_export_permissions (line 970) | def has_case_export_permissions(self): method allowed_doc_type (line 975) | def allowed_doc_type(self): method get_saved_exports (line 987) | def get_saved_exports(self): method create_export_form (line 998) | def create_export_form(self): method odata_feed_limit (line 1015) | def odata_feed_limit(self): method create_export_form_title (line 1020) | def create_export_form_title(self): method _should_appear_in_list (line 1023) | def _should_appear_in_list(self, export): method fmt_export_data (line 1026) | def fmt_export_data(self, export): method _edit_view (line 1035) | def _edit_view(self, export): method _download_view (line 1041) | def _download_view(self, export): class ODataFeedListView (line 1051) | class ODataFeedListView(BaseExportListView, ODataFeedListHelper): method lead_text (line 1057) | def lead_text(self): method page_context (line 1072) | def page_context(self): class CommCareAnalyticsListView (line 1091) | class CommCareAnalyticsListView(BaseProjectDataView): method page_context (line 1097) | def page_context(self): FILE: corehq/apps/export/views/new.py class BaseExportView (line 71) | class BaseExportView(BaseProjectDataView): method dispatch (line 79) | def dispatch(self, request, *args, **kwargs): method export_helper (line 83) | def export_helper(self): method export_instance_cls (line 87) | def export_instance_cls(self): method export_schema_cls (line 94) | def export_schema_cls(self): method export_home_url (line 101) | def export_home_url(self): method terminology (line 105) | def terminology(self): method page_context (line 123) | def page_context(self): method _possible_geo_properties (line 178) | def _possible_geo_properties(self): method _possible_form_geo_properties (line 191) | def _possible_form_geo_properties(self): method _possible_case_geo_properties (line 200) | def _possible_case_geo_properties(self): method format_options (line 208) | def format_options(self): method parent_pages (line 217) | def parent_pages(self): method commit (line 223) | def commit(self, request): method post (line 300) | def post(self, request, *args, **kwargs): method get_export_schema (line 339) | def get_export_schema(self, domain, app_id, identifier, for_new_export... method get_empty_export_schema (line 349) | def get_empty_export_schema(self, domain, identifier): method _is_bulk_case_export (line 353) | def _is_bulk_case_export(self): class CreateNewCustomFormExportView (line 361) | class CreateNewCustomFormExportView(BaseExportView): method report_class (line 369) | def report_class(self): method create_new_export_instance (line 373) | def create_new_export_instance(self, schema, username, export_settings... method get (line 382) | def get(self, request, *args, **kwargs): class CreateNewCustomCaseExportView (line 397) | class CreateNewCustomCaseExportView(BaseExportView): method report_class (line 405) | def report_class(self): method create_new_export_instance (line 409) | def create_new_export_instance(self, schema, username, export_settings... method get (line 424) | def get(self, request, *args, **kwargs): class CreateNewCaseFeedView (line 471) | class CreateNewCaseFeedView(DashboardFeedMixin, CreateNewCustomCaseExpor... class CreateNewFormFeedView (line 478) | class CreateNewFormFeedView(DashboardFeedMixin, CreateNewCustomFormExpor... class CreateNewDailySavedCaseExport (line 485) | class CreateNewDailySavedCaseExport(DailySavedExportMixin, CreateNewCust... class CreateNewDailySavedFormExport (line 491) | class CreateNewDailySavedFormExport(DailySavedExportMixin, CreateNewCust... class CreateODataCaseFeedView (line 497) | class CreateODataCaseFeedView(ODataFeedMixin, CreateNewCustomCaseExportV... method create_new_export_instance (line 502) | def create_new_export_instance(self, schema, username, export_settings... class CreateODataFormFeedView (line 513) | class CreateODataFormFeedView(ODataFeedMixin, CreateNewCustomFormExportV... method create_new_export_instance (line 518) | def create_new_export_instance(self, schema, username, export_settings... class DeleteNewCustomExportView (line 532) | class DeleteNewCustomExportView(BaseExportView): method export_id (line 538) | def export_id(self): method export_instance (line 543) | def export_instance(self): method commit (line 549) | def commit(self, request): method report_class (line 585) | def report_class(self): class CopyExportView (line 608) | class CopyExportView(View): method dispatch (line 612) | def dispatch(self, request, *args, **kwargs): method get (line 618) | def get(self, request, domain, export_id, *args, **kwargs): FILE: corehq/apps/export/views/utils.py function user_can_view_deid_exports (line 63) | def user_can_view_deid_exports(domain, couch_user): function user_can_view_odata_feed (line 68) | def user_can_view_odata_feed(domain, couch_user): class ExportsPermissionsManager (line 74) | class ExportsPermissionsManager(object): method __init__ (line 87) | def __init__(self, form_or_case, domain, couch_user): method has_edit_permissions (line 96) | def has_edit_permissions(self): method has_form_export_permissions (line 100) | def has_form_export_permissions(self): method has_case_export_permissions (line 104) | def has_case_export_permissions(self): method has_view_permissions (line 108) | def has_view_permissions(self): method has_deid_view_permissions (line 118) | def has_deid_view_permissions(self): method has_odata_permissions (line 123) | def has_odata_permissions(self): method access_list_exports_or_404 (line 126) | def access_list_exports_or_404(self, is_deid=False, is_odata=False): method access_download_export_or_404 (line 132) | def access_download_export_or_404(self): class DailySavedExportMixin (line 137) | class DailySavedExportMixin(object): method _priv_check (line 139) | def _priv_check(self): method dispatch (line 143) | def dispatch(self, *args, **kwargs): method create_new_export_instance (line 147) | def create_new_export_instance(self, schema, username, export_settings... method report_class (line 172) | def report_class(self): class DashboardFeedMixin (line 177) | class DashboardFeedMixin(DailySavedExportMixin): method _priv_check (line 179) | def _priv_check(self): method create_new_export_instance (line 183) | def create_new_export_instance(self, schema, username, export_settings... method page_context (line 193) | def page_context(self): method report_class (line 199) | def report_class(self): class ODataFeedMixin (line 204) | class ODataFeedMixin(object): method dispatch (line 207) | def dispatch(self, *args, **kwargs): method terminology (line 211) | def terminology(self): method create_new_export_instance (line 223) | def create_new_export_instance(self, schema, username, export_settings... method page_context (line 233) | def page_context(self): method new_export_instance (line 240) | def new_export_instance(self): method report_class (line 247) | def report_class(self): method get_export_instance (line 251) | def get_export_instance(self, schema, original_export_instance): class GenerateSchemaFromAllBuildsView (line 260) | class GenerateSchemaFromAllBuildsView(LoginAndDomainMixin, View): method export_cls (line 264) | def export_cls(export_type): method get (line 267) | def get(self, request, *args, **kwargs): method post (line 286) | def post(self, request, *args, **kwargs): class DailySavedExportPaywall (line 303) | class DailySavedExportPaywall(BaseProjectDataView): class DashboardFeedPaywall (line 309) | class DashboardFeedPaywall(BaseProjectDataView): class DataFileDownloadList (line 317) | class DataFileDownloadList(BaseProjectDataView): method dispatch (line 322) | def dispatch(self, request, *args, **kwargs): method get_context_data (line 328) | def get_context_data(self, **kwargs): method post (line 337) | def post(self, request, *args, **kwargs): class DataFileDownloadDetail (line 368) | class DataFileDownloadDetail(BaseProjectDataView): method dispatch (line 371) | def dispatch(self, request, *args, **kwargs): method get (line 377) | def get(self, request, *args, **kwargs): method delete (line 388) | def delete(self, request, *args, **kwargs): function can_view_form_exports (line 397) | def can_view_form_exports(couch_user, domain): function can_view_case_exports (line 401) | def can_view_case_exports(couch_user, domain): function clean_odata_columns (line 405) | def clean_odata_columns(export_instance): function case_type_or_app_limit_exceeded (line 418) | def case_type_or_app_limit_exceeded(domain): function trigger_update_case_instance_tables_task (line 424) | def trigger_update_case_instance_tables_task(domain, export_id): function is_bulk_case_export (line 429) | def is_bulk_case_export(export_instance): FILE: corehq/apps/fixtures/apps.py class Config (line 4) | class Config(AppConfig): FILE: corehq/apps/fixtures/dispatcher.py class FixtureInterfaceDispatcher (line 16) | class FixtureInterfaceDispatcher(ProjectReportDispatcher): method dispatch (line 21) | def dispatch(self, request, *args, **kwargs): FILE: corehq/apps/fixtures/download.py function prepare_fixture_download (line 28) | def prepare_fixture_download(table_ids, domain, task, download_id, owner... function prepare_fixture_html (line 53) | def prepare_fixture_html(table_ids, domain): function _prepare_fixture (line 59) | def _prepare_fixture(table_ids, domain, html_response=False, task=None): function _generate_data_types_view (line 307) | def _generate_data_types_view(table_ids, domain, html_response): class OwnerNames (line 326) | class OwnerNames: method __init__ (line 328) | def __init__(self, tables): method _load_usernames (line 342) | def _load_usernames(self, owners): method _load_group_names (line 346) | def _load_group_names(self, owners): method _iter_couch_docs (line 350) | def _iter_couch_docs(self, owners, owner_type, couch_model): method _load_location_codes (line 356) | def _load_location_codes(self, owners): method count (line 364) | def count(self, row, owner_type): method get_usernames (line 368) | def get_usernames(self, row): method get_group_names (line 373) | def get_group_names(self, row): method get_location_codes (line 378) | def get_location_codes(self, row): function get_indexed_field_numbers (line 384) | def get_indexed_field_numbers(tables): function iter_types_headers (line 391) | def iter_types_headers(max_fields, indexed_field_numbers): FILE: corehq/apps/fixtures/exceptions.py class FixtureException (line 1) | class FixtureException(Exception): class FixtureDownloadError (line 5) | class FixtureDownloadError(FixtureException): class FixtureAPIRequestError (line 9) | class FixtureAPIRequestError(FixtureException): class FixtureUploadError (line 13) | class FixtureUploadError(FixtureException): method __init__ (line 15) | def __init__(self, errors): class FixtureTooManyRows (line 19) | class FixtureTooManyRows(FixtureException): class FixtureTypeCheckError (line 23) | class FixtureTypeCheckError(Exception): class FixtureVersionError (line 27) | class FixtureVersionError(Exception): FILE: corehq/apps/fixtures/fixturegenerators.py function item_lists_by_domain (line 26) | def item_lists_by_domain(domain, namespace_ids=False): function item_lists_by_app (line 58) | def item_lists_by_app(app, module): class ItemListsProvider (line 98) | class ItemListsProvider(FixtureProvider): method __call__ (line 101) | def __call__(self, restore_state): method get_global_items (line 139) | def get_global_items(self, domain, global_types, user_id, overwrite_ca... method _get_or_cache_global_fixture (line 152) | def _get_or_cache_global_fixture(self, domain, global_type, user_id, o... method _get_global_items (line 184) | def _get_global_items(self, global_type, domain): method get_user_items_and_count (line 189) | def get_user_items_and_count(self, user_types, restore_user): method _get_fixtures (line 203) | def _get_fixtures(self, data_types, get_items_by_type, user_id): method _get_fixture_element (line 212) | def _get_fixture_element(self, data_type, user_id, items): method _get_schema_element (line 227) | def _get_schema_element(self, data_type): method to_xml (line 233) | def to_xml(item, data_type): FILE: corehq/apps/fixtures/interface.py class FixtureInterface (line 17) | class FixtureInterface(FixtureViewMixIn, GenericReportView): class FixtureSelectFilter (line 25) | class FixtureSelectFilter(BaseSingleOptionFilter): method selected (line 32) | def selected(self): method _fixture_options (line 36) | def _fixture_options(self): method options (line 44) | def options(self): class FixtureViewInterface (line 48) | class FixtureViewInterface(GenericTabularReport, FixtureInterface): method view_response (line 57) | def view_response(self): method report_context (line 65) | def report_context(self): method has_tables (line 119) | def has_tables(self): method table (line 124) | def table(self): method lookup_table (line 132) | def lookup_table(self): method headers (line 139) | def headers(self): method rows (line 143) | def rows(self): class FixtureEditInterface (line 147) | class FixtureEditInterface(FixtureInterface): method report_context (line 154) | def report_context(self): method data_types (line 166) | def data_types(self): method can_edit_linked_data (line 169) | def can_edit_linked_data(self): FILE: corehq/apps/fixtures/migrations/0001_initial.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/fixtures/migrations/0002_rm_blobdb_domain_fixtures.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/fixtures/migrations/0003_rm_blobdb_domain_fixtures.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/apps/fixtures/migrations/0004_userlookuptablestatus.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/fixtures/migrations/0005_lookuptablemodels.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/fixtures/migrations/0005_sqllookuptablemodels.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/apps/fixtures/migrations/0006_index_row_id.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/fixtures/migrations/0007_db_cascade.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/fixtures/migrations/0008_sqllookuptables.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/fixtures/migrations/0009_remove_lookuptablerowowner_couch_id.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/fixtures/migrations/0010_lookuptable_is_synced.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/fixtures/migrations/0011_lookuptable_last_modified.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/fixtures/models.py function fixture_bucket (line 22) | def fixture_bucket(lookup_table_id, domain): class LookupTableManager (line 26) | class LookupTableManager(models.Manager): method by_domain (line 28) | def by_domain(self, domain_name): method by_domain_tag (line 31) | def by_domain_tag(self, domain_name, tag): method domain_tag_exists (line 35) | def domain_tag_exists(self, domain_name, tag): method get_tables_modified_since (line 38) | def get_tables_modified_since(self, domain, since_datetime): class Alias (line 43) | class Alias: method __get__ (line 46) | def __get__(self, obj, owner=None): method __set__ (line 49) | def __set__(self, obj, value): class TypeField (line 54) | class TypeField: method __hash__ (line 60) | def __hash__(self): class LookupTable (line 67) | class LookupTable(models.Model): class Meta (line 101) | class Meta: method is_indexed (line 106) | def is_indexed(self): class LookupTableRowManager (line 110) | class LookupTableRowManager(models.Manager): method iter_rows (line 112) | def iter_rows(self, domain, *, table_id=None, tag=None, **kw): method iter_by_user (line 130) | def iter_by_user(self, user, **kw): method _iter_sorted (line 154) | def _iter_sorted(self, domain, where, batch_size=1000): method with_value (line 176) | def with_value(self, domain, table_id, field_name, value): class Field (line 194) | class Field: method __eq__ (line 198) | def __eq__(self, other): method __hash__ (line 206) | def __hash__(self): class LookupTableRow (line 219) | class LookupTableRow(models.Model): class Meta (line 255) | class Meta: method fields_without_attributes (line 262) | def fields_without_attributes(self): class OwnerType (line 279) | class OwnerType(models.IntegerChoices): method from_string (line 285) | def from_string(cls, value): class LookupTableRowOwner (line 289) | class LookupTableRowOwner(models.Model): class Meta (line 295) | class Meta: class UserLookupTableStatus (line 302) | class UserLookupTableStatus(models.Model): class Fixture (line 304) | class Fixture(models.IntegerChoices): class Meta (line 314) | class Meta: method update (line 320) | def update(cls, user_id, fixture_type): method bulk_update (line 328) | def bulk_update(cls, user_ids, fixture_type): method get_last_modified (line 337) | def get_last_modified(cls, user_id, fixture_type): FILE: corehq/apps/fixtures/resources/v0_1.py function convert_fdt (line 25) | def convert_fdt(fdi, type_cache=None): class FixtureResource (line 45) | class FixtureResource(HqBaseResource): method dehydrate_fields (line 53) | def dehydrate_fields(self, bundle): method obj_get (line 59) | def obj_get(self, bundle, **kwargs): method obj_get_list (line 63) | def obj_get_list(self, bundle, **kwargs): method detail_uri_kwargs (line 88) | def detail_uri_kwargs(self, bundle_or_obj): class Meta (line 91) | class Meta(CustomResourceMeta): class InternalFixtureResource (line 98) | class InternalFixtureResource(FixtureResource): method dispatch (line 101) | def dispatch(self, request_type, request, **kwargs): class Meta (line 104) | class Meta(CustomResourceMeta): class LookupTableResource (line 111) | class LookupTableResource(HqBaseResource): method dehydrate_fields (line 161) | def dehydrate_fields(self, bundle): method obj_get (line 170) | def obj_get(self, bundle, **kwargs): method obj_get_list (line 173) | def obj_get_list(self, bundle, domain, **kwargs): method obj_delete (line 176) | def obj_delete(self, bundle, **kwargs): method _adapt_field (line 186) | def _adapt_field(field): method obj_create (line 192) | def obj_create(self, bundle, request=None, **kwargs): method obj_update (line 204) | def obj_update(self, bundle, **kwargs): method detail_uri_kwargs (line 237) | def detail_uri_kwargs(self, bundle_or_obj): class Meta (line 240) | class Meta(CustomResourceMeta): class FieldsDictField (line 247) | class FieldsDictField(tp_f.DictField): method hydrate (line 252) | def hydrate(self, bundle): class LookupTableItemResource (line 267) | class LookupTableItemResource(HqBaseResource): method dehydrate_fields (line 342) | def dehydrate_fields(self, bundle): method obj_get (line 353) | def obj_get(self, bundle, **kwargs): method obj_get_list (line 356) | def obj_get_list(self, bundle, domain, **kwargs): method obj_delete (line 359) | def obj_delete(self, bundle, **kwargs): method obj_create (line 369) | def obj_create(self, bundle, request=None, **kwargs): method obj_update (line 389) | def obj_update(self, bundle, **kwargs): method detail_uri_kwargs (line 410) | def detail_uri_kwargs(self, bundle_or_obj): class Meta (line 413) | class Meta(CustomResourceMeta): function get_sql_object_or_not_exist (line 420) | def get_sql_object_or_not_exist(cls, obj_id, domain): FILE: corehq/apps/fixtures/resources/v0_6.py class LookupTableItemResource (line 4) | class LookupTableItemResource(v0_1.LookupTableItemResource): class Meta (line 6) | class Meta(v0_1.LookupTableItemResource.Meta): FILE: corehq/apps/fixtures/static/fixtures/js/lookup-manage.js function log (line 15) | function log(x) { function makeEditable (line 19) | function makeEditable(o) { function makeDataType (line 56) | function makeDataType(o, app) { function appModel (line 253) | function appModel(options) { FILE: corehq/apps/fixtures/tasks.py function fixture_upload_async (line 14) | def fixture_upload_async(domain, download_id, replace, user_email=None): function send_upload_fixture_complete_email (line 35) | def send_upload_fixture_complete_email(email, domain, time_start, time_e... function async_fixture_download (line 55) | def async_fixture_download(table_ids, domain, download_id, owner_id): FILE: corehq/apps/fixtures/tests/test_download.py class TestLookupTableOwners (line 22) | class TestLookupTableOwners(TestCase): method setUpClass (line 25) | def setUpClass(cls): method test_download (line 65) | def test_download(self): method test_count (line 103) | def test_count(self): method test_get_usernames (line 116) | def test_get_usernames(self): method test_get_group_names (line 137) | def test_get_group_names(self): method test_get_location_names (line 158) | def test_get_location_names(self): method test_with_missing_owners (line 179) | def test_with_missing_owners(self): method upload (line 203) | def upload(self, rows, *, check_result=True, **kw): method prepare_download (line 211) | def prepare_download(self, table_tags): method get_workbook_from_data (line 229) | def get_workbook_from_data(headers, rows): method check_upload_result (line 234) | def check_upload_result(self, result): method make_rows (line 244) | def make_rows(item_rows): function test_get_indexed_field_numbers (line 251) | def test_get_indexed_field_numbers(): function test_get_indexed_field_numbers_for_multiple_tables (line 256) | def test_get_indexed_field_numbers_for_multiple_tables(): function test_iter_types_headers (line 261) | def test_iter_types_headers(): function create_index_tables (line 276) | def create_index_tables(): FILE: corehq/apps/fixtures/tests/test_field_names.py class FieldNameCleanTest (line 17) | class FieldNameCleanTest(SimpleTestCase): method setUp (line 20) | def setUp(self): method test_cleaner (line 51) | def test_cleaner(self): class FieldNameValidationTest (line 63) | class FieldNameValidationTest(SimpleTestCase): method test_slash (line 67) | def test_slash(self): method test_space (line 71) | def test_space(self): method test_xml (line 75) | def test_xml(self): method test_backslash (line 79) | def test_backslash(self): method test_brackets (line 83) | def test_brackets(self): method test_combo (line 87) | def test_combo(self): method test_starts_with_number (line 91) | def test_starts_with_number(self): method test_includes_attribute (line 95) | def test_includes_attribute(self): method test_alphanumeric_nonascii (line 99) | def test_alphanumeric_nonascii(self): method test_alphanumeric_unicode (line 103) | def test_alphanumeric_unicode(self): method test_good (line 107) | def test_good(self): FILE: corehq/apps/fixtures/tests/test_fixture_data.py function call_fixture_generator (line 28) | def call_fixture_generator(user, last_sync=None): class FixtureDataTest (line 43) | class FixtureDataTest(TestCase): method setUp (line 45) | def setUp(self): method test_xml (line 103) | def test_xml(self): method test_ownership (line 114) | def test_ownership(self): method test_fixture_removal (line 133) | def test_fixture_removal(self): method test_get_item_by_field_value (line 153) | def test_get_item_by_field_value(self): method test_fixture_is_indexed (line 160) | def test_fixture_is_indexed(self): method test_empty_data_types (line 195) | def test_empty_data_types(self): method test_user_data_type_with_item (line 232) | def test_user_data_type_with_item(self): method test_empty_user_data_types (line 249) | def test_empty_user_data_types(self): method test_cached_global_fixture_user_id (line 262) | def test_cached_global_fixture_user_id(self): method test_indexed_global_fixture (line 277) | def test_indexed_global_fixture(self): method test_simulate_s3_blob (line 293) | def test_simulate_s3_blob(self): method test_include_fixture_when_data_type_modified (line 311) | def test_include_fixture_when_data_type_modified(self): method test_include_fixture_when_cache_is_cleared (line 330) | def test_include_fixture_when_cache_is_cleared(self): method make_data_type (line 349) | def make_data_type(self, name, is_global): method make_data_item (line 364) | def make_data_item(self, data_type, cost): class TestFixtureOrdering (line 376) | class TestFixtureOrdering(TestCase): method setUpClass (line 378) | def setUpClass(cls): method _make_data_item (line 409) | def _make_data_item(cls, sort_key, name, seat, sigil): method test_fixture_order (line 424) | def test_fixture_order(self): FILE: corehq/apps/fixtures/tests/test_location_ownership.py class TestLocationOwnership (line 13) | class TestLocationOwnership(LocationHierarchyTestCase): method setUpClass (line 30) | def setUpClass(cls): method _get_value (line 80) | def _get_value(fixture_item, field_name): method test_sees_fixture_at_own_location (line 83) | def test_sees_fixture_at_own_location(self): method test_sees_own_fixture_and_parent_fixture (line 89) | def test_sees_own_fixture_and_parent_fixture(self): method test_has_no_assigned_fixture (line 97) | def test_has_no_assigned_fixture(self): FILE: corehq/apps/fixtures/tests/test_models.py class TestLookupTableManager (line 21) | class TestLookupTableManager(TestCase): method setUpClass (line 24) | def setUpClass(cls): method test_by_domain (line 29) | def test_by_domain(self): method test_by_domain_tag (line 35) | def test_by_domain_tag(self): method test_by_domain_tag_missing (line 40) | def test_by_domain_tag_missing(self): method test_domain_tag_exists (line 44) | def test_domain_tag_exists(self): method make_table (line 49) | def make_table(self): class TestLookupTable (line 60) | class TestLookupTable(TestCase): method test_default_domain_is_not_valid (line 62) | def test_default_domain_is_not_valid(self): method test_default_tag_is_not_valid (line 67) | def test_default_tag_is_not_valid(self): method test_fields (line 72) | def test_fields(self): method test_persistent_formats (line 93) | def test_persistent_formats(self, value): class TestLookupTableRowManager (line 105) | class TestLookupTableRowManager(TestCase): method setUpClass (line 108) | def setUpClass(cls): method test_iter_rows (line 119) | def test_iter_rows(self): method test_iter_rows_with_duplicate_sort_keys (line 129) | def test_iter_rows_with_duplicate_sort_keys(self): method test_iter_rows_with_tag (line 140) | def test_iter_rows_with_tag(self): method test_iter_rows_with_tag_and_unknown_domain (line 148) | def test_iter_rows_with_tag_and_unknown_domain(self): method test_iter_rows_too_many_args (line 153) | def test_iter_rows_too_many_args(self): method test_iter_rows_not_enough_args (line 157) | def test_iter_rows_not_enough_args(self): method test_iter_by_user (line 161) | def test_iter_by_user(self): method test_iter_by_user_with_multiple_tables (line 176) | def test_iter_by_user_with_multiple_tables(self): method test_iter_by_user_with_duplicate_sort_keys (line 230) | def test_iter_by_user_with_duplicate_sort_keys(self): method test_with_value (line 245) | def test_with_value(self): method test_with_value_not_first_value (line 250) | def test_with_value_not_first_value(self): method test_with_value_with_duplicate_values (line 257) | def test_with_value_with_duplicate_values(self): method create_rows (line 262) | def create_rows(self, count, method add_owner (line 274) | def add_owner(self, user, rows): class TestLookupTableRow (line 284) | class TestLookupTableRow(TestCase): method test_fields (line 286) | def test_fields(self): method test_on_delete_cascade (line 296) | def test_on_delete_cascade(self): method test_persistent_formats (line 321) | def test_persistent_formats(self, value): # noqa: F811 method make_row (line 332) | def make_row(self, save=True): class TestFieldTypes (line 343) | class TestFieldTypes(SimpleTestCase): method test_type_field_equality (line 345) | def test_type_field_equality(self): method test_type_field_hash (line 361) | def test_type_field_hash(self): method test_field_equality (line 375) | def test_field_equality(self): method test_field_hash (line 388) | def test_field_hash(self): FILE: corehq/apps/fixtures/tests/test_upload.py class TestValidation (line 263) | class TestValidation(SimpleTestCase): method test_validation (line 267) | def test_validation(self, filename, error_messages, file_contents): method test_comprehensiveness (line 290) | def test_comprehensiveness(self): class Args (line 301) | class Args(tuple): method __repr__ (line 302) | def __repr__(self): class TestFixtureWorkbook (line 306) | class TestFixtureWorkbook(SimpleTestCase): method test_indexed_field (line 308) | def test_indexed_field(self): method test_iter_rows (line 358) | def test_iter_rows(self, name, sheet_rows, old_keys, expected_rows): method get_workbook (line 365) | def get_workbook(self, rows): function row_name (line 371) | def row_name(item): class TestFixtureUpload (line 375) | class TestFixtureUpload(TestCase): method make_rows (line 390) | def make_rows(item_rows): method setUpClass (line 404) | def setUpClass(cls): method get_workbook_from_data (line 411) | def get_workbook_from_data(headers, rows): method upload (line 416) | def upload(self, rows_or_workbook, **kw): method get_table (line 425) | def get_table(self, domain=None): method get_rows (line 431) | def get_rows(self, transform=row_name, *, domain=None): method test_row_addition (line 441) | def test_row_addition(self): method test_replace_rows (line 451) | def test_replace_rows(self): method test_rows_with_no_changes (line 457) | def test_rows_with_no_changes(self): method test_replace_duplicate_rows (line 468) | def test_replace_duplicate_rows(self): method test_rearrange_rows (line 479) | def test_rearrange_rows(self): method test_add_rows_without_replace (line 495) | def test_add_rows_without_replace(self): method test_delete_table (line 501) | def test_delete_table(self): method test_delete_missing_table (line 515) | def test_delete_missing_table(self): method test_update_table (line 524) | def test_update_table(self): method test_replace_table_with_removed_index (line 542) | def test_replace_table_with_removed_index(self): method test_update_table_with_removed_index (line 561) | def test_update_table_with_removed_index(self): method test_partial_update_table_with_removed_index (line 580) | def test_partial_update_table_with_removed_index(self): method test_upload_sheet_with_missing_UID_column (line 600) | def test_upload_sheet_with_missing_UID_column(self): method test_delete_row (line 615) | def test_delete_row(self): method test_upload_progress_and_result (line 625) | def test_upload_progress_and_result(self): method test_upload_progress_with_zero_tables (line 644) | def test_upload_progress_with_zero_tables(self): method test_table_uid_conflict (line 652) | def test_table_uid_conflict(self): method upload_table_with_uid_conflict (line 656) | def upload_table_with_uid_conflict(self): method test_row_uid_conflict (line 672) | def test_row_uid_conflict(self): method upload_row_with_uid_conflict (line 676) | def upload_row_with_uid_conflict(self): method test_sql_transaction (line 686) | def test_sql_transaction(self): method test_upload_should_clear_cache_on_error (line 705) | def test_upload_should_clear_cache_on_error(self): method test_row_added_clears_its_table_cache (line 715) | def test_row_added_clears_its_table_cache(self): method test_row_deleted_clears_its_table_cache (line 724) | def test_row_deleted_clears_its_table_cache(self): class TestLookupTableOwnershipUpload (line 734) | class TestLookupTableOwnershipUpload(TestCase): method setUpClass (line 738) | def setUpClass(cls): method test_row_ownership (line 778) | def test_row_ownership(self): method test_replace_row_ownership (line 782) | def test_replace_row_ownership(self): method test_delete_ownership (line 789) | def test_delete_ownership(self): method test_ownerships_deleted_with_table (line 796) | def test_ownerships_deleted_with_table(self): method test_unknown_owners (line 810) | def test_unknown_owners(self): method test_multiple_locations (line 819) | def test_multiple_locations(self): method test_case_insensitive_ownership_matching (line 833) | def test_case_insensitive_ownership_matching(self): method test_case_sensitive_group_match (line 840) | def test_case_sensitive_group_match(self): method test_invalid_username (line 846) | def test_invalid_username(self): method test_non_string_owner_names (line 851) | def test_non_string_owner_names(self): method test_owner_added_clears_cache (line 856) | def test_owner_added_clears_cache(self): method test_owner_deleted_clears_cache (line 866) | def test_owner_deleted_clears_cache(self): method upload (line 876) | def upload(self, rows, *, check_result=True, **kw): method get_rows (line 885) | def get_rows(self, transform=row_name): method make_rows (line 927) | def make_rows(item_rows): class TestLocationLookups (line 934) | class TestLocationLookups(TestCase): method setUpClass (line 937) | def setUpClass(cls): method test_match_site_code (line 973) | def test_match_site_code(self): method test_case_insensitive_name_match (line 976) | def test_case_insensitive_name_match(self): method test_site_code_overrides_duplicate_name (line 979) | def test_site_code_overrides_duplicate_name(self): method test_site_code_match (line 982) | def test_site_code_match(self): method test_duplicate_name (line 985) | def test_duplicate_name(self): method lookup (line 989) | def lookup(self, name_or_site_code): class FakeTask (line 999) | class FakeTask: method __init__ (line 1000) | def __init__(self): method update_state (line 1003) | def update_state(self, **kw): class TestTableKey (line 1007) | class TestTableKey(SimpleTestCase): method test_tag (line 1009) | def test_tag(self): method test_is_global (line 1017) | def test_is_global(self): method test_fields (line 1025) | def test_fields(self): method test_item_attributes (line 1033) | def test_item_attributes(self): method test_description (line 1041) | def test_description(self): class TestRowKey (line 1050) | class TestRowKey(SimpleTestCase): method test_fields (line 1052) | def test_fields(self): method test_fields_order (line 1069) | def test_fields_order(self): method test_item_attributes (line 1080) | def test_item_attributes(self): method test_item_attributes_order (line 1088) | def test_item_attributes_order(self): method test_sort_key (line 1093) | def test_sort_key(self): class TestOwnerKey (line 1102) | class TestOwnerKey(SimpleTestCase): method test_owner_type (line 1104) | def test_owner_type(self): method test_owner_id (line 1112) | def test_owner_id(self): FILE: corehq/apps/fixtures/tests/test_views.py class LookupTableViewsTest (line 21) | class LookupTableViewsTest(TestCase): method setUpClass (line 24) | def setUpClass(cls): method test_update_tables_get (line 34) | def test_update_tables_get(self): method test_update_tables_get_wrong_domain (line 55) | def test_update_tables_get_wrong_domain(self): method test_update_tables_get_not_found (line 61) | def test_update_tables_get_not_found(self): method test_update_tables_get_invalid_id (line 66) | def test_update_tables_get_invalid_id(self): method test_update_tables_delete (line 71) | def test_update_tables_delete(self): method test_update_tables_delete_wrong_domain (line 83) | def test_update_tables_delete_wrong_domain(self): method test_update_tables_delete_not_found (line 89) | def test_update_tables_delete_not_found(self): method test_update_tables_delete_invalid_id (line 94) | def test_update_tables_delete_invalid_id(self): method test_update_tables_post_duplicate_table (line 99) | def test_update_tables_post_duplicate_table(self): method test_update_tables_post_create_table (line 112) | def test_update_tables_post_create_table(self): method test_update_tables_post_without_data_type_id (line 127) | def test_update_tables_post_without_data_type_id(self): method test_update_tables_put (line 140) | def test_update_tables_put(self): method test_update_tables_put_multiple_field_updates_on_multiple_rows (line 161) | def test_update_tables_put_multiple_field_updates_on_multiple_rows(self): method get_client (line 213) | def get_client(self, data=None): method url (line 226) | def url(self, **kwargs): method create_lookup_table (line 230) | def create_lookup_table(self, fields=None): method create_row (line 241) | def create_row(self, table, fields=None): class TestFixtureEditInterface (line 254) | class TestFixtureEditInterface(TestCase): method test_json_conversion (line 255) | def test_json_conversion(self): class UpdateTablesTests (line 289) | class UpdateTablesTests(TestCase): method test_can_delete_synced_fixture (line 290) | def test_can_delete_synced_fixture(self): method setUp (line 299) | def setUp(self): method _create_request (line 312) | def _create_request(self, method): FILE: corehq/apps/fixtures/tests/test_workbook.py class TestFixtureWorkbook (line 13) | class TestFixtureWorkbook(SimpleTestCase): method test_get_owners (line 15) | def test_get_owners(self): method test_get_owners_with_missing_owner_types (line 47) | def test_get_owners_with_missing_owner_types(self): method get_workbook (line 64) | def get_workbook(self, data): function map_ownerships (line 72) | def map_ownerships(ownerships): FILE: corehq/apps/fixtures/upload/const.py class MULTIPLE (line 5) | class MULTIPLE: class INVALID (line 9) | class INVALID: FILE: corehq/apps/fixtures/upload/definitions.py class FixtureUploadResult (line 6) | class FixtureUploadResult(object): method __init__ (line 11) | def __init__(self): method get_display_message (line 17) | def get_display_message(self): FILE: corehq/apps/fixtures/upload/run_upload.py function upload_fixture_file (line 31) | def upload_fixture_file(domain, filename, replace, task=None): function _run_upload (line 40) | def _run_upload(domain, workbook, replace=False, task=None): class Mutation (line 123) | class Mutation: method process (line 127) | def process( method clear (line 163) | def clear(self): method undo_update (line 167) | def undo_update(self, new_item, old_item): function flush (line 172) | def flush(tables, rows, owners): function setup_progress (line 196) | def setup_progress(task, workbook): function table_key (line 225) | def table_key(table): function row_key (line 235) | def row_key(row): function owner_key (line 243) | def owner_key(owner): function load_owner_ids (line 247) | def load_owner_ids(owners, domain_name): function _load_user_ids_by_name (line 259) | def _load_user_ids_by_name(raw_usernames, domain_name): function _load_group_ids_by_name (line 274) | def _load_group_ids_by_name(group_names, domain_name): function _load_location_ids_by_name (line 281) | def _load_location_ids_by_name(location_names, domain_name): function _would_discard_rows (line 297) | def _would_discard_rows(old_table, old_rows, new_rows, workbook): function _would_discard_rows_message (line 304) | def _would_discard_rows_message(table): FILE: corehq/apps/fixtures/upload/validation.py function validate_fixture_file_format (line 10) | def validate_fixture_file_format(file_or_filename): function _validate_fixture_upload (line 22) | def _validate_fixture_upload(workbook): function _diff_lists (line 120) | def _diff_lists(list_a, list_b): FILE: corehq/apps/fixtures/upload/workbook.py function get_workbook (line 29) | def get_workbook(file_or_filename): class _FixtureWorkbook (line 33) | class _FixtureWorkbook(object): method __init__ (line 38) | def __init__(self, file_or_filename): method get_types_sheet (line 52) | def get_types_sheet(self): method get_data_sheet (line 60) | def get_data_sheet(self, tag): method get_all_type_sheets (line 71) | def get_all_type_sheets(self): method get_owners (line 85) | def get_owners(self): method count_tables (line 119) | def count_tables(self): method count_rows (line 122) | def count_rows(self, data_type): method iter_tables (line 125) | def iter_tables(self, domain): method iter_rows (line 140) | def iter_rows(self, data_type, sort_keys): method get_key (line 174) | def get_key(self, obj): method iter_ownerships (line 179) | def iter_ownerships(self, row, row_id, owner_ids_map, errors): class Deleted (line 209) | class Deleted: method __init__ (line 210) | def __init__(self, key): class _FixtureTableDefinition (line 214) | class _FixtureTableDefinition(object): method __init__ (line 216) | def __init__(self, table_id, fields, item_attributes, is_global, uid, ... method from_row (line 225) | def from_row(cls, row_dict): function _is_deleted (line 292) | def _is_deleted(row_dict): function _process_item_field (line 296) | def _process_item_field(field, data_item): FILE: corehq/apps/fixtures/utils.py function clean_fixture_field_name (line 13) | def clean_fixture_field_name(field_name): function is_identifier_invalid (line 24) | def is_identifier_invalid(name): function get_fields_without_attributes (line 43) | def get_fields_without_attributes(fields): function get_index_schema_node (line 47) | def get_index_schema_node(fixture_id, attrs_to_index): function clear_fixture_cache (line 61) | def clear_fixture_cache(domain, data_type_ids): FILE: corehq/apps/fixtures/views.py function _to_kwargs (line 69) | def _to_kwargs(req): function update_tables (line 77) | def update_tables(request, domain, data_type_id=None): function table_json (line 154) | def table_json(table): function _update_types (line 164) | def _update_types(data_type, patches, data_tag, is_global, description): function _update_items (line 188) | def _update_items(fields_patches, domain, data_type_id): function _create_types (line 211) | def _create_types(fields_patches, domain, data_tag, is_global, descripti... function data_table (line 225) | def data_table(request, domain): function download_item_lists (line 263) | def download_item_lists(request, domain): function fixtures_home (line 276) | def fixtures_home(domain): class FixtureViewMixIn (line 281) | class FixtureViewMixIn(object): method section_url (line 285) | def section_url(self): class UploadItemLists (line 289) | class UploadItemLists(TemplateView): method get_context_data (line 291) | def get_context_data(self, **kwargs): method get (line 297) | def get(self, request): method post (line 301) | def post(self, request): method dispatch (line 336) | def dispatch(self, request, domain, *args, **kwargs): class FixtureUploadStatusView (line 341) | class FixtureUploadStatusView(FixtureViewMixIn, BaseDomainView): method get (line 345) | def get(self, request, *args, **kwargs): method page_url (line 360) | def page_url(self): function fixture_upload_job_poll (line 365) | def fixture_upload_job_poll(request, domain, download_id, template="fixt... class UploadFixtureAPIResponse (line 375) | class UploadFixtureAPIResponse(object): method __init__ (line 379) | def __init__(self, status, message): method code (line 386) | def code(self): method get_response (line 389) | def get_response(self): class AsyncUploadFixtureAPIResponse (line 396) | class AsyncUploadFixtureAPIResponse(UploadFixtureAPIResponse): method __init__ (line 397) | def __init__(self, status, message, download_id, status_url): method get_response (line 402) | def get_response(self): function upload_fixture_api (line 417) | def upload_fixture_api(request, domain, **kwargs): function fixture_api_upload_status (line 432) | def fixture_api_upload_status(request, domain, download_id, **kwargs): function _upload_fixture_api (line 467) | def _upload_fixture_api(request, domain): function _excel_upload_file (line 515) | def _excel_upload_file(upload_file): function _get_fixture_upload_args_from_request (line 535) | def _get_fixture_upload_args_from_request(request, domain): function fixture_metadata (line 562) | def fixture_metadata(request, domain): FILE: corehq/apps/formplayer_api/clear_user_data.py function clear_user_data (line 6) | def clear_user_data(domain, username, restore_as=None): FILE: corehq/apps/formplayer_api/exceptions.py class FormplayerAPIException (line 1) | class FormplayerAPIException(Exception): class FormplayerRequestException (line 5) | class FormplayerRequestException(FormplayerAPIException): method __init__ (line 6) | def __init__(self, status_code): class FormplayerResponseException (line 10) | class FormplayerResponseException(FormplayerAPIException): method __init__ (line 11) | def __init__(self, response_json): FILE: corehq/apps/formplayer_api/form_validation.py class ValidationAPIProblem (line 17) | class ValidationAPIProblem(jsonobject.JsonObject): class ValidationAPIResult (line 24) | class ValidationAPIResult(jsonobject.JsonObject): class FormValidationResult (line 31) | class FormValidationResult(object): method __init__ (line 32) | def __init__(self, problems, success, fatal_error): method to_json (line 37) | def to_json(self): function validate_form (line 45) | def validate_form(form_xml): FILE: corehq/apps/formplayer_api/management/commands/clear_formplayer_dbs.py class Command (line 17) | class Command(BaseCommand): method create_parser (line 39) | def create_parser(self, *args, **kwargs): method add_arguments (line 45) | def add_arguments(self, parser): method handle (line 63) | def handle(self, FILE: corehq/apps/formplayer_api/management/commands/prime_formplayer_restores.py class Command (line 19) | class Command(BaseCommand): method create_parser (line 41) | def create_parser(self, *args, **kwargs): method add_arguments (line 47) | def add_arguments(self, parser): method handle (line 69) | def handle(self, function _get_users_from_csv (line 126) | def _get_users_from_csv(path): function _get_user_rows (line 142) | def _get_user_rows(domains, synced_since, not_synced_since=None, min_cas... FILE: corehq/apps/formplayer_api/migrations/0001_drop_old_tables.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/apps/formplayer_api/smsforms/api.py class TouchformsError (line 20) | class TouchformsError(ValueError): method __init__ (line 22) | def __init__(self, *args, **kwargs): class InvalidSessionIdException (line 27) | class InvalidSessionIdException(TouchformsError): class XFormsConfig (line 31) | class XFormsConfig(object): method __init__ (line 33) | def __init__(self, form_content, language="", session_data=None, method start_session (line 43) | def start_session(self): method _get_start_session_data (line 51) | def _get_start_session_data(self): class XformsEvent (line 80) | class XformsEvent(object): method __init__ (line 96) | def __init__(self, datadict): method text_prompt (line 108) | def text_prompt(self): method get_text_prompt (line 116) | def get_text_prompt(self): function select_to_text_compact (line 127) | def select_to_text_compact(caption, choices): class XformsResponse (line 138) | class XformsResponse(object): method __init__ (line 160) | def __init__(self, datadict): method server_down (line 194) | def server_down(cls): function _get_response (line 201) | def _get_response(data, user_id): function _post_data (line 210) | def _post_data(data, user_id): function _get_formplayer_session_data (line 245) | def _get_formplayer_session_data(data): class FormplayerInterface (line 260) | class FormplayerInterface: method __init__ (line 261) | def __init__(self, session_id, domain, user_id=Ellipsis): method user_id (line 267) | def user_id(self): method get_raw_instance (line 279) | def get_raw_instance(self): method answer_question (line 301) | def answer_question(self, answer): method current_question (line 311) | def current_question(self): method next (line 320) | def next(self): FILE: corehq/apps/formplayer_api/smsforms/exceptions.py class TouchFormsError (line 1) | class TouchFormsError(Exception): class XFormException (line 5) | class XFormException(TouchFormsError): class BadDataError (line 12) | class BadDataError(TouchFormsError): FILE: corehq/apps/formplayer_api/smsforms/sms.py class SessionStartInfo (line 4) | class SessionStartInfo(object): method __init__ (line 9) | def __init__(self, first_response, domain): method first_responses (line 15) | def first_responses(self): function start_session (line 22) | def start_session(config): function next_responses (line 31) | def next_responses(session_id, answer, domain): function _next_responses (line 41) | def _next_responses(xformsresponse, formplayer_interface): function _tf_format (line 63) | def _tf_format(text): FILE: corehq/apps/formplayer_api/smsforms/tests/test_formplayer_interface.py class FormplayerInterfaceTests (line 25) | class FormplayerInterfaceTests(SimpleTestCase): method test_get_raw_instance (line 28) | def test_get_raw_instance(self): method test_answer_question (line 46) | def test_answer_question(self): method test_current_question (line 65) | def test_current_question(self): method test_next (line 83) | def test_next(self): method validate_request (line 101) | def validate_request(self, request, expected_request_data): class MockFormplayerRequest (line 108) | class MockFormplayerRequest: method __init__ (line 109) | def __init__(self, action, mock_response): method add_action (line 117) | def add_action(self, action, mock_response): method __enter__ (line 120) | def __enter__(self): method __exit__ (line 126) | def __exit__(self, exc_type, exc_val, exc_tb): method assert_exactly_one_request (line 129) | def assert_exactly_one_request(self): method get_last_request (line 132) | def get_last_request(self): FILE: corehq/apps/formplayer_api/sync_db.py function sync_db (line 6) | def sync_db(domain, username, restore_as=None): FILE: corehq/apps/formplayer_api/tasks.py function prime_formplayer_db_for_user (line 23) | def prime_formplayer_db_for_user(self, domain, request_user_id, sync_use... function clear_formplayer_db_for_user (line 55) | def clear_formplayer_db_for_user(self, domain, request_user_id, sync_use... function get_prime_restore_user_params (line 74) | def get_prime_restore_user_params(request_user_id, sync_user_id): function get_users_for_priming (line 84) | def get_users_for_priming(domain, sync_window, sync_cutoff=None, min_cas... FILE: corehq/apps/formplayer_api/tests/test_form_validation.py class FormValidationTests (line 12) | class FormValidationTests(SimpleTestCase): method test_validation_success (line 13) | def test_validation_success(self, mock): method test_validation_fail (line 17) | def test_validation_fail(self, mock): method test_bad_status (line 35) | def test_bad_status(self, mock): function _get_validation_result (line 42) | def _get_validation_result(mock, api_response, status_code=200): FILE: corehq/apps/formplayer_api/tests/test_prime_restore.py function make_synclog (line 11) | def make_synclog(domain, date, user, request_user=None, is_formplayer=Tr... class PrimeRestoreTests (line 18) | class PrimeRestoreTests(TestCase): method setUpClass (line 20) | def setUpClass(cls): method tearDownClass (line 46) | def tearDownClass(cls): method test_get_users_for_priming (line 50) | def test_get_users_for_priming(self): method test_get_users_for_priming_case_count (line 54) | def test_get_users_for_priming_case_count(self): FILE: corehq/apps/formplayer_api/utils.py function get_formplayer_url (line 7) | def get_formplayer_url(for_js=False): function check_user_access (line 17) | def check_user_access(domain, username, allow_enterprise=False): FILE: corehq/apps/geospatial/apps.py class GeospatialConfig (line 4) | class GeospatialConfig(AppConfig): FILE: corehq/apps/geospatial/dispatchers.py class CaseManagementMapDispatcher (line 10) | class CaseManagementMapDispatcher(ReportDispatcher): method dispatch (line 15) | def dispatch(self, request, *args, **kwargs): FILE: corehq/apps/geospatial/es.py function find_precision (line 23) | def find_precision(query, case_property): function get_max_doc_count (line 49) | def get_max_doc_count(query, case_property, precision): function apply_geohash_agg (line 97) | def apply_geohash_agg(query, case_property, precision): function mid (line 126) | def mid(lower, upper): function case_query_for_missing_geopoint_val (line 139) | def case_query_for_missing_geopoint_val( function _geopoint_value_missing_for_property (line 157) | def _geopoint_value_missing_for_property(geo_case_property_name): FILE: corehq/apps/geospatial/exceptions.py class GeoSpatialException (line 1) | class GeoSpatialException(Exception): class InvalidCoordinate (line 5) | class InvalidCoordinate(GeoSpatialException): method __init__ (line 9) | def __init__(self, msg=None, *args, **kwargs): class InvalidDistributionParam (line 15) | class InvalidDistributionParam(GeoSpatialException): class CaseReassignmentValidationError (line 19) | class CaseReassignmentValidationError(Exception): class GeoPolygonValidationError (line 23) | class GeoPolygonValidationError(Exception): FILE: corehq/apps/geospatial/filters.py class GPSDataFilter (line 7) | class GPSDataFilter(BaseSingleOptionFilter): method options (line 16) | def options(self): method show_all (line 22) | def show_all(self): FILE: corehq/apps/geospatial/forms.py class GeospatialConfigForm (line 18) | class GeospatialConfigForm(forms.ModelForm): class Meta (line 20) | class Meta: method __init__ (line 107) | def __init__(self, *args, **kwargs): method domain (line 197) | def domain(self): method clean (line 200) | def clean(self): method save (line 224) | def save(self, commit=True): FILE: corehq/apps/geospatial/management/commands/copy_gps_metadata.py class Command (line 16) | class Command(BaseCommand): method add_arguments (line 19) | def add_arguments(self, parser): method handle (line 30) | def handle(self, *args, **options): function iter_forms_with_location (line 77) | def iter_forms_with_location(domain, xmlns=None): function form_location (line 93) | def form_location(form): function get_form_cases (line 120) | def get_form_cases(form, case_type=None): function as_datetime (line 130) | def as_datetime(js_datetime_str): function get_case_block (line 145) | def get_case_block(case_id, case_property, value): function submit_chunk (line 153) | def submit_chunk(domain, case_blocks): FILE: corehq/apps/geospatial/management/commands/index_geolocation_case_properties.py class Command (line 11) | class Command(BaseCommand): method add_arguments (line 14) | def add_arguments(self, parser): method handle (line 18) | def handle(self, *args, **options): function index_case_docs (line 24) | def index_case_docs(domain, case_type=None): FILE: corehq/apps/geospatial/management/commands/index_utils.py function process_batch (line 10) | def process_batch( function _index_case_ids (line 26) | def _index_case_ids(case_ids, with_progress): FILE: corehq/apps/geospatial/migrations/0001_create_geopolygon.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/geospatial/migrations/0002_geoconfig.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/geospatial/migrations/0003_auto_20230908_0927.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/geospatial/migrations/0004_auto_20230920_0821.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/geospatial/migrations/0005_auto_20240202_0807.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/geospatial/migrations/0006_geoconfig_max_cases_per_user_and_more.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/geospatial/migrations/0007_geoconfig_max_case_distance_and_more.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/geospatial/migrations/0008_geoconfig_flag_assigned_cases.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/geospatial/migrations/0009_geoconfig_api_key_cbc_encryption.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/geospatial/migrations/0010_remove_road_network_algorithm.py function migrate_road_network_to_radial (line 7) | def migrate_road_network_to_radial(apps, schema_editor): class Migration (line 19) | class Migration(migrations.Migration): FILE: corehq/apps/geospatial/models.py class GeoPolygon (line 9) | class GeoPolygon(models.Model): class GeoConfig (line 19) | class GeoConfig(models.Model): method disbursement_solver (line 69) | def disbursement_solver(self): method as_dict (line 74) | def as_dict(self, fields=None): FILE: corehq/apps/geospatial/reports.py class BaseCaseMapReport (line 49) | class BaseCaseMapReport(ProjectReport, CaseListMixin, XpathCaseSearchFil... method template_context (line 57) | def template_context(self): method _build_query (line 71) | def _build_query(self): method _get_geo_location (line 78) | def _get_geo_location(self, case): method rows (line 88) | def rows(self): class CaseManagementMap (line 92) | class CaseManagementMap(BaseCaseMapReport): method default_report_url (line 109) | def default_report_url(self): method template_context (line 113) | def template_context(self): method headers (line 121) | def headers(self): method rows (line 136) | def rows(self): class CaseGroupingReport (line 153) | class CaseGroupingReport(BaseCaseMapReport): method headers (line 172) | def headers(self): method template_context (line 187) | def template_context(self): method _base_query (line 192) | def _base_query(self): method rows (line 197) | def rows(self): method _get_buckets (line 283) | def _get_buckets(self): method _aggregate_query (line 297) | def _aggregate_query(self, query): method features_from_request (line 309) | def features_from_request(self): method saved_polygon_from_request (line 320) | def saved_polygon_from_request(self): method all_features (line 330) | def all_features(self): method total_records (line 334) | def total_records(self): method _build_query (line 344) | def _build_query(self): method _get_filter_for_features (line 357) | def _get_filter_for_features(features): method _filter_query (line 439) | def _filter_query(self, query, filters_): FILE: corehq/apps/geospatial/routing_solvers/base.py class DisbursementAlgorithmSolverInterface (line 2) | class DisbursementAlgorithmSolverInterface: method __init__ (line 4) | def __init__(self, request_json): method solve (line 7) | def solve(self, *args, **kwargs): FILE: corehq/apps/geospatial/routing_solvers/mapbox_utils.py function validate_routing_request (line 4) | def validate_routing_request(request_json): FILE: corehq/apps/geospatial/routing_solvers/pulp.py class Parameters (line 11) | class Parameters: method __init__ (line 19) | def __init__(self, config, user_count, case_count): class RadialDistanceSolver (line 32) | class RadialDistanceSolver(DisbursementAlgorithmSolverInterface): method __init__ (line 38) | def __init__(self, request_json): method calculate_distance_matrix (line 45) | def calculate_distance_matrix(self, config): method get_parameters (line 58) | def get_parameters(self, config): method solve (line 65) | def solve(self, config, print_solution=False): method solution_results (line 138) | def solution_results(assigned, unassigned, parameters): method get_decision_variables (line 142) | def get_decision_variables(x_dim, y_dim): method add_user_case_assignment_constraint (line 150) | def add_user_case_assignment_constraint(lp_problem, decision_variables... method add_case_owner_constraint (line 164) | def add_case_owner_constraint(lp_problem, decision_variables, paramete... method is_valid_user_case (line 171) | def is_valid_user_case(parameters, distance_to_case=None, travel_secs_... FILE: corehq/apps/geospatial/static/geospatial/js/bootstrap3/case_grouping_map.js constant MAPBOX_LAYER_VISIBILITY (line 14) | const MAPBOX_LAYER_VISIBILITY = { constant DEFAULT_MARKER_OPACITY (line 18) | const DEFAULT_MARKER_OPACITY = 1.0; constant OBSCURING_OPACITY (line 19) | const OBSCURING_OPACITY = 0.2; constant DEFAULT_GROUP_ID (line 20) | const DEFAULT_GROUP_ID = "unassigned-group-id"; constant DEFAULT_GROUP (line 21) | const DEFAULT_GROUP = { constant MAP_CONTAINER_ID (line 27) | const MAP_CONTAINER_ID = 'case-grouping-map'; function clusterStatsModel (line 38) | function clusterStatsModel() { function exportModel (line 46) | function exportModel() { function updateClusterStats (line 137) | function updateClusterStats() { function loadMapClusters (line 174) | function loadMapClusters(caseList) { function getClusterLeavesAsync (line 207) | function getClusterLeavesAsync(clusterSource, clusterId, pointCount) { function setMapLayersVisibility (line 219) | function setMapLayersVisibility(visibility) { function mapMarkerModel (line 225) | function mapMarkerModel(itemId, itemData, marker, markerColors) { function revealGroupsOnMap (line 261) | function revealGroupsOnMap() { function caseGroupSelectModel (line 297) | function caseGroupSelectModel() { function setCaseGroups (line 399) | function setCaseGroups() { function clearCaseGroups (line 464) | function clearCaseGroups() { function groupLockModel (line 472) | function groupLockModel() { function parseCaseItem (line 495) | function parseCaseItem(caseItem, caseRowOrder) { function loadCases (line 504) | function loadCases(rawCaseData) { function initMap (line 518) | function initMap() { FILE: corehq/apps/geospatial/static/geospatial/js/bootstrap3/case_management.js constant MAP_CONTAINER_ID (line 11) | const MAP_CONTAINER_ID = 'geospatial-map'; constant SHOW_USERS_QUERY_PARAM (line 12) | const SHOW_USERS_QUERY_PARAM = 'show_users'; constant USER_LOCATION_ID_QUERY_PARAM (line 13) | const USER_LOCATION_ID_QUERY_PARAM = 'user_location_id'; constant USER_LOCATION_NAME_QUERY_PARAM (line 14) | const USER_LOCATION_NAME_QUERY_PARAM = 'user_location_name'; function showMapControls (line 23) | function showMapControls(state) { function generateDisbursementLinesSource (line 164) | function generateDisbursementLinesSource() { function initMap (line 192) | function initMap() { function getMapPolygons (line 221) | function getMapPolygons() { function selectMapItemsInPolygons (line 229) | function selectMapItemsInPolygons() { function initPolygonFilters (line 234) | function initPolygonFilters() { function initUserFilters (line 399) | function initUserFilters() { function initAssignmentReview (line 427) | function initAssignmentReview() { function beforeLoadCases (line 435) | function beforeLoadCases(caseData) { function loadCases (line 442) | function loadCases(caseData) { FILE: corehq/apps/geospatial/static/geospatial/js/bootstrap3/gps_capture.js constant MAP_CONTAINER_ID (line 13) | const MAP_CONTAINER_ID = "geospatial-map"; constant USERS_PER_PAGE (line 14) | const USERS_PER_PAGE = 10; function toggleMapVisible (line 26) | function toggleMapVisible(isVisible) { function centerMapWithMarker (line 35) | function centerMapWithMarker() { function resetMap (line 45) | function resetMap() { function setMarkerAtLngLat (line 294) | function setMarkerAtLngLat(lon, lat) { function updateSelectedItemLonLat (line 300) | function updateSelectedItemLonLat(lon, lat) { function updateGPSCoordinates (line 304) | function updateGPSCoordinates(lon, lat) { function TabListViewModel (line 343) | function TabListViewModel() { FILE: corehq/apps/geospatial/static/geospatial/js/bootstrap3/models.js constant FEATURE_QUERY_PARAM (line 15) | const FEATURE_QUERY_PARAM = 'features'; constant SELECTED_FEATURE_ID_QUERY_PARAM (line 16) | const SELECTED_FEATURE_ID_QUERY_PARAM = 'selected_feature_id'; constant DEFAULT_CENTER_COORD (line 17) | const DEFAULT_CENTER_COORD = [-20.0, -0.0]; constant DISBURSEMENT_LAYER_PREFIX (line 18) | const DISBURSEMENT_LAYER_PREFIX = 'route-'; function changeMarkerColor (line 63) | function changeMarkerColor(val) { function createMarkerLayers (line 228) | function createMarkerLayers() { function markerClickEvent (line 285) | function markerClickEvent(e, itemType) { function loadMapBoxStreetsLayers (line 310) | function loadMapBoxStreetsLayers() { function addLayersToPanel (line 380) | function addLayersToPanel() { function createClusterLayers (line 423) | function createClusterLayers() { function updatePolygonQueryParam (line 656) | function updatePolygonQueryParam() { function updateSelectedSavedPolygonParam (line 667) | function updateSelectedSavedPolygonParam() { function removeActivePolygonLayer (line 704) | function removeActivePolygonLayer() { function createActivePolygonLayer (line 713) | function createActivePolygonLayer(polygonObj) { function clearDisbursementBeforeProceeding (line 753) | function clearDisbursementBeforeProceeding() { function confirmForClearingDisbursement (line 769) | function confirmForClearingDisbursement() { function validateSavedPolygonName (line 917) | function validateSavedPolygonName(name) { function loadUserData (line 1034) | function loadUserData() { FILE: corehq/apps/geospatial/static/geospatial/js/bootstrap5/case_grouping_map.js constant MAPBOX_LAYER_VISIBILITY (line 14) | const MAPBOX_LAYER_VISIBILITY = { constant DEFAULT_MARKER_OPACITY (line 18) | const DEFAULT_MARKER_OPACITY = 1.0; constant OBSCURING_OPACITY (line 19) | const OBSCURING_OPACITY = 0.2; constant DEFAULT_GROUP_ID (line 20) | const DEFAULT_GROUP_ID = "unassigned-group-id"; constant DEFAULT_GROUP (line 21) | const DEFAULT_GROUP = { constant MAP_CONTAINER_ID (line 27) | const MAP_CONTAINER_ID = 'case-grouping-map'; function clusterStatsModel (line 38) | function clusterStatsModel() { function exportModel (line 46) | function exportModel() { function updateClusterStats (line 137) | function updateClusterStats() { function loadMapClusters (line 174) | function loadMapClusters(caseList) { function getClusterLeavesAsync (line 207) | function getClusterLeavesAsync(clusterSource, clusterId, pointCount) { function setMapLayersVisibility (line 219) | function setMapLayersVisibility(visibility) { function mapMarkerModel (line 225) | function mapMarkerModel(itemId, itemData, marker, markerColors) { function revealGroupsOnMap (line 261) | function revealGroupsOnMap() { function caseGroupSelectModel (line 297) | function caseGroupSelectModel() { function setCaseGroups (line 399) | function setCaseGroups() { function clearCaseGroups (line 464) | function clearCaseGroups() { function groupLockModel (line 472) | function groupLockModel() { function parseCaseItem (line 495) | function parseCaseItem(caseItem, caseRowOrder) { function loadCases (line 504) | function loadCases(rawCaseData) { function initMap (line 518) | function initMap() { FILE: corehq/apps/geospatial/static/geospatial/js/bootstrap5/case_management.js constant MAP_CONTAINER_ID (line 11) | const MAP_CONTAINER_ID = 'geospatial-map'; constant SHOW_USERS_QUERY_PARAM (line 12) | const SHOW_USERS_QUERY_PARAM = 'show_users'; constant USER_LOCATION_ID_QUERY_PARAM (line 13) | const USER_LOCATION_ID_QUERY_PARAM = 'user_location_id'; constant USER_LOCATION_NAME_QUERY_PARAM (line 14) | const USER_LOCATION_NAME_QUERY_PARAM = 'user_location_name'; function showMapControls (line 23) | function showMapControls(state) { function generateDisbursementLinesSource (line 164) | function generateDisbursementLinesSource() { function initMap (line 192) | function initMap() { function getMapPolygons (line 221) | function getMapPolygons() { function selectMapItemsInPolygons (line 229) | function selectMapItemsInPolygons() { function initPolygonFilters (line 234) | function initPolygonFilters() { function initUserFilters (line 399) | function initUserFilters() { function initAssignmentReview (line 427) | function initAssignmentReview() { function beforeLoadCases (line 435) | function beforeLoadCases(caseData) { function loadCases (line 442) | function loadCases(caseData) { FILE: corehq/apps/geospatial/static/geospatial/js/bootstrap5/gps_capture.js constant MAP_CONTAINER_ID (line 13) | const MAP_CONTAINER_ID = "geospatial-map"; constant USERS_PER_PAGE (line 14) | const USERS_PER_PAGE = 10; function toggleMapVisible (line 26) | function toggleMapVisible(isVisible) { function centerMapWithMarker (line 35) | function centerMapWithMarker() { function resetMap (line 45) | function resetMap() { function setMarkerAtLngLat (line 294) | function setMarkerAtLngLat(lon, lat) { function updateSelectedItemLonLat (line 300) | function updateSelectedItemLonLat(lon, lat) { function updateGPSCoordinates (line 304) | function updateGPSCoordinates(lon, lat) { function TabListViewModel (line 343) | function TabListViewModel() { FILE: corehq/apps/geospatial/static/geospatial/js/bootstrap5/models.js constant FEATURE_QUERY_PARAM (line 15) | const FEATURE_QUERY_PARAM = 'features'; constant SELECTED_FEATURE_ID_QUERY_PARAM (line 16) | const SELECTED_FEATURE_ID_QUERY_PARAM = 'selected_feature_id'; constant DEFAULT_CENTER_COORD (line 17) | const DEFAULT_CENTER_COORD = [-20.0, -0.0]; constant DISBURSEMENT_LAYER_PREFIX (line 18) | const DISBURSEMENT_LAYER_PREFIX = 'route-'; function changeMarkerColor (line 63) | function changeMarkerColor(val) { function createMarkerLayers (line 228) | function createMarkerLayers() { function markerClickEvent (line 285) | function markerClickEvent(e, itemType) { function loadMapBoxStreetsLayers (line 310) | function loadMapBoxStreetsLayers() { function addLayersToPanel (line 380) | function addLayersToPanel() { function createClusterLayers (line 423) | function createClusterLayers() { function updatePolygonQueryParam (line 656) | function updatePolygonQueryParam() { function updateSelectedSavedPolygonParam (line 667) | function updateSelectedSavedPolygonParam() { function removeActivePolygonLayer (line 704) | function removeActivePolygonLayer() { function createActivePolygonLayer (line 713) | function createActivePolygonLayer(polygonObj) { function clearDisbursementBeforeProceeding (line 753) | function clearDisbursementBeforeProceeding() { function confirmForClearingDisbursement (line 769) | function confirmForClearingDisbursement() { function validateSavedPolygonName (line 917) | function validateSavedPolygonName(name) { function loadUserData (line 1034) | function loadUserData() { FILE: corehq/apps/geospatial/static/geospatial/js/utils.js constant DEFAULT_MARKER_OPACITY (line 6) | const DEFAULT_MARKER_OPACITY = 1.0; constant MAX_URL_LENGTH (line 7) | const MAX_URL_LENGTH = 4500; function updateUrl (line 60) | function updateUrl(url) { function downloadCsv (line 68) | function downloadCsv(items, headers, cols, fileName) { FILE: corehq/apps/geospatial/tasks.py function geo_cases_reassignment_update_owners (line 24) | def geo_cases_reassignment_update_owners(domain, case_owner_updates_dict): function index_es_docs_with_location_props (line 43) | def index_es_docs_with_location_props(domain): FILE: corehq/apps/geospatial/tests/test_copy_gps_metadata.py class TestGetFormCases (line 12) | class TestGetFormCases(SimpleTestCase): method test_get_form_cases (line 13) | def test_get_form_cases(self): method test_get_form_cases_with_case_type (line 25) | def test_get_form_cases_with_case_type(self): method test_get_parent_case_type (line 36) | def test_get_parent_case_type(self): method test_get_child_case_type (line 43) | def test_get_child_case_type(self): method test_get_form_cases_with_other_case_type (line 54) | def test_get_form_cases_with_other_case_type(self): method test_form_with_no_cases (line 58) | def test_form_with_no_cases(self): class TestIterFormsWithLocation (line 74) | class TestIterFormsWithLocation(SimpleTestCase): method test_location_in_metadata_yields_form (line 76) | def test_location_in_metadata_yields_form(self, mock_scroll): method test_no_location_in_metadata_skips_form (line 85) | def test_no_location_in_metadata_skips_form(self, mock_scroll): method test_multiple_forms_returned (line 93) | def test_multiple_forms_returned(self, mock_scroll): function test_doctests (line 104) | def test_doctests(): FILE: corehq/apps/geospatial/tests/test_es.py function fake_get_max_doc_count (line 22) | def fake_get_max_doc_count(query, case_property, precision): function test_find_precision (line 29) | def test_find_precision(): class TestGetMaxDocCount (line 39) | class TestGetMaxDocCount(TestCase): method setUpClass (line 50) | def setUpClass(cls): method _get_case_blocks (line 56) | def _get_case_blocks(): method test_max_doc_count (line 77) | def test_max_doc_count(self): function test_doctests (line 85) | def test_doctests(): FILE: corehq/apps/geospatial/tests/test_index_geolocation_case_properties.py class TestGetFormCases (line 15) | class TestGetFormCases(TestCase): method setUpClass (line 22) | def setUpClass(cls): method test_has_cases_to_index (line 51) | def test_has_cases_to_index(self): method test_cases_correctly_indexed (line 56) | def test_cases_correctly_indexed(self): FILE: corehq/apps/geospatial/tests/test_mapbox_optimize.py class TestMapboxUtils (line 9) | class TestMapboxUtils(SimpleTestCase): method test_validate_routing_request (line 11) | def test_validate_routing_request(self): FILE: corehq/apps/geospatial/tests/test_models.py class TestGeoConfig (line 10) | class TestGeoConfig(TestCase): method test_geo_config (line 15) | def test_geo_config(self): method get_geo_config (line 25) | def get_geo_config(self): FILE: corehq/apps/geospatial/tests/test_pulp.py class TestRadialDistanceSolver (line 7) | class TestRadialDistanceSolver(SimpleTestCase): method setUp (line 10) | def setUp(self): method _problem_data (line 15) | def _problem_data(self): method test_basic (line 33) | def test_basic(self): method test_with_max_criteria (line 45) | def test_with_max_criteria(self): method test_more_cases_than_is_assignable (line 57) | def test_more_cases_than_is_assignable(self): method test_too_few_cases_for_minimum_criteria (line 71) | def test_too_few_cases_for_minimum_criteria(self): method test_no_cases_is_infeasible_solution (line 82) | def test_no_cases_is_infeasible_solution(self): method test_no_users_is_infeasible_solution (line 93) | def test_no_users_is_infeasible_solution(self): method test_cases_too_far_distance (line 108) | def test_cases_too_far_distance(self): method test_massive_distance_disburses_normally (line 121) | def test_massive_distance_disburses_normally(self): method test_radial_solver_does_not_take_travel_time_into_account (line 136) | def test_radial_solver_does_not_take_travel_time_into_account(self): method test_incorrect_data (line 145) | def test_incorrect_data(self): FILE: corehq/apps/geospatial/tests/test_reports.py function test_geojson_to_es_geoshape (line 24) | def test_geojson_to_es_geoshape(): function test_validate_geometry_type (line 42) | def test_validate_geometry_type(): function test_validate_geometry_schema (line 51) | def test_validate_geometry_schema(): class TestCaseGroupingReport (line 62) | class TestCaseGroupingReport(BaseReportTest): method setUpClass (line 65) | def setUpClass(cls): method tearDownClass (line 94) | def tearDownClass(cls): method _get_request (line 98) | def _get_request(self, **kwargs): method test_case_row_order (line 105) | def test_case_row_order(self): method test_bucket_cases (line 116) | def test_bucket_cases(self): method test_bucket_and_polygon_with_hole (line 146) | def test_bucket_and_polygon_with_hole(self): method test_features_from_request (line 162) | def test_features_from_request(self): method test_saved_polygon_from_request (line 175) | def test_saved_polygon_from_request(self): method get_cases (line 184) | def get_cases(self): function test_doctests (line 222) | def test_doctests(): function test_filter_for_two_polygons (line 229) | def test_filter_for_two_polygons(): function test_one_polygon_with_hole (line 426) | def test_one_polygon_with_hole(): FILE: corehq/apps/geospatial/tests/test_tasks.py class TestIndexESDocsWithLocationProps (line 18) | class TestIndexESDocsWithLocationProps(TestCase): method setUp (line 22) | def setUp(self): method test_max_doc_limit_reached (line 40) | def test_max_doc_limit_reached(self): method test_index_docs (line 49) | def test_index_docs(self): function _create_case (line 63) | def _create_case(factory, gps_prop_name, name): FILE: corehq/apps/geospatial/tests/test_utils.py class TestGetGeoProperty (line 34) | class TestGetGeoProperty(TestCase): method test_no_config_set (line 38) | def test_no_config_set(self): method test_custom_config_set (line 42) | def test_custom_config_set(self): method test_invalid_domain_provided (line 57) | def test_invalid_domain_provided(self): class TestSetGPSProperty (line 63) | class TestSetGPSProperty(TestCase): method setUpClass (line 67) | def setUpClass(cls): method tearDownClass (line 87) | def tearDownClass(cls): method test_set_case_gps_property (line 95) | def test_set_case_gps_property(self): method test_create_case_with_gps_property (line 106) | def test_create_case_with_gps_property(self): method test_set_user_gps_property (line 121) | def test_set_user_gps_property(self): class TestUpdateCasesOwner (line 133) | class TestUpdateCasesOwner(TestCase): method setUp (line 136) | def setUp(self): method tearDown (line 153) | def tearDown(self): method _create_parent_index (line 162) | def _create_parent_index(self, case, parent_case_id): method _refresh_cases (line 173) | def _refresh_cases(self): method _assert_for_assigned_cases_flag_absent (line 177) | def _assert_for_assigned_cases_flag_absent(self): method _assert_for_assigned_cases_flag_present (line 181) | def _assert_for_assigned_cases_flag_present(self): method test_update_cases_owner (line 185) | def test_update_cases_owner(self): method test_update_cases_owner_with_flag_assigned_cases (line 210) | def test_update_cases_owner_with_flag_assigned_cases(self): class TestCeleryTaskTracker (line 228) | class TestCeleryTaskTracker(TestCase): method setUpClass (line 234) | def setUpClass(cls): method tearDown (line 240) | def tearDown(self): method test_mark_active (line 244) | def test_mark_active(self): method test_get_active (line 248) | def test_get_active(self): method test_mark_inactive (line 252) | def test_mark_inactive(self): method test_mark_error (line 257) | def test_mark_error(self): method test_get_status (line 262) | def test_get_status(self): method test_set_progress (line 272) | def test_set_progress(self): method test_get_progress (line 277) | def test_get_progress(self): method test_clear_progress (line 282) | def test_clear_progress(self): method test_invalid_progress (line 288) | def test_invalid_progress(self): class TestGetCeleryTaskTracker (line 293) | class TestGetCeleryTaskTracker(SimpleTestCase): method test_get_celery_task_tracker (line 297) | def test_get_celery_task_tracker(self): class TestGetFlagAssignedCasesConfig (line 309) | class TestGetFlagAssignedCasesConfig(TestCase): method test_flag_not_set (line 313) | def test_flag_not_set(self): method test_flag_set (line 316) | def test_flag_set(self): method test_invalid_domain_provided (line 326) | def test_invalid_domain_provided(self): FILE: corehq/apps/geospatial/tests/test_views.py class BaseGeospatialViewClass (line 28) | class BaseGeospatialViewClass(TestCase): method setUpClass (line 32) | def setUpClass(cls): method tearDownClass (line 48) | def tearDownClass(cls): method endpoint (line 54) | def endpoint(self): method login_url (line 58) | def login_url(self): class GeoConfigViewTestClass (line 62) | class GeoConfigViewTestClass(TestCase): method setUpClass (line 68) | def setUpClass(cls): method tearDownClass (line 103) | def tearDownClass(cls): method _make_post (line 109) | def _make_post(self, data): method construct_data (line 115) | def construct_data(case_property, user_property=None, extra_data=None): method test_feature_flag_not_enabled (line 129) | def test_feature_flag_not_enabled(self): method test_new_config_create (line 134) | def test_new_config_create(self): method test_config_update (line 155) | def test_config_update(self): method test_config_update__road_network_algorithm_ff_disabled (line 181) | def test_config_update__road_network_algorithm_ff_disabled(self): class TestGPSCaptureView (line 208) | class TestGPSCaptureView(BaseGeospatialViewClass): method test_no_access (line 211) | def test_no_access(self): method test_success (line 221) | def test_success(self): class TestGetPaginatedCasesOrUsers (line 229) | class TestGetPaginatedCasesOrUsers(BaseGeospatialViewClass): method setUpClass (line 233) | def setUpClass(cls): method tearDownClass (line 273) | def tearDownClass(cls): method test_get_paginated_cases (line 282) | def test_get_paginated_cases(self): method test_get_paginated_users_custom_property (line 298) | def test_get_paginated_users_custom_property(self): class TestGetUsersWithGPS (line 316) | class TestGetUsersWithGPS(BaseGeospatialViewClass): method setUpClass (line 320) | def setUpClass(cls): method tearDownClass (line 367) | def tearDownClass(cls): method test_get_users_with_gps (line 375) | def test_get_users_with_gps(self): method test_get_location_filtered_users (line 397) | def test_get_location_filtered_users(self): class TestGeoPolygonListView (line 405) | class TestGeoPolygonListView(BaseGeospatialViewClass): method setUp (line 408) | def setUp(self): method tearDown (line 412) | def tearDown(self): method _make_post_request (line 416) | def _make_post_request(self, data): method test_not_logged_in (line 424) | def test_not_logged_in(self): method test_feature_flag_not_enabled (line 428) | def test_feature_flag_not_enabled(self): method test_save_polygon (line 433) | def test_save_polygon(self): method _assert_error_message (line 445) | def _assert_error_message(self, response, message): method test_geo_json_validation (line 451) | def test_geo_json_validation(self): method test_empty_name_validation (line 469) | def test_empty_name_validation(self): method test_name_validation (line 477) | def test_name_validation(self): class TestGeoPolygonDetailView (line 490) | class TestGeoPolygonDetailView(BaseGeospatialViewClass): method setUp (line 493) | def setUp(self): method tearDown (line 497) | def tearDown(self): method _create_sample_polygon (line 501) | def _create_sample_polygon(self): method _endpoint (line 509) | def _endpoint(self, geo_polygon_id): method test_not_logged_in (line 513) | def test_not_logged_in(self): method test_feature_flag_not_enabled (line 518) | def test_feature_flag_not_enabled(self): method test_get_polygon (line 524) | def test_get_polygon(self): method test_delete_polygon (line 531) | def test_delete_polygon(self): function _sample_geojson_data (line 541) | def _sample_geojson_data(name='test-2'): class TestCasesReassignmentView (line 569) | class TestCasesReassignmentView(BaseGeospatialViewClass): method setUp (line 572) | def setUp(self): method tearDown (line 606) | def tearDown(self): method _create_parent_index (line 612) | def _create_parent_index(self, case, parent_case_id): method _refresh_cases (line 623) | def _refresh_cases(self): method _assert_for_request_cases_success (line 627) | def _assert_for_request_cases_success(self, response): method test_not_logged_in (line 633) | def test_not_logged_in(self): method test_feature_flag_not_enabled (line 637) | def test_feature_flag_not_enabled(self): method _assert_for_assigned_cases_flag_disabled (line 641) | def _assert_for_assigned_cases_flag_disabled(self, cases): method _assert_for_assigned_cases_flag_enabled (line 645) | def _assert_for_assigned_cases_flag_enabled(self, cases): method test_cases_reassignment (line 650) | def test_cases_reassignment(self): method test_cases_reassignment_with_assigned_cases_flag_enabled (line 672) | def test_cases_reassignment_with_assigned_cases_flag_enabled(self, *ar... method test_cases_reassignment_with_related_cases (line 693) | def test_cases_reassignment_with_related_cases(self): method test_cases_reassignment_with_related_cases_and_assigned_cases_flag_enabled (line 718) | def test_cases_reassignment_with_related_cases_and_assigned_cases_flag... method test_cases_reassignment_with_related_case_in_request (line 742) | def test_cases_reassignment_with_related_case_in_request(self): method test_cases_reassignment_cases_limit_error (line 765) | def test_cases_reassignment_cases_limit_error(self, *args): method test_cases_reassignment_cases_json_error (line 783) | def test_cases_reassignment_cases_json_error(self, *args): method test_cases_reassignment_cases_invalid_case_ids (line 794) | def test_cases_reassignment_cases_invalid_case_ids(self, *args): method test_cases_reassignment_cases_invalid_owner_ids (line 815) | def test_cases_reassignment_cases_invalid_owner_ids(self, *args): method test_cases_reassignment_async_invocation (line 838) | def test_cases_reassignment_async_invocation(self, mocked_process_as_a... method test_cases_reassignment_async (line 858) | def test_cases_reassignment_async(self, *args): method test_cases_reassignment_async_with_assigned_cases_flag_enabled (line 882) | def test_cases_reassignment_async_with_assigned_cases_flag_enabled(sel... method test_cases_reassignment_async_task_invoked_and_not_completed (line 905) | def test_cases_reassignment_async_task_invoked_and_not_completed(self,... method test_cases_reassignment_max_limit_error (line 928) | def test_cases_reassignment_max_limit_error(self): FILE: corehq/apps/geospatial/utils.py function get_geo_case_property (line 19) | def get_geo_case_property(domain): function get_geo_user_property (line 23) | def get_geo_user_property(domain): function get_flag_assigned_cases_config (line 27) | def get_flag_assigned_cases_config(domain): function get_geo_config (line 31) | def get_geo_config(domain): function get_celery_task_tracker (line 39) | def get_celery_task_tracker(domain, task_slug): function _format_coordinates (line 44) | def _format_coordinates(lat, lon): function create_case_with_gps_property (line 48) | def create_case_with_gps_property(domain, case_data): function set_case_gps_property (line 62) | def set_case_gps_property(domain, case_data, create_case=False): function set_user_gps_property (line 73) | def set_user_gps_property(domain, user_data): function get_lat_lon_from_dict (line 80) | def get_lat_lon_from_dict(data, key): function validate_geometry (line 90) | def validate_geometry(geojson_geometry): function geojson_to_es_geoshape (line 167) | def geojson_to_es_geoshape(geojson): class CaseOwnerUpdate (line 184) | class CaseOwnerUpdate: method from_case_to_owner_id_dict (line 190) | def from_case_to_owner_id_dict(cls, case_to_owner_id): method total_cases_count (line 197) | def total_cases_count(cls, case_owner_updates): method to_dict (line 204) | def to_dict(cls, case_owner_updates): function update_cases_owner (line 208) | def update_cases_owner(domain, case_owner_updates_dict, flag_assigned_ca... class CeleryTaskTracker (line 237) | class CeleryTaskTracker(object): method __init__ (line 242) | def __init__(self, task_key): method mark_requested (line 248) | def mark_requested(self, timeout=ONE_DAY): method mark_as_error (line 255) | def mark_as_error(self, error_slug=None, timeout=ONE_DAY * 14): method is_active (line 260) | def is_active(self): method get_status (line 263) | def get_status(self): method mark_completed (line 271) | def mark_completed(self): method update_progress (line 274) | def update_progress(self, current, total, timeout=ONE_DAY): method get_progress (line 280) | def get_progress(self): method clear_progress (line 286) | def clear_progress(self): FILE: corehq/apps/geospatial/views.py function geospatial_default (line 71) | def geospatial_default(request, *args, **kwargs): class BaseGeospatialView (line 75) | class BaseGeospatialView(BaseDomainView): method main_context (line 78) | def main_context(self): class CaseDisbursementAlgorithm (line 85) | class CaseDisbursementAlgorithm(BaseDomainView): method post (line 88) | def post(self, request, domain, *args, **kwargs): class GeoPolygonListView (line 103) | class GeoPolygonListView(BaseDomainView): method post (line 106) | def post(self, request, *args, **kwargs): method _validate_request_geo_json (line 135) | def _validate_request_geo_json(self, geo_json): method _validate_request_geo_polygon_name (line 146) | def _validate_request_geo_polygon_name(self, geo_polygon_name): class GeoPolygonDetailView (line 157) | class GeoPolygonDetailView(BaseDomainView): method get (line 160) | def get(self, request, *args, **kwargs): method delete (line 167) | def delete(self, request, *args, **kwargs): class BaseConfigView (line 182) | class BaseConfigView(BaseGeospatialView): method dispatch (line 186) | def dispatch(self, request, *args, **kwargs): method section_url (line 190) | def section_url(self): method page_url (line 194) | def page_url(self): method config (line 198) | def config(self): method config_form (line 207) | def config_form(self): method page_context (line 213) | def page_context(self): method post (line 218) | def post(self, request, *args, **kwargs): class GeospatialConfigPage (line 231) | class GeospatialConfigPage(BaseConfigView): method page_context (line 240) | def page_context(self): class GPSCaptureView (line 259) | class GPSCaptureView(BaseGeospatialView): method dispatch (line 275) | def dispatch(self, *args, **kwargs): method section_url (line 279) | def section_url(self): method page_url (line 283) | def page_url(self): method page_context (line 287) | def page_context(self): method _case_filters_context (line 301) | def _case_filters_context(self): method filter_classes (line 317) | def filter_classes(self): method post (line 322) | def post(self, request, *args, **kwargs): function get_paginated_cases_or_users (line 344) | def get_paginated_cases_or_users(request, domain): class GetPaginatedCases (line 357) | class GetPaginatedCases(CaseListMixin): method __init__ (line 360) | def __init__(self, request, domain, **kwargs): method _base_query (line 367) | def _base_query(self): method get_paginated_cases_without_gps (line 374) | def get_paginated_cases_without_gps(self, page, limit): function _get_paginated_users_without_gps (line 418) | def _get_paginated_users_without_gps(domain, page, limit, query): function get_users_with_gps (line 447) | def get_users_with_gps(request, domain): class CasesReassignmentView (line 484) | class CasesReassignmentView(BaseDomainView): method post (line 491) | def post(self, request, domain, *args, **kwargs): method _validate_request_cases_limit (line 520) | def _validate_request_cases_limit(self, case_id_to_owner_id): method _validate_request_case_ids (line 528) | def _validate_request_case_ids(self, case_ids): method _validate_request_owner_ids (line 536) | def _validate_request_owner_ids(self, owner_ids): method _include_related_cases (line 544) | def _include_related_cases(self, case_id_to_owner_id, case_owner_updat... method _validate_assignment_limit (line 560) | def _validate_assignment_limit(self, case_owner_updates): method get_child_cases (line 568) | def get_child_cases(self, domain, case_ids): method get_parent_cases (line 587) | def get_parent_cases(self, domain, case_ids): method _format_as_list (line 607) | def _format_as_list(self, data): method _get_parent_index (line 612) | def _get_parent_index(self, doc): method _add_related_case (line 615) | def _add_related_case(self, case_id_to_owner_id, case_id, related_case... method _process_as_async (line 621) | def _process_as_async(self, case_owner_updates): FILE: corehq/apps/groups/dbaccessors.py function group_by_domain (line 11) | def group_by_domain(domain): function _group_by_name (line 16) | def _group_by_name(domain, name, **kwargs): function group_by_name (line 25) | def group_by_name(domain, name, include_docs=True): function stale_group_by_name (line 33) | def stale_group_by_name(domain, name, include_docs=True): function refresh_group_views (line 42) | def refresh_group_views(): function get_group_ids_by_domain (line 54) | def get_group_ids_by_domain(domain): function get_group_id_name_map_by_user (line 62) | def get_group_id_name_map_by_user(user_id, limit=None): FILE: corehq/apps/groups/exceptions.py class CantSaveException (line 1) | class CantSaveException(Exception): FILE: corehq/apps/groups/fields.py class GroupField (line 6) | class GroupField(forms.ChoiceField): method __init__ (line 8) | def __init__(self, domain, *args, **kwargs): FILE: corehq/apps/groups/models.py class Group (line 38) | class Group(QuickCachedDocumentMixin, UndoableDocument): method wrap (line 60) | def wrap(cls, data): method save (line 68) | def save(self, *args, **kwargs): method save_docs (line 74) | def save_docs(cls, docs, use_uuids=True): method delete (line 83) | def delete(self): method delete_docs (line 88) | def delete_docs(cls, docs, **params): method clear_caches (line 94) | def clear_caches(self): method add_user (line 99) | def add_user(self, couch_user_id, save=True): method remove_user (line 112) | def remove_user(self, couch_user_id): method set_user_ids (line 126) | def set_user_ids(self, user_ids): method get_user_ids (line 146) | def get_user_ids(self, is_active=True): method get_users (line 150) | def get_users(self, is_active=True, only_commcare=False): method get_static_user_ids (line 163) | def get_static_user_ids(self, is_active=True): method get_static_user_ids_for_groups (line 167) | def get_static_user_ids_for_groups(cls, group_ids): method get_static_users (line 175) | def get_static_users(self, is_active=True): method by_domain (line 180) | def by_domain(cls, domain): method choices_by_domain (line 184) | def choices_by_domain(cls, domain): method ids_by_domain (line 193) | def ids_by_domain(cls, domain): method by_name (line 197) | def by_name(cls, domain, name, one=True): method by_user_id (line 205) | def by_user_id(cls, user_id, wrap=True): method get_case_sharing_accessible_locations (line 213) | def get_case_sharing_accessible_locations(cls, domain, user): method get_case_sharing_groups (line 220) | def get_case_sharing_groups(cls, domain, wrap=True): method get_reporting_groups (line 234) | def get_reporting_groups(cls, domain): method create_delete_record (line 244) | def create_delete_record(self, *args, **kwargs): method display_name (line 248) | def display_name(self): method user_in_group (line 255) | def user_in_group(cls, user_id, group_id): method is_member_of (line 274) | def is_member_of(self, domain): method is_deleted (line 278) | def is_deleted(self): method __repr__ (line 281) | def __repr__(self): class UnsavableGroup (line 286) | class UnsavableGroup(Group): method save (line 288) | def save(self, *args, **kwargs): class DeleteGroupRecord (line 292) | class DeleteGroupRecord(DeleteDocRecord): method get_doc (line 294) | def get_doc(self): FILE: corehq/apps/groups/static/groups/js/group_members.js function outcome (line 62) | function outcome(isSuccess, name, id, gaEventLabel, additionalCallback) { FILE: corehq/apps/groups/tests/test_groups.py class GroupTest (line 14) | class GroupTest(TestCase): method setUpClass (line 17) | def setUpClass(cls): method tearDown (line 29) | def tearDown(self): method tearDownClass (line 34) | def tearDownClass(cls): method testGetUsers (line 39) | def testGetUsers(self): method test_bulk_save (line 65) | def test_bulk_save(self): method test_remove_user (line 86) | def test_remove_user(self): method test_set_user_ids (line 106) | def test_set_user_ids(self): method test_undo_delete_group_removes_deleted_couch_doc_record (line 121) | def test_undo_delete_group_removes_deleted_couch_doc_record(self): class TestDeleteAllGroups (line 133) | class TestDeleteAllGroups(TestCase): method test_bulk_delete (line 135) | def test_bulk_delete(self): class WrapGroupTestMixin (line 145) | class WrapGroupTestMixin(object): method test_yes_Z (line 148) | def test_yes_Z(self): method test_no_Z (line 157) | def test_no_Z(self): method test_fail (line 169) | def test_fail(self): class WrapGroupTest (line 175) | class WrapGroupTest(WrapGroupTestMixin, SimpleTestCase): FILE: corehq/apps/groups/tests/test_models.py class DtNoZReTests (line 6) | class DtNoZReTests(SimpleTestCase): method test_matches_seconds_no_z (line 7) | def test_matches_seconds_no_z(self): method test_matches_milliseconds_no_z (line 11) | def test_matches_milliseconds_no_z(self): method test_not_matches_seconds_z (line 15) | def test_not_matches_seconds_z(self): method test_not_matches_milliseconds_z (line 19) | def test_not_matches_milliseconds_z(self): method test_not_matches_seconds_tz (line 23) | def test_not_matches_seconds_tz(self): method test_not_matches_milliseconds_tz (line 27) | def test_not_matches_milliseconds_tz(self): FILE: corehq/apps/groups/tests/test_utils.py function delete_all_groups (line 7) | def delete_all_groups(): FILE: corehq/apps/groups/views.py function add_group (line 25) | def add_group(request, domain): function delete_group (line 50) | def delete_group(request, domain, group_id): function undo_delete_group (line 68) | def undo_delete_group(request, domain, record_id): function restore_group (line 78) | def restore_group(request, domain, group_id): function edit_group (line 92) | def edit_group(request, domain, group_id): function update_group_data (line 129) | def update_group_data(request, domain, group_id): function update_group_membership (line 154) | def update_group_membership(request, domain, group_id): function _update_group_membership (line 162) | def _update_group_membership(request, domain, group_id): function _ensure_case_sharing_privilege (line 190) | def _ensure_case_sharing_privilege(request, group): FILE: corehq/apps/hqadmin/admin.py class ESRestorePillowCheckpointsAdmin (line 7) | class ESRestorePillowCheckpointsAdmin(admin.ModelAdmin): class HqDeployAdmin (line 22) | class HqDeployAdmin(admin.ModelAdmin): FILE: corehq/apps/hqadmin/app_config.py class HqAdminModule (line 4) | class HqAdminModule(AppConfig): method ready (line 7) | def ready(self): FILE: corehq/apps/hqadmin/corrupt_couch.py function count_missing_ids (line 62) | def count_missing_ids(*args, repair=False): function repair_missing_ids (line 88) | def repair_missing_ids(doc_name, missing_ids_file, line_range, min_tries): class Result (line 138) | class Result: method max_tries (line 145) | def max_tries(self): method avg_tries (line 149) | def avg_tries(self): function iter_missing_ids (line 153) | def iter_missing_ids(min_tries, params, repair=False): function get_doc_types (line 180) | def get_doc_types(group): function _iter_missing_ids (line 190) | def _iter_missing_ids(db, min_tries, resume_key, view_name, view_params,... function repair_couch_docs (line 226) | def repair_couch_docs(db, missing, get_doc_ids, min_tries): function iteration_parameters (line 244) | def iteration_parameters(db, doc_type, domain, view_range, group, chunk_... function find_missing_ids (line 296) | def find_missing_ids(get_doc_ids, min_tries, limit=None): class CouchCluster (line 329) | class CouchCluster: method dbname (line 333) | def dbname(self): method _node_dbs (line 338) | def _node_dbs(self): method repair (line 342) | def repair(self, doc_id): method view (line 349) | def view(self, *args, **kw): function _get_couch_node_databases (line 353) | def _get_couch_node_databases(db, node_port=COUCH_NODE_PORT): FILE: corehq/apps/hqadmin/escheck.py function check_es_cluster_health (line 4) | def check_es_cluster_health(): FILE: corehq/apps/hqadmin/forms.py class EmailForm (line 22) | class EmailForm(forms.Form): class ReprocessMessagingCaseUpdatesForm (line 29) | class ReprocessMessagingCaseUpdatesForm(forms.Form): method clean_case_ids (line 32) | def clean_case_ids(self): method __init__ (line 39) | def __init__(self, *args, **kwargs): class SuperuserManagementForm (line 63) | class SuperuserManagementForm(forms.Form): method clean (line 95) | def clean(self): method __init__ (line 98) | def __init__(self, *args, **kwargs): class OffboardingUserListForm (line 125) | class OffboardingUserListForm(forms.Form): method clean (line 132) | def clean(self): method __init__ (line 135) | def __init__(self, *args, **kwargs): function clean_data (line 152) | def clean_data(cleaned_data, offboarding_list=False): class DisableTwoFactorForm (line 214) | class DisableTwoFactorForm(forms.Form): method __init__ (line 239) | def __init__(self, initial, **kwargs): method clean_username (line 269) | def clean_username(self): method clean (line 277) | def clean(self): class DisableUserForm (line 287) | class DisableUserForm(forms.Form): method __init__ (line 299) | def __init__(self, initial, **kwargs): FILE: corehq/apps/hqadmin/history.py function download_changes (line 5) | def download_changes(db, limit, target): function get_recent_changes (line 23) | def get_recent_changes(db, limit): function _guess_date (line 36) | def _guess_date(doc): FILE: corehq/apps/hqadmin/management/commands/cchq_prbac_bootstrap.py function cchq_prbac_bootstrap (line 19) | def cchq_prbac_bootstrap(apps, schema_editor): class Command (line 27) | class Command(BaseCommand): method add_arguments (line 30) | def add_arguments(self, parser): method handle (line 50) | def handle(self, dry_run=False, verbose=False, fresh_start=False, **op... method flush_roles (line 76) | def flush_roles(self): method ensure_roles (line 80) | def ensure_roles(self, roles, dry_run=False): FILE: corehq/apps/hqadmin/management/commands/cchq_prbac_grandfather_privs.py class Command (line 8) | class Command(BaseCommand): method handle (line 11) | def handle(self, privs, **kwargs): method add_arguments (line 58) | def add_arguments(self, parser): function _confirm_community_deprecated (line 96) | def _confirm_community_deprecated(skipped_editions, noinput=False): function _confirm (line 113) | def _confirm(msg): function _get_role_edition (line 120) | def _get_role_edition(role_slug): FILE: corehq/apps/hqadmin/management/commands/cchq_prbac_revoke_privs.py class Command (line 19) | class Command(BaseCommand): method handle (line 22) | def handle(self, privs, **kwargs): method add_arguments (line 94) | def add_arguments(self, parser): FILE: corehq/apps/hqadmin/management/commands/check_case_index_ids.py class Command (line 14) | class Command(BaseCommand): method add_arguments (line 17) | def add_arguments(self, parser): method handle (line 23) | def handle(self, **options): FILE: corehq/apps/hqadmin/management/commands/check_services.py class Command (line 12) | class Command(BaseCommand): method add_arguments (line 16) | def add_arguments(self, parser): method handle (line 23) | def handle(self, service_name, **options): method print_results (line 40) | def print_results(results): FILE: corehq/apps/hqadmin/management/commands/clean_2fa_sessions.py class Command (line 11) | class Command(BaseCommand): method add_arguments (line 17) | def add_arguments(self, parser): method handle (line 32) | def handle(self, one_session=False, dry_run=False, **options): function sanitize (line 59) | def sanitize(session): function iter_sessions (line 67) | def iter_sessions(one_session): function has_sensitive_info (line 88) | def has_sensitive_info(session): function iter_wizard_login_views (line 102) | def iter_wizard_login_views(session): function get_two_factor_version (line 112) | def get_two_factor_version(): FILE: corehq/apps/hqadmin/management/commands/clear_supervisor_confs.py class Command (line 8) | class Command(BaseCommand): method add_arguments (line 11) | def add_arguments(self, parser): method handle (line 14) | def handle(self, **options): FILE: corehq/apps/hqadmin/management/commands/corrupt_couch.py class Command (line 9) | class Command(BaseCommand): method add_arguments (line 16) | def add_arguments(self, parser): method handle (line 38) | def handle(self, command, doc_name, domain, doc_type, view_range, miss... function setup_logging (line 60) | def setup_logging(debug=False): class QueryParams (line 68) | class QueryParams: FILE: corehq/apps/hqadmin/management/commands/corrupt_couch_nodes.py class Command (line 17) | class Command(BaseCommand): method add_arguments (line 27) | def add_arguments(self, parser): method handle (line 41) | def handle(self, nodes, doc_name, id_range, **options): function get_dbname (line 55) | def get_dbname(doc_name): function get_node_dbs (line 60) | def get_node_dbs(nodes, dbname, username="admin"): function print_missing_ids (line 69) | def print_missing_ids(*args): function iter_missing_ids (line 74) | def iter_missing_ids(dbs, id_range, chunk_size=10000): function query_ids (line 99) | def query_ids(db, id_range, limit=None): function query_dbs (line 111) | def query_dbs(dbs, *args, **kw): function find_missing (line 115) | def find_missing(id_sets): function check_node_integrity (line 120) | def check_node_integrity(dbs, id_range, chunk_size=10000, min_tries=50): FILE: corehq/apps/hqadmin/management/commands/delete_old_couch_views_from_disk.py class Command (line 6) | class Command(BaseCommand): method add_arguments (line 9) | def add_arguments(self, parser): method handle (line 17) | def handle(self, **options): FILE: corehq/apps/hqadmin/management/commands/delete_related_cases.py class Command (line 12) | class Command(BaseCommand): method add_arguments (line 15) | def add_arguments(self, parser): method handle (line 20) | def handle(self, domain, case_id, **options): function get_entire_case_network (line 74) | def get_entire_case_network(domain, case_ids): FILE: corehq/apps/hqadmin/management/commands/deploy_in_progress.py class Command (line 8) | class Command(BaseCommand): method handle (line 13) | def handle(self, **options): FILE: corehq/apps/hqadmin/management/commands/export_domain_forms_raw.py class FormMetadata (line 13) | class FormMetadata(JsonObject): class Command (line 22) | class Command(BaseCommand): method add_arguments (line 26) | def add_arguments(self, parser): method handle (line 30) | def handle(self, domain, folder_path, **options): FILE: corehq/apps/hqadmin/management/commands/fetch_reconciliation_records.py class Command (line 5) | class Command(BaseCommand): method add_arguments (line 14) | def add_arguments(self, parser): method handle (line 18) | def handle(self, data_type, date, **options): FILE: corehq/apps/hqadmin/management/commands/fix_checkpoint_after_rewind.py function confirm (line 10) | def confirm(msg): class Command (line 17) | class Command(BaseCommand): method add_arguments (line 27) | def add_arguments(self, parser): method handle (line 31) | def handle(self, pillow_name, **options): FILE: corehq/apps/hqadmin/management/commands/fix_checkpoints_from_date.py function confirm (line 14) | def confirm(msg): class Command (line 20) | class Command(BaseCommand): method add_arguments (line 23) | def add_arguments(self, parser): method handle (line 35) | def handle(self, **options): FILE: corehq/apps/hqadmin/management/commands/fix_checkpoints_from_file.py class Command (line 8) | class Command(BaseCommand): method add_arguments (line 11) | def add_arguments(self, parser): method handle (line 21) | def handle(self, filename, **options): FILE: corehq/apps/hqadmin/management/commands/force_web_user_password_reset.py class Command (line 13) | class Command(BaseCommand): method add_arguments (line 22) | def add_arguments(self, parser): method handle (line 28) | def handle(self, web_users_file, skip_if_reset_since, **options): function get_lines_from_file (line 74) | def get_lines_from_file(filename): function force_password_reset (line 79) | def force_password_reset(web_user): FILE: corehq/apps/hqadmin/management/commands/get_download_url.py class Command (line 10) | class Command(BaseCommand): method add_arguments (line 13) | def add_arguments(self, parser): method handle (line 18) | def handle(self, file_path, keep_hours, **options): FILE: corehq/apps/hqadmin/management/commands/import_domain_forms_raw.py class Command (line 17) | class Command(BaseCommand): method add_arguments (line 23) | def add_arguments(self, parser): method handle (line 27) | def handle(self, domain, folder_path, **options): FILE: corehq/apps/hqadmin/management/commands/kill_stale_celery_workers.py class Command (line 10) | class Command(BaseCommand): method handle (line 13) | def handle(self, **options): function _kill_stale_workers (line 17) | def _kill_stale_workers(): FILE: corehq/apps/hqadmin/management/commands/mail_admins.py class Command (line 8) | class Command(BaseCommand): method add_arguments (line 11) | def add_arguments(self, parser): method handle (line 21) | def handle(self, message, **options): FILE: corehq/apps/hqadmin/management/commands/preindex_everything.py class Command (line 16) | class Command(BaseCommand): method add_arguments (line 22) | def add_arguments(self, parser): method handle (line 47) | def handle(self, num_pool, username, **options): method mail_admins (line 121) | def mail_admins(subject, message): function clear_preindex_complete (line 131) | def clear_preindex_complete(): function set_preindex_complete (line 135) | def set_preindex_complete(head): function get_preindex_complete (line 139) | def get_preindex_complete(head): FILE: corehq/apps/hqadmin/management/commands/prune_couch_views.py class Command (line 12) | class Command(BaseCommand): method add_arguments (line 15) | def add_arguments(self, parser): method handle (line 23) | def handle(self, **options): class MyConflictsDontDie (line 67) | class MyConflictsDontDie(Exception): function delete_conflicts (line 71) | def delete_conflicts(db, doc_id): FILE: corehq/apps/hqadmin/management/commands/prune_elastic_indices.py class Command (line 8) | class Command(BaseCommand): method add_arguments (line 11) | def add_arguments(self, parser): method handle (line 31) | def handle(self, **options): function _delete_indices (line 57) | def _delete_indices(to_delete): function _close_indices (line 78) | def _close_indices(to_close, noinput): FILE: corehq/apps/hqadmin/management/commands/recent_changes.py class Command (line 8) | class Command(BaseCommand): method add_arguments (line 11) | def add_arguments(self, parser): method handle (line 24) | def handle(self, limit, filename, **options): FILE: corehq/apps/hqadmin/management/commands/record_deploy_success.py function integration_tests_link (line 22) | def integration_tests_link(url): function diff_link (line 26) | def diff_link(url): function dashboard_link (line 30) | def dashboard_link(url): function make_link (line 34) | def make_link(label, url): class Command (line 38) | class Command(BaseCommand): method add_arguments (line 41) | def add_arguments(self, parser): method handle (line 53) | def handle(self, **options): FILE: corehq/apps/hqadmin/management/commands/republish_doc_changes.py class Command (line 21) | class Command(BaseCommand): method add_arguments (line 28) | def add_arguments(self, parser): method handle (line 33) | def handle(self, stale_data_in_es_file, delimiter, skip_domains, *args... function _iter_changes (line 39) | def _iter_changes(stale_data_in_es_file, skip_domains, delimiter): function should_not_republish_docs (line 59) | def should_not_republish_docs(domain): function _change_meta (line 63) | def _change_meta(data_row, source): FILE: corehq/apps/hqadmin/management/commands/send_email.py class Command (line 11) | class Command(BaseCommand): method add_arguments (line 14) | def add_arguments(self, parser): method handle (line 27) | def handle(self, message, **options): FILE: corehq/apps/hqadmin/management/commands/shutdown_celery_worker_by_hostname.py class Command (line 9) | class Command(BaseCommand): method add_arguments (line 12) | def add_arguments(self, parser): method handle (line 15) | def handle(self, hostname, **options): FILE: corehq/apps/hqadmin/management/commands/stale_data_in_es.py function get_csv_args (line 52) | def get_csv_args(delimiter): class Command (line 62) | class Command(BaseCommand): method add_arguments (line 79) | def add_arguments(self, parser): method handle (line 102) | def handle(self, domain, data_models, delimiter, **options): class CaseHelper (line 163) | class CaseHelper: method run (line 166) | def run(cls, run_config): method get_sql_chunks (line 196) | def get_sql_chunks(domain, run_config): method _yield_missing_in_es (line 211) | def _yield_missing_in_es(chunk, es_base_query): method _check_stale (line 221) | def _check_stale(case_id, case_type, modified_on, domain, es_modified_... method _get_es_modified_dates (line 243) | def _get_es_modified_dates(case_ids, es_base_query): method _get_ids_from_chunk (line 253) | def _get_ids_from_chunk(chunk): class FormHelper (line 263) | class FormHelper: method run (line 265) | def run(cls, run_config): method get_sql_chunks (line 270) | def get_sql_chunks(run_config): method _yield_missing_in_es (line 289) | def _yield_missing_in_es(chunk): method _get_es_modified_dates_for_forms (line 301) | def _get_es_modified_dates_for_forms(form_ids): function _get_resumable_chunked_iterator (line 311) | def _get_resumable_chunked_iterator(dbaccessor, iteration_key, log_prefix): FILE: corehq/apps/hqadmin/management/commands/static_analysis.py class DatadogLogger (line 17) | class DatadogLogger: method __init__ (line 18) | def __init__(self, stdout): method log (line 31) | def log(self, metric, value, tags=None): method send_all (line 51) | def send_all(self): class Command (line 57) | class Command(BaseCommand): method handle (line 61) | def handle(self, **options): method show_couch_model_count (line 71) | def show_couch_model_count(self): method show_custom_modules (line 79) | def show_custom_modules(self): method show_toggles (line 85) | def show_toggles(self): method show_complexity (line 90) | def show_complexity(self): FILE: corehq/apps/hqadmin/management/commands/update_django_locales.py class Command (line 9) | class Command(BaseCommand): method handle (line 12) | def handle(self, **options): FILE: corehq/apps/hqadmin/management/commands/update_site_setup.py class Command (line 6) | class Command(BaseCommand): method add_arguments (line 7) | def add_arguments(self, parser): method handle (line 20) | def handle(self, site_address, *args, **options): FILE: corehq/apps/hqadmin/management/commands/verify_ssl_connections.py class Command (line 31) | class Command(BaseCommand): method __init__ (line 39) | def __init__(self, *args, **kw): method add_arguments (line 44) | def add_arguments(self, parser): method handle (line 54) | def handle(self, *args, **options): method iter_endpoints (line 114) | def iter_endpoints(self): method iter_motech_endpoints (line 127) | def iter_motech_endpoints(self): method iter_sms_endpoints (line 134) | def iter_sms_endpoints(self): method verify_ssl (line 147) | def verify_ssl(self, end, request_kw): method console (line 173) | def console(self, msg, style_func=None, *write_args, **write_kw): method debug (line 183) | def debug(self, msg): method log_totals (line 191) | def log_totals(self, name, successes, total): class Endpoint (line 209) | class Endpoint: method __attrs_post_init__ (line 214) | def __attrs_post_init__(self): class Result (line 225) | class Result: function exc_tuple (line 232) | def exc_tuple(exc): function rm_obj_addr (line 236) | def rm_obj_addr(msg): function iter_sms_model_classes (line 240) | def iter_sms_model_classes(): function iter_sms_urls (line 257) | def iter_sms_urls(model_class, log_error): FILE: corehq/apps/hqadmin/migrations/0001_initial.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/hqadmin/migrations/0002_vcmmigrationaudit.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/hqadmin/migrations/0003_auto_20160715_1543.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/hqadmin/migrations/0004_auto_20160715_1547.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/hqadmin/migrations/0005_auto_20160715_1612.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/hqadmin/migrations/0006_esrestorepillowcheckpoints.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/hqadmin/migrations/0007_esrestorepillowcheckpoint_datefield.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/hqadmin/migrations/0008_delete_vcmmigration.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/hqadmin/migrations/0009_auto_20170315_1322.py function set_seq_int (line 8) | def set_seq_int(apps, schema_editor): class Migration (line 15) | class Migration(migrations.Migration): FILE: corehq/apps/hqadmin/migrations/0010_sqlhqdeploy.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/hqadmin/migrations/0011_alter_hqdeploy_environment.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/hqadmin/migrations/0012_alter_hqdeploy_diffurl.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/hqadmin/migrations/0013_populate_sqlhqdeploy.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/hqadmin/migrations/0014_remove_sqlhqdeploy_couch_id.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/hqadmin/migrations/0015_rename_sqlhqdeploy.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/hqadmin/migrations/0016_hqdeploy_ordering.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/hqadmin/migrations/0017_hqdeploy_commit.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/hqadmin/migrations/0018_back_populate_deploy_commit.py function back_populate (line 8) | def back_populate(apps, schema_editor): function _get_commit_from_url (line 16) | def _get_commit_from_url(diff_url): class Migration (line 26) | class Migration(migrations.Migration): FILE: corehq/apps/hqadmin/migrations/0019_celery_taskmeta_sequence.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/hqadmin/migrations/0020_celery_results_sequence.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/hqadmin/models.py class HqDeploy (line 18) | class HqDeploy(models.Model): class Meta (line 25) | class Meta(): class HistoricalPillowCheckpoint (line 29) | class HistoricalPillowCheckpoint(models.Model): method create_pillow_checkpoint_snapshots (line 36) | def create_pillow_checkpoint_snapshots(cls): method create_checkpoint_snapshot (line 41) | def create_checkpoint_snapshot(cls, checkpoint): method get_latest_for_pillow (line 49) | def get_latest_for_pillow(cls, pillow_name): method get_latest (line 62) | def get_latest(cls, checkpoint_id): method get_historical_max (line 69) | def get_historical_max(cls, checkpoint_id, by_partition=False): class Meta (line 87) | class Meta(object): FILE: corehq/apps/hqadmin/pillow_settings.py function _get_pillow_configs_from_settings_dict (line 5) | def _get_pillow_configs_from_settings_dict(pillows_by_group): function get_pillows_for_env (line 13) | def get_pillows_for_env(pillow_env_configs, pillows_by_group=None): function _get_pillows_for_env (line 23) | def _get_pillows_for_env(pillow_env_configs, pillows_by_group): function test_pillow_settings (line 36) | def test_pillow_settings(env_name, pillows_by_group): FILE: corehq/apps/hqadmin/reports.py function truncate_rows_to_minute_boundary (line 50) | def truncate_rows_to_minute_boundary(rows, max_records): class AdminReport (line 88) | class AdminReport(GenericTabularReport): class AdminPhoneNumberReport (line 97) | class AdminPhoneNumberReport(PhoneNumberReport): method shared_pagination_GET_params (line 109) | def shared_pagination_GET_params(self): method phone_number_filter (line 119) | def phone_number_filter(self): method _get_queryset (line 126) | def _get_queryset(self): method _get_rows (line 129) | def _get_rows(self, paginate=True, link_user=True): method total_records (line 144) | def total_records(self): class UserAuditReport (line 148) | class UserAuditReport(AdminReport, DatespanMixin): method selected_domain (line 184) | def selected_domain(self): method selected_users (line 189) | def selected_users(self): method selected_action (line 194) | def selected_action(self): method selected_ip_addresses (line 198) | def selected_ip_addresses(self): method selected_path_include_patterns (line 204) | def selected_path_include_patterns(self): method selected_path_include_mode (line 209) | def selected_path_include_mode(self): method selected_path_exclude_patterns (line 214) | def selected_path_exclude_patterns(self): method selected_path_exclude_mode (line 219) | def selected_path_exclude_mode(self): method selected_status_codes (line 224) | def selected_status_codes(self): method start_time (line 230) | def start_time(self): method end_time (line 236) | def end_time(self): method _parse_time (line 245) | def _parse_time(self, time_str, default): method start_datetime (line 258) | def start_datetime(self): method end_datetime (line 265) | def end_datetime(self): method headers (line 272) | def headers(self): method _compute_rows (line 291) | def _compute_rows(self): method rows (line 324) | def rows(self): method _truncation_cutoff (line 328) | def _truncation_cutoff(self): method _truncation_same_minute (line 332) | def _truncation_same_minute(self): method _build_common_filters (line 335) | def _build_common_filters(self): method _build_nav_filters (line 358) | def _build_nav_filters(self): method _build_access_filters (line 365) | def _build_access_filters(self): method _is_invalid_time_range (line 371) | def _is_invalid_time_range(self): method report_context (line 387) | def report_context(self): class UserListReport (line 451) | class UserListReport(GetParamsMixin, AdminReport): method headers (line 466) | def headers(self): method rows (line 477) | def rows(self): method _users_query (line 488) | def _users_query(self): method _get_page (line 492) | def _get_page(self, query): method total_records (line 499) | def total_records(self): method _user_link (line 502) | def _user_link(self, username): method _user_lookup_url (line 510) | def _user_lookup_url(self): method _get_domains (line 513) | def _get_domains(self, user): method _format_date (line 519) | def _format_date(date): class DeployHistoryReport (line 525) | class DeployHistoryReport(GetParamsMixin, AdminReport): method headers (line 537) | def headers(self): method rows (line 546) | def rows(self): method total_records (line 559) | def total_records(self): method _format_date (line 562) | def _format_date(self, date): method _hyperlink_diff_url (line 571) | def _hyperlink_diff_url(self, diff_url): method _shorten_and_hyperlink_commit (line 574) | def _shorten_and_hyperlink_commit(self, commit_sha): class UCRRebuildRestrictionTable (line 584) | class UCRRebuildRestrictionTable: method __init__ (line 589) | def __init__(self, *args, **kwargs): method headers (line 593) | def headers(self): method rows (line 602) | def rows(self): method ucr_domains (line 625) | def ucr_domains(self): method should_show_domain (line 628) | def should_show_domain(self, domain, total_cases, total_forms): method _case_count_by_domain (line 645) | def _case_count_by_domain(domains): method _forms_count_by_domain (line 651) | def _forms_count_by_domain(domains): method _row_data (line 656) | def _row_data(self, domain, case_count, form_count): method _should_restrict_rebuild (line 664) | def _should_restrict_rebuild(self, case_count, form_count): method _rebuild_restricted_ff_enabled (line 669) | def _rebuild_restricted_ff_enabled(domain): method _show_ff_enabled_domains (line 673) | def _show_ff_enabled_domains(self): method _show_ff_disabled_domains (line 677) | def _show_ff_disabled_domains(self): method _show_should_enable_ff_domains (line 681) | def _show_should_enable_ff_domains(self): method _show_should_disable_ff_domains (line 685) | def _show_should_disable_ff_domains(self): method _show_all_domains (line 689) | def _show_all_domains(self): method _ucr_rebuild_restriction_status_column_data (line 692) | def _ucr_rebuild_restriction_status_column_data(self, domain, case_cou... class UCRDataLoadReport (line 714) | class UCRDataLoadReport(AdminReport): method __init__ (line 727) | def __init__(self, request, *args, **kwargs): method headers (line 734) | def headers(self): method rows (line 738) | def rows(self): class StaleCasesTable (line 742) | class StaleCasesTable: method __init__ (line 750) | def __init__(self): method headers (line 755) | def headers(self): method rows (line 762) | def rows(self): method _aggregate_case_count_data (line 770) | def _aggregate_case_count_data(self): method _merge_agg_data (line 804) | def _merge_agg_data(self, agg_res, query_res): method _stale_case_count_in_date_range (line 808) | def _stale_case_count_in_date_range(self, domains, start_date, end_date): method _get_domains (line 820) | def _get_domains(self): class FeaturePreviewStatusReport (line 829) | class FeaturePreviewStatusReport(AdminReport): method selected_feature (line 839) | def selected_feature(self): method headers (line 843) | def headers(self): method rows (line 851) | def rows(self): class FeaturePreviewAuditReport (line 886) | class FeaturePreviewAuditReport(AdminReport): method selected_domain (line 898) | def selected_domain(self): method selected_feature (line 902) | def selected_feature(self): method headers (line 906) | def headers(self): method rows (line 915) | def rows(self): FILE: corehq/apps/hqadmin/service_checks.py class ServiceStatus (line 43) | class ServiceStatus(object): class UnknownCheckException (line 50) | class UnknownCheckException(Exception): function check_redis (line 54) | def check_redis(): function check_all_rabbitmq (line 70) | def check_all_rabbitmq(): function check_rabbitmq (line 87) | def check_rabbitmq(broker_url): function check_kafka (line 107) | def check_kafka(): function check_elasticsearch (line 126) | def check_elasticsearch(): function check_blobdb (line 147) | def check_blobdb(): function check_celery (line 165) | def check_celery(): function check_postgres (line 198) | def check_postgres(): function check_couch (line 222) | def check_couch(): function check_formplayer (line 230) | def check_formplayer(): function run_checks (line 246) | def run_checks(checks_to_do): function _run_check (line 258) | def _run_check(check_name, timer): FILE: corehq/apps/hqadmin/signals.py function record_command_event (line 8) | def record_command_event(sender, args, kwargs, outcome, **extra): FILE: corehq/apps/hqadmin/static/hqadmin/js/superuser_management.js function updateFeatureFlagsSelection (line 10) | function updateFeatureFlagsSelection() { FILE: corehq/apps/hqadmin/static/hqadmin/js/system_info.js function formatDate (line 8) | function formatDate(datestring) { function numberFix (line 32) | function numberFix(num) { function refreshableViewModel (line 44) | function refreshableViewModel(url, model, interval, sortBy) { function activeTaskModel (line 105) | function activeTaskModel(data) { function designDocModel (line 120) | function designDocModel(data) { function celeryTaskModel (line 135) | function celeryTaskModel(data) { function pillowOperationViewModel (line 155) | function pillowOperationViewModel(pillowModel, operation) { function pillowProgress (line 167) | function pillowProgress(name, dbOffset, seq) { function pillowModel (line 195) | function pillowModel(pillow) { FILE: corehq/apps/hqadmin/tasks.py function check_pillows_for_rewind (line 38) | def check_pillows_for_rewind(): function create_historical_checkpoints (line 53) | def create_historical_checkpoints(): function check_non_dimagi_superusers (line 62) | def check_non_dimagi_superusers(): function send_mass_emails (line 73) | def send_mass_emails(email_for_requesting_user, real_email, subject, htm... class AbnormalUsageAlert (line 126) | class AbnormalUsageAlert(object): function send_abnormal_usage_alert (line 133) | def send_abnormal_usage_alert(alert): function _mass_email_attachment (line 151) | def _mass_email_attachment(name, rows): function track_es_doc_counts (line 165) | def track_es_doc_counts(): function track_pg_limits (line 181) | def track_pg_limits(): function reconcile_es_cases (line 202) | def reconcile_es_cases(): function reconcile_es_forms (line 207) | def reconcile_es_forms(): function count_es_forms_past_window (line 212) | def count_es_forms_past_window(): function count_es_cases_past_window (line 229) | def count_es_cases_past_window(): function _reconcile_es_data (line 245) | def _reconcile_es_data(data_type, metric, blob_parent_id, start=None, en... FILE: corehq/apps/hqadmin/tests/test_corrupt_couch.py function test_find_missing_ids (line 16) | def test_find_missing_ids(result_sets, expected_missing, expected_tries,... FILE: corehq/apps/hqadmin/tests/test_prbac.py class TestCchqPrbacBootstrap (line 13) | class TestCchqPrbacBootstrap(TestCase): method setUpClass (line 19) | def setUpClass(cls): method test_dry_run (line 24) | def test_dry_run(self): method test_non_dry_run (line 37) | def test_non_dry_run(self): FILE: corehq/apps/hqadmin/tests/test_raw_doc.py class TestRawDocLookup (line 10) | class TestRawDocLookup(TestCase): method test_lookuptable_raw_doc (line 13) | def test_lookuptable_raw_doc(self): method test_lookuptablerow_raw_doc (line 49) | def test_lookuptablerow_raw_doc(self): method test_raw_doc_with_invalid_uuid (line 82) | def test_raw_doc_with_invalid_uuid(self): function make_lookuptable (line 88) | def make_lookuptable(): FILE: corehq/apps/hqadmin/tests/test_reports.py class TestUCRRebuildRestrictionTable (line 14) | class TestUCRRebuildRestrictionTable(TestCase): method test_all_ucr_domains (line 17) | def test_all_ucr_domains(self, get_enabled_domains_mock): method test_should_show_domain_default_show_all (line 28) | def test_should_show_domain_default_show_all(self): method test_should_show_domain_show_ff_enabled_domains (line 33) | def test_should_show_domain_show_ff_enabled_domains(self, restriction_... method test_should_show_domain_show_ff_disabled_domains (line 45) | def test_should_show_domain_show_ff_disabled_domains(self, restriction... method test_should_show_domain_show_should_enable_ff_domains (line 57) | def test_should_show_domain_show_should_enable_ff_domains(self, restri... method test_should_show_domain_show_should_disable_ff_domains (line 72) | def test_should_show_domain_show_should_disable_ff_domains(self, restr... class TestStaleCasesTable (line 88) | class TestStaleCasesTable(TestCase): method setUpClass (line 91) | def setUpClass(cls): method _get_case (line 103) | def _get_case(cls, days_back, is_closed=False): method test_get_rows (line 113) | def test_get_rows(self, _get_domains_mock): FILE: corehq/apps/hqadmin/tests/test_service_checks.py function always_green (line 10) | def always_green(): class TestCheckElasticsearch (line 20) | class TestCheckElasticsearch(SimpleTestCase): class Fail (line 22) | class Fail(Exception): method test_check_elasticsearch (line 25) | def test_check_elasticsearch(self): method test_check_elasticsearch_passes_for_cluster_yellow (line 31) | def test_check_elasticsearch_passes_for_cluster_yellow(self): method test_check_elasticsearch_fails_for_cluster_red (line 38) | def test_check_elasticsearch_fails_for_cluster_red(self): method test_check_elasticsearch_fails_with_exc_if_group_doc_index_raises (line 45) | def test_check_elasticsearch_fails_with_exc_if_group_doc_index_raises(... method test_check_elasticsearch_fails_with_exc_if_group_doc_delete_raises (line 53) | def test_check_elasticsearch_fails_with_exc_if_group_doc_delete_raises... method test_check_elasticsearch_fails_if_indexed_doc_is_missing (line 61) | def test_check_elasticsearch_fails_if_indexed_doc_is_missing(self): FILE: corehq/apps/hqadmin/tests/test_stale_data_in_es.py class ExitEarlyException (line 28) | class ExitEarlyException(Exception): class TestStaleDataInESSQL (line 33) | class TestStaleDataInESSQL(TestCase): method test_no_output (line 40) | def test_no_output(self): method test_form_missing_then_not (line 45) | def test_form_missing_then_not(self): method test_form_missing_then_not_domain_specific (line 48) | def test_form_missing_then_not_domain_specific(self): method test_case_missing_then_not (line 51) | def test_case_missing_then_not(self): method test_case_missing_then_not_domain_specific (line 54) | def test_case_missing_then_not_domain_specific(self): method test_case_missing_date (line 57) | def test_case_missing_date(self): method test_case_resume (line 60) | def test_case_resume(self): method test_form_resume (line 102) | def test_form_resume(self): method _test_form_missing_then_not (line 146) | def _test_form_missing_then_not(self, cmd_kwargs): method _test_case_missing_then_not (line 174) | def _test_case_missing_then_not(self, cmd_kwargs): method _test_case_missing_date (line 198) | def _test_case_missing_date(self): method _stale_data_in_es (line 213) | def _stale_data_in_es(self, *args, **kwargs): method _submit_form (line 224) | def _submit_form(self, domain, new_cases=0, update_cases=()): method _send_forms_to_es (line 249) | def _send_forms_to_es(self, forms): method _send_cases_to_es (line 257) | def _send_cases_to_es(self, cases, refetch_doc=True): method _delete_forms_from_es (line 270) | def _delete_forms_from_es(cls, form_ids): method _delete_cases_from_es (line 274) | def _delete_cases_from_es(cls, case_ids): method _assert_in_sync (line 277) | def _assert_in_sync(self, output): method _assert_not_in_sync (line 283) | def _assert_not_in_sync(self, output, rows): method setUpClass (line 291) | def setUpClass(cls): method tearDownClass (line 297) | def tearDownClass(cls): method setUp (line 300) | def setUp(self): method tearDown (line 304) | def tearDown(self): FILE: corehq/apps/hqadmin/tests/test_user_audit_report.py class TestIPAddressParsing (line 16) | class TestIPAddressParsing(TestCase): method test_single_ip (line 18) | def test_single_ip(self): method test_cidr_32 (line 22) | def test_cidr_32(self): method test_cidr_24 (line 26) | def test_cidr_24(self): method test_cidr_16 (line 30) | def test_cidr_16(self): method test_cidr_8 (line 34) | def test_cidr_8(self): method test_comma_separated (line 38) | def test_comma_separated(self): method test_invalid_cidr_suffix (line 45) | def test_invalid_cidr_suffix(self): method test_empty_input (line 49) | def test_empty_input(self): method test_whitespace_only (line 53) | def test_whitespace_only(self): class TestStatusCodeParsing (line 58) | class TestStatusCodeParsing(TestCase): method test_single_code (line 60) | def test_single_code(self): method test_multiple_codes (line 63) | def test_multiple_codes(self): method test_empty_input (line 66) | def test_empty_input(self): method test_whitespace_only (line 69) | def test_whitespace_only(self): method test_invalid_input (line 72) | def test_invalid_input(self): method test_trailing_comma (line 75) | def test_trailing_comma(self): class TestTruncateRowsToMinuteBoundary (line 79) | class TestTruncateRowsToMinuteBoundary(TestCase): method _make_row (line 81) | def _make_row(self, event_date): method test_no_truncation_under_limit (line 86) | def test_no_truncation_under_limit(self): method test_truncation_at_minute_boundary (line 92) | def test_truncation_at_minute_boundary(self): method test_truncation_same_minute_edge_case (line 103) | def test_truncation_same_minute_edge_case(self): method test_truncation_preserves_sort_order (line 111) | def test_truncation_preserves_sort_order(self): method test_truncation_large_cluster_at_boundary (line 120) | def test_truncation_large_cluster_at_boundary(self): function _make_mock_couch_user (line 133) | def _make_mock_couch_user(): class TestUserAuditReportFilters (line 140) | class TestUserAuditReportFilters(AuditcareTest): method setUpClass (line 143) | def setUpClass(cls): method _get_report (line 187) | def _get_report(self, params): method test_ip_filter_exact (line 199) | def test_ip_filter_exact(self): method test_ip_filter_cidr (line 210) | def test_ip_filter_cidr(self): method test_status_code_filter (line 220) | def test_status_code_filter(self): method test_path_include_contains (line 231) | def test_path_include_contains(self): method test_path_exclude_contains (line 242) | def test_path_exclude_contains(self): method test_path_include_mode_defaults_for_invalid_input (line 255) | def test_path_include_mode_defaults_for_invalid_input(self): method test_path_exclude_mode_defaults_for_invalid_input (line 264) | def test_path_exclude_mode_defaults_for_invalid_input(self): method test_status_code_filter_excludes_access_events (line 273) | def test_status_code_filter_excludes_access_events(self): method test_no_status_code_filter_includes_access_events (line 284) | def test_no_status_code_filter_includes_access_events(self): method test_path_include_and_exclude_combined (line 295) | def test_path_include_and_exclude_combined(self): method test_path_include_startswith (line 312) | def test_path_include_startswith(self): method test_no_user_no_domain_returns_empty (line 324) | def test_no_user_no_domain_returns_empty(self): method test_events_interleave_by_date (line 332) | def test_events_interleave_by_date(self): method test_single_username (line 348) | def test_single_username(self): method test_multiple_usernames_comma_separated (line 358) | def test_multiple_usernames_comma_separated(self): method test_multiple_usernames_excludes_unlisted_users (line 370) | def test_multiple_usernames_excludes_unlisted_users(self): class TestUserAuditReportTruncation (line 381) | class TestUserAuditReportTruncation(AuditcareTest): method setUpClass (line 384) | def setUpClass(cls): method _get_report (line 402) | def _get_report(self, params): method test_truncation_sets_context (line 411) | def test_truncation_sets_context(self): method test_truncation_result_matches_narrower_query (line 425) | def test_truncation_result_matches_narrower_query(self): FILE: corehq/apps/hqadmin/tests/test_utils.py function _get_dummy_pillow (line 16) | def _get_dummy_pillow(): class TestPillowCheckpointSeqStore (line 24) | class TestPillowCheckpointSeqStore(TestCase): method setUp (line 26) | def setUp(self): method tearDown (line 30) | def tearDown(self): method test_basic_cloudant_seq (line 33) | def test_basic_cloudant_seq(self): method test_basic_couchdb_seq (line 40) | def test_basic_couchdb_seq(self): method test_small_rewind (line 47) | def test_small_rewind(self): method test_large_rewind (line 63) | def test_large_rewind(self): method test_get_latest_for_pillow (line 79) | def test_get_latest_for_pillow(self): method test_get_historical_max (line 90) | def test_get_historical_max(self): class TestHistoricalPillowCheckpoint (line 111) | class TestHistoricalPillowCheckpoint(CallCenterDomainMockTest): method test_all_pillows (line 114) | def test_all_pillows(self): class TestParseCeleryWorkerPings (line 126) | class TestParseCeleryWorkerPings(SimpleTestCase): method test_celery_worker_pings (line 130) | def test_celery_worker_pings(self): method test_celery_worker_pings_empty (line 142) | def test_celery_worker_pings_empty(self): class TestParseCeleryWorkers (line 148) | class TestParseCeleryWorkers(SimpleTestCase): function test_parse_celery_workers (line 185) | def test_parse_celery_workers(self, workers, expected): FILE: corehq/apps/hqadmin/tests/test_views.py class AdminRestoreViewTests (line 22) | class AdminRestoreViewTests(TestXmlMixin, SimpleTestCase): method test_bad_restore (line 27) | def test_bad_restore(self): method test_admin_restore_counts (line 51) | def test_admin_restore_counts(self): class DisableUserViewTests (line 79) | class DisableUserViewTests(SimpleTestCase): method test_redirect_url_username_is_encoded (line 81) | def test_redirect_url_username_is_encoded(self): method test_redirect_url_returns_no_params_if_no_username (line 94) | def test_redirect_url_returns_no_params_if_no_username(self): class TestSuperuserManagementView (line 106) | class TestSuperuserManagementView(TestCase): method setUpClass (line 109) | def setUpClass(cls): method tearDownClass (line 121) | def tearDownClass(cls): method test_superuser_access (line 127) | def test_superuser_access(self): method test_non_superuser_cannot_access (line 132) | def test_non_superuser_cannot_access(self): method test_permission_to_manage_privileges (line 137) | def test_permission_to_manage_privileges(self): method test_update_user_privileges (line 145) | def test_update_user_privileges(self): class TestOffboardStaffUser (line 168) | class TestOffboardStaffUser(TestCase): method setUpClass (line 171) | def setUpClass(cls): method setUp (line 179) | def setUp(self): method _create_user (line 182) | def _create_user(self): method _make_accounting_admin (line 187) | def _make_accounting_admin(self, django_user): method test_removes_domain_memberships (line 199) | def test_removes_domain_memberships(self): method test_removes_superuser (line 215) | def test_removes_superuser(self): method test_removes_accounting_admin (line 226) | def test_removes_accounting_admin(self): FILE: corehq/apps/hqadmin/utils.py function check_for_rewind (line 22) | def check_for_rewind(checkpoint): function get_celery_stats (line 32) | def get_celery_stats(): function parse_celery_pings (line 91) | def parse_celery_pings(worker_responses): function parse_celery_workers (line 101) | def parse_celery_workers(celery_workers): function get_django_user_from_session (line 130) | def get_django_user_from_session(session): function get_session (line 146) | def get_session(session_key): function unset_password (line 158) | def unset_password(user): function get_download_url (line 183) | def get_download_url(content, name, content_type=None, timeout=24 * 60): FILE: corehq/apps/hqadmin/views/data.py function doc_in_es (line 24) | def doc_in_es(request): function lookup_doc_in_es (line 58) | def lookup_doc_in_es(doc_id, index): function raw_doc (line 65) | def raw_doc(request): function raw_doc_lookup (line 83) | def raw_doc_lookup(doc_id, db_name=None): function check_form_for_errors (line 107) | def check_form_for_errors(form, form_doc): function download_blob (line 125) | def download_blob(request): FILE: corehq/apps/hqadmin/views/operations.py function mass_email (line 28) | def mass_email(request): class CallcenterUCRCheck (line 50) | class CallcenterUCRCheck(BaseAdminSectionView): method dispatch (line 56) | def dispatch(self, request, *args, **kwargs): method page_context (line 60) | def page_context(self): class ReprocessMessagingCaseUpdatesView (line 83) | class ReprocessMessagingCaseUpdatesView(BaseAdminSectionView): method dispatch (line 89) | def dispatch(self, request, *args, **kwargs): method form (line 94) | def form(self): method page_context (line 100) | def page_context(self): method get_case (line 105) | def get_case(self, case_id): method post (line 111) | def post(self, request, *args, **kwargs): FILE: corehq/apps/hqadmin/views/reports.py class DownloadMALTView (line 20) | class DownloadMALTView(BaseAdminSectionView): method dispatch (line 26) | def dispatch(self, request, *args, **kwargs): method get (line 29) | def get(self, request, *args, **kwargs): function _malt_csv_response (line 44) | def _malt_csv_response(month, year): class DownloadGIRView (line 50) | class DownloadGIRView(BaseAdminSectionView): method dispatch (line 56) | def dispatch(self, request, *args, **kwargs): method get (line 59) | def get(self, request, *args, **kwargs): function _gir_csv_response (line 74) | def _gir_csv_response(month, year): FILE: corehq/apps/hqadmin/views/system.py class SystemInfoView (line 42) | class SystemInfoView(BaseAdminSectionView): method dispatch (line 48) | def dispatch(self, request, *args, **kwargs): method page_context (line 52) | def page_context(self): function system_ajax (line 79) | def system_ajax(request): function check_services (line 149) | def check_services(request): function pillow_operation_api (line 169) | def pillow_operation_api(request): function get_rabbitmq_management_url (line 200) | def get_rabbitmq_management_url(): function branches_on_staging (line 210) | def branches_on_staging(request, template='hqadmin/branches_on_staging.h... function _get_branches_merged_into_autostaging (line 221) | def _get_branches_merged_into_autostaging(cwd=None): function _get_submodules (line 250) | def _get_submodules(): class GlobalThresholds (line 265) | class GlobalThresholds(BaseAdminSectionView): method page_context (line 271) | def page_context(self): FILE: corehq/apps/hqadmin/views/users.py class UserAdministration (line 77) | class UserAdministration(BaseAdminSectionView): class SuperuserManagement (line 81) | class SuperuserManagement(UserAdministration): method dispatch (line 87) | def dispatch(self, *args, **kwargs): method page_context (line 91) | def page_context(self): method can_toggle_status (line 104) | def can_toggle_status(self): method post (line 108) | def post(self, request, *args, **kwargs): method _update_toggle_edit_permissions (line 134) | def _update_toggle_edit_permissions(selected_tag_slugs, users): method _update_users (line 158) | def _update_users(self, users, form, is_superuser): method _log_changes (line 185) | def _log_changes(self, users, username_to_fields_changed, toggle_edit_... method _format_changes_for_email (line 218) | def _format_changes_for_email(users, username_to_fields_changed, toggl... function send_email_notif (line 238) | def send_email_notif(user_changes, changed_by_user): function superuser_table (line 252) | def superuser_table(request): function augmented_superusers (line 266) | def augmented_superusers( function _augment_users_with_can_assign_superuser (line 291) | def _augment_users_with_can_assign_superuser(users): function _augment_users_with_two_factor_enabled (line 299) | def _augment_users_with_two_factor_enabled(users): function _augment_users_with_accounting_admin (line 306) | def _augment_users_with_accounting_admin(users): function _augment_users_with_feature_flag_edit_permissions (line 312) | def _augment_users_with_feature_flag_edit_permissions(users): function _augment_users_with_is_contractor_flag_enabled (line 325) | def _augment_users_with_is_contractor_flag_enabled(users): class AdminRestoreView (line 332) | class AdminRestoreView(TemplateView): method dispatch (line 336) | def dispatch(self, request, *args, **kwargs): method _validate_user_access (line 339) | def _validate_user_access(self, user): method get (line 342) | def get(self, request, *args, **kwargs): method _get_restore_response (line 387) | def _get_restore_response(self): method _parse_reports (line 396) | def _parse_reports(xpath, xml_payload): method get_stats_from_xml (line 409) | def get_stats_from_xml(xml_payload): method get_context_data (line 459) | def get_context_data(self, **kwargs): class DomainAdminRestoreView (line 491) | class DomainAdminRestoreView(AdminRestoreView): method dispatch (line 494) | def dispatch(self, request, *args, **kwargs): method get (line 499) | def get(self, request, domain, **kwargs): method _validate_user_access (line 503) | def _validate_user_access(self, user): function web_user_lookup (line 508) | def web_user_lookup(request): function offboard_staff_user (line 544) | def offboard_staff_user(request): class DisableUserView (line 618) | class DisableUserView(FormView): method get_initial (line 624) | def get_initial(self): method username (line 631) | def username(self): method user (line 635) | def user(self): method redirect_url (line 642) | def redirect_url(self): method get (line 649) | def get(self, request, *args, **kwargs): method get_context_data (line 655) | def get_context_data(self, **kwargs): method redirect_response (line 664) | def redirect_response(self, request): method form_valid (line 670) | def form_valid(self, form): class DisableTwoFactorView (line 725) | class DisableTwoFactorView(FormView): method get_initial (line 734) | def get_initial(self): method render_to_response (line 740) | def render_to_response(self, context, **response_kwargs): method get (line 747) | def get(self, request, *args, **kwargs): method form_valid (line 769) | def form_valid(self, form): class WebUserDataView (line 824) | class WebUserDataView(View): method get (line 829) | def get(self, request, *args, **kwargs): class AppBuildTimingsView (line 839) | class AppBuildTimingsView(TemplateView): method get_context_data (line 842) | def get_context_data(self, **kwargs): method get_timing_context (line 858) | def get_timing_context(app): class OffboardingUserList (line 886) | class OffboardingUserList(UserAdministration): method __init__ (line 891) | def __init__(self): method dispatch (line 897) | def dispatch(self, *args, **kwargs): method page_context (line 901) | def page_context(self): method post (line 912) | def post(self, request, *args, **kwargs): function email_status (line 931) | def email_status(request): FILE: corehq/apps/hqadmin/views/utils.py function default (line 10) | def default(request): function get_breadcrumbs (line 15) | def get_breadcrumbs(current_title, current_urlname): class BaseAdminSectionView (line 28) | class BaseAdminSectionView(BaseSectionPageView): method section_url (line 32) | def section_url(self): method page_url (line 36) | def page_url(self): FILE: corehq/apps/hqcase/analytics.py function get_number_of_cases_in_domain (line 4) | def get_number_of_cases_in_domain(domain): FILE: corehq/apps/hqcase/api/core.py function serialize_case (line 6) | def serialize_case(case): function _isoformat (line 35) | def _isoformat(value): function serialize_es_case (line 39) | def serialize_es_case(case_doc): class UserError (line 70) | class UserError(Exception): class SubmissionError (line 74) | class SubmissionError(Exception): method __init__ (line 75) | def __init__(self, msg, form_id): FILE: corehq/apps/hqcase/api/get_bulk.py class BulkFetchResults (line 11) | class BulkFetchResults: method merge (line 16) | def merge(self, results): function get_bulk (line 22) | def get_bulk(domain, couch_user, case_ids=None, external_ids=None): function _get_cases_by_id (line 49) | def _get_cases_by_id(domain, case_ids, couch_user): function _get_cases_by_external_id (line 61) | def _get_cases_by_external_id(domain, external_ids, couch_user): function _get_cases (line 73) | def _get_cases(domain, id_list, couch_user, query, es_id_field, serializ... function _prepare_result (line 84) | def _prepare_result(domain, es_results, doc_ids, es_id_field, serialized... FILE: corehq/apps/hqcase/api/get_list.py function _to_boolean (line 26) | def _to_boolean(val): function _to_int (line 30) | def _to_int(val, param_name): function _make_date_filter (line 37) | def _make_date_filter(date_filter): function _include_deprecated_filter (line 50) | def _include_deprecated_filter(domain, include_deprecated): function _index_filter (line 57) | def _index_filter(identifier, case_id): function get_list (line 83) | def get_list(domain, couch_user, params): function _get_cursor_query (line 119) | def _get_cursor_query(domain, params, last_date, last_id): function _get_query (line 125) | def _get_query(domain, params): function _get_filter (line 143) | def _get_filter(domain, key, val): function _get_query_filter (line 159) | def _get_query_filter(domain, query): FILE: corehq/apps/hqcase/api/updates.py function valid_properties_dict (line 23) | def valid_properties_dict(d): function valid_indices_dict (line 36) | def valid_indices_dict(d): class JsonIndex (line 43) | class JsonIndex(jsonobject.JsonObject): method validate (line 50) | def validate(self, *args, **kwargs): method get_id (line 60) | def get_id(self, case_db): class BaseJsonCaseChange (line 69) | class BaseJsonCaseChange(jsonobject.JsonObject): class Meta (line 83) | class Meta(object): method wrap (line 88) | def wrap(cls, data): method get_caseblock (line 96) | def get_caseblock(self, case_db): class JsonCaseCreation (line 128) | class JsonCaseCreation(BaseJsonCaseChange): method wrap (line 139) | def wrap(cls, data): method get_case_id (line 145) | def get_case_id(self, case_db): class JsonCaseUpdate (line 149) | class JsonCaseUpdate(BaseJsonCaseChange): method validate (line 152) | def validate(self, *args, **kwargs): method get_case_id (line 157) | def get_case_id(self, case_db): class JsonCaseUpsert (line 166) | class JsonCaseUpsert(BaseJsonCaseChange): method is_new_case (line 173) | def is_new_case(self): method wrap (line 179) | def wrap(cls, data): method get_case_id (line 184) | def get_case_id(self, case_db): function handle_case_update (line 198) | def handle_case_update(domain, data, user, device_id, is_creation, xmlns... function _get_individual_update (line 221) | def _get_individual_update(data, user_id, is_creation): function _get_upsert_update (line 231) | def _get_upsert_update(data, user_id): function _get_bulk_updates (line 239) | def _get_bulk_updates(all_data, user_id): class CaseIDLookerUpper (line 263) | class CaseIDLookerUpper: method __init__ (line 264) | def __init__(self, domain, updates): method real_case_ids (line 269) | def real_case_ids(self): method get_by_temporary_id (line 273) | def get_by_temporary_id(self, key): method _by_temporary_id (line 280) | def _by_temporary_id(self): method get_by_external_id (line 287) | def get_by_external_id(self, key): method get_upsert_case_id (line 293) | def get_upsert_case_id(self, external_id): method _by_external_id (line 298) | def _by_external_id(self): method _get_case_ids_by_external_id (line 315) | def _get_case_ids_by_external_id(self, external_ids): method get_owner_id (line 330) | def get_owner_id(self, key): method _get_owner_id (line 337) | def _get_owner_id(self): function _submit_case_blocks (line 344) | def _submit_case_blocks(case_blocks, domain, user, device_id, xmlns): function _get_owner_ids (line 356) | def _get_owner_ids(domain, data, case_db): function validate_update_permission (line 383) | def validate_update_permission(domain, data, user, case_db): FILE: corehq/apps/hqcase/bulk.py class SystemFormMeta (line 11) | class SystemFormMeta: method for_script (line 17) | def for_script(cls, name, username=None): class CaseBulkDB (line 34) | class CaseBulkDB: method __init__ (line 39) | def __init__(self, domain, form_meta: SystemFormMeta = None): method __enter__ (line 43) | def __enter__(self): method __exit__ (line 47) | def __exit__(self, exc_type, exc_val, exc_tb): method save (line 50) | def save(self, case_block): method commit (line 55) | def commit(self): function update_cases (line 71) | def update_cases(domain, update_fn, case_ids, form_meta: SystemFormMeta ... FILE: corehq/apps/hqcase/case_helper.py class UserDuck (line 16) | class UserDuck: class CaseHelper (line 22) | class CaseHelper: method __init__ (line 83) | def __init__(self, *, domain, case=None, case_id=None): method create_case (line 106) | def create_case( method update (line 131) | def update( method close (line 159) | def close( method _clean_serialized_case (line 182) | def _clean_serialized_case(case_data): method _get_valid_fields (line 200) | def _get_valid_fields(): method _get_user_duck (line 207) | def _get_user_duck(user_id, domain): class CaseCopier (line 220) | class CaseCopier: method __init__ (line 224) | def __init__(self, domain, *, to_owner, censor_data=None): method copy_cases (line 258) | def copy_cases(self, case_ids, progress_task=None): method _create_caseblock (line 303) | def _create_caseblock(self, case): method _get_new_index_map (line 325) | def _get_new_index_map(self, case): method _get_new_index_attrs (line 334) | def _get_new_index_attrs(self, index_dict): method _add_to_submission_handler (line 361) | def _add_to_submission_handler(self, caseblock): method _commit_cases (line 368) | def _commit_cases(self): method _increment_submission_row_count (line 371) | def _increment_submission_row_count(self): FILE: corehq/apps/hqcase/management/commands/initialize_es_indices.py class Command (line 15) | class Command(BaseCommand): method add_arguments (line 21) | def add_arguments(self, parser): method handle (line 43) | def handle(self, index=None, reset=False, set_for_usage=False, **kwargs): FILE: corehq/apps/hqcase/management/commands/ptop_preindex.py function get_reindex_commands (line 28) | def get_reindex_commands(hq_index_name): function do_reindex (line 51) | def do_reindex(hq_index_name, reset): class Command (line 70) | class Command(BaseCommand): method add_arguments (line 76) | def add_arguments(self, parser): method handle (line 85) | def handle(self, **options): FILE: corehq/apps/hqcase/management/commands/ptop_reindexer_v2.py function reindex_and_clean (line 54) | def reindex_and_clean(slug, **options): class SubCommand (line 60) | class SubCommand(BaseCommand): method run_from_argv (line 63) | def run_from_argv(self, argv): method create_parser (line 72) | def create_parser(self, prog_name, command_name): method add_arguments (line 78) | def add_arguments(self, parser): method add_subcommand_arguments (line 86) | def add_subcommand_arguments(self, parser, subcommand): method add_global_arguments (line 89) | def add_global_arguments(self, parser): class Command (line 93) | class Command(SubCommand): method add_global_arguments (line 97) | def add_global_arguments(self, parser): method add_subcommand_arguments (line 113) | def add_subcommand_arguments(self, parser, subcommand): method handle (line 116) | def handle(self, **options): FILE: corehq/apps/hqcase/management/commands/reindex_sql_forms_in_domain.py function reindex_sql_forms_in_domain (line 9) | def reindex_sql_forms_in_domain(domain): class Command (line 22) | class Command(BaseCommand): method add_arguments (line 25) | def add_arguments(self, parser): method handle (line 28) | def handle(self, domain, *args, **options): FILE: corehq/apps/hqcase/management/commands/reprocess_form_case_es_deletes.py function get_active_pillows (line 10) | def get_active_pillows(pillows): function get_form_es_pillows (line 24) | def get_form_es_pillows(): function get_case_es_pillows (line 31) | def get_case_es_pillows(): class Command (line 39) | class Command(BaseCommand): method add_arguments (line 48) | def add_arguments(self, parser): method handle (line 58) | def handle(self, doc_type, since, **kwargs): FILE: corehq/apps/hqcase/management/commands/reset_case_name.py class Command (line 18) | class Command(BaseCommand): method add_arguments (line 21) | def add_arguments(self, parser): method handle (line 25) | def handle(self, domain, case_type, *args, **options): FILE: corehq/apps/hqcase/tasks.py function explode_case_task (line 23) | def explode_case_task(domain, user_id, factor): function explode_cases (line 27) | def explode_cases(domain, user_id, factor, task=None): function topological_sort_case_blocks (line 96) | def topological_sort_case_blocks(cases): function delete_exploded_case_task (line 109) | def delete_exploded_case_task(domain, explosion_id): function delete_exploded_cases (line 113) | def delete_exploded_cases(domain, explosion_id, task=None): FILE: corehq/apps/hqcase/tests/test_api_updates.py class TestIndividualUpdate (line 23) | class TestIndividualUpdate: method test_individual_update_with_is_creation_true (line 25) | def test_individual_update_with_is_creation_true(self): method test_individual_update_with_is_creation_false (line 38) | def test_individual_update_with_is_creation_false(self): class TestBulkUpdates (line 52) | class TestBulkUpdates: method test_bulk_update_missing_create_flag_raises_error (line 54) | def test_bulk_update_missing_create_flag_raises_error(self): method test_bulk_update_with_create_true (line 67) | def test_bulk_update_with_create_true(self): method test_bulk_update_with_create_false (line 80) | def test_bulk_update_with_create_false(self): method test_bulk_update_with_create_none_returns_upsert (line 93) | def test_bulk_update_with_create_none_returns_upsert(self): method test_bulk_update_with_create_none_without_external_id_raises_error (line 111) | def test_bulk_update_with_create_none_without_external_id_raises_error... method test_bulk_update_with_create_none_with_case_id_raises_error (line 126) | def test_bulk_update_with_create_none_with_case_id_raises_error(self): method test_bulk_update_with_error_reports_row_number (line 143) | def test_bulk_update_with_error_reports_row_number(self): class TestUpsertIntegration (line 160) | class TestUpsertIntegration(TestCase): method setUpClass (line 165) | def setUpClass(cls): method tearDown (line 172) | def tearDown(self): method tearDownClass (line 177) | def tearDownClass(cls): method test_upsert_creates_case_when_external_id_not_found (line 182) | def test_upsert_creates_case_when_external_id_not_found(self): method test_upsert_with_missing_external_id (line 207) | def test_upsert_with_missing_external_id(self): method test_upsert_create_with_missing_data (line 226) | def test_upsert_create_with_missing_data(self): method test_upsert_updates_case_when_external_id_exists (line 247) | def test_upsert_updates_case_when_external_id_exists(self): method test_bulk_upsert_mixed_creates_and_updates (line 284) | def test_bulk_upsert_mixed_creates_and_updates(self): FILE: corehq/apps/hqcase/tests/test_bugs.py class OtaRestoreBugTest (line 16) | class OtaRestoreBugTest(TestCase): method setUp (line 18) | def setUp(self): method test_cross_domain_assignments (line 21) | def test_cross_domain_assignments(self): FILE: corehq/apps/hqcase/tests/test_bulk.py class TestUpdateCases (line 14) | class TestUpdateCases(TestCase): method tearDown (line 17) | def tearDown(self): method test (line 22) | def test(self): function _set_phase_2 (line 48) | def _set_phase_2(case): FILE: corehq/apps/hqcase/tests/test_case_api_bulk_get.py class TestCaseAPIBulkGet (line 34) | class TestCaseAPIBulkGet(TestCase): method setUpClass (line 39) | def setUpClass(cls): method setUp (line 64) | def setUp(self): method tearDownClass (line 68) | def tearDownClass(cls): method _make_case_block (line 77) | def _make_case_block(cls, name, case_type='player', external_id=None): method test_bulk_get (line 85) | def test_bulk_get(self): method test_bulk_get_domain_filter (line 89) | def test_bulk_get_domain_filter(self): method test_bulk_get_not_found (line 94) | def test_bulk_get_not_found(self): method test_bulk_get_duplicate (line 100) | def test_bulk_get_duplicate(self): method test_bulk_post (line 105) | def test_bulk_post(self): method test_bulk_post_missing (line 109) | def test_bulk_post_missing(self): method test_bulk_post_duplicates (line 115) | def test_bulk_post_duplicates(self): method test_bulk_post_over_limit (line 120) | def test_bulk_post_over_limit(self): method test_bulk_post_external_ids (line 124) | def test_bulk_post_external_ids(self): method test_bulk_post_external_ids_missing (line 127) | def test_bulk_post_external_ids_missing(self): method test_bulk_post_external_ids_duplicates (line 130) | def test_bulk_post_external_ids_duplicates(self): method test_bulk_post_case_ids_and_external_ids (line 135) | def test_bulk_post_case_ids_and_external_ids(self): method test_bulk_post_case_ids_and_external_ids_duplicates (line 142) | def test_bulk_post_case_ids_and_external_ids_duplicates(self): method test_bulk_post_case_ids_and_external_ids_missing (line 149) | def test_bulk_post_case_ids_and_external_ids_missing(self): method _call_get_api_check_results (line 156) | def _call_get_api_check_results(self, case_ids, matching=None, missing... method _call_post_api_check_results (line 165) | def _call_post_api_check_results(self, case_ids=None, external_ids=Non... method _call_post (line 191) | def _call_post(self, case_ids=None, external_ids=None, expected_status... method _check_matching_missing (line 202) | def _check_matching_missing(self, result, matching=None, missing=None): class TestGetBulkFunction (line 214) | class TestGetBulkFunction(TestCase): method setUpClass (line 219) | def setUpClass(cls): method tearDownClass (line 240) | def tearDownClass(cls): method _make_case_block (line 248) | def _make_case_block(cls, name, case_type='player', external_id=None): method test_get_bulk_one_case_found_by_case_id (line 256) | def test_get_bulk_one_case_found_by_case_id(self): method test_get_bulk_one_case_found_by_external_id (line 266) | def test_get_bulk_one_case_found_by_external_id(self): method test_get_bulk_no_cases_found_by_case_id (line 276) | def test_get_bulk_no_cases_found_by_case_id(self): method test_get_bulk_no_cases_found_by_external_id (line 286) | def test_get_bulk_no_cases_found_by_external_id(self): method test_get_bulk_duplicate_external_id (line 296) | def test_get_bulk_duplicate_external_id(self): method test_get_bulk_repeats (line 319) | def test_get_bulk_repeats(self): FILE: corehq/apps/hqcase/tests/test_case_api_get.py class TestCaseAPIGet (line 31) | class TestCaseAPIGet(TestCase): method setUpClass (line 36) | def setUpClass(cls): method setUp (line 56) | def setUp(self): method tearDownClass (line 60) | def tearDownClass(cls): method _make_case_block (line 68) | def _make_case_block(cls, name, case_type='player', external_id=None): method test_get_single_case (line 76) | def test_get_single_case(self): method test_get_single_case_by_external_id (line 81) | def test_get_single_case_by_external_id(self): method test_get_case_by_external_id_not_found (line 108) | def test_get_case_by_external_id_not_found(self): method test_get_single_case_not_found (line 118) | def test_get_single_case_not_found(self): method test_get_single_case_on_other_domain (line 123) | def test_get_single_case_on_other_domain(self): method test_get_case_by_external_id_with_duplicates (line 128) | def test_get_case_by_external_id_with_duplicates(self): FILE: corehq/apps/hqcase/tests/test_case_api_permissions.py class TestCaseAPIPermissions (line 40) | class TestCaseAPIPermissions(TestCase): method setUpClass (line 44) | def setUpClass(cls): method tearDownClass (line 87) | def tearDownClass(cls): method _get_new_case_data (line 92) | def _get_new_case_data(self, is_restricted=False): method test_case_api_list_happy_path (line 105) | def test_case_api_list_happy_path(self): method test_case_api_list_location_restricted (line 118) | def test_case_api_list_location_restricted(self): method test_case_api_bulk_fetch_happy_path (line 131) | def test_case_api_bulk_fetch_happy_path(self): method test_case_api_bulk_fetch_requires_access_all_locations (line 148) | def test_case_api_bulk_fetch_requires_access_all_locations(self): method test_case_api_get_successful (line 163) | def test_case_api_get_successful(self): method test_case_api_get_no_permission (line 177) | def test_case_api_get_no_permission(self): method test_case_api_get_access_all_locations (line 189) | def test_case_api_get_access_all_locations(self): method test_case_api_update_successful (line 203) | def test_case_api_update_successful(self): method test_case_api_update_no_permission (line 221) | def test_case_api_update_no_permission(self): method test_case_api_update_access_all_locations (line 237) | def test_case_api_update_access_all_locations(self): method test_case_api_update_new_owner_no_permission (line 255) | def test_case_api_update_new_owner_no_permission(self): method test_case_api_create_successful (line 271) | def test_case_api_create_successful(self): method test_case_api_create_no_permission (line 288) | def test_case_api_create_no_permission(self): method test_case_api_create_access_all_locations (line 303) | def test_case_api_create_access_all_locations(self): method test_get_list_access_all_locations (line 320) | def test_get_list_access_all_locations(self): method test_get_list_location_restricted (line 334) | def test_get_list_location_restricted(self): function get_web_user (line 348) | def get_web_user(domain, location, permissions, client): function get_case_blocks (line 375) | def get_case_blocks(names_locations): FILE: corehq/apps/hqcase/tests/test_case_api_updates.py class GetCaseBlockTests (line 10) | class GetCaseBlockTests(SimpleTestCase): method setUp (line 12) | def setUp(self): method test_kwargs (line 23) | def test_kwargs(self): method test_kwargs_incl_external_id (line 29) | def test_kwargs_incl_external_id(self): class JsonCaseUpsertTests (line 57) | class JsonCaseUpsertTests(SimpleTestCase): method setUp (line 59) | def setUp(self): method test_get_case_id_when_case_exists (line 69) | def test_get_case_id_when_case_exists(self): method test_get_case_id_when_case_does_not_exist (line 80) | def test_get_case_id_when_case_does_not_exist(self): method test_get_case_id_is_idempotent (line 91) | def test_get_case_id_is_idempotent(self): method test_get_caseblock_for_creation (line 103) | def test_get_caseblock_for_creation(self): method test_get_caseblock_for_update (line 115) | def test_get_caseblock_for_update(self): method test_is_new_case_not_initialized (line 126) | def test_is_new_case_not_initialized(self): FILE: corehq/apps/hqcase/tests/test_case_copier.py class TestCaseCopier (line 16) | class TestCaseCopier(TestCase): method test_no_cases_to_copy (line 18) | def test_no_cases_to_copy(self): method test_copy_case_to_blank_owner (line 24) | def test_copy_case_to_blank_owner(self): method test_copy_case_to_same_owner (line 30) | def test_copy_case_to_same_owner(self): method test_copy_case_to_new_owner (line 40) | def test_copy_case_to_new_owner(self): method test_copy_case_with_sensitive_properties (line 57) | def test_copy_case_with_sensitive_properties(self): method test_indices_copied (line 80) | def test_indices_copied(self): method test_indices_not_copied_if_not_in_case_list (line 104) | def test_indices_not_copied_if_not_in_case_list(self): method test_create_caseblock (line 115) | def test_create_caseblock(self): method test_get_new_index_attrs (line 126) | def test_get_new_index_attrs(self): method test_get_new_index_attrs_no_parent (line 142) | def test_get_new_index_attrs_no_parent(self): function get_mother_case (line 155) | def get_mother_case(*args, **kwargs): function get_child_case (line 169) | def get_child_case(): FILE: corehq/apps/hqcase/tests/test_case_helper.py function test_doctests (line 19) | def test_doctests(): class CaseHelperTests (line 25) | class CaseHelperTests(TestCase): method test_create_case_format (line 27) | def test_create_case_format(self): method test_validation_error (line 37) | def test_validation_error(self): method test_create_child_case (line 44) | def test_create_child_case(self): method test_update_property (line 72) | def test_update_property(self): method test_update_special_property (line 87) | def test_update_special_property(self): method test_update_index (line 100) | def test_update_index(self): method test_empty_update (line 129) | def test_empty_update(self): method test_update_case_id (line 137) | def test_update_case_id(self): method test_user_id (line 146) | def test_user_id(self): method test_update_user_id (line 158) | def test_update_user_id(self): method test_update_user_id_with_user_id (line 167) | def test_update_user_id_with_user_id(self): method test_username (line 179) | def test_username(self): method test_device_id (line 193) | def test_device_id(self): method test_default_device_id (line 203) | def test_default_device_id(self): method test_close_with_user_id (line 215) | def test_close_with_user_id(self): method test_close (line 228) | def test_close(self): method test_recreating_case (line 240) | def test_recreating_case(self): method test_closing_no_case (line 250) | def test_closing_no_case(self): method test_clean_serialized_case (line 255) | def test_clean_serialized_case(self): method test_get_user_duck_user_id (line 279) | def test_get_user_duck_user_id(self): method test_get_user_duck_none (line 284) | def test_get_user_duck_none(self): method test_get_user_duck_username (line 289) | def test_get_user_duck_username(self): method test_valid_fields (line 296) | def test_valid_fields(self, field_name): function get_mother_case (line 317) | def get_mother_case(*args, **kwargs): function get_child_case (line 331) | def get_child_case(): function get_commcare_user (line 355) | def get_commcare_user(): FILE: corehq/apps/hqcase/tests/test_case_list_api.py class TestCaseListAPI (line 30) | class TestCaseListAPI(TestCase): method setUpClass (line 35) | def setUpClass(cls): method _get_case_blocks (line 42) | def _get_case_blocks(): method tearDownClass (line 79) | def tearDownClass(cls): method test_pagination (line 84) | def test_pagination(self): method test_pagination_continues (line 109) | def test_pagination_continues(self): method test_deprecated_case_type (line 124) | def test_deprecated_case_type(self): function test_case_list_queries (line 170) | def test_case_list_queries(self, querystring, expected): function test_bad_requests (line 191) | def test_bad_requests(self, querystring, error_msg): FILE: corehq/apps/hqcase/tests/test_case_sharing.py class CaseSharingTest (line 13) | class CaseSharingTest(TestCase): method setUp (line 15) | def setUp(self): method tearDown (line 41) | def tearDown(self): method test_sharing (line 44) | def test_sharing(self): method get_create_block (line 110) | def get_create_block(self, case_id, type, user_id, owner_id, name=None... method get_update_block (line 124) | def get_update_block(self, case_id, owner_id=None, update=None): FILE: corehq/apps/hqcase/tests/test_case_update_api.py class TestCaseAPI (line 29) | class TestCaseAPI(TestCase): method setUpClass (line 34) | def setUpClass(cls): method setUp (line 42) | def setUp(self): method tearDown (line 45) | def tearDown(self): method tearDownClass (line 50) | def tearDownClass(cls): method _make_case (line 55) | def _make_case(self, parent_id=None): method _create_case (line 74) | def _create_case(self, body): method _update_case (line 82) | def _update_case(self, case_id, body): method _bulk_update_cases (line 90) | def _bulk_update_cases(self, body): method test_basic_get_list (line 94) | def test_basic_get_list(self): method test_create_case (line 100) | def test_create_case(self): method test_non_schema_updates (line 131) | def test_non_schema_updates(self): method test_empty_case_type (line 143) | def test_empty_case_type(self): method test_no_required_updates (line 153) | def test_no_required_updates(self): method test_update_case (line 171) | def test_update_case(self): method test_can_update_case_type (line 196) | def test_can_update_case_type(self): method test_close_case (line 206) | def test_close_case(self): method test_create_closed_case (line 213) | def test_create_closed_case(self): method test_update_case_bad_id (line 225) | def test_update_case_bad_id(self): method test_update_case_on_other_domain (line 237) | def test_update_case_on_other_domain(self): method test_create_child_case (line 253) | def test_create_child_case(self): method test_set_parent_by_external_id (line 284) | def test_set_parent_by_external_id(self): method test_set_parent_by_bad_external_id (line 303) | def test_set_parent_by_bad_external_id(self): method test_set_parent_missing_field (line 318) | def test_set_parent_missing_field(self): method test_delete_index (line 334) | def test_delete_index(self): method test_bulk_action (line 357) | def test_bulk_action(self): method test_bulk_without_create_flag (line 391) | def test_bulk_without_create_flag(self): method test_attempt_create_with_case_id (line 401) | def test_attempt_create_with_case_id(self): method test_bulk_update_too_big (line 412) | def test_bulk_update_too_big(self): method test_update_with_bad_case_id (line 420) | def test_update_with_bad_case_id(self): method test_create_parent_and_child_together (line 440) | def test_create_parent_and_child_together(self): method test_create_child_with_no_parent (line 474) | def test_create_child_with_no_parent(self): method test_index_reference_to_uncreated_external_id (line 497) | def test_index_reference_to_uncreated_external_id(self): method test_update_by_external_id (line 527) | def test_update_by_external_id(self): method test_update_by_external_id_doesnt_exist (line 541) | def test_update_by_external_id_doesnt_exist(self): method test_update_by_external_id_with_bad_create (line 553) | def test_update_by_external_id_with_bad_create(self): method test_single_update_with_list (line 567) | def test_single_update_with_list(self): method test_bulk_update_by_external_id (line 577) | def test_bulk_update_by_external_id(self): method test_bulk_update_external_id_doesnt_exist (line 588) | def test_bulk_update_external_id_doesnt_exist(self): method test_non_json_data (line 597) | def test_non_json_data(self): method test_missing_required_field (line 602) | def test_missing_required_field(self): method test_invalid_properties (line 612) | def test_invalid_properties(self): method test_non_xml_properties (line 627) | def test_non_xml_properties(self): method test_non_xml_index_name (line 638) | def test_non_xml_index_name(self): method test_bad_index_reference (line 657) | def test_bad_index_reference(self): method test_unset_external_id (line 679) | def test_unset_external_id(self): method test_omitting_external_id_doesnt_clear_it (line 690) | def test_omitting_external_id_doesnt_clear_it(self): method test_urls_without_trailing_slash (line 701) | def test_urls_without_trailing_slash(self): method test_case_name_twice (line 719) | def test_case_name_twice(self): method test_post_without_external_id_calls_with_is_creation_true (line 735) | def test_post_without_external_id_calls_with_is_creation_true(self, mo... method test_put_with_case_id_calls_with_is_creation_false (line 760) | def test_put_with_case_id_calls_with_is_creation_false(self, mock_hand... method _get_update_return (line 785) | def _get_update_return(): method test_upsert_by_external_id_is_idempotent (line 792) | def test_upsert_by_external_id_is_idempotent(self): method test_upsert_by_external_id_with_duplicate_external_ids (line 851) | def test_upsert_by_external_id_with_duplicate_external_ids(self): FILE: corehq/apps/hqcase/tests/test_dbaccessors.py class ESAccessorsTest (line 17) | class ESAccessorsTest(TestCase): method tearDown (line 20) | def tearDown(self): method test_get_number_of_cases_in_domain (line 24) | def test_get_number_of_cases_in_domain(self): method _create_case_and_sync_to_es (line 31) | def _create_case_and_sync_to_es(self): FILE: corehq/apps/hqcase/tests/test_explode_cases.py class ExplodeCasesDbTest (line 22) | class ExplodeCasesDbTest(TestCase): method setUpClass (line 25) | def setUpClass(cls): method setUp (line 33) | def setUp(self): method tearDown (line 37) | def tearDown(self): method tearDownClass (line 42) | def tearDownClass(cls): method test_simple (line 47) | def test_simple(self): method test_skip_usercase (line 65) | def test_skip_usercase(self): method test_parent_child (line 83) | def test_parent_child(self): class ExplodeExtensionsDBTest (line 123) | class ExplodeExtensionsDBTest(BaseSyncTest): method setUp (line 125) | def setUp(self): method tearDown (line 129) | def tearDown(self): method _create_case_structure (line 134) | def _create_case_structure(self): method test_case_graph (line 191) | def test_case_graph(self): method test_child_extensions (line 198) | def test_child_extensions(self): class ExplodeLedgersTest (line 206) | class ExplodeLedgersTest(BaseSyncTest): method setUpClass (line 209) | def setUpClass(cls): method setUp (line 214) | def setUp(self): method _create_ledgers (line 219) | def _create_ledgers(self): method test_explode_ledgers (line 247) | def test_explode_ledgers(self): FILE: corehq/apps/hqcase/tests/test_external_id_url_encoding.py function test_external_id_url_decoding_v2 (line 26) | def test_external_id_url_decoding_v2(url_path, expected_external_id): function test_external_id_url_decoding_v0_6 (line 40) | def test_external_id_url_decoding_v0_6(url_path, expected_external_id): function test_case_id_url_patterns (line 62) | def test_case_id_url_patterns(url, expected_case_id): function test_case_id_rejects_invalid_characters (line 80) | def test_case_id_rejects_invalid_characters(url): FILE: corehq/apps/hqcase/tests/test_loadtest_users.py class LoadtestUserTest (line 30) | class LoadtestUserTest(TestCase, DomainSubscriptionMixin): method setUpClass (line 33) | def setUpClass(cls): method setUp (line 38) | def setUp(self): method tearDown (line 48) | def tearDown(self): method tearDownClass (line 53) | def tearDownClass(cls): method _is_usercase (line 58) | def _is_usercase(cb): method test_no_factor_set (line 62) | def test_no_factor_set(self): method test_simple_factor (line 79) | def test_simple_factor(self): method test_parent_child (line 104) | def test_parent_child(self): class TestGetSafeLoadtestFactor (line 134) | class TestGetSafeLoadtestFactor(SimpleTestCase): method setUpClass (line 137) | def setUpClass(cls): method test_get_safe_loadtest_factor_safe (line 147) | def test_get_safe_loadtest_factor_safe(self): method test_get_safe_loadtest_factor_unsafe (line 151) | def test_get_safe_loadtest_factor_unsafe(self): method test_get_safe_loadtest_factor_above_limit (line 155) | def test_get_safe_loadtest_factor_above_limit(self): class FakeRestoreUser (line 162) | class FakeRestoreUser: FILE: corehq/apps/hqcase/tests/test_object_cache.py function hack_local_url (line 23) | def hack_local_url(url): function rebuild_stream (line 29) | def rebuild_stream(response_iter): class CaseObjectCacheTest (line 42) | class CaseObjectCacheTest(BaseCaseMultimediaTest): method setUp (line 47) | def setUp(self): method tearDown (line 55) | def tearDown(self): method testCreateMultimediaCase (line 60) | def testCreateMultimediaCase(self): FILE: corehq/apps/hqcase/tests/test_serialization.py class TestAPISerialization (line 19) | class TestAPISerialization(TestCase): method setUpClass (line 24) | def setUpClass(cls): method tearDownClass (line 76) | def tearDownClass(cls): method test_serialization (line 81) | def test_serialization(self, datetime_mock): method test_es_serialization (line 112) | def test_es_serialization(self): FILE: corehq/apps/hqcase/tests/test_utils.py class TestGetCaseValue (line 20) | class TestGetCaseValue(TestCase): method test_value_is_case_attribute (line 22) | def test_value_is_case_attribute(self): method test_value_is_case_property (line 32) | def test_value_is_case_property(self): method test_value_does_not_exist (line 43) | def test_value_does_not_exist(self): method test_no_value_provided_results_in_none (line 50) | def test_no_value_provided_results_in_none(self): class TestGetCensoredCaseData (line 58) | class TestGetCensoredCaseData(TestCase): method test_no_censor_data_provided (line 60) | def test_no_censor_data_provided(self): method test_valid_attributes_and_properties (line 66) | def test_valid_attributes_and_properties(self): method test_missing_properties (line 84) | def test_missing_properties(self): method test_invalid_deid_transform_blanks_property (line 93) | def test_invalid_deid_transform_blanks_property(self): function get_case (line 108) | def get_case(*args, **kwargs): class TestIsCopiedCase (line 121) | class TestIsCopiedCase(TestCase): method setUpClass (line 124) | def setUpClass(cls): method test_is_copied_case (line 133) | def test_is_copied_case(self): FILE: corehq/apps/hqcase/utils.py function submit_case_blocks (line 49) | def submit_case_blocks( function get_case_by_identifier (line 113) | def get_case_by_identifier(domain, identifier): function submit_case_block_from_template (line 131) | def submit_case_block_from_template( function _get_update_or_close_case_block (line 153) | def _get_update_or_close_case_block( function update_case (line 176) | def update_case( function bulk_update_cases (line 213) | def bulk_update_cases(domain, case_changes, device_id, xmlns=None): function resave_case (line 231) | def resave_case(domain, case, send_post_save_signal=True): function get_last_non_blank_value (line 236) | def get_last_non_blank_value(case, case_property): function get_case_value (line 252) | def get_case_value(case, value): function get_deidentified_data (line 273) | def get_deidentified_data(case, censor_data): function is_copied_case (line 313) | def is_copied_case(case): FILE: corehq/apps/hqcase/views.py class ExplodeCasesView (line 38) | class ExplodeCasesView(BaseProjectSettingsView, TemplateView): method dispatch (line 45) | def dispatch(self, *args, **kwargs): method get (line 48) | def get(self, request, domain): method get_context_data (line 51) | def get_context_data(self, **kwargs): method post (line 58) | def post(self, request, domain): method explode_cases (line 64) | def explode_cases(self, request, domain): method delete_cases (line 78) | def delete_cases(self, request, domain): function case_api (line 95) | def case_api(request, domain, case_id=None, external_id=None): function case_api_bulk_fetch (line 119) | def case_api_bulk_fetch(request, domain): function _handle_get (line 123) | def _handle_get(request, case_id): function _get_bulk_cases (line 129) | def _get_bulk_cases(request, case_ids=None, external_ids=None): function _get_single_case (line 138) | def _get_single_case(request, case_id): function _handle_ext_get (line 152) | def _handle_ext_get(request, external_id): function _handle_bulk_fetch (line 190) | def _handle_bulk_fetch(request): function _handle_list_view (line 204) | def _handle_list_view(request): function _handle_ext_put (line 215) | def _handle_ext_put(request, external_id): function _handle_case_put_post (line 260) | def _handle_case_put_post(request, is_creation, case_id=None): function _handle_case_update (line 272) | def _handle_case_update(request, data, is_creation): FILE: corehq/apps/hqmedia/cache.py class BaseMultimediaStatusCache (line 16) | class BaseMultimediaStatusCache(object): method __init__ (line 20) | def __init__(self, processing_id): method __str__ (line 33) | def __str__(self): method save (line 39) | def save(self): method mark_with_error (line 42) | def mark_with_error(self, error_str): method get_response (line 47) | def get_response(self): method get_cache_key (line 62) | def get_cache_key(cls, processing_id): method get (line 66) | def get(cls, processing_id): class BulkMultimediaStatusCache (line 70) | class BulkMultimediaStatusCache(BaseMultimediaStatusCache): method __init__ (line 73) | def __init__(self, processing_id): method allowed_media (line 82) | def allowed_media(self): method get_response (line 85) | def get_response(self): method update_progress (line 101) | def update_progress(self, num_files_processed): method add_skipped_path (line 114) | def add_skipped_path(self, path, mimetype): method add_unmatched_path (line 120) | def add_unmatched_path(self, path, reason): method add_matched_path (line 126) | def add_matched_path(self, media_class, media_info): method _get_upload_file (line 133) | def _get_upload_file(self): method get_upload_zip (line 146) | def get_upload_zip(self): method get_cache_key (line 162) | def get_cache_key(cls, processing_id): class BulkMultimediaStatusCacheNfs (line 166) | class BulkMultimediaStatusCacheNfs(BulkMultimediaStatusCache): method __init__ (line 168) | def __init__(self, processing_id, file_path): method _get_upload_file (line 172) | def _get_upload_file(self): FILE: corehq/apps/hqmedia/controller.py class BaseMultimediaFileUploadController (line 10) | class BaseMultimediaFileUploadController(object): method __init__ (line 17) | def __init__(self, slug, destination): method licensing_params (line 22) | def licensing_params(self): method upload_params (line 26) | def upload_params(self): method js_options (line 33) | def js_options(self): class MultimediaImageUploadController (line 55) | class MultimediaImageUploadController(BaseMultimediaFileUploadController): method existing_file_template (line 59) | def existing_file_template(self): class MultimediaLogoUploadController (line 67) | class MultimediaLogoUploadController(MultimediaImageUploadController): class MultimediaAudioUploadController (line 71) | class MultimediaAudioUploadController(BaseMultimediaFileUploadController): class MultimediaVideoUploadController (line 77) | class MultimediaVideoUploadController(BaseMultimediaFileUploadController): FILE: corehq/apps/hqmedia/exceptions.py class BadMediaFileException (line 1) | class BadMediaFileException(Exception): FILE: corehq/apps/hqmedia/migrations/0001_initial.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/hqmedia/models.py class AuxMedia (line 48) | class AuxMedia(DocumentSchema): class HQMediaLicense (line 62) | class HQMediaLicense(DocumentSchema): method __init__ (line 69) | def __init__(self, _d=None, **properties): method display_name (line 76) | def display_name(self): method deed_link (line 80) | def deed_link(self): class CommCareMultimedia (line 84) | class CommCareMultimedia(BlobMixin, SafeSaveDocument): method get (line 100) | def get(cls, docid, rev=None, db=None, dynamic_properties=True): method is_shared (line 111) | def is_shared(self): method license (line 115) | def license(self): method update_or_add_license (line 119) | def update_or_add_license(self, domain, type="", author="", attributio... method url (line 135) | def url(self): method attach_data (line 138) | def attach_data(self, data, original_filename=None, username=None, att... method add_domain (line 171) | def add_domain(self, domain, owner=None, **kwargs): method get_display_file (line 197) | def get_display_file(self, return_type=True): method get_file_extension (line 207) | def get_file_extension(self): method get_media_info (line 213) | def get_media_info(self, path, is_updated=False, original_path=None): method attachment_id (line 227) | def attachment_id(self): method content_length (line 235) | def content_length(self): method get_mime_type (line 240) | def get_mime_type(cls, data, filename=None): method get_base_mime_type (line 249) | def get_base_mime_type(cls, data, filename=None): method generate_hash (line 254) | def generate_hash(cls, data): method get_by_hash (line 259) | def get_by_hash(cls, file_hash): method get_by_data (line 267) | def get_by_data(cls, data): method get_doc_types (line 272) | def get_doc_types(cls): method get_doc_class (line 276) | def get_doc_class(cls, doc_type): method get_class_by_data (line 285) | def get_class_by_data(cls, data, filename=None): method get_form_path (line 293) | def get_form_path(cls, path, lowercase=False): method get_standard_path (line 304) | def get_standard_path(cls, path): method wrap (line 308) | def wrap(cls, data): method get_nice_name (line 332) | def get_nice_name(cls): method get_icon_class (line 336) | def get_icon_class(cls): class ImageThumbnailError (line 340) | class ImageThumbnailError(Exception): class CommCareImage (line 344) | class CommCareImage(CommCareMultimedia): class Config (line 346) | class Config(object): method attach_data (line 349) | def attach_data(self, data, original_filename=None, username=None, att... method get_media_info (line 362) | def get_media_info(self, path, is_updated=False, original_path=None): method image_size_display (line 367) | def image_size_display(self): method get_image_object (line 376) | def get_image_object(cls, data): method _get_resized_image (line 383) | def _get_resized_image(cls, image, size): method get_invalid_image_data (line 395) | def get_invalid_image_data(cls): method get_thumbnail_data (line 401) | def get_thumbnail_data(cls, data, size): method get_nice_name (line 409) | def get_nice_name(cls): method get_icon_class (line 413) | def get_icon_class(cls): class CommCareAudio (line 417) | class CommCareAudio(CommCareMultimedia): class Config (line 419) | class Config(object): method get_nice_name (line 423) | def get_nice_name(cls): method get_icon_class (line 427) | def get_icon_class(cls): class CommCareVideo (line 431) | class CommCareVideo(CommCareMultimedia): method get_nice_name (line 434) | def get_nice_name(cls): method get_icon_class (line 438) | def get_icon_class(cls): class HQMediaMapItem (line 442) | class HQMediaMapItem(DocumentSchema): method url (line 451) | def url(self): method gen_unique_id (line 456) | def gen_unique_id(cls, m_id, path): class ApplicationMediaReference (line 460) | class ApplicationMediaReference(object): method __init__ (line 469) | def __init__(self, path, module_unique_id=None, module_name=None, method __str__ (line 494) | def __str__(self): method as_dict (line 506) | def as_dict(self): method _get_name (line 525) | def _get_name(self, raw_name): method get_module_name (line 532) | def get_module_name(self): method get_form_name (line 535) | def get_form_name(self): class MediaMixin (line 539) | class MediaMixin(object): method get_media_ref_kwargs (line 544) | def get_media_ref_kwargs(self): method all_media (line 547) | def all_media(self, lang=None): method get_references (line 554) | def get_references(self, lang=None): method get_relevant_multimedia_map (line 560) | def get_relevant_multimedia_map(self, app): method rename_media (line 565) | def rename_media(self, old_path, new_path): method all_media_paths (line 573) | def all_media_paths(self, lang=None): method get_all_paths_of_type (line 577) | def get_all_paths_of_type(self, media_type): method menu_media (line 580) | def menu_media(self, menu, lang=None): method rename_menu_media (line 596) | def rename_menu_media(self, menu, old_path, new_path): class ModuleMediaMixin (line 612) | class ModuleMediaMixin(MediaMixin): method get_media_ref_kwargs (line 613) | def get_media_ref_kwargs(self): method all_media (line 623) | def all_media(self, lang=None): method rename_media (line 658) | def rename_media(self, old_path, new_path): class FormMediaMixin (line 694) | class FormMediaMixin(MediaMixin): method get_media_ref_kwargs (line 695) | def get_media_ref_kwargs(self): method memoized_xform (line 707) | def memoized_xform(self): method all_media (line 710) | def all_media(self, lang=None): method rename_media (line 740) | def rename_media(self, old_path, new_path): class ApplicationMediaMixin (line 752) | class ApplicationMediaMixin(Document, MediaMixin): method all_media (line 768) | def all_media(self, lang=None): method multimedia_map_for_build (line 786) | def multimedia_map_for_build(self, build_profile=None, remove_unused=F... method get_menu_media (line 806) | def get_menu_media(self, module, form=None, form_index=None, to_langua... method get_case_list_form_media (line 815) | def get_case_list_form_media(self, module, to_language=None): method get_case_list_menu_item_media (line 823) | def get_case_list_menu_item_media(self, module, to_language=None): method get_case_search_label_media (line 831) | def get_case_search_label_media(self, module, label, to_language=None): method get_case_list_lookup_image (line 836) | def get_case_list_lookup_image(self, module, type='case'): method _get_item_media (line 853) | def _get_item_media(self, item, media_kwargs): method get_media_ref_kwargs (line 875) | def get_media_ref_kwargs(self, module, form=None, form_index=None, is_... method logo_paths (line 888) | def logo_paths(self): method remove_unused_mappings (line 891) | def remove_unused_mappings(self): method create_mapping (line 909) | def create_mapping(self, multimedia, path, save=True): method get_media_objects (line 929) | def get_media_objects(self, build_profile_id=None, remove_unused=False... method get_object_map (line 961) | def get_object_map(self, multimedia_map=None): method get_reference_totals (line 967) | def get_reference_totals(self): method check_media_state (line 985) | def check_media_state(self): method archive_logos (line 1000) | def archive_logos(self): method restore_logos (line 1013) | def restore_logos(self): class LogoForSystemEmailsReference (line 1026) | class LogoForSystemEmailsReference(models.Model): method full_url_to_image (line 1031) | def full_url_to_image(self): FILE: corehq/apps/hqmedia/static/hqmedia/js/bootstrap3/media_reference_models.js function BaseMediaReference (line 6) | function BaseMediaReference(ref, uploaderSlug) { function ImageReference (line 103) | function ImageReference(ref, uploaderSlug) { function AudioReference (line 117) | function AudioReference(ref, uploaderSlug) { function VideoReference (line 127) | function VideoReference(ref, uploaderSlug) { FILE: corehq/apps/hqmedia/static/hqmedia/js/bootstrap3/references_main.js function MultimediaReferenceController (line 10) | function MultimediaReferenceController() { FILE: corehq/apps/hqmedia/static/hqmedia/js/bootstrap5/media_reference_models.js function BaseMediaReference (line 6) | function BaseMediaReference(ref, uploaderSlug) { function ImageReference (line 103) | function ImageReference(ref, uploaderSlug) { function AudioReference (line 117) | function AudioReference(ref, uploaderSlug) { function VideoReference (line 127) | function VideoReference(ref, uploaderSlug) { FILE: corehq/apps/hqmedia/static/hqmedia/js/bootstrap5/references_main.js function MultimediaReferenceController (line 10) | function MultimediaReferenceController() { FILE: corehq/apps/hqmedia/tasks.py function process_bulk_upload_zip (line 31) | def process_bulk_upload_zip(processing_id, domain, app_id, username=None... function build_application_zip (line 126) | def build_application_zip(include_multimedia_files, include_index_files,... function _get_file_path (line 145) | def _get_file_path(app, include_multimedia_files, include_index_files, b... function _build_ccz_files (line 164) | def _build_ccz_files(build, build_profile_id, include_multimedia_files, ... function _zip_files_for_ccz (line 191) | def _zip_files_for_ccz(fpath, files, current_progress, file_progress, fi... function create_files_for_ccz (line 208) | def create_files_for_ccz(build, build_profile_id, include_multimedia_fil... function _expose_download_link (line 262) | def _expose_download_link(fpath, filename, compress_zip, download_id): function check_ccz_multimedia_integrity (line 278) | def check_ccz_multimedia_integrity(domain, fpath): FILE: corehq/apps/hqmedia/tests/test_audio_translator_files.py class AudioTranslatorFilesTest (line 11) | class AudioTranslatorFilesTest(TestCase, TestXmlMixin): method _get_app (line 14) | def _get_app(self): method _worksheet_data (line 38) | def _worksheet_data(self, workbook, sheet_index): method test_create_files (line 41) | def test_create_files(self): FILE: corehq/apps/hqmedia/tests/test_manage_paths.py class ManagePathsTest (line 20) | class ManagePathsTest(SimpleTestCase, TestXmlMixin): method _get_menu_media (line 23) | def _get_menu_media(self, lang): method _get_form_media (line 29) | def _get_form_media(self, lang): method _get_app (line 35) | def _get_app(self): method test_paths_download (line 49) | def test_paths_download(self, validate_xform): method test_paths_validate (line 80) | def test_paths_validate(self, validate_xform): method test_paths_upload (line 111) | def test_paths_upload(self, validate_xform, get_db): FILE: corehq/apps/hqmedia/tests/test_pillow_library_usage.py function _get_logo (line 9) | def _get_logo(): function test_thumbnail_resize_works (line 14) | def test_thumbnail_resize_works(): function test_rgb_conversion (line 21) | def test_rgb_conversion(): function test_image_size (line 26) | def test_image_size(): function test_save (line 31) | def test_save(): function test_image_ops_fit (line 36) | def test_image_ops_fit(): FILE: corehq/apps/hqmedia/tests/test_utils.py function _make_zip_file (line 8) | def _make_zip_file(): function test_save_multimedia_upload_returns_processing_id (line 19) | def test_save_multimedia_upload_returns_processing_id(mock_expose, mock_... function test_save_multimedia_upload_reads_file_content (line 33) | def test_save_multimedia_upload_reads_file_content(mock_expose, _mock_ca... FILE: corehq/apps/hqmedia/utils.py function save_multimedia_upload (line 21) | def save_multimedia_upload(uploaded_file): FILE: corehq/apps/hqmedia/view_helpers.py function download_multimedia_paths_rows (line 13) | def download_multimedia_paths_rows(app, only_missing=False): function validate_multimedia_paths_rows (line 35) | def validate_multimedia_paths_rows(app, rows): function update_multimedia_paths (line 77) | def update_multimedia_paths(app, paths): function download_audio_translator_files (line 113) | def download_audio_translator_files(domain, app, lang, eligible_for_tran... FILE: corehq/apps/hqmedia/views.py class BaseMultimediaView (line 85) | class BaseMultimediaView(ApplicationViewMixin, BaseSectionPageView): method dispatch (line 88) | def dispatch(self, request, *args, **kwargs): class BaseMultimediaTemplateView (line 92) | class BaseMultimediaTemplateView(BaseMultimediaView, TemplateView): method section_name (line 97) | def section_name(self): method page_url (line 101) | def page_url(self): method section_url (line 105) | def section_url(self): method page_context (line 109) | def page_context(self, **kwargs): method render_to_response (line 137) | def render_to_response(self, context, **response_kwargs): class BaseMultimediaUploaderView (line 141) | class BaseMultimediaUploaderView(BaseMultimediaTemplateView): method page_context (line 144) | def page_context(self): method upload_controllers (line 153) | def upload_controllers(self): class MultimediaReferencesView (line 160) | class MultimediaReferencesView(BaseMultimediaUploaderView): method page_context (line 166) | def page_context(self): method upload_controllers (line 176) | def upload_controllers(self): method get (line 186) | def get(self, request, *args, **kwargs): method _process_references (line 220) | def _process_references(self, page, limit, lang=None, query=None, medi... class BulkUploadMultimediaView (line 252) | class BulkUploadMultimediaView(BaseMultimediaTemplateView): method parent_pages (line 258) | def parent_pages(self): method page_context (line 265) | def page_context(self): class BulkUploadMultimediaPollView (line 286) | class BulkUploadMultimediaPollView(BaseMultimediaTemplateView): method get (line 289) | def get(self, request, domain, app_id, processing_id): class BulkUploadMultimediaStatusView (line 299) | class BulkUploadMultimediaStatusView(BaseMultimediaTemplateView): method get (line 304) | def get(self, request, *args, **kwargs): method page_url (line 320) | def page_url(self): class ManageMultimediaPathsView (line 326) | class ManageMultimediaPathsView(BaseMultimediaTemplateView): method dispatch (line 333) | def dispatch(self, request, *args, **kwargs): method parent_pages (line 337) | def parent_pages(self): method page_context (line 344) | def page_context(self): method post (line 360) | def post(self, request, *args, **kwargs): function download_multimedia_paths (line 423) | def download_multimedia_paths(request, domain, app_id): class MultimediaTranslationsCoverageView (line 440) | class MultimediaTranslationsCoverageView(BaseMultimediaTemplateView): method parent_pages (line 446) | def parent_pages(self): method page_context (line 453) | def page_context(self): method post (line 472) | def post(self, request, *args, **kwargs): class MultimediaAudioTranslatorFileView (line 510) | class MultimediaAudioTranslatorFileView(BaseMultimediaTemplateView): method parent_pages (line 516) | def parent_pages(self): method get (line 522) | def get(self, request, *args, **kwargs): class BaseProcessUploadedView (line 540) | class BaseProcessUploadedView(BaseMultimediaView): method username (line 544) | def username(self): method share_media (line 548) | def share_media(self): method license_used (line 552) | def license_used(self): method author (line 556) | def author(self): method attribution_notes (line 560) | def attribution_notes(self): method uploaded_file (line 565) | def uploaded_file(self): method mime_type (line 570) | def mime_type(self): method dispatch (line 578) | def dispatch(self, request, *args, **kwargs): method get (line 581) | def get(self, request, *args, **kwargs): method post (line 584) | def post(self, request, *args, **kwargs): method validate_file (line 598) | def validate_file(self, replace_diff_ext=False): method process_upload (line 601) | def process_upload(self): class ProcessBulkUploadView (line 605) | class ProcessBulkUploadView(BaseProcessUploadedView): method uploaded_zip (line 611) | def uploaded_zip(self): method validate_file (line 619) | def validate_file(self, replace_diff_ext=False): method process_upload (line 627) | def process_upload(self): method post (line 639) | def post(self, request, *args, **kwargs): method valid_mime_types (line 657) | def valid_mime_types(cls): class BaseProcessFileUploadView (line 666) | class BaseProcessFileUploadView(BaseProcessUploadedView): method form_path (line 670) | def form_path(self): method original_path (line 674) | def original_path(self): method file_ext (line 678) | def file_ext(self): method orig_ext (line 685) | def orig_ext(self): method validate_file (line 690) | def validate_file(self, replace_diff_ext=False): method process_upload (line 724) | def process_upload(self): method valid_base_types (line 743) | def valid_base_types(cls): class ProcessImageFileUploadView (line 747) | class ProcessImageFileUploadView(BaseProcessFileUploadView): method valid_base_types (line 752) | def valid_base_types(cls): class ProcessLogoFileUploadView (line 756) | class ProcessLogoFileUploadView(ProcessImageFileUploadView): method post (line 760) | def post(self, request, *args, **kwargs): method form_path (line 764) | def form_path(self): method validate_file (line 768) | def validate_file(self, replace_diff_ext=True): method filename (line 772) | def filename(self): method process_upload (line 775) | def process_upload(self): class ProcessAudioFileUploadView (line 788) | class ProcessAudioFileUploadView(BaseProcessFileUploadView): method valid_base_types (line 793) | def valid_base_types(cls): class ProcessVideoFileUploadView (line 797) | class ProcessVideoFileUploadView(BaseProcessFileUploadView): method valid_base_types (line 802) | def valid_base_types(cls): class ProcessTextFileUploadView (line 806) | class ProcessTextFileUploadView(BaseProcessFileUploadView): method valid_base_types (line 811) | def valid_base_types(cls): class RemoveLogoView (line 815) | class RemoveLogoView(BaseMultimediaView): method logo_slug (line 819) | def logo_slug(self): method post (line 825) | def post(self, *args, **kwargs): function iter_media_files (line 832) | def iter_media_files(media_objects): function iter_app_files (line 861) | def iter_app_files(app, include_multimedia_files, include_index_files, class DownloadMultimediaZip (line 882) | class DownloadMultimediaZip(View, ApplicationViewMixin): method zip_name (line 895) | def zip_name(self): method check_before_zipping (line 898) | def check_before_zipping(self): method get (line 902) | def get(self, request, *args, **kwargs): method dispatch (line 928) | def dispatch(self, request, *args, **kwargs): class ViewMultimediaFile (line 932) | class ViewMultimediaFile(View): method dispatch (line 936) | def dispatch(self, request, *args, **kwargs): method media_class (line 941) | def media_class(self): method doc_id (line 950) | def doc_id(self): method multimedia (line 955) | def multimedia(self): method thumb (line 963) | def thumb(self): method get (line 970) | def get(self, request, *args, **kwargs): function iter_index_files (line 979) | def iter_index_files(app, build_profile_id=None, download_targeted_versi... FILE: corehq/apps/hqwebapp/admin.py class HQOauthApplicationAdmin (line 7) | class HQOauthApplicationAdmin(admin.ModelAdmin): method application_id (line 13) | def application_id(self, obj): method application_name (line 16) | def application_name(self, obj): method application_user (line 19) | def application_user(self, obj): method application_client_type (line 22) | def application_client_type(self, obj): method application_authorization_grant_type (line 25) | def application_authorization_grant_type(self, obj): FILE: corehq/apps/hqwebapp/apps.py class HqWebAppConfig (line 7) | class HqWebAppConfig(AppConfig): method ready (line 10) | def ready(self): function register_two_factor_methods (line 18) | def register_two_factor_methods(): FILE: corehq/apps/hqwebapp/async_handler.py class AsyncHandlerMixin (line 7) | class AsyncHandlerMixin(object): method handler_slug (line 15) | def handler_slug(self): method get_async_handler (line 18) | def get_async_handler(self): method async_response (line 23) | def async_response(self): class AsyncHandlerError (line 28) | class AsyncHandlerError(Exception): class BaseAsyncHandler (line 32) | class BaseAsyncHandler(object): method __init__ (line 53) | def __init__(self, request): method _fmt_error (line 66) | def _fmt_error(self, error): method _fmt_success (line 72) | def _fmt_success(self, data): method get_action_response (line 78) | def get_action_response(self): method get_response (line 84) | def get_response(self): FILE: corehq/apps/hqwebapp/context.py function get_page_context (line 7) | def get_page_context(page_title, page_url, page_name=None, parent_pages=... FILE: corehq/apps/hqwebapp/crispy.py class HQFormHelper (line 20) | class HQFormHelper(FormHelper): method __init__ (line 25) | def __init__(self, *args, **kwargs): class HQModalFormHelper (line 39) | class HQModalFormHelper(FormHelper): class HiddenFieldWithErrors (line 45) | class HiddenFieldWithErrors(Field): class TextField (line 49) | class TextField(Field): method __init__ (line 56) | def __init__(self, field_name, text, *args, **kwargs): method render (line 60) | def render(self, form, context, template_pack=None, **kwargs): class ErrorsOnlyField (line 68) | class ErrorsOnlyField(Field): function get_form_action_class (line 72) | def get_form_action_class(): class FormActions (line 76) | class FormActions(OriginalFormActions): method render (line 82) | def render(self, form, context, template_pack=None, **kwargs): class StaticField (line 99) | class StaticField(LayoutObject): method __init__ (line 102) | def __init__(self, field_label, field_value): method render (line 106) | def render(self, form, context, template_pack=None, **kwargs): class FormStepNumber (line 115) | class FormStepNumber(LayoutObject): method __init__ (line 118) | def __init__(self, step_num, total_steps): method render (line 123) | def render(self, form, context, template_pack=None, **kwargs): class ValidationMessage (line 131) | class ValidationMessage(LayoutObject): method __init__ (line 139) | def __init__(self, ko_observable): method render (line 142) | def render(self, form, context, template_pack=None, **kwargs): function edited_classes (line 151) | def edited_classes(context, label_class, field_class): class B3MultiField (line 163) | class B3MultiField(LayoutObject): method __init__ (line 168) | def __init__(self, field_label, *fields, **kwargs): method render (line 180) | def render(self, form, context, template_pack=None, **kwargs): method _get_errors (line 209) | def _get_errors(self, form, fields): class MultiInlineField (line 227) | class MultiInlineField(InlineField): class CrispyTemplate (line 239) | class CrispyTemplate(object): method __init__ (line 241) | def __init__(self, template, context): method render (line 245) | def render(self, form, context, template_pack=None, **kwargs): class FieldWithExtras (line 250) | class FieldWithExtras(Field): method __init__ (line 253) | def __init__(self, *args, **kwargs): method render (line 259) | def render(self, form, context, template_pack=None, **kwargs): class CheckboxField (line 265) | class CheckboxField(Field): class FieldWithHelpBubble (line 269) | class FieldWithHelpBubble(FieldWithExtras): class FieldWithAddons (line 278) | class FieldWithAddons(FieldWithExtras): class LinkButton (line 293) | class LinkButton(LayoutObject): method __init__ (line 296) | def __init__(self, button_text, button_url, **kwargs): method render (line 309) | def render(self, form, context, template_pack=None, **kwargs): class B3TextField (line 318) | class B3TextField(Field): method __init__ (line 320) | def __init__(self, field_name, text, *args, **kwargs): method render (line 325) | def render(self, form, context, template_pack=None, **kwargs): class FieldsetAccordionGroup (line 340) | class FieldsetAccordionGroup(AccordionGroup): method get_template_name (line 341) | def get_template_name(self, template_pack): class RadioSelect (line 352) | class RadioSelect(Field): class DatetimeLocalWidget (line 356) | class DatetimeLocalWidget(DateTimeInput): function make_form_readonly (line 360) | def make_form_readonly(form): FILE: corehq/apps/hqwebapp/decorators.py function use_bootstrap5 (line 7) | def use_bootstrap5(view_func): function waf_allow (line 24) | def waf_allow(kind, hard_code_pattern=None): function set_request_flag (line 59) | def set_request_flag(view_func, attr_name, attr_value=True): function get_wrapped_view (line 66) | def get_wrapped_view(view_func, request_modifier): function _get_request_from_args (line 76) | def _get_request_from_args(*args, **kwargs): FILE: corehq/apps/hqwebapp/doc_info.py class DomainMismatchException (line 14) | class DomainMismatchException(Exception): class DocInfo (line 18) | class DocInfo(JsonObject): method user_has_permissions (line 28) | def user_has_permissions(self, domain, user, doc): function get_doc_info_by_id (line 37) | def get_doc_info_by_id(domain, id): function get_doc_info (line 53) | def get_doc_info(doc, domain_hint=None, cache=None): function get_doc_info_couch (line 74) | def get_doc_info_couch(doc, domain_hint=None, cache=None): function form_docinfo (line 193) | def form_docinfo(domain, doc_id, is_deleted): function case_docinfo (line 207) | def case_docinfo(domain, doc_id, name, is_deleted): function get_case_url (line 218) | def get_case_url(domain, case_id): function get_commcareuser_url (line 225) | def get_commcareuser_url(domain, user_id): function get_webuser_url (line 232) | def get_webuser_url(domain, user_id): function get_doc_info_sql (line 239) | def get_doc_info_sql(obj, cache=None): function get_object_url (line 282) | def get_object_url(domain, doc_type, doc_id): function _check_form_permissions (line 293) | def _check_form_permissions(domain, user, form): function _check_case_permissions (line 302) | def _check_case_permissions(domain, user, case): FILE: corehq/apps/hqwebapp/doc_lookup.py class LookupResult (line 25) | class LookupResult: method asdict (line 33) | def asdict(self): method get_serialized_doc (line 38) | def get_serialized_doc(self): function lookup_doc_id (line 44) | def lookup_doc_id(doc_id): function lookup_id_in_databases (line 56) | def lookup_id_in_databases(doc_id, dbs, find_first=True): function get_databases (line 87) | def get_databases(): function get_db_from_db_name (line 143) | def get_db_from_db_name(db_name): class _DbWrapper (line 151) | class _DbWrapper(object): method __init__ (line 152) | def __init__(self, dbname, doc_type, serializer): method get (line 157) | def get(self, record_id): method get_context (line 160) | def get_context(self, record_id): method _context_for_doc (line 164) | def _context_for_doc(self, doc_id, doc): class _CouchDb (line 183) | class _CouchDb(_DbWrapper): method __init__ (line 188) | def __init__(self, db): method get (line 193) | def get(self, record_id): function model_to_json (line 197) | def model_to_json(obj): class _SQLDb (line 201) | class _SQLDb(_DbWrapper): method __init__ (line 202) | def __init__(self, dbname, getter, doc_type, serializer=model_to_json): method get (line 206) | def get(self, record_id): function make_uuid_getter (line 213) | def make_uuid_getter(model, id_field="id"): FILE: corehq/apps/hqwebapp/encoders.py class DecimalEncoder (line 8) | class DecimalEncoder(json.JSONEncoder): method default (line 10) | def default(self, obj): class LazyEncoder (line 16) | class LazyEncoder(DecimalEncoder): method default (line 21) | def default(self, obj): FILE: corehq/apps/hqwebapp/exceptions.py class AlreadyRenderedException (line 1) | class AlreadyRenderedException(Exception): class ResourceVersionsNotFoundException (line 5) | class ResourceVersionsNotFoundException(Exception): class TemplateTagJSONException (line 9) | class TemplateTagJSONException(Exception): FILE: corehq/apps/hqwebapp/fields.py class CSVListField (line 6) | class CSVListField(fields.CharField): method to_python (line 11) | def to_python(self, value): method prepare_value (line 16) | def prepare_value(self, value): class MultiCharField (line 22) | class MultiCharField(forms.Field): method __init__ (line 29) | def __init__(self, initial=None, choices=(), *args, **kwargs): method _get_choices (line 37) | def _get_choices(self): method _set_choices (line 40) | def _set_choices(self, value): method run_validators (line 46) | def run_validators(self, value): class MultiEmailField (line 55) | class MultiEmailField(MultiCharField): FILE: corehq/apps/hqwebapp/forms.py class EmailAuthenticationForm (line 26) | class EmailAuthenticationForm(NoAutocompleteMixin, AuthenticationForm): method __init__ (line 33) | def __init__(self, *args, can_select_server=False, **kwargs): method clean_username (line 47) | def clean_username(self): method clean (line 51) | def clean(self): method get_invalid_login_error (line 84) | def get_invalid_login_error(self): class CloudCareAuthenticationForm (line 101) | class CloudCareAuthenticationForm(EmailAuthenticationForm): class BulkUploadForm (line 106) | class BulkUploadForm(forms.Form): method __init__ (line 110) | def __init__(self, plural_noun="", action=None, form_id=None, context=... method crispy_form_fields (line 131) | def crispy_form_fields(self, context): class AppTranslationsBulkUploadForm (line 143) | class AppTranslationsBulkUploadForm(BulkUploadForm): method crispy_form_fields (line 148) | def crispy_form_fields(self, context): class HQAuthenticationTokenForm (line 161) | class HQAuthenticationTokenForm(AuthenticationTokenForm): method __init__ (line 162) | def __init__(self, user, initial_device, request, **kwargs): method clean (line 166) | def clean(self): class HQBackupTokenForm (line 189) | class HQBackupTokenForm(BackupTokenForm): method __init__ (line 191) | def __init__(self, user, initial_device, request, **kwargs): method clean (line 195) | def clean(self): FILE: corehq/apps/hqwebapp/login_handlers.py function handle_failed_login (line 10) | def handle_failed_login(sender, credentials, request, token_failure=Fals... function handle_login (line 15) | def handle_login(sender, request, user, **kwargs): function handle_logout (line 20) | def handle_logout(sender, request, user, **kwargs): function _handle_access_event (line 27) | def _handle_access_event(event_type, request, user_id): FILE: corehq/apps/hqwebapp/login_utils.py function get_custom_login_page (line 4) | def get_custom_login_page(host): FILE: corehq/apps/hqwebapp/management/commands/build_bootstrap5_diffs.py function get_diff_filename (line 34) | def get_diff_filename(filename_bootstrap3, filename_bootstrap5, file_type): function get_renamed_filename (line 46) | def get_renamed_filename(filename): function get_diff (line 50) | def get_diff(file_v1, file_v2): function get_file_contents (line 56) | def get_file_contents(file): function get_bootstrap5_diff_config (line 63) | def get_bootstrap5_diff_config(): function update_bootstrap5_diff_config (line 69) | def update_bootstrap5_diff_config(config): function clear_diffs_folder (line 76) | def clear_diffs_folder(): function get_bootstrap5_filepaths (line 81) | def get_bootstrap5_filepaths(full_diff_config): function get_relative_folder_paths (line 113) | def get_relative_folder_paths(config_path, folders): function get_folder_config (line 118) | def get_folder_config(app_name, path, js_folder=None): function get_parent_path (line 138) | def get_parent_path(app_name, js_folder=None): class Command (line 143) | class Command(BaseCommand): method add_arguments (line 153) | def add_arguments(self, parser): method handle (line 159) | def handle(self, *args, **options): method update_config (line 188) | def update_config(self, config, app_name, js_folder=None): method check_javascript_paths (line 206) | def check_javascript_paths(self, app_name, js_folders): method update_configuration_file_for_app (line 220) | def update_configuration_file_for_app(self, app_name): method show_next_steps_after_config_update (line 244) | def show_next_steps_after_config_update(self, show_build_notice=False): method make_commit (line 262) | def make_commit(self, message): FILE: corehq/apps/hqwebapp/management/commands/complete_bootstrap5_migration.py class Command (line 32) | class Command(BaseCommand): method add_arguments (line 35) | def add_arguments(self, parser): method handle (line 46) | def handle(self, app_name, **options): method mark_app_as_complete (line 66) | def mark_app_as_complete(self, app_name): method mark_file_as_complete (line 88) | def mark_file_as_complete(self, app_name, filename, is_template): method verify_filename_and_get_paths (line 138) | def verify_filename_and_get_paths(self, app_name, filename, relevant_p... method sanitize_bootstrap3_from_filename (line 158) | def sanitize_bootstrap3_from_filename(self, filename): method get_valid_path (line 171) | def get_valid_path(self, app_name, destination_filename, relevant_path... method select_path (line 181) | def select_path(self, app_name, matching_paths, is_template): method un_split_files (line 195) | def un_split_files(self, app_name, bootstrap3_path, bootstrap5_path, d... method apply_un_split_actions_to_files (line 222) | def apply_un_split_actions_to_files(bootstrap3_path, bootstrap5_path, ... method do_bootstrap3_references_exist (line 229) | def do_bootstrap3_references_exist(self, app_name, bootstrap3_short_pa... method update_references_and_print_summary (line 251) | def update_references_and_print_summary(self, app_name, bootstrap5_sho... method optional_display_list (line 274) | def optional_display_list(self, confirmation_message, list_to_display): method suggest_commit_message (line 281) | def suggest_commit_message(self, message, show_apply_commit=False, wor... method show_next_steps (line 293) | def show_next_steps(self, app_name): FILE: corehq/apps/hqwebapp/management/commands/complete_bootstrap5_report.py class Command (line 20) | class Command(BaseCommand): method add_arguments (line 23) | def add_arguments(self, parser): method handle (line 26) | def handle(self, report_class_name, **options): method is_safe_to_migrate_report (line 64) | def is_safe_to_migrate_report(self, report_class_name, migrated_reports): method migrate_report_and_filters (line 88) | def migrate_report_and_filters(self, report_class): method is_filter_migrated_prompts (line 125) | def is_filter_migrated_prompts(self, field, filter_class, migrated_fil... method suggest_commit_message (line 158) | def suggest_commit_message(self, message, show_apply_commit=False): FILE: corehq/apps/hqwebapp/management/commands/copy_required_static_files.py class Command (line 10) | class Command(BaseCommand): method handle (line 14) | def handle(self, *args, **options): FILE: corehq/apps/hqwebapp/management/commands/fix_less_imports_collectstatic.py class Command (line 12) | class Command(BaseCommand): method handle (line 18) | def handle(self, **options): FILE: corehq/apps/hqwebapp/management/commands/generate_webpack_settings.py class Command (line 9) | class Command(BaseCommand): method handle (line 13) | def handle(self, **options): FILE: corehq/apps/hqwebapp/management/commands/generate_widget_translations.py class Command (line 19) | class Command(BaseCommand): method add_arguments (line 22) | def add_arguments(self, parser): method handle (line 30) | def handle(self, *args, **options): method _get_widget_translations (line 59) | def _get_widget_translations(self): FILE: corehq/apps/hqwebapp/management/commands/list_waf_allow_patterns.py class Command (line 9) | class Command(BaseCommand): method handle (line 11) | def handle(self, *args, **options): function _remove_regex_groups (line 30) | def _remove_regex_groups(regex_string): FILE: corehq/apps/hqwebapp/management/commands/migrate_app_to_bootstrap5.py class Command (line 62) | class Command(BaseCommand): method add_arguments (line 67) | def add_arguments(self, parser): method handle (line 92) | def handle(self, app_name, **options): method make_updates_to_gruntfile (line 180) | def make_updates_to_gruntfile(self, app_name, mocha_paths): method show_next_steps (line 200) | def show_next_steps(self, app_name): method show_completed_message (line 225) | def show_completed_message(self, app_name): method _get_files_for_migration (line 236) | def _get_files_for_migration(app_name, files, file_name): method get_templates_for_migration (line 247) | def get_templates_for_migration(self, app_name, selected_filename): method get_js_files_for_migration (line 257) | def get_js_files_for_migration(self, app_name, selected_filename): method migrate_files (line 267) | def migrate_files(self, files, app_name, spec, is_template): method migrate_single_file (line 302) | def migrate_single_file(self, app_name, file_path, spec, is_template, ... method confirm_and_get_line_changes (line 366) | def confirm_and_get_line_changes(self, line_number, old_line, new_line... method display_flag_summary (line 408) | def display_flag_summary(self, changelog): method display_rename_summary (line 415) | def display_rename_summary(self, changelog): method migrate_file_in_place (line 425) | def migrate_file_in_place(self, app_name, file_path, bootstrap5_lines,... method show_next_steps_after_migrating_file_in_place (line 448) | def show_next_steps_after_migrating_file_in_place(self, app_name, shor... method migrate_file_again (line 475) | def migrate_file_again(self, app_name, file_path, bootstrap5_lines, is... method split_files_and_refactor (line 514) | def split_files_and_refactor(self, app_name, file_path, bootstrap3_lin... method save_split_templates (line 561) | def save_split_templates(original_path, bootstrap3_path, bootstrap3_li... method _get_split_files (line 568) | def _get_split_files(self, app_name): method verify_split_references (line 579) | def verify_split_references(self, app_name): method make_template_line_changes (line 616) | def make_template_line_changes(old_line, spec, is_fresh_migration): method get_flags_in_template_line (line 638) | def get_flags_in_template_line(template_line, spec): method make_javascript_line_changes (line 648) | def make_javascript_line_changes(old_line, spec): method get_flags_in_javascript_line (line 653) | def get_flags_in_javascript_line(javascript_line, spec): method get_bootstrap5_path (line 658) | def get_bootstrap5_path(bootstrap3_path): method get_split_file_paths (line 664) | def get_split_file_paths(file_path): method clear_screen (line 671) | def clear_screen(self): method format_code (line 675) | def format_code(code_text, split_lines=False, break_length=80): method format_header (line 686) | def format_header(header_text, break_length=80): method format_guidance (line 691) | def format_guidance(guidance_text, break_length=80): method write_response (line 695) | def write_response(self, response_text): method prompt_user_to_commit_changes (line 699) | def prompt_user_to_commit_changes(self): method suggest_commit_message (line 704) | def suggest_commit_message(self, message, show_apply_commit=False, wor... FILE: corehq/apps/hqwebapp/management/commands/resource_static.py class Command (line 12) | class Command(BaseCommand): method output_resources (line 19) | def output_resources(self, resources, overwrite=True, path=None): method handle (line 31) | def handle(self, **options): method get_hash (line 48) | def get_hash(self, filename): FILE: corehq/apps/hqwebapp/management/commands/show_invalid_bootstrap3_files.py function _is_relevant_path (line 23) | def _is_relevant_path(app_name, path, completed_paths): function _get_bootstrap3_references_from_file (line 30) | def _get_bootstrap3_references_from_file(file_path, is_template): function _get_flagged_files (line 48) | def _get_flagged_files(app_name, paths, is_template): function _get_flagged_templates (line 61) | def _get_flagged_templates(app_name): function _get_flagged_javascript (line 69) | def _get_flagged_javascript(app_name): function get_app_issues (line 77) | def get_app_issues(): class Command (line 97) | class Command(BaseCommand): method handle (line 102) | def handle(self, *args, **options): method show_app_issue_summary (line 128) | def show_app_issue_summary(self, app_name, issues): method format_header (line 145) | def format_header(header_text, break_length=80): method enter_to_continue (line 150) | def enter_to_continue(): FILE: corehq/apps/hqwebapp/management/commands/update_manifest.py class ResourceCompressError (line 16) | class ResourceCompressError(Exception): class Command (line 20) | class Command(BaseCommand): method add_arguments (line 25) | def add_arguments(self, parser): method manifest_file (line 34) | def manifest_file(self): method output_manifest (line 37) | def output_manifest(self, manifest_str, is_soft_update=False): method save_manifest (line 53) | def save_manifest(self): method handle (line 60) | def handle(self, params, **options): FILE: corehq/apps/hqwebapp/migrations/0001_initial.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/hqwebapp/migrations/0002_auto_20171121_1803.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/hqwebapp/migrations/0003_maintenancealert_domains.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/hqwebapp/migrations/0004_apikeysettings.py class Migration (line 10) | class Migration(migrations.Migration): FILE: corehq/apps/hqwebapp/migrations/0005_delete_apikeysettings.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/hqwebapp/migrations/0006_create_user_access_log.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/hqwebapp/migrations/0007_user_access_agent.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/hqwebapp/migrations/0008_hqoauthapplication.py function _populate_hq_oauth_application (line 8) | def _populate_hq_oauth_application(apps, schema_editor): class Migration (line 21) | class Migration(migrations.Migration): FILE: corehq/apps/hqwebapp/migrations/0009_truncate_authtoken_table.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/hqwebapp/migrations/0010_maintenancealert_scheduling.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/hqwebapp/migrations/0011_add_new_columns_and_rename_model.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/hqwebapp/models.py class GaTracker (line 21) | class GaTracker(namedtuple('GaTracking', 'category action label')): method __new__ (line 26) | def __new__(cls, category, action, label=None): class Alert (line 30) | class Alert(models.Model): class Meta (line 44) | class Meta(object): method html (line 49) | def html(self): method save (line 52) | def save(self, *args, **kwargs): method delete (line 57) | def delete(self, *args, **kwargs): method get_active_alerts (line 64) | def get_active_alerts(cls): class UserAgent (line 75) | class UserAgent(models.Model): class UserAccessLog (line 83) | class UserAccessLog(models.Model): method __str__ (line 104) | def __str__(self): class HQOauthApplication (line 108) | class HQOauthApplication(models.Model): function pkce_required (line 117) | def pkce_required(client_id): class ServerLocation (line 125) | class ServerLocation: method get_envs (line 162) | def get_envs(cls): method get_subdomains (line 169) | def get_subdomains(cls): FILE: corehq/apps/hqwebapp/precompilers.py class LessFilter (line 9) | class LessFilter(CompilerFilter): method __init__ (line 11) | def __init__(self, content, attrs, **kwargs): method input (line 16) | def input(self, **kwargs): class SassFilter (line 30) | class SassFilter(CompilerFilter): method __init__ (line 32) | def __init__(self, content, attrs, **kwargs): method input (line 38) | def input(self, **kwargs): FILE: corehq/apps/hqwebapp/session_details_endpoint/tests.py class SessionDetailsViewTest (line 18) | class SessionDetailsViewTest(TestCase): method setUpClass (line 20) | def setUpClass(cls): method setUp (line 40) | def setUp(self): method _assert_session_expiry_in_minutes (line 50) | def _assert_session_expiry_in_minutes(self, expected_minutes, actual_t... method test_session_details_view (line 56) | def test_session_details_view(self): method test_session_details_view_expired_session (line 63) | def test_session_details_view_expired_session(self): method test_session_details_view_updates_session (line 71) | def test_session_details_view_updates_session(self): method test_secure_sessions (line 79) | def test_secure_sessions(self): method test_ping_login_unauth_user (line 130) | def test_ping_login_unauth_user(self): method test_ping_login_auth_user (line 142) | def test_ping_login_auth_user(self): method test_with_hmac_signing (line 184) | def test_with_hmac_signing(self): method test_with_hmac_signing_fail (line 196) | def test_with_hmac_signing_fail(self): method test_session_details_view_toggles (line 210) | def test_session_details_view_toggles(self): function _post_with_hmac (line 221) | def _post_with_hmac(url, data, client=None, **kwargs): FILE: corehq/apps/hqwebapp/session_details_endpoint/views.py class SessionDetailsView (line 25) | class SessionDetailsView(View): method post (line 40) | def post(self, request, *args, **kwargs): FILE: corehq/apps/hqwebapp/signals.py function clear_login_attempts (line 12) | def clear_login_attempts(user): function clear_failed_logins_and_unlock_account (line 23) | def clear_failed_logins_and_unlock_account(sender, request, user, **kwar... function add_failed_attempt (line 31) | def add_failed_attempt(sender, credentials, token_failure=False, **kwargs): FILE: corehq/apps/hqwebapp/static/hqwebapp/js/alpinejs/components/wiggle_button.js method wiggleThatButton (line 46) | wiggleThatButton() { method getWiggleClasses (line 52) | getWiggleClasses() { FILE: corehq/apps/hqwebapp/static/hqwebapp/js/alpinejs/stores/gtx.js method sendEvent (line 18) | sendEvent(name, data = {}) { FILE: corehq/apps/hqwebapp/static/hqwebapp/js/bootstrap3/downgrade_modal.js function snooze (line 9) | function snooze(slug, domain) { function cookieName (line 13) | function cookieName(slug, domain) { FILE: corehq/apps/hqwebapp/static/hqwebapp/js/bootstrap3/email-request.js function isValidEmail (line 94) | function isValidEmail(email) { function isDimagiEmail (line 99) | function isDimagiEmail(email) { function resetErrors (line 103) | function resetErrors() { function hqwebappRequestReportSucccess (line 110) | function hqwebappRequestReportSucccess() { function hqwebappRequestReportError (line 116) | function hqwebappRequestReportError() { FILE: corehq/apps/hqwebapp/static/hqwebapp/js/bootstrap3/main.js function unsupportedBrowser (line 407) | function unsupportedBrowser() { FILE: corehq/apps/hqwebapp/static/hqwebapp/js/bootstrap3/prepaid_modal.js function snooze (line 9) | function snooze(slug, domain) { function cookieName (line 13) | function cookieName(slug, domain) { FILE: corehq/apps/hqwebapp/static/hqwebapp/js/bootstrap3/widgets.js function getGeocoderItem (line 76) | function getGeocoderItem(item) { function getGeocoderValue (line 89) | function getGeocoderValue() { FILE: corehq/apps/hqwebapp/static/hqwebapp/js/bootstrap5/downgrade_modal.js function snooze (line 9) | function snooze(slug, domain) { function cookieName (line 13) | function cookieName(slug, domain) { FILE: corehq/apps/hqwebapp/static/hqwebapp/js/bootstrap5/email-request.js function isValidEmail (line 95) | function isValidEmail(email) { function isDimagiEmail (line 100) | function isDimagiEmail(email) { function resetErrors (line 104) | function resetErrors() { function hqwebappRequestReportSucccess (line 111) | function hqwebappRequestReportSucccess() { function hqwebappRequestReportError (line 117) | function hqwebappRequestReportError() { FILE: corehq/apps/hqwebapp/static/hqwebapp/js/bootstrap5/main.js function unsupportedBrowser (line 410) | function unsupportedBrowser() { FILE: corehq/apps/hqwebapp/static/hqwebapp/js/bootstrap5/prepaid_modal.js function snooze (line 9) | function snooze(slug, domain) { function cookieName (line 13) | function cookieName(slug, domain) { FILE: corehq/apps/hqwebapp/static/hqwebapp/js/bootstrap5/widgets.js function getGeocoderItem (line 74) | function getGeocoderItem(item) { function getGeocoderValue (line 87) | function getGeocoderValue() { FILE: corehq/apps/hqwebapp/static/hqwebapp/js/components/rich_text_knockout_bindings.js function extractImages (line 30) | function extractImages(html) { function deleteUnusedImages (line 49) | function deleteUnusedImages(editor, newImages) { function uploadAndInsertImage (line 75) | async function uploadAndInsertImage(file, editor, options = {}) { function imageHandler (line 138) | function imageHandler() { function linkHandler (line 169) | async function linkHandler(value) { function updateListType (line 229) | function updateListType(element, level) { function deltaToHtml (line 250) | function deltaToHtml(delta) { FILE: corehq/apps/hqwebapp/static/hqwebapp/js/constants.js constant EMAIL_VALIDATION_REGEX (line 2) | const EMAIL_VALIDATION_REGEX = /(?:[A-Za-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[... FILE: corehq/apps/hqwebapp/static/hqwebapp/js/htmx_base.js constant HTTP_BAD_GATEWAY (line 37) | const HTTP_BAD_GATEWAY = 504; constant HTTP_REQUEST_TIMEOUT (line 38) | const HTTP_REQUEST_TIMEOUT = 408; FILE: corehq/apps/hqwebapp/static/hqwebapp/js/htmx_utils/errors.js constant DEFAULT_MODAL_ID (line 3) | const DEFAULT_MODAL_ID = 'htmxRequestErrorModal'; FILE: corehq/apps/hqwebapp/static/hqwebapp/js/htmx_utils/retry_request.js constant DEFAULT_MAX_RETRIES (line 3) | const DEFAULT_MAX_RETRIES = 20; constant RETRY_HEADER (line 4) | const RETRY_HEADER = 'HQ-HX-Retry'; FILE: corehq/apps/hqwebapp/static/hqwebapp/js/initial_page_data.js function clear (line 118) | function clear() { FILE: corehq/apps/hqwebapp/tables/columns.py class DateTimeStringColumn (line 11) | class DateTimeStringColumn(columns.Column): method __init__ (line 16) | def __init__(self, *args, timezone=pytz.UTC, phonetime=False, **kwargs): method render (line 21) | def render(self, value): FILE: corehq/apps/hqwebapp/tables/elasticsearch/records.py class BaseElasticRecord (line 12) | class BaseElasticRecord(ABC): method __init__ (line 14) | def __init__(self, record, request, **kwargs): method __repr__ (line 18) | def __repr__(self): method __getitem__ (line 21) | def __getitem__(self, item): method verbose_name (line 26) | def verbose_name(self): method verbose_name_plural (line 35) | def verbose_name_plural(self): method record_id (line 44) | def record_id(self): method get_sorted_query (line 52) | def get_sorted_query(query, accessors): class CaseSearchElasticRecord (line 71) | class CaseSearchElasticRecord(BaseElasticRecord): method __init__ (line 75) | def __init__(self, record, request, **kwargs): method __getitem__ (line 82) | def __getitem__(self, item): method name (line 86) | def name(self): method record_id (line 94) | def record_id(self): method get_sorted_query (line 103) | def get_sorted_query(query, accessors): class UserElasticRecord (line 113) | class UserElasticRecord(BaseElasticRecord): method __init__ (line 117) | def __init__(self, record, request, **kwargs): method __getitem__ (line 122) | def __getitem__(self, item): method name (line 126) | def name(self): method record_id (line 134) | def record_id(self): method get_sorted_query (line 143) | def get_sorted_query(query, accessors): FILE: corehq/apps/hqwebapp/tables/elasticsearch/tables.py class ElasticTable (line 15) | class ElasticTable(tables.Table): method __init__ (line 69) | def __init__(self, record_kwargs=None, **kwargs): class ElasticTableData (line 80) | class ElasticTableData(TableData): method __init__ (line 90) | def __init__(self, query, record_kwargs): method __getitem__ (line 96) | def __getitem__(self, key): method _get_records (line 101) | def _get_records(self, start, stop): method validate (line 112) | def validate(data): method set_table (line 118) | def set_table(self, table): method __len__ (line 128) | def __len__(self): method _total_records (line 135) | def _total_records(self): method get_total_records_in_query (line 139) | def get_total_records_in_query(cls, query): method get_all_records (line 149) | def get_all_records(self): method get_es_results (line 154) | def get_es_results(query): method order_by (line 165) | def order_by(self, aliases): method verbose_name (line 197) | def verbose_name(self): method verbose_name_plural (line 205) | def verbose_name_plural(self): FILE: corehq/apps/hqwebapp/tables/export.py class TableExportException (line 21) | class TableExportException(Exception): class TableExportConfig (line 25) | class TableExportConfig: method get_export_sheet_name (line 47) | def get_export_sheet_name(self): method get_export_format (line 51) | def get_export_format(self): method _validate_export_format (line 56) | def _validate_export_format(self, export_format): method config_as_dict (line 64) | def config_as_dict(self): class TableExportMixin (line 68) | class TableExportMixin(TableExportConfig, SingleTableMixin): method export_to_file (line 85) | def export_to_file(self): method _export_table_data (line 91) | def _export_table_data(self): method get_table_for_export (line 99) | def get_table_for_export(self): method export_table_context (line 113) | def export_table_context(self, table): method trigger_export (line 119) | def trigger_export(self, recipient_list=None, subject=None): method _validate_export_dependencies (line 129) | def _validate_export_dependencies(self): method _get_export_context (line 135) | def _get_export_context(self): method get_report_title (line 147) | def get_report_title(self): method reconstruct_from_export_context (line 151) | def reconstruct_from_export_context(cls, context): FILE: corehq/apps/hqwebapp/tables/htmx.py class BaseHtmxTable (line 6) | class BaseHtmxTable(tables.Table): method __init__ (line 38) | def __init__(self, *args, **kwargs): class Meta (line 46) | class Meta: FILE: corehq/apps/hqwebapp/tables/pagination.py class SelectablePaginator (line 8) | class SelectablePaginator(Paginator): class SelectablePaginatedTableMixin (line 13) | class SelectablePaginatedTableMixin(SingleTableMixin): method paginate_by_cookie_slug (line 24) | def paginate_by_cookie_slug(self): method default_paginate_by (line 29) | def default_paginate_by(self): method current_paginate_by (line 36) | def current_paginate_by(self): method get_paginate_by (line 39) | def get_paginate_by(self, table_data): class HtmxInvalidPageRedirectMixin (line 43) | class HtmxInvalidPageRedirectMixin: method paginate_queryset (line 61) | def paginate_queryset(self, queryset, page_size): method get_host_url (line 70) | def get_host_url(self): method get_first_page (line 82) | def get_first_page(self, request, *args, **kwargs): method get (line 104) | def get(self, request, *args, **kwargs): class SelectablePaginatedTableView (line 111) | class SelectablePaginatedTableView(SelectablePaginatedTableMixin, ListVi... method get (line 118) | def get(self, request, *args, **kwargs): FILE: corehq/apps/hqwebapp/tables/tests/test_columns.py class SimpleTable (line 9) | class SimpleTable(Table): class TestDateTimeStringColumn (line 15) | class TestDateTimeStringColumn(SimpleTestCase): method test_default (line 17) | def test_default(self): method test_with_timezone (line 22) | def test_with_timezone(self): method test_with_phonetime (line 27) | def test_with_phonetime(self): method test_invalid_datetime (line 32) | def test_invalid_datetime(self): FILE: corehq/apps/hqwebapp/tables/tests/test_export.py class DummyTable (line 31) | class DummyTable(tables.Table): class BaseTestView (line 36) | class BaseTestView(TableExportMixin): method __init__ (line 41) | def __init__(self, **kwargs): class TableDataView (line 49) | class TableDataView(BaseTestView): class ObjectListView (line 57) | class ObjectListView(BaseTestView): method object_list (line 60) | def object_list(self): class DummyModel (line 68) | class DummyModel(models.Model): class Meta (line 72) | class Meta: class QuerysetView (line 76) | class QuerysetView(BaseTestView): method get_queryset (line 78) | def get_queryset(self): method fake_queryset (line 86) | def fake_queryset(objs): class DummyElasticTable (line 93) | class DummyElasticTable(DummyTable, ElasticTable): class ElasticTableView (line 97) | class ElasticTableView(BaseTestView): method get_queryset (line 100) | def get_queryset(self): class BaseCaseSearchTestSetup (line 105) | class BaseCaseSearchTestSetup(TestCase): method setUpClass (line 109) | def setUpClass(cls): method tearDownClass (line 139) | def tearDownClass(cls): class TestTableExportMixinExportData (line 146) | class TestTableExportMixinExportData(BaseCaseSearchTestSetup): method _assert_for_sheet_and_rows (line 148) | def _assert_for_sheet_and_rows(self, view, sheet_name, rows_list): method test_with_table_data_attribute (line 155) | def test_with_table_data_attribute(self): method test_with_object_list_attribute (line 160) | def test_with_object_list_attribute(self): method test_with_get_queryset_method (line 165) | def test_with_get_queryset_method(self): method test_with_exclude_columns (line 170) | def test_with_exclude_columns(self): method test_with_elastic_table (line 179) | def test_with_elastic_table(self): class TestTableExportMixinTriggerExport (line 190) | class TestTableExportMixinTriggerExport(TestCase): method test_trigger_export_with_table_data (line 193) | def test_trigger_export_with_table_data(self, *args): method test_trigger_export_with_object_list (line 202) | def test_trigger_export_with_object_list(self, *args): method test_trigger_export_with_get_queryset (line 211) | def test_trigger_export_with_get_queryset(self, *args): method test_trigger_export_without_table_class (line 219) | def test_trigger_export_without_table_class(self): method test_trigger_export_without_request (line 229) | def test_trigger_export_without_request(self): method test_trigger_export_with_invalid_export_format (line 240) | def test_trigger_export_with_invalid_export_format(self, *args): FILE: corehq/apps/hqwebapp/tasks.py function mark_subevent_gateway_error (line 40) | def mark_subevent_gateway_error(messaging_event_id, error, retrying=False): function send_mail_async (line 59) | def send_mail_async(self, subject, message, recipient_list, from_email=s... function send_html_email_async (line 149) | def send_html_email_async(self, subject, recipient, html_content, function mail_admins_async (line 201) | def mail_admins_async(self, subject, message, fail_silently=False, conne... function process_bounced_emails (line 218) | def process_bounced_emails(): function alert_bounced_system_emails (line 236) | def alert_bounced_system_emails(): function clean_expired_transient_emails (line 253) | def clean_expired_transient_emails(): function clear_expired_oauth_tokens (line 268) | def clear_expired_oauth_tokens(): function send_domain_ucr_data_info_to_admins (line 274) | def send_domain_ucr_data_info_to_admins(): function send_stale_case_data_info_to_admins (line 322) | def send_stale_case_data_info_to_admins(): function export_all_rows_task (line 374) | def export_all_rows_task(class_path, export_context, recipient_list=None... FILE: corehq/apps/hqwebapp/templatetags/hq_shared_tags.py function JSON (line 36) | def JSON(obj): function escape_script_tags (line 48) | def escape_script_tags(unsafe_str): function BOOL (line 54) | def BOOL(obj): function dict_lookup (line 64) | def dict_lookup(dict, key): function add_days (line 70) | def add_days(date, days=1): function pp_json (line 87) | def pp_json(data): function static (line 96) | def static(url): function cachebuster (line 107) | def cachebuster(url): function domains_for_user (line 112) | def domains_for_user(context, request, selected_domain=None): function listsort (line 149) | def listsort(value): function get_attribute (line 169) | def get_attribute(obj, arg): function pretty_doc_info (line 178) | def pretty_doc_info(doc_info): function _get_obj_from_name_or_instance (line 184) | def _get_obj_from_name_or_instance(module, name_or_instance): function _toggle_enabled (line 194) | def _toggle_enabled(module, request, toggle_or_toggle_name): function toggle_enabled (line 200) | def toggle_enabled(request, toggle_or_toggle_name): function _ui_notify_enabled (line 205) | def _ui_notify_enabled(module, request, ui_notify_instance_or_name): function ui_notify_enabled (line 211) | def ui_notify_enabled(request, ui_notify_instance_or_name): function ui_notify_slug (line 221) | def ui_notify_slug(ui_notify_instance_or_name): function can_use_restore_as (line 228) | def can_use_restore_as(request): function css_label_class (line 244) | def css_label_class(): function css_field_class (line 250) | def css_field_class(): function css_action_class (line 256) | def css_action_class(): function feature_preview_enabled (line 271) | def feature_preview_enabled(request, toggle_name): function parse_literal (line 276) | def parse_literal(value, parser, tag): function case (line 288) | def case(parser, token): class CaseNode (line 347) | class CaseNode(template.Node): method __init__ (line 349) | def __init__(self, lookup_expr, branches, default): method render (line 354) | def render(self, context): function do_captureas (line 364) | def do_captureas(parser, token): class CaptureasNode (line 380) | class CaptureasNode(template.Node): method __init__ (line 382) | def __init__(self, nodelist, varname): method render (line 386) | def render(self, context): function chevron (line 393) | def chevron(value): function commcarehq_alerts (line 408) | def commcarehq_alerts(request): function prelogin_url (line 425) | def prelogin_url(urlname): function addtoblock (line 438) | def addtoblock(parser, token): function appending_block (line 450) | def appending_block(parser, token): function include_aware_block (line 461) | def include_aware_block(parser, token): class AddToBlockNode (line 471) | class AddToBlockNode(template.Node): method __init__ (line 473) | def __init__(self, nodelist, block_name): method write (line 477) | def write(self, context, text): method render (line 486) | def render(self, context): method get_addtoblock_contents_dict (line 492) | def get_addtoblock_contents_dict(context): class AppendingBlockNode (line 500) | class AppendingBlockNode(loader_tags.BlockNode): method render (line 502) | def render(self, context): method get_rendered_blocks_dict (line 517) | def get_rendered_blocks_dict(context): class IncludeAwareNode (line 525) | class IncludeAwareNode(loader_tags.IncludeNode): method render (line 527) | def render(self, context): method get_include_count (line 535) | def get_include_count(context): function url_replace (line 544) | def url_replace(context, field, value): function view_pdb (line 557) | def view_pdb(element): function is_new_user (line 564) | def is_new_user(user): function registerurl (line 571) | def registerurl(parser, original_token): function trans_html_attr (line 593) | def trans_html_attr(value): function html_attr (line 602) | def html_attr(value): function language_name_local (line 611) | def language_name_local(lang_code): function _create_page_data (line 623) | def _create_page_data(parser, original_token, node_slug): function initial_page_data (line 650) | def initial_page_data(parser, token): function initial_analytics_data (line 655) | def initial_analytics_data(parser, token): function analytics_ab_test (line 660) | def analytics_ab_test(parser, token): function _bundler_main (line 664) | def _bundler_main(parser, token, flag, node_class): function js_entry (line 691) | def js_entry(parser, token): function js_entry_b3 (line 706) | def js_entry_b3(parser, token): class WebpackMainNode (line 714) | class WebpackMainNode(template.Node): method __init__ (line 716) | def __init__(self, name, value): method __repr__ (line 721) | def __repr__(self): method render (line 724) | def render(self, context): function webpack_bundles (line 733) | def webpack_bundles(entry_name): function bootstrap_form_errors (line 784) | def bootstrap_form_errors(form): function breadcrumbs (line 789) | def breadcrumbs(page, section, parents=None): function request_has_privilege (line 812) | def request_has_privilege(request, privilege_name): function to_user_time (line 820) | def to_user_time(dt, request): FILE: corehq/apps/hqwebapp/templatetags/hq_tables_tags.py function render_header (line 7) | def render_header(context, link_type=None): FILE: corehq/apps/hqwebapp/templatetags/proptable_tags.py class DisplayProcessor (line 35) | class DisplayProcessor(collections.namedtuple("DisplayProcessor", "proce... method __call__ (line 36) | def __call__(self, value, data): function _is_list_like (line 51) | def _is_list_like(val): function _parse_date_or_datetime (line 55) | def _parse_date_or_datetime(val): function _format_slug_string_for_display (line 86) | def _format_slug_string_for_display(key): function _to_html (line 90) | def _to_html(val, key=None, level=0): class DisplayConfig (line 144) | class DisplayConfig: method _validate_process (line 169) | def _validate_process(self, attribute, value): function get_display_data (line 175) | def get_display_data(data: dict, prop_def: DisplayConfig, timezone=pytz.... function _get_expr_name (line 209) | def _get_expr_name(prop_def: DisplayConfig): function eval_expr (line 216) | def eval_expr(expr, dict_data): function get_table_as_rows (line 228) | def get_table_as_rows(data, definition, timezone=pytz.utc): FILE: corehq/apps/hqwebapp/templatetags/tests/test_tag.py function template_dirs (line 14) | def template_dirs(*relative_dirs): class TagTest (line 27) | class TagTest(SimpleTestCase): method _normalize_whitespace (line 30) | def _normalize_whitespace(string): method _render_template (line 34) | def _render_template(template_string, context=None): method render (line 38) | def render(cls, template_string, context=None): method _get_file (line 43) | def _get_file(*args): method _test (line 47) | def _test(self, filename, context, rendered_filename=None): method test_initial_page_data (line 61) | def test_initial_page_data(self): method test_registerurl (line 74) | def test_registerurl(self): method test_js_entry (line 80) | def test_js_entry(self): method test_js_entry_no_arg (line 91) | def test_js_entry_no_arg(self): method test_js_entry_in_context (line 103) | def test_js_entry_in_context(self): method test_js_entry_multiple_tags (line 119) | def test_js_entry_multiple_tags(self): method test_js_entry_too_short (line 128) | def test_js_entry_too_short(self): method test_js_entry_bad_string (line 136) | def test_js_entry_bad_string(self): method test_js_entry_mismatched_delimiter (line 144) | def test_js_entry_mismatched_delimiter(self): FILE: corehq/apps/hqwebapp/tests/tables/generator.py function get_case_blocks (line 10) | def get_case_blocks(): FILE: corehq/apps/hqwebapp/tests/tables/test_elastic_records.py class CaseSearchElasticRecordTests (line 17) | class CaseSearchElasticRecordTests(TestCase): method setUpClass (line 21) | def setUpClass(cls): method tearDownClass (line 31) | def tearDownClass(cls): method test_sorting_by_name (line 36) | def test_sorting_by_name(self): method test_sorting_by_case_id (line 45) | def test_sorting_by_case_id(self): method test_sorting_by_case_property (line 52) | def test_sorting_by_case_property(self): method _get_hit_from_query (line 97) | def _get_hit_from_query(query, index): method test_get_reserved_property (line 100) | def test_get_reserved_property(self): method test_get_non_existing_property (line 111) | def test_get_non_existing_property(self): method test_get_property (line 117) | def test_get_property(self): method test_get_name (line 123) | def test_get_name(self): FILE: corehq/apps/hqwebapp/tests/tables/test_elastic_tables.py class ElasticTableTests (line 19) | class ElasticTableTests(TestCase): method setUpClass (line 23) | def setUpClass(cls): method tearDownClass (line 53) | def tearDownClass(cls): method test_order_by_alias_to_accessor (line 58) | def test_order_by_alias_to_accessor(self): method test_slicing_and_data (line 74) | def test_slicing_and_data(self): method test_get_single_record_returns_object (line 86) | def test_get_single_record_returns_object(self): method test_get_out_of_bounds_record_raises_index_error (line 97) | def test_get_out_of_bounds_record_raises_index_error(self): method test_data_length (line 107) | def test_data_length(self): FILE: corehq/apps/hqwebapp/tests/test_apps.py class RegisterCustom2FAMethodsTests (line 18) | class RegisterCustom2FAMethodsTests(SimpleTestCase): method test_custom_generator_method_is_registered (line 25) | def test_custom_generator_method_is_registered(self): method test_custom_call_method_is_registered_if_relevant_settings_are_true (line 31) | def test_custom_call_method_is_registered_if_relevant_settings_are_tru... method test_custom_sms_method_is_registered_if_relevant_settings_are_true (line 37) | def test_custom_sms_method_is_registered_if_relevant_settings_are_true... method test_neither_phone_method_is_registered_if_allow_phone_setting_is_false (line 43) | def test_neither_phone_method_is_registered_if_allow_phone_setting_is_... FILE: corehq/apps/hqwebapp/tests/test_bootstrap5_diffs.py function test_that_diffs_of_migrated_files_match_expected_outputs (line 38) | def test_that_diffs_of_migrated_files_match_expected_outputs(): function test_get_parent_path_for_templates (line 61) | def test_get_parent_path_for_templates(): function test_get_parent_path_for_javascript (line 66) | def test_get_parent_path_for_javascript(): function test_get_relative_folder_paths (line 71) | def test_get_relative_folder_paths(): function test_get_relative_folder_paths_gets_relevant_paths_only (line 85) | def test_get_relative_folder_paths_gets_relevant_paths_only(): function test_get_folder_config_for_templates (line 99) | def test_get_folder_config_for_templates(): function test_get_folder_config_for_javascript (line 112) | def test_get_folder_config_for_javascript(): FILE: corehq/apps/hqwebapp/tests/test_bootstrap5_migrated_apps.py function _display_app_issues (line 38) | def _display_app_issues(app_issues): function test_that_new_templates_added_to_migrated_apps_are_not_bootstrap3 (line 50) | def test_that_new_templates_added_to_migrated_apps_are_not_bootstrap3(): FILE: corehq/apps/hqwebapp/tests/test_bug_report_email.py class BugReportEmailTest (line 11) | class BugReportEmailTest(SimpleTestCase): method test_simple (line 14) | def test_simple(self, mock_Domain_get_by_name): FILE: corehq/apps/hqwebapp/tests/test_compress_command.py class TestDjangoCompressOffline (line 25) | class TestDjangoCompressOffline(SimpleTestCase): method _assert_valid_import (line 27) | def _assert_valid_import(self, line, filename): method test_compress_offline (line 34) | def test_compress_offline(self): FILE: corehq/apps/hqwebapp/tests/test_csrf_middleware.py class TestCSRF (line 10) | class TestCSRF(TestCase): method setUpClass (line 13) | def setUpClass(cls): method tearDownClass (line 24) | def tearDownClass(cls): method test_csrf_ON (line 29) | def test_csrf_ON(self): method _form_post_with_and_without_csrf (line 34) | def _form_post_with_and_without_csrf(self): FILE: corehq/apps/hqwebapp/tests/test_custom_login_page.py class TestCustomLogin (line 6) | class TestCustomLogin(SimpleTestCase): method test_nothing_configured (line 9) | def test_nothing_configured(self): method test_string_configured (line 13) | def test_string_configured(self): method test_dict_match (line 17) | def test_dict_match(self): method test_dict_mismatch (line 21) | def test_dict_mismatch(self): method test_dict_default (line 26) | def test_dict_default(self): FILE: corehq/apps/hqwebapp/tests/test_decorators.py function filter_decorators (line 10) | def filter_decorators(obj): class TestDecorators (line 17) | class TestDecorators(SimpleTestCase): method setUp (line 19) | def setUp(self): method test_use_bootstrap5 (line 22) | def test_use_bootstrap5(self): method test_flag_decorators__function_view (line 34) | def test_flag_decorators__function_view(self, decorator): method test_flag_decorators__cls_view (line 45) | def test_flag_decorators__cls_view(self, decorator): method _dummy_cls_view (line 50) | def _dummy_cls_view(self, request): FILE: corehq/apps/hqwebapp/tests/test_default_landing_page.py class TestDefaultLandingPages (line 24) | class TestDefaultLandingPages(TestCase): method setUpClass (line 27) | def setUpClass(cls): method _make_web_user (line 53) | def _make_web_user(self, username, role=None, override_domain=None): method _make_commcare_user (line 62) | def _make_commcare_user(self, username, role=None, override_domain=None): method tearDownClass (line 72) | def tearDownClass(cls): method test_no_role_cant_access (line 75) | def test_no_role_cant_access(self): method test_formplayer_default_override (line 84) | def test_formplayer_default_override(self): function test_web_user_landing_page (line 105) | def test_web_user_landing_page(self, role, expected_urlname, privilege=N... function test_mobile_worker_landing_page (line 128) | def test_mobile_worker_landing_page(self, role, expected_urlname, privil... FILE: corehq/apps/hqwebapp/tests/test_doc_info.py class TestDocInfo (line 16) | class TestDocInfo(TestCase): method setUpClass (line 18) | def setUpClass(cls): method test_couch_user (line 23) | def test_couch_user(self): method test_web_user (line 28) | def test_web_user(self): method test_location (line 33) | def test_location(self): method test_group (line 47) | def test_group(self): method test_case_group (line 53) | def test_case_group(self): method test_sql_case (line 59) | def test_sql_case(self): method test_sql_form (line 63) | def test_sql_form(self): method _make_form_and_case (line 67) | def _make_form_and_case(self): method _test_doc (line 80) | def _test_doc(self, doc_id, doc_type): FILE: corehq/apps/hqwebapp/tests/test_forms.py class HQAuthenticationTokenFormTests (line 14) | class HQAuthenticationTokenFormTests(SimpleTestCase): method setUp (line 15) | def setUp(self): method setUp_mocks (line 19) | def setUp_mocks(self): method begin_login_attempt (line 25) | def begin_login_attempt(self): method create_form_with_invalid_token (line 35) | def create_form_with_invalid_token(self, user, request): method test_failed_authentication_sends_fully_formed_signal (line 39) | def test_failed_authentication_sends_fully_formed_signal(self, mock_si... class HQBackupTokenFormTests (line 51) | class HQBackupTokenFormTests(SimpleTestCase): method setUp (line 52) | def setUp(self): method setUp_mocks (line 56) | def setUp_mocks(self): method begin_login_attempt (line 62) | def begin_login_attempt(self): method create_form_with_invalid_token (line 72) | def create_form_with_invalid_token(self, user, request): method test_failed_clean_sends_fully_formed_signal (line 76) | def test_failed_clean_sends_fully_formed_signal(self, mock_signal): class TestEmailAuthenticationFormValidationError (line 88) | class TestEmailAuthenticationFormValidationError(TestCase): method create_form (line 89) | def create_form(self, request=None, can_select_server=None): method run_form_and_assert (line 100) | def run_form_and_assert( method test_cloud_location_message_when_at_attempts_const (line 111) | def test_cloud_location_message_when_at_attempts_const(self): method test_original_message_when_below_attempts_const (line 121) | def test_original_message_when_below_attempts_const(self): method test_original_message_if_not_can_select_server (line 131) | def test_original_message_if_not_can_select_server(self): method test_original_message_if_no_request_object (line 141) | def test_original_message_if_no_request_object(self): method test_increments_login_attempts_on_failure (line 148) | def test_increments_login_attempts_on_failure(self): FILE: corehq/apps/hqwebapp/tests/test_hq_shared_tags.py class TestCaseTag (line 6) | class TestCaseTag(TestCase): method test_basic_case (line 8) | def test_basic_case(self): method test_second_case (line 15) | def test_second_case(self): method test_missing_case_without_else (line 24) | def test_missing_case_without_else(self): method test_else (line 29) | def test_else(self): method test_multi_value_initial_case (line 40) | def test_multi_value_initial_case(self): method test_multi_value_inner_case (line 48) | def test_multi_value_inner_case(self): method test_duplicate_case (line 56) | def test_duplicate_case(self): method test_too_few_initial_args (line 62) | def test_too_few_initial_args(self): method test_too_few_inner_args (line 69) | def test_too_few_inner_args(self): method test_initial_expression_value (line 75) | def test_initial_expression_value(self): method test_inner_expression_value (line 81) | def test_inner_expression_value(self): method test_else_with_args (line 87) | def test_else_with_args(self): method test_endcase_with_args (line 93) | def test_endcase_with_args(self): function render (line 100) | def render(template, **context): FILE: corehq/apps/hqwebapp/tests/test_login_handlers.py class TestLoginAccessHandler (line 10) | class TestLoginAccessHandler(TestCase): method test_missing_user_agent_is_set_as_empty (line 11) | def test_missing_user_agent_is_set_as_empty(self): method test_missing_request_logs_empty_attributes (line 20) | def test_missing_request_logs_empty_attributes(self): class TestHandleLogin (line 29) | class TestHandleLogin(TestCase): method test_login_stores_correct_fields_in_database (line 31) | def test_login_stores_correct_fields_in_database(self): class TestHandleLogout (line 48) | class TestHandleLogout(TestCase): method setUp (line 49) | def setUp(self): method test_logout_stores_correct_fields_in_database (line 54) | def test_logout_stores_correct_fields_in_database(self): method test_no_user_is_logged_with_empty_user_id (line 68) | def test_no_user_is_logged_with_empty_user_id(self): class TestHandleFailedLogin (line 75) | class TestHandleFailedLogin(TestCase): method test_logout_stores_correct_fields_in_database (line 77) | def test_logout_stores_correct_fields_in_database(self): FILE: corehq/apps/hqwebapp/tests/test_models.py class TestAlerts (line 7) | class TestAlerts(TestCase): method test_creates_alert (line 8) | def test_creates_alert(self): method test_wraps_alert_links (line 19) | def test_wraps_alert_links(self): method test_shows_alerts_on_schedule (line 26) | def test_shows_alerts_on_schedule(self): method test_shows_alerts_without_schedule (line 50) | def test_shows_alerts_without_schedule(self): class TestUserAccessLogManager (line 61) | class TestUserAccessLogManager(TestCase): method get_kwargs (line 63) | def get_kwargs(**kwargs): method test_create_generates_record (line 77) | def test_create_generates_record(self): method test_create_generates_record_in_database (line 89) | def test_create_generates_record_in_database(self): method test_creates_user_agent_in_separate_table (line 96) | def test_creates_user_agent_in_separate_table(self): method test_user_agent_is_truncated (line 103) | def test_user_agent_is_truncated(self): class TestServerLocation (line 113) | class TestServerLocation(SimpleTestCase): method test_available_prod_environments (line 114) | def test_available_prod_environments(self): method test_get_subdomains (line 117) | def test_get_subdomains(self): method test_india_server_configuration (line 124) | def test_india_server_configuration(self): method test_eu_server_configuration (line 133) | def test_eu_server_configuration(self): method test_prod_server_configuration (line 142) | def test_prod_server_configuration(self): method test_staging_configuration_is_present_for_debug_environments (line 152) | def test_staging_configuration_is_present_for_debug_environments(self): method test_staging_subdomain_is_present_for_debug_environments (line 162) | def test_staging_subdomain_is_present_for_debug_environments(self): FILE: corehq/apps/hqwebapp/tests/test_password_lockout.py class PasswordLockoutTest (line 8) | class PasswordLockoutTest(TestCase): method setUp (line 10) | def setUp(self): method tearDown (line 16) | def tearDown(self): method test_login_lockout (line 20) | def test_login_lockout(self): FILE: corehq/apps/hqwebapp/tests/test_proptable_tags.py class CaseDisplayDataTest (line 12) | class CaseDisplayDataTest(SimpleTestCase): method test_get_display_data_name (line 14) | def test_get_display_data_name(self): method test_get_display_data_no_name (line 27) | def test_get_display_data_no_name(self): method test_get_display_data_function (line 40) | def test_get_display_data_function(self): method test_get_display_data_history (line 55) | def test_get_display_data_history(self): method test_get_display_data_format (line 66) | def test_get_display_data_format(self): method test_get_display_process_yesno (line 77) | def test_get_display_process_yesno(self): method test_get_display_process_docinfo (line 89) | def test_get_display_process_docinfo(self, get_doc_info_by_id): method test_get_display_process_date (line 107) | def test_get_display_process_date(self): method test_get_display_process_phonetime (line 124) | def test_get_display_process_phonetime(self): method test_get_display_data_blank (line 140) | def test_get_display_data_blank(self): class ToHTMLTest (line 152) | class ToHTMLTest(SimpleTestCase): method test_handles_single_value (line 153) | def test_handles_single_value(self): method test_converts_none_to_dashes (line 156) | def test_converts_none_to_dashes(self): method test_single_values_are_escaped (line 159) | def test_single_values_are_escaped(self): method test_handles_list (line 162) | def test_handles_list(self): method test_list_key_and_value_are_escaped (line 171) | def test_list_key_and_value_are_escaped(self): method test_handles_dict (line 178) | def test_handles_dict(self): method test_dict_key_and_values_are_escaped (line 186) | def test_dict_key_and_values_are_escaped(self): method test_handles_date (line 193) | def test_handles_date(self): method test_handles_datetime (line 197) | def test_handles_datetime(self): FILE: corehq/apps/hqwebapp/tests/test_signals.py class FakeUser (line 14) | class FakeUser(CouchUser): method __init__ (line 15) | def __init__(self, is_web_user=True, **kwargs): method save (line 19) | def save(self): class TestFailedLoginSignal (line 23) | class TestFailedLoginSignal(TestCase): method setUp (line 24) | def setUp(self): method test_failed_login_increments_failure_count (line 28) | def test_failed_login_increments_failure_count(self): method test_resets_login_failures_daily (line 38) | def test_resets_login_failures_daily(self): method test_failed_logins_increment_count_beyond_max (line 49) | def test_failed_logins_increment_count_beyond_max(self): method test_resource_conflict_on_save_is_handled (line 59) | def test_resource_conflict_on_save_is_handled(self): FILE: corehq/apps/hqwebapp/tests/test_sso_enforced_login.py class TestHQLoginViewWithSso (line 19) | class TestHQLoginViewWithSso(TestCase): method setUpClass (line 22) | def setUpClass(cls): method _get_login_response (line 61) | def _get_login_response(self, username): method _get_sso_login_status_response (line 71) | def _get_sso_login_status_response(self, username): method test_get_context_has_sso_enabled_when_sso_is_enforced (line 80) | def test_get_context_has_sso_enabled_when_sso_is_enforced(self): method test_get_context_has_sso_disabled_when_sso_is_not_enforced (line 89) | def test_get_context_has_sso_disabled_when_sso_is_not_enforced(self): method test_login_works_if_sso_not_enforced (line 98) | def test_login_works_if_sso_not_enforced(self): method test_login_is_redirected_if_sso_is_enforced (line 111) | def test_login_is_redirected_if_sso_is_enforced(self): method test_login_works_for_non_sso_users_when_sso_is_enforced (line 124) | def test_login_works_for_non_sso_users_when_sso_is_enforced(self): method test_login_works_for_sso_exempt_users_when_sso_is_enforced (line 137) | def test_login_works_for_sso_exempt_users_when_sso_is_enforced(self): method test_check_sso_login_status_for_non_sso_user (line 149) | def test_check_sso_login_status_for_non_sso_user(self): method test_check_sso_login_status_for_sso_user (line 165) | def test_check_sso_login_status_for_sso_user(self): method test_check_sso_login_status_for_sso_exempt_user (line 181) | def test_check_sso_login_status_for_sso_exempt_user(self): class TestEmailAuthenticationFormWithSso (line 198) | class TestEmailAuthenticationFormWithSso(TestCase): method test_form_has_extra_widget_attributes_when_sso_is_enforced (line 201) | def test_form_has_extra_widget_attributes_when_sso_is_enforced(self): method test_form_has_no_extra_widget_attributes_when_sso_is_not_enforced (line 224) | def test_form_has_no_extra_widget_attributes_when_sso_is_not_enforced(... method test_form_username_max_length (line 244) | def test_form_username_max_length(self): FILE: corehq/apps/hqwebapp/tests/test_static_resource_command.py class TestResourceStatic (line 15) | class TestResourceStatic(SimpleTestCase): method setUp (line 16) | def setUp(self): method tearDown (line 31) | def tearDown(self): method get_resource_versions (line 35) | def get_resource_versions(self): method test_output_resources (line 42) | def test_output_resources(self): method test_output_resources_with_overwrite (line 54) | def test_output_resources_with_overwrite(self): FILE: corehq/apps/hqwebapp/tests/test_timeout_middleware.py class TestTimeout (line 15) | class TestTimeout(TestCase): method setUpClass (line 18) | def setUpClass(cls): method setUp (line 40) | def setUp(self): method tearDown (line 45) | def tearDown(self): method tearDownClass (line 55) | def tearDownClass(cls): method _assert_session_expiry_in_minutes (line 62) | def _assert_session_expiry_in_minutes(self, expected_minutes, session): method _get_page (line 68) | def _get_page(self, domain=None): method test_insecure (line 74) | def test_insecure(self): method test_secure (line 79) | def test_secure(self): method test_secure_membership (line 90) | def test_secure_membership(self): method test_configurable_timeout (line 99) | def test_configurable_timeout(self): method test_multiple_secure (line 104) | def test_multiple_secure(self): FILE: corehq/apps/hqwebapp/tests/test_two_factor_gateways.py function test_gateway_make_call (line 6) | def test_gateway_make_call(): FILE: corehq/apps/hqwebapp/tests/test_views.py class TestEmailAuthenticationFormAutocomplete (line 20) | class TestEmailAuthenticationFormAutocomplete(BaseAutocompleteTest): method test_autocomplete_enabled (line 22) | def test_autocomplete_enabled(self): method test_autocomplete_disabled (line 25) | def test_autocomplete_disabled(self): class TestBugReport (line 29) | class TestBugReport(TestCase): method setUpClass (line 33) | def setUpClass(cls): method tearDownClass (line 56) | def tearDownClass(cls): method _default_payload (line 61) | def _default_payload(self, username): method _post_bug_report (line 75) | def _post_bug_report(self, payload): method test_basic_bug_submit (line 82) | def test_basic_bug_submit(self): method test_project_description_web_user (line 90) | def test_project_description_web_user(self): method test_project_description_commcare_user (line 115) | def test_project_description_commcare_user(self): class TestMaintenanceAlertsView (line 134) | class TestMaintenanceAlertsView(TestCase): method setUpClass (line 138) | def setUpClass(cls): method _alert_with_timezone (line 154) | def _alert_with_timezone(self): method test_create_alert (line 165) | def test_create_alert(self): method test_create_converts_to_utc (line 175) | def test_create_converts_to_utc(self): method test_view_converts_from_utc (line 182) | def test_view_converts_from_utc(self): method test_post_commands (line 191) | def test_post_commands(self): method test_view_access_to_global_alerts_only (line 205) | def test_view_access_to_global_alerts_only(self): method test_update_restricted_to_global_alerts (line 232) | def test_update_restricted_to_global_alerts(self): class TestSolutionsFeatureRequestView (line 242) | class TestSolutionsFeatureRequestView(TestCase): method setUpClass (line 246) | def setUpClass(cls): method tearDownClass (line 267) | def tearDownClass(cls): method _default_payload (line 272) | def _default_payload(self, username): method _post_request (line 286) | def _post_request(self, payload, is_dimagi_env): method test_non_staff_email_submission (line 294) | def test_non_staff_email_submission(self): method test_non_dimagi_env_submission (line 301) | def test_non_dimagi_env_submission(self): method test_email_submission (line 308) | def test_email_submission(self): class TestSetLanguage (line 334) | class TestSetLanguage(SimpleTestCase): method test_sets_valid_lang_code (line 336) | def test_sets_valid_lang_code(self): method test_does_not_set_invalid_lang_code (line 345) | def test_does_not_set_invalid_lang_code(self): method test_redirect_to_http_referer_if_allowed (line 353) | def test_redirect_to_http_referer_if_allowed(self): method test_no_redirect_if_referer_disallowed (line 363) | def test_no_redirect_if_referer_disallowed(self): FILE: corehq/apps/hqwebapp/tests/utils/test_bootstrap.py function test_default_bootstrap_version (line 12) | def test_default_bootstrap_version(): function test_set_bootstrap_version5 (line 16) | def test_set_bootstrap_version5(): function test_set_bootstrap_version3 (line 21) | def test_set_bootstrap_version3(): FILE: corehq/apps/hqwebapp/tests/utils/test_bootstrap_changes.py function test_make_direct_css_renames_bootstrap5 (line 27) | def test_make_direct_css_renames_bootstrap5(): function test_make_direct_css_renames_in_knockout (line 37) | def test_make_direct_css_renames_in_knockout(): function test_make_numbered_css_renames_bootstrap5 (line 46) | def test_make_numbered_css_renames_bootstrap5(): function test_make_select_form_control_renames_bootstrap5 (line 55) | def test_make_select_form_control_renames_bootstrap5(): function test_make_template_tag_renames_bootstrap5 (line 64) | def test_make_template_tag_renames_bootstrap5(): function test_make_data_attribute_renames_bootstrap5 (line 73) | def test_make_data_attribute_renames_bootstrap5(): function test_ko_make_data_attribute_renames_bootstrap5 (line 82) | def test_ko_make_data_attribute_renames_bootstrap5(): function test_make_javascript_dependency_renames (line 91) | def test_make_javascript_dependency_renames(): function test_make_javascript_dependency_renames_amd (line 100) | def test_make_javascript_dependency_renames_amd(): function test_flag_changed_css_classes_bootstrap5 (line 109) | def test_flag_changed_css_classes_bootstrap5(): function test_flag_stateful_button_changes_bootstrap5 (line 124) | def test_flag_stateful_button_changes_bootstrap5(): function test_make_template_dependency_renames_no_change (line 131) | def test_make_template_dependency_renames_no_change(): function test_check_bootstrap3_references_in_template_extends (line 140) | def test_check_bootstrap3_references_in_template_extends(): function test_make_template_dependency_renames_extends (line 146) | def test_make_template_dependency_renames_extends(): function test_check_bootstrap3_references_in_template_webpack (line 155) | def test_check_bootstrap3_references_in_template_webpack(): function test_make_template_dependency_renames_webpack (line 162) | def test_make_template_dependency_renames_webpack(): function test_check_bootstrap3_references_in_template_js_entry (line 171) | def test_check_bootstrap3_references_in_template_js_entry(): function test_make_template_dependency_renames_js_entry (line 177) | def test_make_template_dependency_renames_js_entry(): function test_check_bootstrap3_references_in_template_static (line 186) | def test_check_bootstrap3_references_in_template_static(): function test_make_template_dependency_renames_static (line 192) | def test_make_template_dependency_renames_static(): function test_check_bootstrap3_references_in_template_include (line 201) | def test_check_bootstrap3_references_in_template_include(): function test_make_template_dependency_renames_include (line 207) | def test_make_template_dependency_renames_include(): function test_flag_js_entry_b3_references_in_template (line 216) | def test_flag_js_entry_b3_references_in_template(): function test_flag_any_bootstrap3_references_in_template (line 222) | def test_flag_any_bootstrap3_references_in_template(): function test_check_bootstrap3_references_in_javascript (line 228) | def test_check_bootstrap3_references_in_javascript(): function test_flag_file_inputs (line 234) | def test_flag_file_inputs(): function test_flag_inline_styles (line 242) | def test_flag_inline_styles(): function test_flag_crispy_forms_in_template (line 250) | def test_flag_crispy_forms_in_template(): function test_flag_changed_javascript_plugins_bootstrap5 (line 257) | def test_flag_changed_javascript_plugins_bootstrap5(): function test_flag_extended_changed_javascript_plugins_bootstrap5 (line 274) | def test_flag_extended_changed_javascript_plugins_bootstrap5(): function test_flag_selects_without_form_control_bootstrap5 (line 289) | def test_flag_selects_without_form_control_bootstrap5(): function test_file_contains_reference_to_path (line 296) | def test_file_contains_reference_to_path(): function test_file_does_not_contain_reference_to_path (line 310) | def test_file_does_not_contain_reference_to_path(): function test_javascript_file_contains_reference_to_path (line 324) | def test_javascript_file_contains_reference_to_path(): function test_javascript_file_does_not_contain_reference_to_path (line 339) | def test_javascript_file_does_not_contain_reference_to_path(): function test_replace_path_references (line 348) | def test_replace_path_references(): function test_replace_path_references_javascript (line 375) | def test_replace_path_references_javascript(): function test_add_todo_comments_for_flags_template (line 390) | def test_add_todo_comments_for_flags_template(): function test_add_todo_comments_for_flags_template_submodule (line 399) | def test_add_todo_comments_for_flags_template_submodule(): function test_add_todo_comments_for_flags_template_replace (line 408) | def test_add_todo_comments_for_flags_template_replace(): function test_add_todo_comments_for_flags_template_noop (line 415) | def test_add_todo_comments_for_flags_template_noop(): function test_add_todo_comments_for_flags_javascript (line 424) | def test_add_todo_comments_for_flags_javascript(): function test_add_todo_comments_for_flags_javascript_replace (line 433) | def test_add_todo_comments_for_flags_javascript_replace(): function test_add_todo_comments_for_flags_javascript_noop (line 442) | def test_add_todo_comments_for_flags_javascript_noop(): function test_update_gruntfile (line 451) | def test_update_gruntfile(): FILE: corehq/apps/hqwebapp/tests/utils/test_bootstrap_paths.py function test_is_ignored_path_true (line 9) | def test_is_ignored_path_true(): function test_is_ignored_path_false (line 15) | def test_is_ignored_path_false(): function test_get_bootstrap5_path (line 21) | def test_get_bootstrap5_path(): function test_get_bootstrap5_path_none (line 27) | def test_get_bootstrap5_path_none(): function test_is_bootstrap3_path (line 31) | def test_is_bootstrap3_path(): function test_is_bootstrap3_path_false_with_none (line 36) | def test_is_bootstrap3_path_false_with_none(): FILE: corehq/apps/hqwebapp/tests/utils/test_bootstrap_status.py function test_is_app_completed_for_builds (line 12) | def test_is_app_completed_for_builds(): function test_is_app_in_progress_for_hqwebapp (line 17) | def test_is_app_in_progress_for_hqwebapp(): function test_get_completed_templates_for_app_relative_paths (line 23) | def test_get_completed_templates_for_app_relative_paths(): function test_get_completed_javascript_for_app_relative_paths (line 30) | def test_get_completed_javascript_for_app_relative_paths(): function test_hqwebapp_is_in_get_apps_completed_or_in_progress (line 37) | def test_hqwebapp_is_in_get_apps_completed_or_in_progress(): FILE: corehq/apps/hqwebapp/tests/utils/test_html.py class SafeReplaceTests (line 9) | class SafeReplaceTests(SimpleTestCase): method test_replacement_is_html_safe (line 10) | def test_replacement_is_html_safe(self): method test_no_matches_returns_full_string (line 17) | def test_no_matches_returns_full_string(self): method test_replacement_is_escaped (line 24) | def test_replacement_is_escaped(self): method test_sanitized_replacement_is_left_alone (line 31) | def test_sanitized_replacement_is_left_alone(self): method test_replacement_is_applied_globally (line 38) | def test_replacement_is_applied_globally(self): FILE: corehq/apps/hqwebapp/tests/utils/test_thread_var.py class BootstrapThreadTests (line 13) | class BootstrapThreadTests(SimpleTestCase): method setUp (line 14) | def setUp(self): method test_no_explicit_version_defaults_to_bootstrap3 (line 17) | def test_no_explicit_version_defaults_to_bootstrap3(self): method test_can_set_bootstrap3 (line 20) | def test_can_set_bootstrap3(self): method test_can_set_bootstrap5 (line 24) | def test_can_set_bootstrap5(self): method test_clear_bootstrap_version_removes_previous_setting (line 28) | def test_clear_bootstrap_version_removes_previous_setting(self): method test_setting_is_local_to_thread (line 34) | def test_setting_is_local_to_thread(self): FILE: corehq/apps/hqwebapp/tests/utils/test_translation.py class TestCustomTranslationsDecorator (line 11) | class TestCustomTranslationsDecorator(SimpleTestCase): method test_does_not_change_default_translation (line 13) | def test_does_not_change_default_translation(self): method test_creates_translation_for_custom_language (line 17) | def test_creates_translation_for_custom_language(self): method test_handles_multiple_translations (line 25) | def test_handles_multiple_translations(self): class TestLazyMarkSafe (line 31) | class TestLazyMarkSafe(SimpleTestCase): method test_lazy_translation (line 33) | def test_lazy_translation(self): class TestLazyFormatHTML (line 42) | class TestLazyFormatHTML(SimpleTestCase): method test_with_params (line 44) | def test_with_params(self): method test_with_translated_params (line 56) | def test_with_translated_params(self): FILE: corehq/apps/hqwebapp/two_factor_gateways.py class Gateway (line 38) | class Gateway(object): method __init__ (line 40) | def __init__(self): method _get_client (line 55) | def _get_client(self, sid, token): method send_sms (line 60) | def send_sms(self, device, token): method make_call (line 78) | def make_call(self, device, token): function validate_voice_locale (line 92) | def validate_voice_locale(locale): function rate_limit_two_factor_setup (line 103) | def rate_limit_two_factor_setup(device): function _report_usage (line 240) | def _report_usage(ip_address, number, username): function _report_current_global_two_factor_setup_rate_limiter (line 247) | def _report_current_global_two_factor_setup_rate_limiter(): FILE: corehq/apps/hqwebapp/two_factor_methods.py class HQGeneratorMethod (line 11) | class HQGeneratorMethod(GeneratorMethod): method get_setup_forms (line 18) | def get_setup_forms(self, *args): method get_token_form_class (line 21) | def get_token_form_class(self): method recognize_device (line 24) | def recognize_device(self, device): class HQPhoneCallMethod (line 28) | class HQPhoneCallMethod(PhoneCallMethod): method get_setup_forms (line 30) | def get_setup_forms(self, *args): method get_token_form_class (line 33) | def get_token_form_class(self): class HQSMSMethod (line 37) | class HQSMSMethod(SMSMethod): method get_setup_forms (line 39) | def get_setup_forms(self, *args): method get_token_form_class (line 42) | def get_token_form_class(self): FILE: corehq/apps/hqwebapp/utils/__init__.py function get_hq_private_key (line 18) | def get_hq_private_key(): function sign (line 26) | def sign(message): function get_bulk_upload_form (line 37) | def get_bulk_upload_form(context=None, context_key="bulk_upload", form_c... function csrf_inline (line 49) | def csrf_inline(request): function aliased_language_name (line 61) | def aliased_language_name(lang_code): function get_environment_friendly_name (line 74) | def get_environment_friendly_name(): FILE: corehq/apps/hqwebapp/utils/bootstrap/__init__.py function get_bootstrap_version (line 9) | def get_bootstrap_version(): function set_bootstrap_version3 (line 17) | def set_bootstrap_version3(): function set_bootstrap_version5 (line 21) | def set_bootstrap_version5(): function clear_bootstrap_version (line 25) | def clear_bootstrap_version(): FILE: corehq/apps/hqwebapp/utils/bootstrap/changes.py function get_spec (line 27) | def get_spec(spec_name): function _get_direct_css_regex (line 33) | def _get_direct_css_regex(css_class): function _get_plugin_regex (line 37) | def _get_plugin_regex(js_plugin): function _get_extension_regex (line 41) | def _get_extension_regex(js_plugin): function _get_path_reference_regex (line 45) | def _get_path_reference_regex(path_reference): function _get_template_reference_regex (line 49) | def _get_template_reference_regex(tag, reference): function _get_javascript_reference_regex (line 53) | def _get_javascript_reference_regex(reference): function _get_mocha_app_regex (line 57) | def _get_mocha_app_regex(app): function _get_todo_regex (line 61) | def _get_todo_regex(is_template): function _do_rename (line 67) | def _do_rename(line, change_map, regex_fn, replacement_fn): function _get_change_guide (line 81) | def _get_change_guide(css_class): function make_direct_css_renames (line 87) | def make_direct_css_renames(line, spec): function make_numbered_css_renames (line 96) | def make_numbered_css_renames(line, spec): function make_select_form_control_renames (line 105) | def make_select_form_control_renames(line, spec): function make_template_tag_renames (line 117) | def make_template_tag_renames(line, spec): function make_data_attribute_renames (line 126) | def make_data_attribute_renames(line, spec): function make_javascript_dependency_renames (line 135) | def make_javascript_dependency_renames(line, spec): function make_template_dependency_renames (line 144) | def make_template_dependency_renames(line, spec): function add_todo_comments_for_flags (line 157) | def add_todo_comments_for_flags(flags, line, is_template, is_submodule_a... function flag_changed_css_classes (line 179) | def flag_changed_css_classes(line, spec): function flag_changed_javascript_plugins (line 191) | def flag_changed_javascript_plugins(line, spec): function flag_stateful_button_changes_bootstrap5 (line 204) | def flag_stateful_button_changes_bootstrap5(line): function check_bootstrap3_references_in_template (line 216) | def check_bootstrap3_references_in_template(line, spec): function check_bootstrap3_references_in_javascript (line 242) | def check_bootstrap3_references_in_javascript(line): function flag_file_inputs (line 250) | def flag_file_inputs(line): function flag_inline_styles (line 261) | def flag_inline_styles(line): function flag_crispy_forms_in_template (line 272) | def flag_crispy_forms_in_template(line): function flag_selects_without_form_control (line 283) | def flag_selects_without_form_control(line): function file_contains_reference_to_path (line 294) | def file_contains_reference_to_path(filedata, path_reference): function replace_path_references (line 299) | def replace_path_references(filedata, old_reference, new_reference): function update_gruntfile (line 308) | def update_gruntfile(filedata, mocha_paths): FILE: corehq/apps/hqwebapp/utils/bootstrap/git.py function get_commit_command (line 6) | def get_commit_command(message, as_string=False, path=None): function get_commit_string (line 17) | def get_commit_string(message, path=None): function apply_commit (line 21) | def apply_commit(message, path=None): function has_pending_git_changes (line 30) | def has_pending_git_changes(path=None): function get_working_directory (line 38) | def get_working_directory(app_name): function ensure_no_pending_changes_before_continuing (line 44) | def ensure_no_pending_changes_before_continuing(): FILE: corehq/apps/hqwebapp/utils/bootstrap/middleware.py class ThreadLocalCleanupMiddleware (line 4) | class ThreadLocalCleanupMiddleware: method __init__ (line 9) | def __init__(self, get_response): method __call__ (line 12) | def __call__(self, request): FILE: corehq/apps/hqwebapp/utils/bootstrap/paths.py function is_split_path (line 48) | def is_split_path(path): function is_ignored_path (line 53) | def is_ignored_path(app_name, path): function is_bootstrap5_path (line 59) | def is_bootstrap5_path(path): function is_bootstrap3_path (line 63) | def is_bootstrap3_path(path): function is_mocha_path (line 69) | def is_mocha_path(path): function get_app_name_and_slug (line 73) | def get_app_name_and_slug(app_name): function get_parent_path (line 82) | def get_parent_path(app_name): function get_app_template_folder (line 87) | def get_app_template_folder(app_name): function get_app_template_folder_for_submodule (line 95) | def get_app_template_folder_for_submodule(app_name, parent_path): function get_app_static_folder (line 101) | def get_app_static_folder(app_name): function get_app_static_folder_for_submodule (line 109) | def get_app_static_folder_for_submodule(app_name, parent_path): function get_short_path (line 115) | def get_short_path(app_name, full_path, is_template): function get_short_path_for_submodule (line 130) | def get_short_path_for_submodule(app_name, full_path, is_template): function get_all_template_paths_for_app (line 148) | def get_all_template_paths_for_app(app_name): function get_all_javascript_paths_for_app (line 153) | def get_all_javascript_paths_for_app(app_name): function get_split_paths (line 158) | def get_split_paths(paths, split_folder='bootstrap3'): function get_split_folders (line 165) | def get_split_folders(paths, include_root=False): function get_bootstrap5_path (line 177) | def get_bootstrap5_path(bootstrap3_path): FILE: corehq/apps/hqwebapp/utils/bootstrap/references.py function update_and_get_references (line 8) | def update_and_get_references(app_name, old_reference, new_reference, is... function get_requirejs_reference (line 30) | def get_requirejs_reference(app_name, short_path): function get_file_types (line 37) | def get_file_types(app_name, is_template=True): function get_references_data (line 46) | def get_references_data(app_name, reference, is_template=True): function _get_reference_directories_for_app (line 58) | def _get_reference_directories_for_app(app_name): function get_references (line 64) | def get_references(app_name, reference, is_template=True): FILE: corehq/apps/hqwebapp/utils/bootstrap/reports/debug.py class Color (line 24) | class Color: function _name (line 32) | def _name(instance): function reports_bootstrap5_template_debugger (line 36) | def reports_bootstrap5_template_debugger(report_instance): function show_report_property_issues (line 56) | def show_report_property_issues(report_instance, report_property): function show_report_class_variable_issues (line 69) | def show_report_class_variable_issues(report_instance, related_variable): function show_report_filters_templates (line 81) | def show_report_filters_templates(report_instance): function show_report_column_issues (line 101) | def show_report_column_issues(report_instance): function _print_column_warnings (line 110) | def _print_column_warnings(column): FILE: corehq/apps/hqwebapp/utils/bootstrap/reports/progress.py function get_progress_file_path (line 8) | def get_progress_file_path(): function get_progress_data (line 12) | def get_progress_data(): function update_progress_data (line 17) | def update_progress_data(data): function _mark_as_complete (line 25) | def _mark_as_complete(item, category): function _get_category_list (line 32) | def _get_category_list(category): function mark_report_as_complete (line 37) | def mark_report_as_complete(report_name): function mark_filter_as_complete (line 41) | def mark_filter_as_complete(filter_path): function mark_filter_template_as_complete (line 45) | def mark_filter_template_as_complete(filter_template): function get_migrated_reports (line 49) | def get_migrated_reports(): function get_migrated_filters (line 53) | def get_migrated_filters(): function get_migrated_filter_templates (line 57) | def get_migrated_filter_templates(): FILE: corehq/apps/hqwebapp/utils/bootstrap/reports/stats.py function get_report_class (line 84) | def get_report_class(name): function get_bootstrap5_reports (line 90) | def get_bootstrap5_reports(): FILE: corehq/apps/hqwebapp/utils/bootstrap/status.py function get_status_file_path (line 12) | def get_status_file_path(): function get_status_data (line 16) | def get_status_data(): function update_completed_summary (line 21) | def update_completed_summary(summary): function apply_app_summary_changes (line 28) | def apply_app_summary_changes(app_name, app_summary): function get_app_status_summary (line 34) | def get_app_status_summary(app_name): function mark_app_as_in_progress (line 38) | def mark_app_as_in_progress(app_name): function is_app_in_progress (line 44) | def is_app_in_progress(app_name): function get_apps_completed_or_in_progress (line 48) | def get_apps_completed_or_in_progress(): function mark_app_as_complete (line 52) | def mark_app_as_complete(app_name): function is_app_completed (line 60) | def is_app_completed(app_name): function mark_template_as_complete (line 64) | def mark_template_as_complete(app_name, template_short_path): function mark_javascript_as_complete (line 68) | def mark_javascript_as_complete(app_name, js_short_path): function _mark_file_as_complete (line 72) | def _mark_file_as_complete(app_name, short_path, file_type): function get_completed_templates_for_app (line 81) | def get_completed_templates_for_app(app_name, use_full_paths=True): function get_completed_javascript_for_app (line 87) | def get_completed_javascript_for_app(app_name, use_full_paths=True): function _get_completed_files_for_app (line 93) | def _get_completed_files_for_app(app_name, file_type, folder, use_full_p... function _get_full_paths (line 103) | def _get_full_paths(folder, filenames): FILE: corehq/apps/hqwebapp/utils/html.py function safe_replace (line 5) | def safe_replace(pattern, replace_fun, raw_string): FILE: corehq/apps/hqwebapp/utils/management_commands.py function get_break_line (line 1) | def get_break_line(character, break_length): function select_option_from_prompt (line 5) | def select_option_from_prompt(prompt, options, default=None): function get_confirmation (line 24) | def get_confirmation(prompt, default=None): function enter_to_continue (line 29) | def enter_to_continue(): FILE: corehq/apps/hqwebapp/utils/two_factor.py function user_can_use_phone (line 4) | def user_can_use_phone(user): FILE: corehq/apps/hqwebapp/utils/webpack.py function cache_unless_debug (line 12) | def cache_unless_debug(func): class WebpackManifestNotFoundError (line 16) | class WebpackManifestNotFoundError(Exception): function get_webpack_manifest (line 21) | def get_webpack_manifest(filename=None): FILE: corehq/apps/hqwebapp/view_permissions.py function user_can_view_reports (line 3) | def user_can_view_reports(project, couch_user): FILE: corehq/apps/hqwebapp/views.py function is_deploy_in_progress (line 135) | def is_deploy_in_progress(): function format_traceback_the_way_python_does (line 140) | def format_traceback_the_way_python_does(type, exc, tb): function server_error (line 153) | def server_error(request, template_name='500.html', exception=None): function not_found (line 195) | def not_found(request, template_name='404.html', exception=None): function redirect_to_default (line 212) | def redirect_to_default(req, domain=None): function _two_factor_needed (line 276) | def _two_factor_needed(domain_name, request): function password_change (line 288) | def password_change(req): function server_up (line 301) | def server_up(req): function _no_permissions_message (line 349) | def _no_permissions_message(request, message=None): function no_permissions (line 362) | def no_permissions(request, redirect_to=None, message=None, exception=No... function csrf_failure (line 377) | def csrf_failure(request, reason=None, template_name="csrf_failure.html"): function _login (line 390) | def _login(req, domain_name, custom_login_page, extra_context=None): function login (line 456) | def login(req): function domain_login (line 469) | def domain_login(req, domain, custom_template_name=None, extra_context=N... function iframe_domain_login (line 485) | def iframe_domain_login(req, domain): function iframe_sso_login_pending (line 500) | def iframe_sso_login_pending(request): class HQLoginView (line 504) | class HQLoginView(LoginView): method has_token_step (line 512) | def has_token_step(self): method post (line 530) | def post(self, *args, **kwargs): method can_select_server (line 539) | def can_select_server(self): method get_form_kwargs (line 549) | def get_form_kwargs(self, step=None): method get_context_data (line 557) | def get_context_data(self, **kwargs): class CloudCareLoginView (line 578) | class CloudCareLoginView(HQLoginView): function logout (line 587) | def logout(req, default_domain_redirect='domain_login'): function ping_response (line 607) | def ping_response(request): function login_new_window (line 635) | def login_new_window(request): function domain_login_new_window (line 642) | def domain_login_new_window(request): function retrieve_download (line 651) | def retrieve_download(req, domain, download_id, template="hqwebapp/inclu... function dropbox_next_url (line 657) | def dropbox_next_url(request, download_id): function dropbox_upload (line 663) | def dropbox_upload(request, download_id): function debug_notify (line 710) | def debug_notify(request): function jserror (line 723) | def jserror(request): function _get_email_message_base (line 771) | def _get_email_message_base(post_params, couch_user, uploaded_file, to_e... class BugReportView (line 896) | class BugReportView(View): method post (line 897) | def post(self, req, *args, **kwargs): method _get_email_message (line 916) | def _get_email_message(post_params, couch_user, uploaded_file): class SolutionsFeatureRequestView (line 926) | class SolutionsFeatureRequestView(View): method to_email_address (line 930) | def to_email_address(self): method post (line 933) | def post(self, request, *args, **kwargs): function render_static (line 946) | def render_static(request, template, page_name): function apache_license (line 955) | def apache_license(request): function bsd_license (line 960) | def bsd_license(request): class BasePageView (line 964) | class BasePageView(TemplateView): method page_name (line 970) | def page_name(self): method page_url (line 978) | def page_url(self): method parent_pages (line 982) | def parent_pages(self): method main_context (line 993) | def main_context(self): method page_context (line 1007) | def page_context(self): method get_context_data (line 1013) | def get_context_data(self, **kwargs): method render_to_response (line 1019) | def render_to_response(self, context, **response_kwargs): class BaseSectionPageView (line 1026) | class BaseSectionPageView(BasePageView): method section_url (line 1031) | def section_url(self): method main_context (line 1035) | def main_context(self): class PaginatedItemException (line 1046) | class PaginatedItemException(Exception): class CRUDPaginatedViewMixin (line 1050) | class CRUDPaginatedViewMixin(object): method _safe_escape (line 1063) | def _safe_escape(self, expression, default): method parameters (line 1070) | def parameters(self): method page (line 1078) | def page(self): method limit (line 1086) | def limit(self): method total (line 1093) | def total(self): method sort_by (line 1097) | def sort_by(self): method skip (line 1101) | def skip(self): method action (line 1105) | def action(self): method column_names (line 1112) | def column_names(self): method pagination_context (line 1116) | def pagination_context(self): method allowed_actions (line 1140) | def allowed_actions(self): method paginate_crud_response (line 1150) | def paginate_crud_response(self): method create_response (line 1158) | def create_response(self): method update_response (line 1170) | def update_response(self): method refresh_response (line 1181) | def refresh_response(self): method delete_response (line 1196) | def delete_response(self): method item_id (line 1208) | def item_id(self): method paginate_response (line 1215) | def paginate_response(self): method paginated_list (line 1224) | def paginated_list(self): method get_create_form (line 1239) | def get_create_form(self, is_blank=False): method get_create_form_response (line 1248) | def get_create_form_response(self, create_form): method get_update_form (line 1255) | def get_update_form(self, initial_data=None): method get_update_form_response (line 1258) | def get_update_form_response(self, update_form): method refresh_item (line 1265) | def refresh_item(self, item_id): method get_create_item_data (line 1271) | def get_create_item_data(self, create_form): method get_updated_item_data (line 1284) | def get_updated_item_data(self, update_form): method delete_item (line 1297) | def delete_item(self, item_id): function quick_find (line 1312) | def quick_find(request): function osdd (line 1338) | def osdd(request, template='osdd.xml'): class MaintenanceAlertsView (line 1347) | class MaintenanceAlertsView(BasePageView): method dispatch (line 1354) | def dispatch(self, request, *args, **kwargs): method post (line 1358) | def post(self, request): method page_context (line 1370) | def page_context(self): method page_url (line 1394) | def page_url(self): function create_alert (line 1400) | def create_alert(request): function redirect_to_dimagi (line 1425) | def redirect_to_dimagi(endpoint): function temporary_google_verify (line 1444) | def temporary_google_verify(request): function log_email_event (line 1453) | def log_email_event(request, secret, domain=None): class OauthApplicationRegistration (line 1493) | class OauthApplicationRegistration(BasePageView): method page_url (line 1499) | def page_url(self): method base_application_form (line 1503) | def base_application_form(self): method hq_application_form (line 1517) | def hq_application_form(self): method get_context_data (line 1525) | def get_context_data(self, **kwargs): method post (line 1531) | def post(self, request, *args, **kwargs): function check_sso_login_status (line 1553) | def check_sso_login_status(request): function set_language (line 1579) | def set_language(request): FILE: corehq/apps/hqwebapp/widgets.py class BootstrapCheckboxInput (line 19) | class BootstrapCheckboxInput(CheckboxInput): method __init__ (line 22) | def __init__(self, attrs=None, check_test=bool, inline_label=""): method get_context (line 26) | def get_context(self, name, value, attrs): class BootstrapSwitchInput (line 52) | class BootstrapSwitchInput(BootstrapCheckboxInput): class _Select2AjaxMixin (line 57) | class _Select2AjaxMixin(): method set_url (line 65) | def set_url(self, url): method set_initial (line 68) | def set_initial(self, val): method _clean_initial (line 71) | def _clean_initial(self, val): class Select2Ajax (line 82) | class Select2Ajax(_Select2AjaxMixin, forms.Select): method __init__ (line 83) | def __init__(self, attrs=None, page_size=20, multiple=False): method render (line 89) | def render(self, name, value, attrs=None, renderer=None): class DateRangePickerWidget (line 100) | class DateRangePickerWidget(Input): class Range (line 112) | class Range(object): method __init__ (line 124) | def __init__(self, attrs=None, default_datespan=None): method render (line 128) | def render(self, name, value, attrs=None, renderer=None): class SelectToggle (line 169) | class SelectToggle(forms.Select): method __init__ (line 171) | def __init__(self, choices=None, attrs=None, apply_bindings=False): method render (line 179) | def render(self, name, value, attrs=None, renderer=None): class GeoCoderInput (line 200) | class GeoCoderInput(Input): method __init__ (line 202) | def __init__(self, attrs=None): method render (line 205) | def render(self, name, value, attrs=None, renderer=None): class AlpineSelect (line 213) | class AlpineSelect(forms.Select): method get_context (line 251) | def get_context(self, name, value, attrs): FILE: corehq/apps/integration/forms.py class SimprintsIntegrationForm (line 12) | class SimprintsIntegrationForm(forms.Form): method __init__ (line 30) | def __init__(self, data, *args, **kwargs): method _existing_integration (line 53) | def _existing_integration(self): method initial_data (line 60) | def initial_data(self): method save (line 68) | def save(self): FILE: corehq/apps/integration/kyc/exceptions.py class UserCaseNotFound (line 1) | class UserCaseNotFound(Exception): FILE: corehq/apps/integration/kyc/filters.py class KycVerifiedByFilter (line 8) | class KycVerifiedByFilter(BaseSingleOptionFilter): method options (line 14) | def options(self): class KycVerificationStatusFilter (line 21) | class KycVerificationStatusFilter(BaseSingleOptionFilter): class PhoneNumberFilter (line 28) | class PhoneNumberFilter(BaseSimpleFilter): FILE: corehq/apps/integration/kyc/forms.py class KycConfigureForm (line 24) | class KycConfigureForm(forms.ModelForm): class Meta (line 26) | class Meta: method __init__ (line 95) | def __init__(self, *args, **kwargs): method _get_case_types (line 159) | def _get_case_types(self): method clean (line 166) | def clean(self): method _get_domain_connection_settings (line 189) | def _get_domain_connection_settings(self): method clean_connection_settings (line 194) | def clean_connection_settings(self): FILE: corehq/apps/integration/kyc/models.py class UserDataStore (line 17) | class UserDataStore(object): class KycProviders (line 28) | class KycProviders(models.TextChoices): class KycProviderThresholdFields (line 37) | class KycProviderThresholdFields: method get_required_fields (line 62) | def get_required_fields(cls, provider, stores_full_name): class KycConfig (line 73) | class KycConfig(models.Model): class Meta (line 93) | class Meta: method clean (line 98) | def clean(self): method get_required_threshold_fields (line 113) | def get_required_threshold_fields(self): method get_kyc_api_method (line 121) | def get_kyc_api_method(self): method get_kyc_users_query (line 131) | def get_kyc_users_query(self): method get_all_kyc_users (line 141) | def get_all_kyc_users(self): method get_kyc_users_by_ids (line 148) | def get_kyc_users_by_ids(self, obj_ids): method _es_hits_to_kyc_users (line 162) | def _es_hits_to_kyc_users(self, hits): method get_kyc_users_count (line 170) | def get_kyc_users_count(self): method get_api_field_to_user_data_map_values (line 173) | def get_api_field_to_user_data_map_values(self): method is_sensitive_field (line 191) | def is_sensitive_field(self, field): class KycProperties (line 202) | class KycProperties: class KycUser (line 210) | class KycUser: method __init__ (line 224) | def __init__(self, kyc_config, user_or_case_obj): method __getitem__ (line 239) | def __getitem__(self, item): method get (line 258) | def get(self, item, default=None): method user_data (line 265) | def user_data(self): method kyc_last_verified_at (line 274) | def kyc_last_verified_at(self): method kyc_verification_error_message (line 278) | def kyc_verification_error_message(self): method kyc_verification_status (line 287) | def kyc_verification_status(self): method kyc_verified_by (line 298) | def kyc_verified_by(self): method kyc_provider (line 302) | def kyc_provider(self): method update_verification_status (line 305) | def update_verification_status(self, verification_status, verified_by,... class KycVerificationStatus (line 342) | class KycVerificationStatus(models.TextChoices): class KycVerificationFailureCause (line 350) | class KycVerificationFailureCause(models.TextChoices): FILE: corehq/apps/integration/kyc/services.py function verify_users (line 20) | def verify_users(kyc_users, config, verified_by): function verify_user (line 45) | def verify_user(kyc_user, config): function mtn_kyc_verify (line 69) | def mtn_kyc_verify(kyc_user, config): function orange_cameroon_kyc_verify (line 127) | def orange_cameroon_kyc_verify(kyc_user, config): function _validate_name_fields (line 193) | def _validate_name_fields(config, user_data): function _report_verification_failure_metric (line 204) | def _report_verification_failure_metric(domain, errors_with_count): function get_user_data_for_api (line 213) | def get_user_data_for_api(kyc_user, config): function _validate_schema (line 225) | def _validate_schema(endpoint, data): function _kebab_case (line 239) | def _kebab_case(value): function order_and_case_insensitive_matching_score (line 251) | def order_and_case_insensitive_matching_score(value1, value2): function get_percent_matching_score (line 273) | def get_percent_matching_score(value1, value2): FILE: corehq/apps/integration/kyc/tables.py class DisableableCheckBoxColumn (line 20) | class DisableableCheckBoxColumn(columns.CheckBoxColumn): method render (line 23) | def render(self, value, record, bound_column): function serialize_kyc_data_for_table (line 34) | def serialize_kyc_data_for_table(kyc_user, kyc_config): class KycElasticRecordMixin (line 62) | class KycElasticRecordMixin: method kyc_user (line 65) | def kyc_user(self): method serialized_data (line 69) | def serialized_data(self): method __getitem__ (line 77) | def __getitem__(self, item): method get (line 82) | def get(self, item, default=None): class KycUserElasticRecord (line 89) | class KycUserElasticRecord(KycElasticRecordMixin, UserElasticRecord): method __init__ (line 92) | def __init__(self, record, request, kyc_config=None, **kwargs): method kyc_user (line 97) | def kyc_user(self): class KycCaseElasticRecord (line 101) | class KycCaseElasticRecord(KycElasticRecordMixin, CaseSearchElasticRecord): method __init__ (line 104) | def __init__(self, record, request, kyc_config=None, **kwargs): method kyc_user (line 109) | def kyc_user(self): class KycVerifyTable (line 113) | class KycVerifyTable(BaseHtmxTable, ElasticTable): class Meta (line 117) | class Meta(BaseHtmxTable.Meta): method get_extra_columns (line 128) | def get_extra_columns(kyc_config): FILE: corehq/apps/integration/kyc/tests/test_models.py class BaseKycUsersSetup (line 25) | class BaseKycUsersSetup(TestCase): method setUpClass (line 28) | def setUpClass(cls): method setUp (line 38) | def setUp(self): class TestGetUserObjectsUsers (line 71) | class TestGetUserObjectsUsers(BaseKycUsersSetup): method test_custom_user_data (line 73) | def test_custom_user_data(self): method test_custom_user_data_by_ids (line 85) | def test_custom_user_data_by_ids(self): method test_user_case (line 98) | def test_user_case(self): method test_user_case_by_ids (line 110) | def test_user_case_by_ids(self): method test_other_case_type (line 123) | def test_other_case_type(self): method test_other_case_type_by_ids (line 135) | def test_other_case_type_by_ids(self): class TestGetUserObjectsCases (line 150) | class TestGetUserObjectsCases(TestCase): method setUp (line 152) | def setUp(self): method test_other_case_type (line 166) | def test_other_case_type(self): method test_other_case_type_by_ids (line 178) | def test_other_case_type_by_ids(self): method test_other_case_type_clean (line 191) | def test_other_case_type_clean(self): method test_assert_other_case_type (line 199) | def test_assert_other_case_type(self): class TestKycUser (line 208) | class TestKycUser(BaseKycUsersSetup): method test_custom_user_data (line 210) | def test_custom_user_data(self): method test_user_case (line 224) | def test_user_case(self): method test_other_case_type (line 238) | def test_other_case_type(self): method test_kyc_verification_initial_values (line 250) | def test_kyc_verification_initial_values(self): method _assert_for_verification_status (line 263) | def _assert_for_verification_status(self, kyc_user, expected_status, e... method test_update_verification_status_for_custom_user_data (line 269) | def test_update_verification_status_for_custom_user_data(self): method test_update_verification_status_for_user_case (line 285) | def test_update_verification_status_for_user_case(self): method test_update_verification_status_for_other_case_type (line 301) | def test_update_verification_status_for_other_case_type(self): method test_verification_status_invalid_value (line 317) | def test_verification_status_invalid_value(self): class TestKycConfig (line 332) | class TestKycConfig(SimpleTestCase): method setUpClass (line 335) | def setUpClass(cls): method test_get_api_field_to_user_data_map_values (line 367) | def test_get_api_field_to_user_data_map_values(self): method test_is_sensitive_field (line 376) | def test_is_sensitive_field(self): FILE: corehq/apps/integration/kyc/tests/test_services.py function test_doctests (line 34) | def test_doctests(): class TestValidateSchema (line 40) | class TestValidateSchema(TestCase): method test_valid_schema (line 42) | def test_valid_schema(self): method test_invalid_schema (line 57) | def test_invalid_schema(self): class BaseKycUserSetup (line 68) | class BaseKycUserSetup(TestCase): method setUpClass (line 72) | def setUpClass(cls): method tearDownClass (line 77) | def tearDownClass(cls): method setUp (line 81) | def setUp(self): method tearDown (line 104) | def tearDown(self): method _sample_api_field_to_user_data_map (line 109) | def _sample_api_field_to_user_data_map(self): method _sample_passing_thresholds (line 120) | def _sample_passing_thresholds(self): class TestGetUserDataForAPI (line 134) | class TestGetUserDataForAPI(BaseKycUserSetup): method test_custom_user_data_store (line 136) | def test_custom_user_data_store(self): method test_unsafe_custom_user_data_store (line 141) | def test_unsafe_custom_user_data_store(self): method test_custom_user_data_store_with_no_data (line 149) | def test_custom_user_data_store_with_no_data(self): method test_user_case_data_store (line 153) | def test_user_case_data_store(self): method test_custom_case_data_store (line 170) | def test_custom_case_data_store(self): method test_custom_case_data_store_with_no_data (line 186) | def test_custom_case_data_store_with_no_data(self): method test_incorrect_mapping_standard_field (line 197) | def test_incorrect_mapping_standard_field(self): class TestVerifyUser (line 208) | class TestVerifyUser(BaseKycUserSetup): method _sample_response_json (line 210) | def _sample_response_json(self): method test_mtn_kyc_verify_success (line 228) | def test_mtn_kyc_verify_success(self, mock_post, *args): method test_orange_cameroon_kyc_verify_success (line 245) | def test_orange_cameroon_kyc_verify_success(self, mock_post, *args): method test_kyc_failed (line 278) | def test_kyc_failed(self, mock_post, *args): method test_orange_cameroon_kyc_failed (line 296) | def test_orange_cameroon_kyc_failed(self, mock_post, *args): method test_api_error (line 329) | def test_api_error(self, mock_post, *args): method test_network_error (line 339) | def test_network_error(self, mock_post, *args): method test_information_incomplete (line 348) | def test_information_incomplete(self, mock_post, *args): class TestGetPercentMatchingScore (line 354) | class TestGetPercentMatchingScore(SimpleTestCase): method test_exact_match (line 356) | def test_exact_match(self): method test_case_sensitive_exact_match (line 360) | def test_case_sensitive_exact_match(self): method test_completely_different_strings (line 364) | def test_completely_different_strings(self): method test_single_character_difference (line 368) | def test_single_character_difference(self): method test_substring_match (line 373) | def test_substring_match(self): method test_empty_string_comparison (line 377) | def test_empty_string_comparison(self): method test_both_empty_strings_perfect_match (line 381) | def test_both_empty_strings_perfect_match(self): method test_none_value_raises_error (line 385) | def test_none_value_raises_error(self): method test_full_name_matching (line 389) | def test_full_name_matching(self): class TestOrderInsensitiveMatchingScore (line 399) | class TestOrderInsensitiveMatchingScore(SimpleTestCase): method test_same_order (line 401) | def test_same_order(self): method test_reversed_order (line 405) | def test_reversed_order(self): method test_different_order_three_words (line 409) | def test_different_order_three_words(self): method test_case_insensitive (line 413) | def test_case_insensitive(self): method test_similar_words_different_order (line 417) | def test_similar_words_different_order(self): method test_extra_word_in_one_string (line 422) | def test_extra_word_in_one_string(self): method test_completely_different_names (line 427) | def test_completely_different_names(self): method test_single_word_match (line 431) | def test_single_word_match(self): method test_empty_string_comparison (line 435) | def test_empty_string_comparison(self): method test_both_empty_strings_perfect_match (line 439) | def test_both_empty_strings_perfect_match(self): method test_none_value_raises_error (line 443) | def test_none_value_raises_error(self): method test_leading_trailing_whitespace (line 447) | def test_leading_trailing_whitespace(self): method test_special_characters_in_names (line 451) | def test_special_characters_in_names(self): FILE: corehq/apps/integration/kyc/tests/test_tables.py class TestKycVerifyTable (line 7) | class TestKycVerifyTable(SimpleTestCase): method setUpClass (line 11) | def setUpClass(cls): method test_get_extra_columns (line 30) | def test_get_extra_columns(self): FILE: corehq/apps/integration/kyc/tests/test_views.py class BaseTestKycView (line 30) | class BaseTestKycView(TestCase): method setUpClass (line 34) | def setUpClass(cls): method make_user_with_custom_role (line 53) | def make_user_with_custom_role(cls, username, role_name, has_kyc_acces... method tearDownClass (line 72) | def tearDownClass(cls): method endpoint (line 80) | def endpoint(self): method login_endpoint (line 84) | def login_endpoint(self): method _make_request (line 87) | def _make_request(self, is_logged_in=True): class TestKycConfigurationView (line 93) | class TestKycConfigurationView(BaseTestKycView): method test_not_logged_in (line 96) | def test_not_logged_in(self): method test_ff_not_enabled (line 100) | def test_ff_not_enabled(self): method test_user_without_access (line 105) | def test_user_without_access(self): method test_user_with_access (line 112) | def test_user_with_access(self, *args): method test_success (line 119) | def test_success(self, *args): class TestKycVerificationReportView (line 125) | class TestKycVerificationReportView(BaseTestKycView): method test_not_logged_in (line 128) | def test_not_logged_in(self): method test_ff_not_enabled (line 132) | def test_ff_not_enabled(self): method test_user_without_access (line 137) | def test_user_without_access(self): method test_user_with_access (line 143) | def test_user_with_access(self): method test_success (line 149) | def test_success(self): method test_domain_has_config_context (line 154) | def test_domain_has_config_context(self): method test_domain_has_config_false (line 167) | def test_domain_has_config_false(self): method test_domain_has_config_true (line 176) | def test_domain_has_config_true(self): class TestKycVerificationTableView (line 194) | class TestKycVerificationTableView(BaseTestKycView): method setUpClass (line 198) | def setUpClass(cls): method tearDownClass (line 287) | def tearDownClass(cls): method setUp (line 292) | def setUp(self): method test_not_logged_in (line 300) | def test_not_logged_in(self): method test_ff_not_enabled (line 304) | def test_ff_not_enabled(self): method test_user_without_access (line 309) | def test_user_without_access(self): method test_user_with_access (line 315) | def test_user_with_access(self): method test_success (line 321) | def test_success(self): method test_export_action (line 327) | def test_export_action(self, export_task_mock): method test_response_data_users (line 339) | def test_response_data_users(self): method test_response_data_cases (line 376) | def test_response_data_cases(self): method test_response_data_user_cases (line 425) | def test_response_data_user_cases(self): class TestKycFilters (line 508) | class TestKycFilters(BaseTestKycView): method setUpClass (line 512) | def setUpClass(cls): method tearDownClass (line 587) | def tearDownClass(cls): method _make_request_with_filter (line 592) | def _make_request_with_filter(self, kyc_verification_status=None, phon... method test_status_custom_user_data_verified (line 602) | def test_status_custom_user_data_verified(self): method test_status_other_case_type_pending (line 619) | def test_status_other_case_type_pending(self): method test_status_user_case_verified (line 637) | def test_status_user_case_verified(self): method test_phone_custom_user_data (line 654) | def test_phone_custom_user_data(self): method test_phone_other_case_type (line 672) | def test_phone_other_case_type(self): method test_phone_user_case (line 691) | def test_phone_user_case(self): method test_case_list_filter_other_case_type_filters_by_owner (line 708) | def test_case_list_filter_other_case_type_filters_by_owner(self): method test_verified_by_custom_user_data (line 726) | def test_verified_by_custom_user_data(self): method test_verified_by_other_case_type (line 743) | def test_verified_by_other_case_type(self): function _create_case (line 761) | def _create_case(factory, name, data, case_type='other-case', owner_id=N... FILE: corehq/apps/integration/kyc/views.py class KycConfigurationView (line 64) | class KycConfigurationView(HqHtmxActionMixin, BaseDomainView): method page_url (line 74) | def page_url(self): method section_url (line 78) | def section_url(self): method page_context (line 82) | def page_context(self): method config (line 88) | def config(self): method config_form (line 97) | def config_form(self): method post (line 102) | def post(self, request, *args, **kwargs): class KycVerificationTableView (line 119) | class KycVerificationTableView( method get_host_url (line 127) | def get_host_url(self): method kyc_config (line 131) | def kyc_config(self): method get_table_kwargs (line 134) | def get_table_kwargs(self): method get_queryset (line 149) | def get_queryset(self): method _apply_filters (line 153) | def _apply_filters(self, query): method _apply_case_list_filter (line 168) | def _apply_case_list_filter(self, query): method _apply_kyc_verification_status_filter (line 178) | def _apply_kyc_verification_status_filter(self, kyc_verification_statu... method _apply_verified_by_filter (line 198) | def _apply_verified_by_filter(self, verified_by, query_filters): method _apply_phone_number_filter (line 205) | def _apply_phone_number_filter(self, phone_number, query_filters): method verify_rows (line 217) | def verify_rows(self, request, *args, **kwargs): method export (line 236) | def export(self, request, *args, **kwargs): method _filter_valid_users (line 244) | def _filter_valid_users(self, kyc_users): method _report_success_on_reverification_metric (line 251) | def _report_success_on_reverification_metric(self, existing_failed_use... method _get_existing_failed_users (line 261) | def _get_existing_failed_users(self, kyc_users): class KYCFiltersMixin (line 268) | class KYCFiltersMixin: method fields (line 271) | def fields(self): method filters_context (line 283) | def filters_context(self): method filter_classes (line 298) | def filter_classes(self): class KycVerificationReportView (line 306) | class KycVerificationReportView(BaseDomainView, KYCFiltersMixin): method page_context (line 313) | def page_context(self): method kyc_config (line 322) | def kyc_config(self): method page_url (line 326) | def page_url(self): method section_url (line 330) | def section_url(self): method get (line 333) | def get(self, request, *args, **kwargs): method _report_users_count_metric (line 337) | def _report_users_count_metric(self): FILE: corehq/apps/integration/migrations/0001_initial.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/integration/migrations/0002_dialersettings.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/integration/migrations/0003_hmaccalloutsettings.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/integration/migrations/0004_gaenotpserversettings.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/integration/migrations/0005_gaenotpserversettings_server_type.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/integration/migrations/0006_kycconfig.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/integration/migrations/0007_alter_kycconfig_api_field_to_user_data_map.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/integration/migrations/0008_kycconfig_provider_kycconfig_unique_domain_provider.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/integration/migrations/0009_alter_kycconfig_connection_settings.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/integration/migrations/0010_alter_kycconfig_api_field_to_user_data_map.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/apps/integration/migrations/0011_remove_kycconfig_connection_settings.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/integration/migrations/0012_momoconfig.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/integration/migrations/0013_kycconfig_phone_number_field.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/integration/migrations/0014_kycconfig_passing_threshold.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/integration/migrations/0015_kycconfig_connection_settings_and_more.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/integration/migrations/0016_kycconfig_stores_full_name.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/integration/migrations/0017_drop_tables_for_removed_toggles.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/integration/migrations/0018_momoconfig_provider.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/integration/models.py class SimprintsIntegration (line 10) | class SimprintsIntegration(models.Model): class ApplicationIntegrationMixin (line 18) | class ApplicationIntegrationMixin(object): method is_biometric_enabled (line 26) | def is_biometric_enabled(self): method biometric_context (line 35) | def biometric_context(self): FILE: corehq/apps/integration/payments/const.py class PaymentProperties (line 7) | class PaymentProperties(str, Enum): class PaymentStatus (line 40) | class PaymentStatus(models.TextChoices): method normalize (line 53) | def normalize(cls, value): method from_value (line 69) | def from_value(cls, value): class PaymentStatusErrorCode (line 78) | class PaymentStatusErrorCode(models.TextChoices): FILE: corehq/apps/integration/payments/exceptions.py class PaymentRequestError (line 2) | class PaymentRequestError(Exception): FILE: corehq/apps/integration/payments/filters.py class PaymentVerifiedByFilter (line 18) | class PaymentVerifiedByFilter(BaseSingleOptionFilter): method options (line 24) | def options(self): class PaymentStatusFilter (line 31) | class PaymentStatusFilter(BaseSingleOptionFilter): class PaymentCaseListFilter (line 38) | class PaymentCaseListFilter(CaseListFilter): class BaseCasePropertyFilter (line 42) | class BaseCasePropertyFilter(BaseSingleOptionFilter): method options (line 47) | def options(self): class BatchNumberFilter (line 58) | class BatchNumberFilter(BaseCasePropertyFilter): class CampaignFilter (line 64) | class CampaignFilter(BaseCasePropertyFilter): class ActivityFilter (line 70) | class ActivityFilter(BaseCasePropertyFilter): class FunderFilter (line 76) | class FunderFilter(BaseCasePropertyFilter): class PhoneNumberFilter (line 82) | class PhoneNumberFilter(BaseSimpleFilter): FILE: corehq/apps/integration/payments/forms.py class PaymentConfigureForm (line 19) | class PaymentConfigureForm(forms.ModelForm): class Meta (line 21) | class Meta: method __init__ (line 43) | def __init__(self, *args, **kwargs): method _get_domain_connection_settings (line 79) | def _get_domain_connection_settings(self): method clean_connection_settings (line 84) | def clean_connection_settings(self): method clean_environment (line 88) | def clean_environment(self): FILE: corehq/apps/integration/payments/models.py class MoMoEnvironments (line 7) | class MoMoEnvironments(models.TextChoices): class MoMoProviders (line 12) | class MoMoProviders(models.TextChoices): class MoMoConfig (line 17) | class MoMoConfig(models.Model): method get_payment_api_method (line 31) | def get_payment_api_method(self): method get_payment_status_api_method (line 41) | def get_payment_status_api_method(self): FILE: corehq/apps/integration/payments/schemas.py class PartyDetails (line 6) | class PartyDetails: class MTNPaymentTransferDetails (line 12) | class MTNPaymentTransferDetails: class OrangeCameroonPaymentTransferDetails (line 22) | class OrangeCameroonPaymentTransferDetails: FILE: corehq/apps/integration/payments/services.py function request_payments_for_cases (line 38) | def request_payments_for_cases(case_ids, config): function _get_payment_cases_updates (line 46) | def _get_payment_cases_updates(case_ids_chunk, config): function request_payment (line 63) | def request_payment(payment_case: CommCareCase, config: MoMoConfig): function _request_payment (line 95) | def _request_payment(payee_case: CommCareCase, config: MoMoConfig): function make_mtn_payment_request (line 106) | def make_mtn_payment_request(request_data, config: MoMoConfig): function make_orange_cameroon_payment_request (line 156) | def make_orange_cameroon_payment_request(request_data, config: MoMoConfig): function verify_payment_cases (line 245) | def verify_payment_cases(domain, case_ids: list, verifying_user: WebUser): function _validate_payment_cases_for_verification (line 270) | def _validate_payment_cases_for_verification(case_ids, domain): function _validate_payment_case_status (line 277) | def _validate_payment_case_status(case, domain, valid_statuses, operation): function _validate_final_mobile_validation (line 289) | def _validate_final_mobile_validation(case): function _get_cases_updates (line 299) | def _get_cases_updates(case_ids, updates): function _get_transfer_details (line 311) | def _get_transfer_details(payee_case: CommCareCase, config: MoMoConfig): function _get_payee_details (line 336) | def _get_payee_details(case_data: dict) -> PartyDetails: function _validate_payment_request (line 351) | def _validate_payment_request(case_data: dict): function _payment_is_verified (line 358) | def _payment_is_verified(case_data: dict): function _payment_already_requested (line 362) | def _payment_already_requested(case_data: dict): function revert_payment_verification (line 367) | def revert_payment_verification(domain, case_ids: list): function _validate_payment_cases_for_revert (line 376) | def _validate_payment_cases_for_revert(case_ids, domain): function _update_payment_properties_for_revert (line 382) | def _update_payment_properties_for_revert(domain, case_ids: list): function _properties_to_update_for_revert (line 395) | def _properties_to_update_for_revert(): function request_payments_status_for_cases (line 405) | def request_payments_status_for_cases(case_ids, config): function _handle_payment_status_retry (line 431) | def _handle_payment_status_retry(payment_case, status_update=None, reque... function request_payment_status (line 459) | def request_payment_status(payment_case: CommCareCase, config: MoMoConfig): function make_mtn_payment_status_request (line 507) | def make_mtn_payment_status_request(reference_id, config): function make_orange_cameroon_payment_status_request (line 573) | def make_orange_cameroon_payment_status_request(reference_id, config): function _get_status_details (line 630) | def _get_status_details(status, error_code=None): function _get_http_error_code (line 660) | def _get_http_error_code(code, response): function _get_notify_error_details (line 669) | def _get_notify_error_details(domain, case_id, error, transaction_id=None): FILE: corehq/apps/integration/payments/tables.py class PaymentsVerifyTable (line 17) | class PaymentsVerifyTable(BaseHtmxTable, ElasticTable): class Meta (line 33) | class Meta(BaseHtmxTable.Meta): method render_verify_select (line 100) | def render_verify_select(self, record, value): method render_payment_status (line 114) | def render_payment_status(self, record, value): method render_kyc_status (line 143) | def render_kyc_status(self, record, value): FILE: corehq/apps/integration/payments/tests/test_services.py class TestVerifyPaymentCases (line 35) | class TestVerifyPaymentCases(TestCase): method setUpClass (line 40) | def setUpClass(cls): method tearDownClass (line 79) | def tearDownClass(cls): method test_verify_payment_cases (line 87) | def test_verify_payment_cases(self): method test_verify_payments_cases_with_invalid_statuses (line 103) | def test_verify_payments_cases_with_invalid_statuses(self): class TestPaymentRequest (line 123) | class TestPaymentRequest(TestCase): method setUpClass (line 127) | def setUpClass(cls): method tearDownClass (line 146) | def tearDownClass(cls): method test_case_not_verified (line 152) | def test_case_not_verified(self): method test_duplicate_payment_request (line 163) | def test_duplicate_payment_request(self): method test_verified_payment_with_missing_data (line 178) | def test_verified_payment_with_missing_data(self): method test_successful_payment_request (line 196) | def test_successful_payment_request(self, make_payment_request_mock): method _add_cleanup (line 210) | def _add_cleanup(self, case): method _payment_details (line 214) | def _payment_details(self): class TestRequestPaymentsForCases (line 226) | class TestRequestPaymentsForCases(TestCase): method setUpClass (line 230) | def setUpClass(cls): method tearDownClass (line 250) | def tearDownClass(cls): method _create_payment_case (line 256) | def _create_payment_case(self, name, properties): method _payment_details (line 261) | def _payment_details(self): method test_request_payments_for_cases (line 276) | def test_request_payments_for_cases(self, bulk_update_cases_mock, make... method test_request_payments_for_cases_with_some_missing_data (line 300) | def test_request_payments_for_cases_with_some_missing_data( class TestRevertPaymentVerification (line 344) | class TestRevertPaymentVerification(TestCase): method setUpClass (line 348) | def setUpClass(cls): method setUp (line 352) | def setUp(self): method test_revert_verification_success (line 366) | def test_revert_verification_success(self): method test_revert_verification_multiple_cases (line 378) | def test_revert_verification_multiple_cases(self): method test_revert_verification_invalid_status (line 407) | def test_revert_verification_invalid_status(self): method test_revert_verification_empty_case_ids (line 426) | def test_revert_verification_empty_case_ids(self): class TestRequestPaymentStatus (line 431) | class TestRequestPaymentStatus(SimpleTestCase): method setUp (line 433) | def setUp(self): method _assert_result (line 447) | def _assert_result(self, result, expected_status, expected_error): method test_successful_payment_status_request (line 457) | def test_successful_payment_status_request(self): method test_failed_payment_status_request (line 468) | def test_failed_payment_status_request(self): method test_no_transaction_id (line 478) | def test_no_transaction_id(self): method test_http_error_404 (line 486) | def test_http_error_404(self): method test_http_error_500_with_json_response (line 500) | def test_http_error_500_with_json_response(self): method test_http_error_500_with_json_decode_error (line 518) | def test_http_error_500_with_json_decode_error(self): method test_http_error_502_raises_exception (line 533) | def test_http_error_502_raises_exception(self): method test_unexpected_http_error (line 547) | def test_unexpected_http_error(self, mock_notify_error): method test_connection_timeout_error (line 570) | def test_connection_timeout_error(self): method test_connection_error (line 582) | def test_connection_error(self): method test_unexpected_exception (line 595) | def test_unexpected_exception(self, mock_notify_exception): method test_unexpected_status_value (line 612) | def test_unexpected_status_value(self): method test_successful_status_without_reason (line 622) | def test_successful_status_without_reason(self): method test_failed_status_with_reason (line 632) | def test_failed_status_with_reason(self): class TestRequestPaymentsStatusForCases (line 643) | class TestRequestPaymentsStatusForCases(TestCase): method setUpClass (line 648) | def setUpClass(cls): method tearDownClass (line 667) | def tearDownClass(cls): method _create_payment_case (line 672) | def _create_payment_case(self, name, properties): method _mock_side_effect_case_wise (line 677) | def _mock_side_effect_case_wise(mock_responses): method test_request_payments_status_for_cases_success (line 691) | def test_request_payments_status_for_cases_success(self, mock_request_... method test_request_payments_status_for_cases_filters_non_submitted (line 729) | def test_request_payments_status_for_cases_filters_non_submitted(self,... method test_request_payments_status_handles_payment_request_errors (line 763) | def test_request_payments_status_handles_payment_request_errors(self, ... method test_request_payments_status_for_cases_no_submitted_cases (line 810) | def test_request_payments_status_for_cases_no_submitted_cases(self, mo... method test_request_payments_status_for_cases_mixed_scenarios (line 828) | def test_request_payments_status_for_cases_mixed_scenarios(self, mock_... method test_pending_payment_exceeds_retry_count (line 881) | def test_pending_payment_exceeds_retry_count(self, mock_request_status): method test_request_error_exceeds_retry_count (line 904) | def test_request_error_exceeds_retry_count(self, mock_request_status): function _create_case (line 926) | def _create_case(factory, name, data): FILE: corehq/apps/integration/payments/tests/test_views.py class BaseTestPaymentsView (line 42) | class BaseTestPaymentsView(TestCase): method setUpClass (line 46) | def setUpClass(cls): method make_user_with_custom_role (line 65) | def make_user_with_custom_role(cls, username, role_name, has_payments_... method tearDownClass (line 84) | def tearDownClass(cls): method endpoint (line 92) | def endpoint(self): method login_endpoint (line 96) | def login_endpoint(self): method _make_request (line 99) | def _make_request(self, log_in=True, querystring=None): class TestPaymentsVerificationReportView (line 111) | class TestPaymentsVerificationReportView(BaseTestPaymentsView): method test_not_logged_in (line 114) | def test_not_logged_in(self): method test_ff_not_enabled (line 118) | def test_ff_not_enabled(self): method test_user_without_access (line 123) | def test_user_without_access(self): method test_user_with_access (line 131) | def test_user_with_access(self): method test_success (line 139) | def test_success(self): class TestPaymentsVerifyTableView (line 145) | class TestPaymentsVerifyTableView(BaseTestPaymentsView): method setUpClass (line 149) | def setUpClass(cls): method tearDownClass (line 197) | def tearDownClass(cls): method test_not_logged_in (line 203) | def test_not_logged_in(self): method test_ff_not_enabled (line 207) | def test_ff_not_enabled(self): method test_user_without_access (line 212) | def test_user_without_access(self): method test_user_with_access (line 218) | def test_user_with_access(self): method test_success (line 224) | def test_success(self): method test_response_data_rows (line 229) | def test_response_data_rows(self): method test_verify_rows (line 257) | def test_verify_rows(self): method test_verification_invalid_status (line 271) | def test_verification_invalid_status(self): method test_verification_invalid_final_mobile_validation (line 296) | def test_verification_invalid_final_mobile_validation(self): method test_verification_no_cases (line 321) | def test_verification_no_cases(self): method test_verification_limit_crossed (line 333) | def test_verification_limit_crossed(self): method test_verification_status (line 346) | def test_verification_status(self): method test_revert_verification_success (line 365) | def test_revert_verification_success(self): method test_revert_verification_invalid_status (line 396) | def test_revert_verification_invalid_status(self): method test_revert_verification_no_cases (line 423) | def test_revert_verification_no_cases(self): method test_revert_verification_limit_crossed (line 435) | def test_revert_verification_limit_crossed(self): method test_revert_verification_payment_submissions_active (line 457) | def test_revert_verification_payment_submissions_active(self, mock_tas... class TestPaymentsVerifyTableFilterView (line 487) | class TestPaymentsVerifyTableFilterView(BaseTestPaymentsView): method setUpClass (line 491) | def setUpClass(cls): method tearDownClass (line 556) | def tearDownClass(cls): method test_ff_not_enabled (line 561) | def test_ff_not_enabled(self): method test_batch_number_filter_has_none (line 566) | def test_batch_number_filter_has_none(self): method test_batch_number_filter (line 572) | def test_batch_number_filter(self): method test_batch_number_filter_no_value (line 578) | def test_batch_number_filter_no_value(self): method test_payment_status_filter_pending_payments_has_one (line 584) | def test_payment_status_filter_pending_payments_has_one(self): method test_payment_status_filter_request_failed_payments_has_one (line 590) | def test_payment_status_filter_request_failed_payments_has_one(self): method test_case_owner_filter (line 596) | def test_case_owner_filter(self): method test_campaign_filter (line 602) | def test_campaign_filter(self): method test_activity_filter (line 608) | def test_activity_filter(self): method test_funder_filter (line 614) | def test_funder_filter(self): method test_phone_number_filter (line 620) | def test_phone_number_filter(self): class TestPaymentsConfigurationView (line 626) | class TestPaymentsConfigurationView(BaseTestPaymentsView): method setUpClass (line 630) | def setUpClass(cls): method test_not_logged_in (line 640) | def test_not_logged_in(self): method test_ff_not_enabled (line 644) | def test_ff_not_enabled(self): method test_user_without_access (line 649) | def test_user_without_access(self): method test_user_with_access (line 655) | def test_user_with_access(self): method test_success_get (line 661) | def test_success_get(self, *args): method test_success_create (line 670) | def test_success_create(self, *args): function _create_case (line 686) | def _create_case(factory, name, data, owner_id=None): FILE: corehq/apps/integration/payments/views.py class PaymentsFiltersMixin (line 55) | class PaymentsFiltersMixin: method filters_context (line 67) | def filters_context(self): method filter_classes (line 82) | def filter_classes(self): class PaymentsVerificationReportView (line 98) | class PaymentsVerificationReportView(BaseDomainView, PaymentsFiltersMixin): method section_url (line 105) | def section_url(self): method page_context (line 109) | def page_context(self): class PaymentsVerificationTableView (line 123) | class PaymentsVerificationTableView( method get_host_url (line 134) | def get_host_url(self): method get_queryset (line 137) | def get_queryset(self): method get_context_data (line 156) | def get_context_data(self, **kwargs): method export_table_context (line 165) | def export_table_context(self, table): method _get_user_or_cases_verification_status (line 174) | def _get_user_or_cases_verification_status(self, object_list): method kyc_config (line 186) | def kyc_config(self): method _get_user_or_case_ids (line 193) | def _get_user_or_case_ids(object_list): method _apply_filters (line 201) | def _apply_filters(self, query): method _validate_verification_request (line 238) | def _validate_verification_request(self, case_ids): method verify_rows (line 248) | def verify_rows(self, request, *args, **kwargs): method revert_verification (line 274) | def revert_verification(self, request, *args, **kwargs): method _check_for_active_revert_verification_request (line 294) | def _check_for_active_revert_verification_request(self): method revert_verification_request_tracker (line 302) | def revert_verification_request_tracker(self): method _check_for_active_payment_task (line 305) | def _check_for_active_payment_task(self): method _validate_revert_verification_request (line 313) | def _validate_revert_verification_request(self, case_ids): method export (line 325) | def export(self, request, *args, **kwargs): class PaymentConfigurationView (line 337) | class PaymentConfigurationView(HqHtmxActionMixin, BaseDomainView): method section_url (line 347) | def section_url(self): method page_context (line 351) | def page_context(self): method config (line 357) | def config(self): method config_form (line 364) | def config_form(self): method post (line 369) | def post(self, request, *args, **kwargs): FILE: corehq/apps/integration/static/integration/js/checkbox_selection_handler.js function multiCheckboxSelectionHandler (line 11) | function multiCheckboxSelectionHandler(selectRowInputName, selectAllInpu... FILE: corehq/apps/integration/static/integration/js/dialer/amazon-connect-min.js function o (line 1) | function o(s,a){if(!n[s]){if(!e[s]){var c="function"==typeof require&&re... function e (line 1) | function e(e){t(e,e?null:o.credentials)} function n (line 1) | function n(t,e){return new r.util.error(e||new Error,{code:"CredentialsE... function e (line 1) | function e(o,i){if(!o&&i||n===r.length)t(o,i);else{var s=r[n++];(i="func... function n (line 1) | function n(n){t.httpResponse.stream=n,n.on("headers",function(e,o){t.req... function o (line 1) | function o(n){t.error=r.util.error(n,{code:"NetworkingError",region:t.re... function i (line 1) | function i(){var e=r.HttpClient.getInstance(),i=t.request.service.config... function r (line 1) | function r(){} function o (line 1) | function o(t,e){if(e&&void 0!==t&&null!==t)switch(e.type){case"structure... function r (line 1) | function r(){} function o (line 1) | function o(t,e){if(e&&void 0!==t)switch(e.type){case"structure":return f... function r (line 1) | function r(t,e,n,r){o(this,r(t),function(){return n(t,e)})} function r (line 1) | function r(t,e,n){null!==n&&void 0!==n&&g.property.apply(this,arguments)} function o (line 1) | function o(t,e){t.constructor.prototype[e]||g.memoizedProperty.apply(thi... function i (line 1) | function i(t,e,n){e=e||{},r(this,"shape",t.shape),r(this,"api",e.api,!1)... function s (line 1) | function s(t){i.apply(this,arguments),r(this,"isComposite",!0),t.flatten... function a (line 1) | function a(t,e){var n=null,a=!this.isShape;s.apply(this,arguments),a&&(r... function c (line 1) | function c(t,e){var n=this,a=!this.isShape;if(s.apply(this,arguments),a&... function u (line 1) | function u(t,e){var n=!this.isShape;s.apply(this,arguments),n&&(r(this,"... function l (line 1) | function l(){if(i.apply(this,arguments),this.api)switch(this.api.protoco... function p (line 1) | function p(){i.apply(this,arguments),this.toType=g.base64.decode,this.to... function h (line 1) | function h(){p.apply(this,arguments)} function f (line 1) | function f(){i.apply(this,arguments),this.toType=function(t){return"bool... function r (line 1) | function r(){} function o (line 1) | function o(t){return t.isQueryName||"ec2"!==t.api.protocol?t.name:t.name... function i (line 1) | function i(t,e,n,r){a.each(n.members,function(n,i){var a=e[n];if(null!==... function s (line 1) | function s(t,e,n,r){null!==e&&void 0!==e&&("structure"===n.type?i(t,e,n,... function r (line 1) | function r(t,e){o.each(e,function(e,n){"globalEndpoint"!==e&&(void 0!==t... function e (line 1) | function e(r){t.call(r,r.error,r.data,function(o){!1!==o&&(r.hasNextPage... function r (line 1) | function r(t){var e=t.request._waiter,n=!1,r="retry";e.config.acceptors.... function i (line 1) | function i(o){if(o&&(a=r.util.error(a||new Error,o),s._haltHandlersOnErr... function i (line 1) | function i(t){t.isApi?a.prototype.api=t:a.prototype.api=new o(t)} function r (line 1) | function r(t){var e=t.httpRequest.headers[a],n=t.service.getSignerClass(... function o (line 1) | function o(t){var e=t.httpRequest.endpoint,n=i.util.urlParse(t.httpReque... function r (line 1) | function r(t,e){this.currentState=e||null,this.states=t||{}} function r (line 1) | function r(){} function o (line 1) | function o(t,e){switch(e||(e={}),e.type){case"structure":return i(t,e);c... function i (line 1) | function i(t,e){var n={};return null===t?n:(s.each(e.members,function(e,... function r (line 1) | function r(){} function o (line 1) | function o(t,e,n){switch(n.type){case"structure":return function(t,e,n){... function i (line 1) | function i(t,e){var n,r="xmlns";e.xmlNamespaceUri?(n=e.xmlNamespaceUri,e... function r (line 1) | function r(t){var e=t.length;if(e%4>0)throw new Error("Invalid string. L... function o (line 1) | function o(t){return s[t>>18&63]+s[t>>12&63]+s[t>>6&63]+s[63&t]} function i (line 1) | function i(t,e,n){for(var r,i=[],s=e;s=r())throw new RangeError("Attempt to allocate Buffer... function p (line 1) | function p(t,e){if(i.isBuffer(t))return t.length;if("undefined"!=typeof ... function h (line 1) | function h(t,e,n){var r=!1;if((void 0===e||e<0)&&(e=0),e>this.length)ret... function f (line 1) | function f(t,e,n){var r=t[e];t[e]=t[n],t[n]=r} function d (line 1) | function d(t,e,n,r,o){if(0===t.length)return-1;if("string"==typeof n?(r=... function g (line 1) | function g(t,e,n,r,o){function i(t,e){return 1===s?t[e]:t.readUInt16BE(e... function m (line 1) | function m(t,e,n,r){n=Number(n)||0;var o=t.length-n;r?(r=Number(r))>o&&(... function y (line 1) | function y(t,e,n,r){return L(x(e,t.length-n),t,n,r)} function v (line 1) | function v(t,e,n,r){return L(function(t){for(var e=[],n=0;nt.length)throw new RangeError("Index out ... function R (line 1) | function R(t,e,n,r,o){return o||I(t,0,n,4),P.write(t,e,n,r,23,4),n+4} function N (line 1) | function N(t,e,n,r,o){return o||I(t,0,n,8),P.write(t,e,n,r,52,8),n+8} function x (line 1) | function x(t,e){e=e||1/0;for(var n,r=t.length,o=null,i=[],s=0;s=e.length||o>=t.length);++o)e... function r (line 1) | function r(t,e){var n=u[t=t||"sha1"],r=[],s=0;return n||o("algorithm:",t... function o (line 1) | function o(){var t=[].slice.call(arguments).join(" ");throw new Error([t... function r (line 1) | function r(t,e){t[e>>5]|=128<>>9<<4)]=e;for(var n=17325... function o (line 1) | function o(t,e,n,r,o,i){return u(function(t,e){return t<>>32-e}(u(u... function i (line 1) | function i(t,e,n,r,i,s,a){return o(e&n|~e&r,t,e,i,s,a)} function s (line 1) | function s(t,e,n,r,i,s,a){return o(e&r|n&~r,t,e,i,s,a)} function a (line 1) | function a(t,e,n,r,i,s,a){return o(e^n^r,t,e,i,s,a)} function c (line 1) | function c(t,e,n,r,i,s,a){return o(n^(e|~r),t,e,i,s,a)} function u (line 1) | function u(t,e){var n=(65535&t)+(65535&e);return(t>>16)+(e>>16)+(n>>16)<... function r (line 1) | function r(t,e){t[e>>5]|=128<<24-e%32,t[15+(e+64>>9<<4)]=e;for(var n=Arr... function o (line 1) | function o(t,e){var n=(65535&t)+(65535&e);return(t>>16)+(e>>16)+(n>>16)<... function i (line 1) | function i(t,e){return t<>>32-e} function r (line 1) | function r(){this._events=this._events||{},this._maxListeners=this._maxL... function o (line 1) | function o(t){return"function"==typeof t} function i (line 1) | function i(t){return"object"==typeof t&&null!==t} function s (line 1) | function s(t){return void 0===t} function n (line 1) | function n(){this.removeListener(t,n),r||(r=!0,e.apply(this,arguments))} function e (line 1) | function e(t){return null!==t&&"[object Array]"===Object.prototype.toStr... function n (line 1) | function n(t){return null!==t&&"[object Object]"===Object.prototype.toSt... function r (line 1) | function r(t,o){if(t===o)return!0;if(Object.prototype.toString.call(t)!=... function o (line 1) | function o(t){if(""===t||!1===t||null===t)return!0;if(e(t)&&0===t.length... function i (line 1) | function i(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"||"_"===t} function s (line 1) | function s(t){return t>="0"&&t<="9"||"-"===t} function a (line 1) | function a(t){return t>="a"&&t<="z"||t>="A"&&t<="Z"||t>="0"&&t<="9"||"_"... function c (line 1) | function c(){} function u (line 1) | function u(){} function l (line 1) | function l(t){this.runtime=t} function p (line 1) | function p(t){this._interpreter=t,this.functionTable={abs:{_func:this._f... function t (line 1) | function t(){} function r (line 1) | function r(t,e,n,i,s,a){if(t===e)return 0!==t||1/t==1/e;var c=typeof t,u... function r (line 1) | function r(){throw new Error("setTimeout has not been defined")} function o (line 1) | function o(){throw new Error("clearTimeout has not been defined")} function i (line 1) | function i(t){if(l===setTimeout)return setTimeout(t,0);if((l===r||!l)&&s... function s (line 1) | function s(){g&&f&&(g=!1,f.length?d=f.concat(d):m=-1,d.length&&a())} function a (line 1) | function a(){if(!g){var t=i(s);g=!0;for(var e=d.length;e;){for(f=d,d=[];... function c (line 1) | function c(t,e){this.fun=t,this.array=e} function u (line 1) | function u(){} function o (line 1) | function o(t){throw new RangeError(O[t])} function i (line 1) | function i(t,e){for(var n=t.length,r=[];n--;)r[n]=e(t[n]);return r} function s (line 1) | function s(t,e){var n=t.split("@"),r="";n.length>1&&(r=n[0]+"@",t=n[1]);... function a (line 1) | function a(t){for(var e,n,r=[],o=0,i=t.length;o65535&&(e+=P((t-=... function u (line 1) | function u(t){return t-48<10?t-22:t-65<26?t-65:t-97<26?t-97:E} function l (line 1) | function l(t,e){return t+22+75*(t<26)-((0!=e)<<5)} function p (line 1) | function p(t,e,n){var r=0;for(t=n?k(t/T):t>>1,t+=k(t/e);t>L*w>>1;r+=E)t=... function h (line 1) | function h(t){var e,n,r,i,s,a,l,h,f,d,g=[],m=t.length,y=0,v=A,C=_;for((n... function f (line 1) | function f(t){var e,n,r,i,s,c,u,h,f,d,g,m,y,v,C,T=[];for(m=(t=a(t)).leng... function r (line 1) | function r(t,e){return Object.prototype.hasOwnProperty.call(t,e)} function r (line 1) | function r(t,e){if(t.map)return t.map(e);for(var n=[],r=0;r=3&&(r... function i (line 1) | function i(t,e){var n=o.styles[e];return n?"["+o.colors[n][0]+"m"+t+"[... function s (line 1) | function s(t,e){return t} function a (line 1) | function a(t,e,r){if(t.customInspect&&e&&E(e.inspect)&&e.inspect!==n.ins... function c (line 1) | function c(t){return"["+Error.prototype.toString.call(t)+"]"} function u (line 1) | function u(t,e,n,r,o,i){var s,c,u;if((u=Object.getOwnPropertyDescriptor(... function l (line 1) | function l(t){return Array.isArray(t)} function p (line 1) | function p(t){return"boolean"==typeof t} function h (line 1) | function h(t){return null===t} function f (line 1) | function f(t){return"number"==typeof t} function d (line 1) | function d(t){return"string"==typeof t} function g (line 1) | function g(t){return void 0===t} function m (line 1) | function m(t){return y(t)&&"[object RegExp]"===S(t)} function y (line 1) | function y(t){return"object"==typeof t&&null!==t} function v (line 1) | function v(t){return y(t)&&"[object Date]"===S(t)} function b (line 1) | function b(t){return y(t)&&("[object Error]"===S(t)||t instanceof Error)} function E (line 1) | function E(t){return"function"==typeof t} function S (line 1) | function S(t){return Object.prototype.toString.call(t)} function w (line 1) | function w(t){return t<10?"0"+t.toString(10):t.toString(10)} function C (line 1) | function C(t,e){return Object.prototype.hasOwnProperty.call(t,e)} function t (line 1) | function t(t,e,n){if(this.stringify=t.stringify,null==e)throw new Error(... function t (line 1) | function t(t,e){var o;if(null==t)throw new Error("Root element needs a n... function e (line 1) | function e(t,n){if(e.__super__.constructor.call(this,t),null==n)throw ne... function n (line 1) | function n(){this.constructor=t} function e (line 1) | function e(t,n){if(e.__super__.constructor.call(this,t),null==n)throw ne... function n (line 1) | function n(){this.constructor=t} function t (line 1) | function t(t,e,n,r,o,i){if(this.stringify=t.stringify,null==e)throw new ... function t (line 1) | function t(t,e,n){if(this.stringify=t.stringify,null==e)throw new Error(... function t (line 1) | function t(t,e,n,o){if(this.stringify=t.stringify,null==n)throw new Erro... function t (line 1) | function t(t,e,n){if(this.stringify=t.stringify,null==e)throw new Error(... function e (line 1) | function e(t,n,r,i){var s;e.__super__.constructor.call(this,t),o(n)&&(n=... function n (line 1) | function n(){this.constructor=t} function t (line 1) | function t(t,e,n){var r,o;this.documentObject=t,this.stringify=this.docu... function e (line 1) | function e(t,n,r){if(e.__super__.constructor.call(this,t),null==n)throw ... function n (line 1) | function n(){this.constructor=t} function e (line 1) | function e(e){this.parent=e,this.options=this.parent.options,this.string... function t (line 1) | function t(t,e,n){if(this.stringify=t.stringify,null==e)throw new Error(... function e (line 1) | function e(t,n){if(e.__super__.constructor.call(this,t),null==n)throw ne... function n (line 1) | function n(){this.constructor=t} function e (line 1) | function e(e){this.assertLegalChar=t(this.assertLegalChar,this);var r,o,... function e (line 1) | function e(t,n){if(e.__super__.constructor.call(this,t),null==n)throw ne... function n (line 1) | function n(){this.constructor=t} function t (line 1) | function t(t){return Object.prototype.toString.call(t).slice(8,-1).toLow... FILE: corehq/apps/integration/static/integration/js/dialer/connect-streams-min.js function u (line 1) | function u(t,e){if(!a[t]){if(!s[t]){var n="function"==typeof require&&re... function r (line 1) | function r(e,t){if(!r.services.hasOwnProperty(e))throw new Error("Invali... function r (line 1) | function r(e,t){this.hash=new e,this.outer=new e;var n=function(e,t){var... function r (line 1) | function r(){this.state=[1732584193,4023233417,2562383102,271733878],thi... function c (line 1) | function c(e,t,n,r,o,i){return((t=(t+e&4294967295)+(r+i&4294967295)&4294... function s (line 1) | function s(e,t,n,r,o,i,s){return c(t&n|~t&r,e,t,o,i,s)} function u (line 1) | function u(e,t,n,r,o,i,s){return c(t&r|n&~r,e,t,o,i,s)} function l (line 1) | function l(e,t,n,r,o,i,s){return c(t^n^r,e,t,o,i,s)} function p (line 1) | function p(e,t,n,r,o,i,s){return c(n^(t|~r),e,t,o,i,s)} function i (line 1) | function i(){this.h0=1732584193,this.h1=4023233417,this.h2=2562383102,th... function i (line 1) | function i(){this.state=[1779033703,3144134277,1013904242,2773480762,135... function r (line 1) | function r(e){t(e,e?null:n.credentials)} function o (line 1) | function o(e,t){return new i.util.error(t||new Error,{code:"CredentialsE... function f (line 1) | function f(e){var t=e.service,n=t.api||{},r={};return t.config.region&&(... function d (line 1) | function d(e,t){var n={};return function r(o,i,s){s&&null!=i&&"structure... function o (line 1) | function o(e){var t=e.service,n=t.api,r=n.operations?n.operations[e.oper... function a (line 1) | function a(o,i){var e=o.service,t=e.api,n=t.operations?t.operations[o.op... function m (line 1) | function m(e){var t=e.service.api.apiVersion;t&&!e.httpRequest.headers["... function c (line 1) | function c(e){var t,n,r,o,i=e.error,s=e.httpResponse;!i||"InvalidEndpoin... function u (line 1) | function u(e){return 0<=["false","0"].indexOf(e)} function i (line 1) | function i(e){if(8!==e.length)throw new Error("Int64 buffers must be exa... function s (line 1) | function s(e){for(var t=0;t<8;t++)e[t]^=255;for(t=7;-1=n())throw new RangeError("Attempt to allocate Buffer... function f (line 1) | function f(e,t){if(p.isBuffer(e))return e.length;if("undefined"!=typeof ... function t (line 1) | function t(e,t,n){var r,o,i,s=!1;if((void 0===t||t<0)&&(t=0),t>this.leng... function d (line 1) | function d(e,t,n){var r=e[t];e[t]=e[n],e[n]=r} function g (line 1) | function g(e,t,n,r,o){if(0===e.length)return-1;if("string"==typeof n?(r=... function m (line 1) | function m(e,t,n,r,o){var i=1,s=e.length,a=t.length;if(void 0!==r&&("ucs... function y (line 1) | function y(e,t,n,r){return x(function(e){for(var t=[],n=0;ne.length)throw new RangeError("Index out of r... function A (line 1) | function A(e,t,n,r,o){return o||_(e,0,n,4),i.write(e,t,n,r,23,4),n+4} function I (line 1) | function I(e,t,n,r,o){return o||_(e,0,n,8),i.write(e,t,n,r,52,8),n+8} function k (line 1) | function k(e,t){var n;t=t||1/0;for(var r=e.length,o=null,i=[],s=0;s=t.length||o>=e.length);++o)t... function r (line 1) | function r(){this._events=this._events||{},this._maxListeners=this._maxL... function c (line 1) | function c(e){return"function"==typeof e} function u (line 1) | function u(e){return"object"==typeof e&&null!==e} function l (line 1) | function l(e){return void 0===e} function r (line 1) | function r(){this.removeListener(e,r),n||(n=!0,t.apply(this,arguments))} function I (line 1) | function I(e){return null!==e&&"[object Array]"===Object.prototype.toStr... function R (line 1) | function R(e){return null!==e&&"[object Object]"===Object.prototype.toSt... function k (line 1) | function k(e,t){if(e===t)return!0;if(Object.prototype.toString.call(e)!=... function N (line 1) | function N(e){if(""===e||!1===e||null===e)return!0;if(I(e)&&0===e.length... function j (line 1) | function j(e){return"0"<=e&&e<="9"||"-"===e} function r (line 1) | function r(){} function H (line 1) | function H(){} function W (line 1) | function W(e){this.runtime=e} function z (line 1) | function z(e){this._interpreter=e,this.functionTable={abs:{_func:this._f... function s (line 1) | function s(){throw new Error("setTimeout has not been defined")} function a (line 1) | function a(){throw new Error("clearTimeout has not been defined")} function c (line 1) | function c(t){if(r===setTimeout)return setTimeout(t,0);if((r===s||!r)&&s... function f (line 1) | function f(){p&&u&&(p=!1,u.length?l=u.concat(l):h=-1,l.length&&d())} function d (line 1) | function d(){if(!p){var e=c(f);p=!0;for(var t=l.length;t;){for(u=l,l=[];... function g (line 1) | function g(e,t){this.fun=e,this.array=t} function m (line 1) | function m(){} function A (line 1) | function A(e){throw new RangeError(p[e])} function f (line 1) | function f(e,t){for(var n=e.length,r=[];n--;)r[n]=t(e[n]);return r} function d (line 1) | function d(e,t){var n=e.split("@"),r="";return 1>1,e+=w(e/t);h*E>>1 None: method tearDown (line 22) | def tearDown(self) -> None: method test_no_data_dictionary (line 27) | def test_no_data_dictionary(self): method test_dd_ordering_when_single_group (line 32) | def test_dd_ordering_when_single_group(self): method test_dd_ordering_when_multiple_groups (line 43) | def test_dd_ordering_when_multiple_groups(self): method test_dd_ordering_when_multiple_groups_and_unrecognized_group (line 57) | def test_dd_ordering_when_multiple_groups_and_unrecognized_group(self): method _assert_grouping_order_tables (line 78) | def _assert_grouping_order_tables(self, result, expected_result): method _create_case_property (line 99) | def _create_case_property(self, prop_name, group=None): FILE: corehq/apps/reports/tests/test_case_display.py function test_happy_case_display (line 15) | def test_happy_case_display(): function test_bad_case_display (line 25) | def test_bad_case_display(): function test_blank_owner_id (line 34) | def test_blank_owner_id(): function test_null_owner_id (line 41) | def test_null_owner_id(): class TestCaseDisplayWrapper (line 48) | class TestCaseDisplayWrapper(TestCase): method test_location_id_case_property (line 51) | def test_location_id_case_property(self): FILE: corehq/apps/reports/tests/test_case_list_explorer_report.py class TestCaseListExplorer (line 15) | class TestCaseListExplorer(TestCase): method setUpClass (line 17) | def setUpClass(cls): method setUp (line 25) | def setUp(self): method tearDownClass (line 33) | def tearDownClass(cls): method test_with_explorer_columns_legacy (line 38) | def test_with_explorer_columns_legacy(self): method test_with_explorer_columns (line 62) | def test_with_explorer_columns(self): FILE: corehq/apps/reports/tests/test_case_list_report.py class TestCaseListReport (line 20) | class TestCaseListReport(TestCase): method setUpClass (line 22) | def setUpClass(cls): method setUp (line 51) | def setUp(self): method tearDownClass (line 59) | def tearDownClass(cls): method _send_users_to_es (line 65) | def _send_users_to_es(cls): method _send_cases_to_es (line 70) | def _send_cases_to_es(cls): method assert_filters_yield_cases (line 73) | def assert_filters_yield_cases(self, report_slugs, expected_case_ids): method test_with_project_data_slug (line 80) | def test_with_project_data_slug(self): method test_with_deactivated_slug (line 83) | def test_with_deactivated_slug(self): method test_with_web_user_slug (line 86) | def test_with_web_user_slug(self): method test_with_multiple_slugs (line 89) | def test_with_multiple_slugs(self): method test_with_slugs_and_user_ids (line 92) | def test_with_slugs_and_user_ids(self): FILE: corehq/apps/reports/tests/test_datatables.py class DataTablesColumnTests (line 12) | class DataTablesColumnTests(SimpleTestCase): method test_render_is_safe (line 13) | def test_render_is_safe(self): class DataTablesColumnGroupTests (line 19) | class DataTablesColumnGroupTests(SimpleTestCase): method test_empty_group_html_is_empty_string (line 20) | def test_empty_group_html_is_empty_string(self): method test_simple_group_html (line 24) | def test_simple_group_html(self): method test_adds_css_span_of_columns (line 31) | def test_adds_css_span_of_columns(self): method test_render_is_safe (line 40) | def test_render_is_safe(self): method test_render_group_html_joins_columns (line 47) | def test_render_group_html_joins_columns(self, mock_render_html): method test_render_group_html_does_not_escape_child_columns (line 58) | def test_render_group_html_does_not_escape_child_columns(self, mock_re... method test_render_group_html_escapes_unsafe_child_columns (line 67) | def test_render_group_html_escapes_unsafe_child_columns(self, mock_ren... method test_render_group_html_is_safe (line 75) | def test_render_group_html_is_safe(self): class DataTablesHeaderTests (line 83) | class DataTablesHeaderTests(SimpleTestCase): method test_empty_headers (line 84) | def test_empty_headers(self): method test_output_from_columns (line 89) | def test_output_from_columns(self, mock_render_html): method test_output_from_groups (line 98) | def test_output_from_groups(self, mock_render_html, mock_render_group_... method test_output_is_safe (line 107) | def test_output_is_safe(self, mock_render_html): FILE: corehq/apps/reports/tests/test_datatables_columns.py class DataTablesColumnTests (line 5) | class DataTablesColumnTests(SimpleTestCase): method test_render_html_full_output (line 6) | def test_render_html_full_output(self): method test_render_html_escapes_title (line 16) | def test_render_html_escapes_title(self): class DataTablesColumnGroupTests (line 27) | class DataTablesColumnGroupTests(SimpleTestCase): class SimpleColumn (line 29) | class SimpleColumn(DataTablesColumn): method render_html (line 31) | def render_html(self): method test_render_html_with_no_columns (line 34) | def test_render_html_with_no_columns(self): method test_render_html_with_columns (line 38) | def test_render_html_with_columns(self): method test_render_group_html (line 49) | def test_render_group_html(self): FILE: corehq/apps/reports/tests/test_daterange.py class DateRangeTest (line 14) | class DateRangeTest(SimpleTestCase): method test_no_exceptions_on_simple_calls (line 16) | def test_no_exceptions_on_simple_calls(self): method test_exceptions_on_complex_calls (line 20) | def test_exceptions_on_complex_calls(self): class KnownRangesTests (line 27) | class KnownRangesTests(SimpleTestCase): method setUp (line 29) | def setUp(self): method test_since (line 34) | def test_since(self): method test_range (line 40) | def test_range(self): method test_thismonth (line 52) | def test_thismonth(self): method test_lastmonth (line 57) | def test_lastmonth(self): method test_lastyear (line 62) | def test_lastyear(self): method test_last7 (line 67) | def test_last7(self): method test_last30 (line 72) | def test_last30(self): method test_lastn (line 77) | def test_lastn(self): method test_currentindianfinancialyear (line 83) | def test_currentindianfinancialyear(self): FILE: corehq/apps/reports/tests/test_dispatcher.py class ProjectReportDispatcherTests (line 7) | class ProjectReportDispatcherTests(TestCase): method setUpClass (line 9) | def setUpClass(cls): method tearDownClass (line 14) | def tearDownClass(cls): method test_no_domain_has_no_reports (line 17) | def test_no_domain_has_no_reports(self): method test_new_domain_contains_core_reports (line 21) | def test_new_domain_contains_core_reports(self): method test_get_report_returns_none_if_not_found (line 33) | def test_get_report_returns_none_if_not_found(self): method test_get_report_returns_found_report (line 37) | def test_get_report_returns_found_report(self): class AdminReportDispatcherTests (line 42) | class AdminReportDispatcherTests(SimpleTestCase): method test_get_reports_returns_all_admin_reports (line 43) | def test_get_reports_returns_all_admin_reports(self): class DomainReportDispatcherTests (line 61) | class DomainReportDispatcherTests(SimpleTestCase): method test_get_reports_returns_correct_report_names (line 62) | def test_get_reports_returns_correct_report_names(self): FILE: corehq/apps/reports/tests/test_display.py class TestXmlnsToName (line 16) | class TestXmlnsToName(SimpleTestCase): method test_xmlns_to_name (line 25) | def test_xmlns_to_name(self, expected, xmlns, form_name=None, separato... FILE: corehq/apps/reports/tests/test_enterprise_user_filter.py class BaseEnterpriseUserFilterTest (line 23) | class BaseEnterpriseUserFilterTest(TestCase): method setUpClass (line 25) | def setUpClass(cls): method tearDownClass (line 58) | def tearDownClass(cls): class EnterpriseUserFilterTest (line 66) | class EnterpriseUserFilterTest(BaseEnterpriseUserFilterTest): method setUpClass (line 68) | def setUpClass(cls): method tearDownClass (line 118) | def tearDownClass(cls): method test_active_users_from_source_domain (line 122) | def test_active_users_from_source_domain(self): method test_active_users_from_enterprise_controlled_domain (line 125) | def test_active_users_from_enterprise_controlled_domain(self): method test_active_users_from_other_domain (line 128) | def test_active_users_from_other_domain(self): method test_restricted_user (line 131) | def test_restricted_user(self): method _check_user_results (line 134) | def _check_user_results(self, query_domain, expected_usernames, user): class EnterpriseUserOptionsControllerTest (line 145) | class EnterpriseUserOptionsControllerTest(BaseEnterpriseUserFilterTest): method test_active_users_from_source_domain (line 146) | def test_active_users_from_source_domain(self): method test_active_users_from_enterprise_controlled_domain (line 149) | def test_active_users_from_enterprise_controlled_domain(self): method test_active_users_from_other_domain (line 152) | def test_active_users_from_other_domain(self): method test_active_users_from_source_domain_location_restricted (line 155) | def test_active_users_from_source_domain_location_restricted(self): method get_controller (line 159) | def get_controller(self, domain, can_access_all_locations=False): method _check_user_results (line 164) | def _check_user_results(self, query_domain, expected_usernames): method _check_controller_results (line 168) | def _check_controller_results(self, controller, expected_usernames): function _make_request (line 175) | def _make_request(domain, couch_user, can_access_all_locations=False): FILE: corehq/apps/reports/tests/test_esaccessors.py class TestFormESAccessors (line 81) | class TestFormESAccessors(TestCase): method setUpClass (line 84) | def setUpClass(cls): method tearDownClass (line 99) | def tearDownClass(cls): method _send_form_to_es (line 103) | def _send_form_to_es( method _send_group_to_es (line 129) | def _send_group_to_es(self, _id=None, users=None): method test_media_export_is_too_big (line 141) | def test_media_export_is_too_big(self): method test_get_attachments_size (line 187) | def test_get_attachments_size(self): method test_get_forms (line 226) | def test_get_forms(self): method test_get_forms_with_empty_appid (line 253) | def test_get_forms_with_empty_appid(self): method test_get_form_ids_having_multimedia (line 280) | def test_get_form_ids_having_multimedia(self): method test_get_form_ids_having_multimedia_with_user_types (line 314) | def test_get_form_ids_having_multimedia_with_user_types(self): method test_get_forms_multiple_apps_xmlnss (line 370) | def test_get_forms_multiple_apps_xmlnss(self): method test_basic_completed_by_user (line 436) | def test_basic_completed_by_user(self): method test_get_last_submission_time_for_users (line 445) | def test_get_last_submission_time_for_users(self): method test_completed_out_of_range_by_user (line 454) | def test_completed_out_of_range_by_user(self): method test_completed_different_domain_by_user (line 464) | def test_completed_different_domain_by_user(self): method test_basic_submission_by_user (line 474) | def test_basic_submission_by_user(self): method test_get_form_name_from_last_submission_for_xmlns (line 484) | def test_get_form_name_from_last_submission_for_xmlns(self): method test_guess_form_name_from_xmlns_not_found (line 507) | def test_guess_form_name_from_xmlns_not_found(self): method test_guess_form_name_from_xmlns (line 510) | def test_guess_form_name_from_xmlns(self): method test_submission_out_of_range_by_user (line 519) | def test_submission_out_of_range_by_user(self): method test_submission_different_domain_by_user (line 530) | def test_submission_different_domain_by_user(self): method test_basic_submission_by_date (line 541) | def test_basic_submission_by_date(self): method test_get_paged_forms_by_type (line 557) | def test_get_paged_forms_by_type(self): method test_timezone_differences (line 579) | def test_timezone_differences(self): method test_timezones_ahead_utc_in_get_submission_counts_by_date (line 599) | def test_timezones_ahead_utc_in_get_submission_counts_by_date(self): method test_get_form_counts_by_user_xmlns (line 619) | def test_get_form_counts_by_user_xmlns(self): method test_xmlns_case_sensitivity_for_get_form_counts_by_user_xmlns (line 666) | def test_xmlns_case_sensitivity_for_get_form_counts_by_user_xmlns(self): method test_get_form_duration_stats_by_user (line 684) | def test_get_form_duration_stats_by_user(self): method test_get_form_duration_stats_by_user_decoys (line 738) | def test_get_form_duration_stats_by_user_decoys(self): method test_get_form_duration_stats_for_users (line 808) | def test_get_form_duration_stats_for_users(self): method test_get_form_duration_stats_for_users_decoys (line 857) | def test_get_form_duration_stats_for_users_decoys(self): method test_get_all_user_ids_submitted_without_app_id (line 926) | def test_get_all_user_ids_submitted_without_app_id(self): method test_get_all_user_ids_submitted_with_app_id (line 939) | def test_get_all_user_ids_submitted_with_app_id(self): method test_get_username_in_last_form_submitted (line 954) | def test_get_username_in_last_form_submitted(self): class TestUserESAccessors (line 971) | class TestUserESAccessors(TestCase): method setUpClass (line 974) | def setUpClass(cls): method tearDownClass (line 1011) | def tearDownClass(cls): method _send_user_to_es (line 1017) | def _send_user_to_es(self, is_active=True): method test_active_user_query (line 1021) | def test_active_user_query(self): method test_inactive_user_query (line 1046) | def test_inactive_user_query(self): class TestGroupESAccessors (line 1066) | class TestGroupESAccessors(SimpleTestCase): method setUp (line 1068) | def setUp(self): method _send_group_to_es (line 1072) | def _send_group_to_es(self, name, _id=None, case_sharing=False): method test_group_query (line 1083) | def test_group_query(self): method test_group_search_query (line 1096) | def test_group_search_query(self): class TestCaseESAccessors (line 1117) | class TestCaseESAccessors(TestCase): method setUp (line 1119) | def setUp(self): method _send_case_to_es (line 1127) | def _send_case_to_es(self, method test_scroll_case_names (line 1161) | def test_scroll_case_names(self): method test_get_active_case_counts (line 1178) | def test_get_active_case_counts(self): method test_get_total_case_counts (line 1189) | def test_get_total_case_counts(self): method test_get_active_case_counts_case_type (line 1201) | def test_get_active_case_counts_case_type(self): method test_get_active_case_counts_domain (line 1212) | def test_get_active_case_counts_domain(self): method test_get_total_case_counts_closed (line 1223) | def test_get_total_case_counts_closed(self): method test_get_case_and_action_counts_for_domains (line 1237) | def test_get_case_and_action_counts_for_domains(self): method test_get_total_case_counts_opened_after (line 1250) | def test_get_total_case_counts_opened_after(self): method test_get_case_counts_opened_by_user (line 1261) | def test_get_case_counts_opened_by_user(self): method test_get_case_counts_closed_by_user (line 1271) | def test_get_case_counts_closed_by_user(self): method test_get_case_counts_opened_domain (line 1285) | def test_get_case_counts_opened_domain(self): method test_get_case_counts_opened_case_type (line 1294) | def test_get_case_counts_opened_case_type(self): method test_get_case_counts_in_last (line 1303) | def test_get_case_counts_in_last(self): method test_get_case_types (line 1324) | def test_get_case_types(self): method test_get_case_types_case_sensitive (line 1335) | def test_get_case_types_case_sensitive(self): method test_get_case_types_caching (line 1341) | def test_get_case_types_caching(self): method test_case_by_identifier (line 1356) | def test_case_by_identifier(self): method test_location_restricted_cases (line 1378) | def test_location_restricted_cases(self): FILE: corehq/apps/reports/tests/test_export_api.py class IndicesConversionTest (line 9) | class IndicesConversionTest(SimpleTestCase): function test_convert_legacy_indices_to_export_properties (line 21) | def test_convert_legacy_indices_to_export_properties(self, indices, expe... FILE: corehq/apps/reports/tests/test_export_response.py class ExportResponseTest (line 15) | class ExportResponseTest(TestCase): method setUpClass (line 19) | def setUpClass(cls): method tearDownClass (line 28) | def tearDownClass(cls): method test_export_response_returns_200 (line 33) | def test_export_response_returns_200(self): method test_export_response_returns_200_with_file (line 50) | def test_export_response_returns_200_with_file(self): method test_export_response_caches_file_response (line 70) | def test_export_response_caches_file_response(self, export_from_tables... method test_export_response_does_not_cache_tasks (line 92) | def test_export_response_does_not_cache_tasks(self, task_mock): FILE: corehq/apps/reports/tests/test_filters.py class TestEmwfPagination (line 29) | class TestEmwfPagination(SimpleTestCase): method make_data_source (line 31) | def make_data_source(self, options): method data_sources (line 46) | def data_sources(self): method test_first_page (line 54) | def test_first_page(self): method test_second_page (line 62) | def test_second_page(self): method test_query_first_page (line 70) | def test_query_first_page(self): method test_query_no_matches (line 76) | def test_query_no_matches(self): class FormsByApplicationFilterDbTest (line 83) | class FormsByApplicationFilterDbTest(SetupSimpleAppMixin, TestCase): method setUpClass (line 86) | def setUpClass(cls): method test_get_filtered_data_by_app_id_missing (line 90) | def test_get_filtered_data_by_app_id_missing(self): method test_get_filtered_data_by_app_id (line 98) | def test_get_filtered_data_by_app_id(self): method test_get_filtered_data_by_module_id_missing (line 108) | def test_get_filtered_data_by_module_id_missing(self): method test_get_filtered_data_by_module_id (line 117) | def test_get_filtered_data_by_module_id(self): class TestExpandedMobileWorkerFilter (line 130) | class TestExpandedMobileWorkerFilter(TestCase): method setUp (line 131) | def setUp(self): method tearDown (line 143) | def tearDown(self): method test_get_assigned_locations_default (line 148) | def test_get_assigned_locations_default(self, assigned_locations_patch): class TestLocationRestrictedMobileWorkerFilter (line 155) | class TestLocationRestrictedMobileWorkerFilter(TestCase): method setUp (line 156) | def setUp(self): method tearDown (line 169) | def tearDown(self): method test_default_selections_for_full_access (line 174) | def test_default_selections_for_full_access(self, assigned_locations_p... method test_default_selections_for_restricted_access (line 182) | def test_default_selections_for_restricted_access(self, assigned_locat... method test_selections_for_restricted_access (line 190) | def test_selections_for_restricted_access(self, assigned_locations_pat... class TestCaseListFilter (line 220) | class TestCaseListFilter(TestCase): method setUp (line 221) | def setUp(self): method tearDown (line 234) | def tearDown(self): method test_default_selections_for_full_access (line 239) | def test_default_selections_for_full_access(self, assigned_locations_p... method test_default_selections_for_restricted_access (line 247) | def test_default_selections_for_restricted_access(self, assigned_locat... function _make_filter (line 255) | def _make_filter(slug, value): class TestEMWFilterOutput (line 260) | class TestEMWFilterOutput(TestCase): method setUpTestData (line 262) | def setUpTestData(cls): function test_user_es_query (line 345) | def test_user_es_query(self, slugs, expected_ids): function test_restricted_user_es_query (line 360) | def test_restricted_user_es_query(self, slugs, expected_ids): FILE: corehq/apps/reports/tests/test_form_export.py class FormMultimediaExportTest (line 22) | class FormMultimediaExportTest(SimpleTestCase): method test_get_export_properties (line 24) | def test_get_export_properties(self): method test_extract_form_attachment_info (line 67) | def test_extract_form_attachment_info(self): FILE: corehq/apps/reports/tests/test_forms.py class EmailReportFormTests (line 5) | class EmailReportFormTests(SimpleTestCase): method test_get_readable_errors_prefixes_label_for_field_specific_errors (line 6) | def test_get_readable_errors_prefixes_label_for_field_specific_errors(... method test_readable_errors_excludes_label_for_formwide_errors (line 11) | def test_readable_errors_excludes_label_for_formwide_errors(self): FILE: corehq/apps/reports/tests/test_generic.py class GenericTabularReportTests (line 12) | class GenericTabularReportTests(SimpleTestCase): method test_strip_tags_html_bytestring (line 14) | def test_strip_tags_html_bytestring(self): method test_strip_tags_html_unicode (line 22) | def test_strip_tags_html_unicode(self): method test_strip_tags_passthru (line 30) | def test_strip_tags_passthru(self): method test_strip_tags_expected_fail (line 39) | def test_strip_tags_expected_fail(self): method test_pagination_exceeds_max_rows (line 47) | def test_pagination_exceeds_max_rows(self): class SanitizeRowTests (line 63) | class SanitizeRowTests(SimpleTestCase): method test_normal_output (line 64) | def test_normal_output(self): method test_escapes_rows (line 70) | def test_escapes_rows(self): method test_does_not_escape_safe_text (line 76) | def test_does_not_escape_safe_text(self): method test_handles_rows (line 82) | def test_handles_rows(self): FILE: corehq/apps/reports/tests/test_message_event_display.py function test_get_status_display_escapes_error_message (line 7) | def test_get_status_display_escapes_error_message(): FILE: corehq/apps/reports/tests/test_message_log_report.py class MessageLogReportTest (line 21) | class MessageLogReportTest(TestCase): method test_basic_functionality (line 24) | def test_basic_functionality(self): method test_event_column (line 32) | def test_event_column(self): method test_include_erroring_sms_status (line 45) | def test_include_erroring_sms_status(self): method setUpClass (line 54) | def setUpClass(cls): method tearDownClass (line 63) | def tearDownClass(cls): method get_report_column (line 68) | def get_report_column(self, column_header): method get_report_rows (line 71) | def get_report_rows(self): method make_simple_sms (line 83) | def make_simple_sms(self, message, error_message=None): method make_case_rule_sms (line 87) | def make_case_rule_sms(self, rule_name): method make_survey_sms (line 93) | def make_survey_sms(self, rule_name): FILE: corehq/apps/reports/tests/test_models.py class TestTempUserUsernameInReport (line 7) | class TestTempUserUsernameInReport(SimpleTestCase): method test_unknown_user_generates_correct_template (line 9) | def test_unknown_user_generates_correct_template(self): method test_escapes_unknown_username (line 15) | def test_escapes_unknown_username(self): method test_demo_user_generates_correct_template (line 20) | def test_demo_user_generates_correct_template(self): method test_admin_user_generates_correct_template (line 26) | def test_admin_user_generates_correct_template(self): FILE: corehq/apps/reports/tests/test_phone_number_report.py class PhoneNumberReportTestCase (line 12) | class PhoneNumberReportTestCase(TestCase): method setUpClass (line 16) | def setUpClass(cls): method tearDownClass (line 26) | def tearDownClass(cls): method add_web_user_phone_number (line 31) | def add_web_user_phone_number(self, pending_verification=False, verifi... method request (line 44) | def request(self, filter_type='contact', phone_number_filter='', method test_user_with_number (line 58) | def test_user_with_number(self): method test_user_without_number (line 62) | def test_user_without_number(self): method test_unverified_number (line 69) | def test_unverified_number(self): method test_verified_number (line 74) | def test_verified_number(self): method test_verified_pending_number (line 79) | def test_verified_pending_number(self): method test_phone_number_filter (line 84) | def test_phone_number_filter(self): method test_number_already_in_use (line 93) | def test_number_already_in_use(self): FILE: corehq/apps/reports/tests/test_project_health.py class SetupProjectPerformanceMixin (line 23) | class SetupProjectPerformanceMixin(object): method class_setup (line 37) | def class_setup(cls): method class_teardown (line 43) | def class_teardown(cls): method make_mobile_worker (line 48) | def make_mobile_worker(cls, username, domain=None): method _setup_users (line 57) | def _setup_users(cls): method _setup_domain (line 63) | def _setup_domain(cls): method _setup_malt_tables (line 68) | def _setup_malt_tables(cls): class MonthlyPerformanceSummaryTests (line 101) | class MonthlyPerformanceSummaryTests(SetupProjectPerformanceMixin, TestC... method setUpClass (line 104) | def setUpClass(cls): method get_summary_for_two_months (line 114) | def get_summary_for_two_months(cls, users_in_group, active_not_deleted... method tearDownClass (line 136) | def tearDownClass(cls): method test_number_of_active_users (line 141) | def test_number_of_active_users(self): method test_number_of_performing_users (line 147) | def test_number_of_performing_users(self): method test_helper_get_all_user_stubs (line 153) | def test_helper_get_all_user_stubs(self): method test_filter_by_selected_users (line 159) | def test_filter_by_selected_users(self): method test_filter_by_app_id (line 170) | def test_filter_by_app_id(self): class ProjectHealthDashboardTest (line 184) | class ProjectHealthDashboardTest(SetupProjectPerformanceMixin, TestCase): method setUpClass (line 190) | def setUpClass(cls): method tearDownClass (line 199) | def tearDownClass(cls): method _setup_group (line 205) | def _setup_group(cls): method _assign_user_to_group (line 211) | def _assign_user_to_group(cls): method _setup_web_user (line 215) | def _setup_web_user(cls): method _setup_dashboard (line 221) | def _setup_dashboard(cls): method test_get_users_by_group_filter (line 225) | def test_get_users_by_group_filter(self): FILE: corehq/apps/reports/tests/test_readable_formdata.py class ReadableFormdataTest (line 31) | class ReadableFormdataTest(SimpleTestCase): method test (line 35) | def test(self): method test_repeat (line 104) | def test_repeat(self): method test_repeat_empty (line 264) | def test_repeat_empty(self): method _test_corpus (line 317) | def _test_corpus(self, slug): method test_mismatched_group_hierarchy (line 347) | def test_mismatched_group_hierarchy(self): method test_top_level_refless_group (line 350) | def test_top_level_refless_group(self): class ReadableFormTest (line 355) | class ReadableFormTest(TestCase): method setUp (line 357) | def setUp(self): method tearDown (line 361) | def tearDown(self): method test_get_readable_data_for_submission (line 365) | def test_get_readable_data_for_submission(self): method test_get_data_cleaning_data (line 385) | def test_get_data_cleaning_data(self, questions_patch): FILE: corehq/apps/reports/tests/test_report_api.py function unity (line 19) | def unity(x): class UserDataSource (line 23) | class UserDataSource(SqlData): method __init__ (line 26) | def __init__(self, config, keys=None, filters=None, group_by=None): method group_by (line 33) | def group_by(self): method filters (line 37) | def filters(self): method keys (line 41) | def keys(self): method usernames_demo (line 45) | def usernames_demo(self): method username (line 48) | def username(self, key): method columns (line 52) | def columns(self): class ReportAPITest (line 73) | class ReportAPITest(unittest.TestCase): method setUpClass (line 76) | def setUpClass(cls): method tearDownClass (line 81) | def tearDownClass(cls): method test_basic (line 85) | def test_basic(self): method test_filter (line 103) | def test_filter(self): FILE: corehq/apps/reports/tests/test_scheduled_reports.py class TestLocationRestrictedScheduledReportViews (line 27) | class TestLocationRestrictedScheduledReportViews(TestCase): method setUpClass (line 31) | def setUpClass(cls): method tearDownClass (line 44) | def tearDownClass(cls): method setUp (line 49) | def setUp(self): method tearDown (line 62) | def tearDown(self): method test_location_restricted_user_can_access_reports_home_view (line 67) | def test_location_restricted_user_can_access_reports_home_view(self): method test_location_restricted_user_cannot_access_reports_home_view_when_ff_not_enabled (line 72) | def test_location_restricted_user_cannot_access_reports_home_view_when... method test_location_restricted_user_can_access_scheduled_report_view (line 78) | def test_location_restricted_user_can_access_scheduled_report_view(self): method test_location_restricted_user_cannot_access_scheduled_report_view_when_ff_not_enabled (line 83) | def test_location_restricted_user_cannot_access_scheduled_report_view_... method test_location_restricted_user_can_delete_scheduled_report (line 89) | def test_location_restricted_user_can_delete_scheduled_report(self): method test_location_restricted_user_cannot_delete_scheduled_report_when_ff_not_enabled (line 99) | def test_location_restricted_user_cannot_delete_scheduled_report_when_... method test_location_restricted_user_can_send_scheduled_report (line 108) | def test_location_restricted_user_can_send_scheduled_report(self): method test_location_restricted_user_cannot_send_scheduled_report_when_ff_not_enabled (line 118) | def test_location_restricted_user_cannot_send_scheduled_report_when_ff... method test_location_restricted_user_can_delete_saved_report (line 127) | def test_location_restricted_user_can_delete_saved_report(self): method test_location_restricted_user_cannot_delete_saved_report_when_ff_not_enabled (line 136) | def test_location_restricted_user_cannot_delete_saved_report_when_ff_n... method create_report_config (line 143) | def create_report_config(self, domain, owner_id, **kwargs): method create_report_notification (line 149) | def create_report_notification(self, configs, owner_id): function get_web_user (line 163) | def get_web_user(domain, location, permissions, client): FILE: corehq/apps/reports/tests/test_sql_reports.py class BaseReportTest (line 19) | class BaseReportTest(unittest.TestCase): method setUpClass (line 22) | def setUpClass(cls): method tearDownClass (line 34) | def tearDownClass(cls): method _get_report_data (line 39) | def _get_report_data(self, report, startdate, enddate): method _get_request (line 57) | def _get_request(self, startdate, enddate): method date (line 63) | def date(self, d): class SimpleReportTest (line 67) | class SimpleReportTest(BaseReportTest): method test_no_group_no_filter (line 69) | def test_no_group_no_filter(self): method test_no_group_with_filter (line 74) | def test_no_group_with_filter(self): method test_with_group_no_filter (line 81) | def test_with_group_no_filter(self): method test_with_group_with_filter (line 89) | def test_with_group_with_filter(self): method test_extra_keys (line 98) | def test_extra_keys(self): method test_formatting (line 107) | def test_formatting(self): method test_multi_level_grouping (line 118) | def test_multi_level_grouping(self): FILE: corehq/apps/reports/tests/test_supply_accessors.py class LedgerDBAccessorTest (line 19) | class LedgerDBAccessorTest(TestCase): method setUpClass (line 22) | def setUpClass(cls): method tearDownClass (line 30) | def tearDownClass(cls): method setUp (line 37) | def setUp(self): method tearDown (line 43) | def tearDown(self): method _submit_ledgers (line 47) | def _submit_ledgers(self, ledger_blocks): method _set_balance (line 50) | def _set_balance(self, balance, case_id, product_id): method _check_result (line 56) | def _check_result(self, expected, entry_ids=None): method test_one_ledger (line 66) | def test_one_ledger(self): method test_two_ledger (line 75) | def test_two_ledger(self): method test_multiple_entries (line 85) | def test_multiple_entries(self): method test_filter_entries (line 97) | def test_filter_entries(self): FILE: corehq/apps/reports/tests/test_tableau_api_session.py class FakeTableauInstance (line 9) | class FakeTableauInstance(mock.MagicMock): method __init__ (line 11) | def __init__(self): method _create_response (line 20) | def _create_response(self, response_text): method API_version_response (line 26) | def API_version_response(self): method sign_in_response (line 39) | def sign_in_response(self): method get_group_response (line 56) | def get_group_response(self, group_name): method query_groups_response (line 73) | def query_groups_response(self): method get_users_in_group_response (line 110) | def get_users_in_group_response(self): method remove_user_from_group_response (line 141) | def remove_user_from_group_response(self): method create_group_response (line 144) | def create_group_response(self, name): method add_user_to_group_response (line 154) | def add_user_to_group_response(self): method get_groups_for_user_id_response (line 157) | def get_groups_for_user_id_response(self): method create_user_response (line 186) | def create_user_response(self, username, role): method update_user_response (line 198) | def update_user_response(self): method delete_user_response (line 201) | def delete_user_response(self): method sign_out_response (line 204) | def sign_out_response(self): method failure_response (line 207) | def failure_response(self): function _setup_test_tableau_server (line 223) | def _setup_test_tableau_server(test_case, domain): class TestTableauAPISession (line 242) | class TestTableauAPISession(TestCase): method setUp (line 244) | def setUp(self): method test_connected_app_encryption (line 249) | def test_connected_app_encryption(self): method _assert_subset (line 257) | def _assert_subset(self, d1, d2): method _create_session (line 261) | def _create_session(self, mock_request): method _sign_in (line 266) | def _sign_in(self, mock_request, api_session=None): method _sign_out (line 272) | def _sign_out(self, mock_request, api_session=None): method test_create_session_and_sign_in (line 277) | def test_create_session_and_sign_in(self): method test_get_group (line 285) | def test_get_group(self, mock_request): method test_query_groups (line 294) | def test_query_groups(self, mock_request): method test_get_users_in_group (line 303) | def test_get_users_in_group(self, mock_request): method test_create_group (line 312) | def test_create_group(self, mock_request): method test_add_user_to_group (line 321) | def test_add_user_to_group(self, mock_request): method test_remove_user_from_group (line 330) | def test_remove_user_from_group(self, mock_request): method test_get_groups_for_user_id (line 339) | def test_get_groups_for_user_id(self, mock_request): method test_create_user (line 348) | def test_create_user(self, mock_request): method test_update_user (line 358) | def test_update_user(self, mock_request): method test_delete_user (line 367) | def test_delete_user(self, mock_request): method test_failure (line 374) | def test_failure(self, mock_request): FILE: corehq/apps/reports/tests/test_tableau_api_util.py function _mock_create_session_responses (line 22) | def _mock_create_session_responses(test_case): class TestTableauAPIUtil (line 27) | class TestTableauAPIUtil(TestTableauAPISession): method setUp (line 29) | def setUp(self): method test_create_session_for_domain (line 64) | def test_create_session_for_domain(self, mock_request): method test_get_all_tableau_groups (line 70) | def test_get_all_tableau_groups(self, mock_request): method test_get_tableau_groups_by_ids (line 80) | def test_get_tableau_groups_by_ids(self, mock_request): method test_get_tableau_groups_for_user (line 92) | def test_get_tableau_groups_for_user(self, mock_request): method test_add_tableau_user (line 101) | def test_add_tableau_user(self, mock_request): method test_add_repeated_tableau_user (line 114) | def test_add_repeated_tableau_user(self, mock_request): method test_delete_tableau_user (line 125) | def test_delete_tableau_user(self, mock_request): method test_delete_repeated_tableau_user (line 133) | def test_delete_repeated_tableau_user(self, mock_request): method test_update_tableau_user (line 144) | def test_update_tableau_user(self, mock_update_user_remote, mock_reque... method test_update_tableau_user_without_updating_groups (line 177) | def test_update_tableau_user_without_updating_groups(self, mock_update... method test_update_tableau_user_remote (line 190) | def test_update_tableau_user_remote(self, mock_request): method test_get_matching_tableau_users_from_other_domains (line 212) | def test_get_matching_tableau_users_from_other_domains(self): FILE: corehq/apps/reports/tests/test_tasks.py class GetQuestionIdTests (line 17) | class GetQuestionIdTests(SimpleTestCase): method test_returns_question_id_when_found (line 19) | def test_returns_question_id_when_found(self): method test_returns_question_id_when_found_in_nested_form (line 25) | def test_returns_question_id_when_found_in_nested_form(self): method test_returns_question_id_when_found_in_list (line 32) | def test_returns_question_id_when_found_in_list(self): method test_handles_invalid_list_item (line 39) | def test_handles_invalid_list_item(self): method test_returns_none_when_not_found (line 45) | def test_returns_none_when_not_found(self): method test_returns_question_id_when_found_as_abs_path_basename (line 51) | def test_returns_question_id_when_found_as_abs_path_basename(self): method test_returns_none_when_found_as_rel_path_basename (line 57) | def test_returns_none_when_found_as_rel_path_basename(self): class TestMultimediaZipFile (line 69) | class TestMultimediaZipFile(SimpleTestCase): method test_files_with_same_name_should_be_uniqued (line 71) | def test_files_with_same_name_should_be_uniqued(self, ignore): class TestMakeUniqueFilename (line 95) | class TestMakeUniqueFilename(SimpleTestCase): method test_collision_with_generated_unique_name (line 97) | def test_collision_with_generated_unique_name(self): method test_collision_with_multiple_generated_names (line 103) | def test_collision_with_multiple_generated_names(self): class FakeForm (line 112) | class FakeForm: method get_attachment (line 115) | def get_attachment(self, name): function _attachment (line 119) | def _attachment(question_id): FILE: corehq/apps/reports/tests/test_time_and_date_manipulations.py class TimeAndDateManipulationTest (line 10) | class TimeAndDateManipulationTest(SimpleTestCase): method test_calculate_hour (line 12) | def test_calculate_hour(self): method test_recalculate_hour (line 22) | def test_recalculate_hour(self): method test_calculate_day (line 31) | def test_calculate_day(self): FILE: corehq/apps/reports/tests/test_util.py class TestDateSpanFromBeginning (line 32) | class TestDateSpanFromBeginning(SimpleTestCase): method test_start_and_end_date_dont_change_in_utc (line 33) | def test_start_and_end_date_dont_change_in_utc(self): method test_start_and_end_date_can_change_if_behind_utc (line 42) | def test_start_and_end_date_can_change_if_behind_utc(self): class TestGetUserType (line 53) | class TestGetUserType(SimpleTestCase): method setUp (line 54) | def setUp(self): method test_unknown_user (line 63) | def test_unknown_user(self): method test_system_user (line 66) | def test_system_user(self): method test_system_update (line 70) | def test_system_update(self): method test_display_user (line 79) | def test_display_user(self, _): function test_get_user_id (line 84) | def test_get_user_id(): function test_get_user_id_cached (line 91) | def test_get_user_id_cached(): function test_get_user_id_not_found (line 98) | def test_get_user_id_not_found(): function get_form (line 109) | def get_form(form_id): function form_not_found (line 114) | def form_not_found(form_id): function reset_cache (line 118) | def reset_cache(form_id, value=None): class TestDomainCopiedCasesByOwner (line 127) | class TestDomainCopiedCasesByOwner(TestCase): method setUpClass (line 130) | def setUpClass(cls): method tearDownClass (line 135) | def tearDownClass(cls): method test_no_copied_cases_for_owner (line 139) | def test_no_copied_cases_for_owner(self): method test_user_have_no_copied_cases (line 142) | def test_user_have_no_copied_cases(self): method test_user_have_copied_cases (line 149) | def test_user_have_copied_cases(self): method _send_case_to_es (line 157) | def _send_case_to_es( FILE: corehq/apps/reports/tests/test_views.py class TestEmailReport (line 36) | class TestEmailReport(TestCase): method test_user_can_send_email (line 41) | def test_user_can_send_email(self, mock_send_email): method test_email_is_sent_to_recipient_list (line 48) | def test_email_is_sent_to_recipient_list(self, mock_send_email): method test_owner_flag_adds_owner_email_to_recipient_list (line 59) | def test_owner_flag_adds_owner_email_to_recipient_list(self, mock_send... method test_invalid_form_returns_bad_request (line 72) | def test_invalid_form_returns_bad_request(self): method test_invalid_slug_returns_404 (line 78) | def test_invalid_slug_returns_404(self): method test_when_user_cannot_view_report_receives_404 (line 82) | def test_when_user_cannot_view_report_receives_404(self): method test_disallowed_request_get_method (line 87) | def test_disallowed_request_get_method(self): method email_report (line 93) | def email_report(self, domain=None, report_name='worker_activity'): method setUpClass (line 98) | def setUpClass(cls): method tearDownClass (line 104) | def tearDownClass(cls): method setUp (line 108) | def setUp(self): method tearDown (line 125) | def tearDown(self): method _create_request (line 131) | def _create_request(self, params=None, method='post'): method _set_user_report_access (line 149) | def _set_user_report_access(self, *report_names): class TestDeleteConfig (line 153) | class TestDeleteConfig(TestCase): method test_invalid_config_id_returns_404 (line 154) | def test_invalid_config_id_returns_404(self): method test_mismatched_domains_returns_404 (line 158) | def test_mismatched_domains_returns_404(self): method test_non_owner_cannot_delete_saved_report (line 164) | def test_non_owner_cannot_delete_saved_report(self): method test_can_delete_saved_report (line 170) | def test_can_delete_saved_report(self): method delete_config (line 180) | def delete_config(self, domain=None, config_id='test'): method setUpClass (line 185) | def setUpClass(cls): method tearDownClass (line 193) | def tearDownClass(cls): method setUp (line 198) | def setUp(self): method _create_request (line 202) | def _create_request(self): method _create_saved_report (line 208) | def _create_saved_report(self, domain=None, user_id=None): class TestDeleteScheduledReport (line 223) | class TestDeleteScheduledReport(TestCase): method test_invalid_report_redirects (line 224) | def test_invalid_report_redirects(self): method test_mismatched_domains_returns_404 (line 228) | def test_mismatched_domains_returns_404(self): method test_user_without_permissions_cannot_delete_report (line 234) | def test_user_without_permissions_cannot_delete_report(self): method test_owner_can_delete_report (line 241) | def test_owner_can_delete_report(self, mock_success): method test_domain_admin_can_delete_report (line 250) | def test_domain_admin_can_delete_report(self, mock_success): method delete_scheduled_report (line 260) | def delete_scheduled_report(self, user=None, domain=None, report_id='t... method setUpClass (line 268) | def setUpClass(cls): method tearDownClass (line 277) | def tearDownClass(cls): method setUp (line 282) | def setUp(self): method _create_user (line 286) | def _create_user(self, username='test_user', is_admin=False): method _create_request (line 293) | def _create_request(self): method _create_report (line 299) | def _create_report(self, domain=None, owner_id=None): class TestSendTestScheduledReport (line 308) | class TestSendTestScheduledReport(TestCase): method test_invalid_report_raises_404 (line 309) | def test_invalid_report_raises_404(self): method test_mismatched_domains_returns_404 (line 313) | def test_mismatched_domains_returns_404(self): method test_owner_can_send_report (line 320) | def test_owner_can_send_report(self, mock_success): method test_domain_admin_can_send_report (line 327) | def test_domain_admin_can_send_report(self, mock_success): method send_scheduled_report (line 336) | def send_scheduled_report(self, report_id, domain=None, user=None): method setUpClass (line 344) | def setUpClass(cls): method tearDownClass (line 353) | def tearDownClass(cls): method setUp (line 358) | def setUp(self): method _create_user (line 362) | def _create_user(self, username='test_user', is_admin=False): method _create_request (line 369) | def _create_request(self): method _create_saved_report (line 375) | def _create_saved_report(self, domain=None, owner_id=None): class TestExportReport (line 385) | class TestExportReport(TestCase): method test_invalid_hash_returns_404 (line 386) | def test_invalid_hash_returns_404(self): method test_mismatched_domain_returns_404 (line 390) | def test_mismatched_domain_returns_404(self): method test_user_lacking_permissions_returns_error (line 396) | def test_user_lacking_permissions_returns_error(self): method test_authorized_user_can_retrieve_report (line 403) | def test_authorized_user_can_retrieve_report(self): method retrieve_exported_report (line 410) | def retrieve_exported_report(self, export_id=None, domain=None): method setUpClass (line 422) | def setUpClass(cls): method tearDownClass (line 430) | def tearDownClass(cls): method setUp (line 434) | def setUp(self): method tearDown (line 454) | def tearDown(self): method _create_request (line 459) | def _create_request(self): method _set_user_report_access (line 465) | def _set_user_report_access(self, *report_names): method _generate_report (line 470) | def _generate_report(self, export_id=None, report_name='test_report', ... class TestViewScheduledReport (line 485) | class TestViewScheduledReport(TestCase): method test_missing_report_returns_404 (line 486) | def test_missing_report_returns_404(self): method test_mismatched_domains_returns_404 (line 490) | def test_mismatched_domains_returns_404(self): method test_user_with_no_report_access_receives_404 (line 496) | def test_user_with_no_report_access_receives_404(self): method test_user_without_scheduled_report_access_recieves_404 (line 504) | def test_user_without_scheduled_report_access_recieves_404(self): method test_user_without_permissions_receives_error_message (line 510) | def test_user_without_permissions_receives_error_message(self): method test_can_view_scheduled_report (line 518) | def test_can_view_scheduled_report(self): method view_scheduled_report (line 532) | def view_scheduled_report(self, report_id, domain=None): method setUpClass (line 537) | def setUpClass(cls): method tearDownClass (line 543) | def tearDownClass(cls): method setUp (line 547) | def setUp(self): method tearDown (line 561) | def tearDown(self): method _create_request (line 566) | def _create_request(self): method _create_saved_report (line 572) | def _create_saved_report(self, domain=None, user_id=None, slug='worker... method _create_scheduled_report (line 586) | def _create_scheduled_report(self, domain=None, owner_id=None, config_... method _set_user_report_access (line 595) | def _set_user_report_access(self, *report_names): class TestDomainSharedConfigs (line 601) | class TestDomainSharedConfigs(TestCase): method setUp (line 605) | def setUp(self) -> None: method test_domain_does_not_have_shared_configs (line 610) | def test_domain_does_not_have_shared_configs(self): method test_domain_has_shared_configs (line 613) | def test_domain_has_shared_configs(self): method test_config_used_in_multiple_report_notifications (line 631) | def test_config_used_in_multiple_report_notifications(self): method _create_scheduled_report (line 651) | def _create_scheduled_report(self, domain=None, owner_id=None, config_... class TestReportsBase (line 658) | class TestReportsBase(TestCase): method setUpClass (line 664) | def setUpClass(cls): method tearDownClass (line 679) | def tearDownClass(cls): method create_report_notification (line 687) | def create_report_notification(self, configs, owner_id): method create_report_config (line 700) | def create_report_config(self, domain, owner_id, **kwargs): method log_user_in (line 706) | def log_user_in(self, username): class TestUserConfigsWithShared (line 710) | class TestUserConfigsWithShared(TestReportsBase): method setUp (line 712) | def setUp(self) -> None: method test_no_shared_configs (line 717) | def test_no_shared_configs(self): method test_with_shared_config (line 729) | def test_with_shared_config(self): method test_with_other_owner_shared_config (line 745) | def test_with_other_owner_shared_config(self): class TestMySavedReportsView (line 759) | class TestMySavedReportsView(TestReportsBase): method get_shared_saved_reports_for_user (line 763) | def get_shared_saved_reports_for_user(self, username): method test_one_admin_has_report_notifications (line 771) | def test_one_admin_has_report_notifications(self, *args): method test_multiple_admins_can_see_shared_reports (line 784) | def test_multiple_admins_can_see_shared_reports(self, *args): method test_non_admin_can_see_only_own_shared_reports (line 803) | def test_non_admin_can_see_only_own_shared_reports(self, *args): class TestAddSavedReportConfigView (line 822) | class TestAddSavedReportConfigView(TestReportsBase): method test_admin_can_edit_normal_config (line 826) | def test_admin_can_edit_normal_config(self, *args): method test_another_admin_cannot_edit_normal_config (line 852) | def test_another_admin_cannot_edit_normal_config(self, *args): method test_other_admin_can_edit_shared_saved_report (line 880) | def test_other_admin_can_edit_shared_saved_report(self, *args): method test_non_admin_cannot_edit_other_shared_configs (line 909) | def test_non_admin_cannot_edit_other_shared_configs(self): class TestTimezoneConversion (line 938) | class TestTimezoneConversion(TestCase): method setUpClass (line 942) | def setUpClass(cls) -> None: method tearDownClass (line 949) | def tearDownClass(cls) -> None: method test_convert_to_server_timezone (line 953) | def test_convert_to_server_timezone(self): method test_convert_to_domain_timezone (line 971) | def test_convert_to_domain_timezone(self): class TestTableauView (line 991) | class TestTableauView(TestReportsBase): method setUpClass (line 994) | def setUpClass(cls): method _get_tableau_view_response (line 1029) | def _get_tableau_view_response(self, viz): method test_location_restricted_user_cant_access_location_unsafe_report (line 1034) | def test_location_restricted_user_cant_access_location_unsafe_report(s... method test_no_permission_to_tableau_report (line 1038) | def test_no_permission_to_tableau_report(self): method test_location_restricted_user_can_access_location_safe_report (line 1044) | def test_location_restricted_user_can_access_location_safe_report(self): method _get_ticket_view_response (line 1050) | def _get_ticket_view_response(self, viz): method test_ticket_view_location_restricted_user_cant_access_location_unsafe_report (line 1058) | def test_ticket_view_location_restricted_user_cant_access_location_uns... method test_ticket_view_no_permission_to_tableau_report (line 1064) | def test_ticket_view_no_permission_to_tableau_report(self): method test_ticket_view_location_restricted_user_can_access_location_safe_report (line 1071) | def test_ticket_view_location_restricted_user_can_access_location_safe... FILE: corehq/apps/reports/util.py function user_list (line 53) | def user_list(domain): function get_all_users_by_domain (line 61) | def get_all_users_by_domain(domain=None, group=None, user_ids=None, function get_username_from_forms (line 133) | def get_username_from_forms(domain, user_id): function get_user_id_from_form (line 146) | def get_user_id_from_form(form_id): class SimplifiedUserInfo (line 159) | class SimplifiedUserInfo: method group_ids (line 176) | def group_ids(self): method is_active_in_domain (line 181) | def is_active_in_domain(self, domain): method __getitem__ (line 184) | def __getitem__(self, item): method get (line 193) | def get(self, item, default=None): function _report_user (line 201) | def _report_user(user): function _get_username_fragment (line 241) | def _get_username_fragment(username, first='', last=''): function get_simplified_users (line 251) | def get_simplified_users(user_es_query): function format_datatables_data (line 261) | def format_datatables_data(text, sort_key, raw=None): function get_possible_reports (line 270) | def get_possible_reports(domain_name): function friendly_timedelta (line 303) | def friendly_timedelta(td): function batch_qs (line 320) | def batch_qs(qs, num_batches=10, min_batch_size=100000): function numcell (line 343) | def numcell(text, value=None, convert='int', raw=None): function datespan_from_beginning (line 356) | def datespan_from_beginning(domain_object, timezone): function get_null_empty_value_bindparam (line 371) | def get_null_empty_value_bindparam(field_slug): function get_INFilter_element_bindparam (line 375) | def get_INFilter_element_bindparam(base_name, index): function get_INFilter_bindparams (line 379) | def get_INFilter_bindparams(base_name, values): function is_query_too_big (line 384) | def is_query_too_big(domain, mobile_user_and_group_slugs, request_user): function send_report_download_email (line 395) | def send_report_download_email(title, recipient, link, subject=None, dom... class DatatablesPagination (line 415) | class DatatablesPagination: method __init__ (line 424) | def __init__(self, count, start, desc=False, echo=None, search=None, u... method __repr__ (line 441) | def __repr__(self): method echo (line 449) | def echo(self): method desc (line 458) | def desc(self): method search (line 467) | def search(self): method from_request_dict (line 476) | def from_request_dict(cls, query): method from_datatables_params (line 490) | def from_datatables_params(cls, datatables_params): class DatatablesServerSideParams (line 498) | class DatatablesServerSideParams: method __init__ (line 502) | def __init__(self, draw, start, length, columns, order, search, data): method from_request (line 532) | def from_request(cls, request): method _get_columns (line 550) | def _get_columns(request_data): method _get_order (line 571) | def _get_order(request_data): method get_request_data (line 586) | def get_request_data(cls, request): method get_value (line 589) | def get_value(self, param, default_value=None, as_list=False): method get_value_from_data (line 594) | def get_value_from_data(data, param, default_value=None, as_list=False): method get_value_from_request (line 606) | def get_value_from_request(cls, request, param, default_value=None, as... function tableau_username (line 618) | def tableau_username(HQ_username): function _group_json_to_tuples (line 622) | def _group_json_to_tuples(group_json) -> TableauGroupTuple: function get_all_tableau_groups (line 633) | def get_all_tableau_groups(domain, session=None): function get_allowed_tableau_groups_for_domain (line 642) | def get_allowed_tableau_groups_for_domain(domain): function get_tableau_groups_for_user (line 649) | def get_tableau_groups_for_user(domain, username): function _notify_tableau_exception (line 661) | def _notify_tableau_exception(e, domain): function get_tableau_groups_by_ids (line 667) | def get_tableau_groups_by_ids(interested_group_ids: List, domain: str, function get_tableau_groups_by_names (line 676) | def get_tableau_groups_by_names(interested_group_names: List, domain: str, function get_tableau_group_ids_by_names (line 683) | def get_tableau_group_ids_by_names(group_names: List, domain: str, function get_tableau_group_json (line 696) | def get_tableau_group_json(domain: str, session: TableauAPISession = None): function get_matching_tableau_users_from_other_domains (line 701) | def get_matching_tableau_users_from_other_domains(user): function add_tableau_user (line 710) | def add_tableau_user(domain, username): function _add_tableau_user_local (line 733) | def _add_tableau_user_local(session, username, role=DEFAULT_TABLEAU_ROLE): function _add_tableau_user_remote (line 750) | def _add_tableau_user_remote(session, user, role=DEFAULT_TABLEAU_ROLE): function delete_tableau_user (line 760) | def delete_tableau_user(domain, username, session=None): function _delete_user_local (line 777) | def _delete_user_local(session, username): function _delete_user_remote (line 786) | def _delete_user_remote(session, deleted_user_id): function update_tableau_user (line 791) | def update_tableau_user(domain, username, role=None, groups: List[Tablea... function _update_user_remote (line 826) | def _update_user_remote(session, user, groups=[]): function _add_user_to_HQ_group (line 837) | def _add_user_to_HQ_group(session, user): function _get_hq_group_id (line 847) | def _get_hq_group_id(session): function sync_all_tableau_users (line 852) | def sync_all_tableau_users(): function sync_tableau_users_on_domains (line 868) | def sync_tableau_users_on_domains(domains): function is_hq_user (line 934) | def is_hq_user(tableau_username): function tableau_username_to_hq (line 938) | def tableau_username_to_hq(tableau_username): function add_on_tableau_details (line 944) | def add_on_tableau_details(domain, web_user_dicts): function import_tableau_users (line 993) | def import_tableau_users(domain, web_user_specs): function domain_copied_cases_by_owner (line 1038) | def domain_copied_cases_by_owner(domain, owner_ids): function get_commcare_version_and_date_from_last_usage (line 1052) | def get_commcare_version_and_date_from_last_usage(last_submission=None, ... function report_date_to_json (line 1083) | def report_date_to_json(date, timezone, date_format, is_phonetime=True): function store_excel_in_blobdb (line 1094) | def store_excel_in_blobdb(report_class, file, domain, report_slug): FILE: corehq/apps/reports/view_helpers.py function case_hierarchy_context (line 11) | def case_hierarchy_context(case, timezone=None): function _index_to_context (line 57) | def _index_to_context(index, is_ancestor): function _sortkey (line 65) | def _sortkey(child): function get_case_hierarchy (line 72) | def get_case_hierarchy(case): FILE: corehq/apps/reports/views.py function _can_view_form_attachment (line 156) | def _can_view_form_attachment(): function location_restricted_scheduled_reports_enabled (line 175) | def location_restricted_scheduled_reports_enabled(request, *args, **kwar... function reports_home (line 181) | def reports_home(request, domain): class BaseProjectReportSectionView (line 193) | class BaseProjectReportSectionView(BaseDomainView): method dispatch (line 196) | def dispatch(self, request, *args, **kwargs): method section_url (line 205) | def section_url(self): class MySavedReportsView (line 210) | class MySavedReportsView(BaseProjectReportSectionView): method language (line 216) | def language(self): method good_configs (line 220) | def good_configs(self): method scheduled_reports (line 231) | def scheduled_reports(self): method others_scheduled_reports (line 258) | def others_scheduled_reports(self): method shared_saved_reports (line 287) | def shared_saved_reports(self): method _report_sort_key (line 306) | def _report_sort_key(self): method page_context (line 310) | def page_context(self): method report_details (line 348) | def report_details(report, user_email=None, context_secret=None): function should_update_export (line 388) | def should_update_export(last_accessed): function touch_saved_reports_views (line 393) | def touch_saved_reports_views(user, domain): class AddSavedReportConfigView (line 405) | class AddSavedReportConfigView(View): method post (line 409) | def post(self, request, domain, *args, **kwargs): method config (line 456) | def config(self): method saved_report_config_form (line 474) | def saved_report_config_form(self): method filters (line 482) | def filters(self): method post_data (line 490) | def post_data(self): method user_id (line 494) | def user_id(self): method user (line 498) | def user(self): function _querydict_to_dict (line 502) | def _querydict_to_dict(query_dict): class Timezone (line 515) | class Timezone: method __str__ (line 519) | def __str__(self): function email_report (line 526) | def email_report(request, domain, report_slug, dispatcher_class=ProjectR... function _can_email_report (line 549) | def _can_email_report(report_slug, request, dispatcher_class, domain): function delete_config (line 563) | def delete_config(request, domain, config_id): function _can_delete_saved_report (line 581) | def _can_delete_saved_report(report, user, domain): function normalize_hour (line 587) | def normalize_hour(hour): function calculate_hour (line 600) | def calculate_hour(hour, hour_difference, minute_difference): function recalculate_hour (line 607) | def recalculate_hour(hour, hour_difference, minute_difference): function get_timezone_difference (line 614) | def get_timezone_difference(domain): function calculate_day (line 620) | def calculate_day(interval, day, day_change): function _update_instance_time_with_func (line 628) | def _update_instance_time_with_func(report_notification, time_func, minu... function soft_shift_to_domain_timezone (line 651) | def soft_shift_to_domain_timezone(report_notification): function soft_shift_to_server_timezone (line 659) | def soft_shift_to_server_timezone(report_notification): class ScheduledReportsView (line 667) | class ScheduledReportsView(BaseProjectReportSectionView): method dispatch (line 673) | def dispatch(self, request, *args, **kwargs): method scheduled_report_id (line 677) | def scheduled_report_id(self): method can_edit_report (line 680) | def can_edit_report(self, report_instance): method report_notification (line 688) | def report_notification(self): method is_new (line 711) | def is_new(self): method page_name (line 716) | def page_name(self): method owner_id (line 724) | def owner_id(self): method configs (line 732) | def configs(self): method config_choices (line 750) | def config_choices(self): method scheduled_report_form (line 764) | def scheduled_report_form(self): method page_context (line 795) | def page_context(self): method post (line 830) | def post(self, request, *args, **kwargs): class ReportNotificationUnsubscribeView (line 856) | class ReportNotificationUnsubscribeView(TemplateView): method get (line 863) | def get(self, request, *args, **kwargs): method get_context_data (line 885) | def get_context_data(self, **kwargs): method post (line 890) | def post(self, request, *args, **kwargs): function delete_scheduled_report (line 917) | def delete_scheduled_report(request, domain, scheduled_report_id): function _can_delete_scheduled_report (line 960) | def _can_delete_scheduled_report(report, user, domain): function send_test_scheduled_report (line 969) | def send_test_scheduled_report(request, domain, scheduled_report_id): function _can_send_test_report (line 999) | def _can_send_test_report(report_id, user, domain): function get_scheduled_report_response (line 1011) | def get_scheduled_report_response(couch_user, domain, scheduled_report_id, function _render_report_configs (line 1054) | def _render_report_configs(request, configs, domain, owner_id, couch_use... function render_full_report_notification (line 1113) | def render_full_report_notification(request, content, email=None, report... function view_scheduled_report (line 1141) | def view_scheduled_report(request, domain, scheduled_report_id): function _get_form_context (line 1146) | def _get_form_context(request, domain, instance): function _get_form_render_context (line 1163) | def _get_form_render_context(request, domain, instance, case_id=None): function _get_cases_changed_context (line 1221) | def _get_cases_changed_context(domain, form, case_id=None): function _get_properties_display (line 1258) | def _get_properties_display(case_block, assume_phonetimes, timezone): function _get_form_metadata_context (line 1267) | def _get_form_metadata_context(domain, form, timezone, support_enabled=F... function _get_meta_data_display (line 1309) | def _get_meta_data_display(meta, timezone): function _sorted_form_metadata_keys (line 1320) | def _sorted_form_metadata_keys(keys): function _get_edit_info (line 1339) | def _get_edit_info(instance): function _get_display_options (line 1358) | def _get_display_options(request, domain, user, form, support_enabled): function _get_attachments (line 1383) | def _get_attachments(instance, form_data): function safely_get_form (line 1416) | def safely_get_form(request, domain, instance_id): class FormDataView (line 1425) | class FormDataView(BaseProjectReportSectionView): method dispatch (line 1432) | def dispatch(self, request, *args, **kwargs): method instance_id (line 1436) | def instance_id(self): method page_url (line 1440) | def page_url(self): method xform_instance (line 1445) | def xform_instance(self): method form_name (line 1450) | def form_name(self): method page_name (line 1458) | def page_name(self): method parent_pages (line 1462) | def parent_pages(self): method page_context (line 1469) | def page_context(self): function view_form_attachment (line 1482) | def view_form_attachment(request, domain, instance_id, attachment_id): function _ensure_form_access (line 1506) | def _ensure_form_access(request, domain, instance_id, attachment_id): function get_form_attachment_response (line 1514) | def get_form_attachment_response(request, domain, instance_id=None, atta... function case_form_data (line 1536) | def case_form_data(request, domain, case_id, xform_id): function download_form (line 1555) | def download_form(request, domain, instance_id): function restore_edit (line 1568) | def restore_edit(request, domain, instance_id): function archive_form (line 1586) | def archive_form(request, domain, instance_id): function soft_delete_form (line 1624) | def soft_delete_form(request, domain, instance_id): function _get_cases_with_forms_message (line 1637) | def _get_cases_with_forms_message(domain, cases_with_other_forms, case_i... function _get_cases_with_other_forms (line 1661) | def _get_cases_with_other_forms(domain, xform): function _get_case_id_and_redirect_url (line 1673) | def _get_case_id_and_redirect_url(domain, request): function unarchive_form (line 1698) | def unarchive_form(request, domain, instance_id): function get_data_cleaning_updates (line 1713) | def get_data_cleaning_updates(request, old_properties): function edit_form (line 1733) | def edit_form(request, domain, instance_id): function resave_form_view (line 1757) | def resave_form_view(request, domain, instance_id): function _is_location_safe_report_class (line 1767) | def _is_location_safe_report_class(view_fn, request, domain, export_hash... function export_report (line 1785) | def export_report(request, domain, export_hash, format): function project_health_user_details (line 1822) | def project_health_user_details(request, domain, user_id): class TableauServerView (line 1837) | class TableauServerView(BaseProjectReportSectionView): method dispatch (line 1844) | def dispatch(self, request, *args, **kwargs): method tableau_server_form (line 1849) | def tableau_server_form(self): method get_user_syncing_config (line 1855) | def get_user_syncing_config(self): method page_context (line 1880) | def page_context(self): method post (line 1885) | def post(self, request, *args, **kwargs): class TableauVisualizationListView (line 1898) | class TableauVisualizationListView(BaseProjectReportSectionView, CRUDPag... method dispatch (line 1904) | def dispatch(self, request, *args, **kwargs): method total (line 1908) | def total(self): method base_query (line 1912) | def base_query(self): method column_names (line 1916) | def column_names(self): method page_context (line 1925) | def page_context(self): method paginated_list (line 1929) | def paginated_list(self): method _get_item_data (line 1937) | def _get_item_data(self, tableau_visualization): method delete_item (line 1950) | def delete_item(self, item_id): method get_update_form (line 1961) | def get_update_form(self, instance=None): method get_updated_item_data (line 1971) | def get_updated_item_data(self, update_form): method post (line 1978) | def post(self, *args, **kwargs): class TableauVisualizationDetailView (line 1982) | class TableauVisualizationDetailView(BaseProjectReportSectionView, Model... method dispatch (line 1990) | def dispatch(self, request, *args, **kwargs): method get_queryset (line 1993) | def get_queryset(self): method get (line 1996) | def get(self, request, *args, **kwargs): method post (line 2000) | def post(self, request, *args, **kwargs): method get_form_kwargs (line 2004) | def get_form_kwargs(self): method get_success_url (line 2009) | def get_success_url(self): method form_valid (line 2015) | def form_valid(self, form): function get_or_create_filter_hash (line 2023) | def get_or_create_filter_hash(request, domain): function copy_cases (line 2062) | def copy_cases(request, domain, *args, **kwargs): function reassign_cases (line 2090) | def reassign_cases(request, domain, *args, **kwargs): function _get_case_action_data (line 2100) | def _get_case_action_data(request): FILE: corehq/apps/reports_core/exceptions.py class FilterException (line 5) | class FilterException(Exception): class MissingParamException (line 12) | class MissingParamException(FilterException): class FilterValueException (line 16) | class FilterValueException(FilterException): FILE: corehq/apps/reports_core/filters.py class BaseFilter (line 28) | class BaseFilter(object): method __init__ (line 36) | def __init__(self, name, params=None): method get_value (line 44) | def get_value(self, request_params, user=None): method all_required_params_are_in_context (line 64) | def all_required_params_are_in_context(self, context): method value (line 67) | def value(self, **kwargs): method default_value (line 85) | def default_value(self, request_user=None): method context (line 92) | def context(self, request_params, request_user, lang=None): method filter_context (line 107) | def filter_context(self, request_user): class DatespanFilter (line 114) | class DatespanFilter(BaseFilter): method __init__ (line 117) | def __init__(self, name, label='Datespan Filter', css_id=None, compare... method startdate_param_name (line 129) | def startdate_param_name(self): method enddate_param_name (line 133) | def enddate_param_name(self): method value (line 137) | def value(self, **kwargs): method default_value (line 159) | def default_value(self, request_user=None): method filter_context (line 163) | def filter_context(self, request_user): class QuarterFilter (line 169) | class QuarterFilter(BaseFilter): method __init__ (line 172) | def __init__(self, name, label=_('Quarter'), css_id=None, show_all=Fal... method quarter_param_name (line 183) | def quarter_param_name(self): method year_param_name (line 187) | def year_param_name(self): method years (line 191) | def years(self): method filter_context (line 200) | def filter_context(self, request_user): method get_quarter (line 206) | def get_quarter(year, quarter): method default_year (line 210) | def default_year(self): method default_value (line 213) | def default_value(self, request_user=None): method value (line 217) | def value(self, **kwargs): class NumericFilter (line 235) | class NumericFilter(BaseFilter): method __init__ (line 238) | def __init__(self, name, label=_('Numeric Filter'), css_id=None): method operator_param_name (line 248) | def operator_param_name(self): method operand_param_name (line 252) | def operand_param_name(self): method value (line 256) | def value(self, **kwargs): method default_value (line 269) | def default_value(self, request_user=None): class PreFilter (line 273) | class PreFilter(BaseFilter): method __init__ (line 276) | def __init__(self, name, datatype, pre_value, pre_operator=None): method value (line 283) | def value(self, **kwargs): method default_value (line 286) | def default_value(self, request_user=None): class ChoiceListFilter (line 314) | class ChoiceListFilter(BaseFilter): method __init__ (line 320) | def __init__(self, name, field, datatype, label='Choice List Filter', method value (line 334) | def value(self, **kwargs): method default_value (line 346) | def default_value(self, request_user=None): class DynamicChoiceListFilter (line 350) | class DynamicChoiceListFilter(BaseFilter): method __init__ (line 358) | def __init__(self, name, field, datatype, label, show_all, url_generat... method context (line 377) | def context(self, request_params, request_user, lang=None): method _format_values_for_display (line 383) | def _format_values_for_display(self, values): method value (line 393) | def value(self, **kwargs): method default_value (line 403) | def default_value(self, request_user=None): class MultiFieldDynamicChoiceListFilter (line 413) | class MultiFieldDynamicChoiceListFilter(DynamicChoiceListFilter): method __init__ (line 414) | def __init__(self, name, fields, datatype, label, show_all, url_genera... class LocationDrilldownFilter (line 420) | class LocationDrilldownFilter(BaseFilter): method __init__ (line 424) | def __init__(self, name, field, datatype, label, domain, include_desce... method api_root (line 440) | def api_root(self): method user_location_id (line 446) | def user_location_id(self, user): method filter_context (line 450) | def filter_context(self, request_user): method valid_location_ids (line 462) | def valid_location_ids(self, location_id): method value (line 468) | def value(self, **kwargs): method default_value (line 479) | def default_value(self, request_user=None): FILE: corehq/apps/reports_core/static/reports_core/js/charts.js function shouldStaggerXAxis (line 191) | function shouldStaggerXAxis(record) { FILE: corehq/apps/reports_core/templatetags/reports_core_tags.py function ajax_filter_url (line 7) | def ajax_filter_url(domain, report, filter): FILE: corehq/apps/saved_reports/exceptions.py class UnsupportedSavedReportError (line 3) | class UnsupportedSavedReportError(Exception): class UnsupportedScheduledReportError (line 10) | class UnsupportedScheduledReportError(Exception): class ReportNotFound (line 17) | class ReportNotFound(Exception): FILE: corehq/apps/saved_reports/logging.py class ScheduledReportLogger (line 4) | class ScheduledReportLogger: method log_email_success (line 6) | def log_email_success(report, email, body): method log_email_failure (line 22) | def log_email_failure(report, email, body, exception): method log_email_size_failure (line 39) | def log_email_size_failure(report, email, emails, body): FILE: corehq/apps/saved_reports/management/commands/daylight_savings.py class Command (line 7) | class Command(BaseCommand): method add_arguments (line 8) | def add_arguments(self, parser): method handle (line 12) | def handle(self, domains, forward=False, *args, **kwargs): function get_reports_by_domain (line 24) | def get_reports_by_domain(domain): function adjust_report (line 34) | def adjust_report(report, forward=False): FILE: corehq/apps/saved_reports/management/commands/find_saved_reports_with_slug.py class Command (line 9) | class Command(BaseCommand): method add_arguments (line 10) | def add_arguments(self, parser): method handle (line 13) | def handle(self, report_slug, *args, **options): FILE: corehq/apps/saved_reports/management/commands/test_reports.py class Command (line 6) | class Command(BaseCommand): method handle (line 9) | def handle(self, **options): FILE: corehq/apps/saved_reports/migrations/0001_initial.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/saved_reports/migrations/0002_scheduledreportlog.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/saved_reports/models.py class ReportConfig (line 81) | class ReportConfig(CachedCouchDocumentMixin, Document): method delete (line 106) | def delete(self, *args, **kwargs): method by_domain_and_owner (line 120) | def by_domain_and_owner(cls, domain, owner_id, report_slug=None, method shared_on_domain (line 157) | def shared_on_domain(cls, domain, only_id=False): method default (line 168) | def default(self): method to_complete_json (line 179) | def to_complete_json(self, lang=None): method _dispatcher (line 196) | def _dispatcher(self): method get_date_range (line 235) | def get_date_range(self): method query_string (line 272) | def query_string(self): method url_kwargs (line 283) | def url_kwargs(self): method view_kwargs (line 296) | def view_kwargs(self): method url (line 305) | def url(self): method report (line 320) | def report(self): method report_name (line 335) | def report_name(self): method full_name (line 345) | def full_name(self): method date_description (line 352) | def date_description(self): method owner (line 367) | def owner(self): method get_report_content (line 370) | def get_report_content(self, lang, attach_excel=False, couch_user=None... method is_active (line 500) | def is_active(self): method is_configurable_report (line 509) | def is_configurable_report(self): method supports_translations (line 514) | def supports_translations(self): method languages (line 522) | def languages(self): method configurable_report (line 531) | def configurable_report(self): method datespan_filters (line 538) | def datespan_filters(self): method has_ucr_datespan (line 543) | def has_ucr_datespan(self): method datespan_filter_choices (line 547) | def datespan_filter_choices(datespan_filters, lang): method is_shared_on_domain (line 560) | def is_shared_on_domain(self): class ReportNotification (line 565) | class ReportNotification(CachedCouchDocumentMixin, Document): method is_editable (line 591) | def is_editable(self): method get_report (line 599) | def get_report(cls, report_id): method by_domain (line 611) | def by_domain(cls, domain, stale=True, **kwargs): method by_domain_and_owner (line 619) | def by_domain_and_owner(cls, domain, owner_id, stale=True, **kwargs): method _get_view_by_key (line 627) | def _get_view_by_key(cls, key, **kwargs): method all_recipient_emails (line 636) | def all_recipient_emails(self): method owner_email (line 644) | def owner_email(self): method owner (line 659) | def owner(self): method configs (line 665) | def configs(self): method day_name (line 706) | def day_name(self): method day_choices (line 717) | def day_choices(cls): method hour_choices (line 722) | def hour_choices(cls): method recipients_by_language (line 728) | def recipients_by_language(self): method get_secret (line 748) | def get_secret(self, email): method send (line 752) | def send(self): method _get_or_create_uuid (line 771) | def _get_or_create_uuid(self): method _get_and_send_report (line 777) | def _get_and_send_report(self, language, emails): method _get_title (line 792) | def _get_title(subject): method _generate_report (line 800) | def _generate_report(self, attach_excel, title, emails): method _send_emails (line 831) | def _send_emails(self, title, report_text, emails, excel_files): method _send_email (line 863) | def _send_email(self, title, email, body, excel_files): method _send_only_attachments (line 871) | def _send_only_attachments(self, title, emails, excel_files): method _export_report (line 882) | def _export_report(self, emails, title): method remove_recipient (line 914) | def remove_recipient(self, email): method update_attributes (line 922) | def update_attributes(self, items): method verify_start_date (line 928) | def verify_start_date(self, start_date): method can_be_viewed_by (line 932) | def can_be_viewed_by(self, user): class ScheduledReportsCheckpoint (line 938) | class ScheduledReportsCheckpoint(models.Model): method get_latest (line 950) | def get_latest(cls): class ScheduledReportLog (line 957) | class ScheduledReportLog(models.Model): method __repr__ (line 970) | def __repr__(self): FILE: corehq/apps/saved_reports/scheduled.py function _make_all_notification_view_keys (line 18) | def _make_all_notification_view_keys(period, target): function create_records_for_scheduled_reports (line 66) | def create_records_for_scheduled_reports(): function _get_default_start_datetime (line 82) | def _get_default_start_datetime(end_datetime): function get_scheduled_report_ids (line 87) | def get_scheduled_report_ids(period, start_datetime=None, end_datetime=N... function guess_reporting_minute (line 116) | def guess_reporting_minute(now=None): function _round_datetime_up_to_the_nearest_minute (line 134) | def _round_datetime_up_to_the_nearest_minute(dt): function _iter_15_minute_marks_in_range (line 142) | def _iter_15_minute_marks_in_range(start_datetime, end_datetime): FILE: corehq/apps/saved_reports/tasks.py function send_delayed_report (line 34) | def send_delayed_report(report_id): function send_report (line 58) | def send_report(notification_id): function send_report_throttled (line 72) | def send_report_throttled(notification_id): function initiate_queue_scheduled_reports (line 80) | def initiate_queue_scheduled_reports(): function purge_old_scheduled_report_logs (line 88) | def purge_old_scheduled_report_logs(): function queue_scheduled_reports (line 95) | def queue_scheduled_reports(): function send_email_report (line 105) | def send_email_report(self, recipient_emails, domain, report_slug, repor... function create_config_for_email (line 178) | def create_config_for_email(report_type, report_slug, user_id, domain, r... FILE: corehq/apps/saved_reports/tests/end_to_end/test_scheduled_reports.py class TestScheduledReports (line 24) | class TestScheduledReports(TestCase): method test_scheduled_reports_sends_to_recipients (line 26) | def test_scheduled_reports_sends_to_recipients(self): method setUpClass (line 37) | def setUpClass(cls): method tearDownClass (line 55) | def tearDownClass(cls): method create_fresh_user (line 62) | def create_fresh_user(cls, username, **kwargs): method create_saved_report (line 72) | def create_saved_report(self): method create_scheduled_report (line 86) | def create_scheduled_report(self, saved_reports, emails): FILE: corehq/apps/saved_reports/tests/test_checkpointing.py class ScheduledReportsCheckpointTest (line 18) | class ScheduledReportsCheckpointTest(TestCase): method setUp (line 19) | def setUp(self): method test_checkpoint_created (line 23) | def test_checkpoint_created(self): method test_scheduled_reports_identified (line 41) | def test_scheduled_reports_identified(self): FILE: corehq/apps/saved_reports/tests/test_daylight_savings.py class AdjustReportTests (line 7) | class AdjustReportTests(SimpleTestCase): method test_moves_report_hour_back (line 8) | def test_moves_report_hour_back(self): method test_moves_report_hour_forward (line 13) | def test_moves_report_hour_forward(self): method test_wraps_hour_backwards (line 18) | def test_wraps_hour_backwards(self): method test_wraps_hour_forwards (line 23) | def test_wraps_hour_forwards(self): method test_wrapping_daily_does_not_increment_day (line 28) | def test_wrapping_daily_does_not_increment_day(self): method test_increments_day_on_weekly_wrap (line 33) | def test_increments_day_on_weekly_wrap(self): method test_wraps_day_on_weekly (line 38) | def test_wraps_day_on_weekly(self): method test_handles_weekly_mondays (line 43) | def test_handles_weekly_mondays(self): FILE: corehq/apps/saved_reports/tests/test_logging.py class ScheduledReportLoggerTests (line 6) | class ScheduledReportLoggerTests(TestCase): method setUp (line 10) | def setUp(self): method test_success_logs_and_stores_db_record (line 17) | def test_success_logs_and_stores_db_record(self): method test_failure_logs_and_stores_db_record (line 32) | def test_failure_logs_and_stores_db_record(self): method test_retry_logs_and_stores_db_record (line 48) | def test_retry_logs_and_stores_db_record(self): FILE: corehq/apps/saved_reports/tests/test_minute_mark_arithmetic.py function test_round_datetime_up_to_the_nearest_minute (line 11) | def test_round_datetime_up_to_the_nearest_minute(): function test_iter_15_minute_marks_in_range (line 49) | def test_iter_15_minute_marks_in_range(): FILE: corehq/apps/saved_reports/tests/test_models.py class TestReportConfig (line 16) | class TestReportConfig(TestCase): method setUpClass (line 19) | def setUpClass(cls): method test_report_is_shared_on_domain (line 56) | def test_report_is_shared_on_domain(self): method test_report_config_contents (line 64) | def test_report_config_contents(self): method test_report_config_does_not_have_datespan_if_not_in_params (line 76) | def test_report_config_does_not_have_datespan_if_not_in_params(self): method test_report_config_for_type_domain_report_is_not_deleted_when_access_dispatcher (line 85) | def test_report_config_for_type_domain_report_is_not_deleted_when_acce... class TestReportNotification (line 95) | class TestReportNotification(TestCase): method test_unauthorized_user_cannot_view_report (line 96) | def test_unauthorized_user_cannot_view_report(self): method test_owner_can_view_report (line 101) | def test_owner_can_view_report(self): method test_domain_admin_can_view_report (line 106) | def test_domain_admin_can_view_report(self): method test_subscribed_user_can_view_report (line 111) | def test_subscribed_user_can_view_report(self): method test_report_with_unknown_owner_has_null_owner_email (line 116) | def test_report_with_unknown_owner_has_null_owner_email(self): method _create_user (line 122) | def _create_user(self, id='100', email='not-included', is_domain_admin... class TestRecipientsByLanguage (line 131) | class TestRecipientsByLanguage(TestCase): method test_existing_user_with_no_language_gets_default_language (line 132) | def test_existing_user_with_no_language_gets_default_language(self): method test_missing_user_gets_default_language (line 139) | def test_missing_user_gets_default_language(self): method test_omit_deactivated_web_users (line 146) | def test_omit_deactivated_web_users(self): method setUp (line 163) | def setUp(self): method _create_report_for_emails (line 173) | def _create_report_for_emails(self, *emails): method _establish_user_languages (line 177) | def _establish_user_languages(self, language_pairs): class TestGetAndSendReport (line 181) | class TestGetAndSendReport(SimpleTestCase): method test_failing_report_generation_generates_log_message (line 184) | def test_failing_report_generation_generates_log_message(self, owner_m... class TestSendEmails (line 195) | class TestSendEmails(SimpleTestCase): method setUp (line 196) | def setUp(self): method test_each_email_is_sent (line 205) | def test_each_email_is_sent(self): method test_successful_emails_are_logged (line 213) | def test_successful_emails_are_logged(self): method test_emails_that_are_too_large_are_exported (line 222) | def test_emails_that_are_too_large_are_exported(self, mock_export_repo... method test_emails_that_are_too_large_stop_after_first_failure (line 234) | def test_emails_that_are_too_large_stop_after_first_failure(self, mock... method test_huge_reports_with_attachments_resend_only_attachments (line 244) | def test_huge_reports_with_attachments_resend_only_attachments(self): method test_failing_emails_are_logged (line 259) | def test_failing_emails_are_logged(self): FILE: corehq/apps/saved_reports/tests/test_scheduled_reports.py class GuessReportingMinuteTest (line 21) | class GuessReportingMinuteTest(SimpleTestCase): method testOnTheHour (line 23) | def testOnTheHour(self): method testAfterTheHour (line 26) | def testAfterTheHour(self): method testOnTheHalfHour (line 29) | def testOnTheHalfHour(self): method testAfterTheHalfHour (line 32) | def testAfterTheHalfHour(self): method testOnQuarterAfter (line 35) | def testOnQuarterAfter(self): method testAfterQuarterAfter (line 38) | def testAfterQuarterAfter(self): method testOnQuarterOf (line 41) | def testOnQuarterOf(self): method testAfterQuarterOf (line 44) | def testAfterQuarterOf(self): method testOutOfBounds (line 47) | def testOutOfBounds(self): function delete_all_report_notifications (line 52) | def delete_all_report_notifications(): class ScheduledReportTest (line 61) | class ScheduledReportTest(TestCase): method setUp (line 63) | def setUp(self): method tearDown (line 66) | def tearDown(self): method _check (line 69) | def _check(self, period, as_of, count): method testHourlyReportWithMinuteZero (line 79) | def testHourlyReportWithMinuteZero(self): method testHourlyReportWithMinuteHalfHour (line 84) | def testHourlyReportWithMinuteHalfHour(self): method testHourlyReportWithoutMinute (line 91) | def testHourlyReportWithoutMinute(self): method testHourlyReportWithoutSpecifyingStopHour (line 97) | def testHourlyReportWithoutSpecifyingStopHour(self): method testHourlyReportWithNoneStopHour (line 101) | def testHourlyReportWithNoneStopHour(self): method testHourlyReportWithInterval_everyHour (line 106) | def testHourlyReportWithInterval_everyHour(self): method testHourlyReportWithInterval_onlyAt12 (line 114) | def testHourlyReportWithInterval_onlyAt12(self): method testHourlyReportWithInterval_between12And15 (line 119) | def testHourlyReportWithInterval_between12And15(self): method testHourlyReportOtherTypesDontCount (line 128) | def testHourlyReportOtherTypesDontCount(self): method testIntervalReportDontIncludeOtherIntervals (line 134) | def testIntervalReportDontIncludeOtherIntervals(self): method testDailyReportEmptyMinute (line 144) | def testDailyReportEmptyMinute(self): method testDailyReportWithMinute (line 149) | def testDailyReportWithMinute(self): method testDailyReportLenientWindow (line 154) | def testDailyReportLenientWindow(self): method testDailyReportWithMinuteHalfHour (line 163) | def testDailyReportWithMinuteHalfHour(self): method testDailyReportOtherTypesDontCount (line 168) | def testDailyReportOtherTypesDontCount(self): method testDailyReportOtherHoursDontCount (line 173) | def testDailyReportOtherHoursDontCount(self): method testWeeklyReportEmptyMinute (line 177) | def testWeeklyReportEmptyMinute(self): method testWeeklyReportWithMinute (line 182) | def testWeeklyReportWithMinute(self): method testWeeklyReportOtherTypesDontCount (line 187) | def testWeeklyReportOtherTypesDontCount(self): method testWeeklyReportOtherDaysDontCount (line 192) | def testWeeklyReportOtherDaysDontCount(self): method testMonthlyReportEmptyMinute (line 196) | def testMonthlyReportEmptyMinute(self): method testMonthlyReportWithMinute (line 201) | def testMonthlyReportWithMinute(self): method testMonthlyReportOtherTypesDontCount (line 206) | def testMonthlyReportOtherTypesDontCount(self): method testMonthlyReportOtherDaysDontCount (line 211) | def testMonthlyReportOtherDaysDontCount(self): method testMonthlyReportOnTheEndOfTheMonthEmptyMinute (line 215) | def testMonthlyReportOnTheEndOfTheMonthEmptyMinute(self): method testMonthlyReportOnTheEndOfTheMonthWithMinute (line 220) | def testMonthlyReportOnTheEndOfTheMonthWithMinute(self): method testMonthlyReportOnTheEndOfTheMonthWithMinuteHalfHour (line 225) | def testMonthlyReportOnTheEndOfTheMonthWithMinuteHalfHour(self): method testMonthlyReportBeforeTheEndOfTheMonth (line 230) | def testMonthlyReportBeforeTheEndOfTheMonth(self): method testMonthlyReportOnTheEndOfTheMonthDaysAfter31DontCount (line 235) | def testMonthlyReportOnTheEndOfTheMonthDaysAfter31DontCount(self): class ScheduledReportSendingTest (line 244) | class ScheduledReportSendingTest(TestCase): method setUpClass (line 252) | def setUpClass(cls): method tearDownClass (line 269) | def tearDownClass(cls): method test_get_scheduled_report_response (line 274) | def test_get_scheduled_report_response(self): FILE: corehq/apps/saved_reports/tests/test_tasks.py class PurgeOldScheduledReportLogsTests (line 16) | class PurgeOldScheduledReportLogsTests(TestCase): method test_purges_entries_older_than_three_months (line 17) | def test_purges_entries_older_than_three_months(self): method test_ignores_entries_newer_than_three_months (line 25) | def test_ignores_entries_newer_than_three_months(self): method _create_log_at_date (line 34) | def _create_log_at_date(date): class QueueScheduledReportsTests (line 45) | class QueueScheduledReportsTests(SimpleTestCase): method test_resource_not_found_does_not_stop_sending (line 48) | def test_resource_not_found_does_not_stop_sending(self, mock_get_ids, ... FILE: corehq/apps/settings/exceptions.py class DuplicateApiKeyName (line 1) | class DuplicateApiKeyName(Exception): FILE: corehq/apps/settings/forms.py class HQPasswordChangeForm (line 38) | class HQPasswordChangeForm(PasswordChangeForm): method __init__ (line 43) | def __init__(self, user, *args, **kwargs): method save (line 68) | def save(self, commit=True): class HQPhoneNumberMethodForm (line 77) | class HQPhoneNumberMethodForm(PhoneNumberMethodForm): method __init__ (line 84) | def __init__(self, **kwargs): class HQDeviceValidationForm (line 106) | class HQDeviceValidationForm(DeviceValidationForm): method __init__ (line 109) | def __init__(self, device, **kwargs): method clean_token (line 137) | def clean_token(self): class HQTwoFactorMethodForm (line 144) | class HQTwoFactorMethodForm(MethodForm): method __init__ (line 145) | def __init__(self, *, allow_phone_2fa, **kwargs): class HQTOTPDeviceForm (line 183) | class HQTOTPDeviceForm(TOTPDeviceForm): method __init__ (line 198) | def __init__(self, key, user, **kwargs): method save (line 226) | def save(self): class HQPhoneNumberForm (line 234) | class HQPhoneNumberForm(PhoneNumberForm): method __init__ (line 242) | def __init__(self, **kwargs): class HQApiKeyForm (line 271) | class HQApiKeyForm(forms.Form): method __init__ (line 291) | def __init__(self, *args, user_domains=None, max_allowed_expiration_da... method get_expiration_window_display_string (line 333) | def get_expiration_window_display_string(self, num_days): method create_key (line 344) | def create_key(self, user): method clean_domain (line 358) | def clean_domain(self): method clean_expiration_date (line 363) | def clean_expiration_date(self): class HQEmptyForm (line 379) | class HQEmptyForm(forms.Form): method __init__ (line 381) | def __init__(self, **kwargs): FILE: corehq/apps/settings/languages.py function get_languages_for_user (line 6) | def get_languages_for_user(user): function get_translated_languages (line 22) | def get_translated_languages(): function format_language_for_display (line 34) | def format_language_for_display(code, name): FILE: corehq/apps/settings/management/commands/create_test_qr_codes.py class Command (line 7) | class Command(BaseCommand): method handle (line 10) | def handle(self, **options): FILE: corehq/apps/settings/tasks.py function _to_utc (line 18) | def _to_utc(value): function notify_about_to_expire_api_keys (line 29) | def notify_about_to_expire_api_keys(): FILE: corehq/apps/settings/tests/test_forms.py class TestHQTwoFactorMethodForm (line 13) | class TestHQTwoFactorMethodForm(SimpleTestCase): method test_when_phone_support_is_enabled_all_options_are_shown (line 14) | def test_when_phone_support_is_enabled_all_options_are_shown(self): method test_when_phone_support_is_disabled_phone_and_sms_are_not_listed (line 19) | def test_when_phone_support_is_disabled_phone_and_sms_are_not_listed(s... method test_when_fields_are_valid_form_is_valid (line 25) | def test_when_fields_are_valid_form_is_valid(self): method test_when_phone_support_is_disabled_phone_is_invalid (line 29) | def test_when_phone_support_is_disabled_phone_is_invalid(self): method test_when_phone_support_is_disabled_sms_is_invalid (line 33) | def test_when_phone_support_is_disabled_sms_is_invalid(self): method _get_choice_values (line 38) | def _get_choice_values(choices): class TestHQTOTPDeviceForm (line 43) | class TestHQTOTPDeviceForm(SimpleTestCase): method setUpClass (line 45) | def setUpClass(cls): method test_token_is_valid (line 52) | def test_token_is_valid(self): method test_token_is_invalid (line 56) | def test_token_is_invalid(self): method test_cleaned_token_is_integer (line 61) | def test_cleaned_token_is_integer(self): class HQApiKeyTests (line 68) | class HQApiKeyTests(SimpleTestCase): method test_form_domain_list (line 69) | def test_form_domain_list(self): method test_expiration_date_is_not_required_by_default (line 75) | def test_expiration_date_is_not_required_by_default(self): method test_when_expiration_is_specified_expiration_date_is_required (line 79) | def test_when_expiration_is_specified_expiration_date_is_required(self): method test_when_expiration_is_specified_expiration_is_autopopulated_to_max_expiration (line 83) | def test_when_expiration_is_specified_expiration_is_autopopulated_to_m... method test_default_expiration_helptext (line 89) | def test_default_expiration_helptext(self): method test_when_expiration_is_specified_help_text_includes_max_expiration (line 96) | def test_when_expiration_is_specified_help_text_includes_max_expiratio... method test_expiration_supports_year_values (line 106) | def test_expiration_supports_year_values(self): method test_expiration_supports_unofficial_expiration_windows (line 116) | def test_expiration_supports_unofficial_expiration_windows(self): method test_no_expiration_date_is_valid (line 126) | def test_no_expiration_date_is_valid(self): method test_valid_expiration_date_with_maximum_expiration_window (line 130) | def test_valid_expiration_date_with_maximum_expiration_window(self): method test_expired_key_is_not_valid (line 136) | def test_expired_key_is_not_valid(self): method test_expiration_dates_greater_than_maximum_are_invalid (line 143) | def test_expiration_dates_greater_than_maximum_are_invalid(self): method test_expiration_date_is_localized (line 153) | def test_expiration_date_is_localized(self): method test_all_domains_ui_will_be_cleaned_to_empty_string (line 162) | def test_all_domains_ui_will_be_cleaned_to_empty_string(self): method _form_data (line 167) | def _form_data(self, expiration_date='2023-01-01', domain=HQApiKeyForm... FILE: corehq/apps/settings/tests/test_languages.py class GetLanguagesForUserTest (line 20) | class GetLanguagesForUserTest(TestCase): method setUpClass (line 23) | def setUpClass(cls): method test_no_domain_translations (line 30) | def test_no_domain_translations(self): method test_with_overlapping_domain_translations (line 38) | def test_with_overlapping_domain_translations(self): method test_with_unique_domain_translations (line 47) | def test_with_unique_domain_translations(self): FILE: corehq/apps/settings/tests/test_utils.py class GetTempFileTests (line 8) | class GetTempFileTests(SimpleTestCase): method test_file_closed (line 10) | def test_file_closed(self): method test_file_unused (line 23) | def test_file_unused(self): method test_file_deleted (line 36) | def test_file_deleted(self): FILE: corehq/apps/settings/tests/test_validators.py class ValidateInternationalPhonenumberTests (line 7) | class ValidateInternationalPhonenumberTests(SimpleTestCase): method test_empty_string_raises_error (line 9) | def test_empty_string_raises_error(self): method test_valid_us_number_does_not_raise_error (line 13) | def test_valid_us_number_does_not_raise_error(self): method test_invalid_us_number_raises_error (line 16) | def test_invalid_us_number_raises_error(self): method test_valid_south_africa_number_does_not_raise_error (line 20) | def test_valid_south_africa_number_does_not_raise_error(self): method test_invalid_south_africa_number_raises_error (line 23) | def test_invalid_south_africa_number_raises_error(self): method test_valid_india_number_does_not_raise_error (line 27) | def test_valid_india_number_does_not_raise_error(self): method test_invalid_india_number_raises_error (line 30) | def test_invalid_india_number_raises_error(self): method test_invalid_international_number_raises_error (line 34) | def test_invalid_international_number_raises_error(self): FILE: corehq/apps/settings/tests/test_views.py class EnableMobilePrivilegesViewTests (line 36) | class EnableMobilePrivilegesViewTests(SimpleTestCase): method test_qr_code (line 38) | def test_qr_code(self): class TwoFactorProfileView_Context_Tests (line 55) | class TwoFactorProfileView_Context_Tests(SimpleTestCase): method test_phone_methods_do_not_display_when_settings_are_disabled (line 57) | def test_phone_methods_do_not_display_when_settings_are_disabled(self): method test_phone_methods_display_when_user_belongs_to_messaging_domain (line 63) | def test_phone_methods_display_when_user_belongs_to_messaging_domain(s... method test_phone_methods_do_not_display_when_user_does_not_belong_to_messaging_domain (line 69) | def test_phone_methods_do_not_display_when_user_does_not_belong_to_mes... method test_phone_methods_display_when_user_has_previous_backup_phones (line 75) | def test_phone_methods_display_when_user_has_previous_backup_phones(se... method setUp (line 84) | def setUp(self): method _create_user (line 97) | def _create_user(self, two_factor_enabled=True, belongs_to_messaging_d... method _create_view_for_user (line 105) | def _create_view_for_user(self, user): class TwoFactorSetupView_FormKwargs_Tests (line 114) | class TwoFactorSetupView_FormKwargs_Tests(SimpleTestCase): method test_phone_methods_are_prohibited_when_settings_are_disabled (line 116) | def test_phone_methods_are_prohibited_when_settings_are_disabled(self): method test_phone_methods_are_allowed_when_user_belongs_to_messaging_domain (line 121) | def test_phone_methods_are_allowed_when_user_belongs_to_messaging_doma... method test_phone_methods_are_prohibited_when_user_does_not_belongs_to_messaging_domain (line 126) | def test_phone_methods_are_prohibited_when_user_does_not_belongs_to_me... method setUp (line 131) | def setUp(self): method _create_user (line 138) | def _create_user(self, belongs_to_messaging_domain=True): method _create_view_for_user (line 143) | def _create_view_for_user(self, user): class TwoFactorPhoneSetupViewTests (line 153) | class TwoFactorPhoneSetupViewTests(SimpleTestCase): method test_when_settings_are_disabled_view_returns_404 (line 155) | def test_when_settings_are_disabled_view_returns_404(self): method test_when_user_belongs_to_messaging_domain_returns_200 (line 160) | def test_when_user_belongs_to_messaging_domain_returns_200(self): method test_when_user_does_not_belong_to_messaging_domain_returns_404 (line 165) | def test_when_user_does_not_belong_to_messaging_domain_returns_404(self): method test_when_user_has_grandfathered_phones_returns_200 (line 170) | def test_when_user_has_grandfathered_phones_returns_200(self): method setUp (line 177) | def setUp(self): method _create_user (line 184) | def _create_user(self, belongs_to_messaging_domain=True, has_backup_ph... method _call_view (line 196) | def _call_view(self, user): class ApiKeyViewTests (line 203) | class ApiKeyViewTests(TestCase): method test_user_with_no_identity_provider_cannot_view_full_api_keys (line 204) | def test_user_with_no_identity_provider_cannot_view_full_api_keys(self): method test_user_with_identity_provider_that_allows_full_keys_can_see_full_key (line 215) | def test_user_with_identity_provider_that_allows_full_keys_can_see_ful... method test_user_managed_by_identity_provider_that_forbids_full_keys_cannot_see_full_key (line 230) | def test_user_managed_by_identity_provider_that_forbids_full_keys_cann... method setUp (line 245) | def setUp(self): method setUpClass (line 252) | def setUpClass(cls): method create_user (line 256) | def create_user(self, username): method create_request_for_user (line 261) | def create_request_for_user(self, user): method create_idp (line 267) | def create_idp(self, domain, always_show_user_api_keys=False): class TestMyAccountSettingsView (line 279) | class TestMyAccountSettingsView(TestCase): method setUp (line 282) | def setUp(self): method tearDown (line 292) | def tearDown(self): method test_process_delete_phone_number (line 297) | def test_process_delete_phone_number(self): class TestQrCode (line 314) | class TestQrCode(SimpleTestCase): method test_get_qrcode (line 330) | def test_get_qrcode(self): class TestTwoFactorResetView (line 344) | class TestTwoFactorResetView(TestCase): method test_default_device_is_deleted (line 346) | def test_default_device_is_deleted(self): method test_backup_device_is_not_deleted (line 352) | def test_backup_device_is_not_deleted(self): method _call_view (line 358) | def _call_view(self, user): method setUpClass (line 373) | def setUpClass(cls): method setUp (line 380) | def setUp(self): FILE: corehq/apps/settings/utils.py function get_temp_file (line 7) | def get_temp_file(): FILE: corehq/apps/settings/validators.py function validate_international_phonenumber (line 13) | def validate_international_phonenumber(value): FILE: corehq/apps/settings/views.py function default (line 88) | def default(request, domain): function redirect_users (line 93) | def redirect_users(request, domain, old_url=""): function redirect_domain_settings (line 98) | def redirect_domain_settings(request, domain, old_url=""): function project_id_mapping (line 103) | def project_id_mapping(request, domain): class BaseMyAccountView (line 116) | class BaseMyAccountView(BaseSectionPageView): method dispatch (line 120) | def dispatch(self, request, *args, **kwargs): method page_url (line 125) | def page_url(self): method main_context (line 129) | def main_context(self): method section_url (line 137) | def section_url(self): class DefaultMySettingsView (line 141) | class DefaultMySettingsView(BaseMyAccountView): method get (line 144) | def get(self, request, *args, **kwargs): class MyAccountSettingsView (line 148) | class MyAccountSettingsView(BaseMyAccountView): method dispatch (line 156) | def dispatch(self, request, *args, **kwargs): method settings_form (line 162) | def settings_form(self): method page_context (line 186) | def page_context(self): method phone_number_is_valid (line 195) | def phone_number_is_valid(self): method process_add_phone_number (line 201) | def process_add_phone_number(self): method process_delete_phone_number (line 224) | def process_delete_phone_number(self): method process_make_phone_number_default (line 239) | def process_make_phone_number_default(self): method phone_number (line 246) | def phone_number(self): method form_actions (line 251) | def form_actions(self): method form_type (line 260) | def form_type(self): method post (line 263) | def post(self, request, *args, **kwargs): class MyProjectsList (line 276) | class MyProjectsList(BaseMyAccountView): method dispatch (line 283) | def dispatch(self, request, *args, **kwargs): method page_context (line 290) | def page_context(self): method domain_to_remove (line 303) | def domain_to_remove(self): method post (line 307) | def post(self, request, *args, **kwargs): class ChangeMyPasswordView (line 326) | class ChangeMyPasswordView(BaseMyAccountView): method dispatch (line 333) | def dispatch(self, request, *args, **kwargs): method password_change_form (line 339) | def password_change_form(self): method page_context (line 345) | def page_context(self): method post (line 361) | def post(self, request, *args, **kwargs): class TwoFactorProfileView (line 372) | class TwoFactorProfileView(BaseMyAccountView, ProfileView): method dispatch (line 379) | def dispatch(self, request, *args, **kwargs): method get_context_data (line 383) | def get_context_data(self, **kwargs): class TwoFactorSetupView (line 404) | class TwoFactorSetupView(BaseMyAccountView, SetupView): method dispatch (line 417) | def dispatch(self, request, *args, **kwargs): method get_form_kwargs (line 421) | def get_form_kwargs(self, step=None): method get_form_list (line 428) | def get_form_list(self): class TwoFactorSetupCompleteView (line 438) | class TwoFactorSetupCompleteView(BaseMyAccountView, SetupCompleteView): method dispatch (line 444) | def dispatch(self, request, *args, **kwargs): method page_context (line 449) | def page_context(self): class TwoFactorBackupTokensView (line 455) | class TwoFactorBackupTokensView(BaseMyAccountView, BackupTokensView): method dispatch (line 461) | def dispatch(self, request, *args, **kwargs): method page_context (line 466) | def page_context(self): function _show_link_to_webapps (line 472) | def _show_link_to_webapps(user): class TwoFactorDisableView (line 482) | class TwoFactorDisableView(BaseMyAccountView, DisableView): method dispatch (line 488) | def dispatch(self, request, *args, **kwargs): method get (line 492) | def get(self, request, *args, **kwargs): class TwoFactorPhoneSetupView (line 496) | class TwoFactorPhoneSetupView(BaseMyAccountView, PhoneSetupView): method dispatch (line 507) | def dispatch(self, request, *args, **kwargs): method done (line 518) | def done(self, form_list, **kwargs): class TwoFactorPhoneDeleteView (line 527) | class TwoFactorPhoneDeleteView(BaseMyAccountView, PhoneDeleteView): method get_success_url (line 529) | def get_success_url(self): method dispatch (line 534) | def dispatch(self, request, *args, **kwargs): class TwoFactorResetView (line 539) | class TwoFactorResetView(TwoFactorSetupView): method get (line 542) | def get(self, request, *args, **kwargs): class BaseProjectDataView (line 553) | class BaseProjectDataView(BaseDomainView): method section_url (line 557) | def section_url(self): function get_qrcode (line 562) | def get_qrcode(data): class EnableMobilePrivilegesView (line 572) | class EnableMobilePrivilegesView(BaseMyAccountView): method dispatch (line 578) | def dispatch(self, request, *args, **kwargs): method is_user_authorized (line 585) | def is_user_authorized(couch_user): method get (line 594) | def get(self, request, *args, **kwargs): class ApiKeyView (line 621) | class ApiKeyView(BaseMyAccountView, CRUDPaginatedViewMixin): method dispatch (line 628) | def dispatch(self, request, *args, **kwargs): method allowed_actions (line 632) | def allowed_actions(self): method activate_response (line 642) | def activate_response(self): method deactivate_response (line 646) | def deactivate_response(self): method _set_is_active_response (line 649) | def _set_is_active_response(self, is_active): method base_query (line 658) | def base_query(self): method total (line 662) | def total(self): method column_names (line 666) | def column_names(self): method _to_user_time (line 679) | def _to_user_time(self, value): method page_context (line 686) | def page_context(self): method allow_viewable_API_keys (line 697) | def allow_viewable_API_keys(self): method maximum_key_expiration_window (line 701) | def maximum_key_expiration_window(self): method managing_idp (line 708) | def managing_idp(self): method paginated_list (line 712) | def paginated_list(self): method _to_json (line 719) | def _to_json(self, api_key, redacted=True): method post (line 759) | def post(self, *args, **kwargs): method get_user_timezone (line 764) | def get_user_timezone(self): method get_create_form (line 767) | def get_create_form(self, is_blank=False): method get_create_item_data (line 788) | def get_create_item_data(self, create_form): method delete_item (line 798) | def delete_item(self, item_id): FILE: corehq/apps/sms/admin.py class SMSAdmin (line 12) | class SMSAdmin(admin.ModelAdmin): class QueuedSMSAdmin (line 32) | class QueuedSMSAdmin(admin.ModelAdmin): class PhoneBlacklistAdmin (line 52) | class PhoneBlacklistAdmin(admin.ModelAdmin): class PhoneNumberAdmin (line 68) | class PhoneNumberAdmin(admin.ModelAdmin): class SQLMobileBackendMappingAdmin (line 85) | class SQLMobileBackendMappingAdmin(admin.ModelAdmin): FILE: corehq/apps/sms/api.py class BackendAuthorizationException (line 72) | class BackendAuthorizationException(Exception): class DelayProcessing (line 76) | class DelayProcessing(Exception): function get_utcnow (line 80) | def get_utcnow(): class MessageMetadata (line 87) | class MessageMetadata(object): method __init__ (line 89) | def __init__(self, *args, **kwargs): function add_msg_tags (line 100) | def add_msg_tags(msg, metadata): function log_sms_exception (line 110) | def log_sms_exception(msg): function get_location_id_by_contact (line 120) | def get_location_id_by_contact(domain, contact): function get_location_id_by_verified_number (line 132) | def get_location_id_by_verified_number(v): function get_message_class (line 136) | def get_message_class(is_sms=True): function send_sms (line 143) | def send_sms(domain, contact, phone_number, text, metadata=None, logged_... function send_message_to_verified_number (line 186) | def send_message_to_verified_number(verified_number, text, metadata=None... function send_sms_with_backend (line 233) | def send_sms_with_backend(domain, phone_number, text, backend_id, metada... function send_sms_with_backend_name (line 248) | def send_sms_with_backend_name(domain, phone_number, text, backend_name,... function enqueue_directly (line 264) | def enqueue_directly(msg): function queue_outgoing_sms (line 274) | def queue_outgoing_sms(msg): function send_message_via_backend (line 297) | def send_message_via_backend(msg, backend=None, orig_phone_number=None): function _get_backend_tags (line 369) | def _get_backend_tags(backend=None, backend_id=None): function should_log_exception_for_backend (line 389) | def should_log_exception_for_backend(backend, exception): function send_connect_message (line 405) | def send_connect_message(message, backend): function register_sms_user (line 414) | def register_sms_user( function random_password (line 449) | def random_password(): function process_username (line 457) | def process_username(username, domain): function send_admin_registration_alert (line 471) | def send_admin_registration_alert(domain, recipients, user): function is_registration_text (line 486) | def is_registration_text(text): function process_sms_registration (line 494) | def process_sms_registration(msg): function incoming (line 571) | def incoming(phone_number, text, backend_api, timestamp=None, function is_opt_message (line 615) | def is_opt_message(text, keyword_list): function get_opt_keywords (line 625) | def get_opt_keywords(msg): function load_and_call (line 643) | def load_and_call(sms_handler_names, phone_number, text, sms): function get_inbound_phone_entry_from_sms (line 664) | def get_inbound_phone_entry_from_sms(msg): function get_inbound_phone_entry (line 668) | def get_inbound_phone_entry(phone_number, backend_id=None): function process_incoming (line 713) | def process_incoming(msg, phone=None): function _allow_load_handlers (line 732) | def _allow_load_handlers(verified_number, is_two_way, has_domain_two_way... function _domain_accepts_inbound (line 739) | def _domain_accepts_inbound(msg): function _process_incoming (line 743) | def _process_incoming(msg, phone=None): function create_billable_for_sms (line 823) | def create_billable_for_sms(msg, delay=True): FILE: corehq/apps/sms/change_publishers.py function do_publish (line 9) | def do_publish(): function publish_sms_saved (line 17) | def publish_sms_saved(sms): function change_meta_from_sms (line 22) | def change_meta_from_sms(sms): FILE: corehq/apps/sms/document_stores.py class SMSDocumentStore (line 5) | class SMSDocumentStore(DjangoDocumentStore): method __init__ (line 6) | def __init__(self): FILE: corehq/apps/sms/event_handlers.py function handle_email_messaging_subevent (line 5) | def handle_email_messaging_subevent(message, subevent_id): FILE: corehq/apps/sms/filters.py class MessageTypeFilter (line 20) | class MessageTypeFilter(BaseMultipleOptionFilter): method options (line 28) | def options(self): class ErrorCodeFilter (line 41) | class ErrorCodeFilter(BaseMultipleOptionFilter): class EventTypeFilter (line 53) | class EventTypeFilter(BaseMultipleOptionFilter): class EventContentFilter (line 71) | class EventContentFilter(BaseMultipleOptionFilter): method options (line 77) | def options(self): class EventStatusFilter (line 88) | class EventStatusFilter(BaseSingleOptionFilter): class PhoneNumberFilter (line 102) | class PhoneNumberFilter(BaseSimpleFilter): class RequiredPhoneNumberFilter (line 108) | class RequiredPhoneNumberFilter(PhoneNumberFilter): method filter_context (line 110) | def filter_context(self): class PhoneNumberOrEmailFilter (line 116) | class PhoneNumberOrEmailFilter(BaseSimpleFilter): class PhoneNumberReportFilter (line 123) | class PhoneNumberReportFilter(BaseReportFilter): method filter_context (line 129) | def filter_context(self): method get_value (line 136) | def get_value(cls, request, domain): FILE: corehq/apps/sms/forms.py class LoadBalancingBackendFormMixin (line 121) | class LoadBalancingBackendFormMixin(Form): method clean_phone_numbers (line 124) | def clean_phone_numbers(self): method validate_phone_number (line 150) | def validate_phone_number(self, phone_number: str) -> None: class SettingsForm (line 154) | class SettingsForm(Form): method section_general (line 300) | def section_general(self): method section_registration (line 358) | def section_registration(self): method section_chat (line 431) | def section_chat(self): method section_internal (line 537) | def section_internal(self): method sections (line 578) | def sections(self): method __init__ (line 600) | def __init__(self, data=None, domain=None, is_previewer=False, *args, ... method set_admin_email_choices (line 629) | def set_admin_email_choices(self, data, kwargs): method enable_registration_welcome_sms_for_case (line 643) | def enable_registration_welcome_sms_for_case(self): method enable_registration_welcome_sms_for_mobile_worker (line 648) | def enable_registration_welcome_sms_for_mobile_worker(self): method current_values (line 653) | def current_values(self): method _clean_dependent_field (line 675) | def _clean_dependent_field(self, bool_field, field): method clean_use_default_sms_response (line 684) | def clean_use_default_sms_response(self): method clean_default_sms_response (line 687) | def clean_default_sms_response(self): method clean_use_custom_case_username (line 691) | def clean_use_custom_case_username(self): method clean_custom_case_username (line 694) | def clean_custom_case_username(self): method clean_use_custom_message_count_threshold (line 698) | def clean_use_custom_message_count_threshold(self): method clean_custom_message_count_threshold (line 702) | def clean_custom_message_count_threshold(self): method clean_use_custom_chat_template (line 709) | def clean_use_custom_chat_template(self): method clean_custom_chat_template (line 714) | def clean_custom_chat_template(self): method _clean_time_window_json (line 723) | def _clean_time_window_json(self, field_name): method clean_use_restricted_sms_times (line 769) | def clean_use_restricted_sms_times(self): method clean_restricted_sms_times_json (line 772) | def clean_restricted_sms_times_json(self): method clean_use_sms_conversation_times (line 778) | def clean_use_sms_conversation_times(self): method clean_sms_conversation_times_json (line 781) | def clean_sms_conversation_times_json(self): method clean_count_messages_as_read_by_anyone (line 787) | def clean_count_messages_as_read_by_anyone(self): method clean_sms_case_registration_enabled (line 791) | def clean_sms_case_registration_enabled(self): method clean_sms_case_registration_type (line 795) | def clean_sms_case_registration_type(self): method get_user_group_or_location (line 799) | def get_user_group_or_location(self, object_id): method get_user (line 820) | def get_user(self, object_id): method clean_sms_case_registration_owner_id (line 830) | def clean_sms_case_registration_owner_id(self): method clean_sms_case_registration_user_id (line 844) | def clean_sms_case_registration_user_id(self): method clean_sms_mobile_worker_registration_enabled (line 858) | def clean_sms_mobile_worker_registration_enabled(self): method clean_sms_conversation_length (line 862) | def clean_sms_conversation_length(self): method clean_custom_daily_outbound_sms_limit (line 866) | def clean_custom_daily_outbound_sms_limit(self): class BackendForm (line 880) | class BackendForm(Form): method is_global_backend (line 925) | def is_global_backend(self): method general_fields (line 929) | def general_fields(self): method __init__ (line 960) | def __init__(self, *args, **kwargs): method gateway_specific_fields (line 1000) | def gateway_specific_fields(self): method clean_name (line 1003) | def clean_name(self): method clean_authorized_domains (line 1033) | def clean_authorized_domains(self): method clean_opt_out_keywords (line 1043) | def clean_opt_out_keywords(self): method clean_opt_in_keywords (line 1050) | def clean_opt_in_keywords(self): method clean_reply_to_phone_number (line 1057) | def clean_reply_to_phone_number(self): class BackendMapForm (line 1069) | class BackendMapForm(Form): method __init__ (line 1076) | def __init__(self, *args, **kwargs): method set_catchall_choices (line 1082) | def set_catchall_choices(self, backends): method setup_crispy (line 1089) | def setup_crispy(self): method _clean_prefix (line 1116) | def _clean_prefix(self, prefix): method _clean_backend_id (line 1126) | def _clean_backend_id(self, backend_id): method clean_backend_map (line 1146) | def clean_backend_map(self): method clean_catchall_backend_id (line 1162) | def clean_catchall_backend_id(self): class InitiateAddSMSBackendForm (line 1170) | class InitiateAddSMSBackendForm(Form): method __init__ (line 1180) | def __init__(self, user: CouchUser, *args, **kwargs): method backend_classes_for_domain (line 1212) | def backend_classes_for_domain(self, domain): class SubscribeSMSForm (line 1220) | class SubscribeSMSForm(Form): method __init__ (line 1254) | def __init__(self, *args, **kwargs): method save (line 1274) | def save(self, commtrack_settings): class ComposeMessageForm (line 1288) | class ComposeMessageForm(forms.Form): method __init__ (line 1295) | def __init__(self, *args, **kwargs): class SentTestSmsForm (line 1319) | class SentTestSmsForm(Form): method __init__ (line 1332) | def __init__(self, *args, **kwargs): method set_backend_choices (line 1339) | def set_backend_choices(self, backends): method setup_crispy (line 1346) | def setup_crispy(self): method clean_phone_number (line 1369) | def clean_phone_number(self): method clean_backend_id (line 1374) | def clean_backend_id(self): FILE: corehq/apps/sms/handlers/exceptions.py class KeywordProcessingError (line 2) | class KeywordProcessingError(Exception): FILE: corehq/apps/sms/handlers/fallback.py function fallback_handler (line 10) | def fallback_handler(verified_number, text, msg): FILE: corehq/apps/sms/handlers/form_session.py function form_session_handler (line 42) | def form_session_handler(verified_number, text, msg): function get_single_open_session_or_close_multiple (line 111) | def get_single_open_session_or_close_multiple(domain, contact_id): function answer_next_question (line 132) | def answer_next_question(verified_number, text, msg, session, subevent_id): function validate_answer (line 164) | def validate_answer(event, text, verified_number): function format_choices (line 272) | def format_choices(choices_list): function has_invalid_response (line 279) | def has_invalid_response(responses): function mark_as_invalid_response (line 286) | def mark_as_invalid_response(msg): FILE: corehq/apps/sms/handlers/forwarding.py function forward_sms (line 12) | def forward_sms(msg, domain, verified_number, text, backend_id): FILE: corehq/apps/sms/handlers/keyword.py class StructuredSMSException (line 65) | class StructuredSMSException(Exception): method __init__ (line 67) | def __init__(self, *args, **kwargs): function contact_can_use_keyword (line 75) | def contact_can_use_keyword(verified_number, keyword): function handle_global_keywords (line 84) | def handle_global_keywords(v, text, msg, text_words, open_sessions): function global_keyword_start (line 101) | def global_keyword_start(verified_number, text, msg, text_words, open_se... function global_keyword_stop (line 122) | def global_keyword_stop(verified_number, text, msg, text_words, open_ses... function global_keyword_current (line 127) | def global_keyword_current(verified_number, text, msg, text_words, open_... function global_keyword_unknown (line 143) | def global_keyword_unknown(verified_number, text, msg, text_words, open_... function handle_domain_keywords (line 149) | def handle_domain_keywords(verified_number, text, msg, text_words, sessi... function sms_keyword_handler (line 173) | def sms_keyword_handler(verified_number, text, msg): function _handle_structured_sms (line 188) | def _handle_structured_sms(domain, args, contact_id, session_id, function parse_structured_sms_named_args (line 228) | def parse_structured_sms_named_args(args, action, verified_number=None): function split_args (line 279) | def split_args(text, survey_keyword): function log_error (line 289) | def log_error(error, logged_subevent=None): function get_case_id (line 294) | def get_case_id(contact, case=None): function get_app_module_form (line 304) | def get_app_module_form(domain, app_id, form_unique_id, logged_subevent=... function start_session_for_structured_sms (line 318) | def start_session_for_structured_sms(domain, contact, phone_number, app,... function handle_structured_sms (line 359) | def handle_structured_sms(survey_keyword, survey_keyword_action, contact, function add_keyword_metadata (line 449) | def add_keyword_metadata(msg, session): function clean_up_and_send_response (line 461) | def clean_up_and_send_response(msg, contact, session, error_occurred, er... function get_question_id (line 482) | def get_question_id(xformsresponse, xpath_arg=None): function is_form_complete (line 493) | def is_form_complete(current_question): function keyword_uses_form_that_requires_case (line 501) | def keyword_uses_form_that_requires_case(survey_keyword): function get_case_by_external_id (line 515) | def get_case_by_external_id(domain, external_id, user): function user_is_owner (line 532) | def user_is_owner(user, case): function case_is_shared (line 536) | def case_is_shared(user, case): function access_through_subcases (line 542) | def access_through_subcases(user, case): function user_can_access_case (line 548) | def user_can_access_case(user, case): function send_keyword_response (line 556) | def send_keyword_response(vn, message_id, logged_event): function process_survey_keyword_actions (line 570) | def process_survey_keyword_actions(verified_number, survey_keyword, text... function _setup_messaging_event (line 634) | def _setup_messaging_event(survey_keyword, sender, msg): function _resolve_case_for_user (line 646) | def _resolve_case_for_user(sender, survey_keyword, args, verified_number... function _resolve_action_contact (line 669) | def _resolve_action_contact(survey_keyword_action, sender, verified_numb... function _process_messaging_action (line 687) | def _process_messaging_action(survey_keyword_action, contact, case, veri... FILE: corehq/apps/sms/management/commands/backfill_sms_subevent_date.py class Command (line 20) | class Command(BaseCommand): method add_arguments (line 23) | def add_arguments(self, parser): method handle (line 29) | def handle(self, **options): function update_subevent_date_from_emails (line 59) | def update_subevent_date_from_emails(chunk_size, explain): function update_subevent_date_from_sms (line 81) | def update_subevent_date_from_sms(chunk_size, explain): function update_subevent_date_from_xform_session (line 102) | def update_subevent_date_from_xform_session(chunk_size, explain): function update_subevent_date_from_subevent (line 123) | def update_subevent_date_from_subevent(chunk_size, explain): function update_subevent_domain_from_parent (line 144) | def update_subevent_domain_from_parent(chunk_size, explain): function run_query_until_no_updates (line 159) | def run_query_until_no_updates(slug, query, count_query, explain): function run_query_until_no_updates_ (line 167) | def run_query_until_no_updates_(slug, query, count_query): function _get_count (line 196) | def _get_count(count_query): function explain_query_until_no_updates (line 203) | def explain_query_until_no_updates(slug, query, count_query): FILE: corehq/apps/sms/management/commands/change_phonenumber_backend.py class Command (line 15) | class Command(BaseCommand): method add_arguments (line 18) | def add_arguments(self, parser): method handle (line 30) | def handle(self, old_backend, new_backend=None, domain=None, **options): function dump_csv (line 45) | def dump_csv(query, path): function print_counts_by_default_backend (line 59) | def print_counts_by_default_backend(query): function reassign (line 73) | def reassign(query, new_backend): function confirm (line 85) | def confirm(msg): FILE: corehq/apps/sms/management/commands/generate_fake_sms_data.py class Command (line 6) | class Command(BaseCommand): method add_arguments (line 11) | def add_arguments(self, parser): method handle (line 15) | def handle(self, domain, num_messages, **kwargs): FILE: corehq/apps/sms/management/commands/requeue_outgoing_messages.py class Command (line 7) | class Command(BaseCommand): method add_arguments (line 10) | def add_arguments(self, parser): method handle (line 15) | def handle(self, domain, start_timestamp, end_timestamp, **options): FILE: corehq/apps/sms/management/commands/run_sms_queue.py function skip_domain (line 14) | def skip_domain(domain): class SMSEnqueuingOperation (line 18) | class SMSEnqueuingOperation(BaseCommand): method get_enqueue_lock (line 28) | def get_enqueue_lock(self, queued_sms): method create_tasks (line 41) | def create_tasks(self): method enqueue (line 48) | def enqueue(self, queued_sms): method handle (line 53) | def handle(self, **options): class Command (line 62) | class Command(SMSEnqueuingOperation): FILE: corehq/apps/sms/messages.py function get_message (line 87) | def get_message(msg_id, verified_number=None, context=None, domain=None,... FILE: corehq/apps/sms/migration_status.py class MigrationInfo (line 33) | class MigrationInfo(object): method __init__ (line 35) | def __init__(self, migration_names, tag_name, commands): class MigrationException (line 53) | class MigrationException(Exception): function assert_messaging_migration_complete (line 58) | def assert_messaging_migration_complete(info): function assert_backend_migration_complete (line 66) | def assert_backend_migration_complete(apps, schema_editor): function assert_domain_default_backend_migration_complete (line 76) | def assert_domain_default_backend_migration_complete(apps, schema_editor): function assert_log_migration_complete (line 86) | def assert_log_migration_complete(apps, schema_editor): function assert_phone_number_migration_complete (line 96) | def assert_phone_number_migration_complete(apps, schema_editor): function assert_keyword_migration_complete (line 106) | def assert_keyword_migration_complete(apps, schema_editor): FILE: corehq/apps/sms/migrations/0001_initial.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0002_add_selfregistrationinvitation.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0003_add_backend_models.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0004_add_sqlivrbackend_sqlkookoobackend.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0005_remove_mobilebackend_unique_constraint.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0006_add_migrationstatus.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0007_check_for_backend_migration.py function noop (line 6) | def noop(*args, **kwargs): class Migration (line 10) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0008_add_backend_mapping_unique_constraint.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0009_check_for_domain_default_backend_migration.py function noop (line 8) | def noop(*args, **kwargs): class Migration (line 12) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0010_update_sqlmobilebackend_couch_id.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0011_alter_inbound_api_key.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0012_add_lastreadmessage_expectedcallback.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0013_check_for_log_migration.py function noop (line 6) | def noop(*args, **kwargs): class Migration (line 10) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0014_add_queuedsms.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0015_rename_phonenumber_to_phoneblacklist.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0016_add_phonenumber.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0017_update_phoneblacklist.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0018_check_for_phone_number_migration.py function noop (line 8) | def noop(*args, **kwargs): class Migration (line 12) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0019_add_new_registration_invitation_fields.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0020_remove_selfregistrationinvitation_odk_url.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0021_add_keyword.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0022_keyword_last_modified.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0023_check_for_keyword_migration.py function noop (line 6) | def noop(*args, **kwargs): class Migration (line 10) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0024_add_is_two_way.py function set_pending_verification_numbers (line 6) | def set_pending_verification_numbers(apps, schema_editor): function noop (line 12) | def noop(apps, schema_editor): class Migration (line 16) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0025_add_custom_metadata.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0026_add_messagingsubevent_case_id_index.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0027_ivorycoastmtnbackend.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0028_messagingevent_source.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0029_daily_outbound_sms_limit_reached.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0030_karixbackend.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0031_airteltclbackend.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0032_couch_id_blank.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0033_starfishbackend.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0034_auto_20191007_0756_noop.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0036_index_cleanup.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0037_app_id.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0038_sqlturnwhatsappbackend.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0039_trumpia_gateway.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0040_remove_karix_backend.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0041_email.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0042_infobip_pinpoint_backends.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0043_auto_20200622_1243.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0044_opt_keywords.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0045_auto_20200902_0938.py class Migration (line 15) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0046_delete_selfregistrationinvitation.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0046_keywords_linked_domain_fields.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0047_merge_20200918_1641.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0048_delete_sqlicdsbackend.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0049_auto_enable_turnio_ff.py function auto_enable_turnio_ff_for_certain_domains (line 7) | def auto_enable_turnio_ff_for_certain_domains(apps, schema_editor): function noop (line 15) | def noop(apps, schema_editor): class Migration (line 19) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0050_sms_email_date_modified.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0051_reset_modified_on.py function _reset_date_modified (line 9) | def _reset_date_modified(model_name): class Migration (line 20) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0052_messagingsubevent_date_last_activity.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0053_alter_messagingsubevent_date_last_activity.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0054_messagingsubevent_domain.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0055_messagingsubevent_index_domain_date_id.py class Migration (line 16) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0056_backfill_sms_event_date.py function _assert_migrated (line 32) | def _assert_migrated(apps, schema_editor): function count_items_to_be_migrated (line 67) | def count_items_to_be_migrated(connection): class Migration (line 74) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0057_fcm_content_type_messaging_events.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0058_email_html_body.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0059_remove_unicel_backend.py function remove_unicel_backend (line 6) | def remove_unicel_backend(apps, schema_editor): class Migration (line 12) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0060_alter_messagingevent_content_type_and_more.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/sms/migrations/0061_rename_expectedcallback_domain_date_sms_expecte_domain_d5863a_idx_and_more.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sms/mixin.py class PhoneNumberException (line 16) | class PhoneNumberException(Exception): class InvalidFormatException (line 20) | class InvalidFormatException(PhoneNumberException): class PhoneNumberInUseException (line 24) | class PhoneNumberInUseException(PhoneNumberException): class BadSMSConfigException (line 28) | class BadSMSConfigException(Exception): class BackendProcessingException (line 32) | class BackendProcessingException(Exception): class UnrecognizedBackendException (line 36) | class UnrecognizedBackendException(Exception): function apply_leniency (line 40) | def apply_leniency(contact_phone_number): class CommCareMobileContactMixin (line 60) | class CommCareMobileContactMixin(object): method phone_sync_key (line 67) | def phone_sync_key(self): method get_time_zone (line 70) | def get_time_zone(self): method get_language_code (line 77) | def get_language_code(self): method get_email (line 84) | def get_email(self): method get_phone_entries (line 92) | def get_phone_entries(self): method get_two_way_numbers (line 99) | def get_two_way_numbers(self): method validate_number_format (line 107) | def validate_number_format(cls, phone_number): method _create_phone_entry (line 117) | def _create_phone_entry(self, phone_number): method create_phone_entry (line 129) | def create_phone_entry(self, phone_number): method get_or_create_phone_entry (line 134) | def get_or_create_phone_entry(self, phone_number): method _get_or_create_phone_entry (line 138) | def _get_or_create_phone_entry(self, phone_number): method delete_phone_entry (line 148) | def delete_phone_entry(self, phone_number): class MessagingCaseContactMixin (line 155) | class MessagingCaseContactMixin(CommCareMobileContactMixin): method get_phone_info (line 157) | def get_phone_info(self): method get_time_zone (line 205) | def get_time_zone(self): method get_language_code (line 208) | def get_language_code(self): method get_email (line 211) | def get_email(self): method get_phone_number (line 214) | def get_phone_number(self): method raw_username (line 222) | def raw_username(self): FILE: corehq/apps/sms/models.py class Log (line 58) | class Log(models.Model): class Meta (line 60) | class Meta(object): method set_gateway_error (line 92) | def set_gateway_error(self, message): method set_system_error (line 99) | def set_system_error(self, message=None): method by_domain (line 105) | def by_domain(cls, domain, start_date=None, end_date=None): method by_recipient (line 117) | def by_recipient(cls, contact_doc_type, contact_id): method get_last_log_for_recipient (line 124) | def get_last_log_for_recipient(cls, contact_doc_type, contact_id, dire... method count_by_domain (line 138) | def count_by_domain(cls, domain, direction=None): method recipient (line 147) | def recipient(self): method inbound_entry_exists (line 154) | def inbound_entry_exists(cls, contact_doc_type, contact_id, from_times... class SMSBase (line 171) | class SMSBase(UUIDGeneratorMixin, Log): class Meta (line 276) | class Meta(object): method outbound_backend (line 281) | def outbound_backend(self): method set_status_pending (line 291) | def set_status_pending(self): method is_status_pending (line 297) | def is_status_pending(self): class SMS (line 301) | class SMS(SMSBase): class Meta (line 304) | class Meta: method to_json (line 307) | def to_json(self): method publish_change (line 312) | def publish_change(self): method update_subevent_activity (line 320) | def update_subevent_activity(self): method requeue (line 325) | def requeue(self): method get_counts_by_date (line 347) | def get_counts_by_date(domain, start_date, end_date, time_zone): class QueuedSMS (line 383) | class QueuedSMS(SMSBase): class Meta (line 385) | class Meta(object): method get_queued_sms (line 389) | def get_queued_sms(cls): class SQLLastReadMessage (line 395) | class SQLLastReadMessage(UUIDGeneratorMixin, models.Model): class Meta (line 397) | class Meta(object): method by_anyone (line 424) | def by_anyone(cls, domain, contact_id): method by_user (line 441) | def by_user(cls, domain, user_id, contact_id): class ExpectedCallback (line 460) | class ExpectedCallback(UUIDGeneratorMixin, models.Model): class Meta (line 462) | class Meta(object): method by_domain (line 482) | def by_domain(cls, domain, start_date=None, end_date=None): method by_domain_recipient_date (line 494) | def by_domain_recipient_date(cls, domain, recipient_id, date): class PhoneBlacklist (line 505) | class PhoneBlacklist(models.Model): class Meta (line 530) | class Meta(object): method get_by_phone_number (line 534) | def get_by_phone_number(cls, phone_number): method get_by_phone_number_or_none (line 539) | def get_by_phone_number_or_none(cls, phone_number): method get_or_create (line 546) | def get_or_create(cls, phone_number): method can_receive_sms (line 556) | def can_receive_sms(cls, phone_number): method opt_in_sms (line 565) | def opt_in_sms(cls, phone_number, domain=None): method opt_out_sms (line 581) | def opt_out_sms(cls, phone_number, domain=None): class ConnectMessagingNumber (line 597) | class ConnectMessagingNumber: method __init__ (line 602) | def __init__(self, owner): method phone_number (line 606) | def phone_number(self): method user_link (line 610) | def user_link(self): method messaging_channel (line 615) | def messaging_channel(self): method backend (line 619) | def backend(self): method owner_id (line 623) | def owner_id(self): method domain (line 627) | def domain(self): method is_sms (line 631) | def is_sms(self): class PhoneNumber (line 635) | class PhoneNumber(UUIDGeneratorMixin, models.Model): method __init__ (line 668) | def __init__(self, *args, **kwargs): method __repr__ (line 673) | def __repr__(self): method is_sms (line 680) | def is_sms(self): method backend (line 684) | def backend(self): method owner (line 701) | def owner(self): method retire (line 713) | def retire(self): method by_extensive_search (line 717) | def by_extensive_search(cls, phone_number): method by_couch_id (line 739) | def by_couch_id(cls, couch_id): method get_two_way_number (line 746) | def get_two_way_number(cls, phone_number): method _get_two_way_number (line 751) | def _get_two_way_number(cls, phone_number): method get_number_pending_verification (line 759) | def get_number_pending_verification(cls, phone_number): method _get_number_pending_verification (line 764) | def _get_number_pending_verification(cls, phone_number): method get_reserved_number (line 776) | def get_reserved_number(cls, phone_number): method get_two_way_number_with_domain_scope (line 783) | def get_two_way_number_with_domain_scope(cls, phone_number, domains): method get_two_way_number_by_suffix (line 792) | def get_two_way_number_by_suffix(cls, phone_number): method by_domain (line 812) | def by_domain(cls, domain, ids_only=False): method count_by_domain (line 820) | def count_by_domain(cls, domain): method by_owner_id (line 825) | def by_owner_id(cls, owner_id): method get_phone_number_for_owner (line 833) | def get_phone_number_for_owner(cls, owner_id, phone_number): method _clear_quickcaches (line 843) | def _clear_quickcaches(cls, owner_id, phone_number, old_owner_id=None,... method _clear_caches (line 854) | def _clear_caches(self): method cache_accessor_lock_keys (line 863) | def cache_accessor_lock_keys(self): method save (line 883) | def save(self, *args, **kwargs): method delete (line 894) | def delete(self, *args, **kwargs): method verify_uniqueness (line 899) | def verify_uniqueness(self): method set_two_way (line 904) | def set_two_way(self): method set_pending_verification (line 913) | def set_pending_verification(self): method set_verified (line 922) | def set_verified(self): class MessagingStatusMixin (line 927) | class MessagingStatusMixin(object): method refresh (line 929) | def refresh(self): method error (line 932) | def error(self, error_code, additional_error_text=None, status=None): method completed (line 941) | def completed(self): class MessagingEvent (line 949) | class MessagingEvent(models.Model, MessagingStatusMixin): class Meta (line 1202) | class Meta(object): method get_source_display (line 1205) | def get_source_display(self): method get_recipient_type_from_doc_type (line 1212) | def get_recipient_type_from_doc_type(cls, recipient_doc_type): method get_recipient_type (line 1222) | def get_recipient_type(cls, recipient): method _get_recipient_doc_type (line 1226) | def _get_recipient_doc_type(cls, recipient_type): method get_recipient_doc_type (line 1237) | def get_recipient_doc_type(self): method create_event_for_adhoc_sms (line 1241) | def create_event_for_adhoc_sms(cls, domain, recipient=None, method create_structured_sms_subevent (line 1261) | def create_structured_sms_subevent(self, case_id): method create_subevent_for_single_sms (line 1277) | def create_subevent_for_single_sms(self, recipient_doc_type=None, method create_subevent_for_content_type (line 1293) | def create_subevent_for_content_type(self, recipient_doc_type=None, method subevents (line 1311) | def subevents(self): method get_form_name_or_none (line 1315) | def get_form_name_or_none(cls, domain, app_id, form_unique_id): method get_content_info_from_keyword (line 1324) | def get_content_info_from_keyword(cls, keyword): method get_source_and_id_from_schedule_instance (line 1353) | def get_source_and_id_from_schedule_instance(cls, schedule_instance): method get_content_info_from_content_object (line 1389) | def get_content_info_from_content_object(cls, domain, content): method get_recipient_type_and_id_from_schedule_instance (line 1420) | def get_recipient_type_and_id_from_schedule_instance(cls, schedule_ins... method create_from_schedule_instance (line 1452) | def create_from_schedule_instance(cls, schedule_instance, content): method create_subevent_from_contact_and_content (line 1476) | def create_subevent_from_contact_and_content(self, contact, content, c... method create_from_keyword (line 1504) | def create_from_keyword(cls, keyword, contact): method create_verification_event (line 1527) | def create_verification_event(cls, domain, contact): method get_current_verification_event (line 1540) | def get_current_verification_event(cls, domain, contact_id, phone_numb... method get_counts_by_date (line 1555) | def get_counts_by_date(domain, start_date, end_date, time_zone): method get_counts_of_errors (line 1600) | def get_counts_of_errors(cls, domain, start_date, end_date, time_zone): class MessagingSubEvent (line 1641) | class MessagingSubEvent(models.Model, MessagingStatusMixin): class Meta (line 1677) | class Meta(object): method save (line 1684) | def save(self, *args, **kwargs): method get_recipient_doc_type (line 1712) | def get_recipient_doc_type(self): method update_date_last_activity (line 1715) | def update_date_last_activity(self): class ActiveMobileBackendManager (line 1719) | class ActiveMobileBackendManager(models.Manager): method get_queryset (line 1721) | def get_queryset(self): class SQLMobileBackend (line 1725) | class SQLMobileBackend(UUIDGeneratorMixin, models.Model): class Meta (line 1805) | class Meta(object): class ExpectedDomainLevelBackend (line 1809) | class ExpectedDomainLevelBackend(Exception): method to_json (line 1812) | def to_json(self): method __str__ (line 1817) | def __str__(self): method domain_is_shared (line 1824) | def domain_is_shared(self, domain): method domains_with_access (line 1833) | def domains_with_access(self): method domain_is_authorized (line 1839) | def domain_is_authorized(self, domain): method name_is_unique (line 1848) | def name_is_unique(cls, name, domain=None, backend_id=None): method get_authorized_domain_list (line 1872) | def get_authorized_domain_list(self): method get_domain_backends (line 1877) | def get_domain_backends(cls, backend_type, domain, count_only=False, o... method get_global_backends_for_this_class (line 1908) | def get_global_backends_for_this_class(cls, backend_type): method get_global_backend_ids (line 1917) | def get_global_backend_ids(cls, backend_type, couch_id=False): method get_global_backends (line 1925) | def get_global_backends(cls, backend_type, count_only=False, offset=No... method get_domain_default_backend (line 1942) | def get_domain_default_backend(cls, backend_type, domain, id_only=False): method load_default_backend (line 1964) | def load_default_backend(cls, backend_type, phone_number, domain=None): method load_default_by_phone_and_domain (line 1983) | def load_default_by_phone_and_domain(cls, backend_type, phone_number, ... method get_backend_info_by_api_key (line 2009) | def get_backend_info_by_api_key(cls, hq_api_id, inbound_api_key): method get_backend_api_id (line 2032) | def get_backend_api_id(cls, backend_id, is_couch_id=False): method load (line 2045) | def load(cls, backend_id, api_id=None, is_couch_id=False, include_dele... method get_backend_from_id_and_api_id_result (line 2076) | def get_backend_from_id_and_api_id_result(cls, result): method get_owned_backend_by_name (line 2083) | def get_owned_backend_by_name(cls, backend_type, domain, name): method get_shared_backend_by_name (line 2094) | def get_shared_backend_by_name(cls, backend_type, domain, name): method get_global_backend_by_name (line 2106) | def get_global_backend_by_name(cls, backend_type, name): method load_by_name (line 2116) | def load_by_name(cls, backend_type, domain, name): method get_api_id (line 2140) | def get_api_id(cls): method get_generic_name (line 2147) | def get_generic_name(cls): method get_form_class (line 2155) | def get_form_class(cls): method get_available_extra_fields (line 2162) | def get_available_extra_fields(cls): method config (line 2170) | def config(self): method get_extra_fields (line 2179) | def get_extra_fields(self): method set_extra_fields (line 2184) | def set_extra_fields(self, **kwargs): method __clear_shared_domain_cache (line 2198) | def __clear_shared_domain_cache(self, new_domains): method set_shared_domains (line 2204) | def set_shared_domains(self, domains): method soft_delete (line 2218) | def soft_delete(self): method __clear_caches (line 2229) | def __clear_caches(self): method save (line 2238) | def save(self, *args, **kwargs): method delete (line 2242) | def delete(self, *args, **kwargs): class SQLSMSBackend (line 2248) | class SQLSMSBackend(SQLMobileBackend): class Meta (line 2250) | class Meta(object): method get_max_simultaneous_connections (line 2254) | def get_max_simultaneous_connections(self): method get_sms_rate_limit (line 2263) | def get_sms_rate_limit(self): method send (line 2271) | def send(self, msg, *args, **kwargs): method get_opt_in_keywords (line 2278) | def get_opt_in_keywords(cls): method get_pass_through_opt_in_keywords (line 2286) | def get_pass_through_opt_in_keywords(cls): method get_opt_out_keywords (line 2304) | def get_opt_out_keywords(cls): class PhoneLoadBalancingMixin (line 2312) | class PhoneLoadBalancingMixin(object): method get_next_phone_number (line 2333) | def get_next_phone_number(self, destination_phone_number): class BackendMap (line 2351) | class BackendMap(object): method __init__ (line 2353) | def __init__(self, catchall_backend_id, backend_map): method get_backend_id_by_prefix (line 2368) | def get_backend_id_by_prefix(self, phone_number): class SQLMobileBackendMapping (line 2376) | class SQLMobileBackendMapping(models.Model): class Meta (line 2394) | class Meta(object): method __set_default_domain_backend (line 2420) | def __set_default_domain_backend(cls, domain, backend_type, backend=No... method set_default_domain_backend (line 2448) | def set_default_domain_backend(cls, domain, backend, backend_type=SQLM... method unset_default_domain_backend (line 2452) | def unset_default_domain_backend(cls, domain, backend_type=SQLMobileBa... method get_prefix_to_backend_map (line 2457) | def get_prefix_to_backend_map(cls, backend_type, domain=None): method __clear_prefix_to_backend_map_cache (line 2479) | def __clear_prefix_to_backend_map_cache(self): method save (line 2482) | def save(self, *args, **kwargs): method delete (line 2486) | def delete(self, *args, **kwargs): class MobileBackendInvitation (line 2491) | class MobileBackendInvitation(models.Model): class Meta (line 2493) | class Meta(object): class MigrationStatus (line 2506) | class MigrationStatus(models.Model): class Meta (line 2519) | class Meta(object): method set_migration_completed (line 2530) | def set_migration_completed(cls, name): method has_migration_completed (line 2536) | def has_migration_completed(cls, name): class Keyword (line 2544) | class Keyword(UUIDGeneratorMixin, models.Model): class Meta (line 2551) | class Meta(object): method is_structured_sms (line 2584) | def is_structured_sms(self): method get_id (line 2588) | def get_id(self): method get_keyword (line 2592) | def get_keyword(cls, domain, keyword): method get_by_domain (line 2599) | def get_by_domain(cls, domain, limit=None, skip=None): method save (line 2610) | def save(self, *args, **kwargs): method delete (line 2614) | def delete(self, *args, **kwargs): method clear_caches (line 2618) | def clear_caches(self): method domain_has_keywords (line 2623) | def domain_has_keywords(cls, domain): class KeywordAction (line 2627) | class KeywordAction(models.Model): class InvalidModelStateException (line 2634) | class InvalidModelStateException(Exception): method save (line 2706) | def save(self, *args, **kwargs): class DailyOutboundSMSLimitReached (line 2722) | class DailyOutboundSMSLimitReached(models.Model): class Meta (line 2736) | class Meta(object): method create_for_domain_and_date (line 2742) | def create_for_domain_and_date(cls, domain, date): class Email (line 2752) | class Email(models.Model): class ConnectMessage (line 2773) | class ConnectMessage(Log): method __init__ (line 2779) | def __init__(self, *args, **kwargs): method outbound_backend (line 2786) | def outbound_backend(self): method domain_scope (line 2790) | def domain_scope(self): FILE: corehq/apps/sms/phonenumbers_helper.py class PhoneNumberParseException (line 5) | class PhoneNumberParseException(Exception): class PhoneNumber (line 9) | class PhoneNumber(object): method __init__ (line 11) | def __init__(self, country_code, national_number): function parse_phone_number (line 16) | def parse_phone_number(number, region=None, failhard=True): function strip_plus (line 29) | def strip_plus(number): function get_country_code_and_national_number (line 33) | def get_country_code_and_national_number(number): function country_code_for_region (line 43) | def country_code_for_region(region): function country_name_for_country_code (line 53) | def country_name_for_country_code(country_code): FILE: corehq/apps/sms/serializers.py class SMSSerializer (line 6) | class SMSSerializer(serializers.ModelSerializer): class Meta (line 11) | class Meta(object): class MobileBackendSerializer (line 16) | class MobileBackendSerializer(serializers.ModelSerializer): class Meta (line 17) | class Meta(object): FILE: corehq/apps/sms/static/sms/js/add_gateway.js function addParam (line 7) | function addParam($widget, count, nm, val) { FILE: corehq/apps/sms/static/sms/js/backend_map.js function backendMapping (line 7) | function backendMapping(prefix, backendId) { function backendMapViewModel (line 14) | function backendMapViewModel(initial) { FILE: corehq/apps/sms/static/sms/js/chat.js function resize_messages (line 8) | function resize_messages() { function messageHistoryChoice (line 14) | function messageHistoryChoice(description, utcTimestamp) { function chatMessage (line 21) | function chatMessage(sender, text, timestamp, utcTimestamp, seen) { function chatWindowViewModel (line 40) | function chatWindowViewModel() { FILE: corehq/apps/sms/static/sms/js/chat_contacts.js function filterViewModel (line 11) | function filterViewModel() { FILE: corehq/apps/sms/static/sms/js/settings.js function dayTimeWindow (line 12) | function dayTimeWindow(day, startTime, endTime, timeInputRelationship) { function settingsViewModel (line 34) | function settingsViewModel(initial) { FILE: corehq/apps/sms/tasks.py function remove_from_queue (line 63) | def remove_from_queue(queued_sms): function get_sms_from_queued_sms (line 82) | def get_sms_from_queued_sms(queued_sms): function _get_sms_fields_to_copy (line 89) | def _get_sms_fields_to_copy(): function handle_unsuccessful_processing_attempt (line 102) | def handle_unsuccessful_processing_attempt(msg): function handle_successful_processing_attempt (line 111) | def handle_successful_processing_attempt(msg): function delay_processing (line 122) | def delay_processing(msg, minutes): function get_lock (line 127) | def get_lock(key): function time_within_windows (line 135) | def time_within_windows(domain_now, windows): function handle_domain_specific_delays (line 150) | def handle_domain_specific_delays(msg, domain_object, utcnow): function message_is_stale (line 181) | def message_is_stale(msg, utcnow): function get_connection_slot_from_phone_number (line 190) | def get_connection_slot_from_phone_number(phone_number, max_simultaneous... function get_connection_slot_lock (line 200) | def get_connection_slot_lock(phone_number, backend, max_simultaneous_con... function passes_trial_check (line 211) | def passes_trial_check(msg): function handle_outgoing (line 227) | def handle_outgoing(msg): function handle_incoming (line 281) | def handle_incoming(msg): class OutboundDailyCounter (line 292) | class OutboundDailyCounter(object): method __init__ (line 294) | def __init__(self, domain_object=None): method increment (line 312) | def increment(self): method decrement (line 322) | def decrement(self): method current_usage (line 326) | def current_usage(self): method daily_limit (line 333) | def daily_limit(self): method can_send_outbound_sms (line 342) | def can_send_outbound_sms(self, queued_sms): function process_sms (line 367) | def process_sms(queued_sms_pk): function send_to_sms_queue (line 455) | def send_to_sms_queue(queued_sms): function store_billable (line 466) | def store_billable(self, msg_couch_id): function delete_phone_numbers_for_owners (line 497) | def delete_phone_numbers_for_owners(owner_ids): function clear_case_caches (line 503) | def clear_case_caches(case): function sync_case_phone_number (line 508) | def sync_case_phone_number(contact_case): function sync_user_phone_numbers (line 571) | def sync_user_phone_numbers(self, couch_user_id): function _sync_user_phone_numbers (line 581) | def _sync_user_phone_numbers(couch_user_id): function publish_sms_change (line 622) | def publish_sms_change(self, sms_id): function queued_sms (line 630) | def queued_sms(): FILE: corehq/apps/sms/tests/data_generator.py function create_fake_sms (line 19) | def create_fake_sms(domain, randomize=False): function make_events_for_test (line 40) | def make_events_for_test( function _make_sms (line 83) | def _make_sms(domain, message_date, subevent, **kwargs): function get_test_sms_fields (line 93) | def get_test_sms_fields(domain, message_date, subevent_id): function make_simple_sms_for_test (line 138) | def make_simple_sms_for_test(domain, message, error_message=None, **kwar... function make_case_rule_sms_for_test (line 151) | def make_case_rule_sms_for_test(domain, rule_name, utcnow=None): function make_survey_sms_for_test (line 173) | def make_survey_sms_for_test(domain, rule_name, utcnow=None): function make_email_event_for_test (line 210) | def make_email_event_for_test(domain, schedule_name, user_ids, utcnow=No... FILE: corehq/apps/sms/tests/inbound_handlers.py class KeywordTestCase (line 17) | class KeywordTestCase(TouchformsTestCase): method setUp (line 22) | def setUp(self): method test_all_inbound (line 123) | def test_all_inbound(self): class PartialFormSubmissionTestCase (line 762) | class PartialFormSubmissionTestCase(TouchformsTestCase): method setUp (line 767) | def setUp(self): method testPartialSubmission (line 781) | def testPartialSubmission(self): method testMultimediaSubmission (line 834) | def testMultimediaSubmission(self): FILE: corehq/apps/sms/tests/opt_tests.py class OptTestCase (line 20) | class OptTestCase(DomainSubscriptionMixin, TestCase): method setUpClass (line 23) | def setUpClass(cls): method tearDownClass (line 49) | def tearDownClass(cls): method tearDown (line 60) | def tearDown(self): method get_last_sms (line 65) | def get_last_sms(self, phone_number): method handle_incoming (line 68) | def handle_incoming(self, *args, **kwargs): method test_opt_out_and_opt_in (line 72) | def test_opt_out_and_opt_in(self): method test_sending_to_opted_out_number (line 103) | def test_sending_to_opted_out_number(self): method test_custom_opt_keywords (line 139) | def test_custom_opt_keywords(self): FILE: corehq/apps/sms/tests/test_backends.py class AllBackendTest (line 67) | class AllBackendTest(DomainSubscriptionMixin, TestCase): method setUpClass (line 70) | def setUpClass(cls): method tearDownClass (line 211) | def tearDownClass(cls): method tearDown (line 218) | def tearDown(self): method _test_outbound_backend (line 221) | def _test_outbound_backend(self, backend, msg_text, mock_send): method _verify_inbound_request (line 237) | def _verify_inbound_request(self, backend_api_id, msg_text, backend_co... method _simulate_inbound_request_with_payload (line 247) | def _simulate_inbound_request_with_payload(self, url, method _simulate_inbound_request (line 263) | def _simulate_inbound_request(self, url, phone_param, method test_outbound_sms (line 311) | def test_outbound_sms( method test_telerivet_inbound_sms (line 354) | def test_telerivet_inbound_sms(self): method test_grapevine_inbound_sms (line 367) | def test_grapevine_inbound_sms(self): method test_turn_inbound_sms (line 382) | def test_turn_inbound_sms(self): method test_twilio_inbound_sms (line 400) | def test_twilio_inbound_sms(self): method test_twilio_401_response (line 408) | def test_twilio_401_response(self): method test_sislog_inbound_sms (line 419) | def test_sislog_inbound_sms(self): method test_yo_inbound_sms (line 429) | def test_yo_inbound_sms(self): method test_smsgh_inbound_sms (line 439) | def test_smsgh_inbound_sms(self): method test_apposit_inbound_sms (line 449) | def test_apposit_inbound_sms(self): method test_push_inbound_sms (line 461) | def test_push_inbound_sms(self): method test_trumpia_inbound_sms (line 475) | def test_trumpia_inbound_sms(self): method test_infobip_inbound_sms (line 498) | def test_infobip_inbound_sms(self): method test_pinpoint_inbound_sms (line 517) | def test_pinpoint_inbound_sms(self): class OutgoingFrameworkTestCase (line 529) | class OutgoingFrameworkTestCase(DomainSubscriptionMixin, TestCase): method setUpClass (line 532) | def setUpClass(cls): method tearDownClass (line 661) | def tearDownClass(cls): method test_multiple_country_prefixes (line 681) | def test_multiple_country_prefixes(self): method __test_global_backend_map (line 704) | def __test_global_backend_map(self): method __test_domain_default (line 737) | def __test_domain_default(self): method __test_shared_backend (line 749) | def __test_shared_backend(self): method __test_verified_number_with_map (line 771) | def __test_verified_number_with_map(self, contact): method __test_contact_level_backend (line 799) | def __test_contact_level_backend(self, contact): method __test_send_sms_with_backend (line 848) | def __test_send_sms_with_backend(self): method __test_send_sms_with_backend_name (line 859) | def __test_send_sms_with_backend_name(self): method test_choosing_appropriate_backend_for_outgoing (line 870) | def test_choosing_appropriate_backend_for_outgoing(self): method test_reserving_connection_slots (line 890) | def test_reserving_connection_slots(self): class SQLMobileBackendTestCase (line 914) | class SQLMobileBackendTestCase(TestCase): method assertBackendsEqual (line 916) | def assertBackendsEqual(self, backend1, backend2): method test_domain_is_shared (line 920) | def test_domain_is_shared(self): method test_domain_is_authorized (line 938) | def test_domain_is_authorized(self): method test_load_default_by_phone_and_domain (line 968) | def test_load_default_by_phone_and_domain(self): method test_get_backend_api_id (line 1092) | def test_get_backend_api_id(self): method test_load (line 1118) | def test_load(self): method test_load_by_name (line 1166) | def test_load_by_name(self): class LoadBalanceBackend (line 1258) | class LoadBalanceBackend(SQLTestSMSBackend, PhoneLoadBalancingMixin): class Meta (line 1260) | class Meta(object): method get_api_id (line 1264) | def get_api_id(cls): class RateLimitBackend (line 1268) | class RateLimitBackend(SQLTestSMSBackend): class Meta (line 1270) | class Meta(object): method get_sms_rate_limit (line 1273) | def get_sms_rate_limit(self): method get_api_id (line 1277) | def get_api_id(cls): class LoadBalanceAndRateLimitBackend (line 1281) | class LoadBalanceAndRateLimitBackend(SQLTestSMSBackend, PhoneLoadBalanci... class Meta (line 1283) | class Meta(object): method get_sms_rate_limit (line 1286) | def get_sms_rate_limit(self): method get_api_id (line 1290) | def get_api_id(cls): function mock_get_sms_backend_classes (line 1294) | def mock_get_sms_backend_classes(): class LoadBalancingAndRateLimitingTestCase (line 1303) | class LoadBalancingAndRateLimitingTestCase(BaseSMSTest): method setUp (line 1305) | def setUp(self): method tearDown (line 1313) | def tearDown(self): method create_outgoing_sms (line 1318) | def create_outgoing_sms(self, backend, phone_number): method assertRequeue (line 1330) | def assertRequeue(self, backend, phone_number): method assertNotRequeue (line 1334) | def assertNotRequeue(self, backend, phone_number): method test_load_balance (line 1338) | def test_load_balance(self): method test_rate_limit (line 1365) | def test_rate_limit(self): method test_load_balance_and_rate_limit (line 1384) | def test_load_balance_and_rate_limit(self): class SQLMobileBackendMappingTestCase (line 1422) | class SQLMobileBackendMappingTestCase(TestCase): method test_backend_map (line 1424) | def test_backend_map(self): method assertNoDomainDefaultBackend (line 1444) | def assertNoDomainDefaultBackend(self, domain): method assertDomainDefaultBackend (line 1450) | def assertDomainDefaultBackend(self, domain, backend): method test_set_default_domain_backend (line 1458) | def test_set_default_domain_backend(self): method test_get_prefix_to_backend_map (line 1486) | def test_get_prefix_to_backend_map(self): FILE: corehq/apps/sms/tests/test_backfill_subevent.py class TestBackfillSubevent (line 24) | class TestBackfillSubevent(TestCase): method setUpTestData (line 26) | def setUpTestData(cls): method test_update_from_email (line 31) | def test_update_from_email(self): method test_update_from_sms (line 35) | def test_update_from_sms(self): method test_update_from_xform_session (line 39) | def test_update_from_xform_session(self): method test_update_from_subevent (line 43) | def test_update_from_subevent(self): method test_update_subevent_domain (line 47) | def test_update_subevent_domain(self): method _do_backfill_validate_result (line 55) | def _do_backfill_validate_result(self, update_fn): method _setup_email_data (line 61) | def _setup_email_data(self): method _setup_sms_data (line 72) | def _setup_sms_data(self): method _setup_subevent_data_domain (line 78) | def _setup_subevent_data_domain(self): method _setup_survey_data (line 86) | def _setup_survey_data(self): method _setup_subevent_data (line 92) | def _setup_subevent_data(self): method _reset_dates_and_check (line 98) | def _reset_dates_and_check(self): FILE: corehq/apps/sms/tests/test_chat.py class LastReadMessageTestCase (line 17) | class LastReadMessageTestCase(TestCase): method setUpClass (line 20) | def setUpClass(cls): method tearDownClass (line 27) | def tearDownClass(cls): method test_last_read_message (line 31) | def test_last_read_message(self): class ChatHistoryTestCase (line 63) | class ChatHistoryTestCase(TestCase): method setUpClass (line 66) | def setUpClass(cls): method new_view (line 185) | def new_view(self): method tearDownClass (line 192) | def tearDownClass(cls): method patch_contact_id (line 198) | def patch_contact_id(self, contact_id): method patch_start_date (line 201) | def patch_start_date(self, start_date): method set_custom_case_username (line 205) | def set_custom_case_username(cls, name): method set_survey_filter_option (line 210) | def set_survey_filter_option(cls, filter_surveys_from_chat, method create_contact1 (line 216) | def create_contact1(self): method create_contact2 (line 220) | def create_contact2(self): method test_contact (line 223) | def test_contact(self): method test_contact_name (line 231) | def test_contact_name(self): method test_get_chat_user_name (line 246) | def test_get_chat_user_name(self): method test_start_date (line 261) | def test_start_date(self): method sms_to_json (line 271) | def sms_to_json(self, sms): method assertChatHistoryResponse (line 295) | def assertChatHistoryResponse(self, expected_data): method get_last_read_message (line 305) | def get_last_read_message(cls): method get_last_read_message_count (line 309) | def get_last_read_message_count(cls): method assertLastReadMessage (line 312) | def assertLastReadMessage(self, sms): method test_get_response_data (line 317) | def test_get_response_data(self): method test_update_last_read_message (line 362) | def test_update_last_read_message(self): FILE: corehq/apps/sms/tests/test_form_session_handler.py class FormSessionTestCase (line 28) | class FormSessionTestCase(TestCase): method setUpClass (line 31) | def setUpClass(cls): method tearDownClass (line 68) | def tearDownClass(cls): method _create_message_event_and_subevent (line 75) | def _create_message_event_and_subevent(self): method test_incoming_sms_linked_form_session (line 97) | def test_incoming_sms_linked_form_session(self): method test_incoming_sms_not_linked_form_session (line 117) | def test_incoming_sms_not_linked_form_session(self): method test_incoming_sms_multiple_subevents_for_session (line 137) | def test_incoming_sms_multiple_subevents_for_session(self): class FormSessionMultipleContactsTestCase (line 165) | class FormSessionMultipleContactsTestCase(TestCase): method setUpTestData (line 168) | def setUpTestData(cls): method setUp (line 204) | def setUp(self): method test_incoming_sms_linked_form_session__session_contact_matches_incoming (line 209) | def test_incoming_sms_linked_form_session__session_contact_matches_inc... method test_incoming_sms_linked_form_session__session_contact_different_from_incoming (line 226) | def test_incoming_sms_linked_form_session__session_contact_different_f... method _claim_channel (line 247) | def _claim_channel(self, session): method _make_session (line 251) | def _make_session(self, number): method _get_sms (line 264) | def _get_sms(self): FILE: corehq/apps/sms/tests/test_inbound_sms_phone_entry_assignment.py class TestGetInboundPhoneEntry (line 12) | class TestGetInboundPhoneEntry(TestCase): method setUpTestData (line 14) | def setUpTestData(cls): method test_get_reserved_number (line 89) | def test_get_reserved_number(self): method test_get_two_way_number_with_domain_scope (line 95) | def test_get_two_way_number_with_domain_scope(self): method test_get_two_way_number_with_domain_scope__reduced_scope (line 100) | def test_get_two_way_number_with_domain_scope__reduced_scope(self): method test_get_inbound_phone_entry__no_backend_id (line 105) | def test_get_inbound_phone_entry__no_backend_id(self): method test_get_inbound_phone_entry__global_backend (line 112) | def test_get_inbound_phone_entry__global_backend(self): method _get_inbound_phone_entry__backend_domain_2 (line 120) | def _get_inbound_phone_entry__backend_domain_2(self): method test_get_inbound_phone_entry__domain_backend (line 127) | def test_get_inbound_phone_entry__domain_backend(self): method test_get_inbound_phone_entry__inbound_sms_leniency_off (line 138) | def test_get_inbound_phone_entry__inbound_sms_leniency_off(self): method test_get_inbound_phone_entry__inbound_sms_leniency_on (line 146) | def test_get_inbound_phone_entry__inbound_sms_leniency_on(self): method test_get_inbound_phone_entry__one_phone_number_multiple_contacts_off (line 154) | def test_get_inbound_phone_entry__one_phone_number_multiple_contacts_o... method test_get_inbound_phone_entry__one_phone_number_multiple_contacts_on__no_session (line 163) | def test_get_inbound_phone_entry__one_phone_number_multiple_contacts_o... method test_get_inbound_phone_entry__one_phone_number_multiple_contacts_on__with_session (line 173) | def test_get_inbound_phone_entry__one_phone_number_multiple_contacts_o... method test_get_inbound_phone_entry__one_phone_number_multiple_contacts_on__session_different_domain (line 187) | def test_get_inbound_phone_entry__one_phone_number_multiple_contacts_o... method test_get_inbound_phone_entry__one_phone_number_multiple_contacts_on__session_no_contact (line 202) | def test_get_inbound_phone_entry__one_phone_number_multiple_contacts_o... FILE: corehq/apps/sms/tests/test_keyword.py class BaseKeywordHelperTest (line 22) | class BaseKeywordHelperTest(TestCase): method setUpClass (line 26) | def setUpClass(cls): method tearDownClass (line 57) | def tearDownClass(cls): class TestSetupMessagingEvent (line 62) | class TestSetupMessagingEvent(BaseKeywordHelperTest): method test_success (line 63) | def test_success(self): class TestResolveCaseForUser (line 74) | class TestResolveCaseForUser(BaseKeywordHelperTest): method test_success (line 77) | def test_success(self, mock_keyword_uses_form): method test_no_keywords (line 95) | def test_no_keywords(self): method test_single_arg (line 108) | def test_single_arg(self, mock_keyword_uses_form, mock_send_response): method test_no_matches (line 121) | def test_no_matches(self, mock_keyword_uses_form, mock_send_response): method test_multiple_matches (line 134) | def test_multiple_matches(self, mock_keyword_uses_form, mock_send_resp... class TestResolveActionContact (line 155) | class TestResolveActionContact(BaseKeywordHelperTest): method test_recipint_sender (line 157) | def test_recipint_sender(self): method test_recipient_owner (line 166) | def test_recipient_owner(self): method test_recipient_group (line 186) | def test_recipient_group(self): method test_unknown_recipient (line 204) | def test_unknown_recipient(self): class TestProcessMessagingAction (line 214) | class TestProcessMessagingAction(BaseKeywordHelperTest): method setUpClass (line 217) | def setUpClass(cls): method _call_func (line 226) | def _call_func(self, kw_action): method test_unexpected_action (line 235) | def test_unexpected_action(self): method test_sms_message (line 247) | def test_sms_message(self, mock_send): method test_sms_survey (line 256) | def test_sms_survey(self, mock_send): method test_connect_message (line 270) | def test_connect_message(self, mock_send): method test_connect_survey (line 284) | def test_connect_survey(self, mock_send): FILE: corehq/apps/sms/tests/test_phone_number_in_multiple_domains.py class FormSessionMultipleContactsTestCase (line 66) | class FormSessionMultipleContactsTestCase(TestCase): method setUpTestData (line 69) | def setUpTestData(cls): method setUp (line 114) | def setUp(self): method test_sms_form_session_in_primary_domain_with_plus_prefix (line 121) | def test_sms_form_session_in_primary_domain_with_plus_prefix(self): method test_sms_form_session_in_primary_domain_without_plus_prefix (line 124) | def test_sms_form_session_in_primary_domain_without_plus_prefix(self): method test_sms_form_session_in_secondary_domain_with_plus_prefix (line 127) | def test_sms_form_session_in_secondary_domain_with_plus_prefix(self): method test_sms_form_session_in_secondary_domain_without_plus_prefix (line 130) | def test_sms_form_session_in_secondary_domain_without_plus_prefix(self): method _test (line 133) | def _test(self, number, with_prefix): method _claim_channel (line 164) | def _claim_channel(self, session): method _make_session (line 171) | def _make_session(self, number): method _get_sms (line 184) | def _get_sms(self, phone_number): FILE: corehq/apps/sms/tests/test_phone_numbers.py class PhoneNumberCacheClearTestCase (line 29) | class PhoneNumberCacheClearTestCase(TestCase): method assertNoMatch (line 31) | def assertNoMatch(self, phone_search, suffix_search, owner_id_search): method assertPhoneNumbersEqual (line 36) | def assertPhoneNumbersEqual(self, phone1, phone2): method assertMatch (line 40) | def assertMatch(self, match, phone_search, suffix_search, owner_id_sea... method _test_cache_clear (line 50) | def _test_cache_clear(self, refresh_each_time=True): method test_cache_clear_with_refresh (line 93) | def test_cache_clear_with_refresh(self): method test_cache_clear_without_refresh (line 96) | def test_cache_clear_without_refresh(self): class CaseContactPhoneNumberTestCase (line 100) | class CaseContactPhoneNumberTestCase(TestCase): method setUp (line 102) | def setUp(self): method tearDown (line 105) | def tearDown(self): method set_case_property (line 108) | def set_case_property(self, case, property_name, value): method get_case_phone_number (line 113) | def get_case_phone_number(self, case): method assertPhoneNumberDetails (line 116) | def assertPhoneNumberDetails(self, case, phone_number, sms_backend_id,... method test_case_phone_number_updates (line 133) | def test_case_phone_number_updates(self): method test_close_case (line 183) | def test_close_case(self): method test_case_soft_delete (line 208) | def test_case_soft_delete(self): method test_case_zero_phone_number (line 232) | def test_case_zero_phone_number(self): method test_invalid_phone_format (line 256) | def test_invalid_phone_format(self): method test_phone_number_already_in_use (line 280) | def test_phone_number_already_in_use(self): method test_multiple_entries (line 304) | def test_multiple_entries(self): class SQLPhoneNumberTestCase (line 333) | class SQLPhoneNumberTestCase(TestCase): method setUp (line 335) | def setUp(self): method delete_objects (line 340) | def delete_objects(self, result): method tearDown (line 345) | def tearDown(self): method test_backend (line 351) | def test_backend(self): method test_case_owner (line 377) | def test_case_owner(self): method test_user_owner (line 384) | def test_user_owner(self): method test_get_two_way_number (line 400) | def test_get_two_way_number(self): method test_get_number_pending_verification (line 445) | def test_get_number_pending_verification(self): method test_suffix_lookup (line 500) | def test_suffix_lookup(self): method test_extensive_search (line 535) | def test_extensive_search(self): method test_by_domain (line 553) | def test_by_domain(self): method test_by_owner_id (line 597) | def test_by_owner_id(self): method create_case_contact (line 625) | def create_case_contact(self, phone_number): method test_delete_phone_numbers_for_owners (line 637) | def test_delete_phone_numbers_for_owners(self): method test_verify_uniqueness (line 655) | def test_verify_uniqueness(self): class TestUserPhoneNumberSync (line 684) | class TestUserPhoneNumberSync(TestCase): method setUp (line 686) | def setUp(self): method tearDown (line 693) | def tearDown(self): method assertPhoneEntries (line 697) | def assertPhoneEntries(self, user, phone_numbers): method testSync (line 702) | def testSync(self): method testRetire (line 738) | def testRetire(self): class TestGenericContactMethods (line 754) | class TestGenericContactMethods(TestCase): method setUp (line 756) | def setUp(self): method tearDown (line 763) | def tearDown(self): method testGetOrCreate (line 767) | def testGetOrCreate(self): method testGetPhoneEntries (line 781) | def testGetPhoneEntries(self): method testDelete (line 798) | def testDelete(self): method testUserSyncNoChange (line 814) | def testUserSyncNoChange(self): FILE: corehq/apps/sms/tests/test_phonenumbers_helper.py class TestPhoneNumbersHelper (line 12) | class TestPhoneNumbersHelper(SimpleTestCase): method test_parse_country_coded_number_returns_correctly (line 14) | def test_parse_country_coded_number_returns_correctly(self): method test_parse_ignores_region_if_country_coded (line 19) | def test_parse_ignores_region_if_country_coded(self): method test_parse_without_country_coded_number_and_no_region_raises_exception (line 24) | def test_parse_without_country_coded_number_and_no_region_raises_excep... method test_parse_without_country_coded_number_and_with_region_succeeds (line 28) | def test_parse_without_country_coded_number_and_with_region_succeeds(s... method test_parse_with_invalid_number_raises_exception (line 33) | def test_parse_with_invalid_number_raises_exception(self): method test_parse_with_invalid_number_returns_none_if_failhard_is_false (line 37) | def test_parse_with_invalid_number_returns_none_if_failhard_is_false(s... method test_parse_with_invalid_number_for_region_does_not_raise_exception (line 41) | def test_parse_with_invalid_number_for_region_does_not_raise_exception... method test_country_code_for_region_returns_int (line 47) | def test_country_code_for_region_returns_int(self): method test_county_code_for_region_returns_zero_if_invalid_region (line 51) | def test_county_code_for_region_returns_zero_if_invalid_region(self): method test_region_for_country_code_returns_country_name (line 55) | def test_region_for_country_code_returns_country_name(self): method test_region_for_country_code_returns_empty_string_if_unknown (line 60) | def test_region_for_country_code_returns_empty_string_if_unknown(self): method test_get_country_code_and_national_number_returns_successfully (line 64) | def test_get_country_code_and_national_number_returns_successfully(self): method test_get_country_code_and_national_number_returns_none_if_invalid (line 69) | def test_get_country_code_and_national_number_returns_none_if_invalid(... FILE: corehq/apps/sms/tests/test_queueing.py function patch_datetime_api (line 29) | def patch_datetime_api(timestamp): function patch_datetime_tasks (line 33) | def patch_datetime_tasks(timestamp): function patch_successful_send (line 37) | def patch_successful_send(): function patch_failed_send (line 41) | def patch_failed_send(): function patch_error_send (line 48) | def patch_error_send(): class QueueingTestCase (line 60) | class QueueingTestCase(BaseSMSTest): method setUp (line 62) | def setUp(self): method tearDown (line 80) | def tearDown(self): method queued_sms_count (line 94) | def queued_sms_count(self): method reporting_sms_count (line 98) | def reporting_sms_count(self): method get_queued_sms (line 101) | def get_queued_sms(self): method get_reporting_sms (line 105) | def get_reporting_sms(self): method assertBillableExists (line 109) | def assertBillableExists(self, msg_id, count=1): method assertBillableDoesNotExist (line 112) | def assertBillableDoesNotExist(self, msg_id): method test_outgoing (line 115) | def test_outgoing(self, process_sms_delay_mock, enqueue_directly_mock): method test_outgoing_failure (line 151) | def test_outgoing_failure(self, process_sms_delay_mock, enqueue_direct... method test_outgoing_failure_recovery (line 195) | def test_outgoing_failure_recovery(self, process_sms_delay_mock, enque... method test_outgoing_with_error (line 242) | def test_outgoing_with_error(self, process_sms_delay_mock, enqueue_dir... method test_passes_trial_check (line 274) | def test_passes_trial_check(self, domain_is_on_trial_patch, set_system... method test_incoming (line 302) | def test_incoming(self, process_sms_delay_mock, enqueue_directly_mock): function test_get_sms_from_queued_sms (line 339) | def test_get_sms_from_queued_sms(): FILE: corehq/apps/sms/tests/test_registration.py function noop (line 21) | def noop(*args, **kwargs): class RegistrationTestCase (line 25) | class RegistrationTestCase(BaseSMSTest): method setUp (line 27) | def setUp(self): method tearDown (line 51) | def tearDown(self): method _get_last_sms (line 60) | def _get_last_sms(self, count=1, direction=None, phone_number=None): method assertLastOutgoingSMS (line 73) | def assertLastOutgoingSMS(self, phone_number, expected_texts): method test_sms_registration_disabled (line 82) | def test_sms_registration_disabled(self): method test_sms_registration (line 92) | def test_sms_registration(self): method test_sms_registration_no_user (line 105) | def test_sms_registration_no_user(self): method test_send_admin_registration_alert (line 113) | def test_send_admin_registration_alert(self): FILE: corehq/apps/sms/tests/test_util.py class UtilTestCase (line 21) | class UtilTestCase(TestCase): method setUp (line 23) | def setUp(self): method tearDown (line 27) | def tearDown(self): method testCleanPhoneNumber (line 30) | def testCleanPhoneNumber(self): method test_get_contact_for_case (line 35) | def test_get_contact_for_case(self): method test_get_contact_for_user (line 44) | def test_get_contact_for_user(self): method test_contact_not_found (line 52) | def test_contact_not_found(self): method test_is_contact_active_for_case (line 56) | def test_is_contact_active_for_case(self): method test_is_contact_active_for_user (line 63) | def test_is_contact_active_for_user(self): method test_apply_leniency (line 74) | def test_apply_leniency(self): function test_contractor (line 80) | def test_contractor(): function test_superuser (line 86) | def test_superuser(): function test_normal_user (line 91) | def test_normal_user(): FILE: corehq/apps/sms/tests/test_views.py class GatewayViewTests (line 25) | class GatewayViewTests(TestCase): method setUpClass (line 28) | def setUpClass(cls): method setUp (line 45) | def setUp(self): method tearDownClass (line 57) | def tearDownClass(cls): method test_superuser (line 61) | def test_superuser(self): method test_contractor (line 71) | def test_contractor(self): method test_domain_admin_twilio (line 81) | def test_domain_admin_twilio(self): method test_domain_admin_telerivet (line 90) | def test_domain_admin_telerivet(self): method test_normal_user (line 100) | def test_normal_user(self): function normal_user (line 111) | def normal_user(): function domain_admin (line 120) | def domain_admin(): function contractor (line 132) | def contractor(): function superuser (line 138) | def superuser(): FILE: corehq/apps/sms/tests/util.py function time_parser (line 40) | def time_parser(value): function setup_default_sms_test_backend (line 45) | def setup_default_sms_test_backend(): class BaseSMSTest (line 62) | class BaseSMSTest(BaseAccountingTest, DomainSubscriptionMixin): method setUp (line 64) | def setUp(self): method create_account_and_subscription (line 70) | def create_account_and_subscription(cls, domain_name): method tearDown (line 73) | def tearDown(self): class TouchformsTestCase (line 79) | class TouchformsTestCase(LiveServerTestCase, DomainSubscriptionMixin): method create_domain (line 111) | def create_domain(self, domain): method create_mobile_worker (line 120) | def create_mobile_worker(self, username, password, phone_number, save_... method update_case_owner (line 132) | def update_case_owner(self, case, owner): method add_parent_access (line 142) | def add_parent_access(self, user, case): method create_web_user (line 152) | def create_web_user(self, username, password): method create_group (line 157) | def create_group(self, name, users): method load_app (line 168) | def load_app(self, filename, dirname=None): method create_sms_keyword (line 178) | def create_sms_keyword(self, keyword, reply_sms, method create_survey_keyword (line 198) | def create_survey_keyword(self, keyword, app_id, form_unique_id, delim... method create_structured_sms_keyword (line 218) | def create_structured_sms_keyword(self, keyword, app_id, form_unique_i... method create_site (line 248) | def create_site(self): method get_case (line 254) | def get_case(self, external_id): method assertCasePropertyEquals (line 261) | def assertCasePropertyEquals(self, case, prop, value): method get_last_form_submission (line 264) | def get_last_form_submission(self): method assertNoNewSubmission (line 268) | def assertNoNewSubmission(self, last_submission): method assertFormQuestionEquals (line 272) | def assertFormQuestionEquals(self, form, question, value, cast=None): method get_last_outbound_sms (line 279) | def get_last_outbound_sms(self, contact): method get_open_session (line 286) | def get_open_session(self, contact): method assertLastOutboundSMSEquals (line 289) | def assertLastOutboundSMSEquals(self, contact, message): method assertMetadataEqual (line 295) | def assertMetadataEqual(self, sms, xforms_session_couch_id=None, workf... method setUpClass (line 302) | def setUpClass(cls): method setUp (line 308) | def setUp(self): method tearDown (line 322) | def tearDown(self): function delete_domain_phone_numbers (line 341) | def delete_domain_phone_numbers(domain): FILE: corehq/apps/sms/util.py class DateFormat (line 25) | class DateFormat(object): method __init__ (line 26) | def __init__(self, human_readable_format, c_standard_format, validate_... method parse (line 31) | def parse(self, value): method is_valid (line 34) | def is_valid(self, value): class ContactNotFoundException (line 51) | class ContactNotFoundException(Exception): function get_date_format (line 55) | def get_date_format(human_readable_format): function strip_plus (line 59) | def strip_plus(phone_number): function clean_phone_number (line 67) | def clean_phone_number(text): function validate_phone_number (line 77) | def validate_phone_number(phone_number, error_message=None): function format_message_list (line 86) | def format_message_list(message_list): function register_sms_contact (line 106) | def register_sms_contact(domain, case_type, case_name, user_id, function update_contact (line 135) | def update_contact(domain, case_id, user_id, contact_phone_number=None, function _get_backend_classes (line 151) | def _get_backend_classes(backend_list): function get_sms_backend_classes (line 169) | def get_sms_backend_classes(): function clean_text (line 192) | def clean_text(text): function get_contact (line 201) | def get_contact(domain, contact_id): function touchforms_error_is_config_error (line 223) | def touchforms_error_is_config_error(domain, touchforms_error): function get_formplayer_exception (line 241) | def get_formplayer_exception(domain, touchforms_error): function get_backend_name (line 246) | def get_backend_name(backend_id): function set_domain_default_backend_to_test_backend (line 261) | def set_domain_default_backend_to_test_backend(domain): function is_case_contact_active (line 280) | def is_case_contact_active(domain, case_id): function is_user_contact_active (line 290) | def is_user_contact_active(domain, user_id): function is_contact_active (line 302) | def is_contact_active(domain, contact_doc_type, contact_id): function get_or_create_sms_translations (line 314) | def get_or_create_sms_translations(domain): function get_language_list (line 324) | def get_language_list(domain): function is_superuser_or_contractor (line 331) | def is_superuser_or_contractor(user: CouchUser): FILE: corehq/apps/sms/verify.py function initiate_sms_verification_workflow (line 23) | def initiate_sms_verification_workflow(contact, phone_number): function send_verification (line 63) | def send_verification(domain, user, phone_number, logged_event): function process_verification (line 95) | def process_verification(verified_number, msg, verification_keywords=Non... function verification_response_ok (line 144) | def verification_response_ok(text, verification_keywords): FILE: corehq/apps/sms/views.py function default (line 146) | def default(request, domain): class BaseMessagingSectionView (line 151) | class BaseMessagingSectionView(BaseDomainView): method can_use_inbound_sms (line 155) | def can_use_inbound_sms(self): method is_system_admin (line 159) | def is_system_admin(self): method is_granted_messaging_access (line 163) | def is_granted_messaging_access(self): method dispatch (line 175) | def dispatch(self, request, *args, **kwargs): method section_url (line 181) | def section_url(self): class ComposeMessageView (line 185) | class ComposeMessageView(BaseMessagingSectionView): method page_context (line 191) | def page_context(self): function get_sms_autocomplete_context (line 203) | def get_sms_autocomplete_context(domain): function send_to_recipients (line 223) | def send_to_recipients(request, domain): class TestSMSMessageView (line 355) | class TestSMSMessageView(BaseDomainView): method section_url (line 362) | def section_url(self): method dispatch (line 367) | def dispatch(self, request, *args, **kwargs): method page_context (line 371) | def page_context(self): method get_form (line 377) | def get_form(self): method post (line 402) | def post(self, request, *args, **kwargs): method _check_phone_number (line 428) | def _check_phone_number(self, phone_number, backend_id, claim_channel): function api_send_sms (line 458) | def api_send_sms(request, domain): class GlobalBackendMap (line 544) | class GlobalBackendMap(BaseAdminSectionView): method page_url (line 550) | def page_url(self): method backends (line 555) | def backends(self): method backend_map_form (line 560) | def backend_map_form(self): method dispatch (line 575) | def dispatch(self, request, *args, **kwargs): method page_context (line 579) | def page_context(self): method post (line 585) | def post(self, request, *args, **kwargs): class ChatOverSMSView (line 621) | class ChatOverSMSView(BaseMessagingSectionView): function get_case_contact_info (line 627) | def get_case_contact_info(domain_obj, case_ids): function get_mobile_worker_contact_info (line 640) | def get_mobile_worker_contact_info(domain_obj, user_ids): function get_contact_info (line 648) | def get_contact_info(domain): function format_contact_data (line 709) | def format_contact_data(domain, data): function chat_contact_list (line 726) | def chat_contact_list(request, domain): function get_contact_name_for_chat (line 752) | def get_contact_name_for_chat(contact, domain_obj): function chat (line 768) | def chat(request, domain, contact_id, vn_id=None): class ChatMessageHistory (line 807) | class ChatMessageHistory(View, DomainViewMixin): method dispatch (line 812) | def dispatch(self, request, *args, **kwargs): method contact_id (line 817) | def contact_id(self): method contact (line 822) | def contact(self): method contact_name (line 833) | def contact_name(self): method get_chat_user_name (line 837) | def get_chat_user_name(self, user_id): method start_date_str (line 849) | def start_date_str(self): method start_date (line 854) | def start_date(self): method get_raw_data (line 863) | def get_raw_data(self): method filter_survey_data (line 877) | def filter_survey_data(self, queryset): method get_response_data (line 891) | def get_response_data(self, requesting_user_id): method update_last_read_message (line 913) | def update_last_read_message(self, requesting_user_id, sms): method get (line 936) | def get(self, request, *args, **kwargs): class ChatLastReadMessage (line 950) | class ChatLastReadMessage(View, DomainViewMixin): method dispatch (line 955) | def dispatch(self, request, *args, **kwargs): method contact_id (line 960) | def contact_id(self): method get (line 963) | def get(self, request, *args, **kwargs): class DomainSmsGatewayListView (line 978) | class DomainSmsGatewayListView(CRUDPaginatedViewMixin, BaseMessagingSect... method dispatch (line 985) | def dispatch(self, request, *args, **kwargs): method page_url (line 989) | def page_url(self): method total (line 994) | def total(self): method column_names (line 998) | def column_names(self): method page_context (line 1008) | def page_context(self): method paginated_list (line 1032) | def paginated_list(self): method _fmt_backend_data (line 1067) | def _fmt_backend_data(self, backend): method _get_backend_from_item_id (line 1092) | def _get_backend_from_item_id(self, item_id): method delete_item (line 1100) | def delete_item(self, item_id): method refresh_item (line 1115) | def refresh_item(self, item_id): method allowed_actions (line 1133) | def allowed_actions(self): method post (line 1137) | def post(self, request, *args, **kwargs): class AddGatewayViewMixin (line 1147) | class AddGatewayViewMixin(object): method is_system_admin (line 1154) | def is_system_admin(self): method hq_api_id (line 1159) | def hq_api_id(self): method backend_class (line 1164) | def backend_class(self): method use_load_balancing (line 1176) | def use_load_balancing(self): method page_name (line 1180) | def page_name(self): method button_text (line 1184) | def button_text(self): method page_context (line 1188) | def page_context(self): method post (line 1195) | def post(self, request, *args, **kwargs): method backend (line 1220) | def backend(self): method page_url (line 1224) | def page_url(self): method backend_form (line 1228) | def backend_form(self): method parent_pages (line 1232) | def parent_pages(self): method redirect_to_gateway_list (line 1235) | def redirect_to_gateway_list(self): class AddDomainGatewayView (line 1239) | class AddDomainGatewayView(AddGatewayViewMixin, BaseMessagingSectionView): method backend (line 1246) | def backend(self): method page_url (line 1255) | def page_url(self): method backend_form (line 1260) | def backend_form(self): method parent_pages (line 1276) | def parent_pages(self): method redirect_to_gateway_list (line 1282) | def redirect_to_gateway_list(self): method dispatch (line 1287) | def dispatch(self, request, *args, **kwargs): class EditDomainGatewayView (line 1291) | class EditDomainGatewayView(AddDomainGatewayView): method backend_id (line 1296) | def backend_id(self): method backend (line 1301) | def backend(self): method backend_form (line 1317) | def backend_form(self): method page_name (line 1353) | def page_name(self): method button_text (line 1357) | def button_text(self): method page_url (line 1361) | def page_url(self): class GlobalSmsGatewayListView (line 1365) | class GlobalSmsGatewayListView(CRUDPaginatedViewMixin, BaseAdminSectionV... method dispatch (line 1371) | def dispatch(self, request, *args, **kwargs): method page_url (line 1382) | def page_url(self): method total (line 1387) | def total(self): method column_names (line 1391) | def column_names(self): method page_context (line 1400) | def page_context(self): method paginated_list (line 1410) | def paginated_list(self): method _fmt_backend_data (line 1423) | def _fmt_backend_data(self, backend): method _get_backend_from_item_id (line 1444) | def _get_backend_from_item_id(self, item_id): method delete_item (line 1452) | def delete_item(self, item_id): method allowed_actions (line 1468) | def allowed_actions(self): method post (line 1472) | def post(self, request, *args, **kwargs): class AddGlobalGatewayView (line 1479) | class AddGlobalGatewayView(AddGatewayViewMixin, BaseAdminSectionView): method backend (line 1486) | def backend(self): method page_url (line 1494) | def page_url(self): method backend_form (line 1499) | def backend_form(self): method parent_pages (line 1515) | def parent_pages(self): method redirect_to_gateway_list (line 1521) | def redirect_to_gateway_list(self): method dispatch (line 1525) | def dispatch(self, request, *args, **kwargs): class EditGlobalGatewayView (line 1531) | class EditGlobalGatewayView(AddGlobalGatewayView): method backend_id (line 1536) | def backend_id(self): method backend (line 1541) | def backend(self): method backend_form (line 1556) | def backend_form(self): method page_name (line 1587) | def page_name(self): method button_text (line 1591) | def button_text(self): method page_url (line 1595) | def page_url(self): class SubscribeSMSView (line 1599) | class SubscribeSMSView(BaseMessagingSectionView): method commtrack_settings (line 1605) | def commtrack_settings(self): method form (line 1610) | def form(self): method page_context (line 1628) | def page_context(self): method post (line 1635) | def post(self, request, *args, **kwargs): class SMSLanguagesView (line 1643) | class SMSLanguagesView(BaseMessagingSectionView): method dispatch (line 1649) | def dispatch(self, *args, **kwargs): method page_context (line 1653) | def page_context(self): function edit_sms_languages (line 1674) | def edit_sms_languages(request, domain): function download_sms_translations (line 1706) | def download_sms_translations(request, domain): function upload_sms_translations (line 1732) | def upload_sms_translations(request, domain): class SMSSettingsView (line 1759) | class SMSSettingsView(BaseMessagingSectionView, AsyncHandlerMixin): method page_name (line 1766) | def page_name(self): method page_url (line 1770) | def page_url(self): method previewer (line 1775) | def previewer(self): method get_welcome_message_recipient (line 1778) | def get_welcome_message_recipient(self, domain_obj): method form (line 1793) | def form(self): method page_context (line 1872) | def page_context(self): method post (line 1877) | def post(self, request, *args, **kwargs): method dispatch (line 1954) | def dispatch(self, request, *args, **kwargs): class IncomingBackendView (line 1958) | class IncomingBackendView(View): method __init__ (line 1960) | def __init__(self, *args, **kwargs): method backend_class (line 1966) | def backend_class(self): method dispatch (line 1973) | def dispatch(self, request, api_key, *args, **kwargs): class WhatsAppTemplatesView (line 1985) | class WhatsAppTemplatesView(BaseMessagingSectionView): method dispatch (line 1990) | def dispatch(self, request, *args, **kwargs): method page_context (line 1994) | def page_context(self): class ConnectMessagingUserView (line 2038) | class ConnectMessagingUserView(BaseMessagingSectionView): method dispatch (line 2045) | def dispatch(self, *args, **kwargs): method page_context (line 2049) | def page_context(self): function create_channels (line 2059) | def create_channels(request, domain, *args, **kwargs): FILE: corehq/apps/smsbillables/async_handlers.py class SMSRatesAsyncHandler (line 22) | class SMSRatesAsyncHandler(BaseAsyncHandler): method get_rate_response (line 29) | def get_rate_response(self): class SMSRatesSelect2AsyncHandler (line 58) | class SMSRatesSelect2AsyncHandler(BaseAsyncHandler): method country_code_response (line 65) | def country_code_response(self): method _fmt_success (line 98) | def _fmt_success(self, response): class PublicSMSRatesAsyncHandler (line 108) | class PublicSMSRatesAsyncHandler(BaseAsyncHandler): method public_rate_response (line 115) | def public_rate_response(self): method get_rate_table (line 119) | def get_rate_table(self, country_code): FILE: corehq/apps/smsbillables/dispatcher.py class SMSAdminInterfaceDispatcher (line 5) | class SMSAdminInterfaceDispatcher(ReportDispatcher): method dispatch (line 10) | def dispatch(self, request, *args, **kwargs): FILE: corehq/apps/smsbillables/exceptions.py class AmbiguousPrefixException (line 1) | class AmbiguousPrefixException(Exception): class SMSRateCalculatorError (line 5) | class SMSRateCalculatorError(Exception): class RetryBillableTaskException (line 9) | class RetryBillableTaskException(Exception): FILE: corehq/apps/smsbillables/filters.py class DateSentFilter (line 9) | class DateSentFilter(DateRangeFilter): class ShowBillablesFilter (line 14) | class ShowBillablesFilter(BaseSingleOptionFilter): class DomainFilter (line 26) | class DomainFilter(BaseSingleOptionFilter): method options (line 32) | def options(self): class HasGatewayFeeFilter (line 39) | class HasGatewayFeeFilter(BaseSingleOptionFilter): function get_criteria_property_options (line 51) | def get_criteria_property_options(property): class GatewayTypeFilter (line 58) | class GatewayTypeFilter(BaseSingleOptionFilter): method options (line 64) | def options(self): class SpecificGateway (line 68) | class SpecificGateway(BaseSingleOptionFilter): method options (line 74) | def options(self): class DirectionFilter (line 78) | class DirectionFilter(BaseSingleOptionFilter): class CountryCodeFilter (line 85) | class CountryCodeFilter(BaseSingleOptionFilter): method options (line 91) | def options(self): FILE: corehq/apps/smsbillables/forms.py class PublicSMSRateCalculatorForm (line 12) | class PublicSMSRateCalculatorForm(forms.Form): method __init__ (line 15) | def __init__(self, *args, **kwargs): class SMSRateCalculatorForm (line 41) | class SMSRateCalculatorForm(forms.Form): method __init__ (line 49) | def __init__(self, domain, *args, **kwargs): FILE: corehq/apps/smsbillables/interface.py class SMSBillablesInterface (line 31) | class SMSBillablesInterface(GenericTabularReport): method headers (line 53) | def headers(self): method sort_field (line 70) | def sort_field(self): method shared_pagination_GET_params (line 89) | def shared_pagination_GET_params(self): method get_all_rows (line 119) | def get_all_rows(self): method total_records (line 125) | def total_records(self): method rows (line 130) | def rows(self): method sms_billables (line 138) | def sms_billables(self): method _format_billables (line 179) | def _format_billables(self, sms_billables): class SMSGatewayFeeCriteriaInterface (line 202) | class SMSGatewayFeeCriteriaInterface(GenericTabularReport): method headers (line 219) | def headers(self): method get_all_rows (line 231) | def get_all_rows(self): method rows (line 235) | def rows(self): method sms_gateway_fee_criteria (line 256) | def sms_gateway_fee_criteria(self): FILE: corehq/apps/smsbillables/management/commands/add_moz_zero_charge.py function add_moz_zero_charge (line 15) | def add_moz_zero_charge(apps): class Command (line 45) | class Command(BaseCommand): method handle (line 48) | def handle(self, **options): FILE: corehq/apps/smsbillables/management/commands/add_sms_gateway_permissions.py class Command (line 9) | class Command(BaseCommand): method add_arguments (line 12) | def add_arguments(self, parser): method handle (line 24) | def handle(self, usernames, **options): FILE: corehq/apps/smsbillables/management/commands/bootstrap_apposit_gateway.py function bootstrap_apposit_gateway (line 15) | def bootstrap_apposit_gateway(apps=None): class Command (line 41) | class Command(BaseCommand): method handle (line 44) | def handle(self, **options): FILE: corehq/apps/smsbillables/management/commands/bootstrap_gateway_fees.py function bootstrap_infobip_gateway (line 18) | def bootstrap_infobip_gateway(apps): function bootstrap_twilio_gateway (line 22) | def bootstrap_twilio_gateway(apps): function bootstrap_pinpoint_gateway (line 26) | def bootstrap_pinpoint_gateway(apps): function _bootstrap_gateway (line 30) | def _bootstrap_gateway(apps, backend, amount=None, country_code=None): class Command (line 52) | class Command(BaseCommand): method add_arguments (line 55) | def add_arguments(self, parser): method handle (line 60) | def handle(self, gateway_api_id, **kwargs): FILE: corehq/apps/smsbillables/management/commands/bootstrap_grapevine_gateway.py function bootstrap_grapevine_gateway (line 15) | def bootstrap_grapevine_gateway(apps): class Command (line 50) | class Command(BaseCommand): method handle (line 53) | def handle(self, **options): FILE: corehq/apps/smsbillables/management/commands/bootstrap_grapevine_gateway_update.py function bootstrap_grapevine_gateway_update (line 15) | def bootstrap_grapevine_gateway_update(apps): class Command (line 74) | class Command(BaseCommand): method handle (line 77) | def handle(self, **options): FILE: corehq/apps/smsbillables/management/commands/bootstrap_mach_gateway.py function bootstrap_mach_gateway (line 17) | def bootstrap_mach_gateway(apps): class Command (line 72) | class Command(BaseCommand): method handle (line 75) | def handle(self, **options): FILE: corehq/apps/smsbillables/management/commands/bootstrap_moz_gateway.py function bootstrap_moz_gateway (line 15) | def bootstrap_moz_gateway(apps): class Command (line 125) | class Command(BaseCommand): method handle (line 128) | def handle(self, **options): FILE: corehq/apps/smsbillables/management/commands/bootstrap_smsgh_gateway.py function bootstrap_smsgh_gateway (line 16) | def bootstrap_smsgh_gateway(apps=None): class Command (line 42) | class Command(BaseCommand): method handle (line 45) | def handle(self, **options): FILE: corehq/apps/smsbillables/management/commands/bootstrap_telerivet_gateway.py function bootstrap_telerivet_gateway (line 16) | def bootstrap_telerivet_gateway(apps): class Command (line 42) | class Command(BaseCommand): method handle (line 45) | def handle(self, **options): FILE: corehq/apps/smsbillables/management/commands/bootstrap_test_gateway.py function bootstrap_test_gateway (line 16) | def bootstrap_test_gateway(apps): class Command (line 44) | class Command(BaseCommand): method handle (line 47) | def handle(self, **options): FILE: corehq/apps/smsbillables/management/commands/bootstrap_tropo_gateway.py function bootstrap_tropo_gateway (line 13) | def bootstrap_tropo_gateway(apps): class Command (line 55) | class Command(BaseCommand): method handle (line 58) | def handle(self, **options): FILE: corehq/apps/smsbillables/management/commands/bootstrap_usage_fees.py function bootstrap_usage_fees (line 9) | def bootstrap_usage_fees(apps): class Command (line 15) | class Command(BaseCommand): method handle (line 18) | def handle(self, **options): FILE: corehq/apps/smsbillables/management/commands/bootstrap_yo_gateway.py function bootstrap_yo_gateway (line 15) | def bootstrap_yo_gateway(apps): class Command (line 41) | class Command(BaseCommand): method handle (line 44) | def handle(self, **options): FILE: corehq/apps/smsbillables/management/commands/deactivate_grapevine_instance_fee_criteria.py function deactivate_grapevine_instance_fee_criteria (line 8) | def deactivate_grapevine_instance_fee_criteria(apps=None): class Command (line 22) | class Command(BaseCommand): method handle (line 25) | def handle(self, **options): FILE: corehq/apps/smsbillables/management/commands/retrobill_date_range.py class Command (line 10) | class Command(BaseCommand): method add_arguments (line 13) | def add_arguments(self, parser): method handle (line 29) | def handle(self, start_datetime, end_datetime, **options): FILE: corehq/apps/smsbillables/migrations/0001_initial.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/smsbillables/migrations/0002_bootstrap.py function sync_sms_docs (line 36) | def sync_sms_docs(apps, schema_editor): function bootstrap_currency (line 43) | def bootstrap_currency(apps, schema_editor): function bootstrap_sms (line 50) | def bootstrap_sms(apps, schema_editor): class Migration (line 63) | class Migration(migrations.Migration): FILE: corehq/apps/smsbillables/migrations/0003_update_twilio_rates_outgoing.py function noop (line 4) | def noop(*args, **kwargs): class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/smsbillables/migrations/0004_bootstrap_smsgh_rates.py function create_smsgh_rates (line 8) | def create_smsgh_rates(apps, schema_editor): class Migration (line 12) | class Migration(migrations.Migration): FILE: corehq/apps/smsbillables/migrations/0005_update_http_backend_criteria.py function update_http_backend_criteria (line 8) | def update_http_backend_criteria(apps, schema_editor): class Migration (line 26) | class Migration(migrations.Migration): FILE: corehq/apps/smsbillables/migrations/0006_remove_smsbillable_api_response.py function confirm_no_data_loss (line 4) | def confirm_no_data_loss(apps, schema_editor): class Migration (line 12) | class Migration(migrations.Migration): FILE: corehq/apps/smsbillables/migrations/0007_smsbillable_multipart_count.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/smsbillables/migrations/0008__multipart_count__non_nullable.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/smsbillables/migrations/0009_smsbillable_direct_gateway_fee.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/smsbillables/migrations/0010_gateway_fee_amount_null.py function add_twilio_gateway_fee_for_migration (line 8) | def add_twilio_gateway_fee_for_migration(apps, schema_editor): class Migration (line 12) | class Migration(migrations.Migration): FILE: corehq/apps/smsbillables/migrations/0011_date_to_datetime.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/smsbillables/migrations/0012_remove_max_length.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/smsbillables/migrations/0013_auto_20160826_1531.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/smsbillables/migrations/0014_bootstrap_apposit_rates.py function create_apposit_rates (line 8) | def create_apposit_rates(apps, schema_editor): class Migration (line 12) | class Migration(migrations.Migration): FILE: corehq/apps/smsbillables/migrations/0015_bootstrap_icds_rates.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/smsbillables/migrations/0016_smsgatewayfeecriteria_is_active.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/smsbillables/migrations/0017_deactivate_grapevine_instance_fee_criteria.py function deactivate_grapevine_instance_fees (line 10) | def deactivate_grapevine_instance_fees(apps, schema_editor): class Migration (line 14) | class Migration(migrations.Migration): FILE: corehq/apps/smsbillables/migrations/0018_index__date_sent.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/smsbillables/migrations/0019_deactivate_hardcoded_twilio_gateway_fees.py function deactivate_hardcoded_twilio_gateway_fees (line 8) | def deactivate_hardcoded_twilio_gateway_fees(apps, schema_editor): class Migration (line 36) | class Migration(migrations.Migration): FILE: corehq/apps/smsbillables/migrations/0020_update_sislog_fees.py function update_sislog_vodacom_mozambique_fees (line 12) | def update_sislog_vodacom_mozambique_fees(apps, schema_editor): class Migration (line 42) | class Migration(migrations.Migration): FILE: corehq/apps/smsbillables/migrations/0021_infobip_gateway_fee_amount_null.py function add_infobip_gateway_fee_for_migration (line 7) | def add_infobip_gateway_fee_for_migration(apps, schema_editor): class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/apps/smsbillables/migrations/0022_pinpoint_gateway_fee_amount_null.py function add_pinpoint_gateway_fee_for_migration (line 8) | def add_pinpoint_gateway_fee_for_migration(apps, schema_editor): class Migration (line 12) | class Migration(migrations.Migration): FILE: corehq/apps/smsbillables/models.py class SmsGatewayFeeCriteria (line 27) | class SmsGatewayFeeCriteria(models.Model): class Meta (line 43) | class Meta(object): method get_most_specific (line 47) | def get_most_specific(cls, backend_api_id, direction, class SmsGatewayFee (line 107) | class SmsGatewayFee(models.Model): class Meta (line 120) | class Meta(object): method create_new (line 124) | def create_new(cls, backend_api_id, direction, amount, method get_by_criteria (line 160) | def get_by_criteria(cls, backend_api_id, direction, method get_by_criteria_obj (line 172) | def get_by_criteria_obj(cls, criteria): class SmsUsageFeeCriteria (line 178) | class SmsUsageFeeCriteria(models.Model): class Meta (line 188) | class Meta(object): method get_most_specific (line 192) | def get_most_specific(cls, direction, domain=None): class SmsUsageFee (line 215) | class SmsUsageFee(models.Model): class Meta (line 229) | class Meta(object): method create_new (line 233) | def create_new(cls, direction, amount, domain=None, save=True): method get_by_criteria (line 246) | def get_by_criteria(cls, direction, domain=None): class SmsBillable (line 253) | class SmsBillable(models.Model): class Meta (line 276) | class Meta(object): method gateway_charge (line 280) | def gateway_charge(self): method usage_charge (line 291) | def usage_charge(self): method _single_gateway_charge (line 295) | def _single_gateway_charge(self): method _single_usage_charge (line 307) | def _single_usage_charge(self): method create (line 313) | def create(cls, message_log, multipart_count=1): method _get_gateway_fee (line 344) | def _get_gateway_fee(cls, backend_api_id, backend_id, method get_conversion_rate (line 392) | def get_conversion_rate(cls, gateway_fee): method get_charge_details_through_api (line 402) | def get_charge_details_through_api(cls, backend_instance, backend_mess... method _get_usage_fee (line 415) | def _get_usage_fee(cls, domain, direction): method get_billables_sent_between (line 427) | def get_billables_sent_between(cls, datespan): method filter_selected_billables_by_date (line 434) | def filter_selected_billables_by_date(cls, selected_billables, date_sp... method filter_selected_billables_show_billables (line 441) | def filter_selected_billables_show_billables(cls, selected_billables, ... method filter_selected_billables_by_account (line 448) | def filter_selected_billables_by_account(cls, selected_billables, acco... FILE: corehq/apps/smsbillables/tasks.py function send_gateway_fee_report_out (line 17) | def send_gateway_fee_report_out(): FILE: corehq/apps/smsbillables/tests/generator.py function arbitrary_message (line 47) | def arbitrary_message(): function arbitrary_fee (line 52) | def arbitrary_fee(): function _generate_prefixes (line 57) | def _generate_prefixes(country_code, max_prefix_length, num_prefixes_per... function arbitrary_country_code_and_prefixes (line 72) | def arbitrary_country_code_and_prefixes( function _available_gateway_fee_backends (line 84) | def _available_gateway_fee_backends(): function _available_direct_fee_backends (line 92) | def _available_direct_fee_backends(): function arbitrary_fees_by_prefix (line 100) | def arbitrary_fees_by_prefix(backend_ids, country_codes_and_prefixes): function arbitrary_phone_number (line 120) | def arbitrary_phone_number(country_codes=TEST_COUNTRY_CODES): function arbitrary_domain (line 125) | def arbitrary_domain(length=25): function arbitrary_fees_by_direction (line 130) | def arbitrary_fees_by_direction(): function arbitrary_fees_by_direction_and_domain (line 138) | def arbitrary_fees_by_direction_and_domain(): function arbitrary_fees_by_direction_and_backend (line 150) | def arbitrary_fees_by_direction_and_backend(): function arbitrary_fees_by_country (line 161) | def arbitrary_fees_by_country(): function arbitrary_fees_by_backend_instance (line 175) | def arbitrary_fees_by_backend_instance(backend_ids): function arbitrary_fees_by_all (line 186) | def arbitrary_fees_by_all(backend_ids): function arbitrary_backend_ids (line 200) | def arbitrary_backend_ids(): function arbitrary_non_global_backend_ids (line 215) | def arbitrary_non_global_backend_ids(): function arbitrary_with_direct_fees_backends (line 230) | def arbitrary_with_direct_fees_backends(): function arbitrary_non_global_with_direct_fees_backends (line 249) | def arbitrary_non_global_with_direct_fees_backends(): function arbitrary_messages_by_backend_and_direction (line 268) | def arbitrary_messages_by_backend_and_direction(backend_ids, function arbitrary_currency (line 294) | def arbitrary_currency(): function arbitrary_phone_numbers_and_prefixes (line 304) | def arbitrary_phone_numbers_and_prefixes(country_code_and_prefixes): function arbitrary_sms_billables_for_domain (line 334) | def arbitrary_sms_billables_for_domain(domain, message_month_date, num_s... FILE: corehq/apps/smsbillables/tests/test_billable_creation.py class TestBillableCreation (line 12) | class TestBillableCreation(TestCase): method setUpClass (line 15) | def setUpClass(cls): method tearDownClass (line 28) | def tearDownClass(cls): method setUp (line 32) | def setUp(self): method tearDown (line 36) | def tearDown(self): method test_creation (line 45) | def test_creation(self): method test_long_creation (line 58) | def test_long_creation(self): method test_gateway_fee_after_creation (line 71) | def test_gateway_fee_after_creation(self): FILE: corehq/apps/smsbillables/tests/test_gateway_charges.py class TestGatewayCharge (line 15) | class TestGatewayCharge(TestCase): method setUpClass (line 21) | def setUpClass(cls): method test_gateway_fee_is_used_for_charge (line 49) | def test_gateway_fee_is_used_for_charge(self): method test_api_fee_is_used_for_charge (line 59) | def test_api_fee_is_used_for_charge(self): method test_gateway_fee_is_used_if_specified_on_api_backend (line 71) | def test_gateway_fee_is_used_if_specified_on_api_backend(self): method test_gateway_fee_factors_in_multipart_count (line 83) | def test_gateway_fee_factors_in_multipart_count(self): method test_api_fee_ignores_multipart_count (line 94) | def test_api_fee_ignores_multipart_count(self): method test_gateway_conversion_rate_is_applied (line 111) | def test_gateway_conversion_rate_is_applied(self): method test_phone_number_edge_case (line 123) | def test_phone_number_edge_case(self): method test_non_global_backend_charge_is_zero (line 141) | def test_non_global_backend_charge_is_zero(self): class TestGetByCriteria (line 152) | class TestGetByCriteria(TestCase): method setUpClass (line 161) | def setUpClass(cls): method test_most_recently_created_gateway_fee_is_used (line 172) | def test_most_recently_created_gateway_fee_is_used(self): method test_only_matching_gateways_are_used (line 180) | def test_only_matching_gateways_are_used(self): method test_country_code_fee_used_over_generic_fee (line 188) | def test_country_code_fee_used_over_generic_fee(self): method test_instance_fee_used_over_generic_fee (line 196) | def test_instance_fee_used_over_generic_fee(self): method test_instance_fee_used_over_country_code_fee (line 208) | def test_instance_fee_used_over_country_code_fee(self): method test_country_code_and_instance_fee_used_over_instance_fee (line 220) | def test_country_code_and_instance_fee_used_over_instance_fee(self): method test_country_code_and_instance_fee_with_prefix_used_over_country_code_and_instance_fee (line 235) | def test_country_code_and_instance_fee_with_prefix_used_over_country_c... FILE: corehq/apps/smsbillables/tests/test_usage_fees.py class TestUsageFee (line 19) | class TestUsageFee(TestCase): method setUp (line 21) | def setUp(self): method apply_direction_fee (line 34) | def apply_direction_fee(self): method apply_direction_and_domain_fee (line 38) | def apply_direction_and_domain_fee(self): method test_only_direction (line 43) | def test_only_direction(self): method test_domain_and_direction (line 55) | def test_domain_and_direction(self): method test_multipart_usage_charge (line 73) | def test_multipart_usage_charge(self): method test_multipart_usage_charge_for_backends_with_direct_fees (line 100) | def test_multipart_usage_charge_for_backends_with_direct_fees(self): method test_log_no_usage_fee (line 125) | def test_log_no_usage_fee(self): method tearDown (line 141) | def tearDown(self): FILE: corehq/apps/smsbillables/tests/utils.py function bootstrap_smsbillables (line 18) | def bootstrap_smsbillables(): function create_sms (line 47) | def create_sms(domain, backend, number, direction, text): class FakeTwilioMessage (line 62) | class FakeTwilioMessage(object): method __init__ (line 65) | def __init__(self, price, num_segments=1): method fetch (line 69) | def fetch(self): class FakeMessageFactory (line 73) | class FakeMessageFactory(object): method add_price_for_message (line 78) | def add_price_for_message(cls, backend_message_id, price): method get_price_for_message (line 82) | def get_price_for_message(cls, backend_message_id): method add_num_segments_for_message (line 86) | def add_num_segments_for_message(cls, backend_message_id, num_segments): method get_num_segments_for_message (line 90) | def get_num_segments_for_message(cls, backend_message_id): method get_twilio_message (line 94) | def get_twilio_message(cls, backend_message_id): method get_infobip_message (line 101) | def get_infobip_message(cls, backend_message_id): FILE: corehq/apps/smsbillables/utils.py function log_smsbillables_error (line 8) | def log_smsbillables_error(message): function log_smsbillables_info (line 13) | def log_smsbillables_info(message): FILE: corehq/apps/smsforms/admin.py class SQLXFormsSessionAdmin (line 6) | class SQLXFormsSessionAdmin(admin.ModelAdmin): FILE: corehq/apps/smsforms/app.py function start_session (line 24) | def start_session(session, domain, contact, app, form, case_id=None, yie... function get_responses (line 73) | def get_responses(domain, session_id, text): function _responses_to_text (line 83) | def _responses_to_text(responses): function get_events_from_responses (line 87) | def get_events_from_responses(responses): function submit_unfinished_form (line 91) | def submit_unfinished_form(session): function _fetch_xml (line 115) | def _fetch_xml(formplayer_interface): function _clean_xml_for_partial_submission (line 128) | def _clean_xml_for_partial_submission(xml, should_remove_case_actions): FILE: corehq/apps/smsforms/management/commands/close_stale_smsforms_sessions.py class Command (line 8) | class Command(BaseCommand): method add_arguments (line 10) | def add_arguments(self, parser): method handle (line 18) | def handle(self, **options): FILE: corehq/apps/smsforms/management/commands/handle_survey_actions.py function skip_domain (line 16) | def skip_domain(domain): class Command (line 20) | class Command(BaseCommand): method get_enqueue_lock (line 31) | def get_enqueue_lock(session_id, current_action_due): method get_survey_sessions_due_for_action (line 43) | def get_survey_sessions_due_for_action(self): method create_tasks (line 50) | def create_tasks(self): method handle (line 69) | def handle(self, **options): FILE: corehq/apps/smsforms/migrations/0001_initial.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/smsforms/migrations/0002_add_state_tracking_fields.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/smsforms/migrations/0003_make_fields_not_null.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/smsforms/migrations/0004_rename_sqlxformssession_session_is_open_connection_id_smsforms_sq_session_5286fb_idx_and_more.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/smsforms/models.py class SQLXFormsSession (line 28) | class SQLXFormsSession(models.Model): class Meta (line 105) | class Meta(object): method __str__ (line 112) | def __str__(self): method _id (line 119) | def _id(self): method close (line 122) | def close(self, force=True): method mark_completed (line 138) | def mark_completed(self, completed): method related_subevent (line 162) | def related_subevent(self): method status (line 167) | def status(self): method status_slug (line 171) | def status_slug(self): method get_all_open_sms_sessions (line 187) | def get_all_open_sms_sessions(cls, domain, contact_id): method close_all_open_sms_sessions (line 196) | def close_all_open_sms_sessions(cls, domain, contact_id): method by_session_id (line 202) | def by_session_id(cls, id): method get_open_sms_session (line 209) | def get_open_sms_session(cls, domain, contact_id): method create_session_object (line 225) | def create_session_object(cls, domain, contact, phone_number, app, for... method get_contact_id_from_session_id (line 256) | def get_contact_id_from_session_id(cls, session_id): method current_action_is_a_reminder (line 267) | def current_action_is_a_reminder(self): method set_current_action_due_timestamp (line 270) | def set_current_action_due_timestamp(self): method move_to_next_action (line 283) | def move_to_next_action(self): method get_channel (line 288) | def get_channel(self): class XFormsSessionSynchronization (line 292) | class XFormsSessionSynchronization: method claim_channel_for_session (line 312) | def claim_channel_for_session(cls, session): method channel_is_available_for_session (line 334) | def channel_is_available_for_session(cls, session): method _channel_is_available_for_session (line 350) | def _channel_is_available_for_session(cls, session): method release_channel_for_session (line 360) | def release_channel_for_session(cls, session): method set_channel_for_affinity (line 374) | def set_channel_for_affinity(cls, session): method clear_stale_channel_claim (line 389) | def clear_stale_channel_claim(cls, channel): method _clear_stale_channel_claim (line 394) | def _clear_stale_channel_claim(cls, channel): method get_running_session_info_for_channel (line 404) | def get_running_session_info_for_channel(cls, channel): method _set_running_session_info_for_channel (line 412) | def _set_running_session_info_for_channel(cls, channel, running_sessio... method _release_running_session_info_for_channel (line 417) | def _release_running_session_info_for_channel(cls, running_session_inf... method _channel_affinity_cache_key (line 428) | def _channel_affinity_cache_key(channel): method _critical_section (line 432) | def _critical_section(channel): function get_channel_for_contact (line 442) | def get_channel_for_contact(contact_id, phone_number): FILE: corehq/apps/smsforms/tasks.py function send_first_message (line 33) | def send_first_message(domain, recipient, phone_entry_or_number, session... function handle_due_survey_action (line 99) | def handle_due_survey_action(domain, contact_id, session_id): function close_session (line 151) | def close_session(self, contact_id, session_id): function session_is_stale (line 167) | def session_is_stale(session): FILE: corehq/apps/smsforms/tests/test_app.py class TestStartSession (line 32) | class TestStartSession(TestCase): method setUpClass (line 36) | def setUpClass(cls): method _start_session (line 55) | def _start_session(self, yield_responses=False): method _mock_xform_response (line 73) | def _mock_xform_response(self, tfsms_start_session_mock, status, addit... method test_start_session_as_case (line 88) | def test_start_session_as_case(self, xform_config_mock, tfsms_start_se... method test_start_session_as_user (line 116) | def test_start_session_as_user(self, xform_config_mock, tfsms_start_se... method test_http_error (line 141) | def test_http_error(self, tfsms_start_session_mock): method test_text_responses (line 153) | def test_text_responses(self, tfsms_start_session_mock): class TestFetchXml (line 164) | class TestFetchXml(TestCase): method setUpClass (line 167) | def setUpClass(cls): method setUp (line 172) | def setUp(self) -> None: method test_successful_response (line 178) | def test_successful_response(self): method test_raises_exception_if_invalid_session_id (line 185) | def test_raises_exception_if_invalid_session_id(self): method test_raises_touchforms_error_if_response_errors (line 190) | def test_raises_touchforms_error_if_response_errors(self): class TestCleanXMLForPartialSubmission (line 196) | class TestCleanXMLForPartialSubmission(SimpleTestCase): method test_timeEnd_value_is_set (line 198) | def test_timeEnd_value_is_set(self): method test_case_actions_are_not_removed_when_false (line 216) | def test_case_actions_are_not_removed_when_false(self): method test_case_actions_are_removed_when_true (line 235) | def test_case_actions_are_removed_when_true(self): FILE: corehq/apps/smsforms/tests/test_session_synchronization.py function test_session_synchronization (line 12) | def test_session_synchronization(): function test_auto_clear_stale_session_on_claim (line 52) | def test_auto_clear_stale_session_on_claim(): class FakeSession (line 84) | class FakeSession: method __init__ (line 88) | def __init__(self, session_id, phone_number, connection_id, session_is... method get_channel (line 95) | def get_channel(self): method close (line 98) | def close(self): method by_session_id (line 102) | def by_session_id(cls, session_id): function _clean_up_number (line 106) | def _clean_up_number(phone_number): function test_pickle_roundtrip (line 117) | def test_pickle_roundtrip(): FILE: corehq/apps/smsforms/tests/test_sql_session.py class SQLSessionTestCase (line 25) | class SQLSessionTestCase(TestCase): method test_get_by_session_id (line 27) | def test_get_by_session_id(self): method test_get_by_session_id_not_found (line 31) | def test_get_by_session_id_not_found(self): method test_get_all_open_sessions_domain_mismatch (line 34) | def test_get_all_open_sessions_domain_mismatch(self): method test_get_all_open_sessions_contact_mismatch (line 46) | def test_get_all_open_sessions_contact_mismatch(self): method test_get_all_open_sessions_already_ended (line 58) | def test_get_all_open_sessions_already_ended(self): method test_get_all_open_sessions_wrong_type (line 70) | def test_get_all_open_sessions_wrong_type(self): method test_get_and_close_all_open_sessions (line 82) | def test_get_and_close_all_open_sessions(self): method test_get_single_open_session (line 99) | def test_get_single_open_session(self): method test_get_single_open_session_close_multiple (line 116) | def test_get_single_open_session_close_multiple(self): method test_get_open_sms_session_no_results (line 133) | def test_get_open_sms_session_no_results(self): method test_get_open_sms_session_multiple_results (line 136) | def test_get_open_sms_session_multiple_results(self): method test_get_open_sms_session_one_result (line 151) | def test_get_open_sms_session_one_result(self): method test_move_to_next_action_with_no_reminders (line 166) | def test_move_to_next_action_with_no_reminders(self, utcnow_mock): method test_move_to_next_action_with_reminders (line 191) | def test_move_to_next_action_with_reminders(self, utcnow_mock): method test_move_to_next_action_with_fast_forwarding (line 233) | def test_move_to_next_action_with_fast_forwarding(self, utcnow_mock): method test_session_is_stale (line 260) | def test_session_is_stale(self, utcnow_mock_1, utcnow_mock_2): function _make_session (line 286) | def _make_session(**kwargs): function _arbitrary_session_properties (line 293) | def _arbitrary_session_properties(**kwargs): FILE: corehq/apps/smsforms/util.py function form_requires_input (line 6) | def form_requires_input(form): function process_sms_form_complete (line 17) | def process_sms_form_complete(session_id, form): function get_sms_form_incoming_media_files (line 35) | def get_sms_form_incoming_media_files(session): function critical_section_for_smsforms_sessions (line 46) | def critical_section_for_smsforms_sessions(contact_id): FILE: corehq/apps/sso/async_handlers.py class Select2IdentityProviderHandler (line 21) | class Select2IdentityProviderHandler(BaseSelect2AsyncHandler): method owner_response (line 28) | def owner_response(self): class BaseLinkedObjectAsyncHandler (line 35) | class BaseLinkedObjectAsyncHandler(BaseAsyncHandler): method get_linked_objects (line 42) | def get_linked_objects(self): method add_object (line 45) | def add_object(self): method remove_object (line 48) | def remove_object(self): method idp_slug (line 52) | def idp_slug(self): method identity_provider (line 57) | def identity_provider(self): method check_that_idp_matches_request_account_or_404 (line 60) | def check_that_idp_matches_request_account_or_404(self): method get_linked_objects_response (line 67) | def get_linked_objects_response(self): method add_object_response (line 74) | def add_object_response(self): method remove_object_response (line 82) | def remove_object_response(self): class IdentityProviderAdminAsyncHandler (line 90) | class IdentityProviderAdminAsyncHandler(BaseLinkedObjectAsyncHandler): method get_linked_objects (line 93) | def get_linked_objects(self): method add_object (line 98) | def add_object(self): method remove_object (line 110) | def remove_object(self): method email_domain (line 123) | def email_domain(self): class BaseSsoUsersAdminAsyncHandler (line 127) | class BaseSsoUsersAdminAsyncHandler(BaseLinkedObjectAsyncHandler): method username (line 131) | def username(self): method email_domain (line 136) | def email_domain(self): method _get_authenticated_email_domain (line 142) | def _get_authenticated_email_domain(self): class SSOExemptUsersAdminAsyncHandler (line 157) | class SSOExemptUsersAdminAsyncHandler(BaseSsoUsersAdminAsyncHandler): method get_linked_objects (line 160) | def get_linked_objects(self): method add_object (line 165) | def add_object(self): method remove_object (line 186) | def remove_object(self): class SsoTestUserAdminAsyncHandler (line 207) | class SsoTestUserAdminAsyncHandler(BaseSsoUsersAdminAsyncHandler): method get_linked_objects (line 210) | def get_linked_objects(self): method add_object (line 215) | def add_object(self): method remove_object (line 236) | def remove_object(self): FILE: corehq/apps/sso/backends.py class SsoBackend (line 26) | class SsoBackend(ModelBackend): method authenticate (line 31) | def authenticate(self, request, username, idp_slug, is_handshake_succe... method _create_new_user (line 100) | def _create_new_user(self, request, username, async_signup): method _process_new_user_data (line 133) | def _process_new_user_data(request, new_web_user, async_signup): method _process_invitation (line 159) | def _process_invitation(request, invitation, web_user, is_new_user=Fal... FILE: corehq/apps/sso/certificates.py function create_key_pair (line 15) | def create_key_pair(): function create_self_signed_cert (line 19) | def create_self_signed_cert(key_pair, expiration_in_seconds=DEFAULT_EXPI... function get_expiration_date (line 43) | def get_expiration_date(cert): function get_public_key (line 47) | def get_public_key(cert): function get_private_key (line 51) | def get_private_key(key_pair): function get_certificate_from_file (line 59) | def get_certificate_from_file(file): function get_certificate_response (line 71) | def get_certificate_response(cert_string, filename): FILE: corehq/apps/sso/configuration.py function get_saml2_config (line 10) | def get_saml2_config(identity_provider): function _get_advanced_saml2_settings (line 60) | def _get_advanced_saml2_settings(identity_provider): FILE: corehq/apps/sso/decorators.py function identity_provider_required (line 16) | def identity_provider_required(view_func): function use_saml2_auth (line 24) | def use_saml2_auth(view_func): function _get_idp_or_404 (line 58) | def _get_idp_or_404(idp_slug): FILE: corehq/apps/sso/exceptions.py class ServiceProviderCertificateError (line 1) | class ServiceProviderCertificateError(Exception): class SingleSignOnError (line 5) | class SingleSignOnError(Exception): class SsoLoginFailed (line 9) | class SsoLoginFailed(Exception): class OidcSsoError (line 13) | class OidcSsoError(Exception): method __init__ (line 19) | def __init__(self, error_code, message=None): class EntraVerificationFailed (line 25) | class EntraVerificationFailed(Exception): method __init__ (line 26) | def __init__(self, error, message): method __str__ (line 31) | def __str__(self): class EntraUnsupportedType (line 35) | class EntraUnsupportedType(Exception): method __init__ (line 36) | def __init__(self, message): method __str__ (line 40) | def __str__(self): FILE: corehq/apps/sso/forms.py function _validate_or_raise_slugify_error (line 37) | def _validate_or_raise_slugify_error(slug): function _check_is_editable_requirements (line 46) | def _check_is_editable_requirements(identity_provider): function _check_required_when_active (line 59) | def _check_required_when_active(is_active, value): function _ensure_entity_id_matches_expected_provider (line 66) | def _ensure_entity_id_matches_expected_provider(entity_id, identity_prov... function _get_help_text (line 74) | def _get_help_text(identity_provider): class CreateIdentityProviderForm (line 88) | class CreateIdentityProviderForm(forms.Form): method __init__ (line 120) | def __init__(self, *args, **kwargs): method clean_slug (line 156) | def clean_slug(self): method clean_idp_type (line 165) | def clean_idp_type(self): method create_identity_provider (line 176) | def create_identity_provider(self, admin_user): class RelyingPartyDetailsForm (line 193) | class RelyingPartyDetailsForm(forms.Form): method __init__ (line 209) | def __init__(self, identity_provider, *args, **kwargs): method application_details_fields (line 219) | def application_details_fields(self): class ServiceProviderDetailsForm (line 236) | class ServiceProviderDetailsForm(forms.Form): method __init__ (line 265) | def __init__(self, identity_provider, show_help_block=True, *args, **k... method service_provider_help_block (line 274) | def service_provider_help_block(self): method token_encryption_help_block (line 278) | def token_encryption_help_block(self): method service_provider_fields (line 295) | def service_provider_fields(self): method token_encryption_fields (line 316) | def token_encryption_fields(self): class EditIdentityProviderAdminForm (line 343) | class EditIdentityProviderAdminForm(forms.Form): method __init__ (line 396) | def __init__(self, identity_provider, *args, **kwargs): method clean_slug (line 499) | def clean_slug(self): method clean_is_editable (line 508) | def clean_is_editable(self): method clean_is_active (line 514) | def clean_is_active(self): method update_identity_provider (line 546) | def update_identity_provider(self, admin_user): class BaseSsoEnterpriseSettingsForm (line 556) | class BaseSsoEnterpriseSettingsForm(forms.Form): method __init__ (line 674) | def __init__(self, identity_provider, *args, **kwargs): method get_primary_fields (line 691) | def get_primary_fields(self): method _check_required (line 747) | def _check_required(self, field): method clean_is_active (line 752) | def clean_is_active(self): method clean_entity_id (line 758) | def clean_entity_id(self): method clean_max_days_until_user_api_key_expiration (line 765) | def clean_max_days_until_user_api_key_expiration(self): method clean (line 772) | def clean(self): method update_identity_provider (line 792) | def update_identity_provider(self, admin_user): class SsoSamlEnterpriseSettingsForm (line 803) | class SsoSamlEnterpriseSettingsForm(BaseSsoEnterpriseSettingsForm): method __init__ (line 834) | def __init__(self, identity_provider, *args, **kwargs): method get_remote_user_management_fields (line 911) | def get_remote_user_management_fields(self): method clean_login_url (line 960) | def clean_login_url(self): method clean_logout_url (line 966) | def clean_logout_url(self): method clean_idp_cert_public (line 972) | def clean_idp_cert_public(self): method update_identity_provider (line 998) | def update_identity_provider(self, admin_user): class SsoOidcEnterpriseSettingsForm (line 1021) | class SsoOidcEnterpriseSettingsForm(BaseSsoEnterpriseSettingsForm): method __init__ (line 1031) | def __init__(self, identity_provider, *args, **kwargs): method clean_client_id (line 1107) | def clean_client_id(self): method clean_client_secret (line 1113) | def clean_client_secret(self): method update_identity_provider (line 1119) | def update_identity_provider(self, admin_user): FILE: corehq/apps/sso/middleware.py class SingleSignOnErrorMiddleware (line 7) | class SingleSignOnErrorMiddleware(MiddlewareMixin): method process_exception (line 13) | def process_exception(self, request, exception): FILE: corehq/apps/sso/migrations/0001_initial.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/sso/migrations/0002_identityprovider_require_encrypted_assertions.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sso/migrations/0003_oidc_onelogin_idp_update.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sso/migrations/0004_login_enforcement_type_sso_test_user.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/sso/migrations/0005_alter_identityprovider_idp_type.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sso/migrations/0006_add_new_fields_in_identityprovider.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sso/migrations/0007_add_multi_view_api_fields.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sso/migrations/0008_alter_identityprovider_idp_type.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sso/migrations/0009_identityprovider_require_api_key_for_api_access.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/sso/models.py class IdentityProviderType (line 19) | class IdentityProviderType: class IdentityProviderProtocol (line 30) | class IdentityProviderProtocol: method get_supported_types (line 39) | def get_supported_types(cls): class LoginEnforcementType (line 51) | class LoginEnforcementType: class ServiceProviderCertificate (line 60) | class ServiceProviderCertificate: method __init__ (line 62) | def __init__(self): class IdentityProvider (line 86) | class IdentityProvider(models.Model): class Meta (line 173) | class Meta: method __str__ (line 176) | def __str__(self): method service_name (line 180) | def service_name(self): method create_service_provider_certificate (line 183) | def create_service_provider_certificate(self): method create_rollover_service_provider_certificate (line 190) | def create_rollover_service_provider_certificate(self): method renew_service_provider_certificate (line 197) | def renew_service_provider_certificate(self): method get_email_domains (line 212) | def get_email_domains(self): method get_sso_exempt_users (line 217) | def get_sso_exempt_users(self): method get_login_url (line 222) | def get_login_url(self, username=None): method get_active_projects (line 235) | def get_active_projects(self): method is_domain_an_active_member (line 247) | def is_domain_an_active_member(self, domain): method does_domain_trust_this_idp (line 265) | def does_domain_trust_this_idp(self, domain): method clear_domain_caches (line 280) | def clear_domain_caches(self, domain): method clear_email_domain_caches (line 291) | def clear_email_domain_caches(email_domain): method clear_all_email_domain_caches (line 301) | def clear_all_email_domain_caches(self): method clear_all_domain_subscriber_caches (line 311) | def clear_all_domain_subscriber_caches(self): method __init__ (line 319) | def __init__(self, *args, **kwargs): method save (line 323) | def save(self, *args, **kwargs): method _api_expiration_date_has_become_more_restrictive (line 332) | def _api_expiration_date_has_become_more_restrictive(self): method create_trust_with_domain (line 340) | def create_trust_with_domain(self, domain, username): method domain_has_editable_identity_provider (line 360) | def domain_has_editable_identity_provider(cls, domain): method get_active_identity_provider_by_email_domain (line 372) | def get_active_identity_provider_by_email_domain(cls, email_domain): method get_active_identity_provider_by_username (line 389) | def get_active_identity_provider_by_username(cls, username): method does_domain_trust_user (line 403) | def does_domain_trust_user(cls, domain, username): method get_required_identity_provider (line 418) | def get_required_identity_provider(cls, username): method get_remote_member_usernames (line 443) | def get_remote_member_usernames(self): method get_local_member_usernames (line 452) | def get_local_member_usernames(self): function clear_caches_when_subscription_status_changes (line 480) | def clear_caches_when_subscription_status_changes(sender, instance, **kw... class AuthenticatedEmailDomain (line 493) | class AuthenticatedEmailDomain(models.Model): class Meta (line 501) | class Meta: method __str__ (line 504) | def __str__(self): function clear_caches_for_email_domain (line 510) | def clear_caches_for_email_domain(sender, instance, **kwargs): class UserExemptFromSingleSignOn (line 522) | class UserExemptFromSingleSignOn(models.Model): class Meta (line 531) | class Meta: method __str__ (line 534) | def __str__(self): class SsoTestUser (line 538) | class SsoTestUser(models.Model): class Meta (line 546) | class Meta: method __str__ (line 549) | def __str__(self): class TrustedIdentityProvider (line 553) | class TrustedIdentityProvider(models.Model): class Meta (line 563) | class Meta: method __str__ (line 566) | def __str__(self): function clear_caches_when_trust_is_established_or_removed (line 572) | def clear_caches_when_trust_is_established_or_removed(sender, instance, ... FILE: corehq/apps/sso/tasks.py function renew_service_provider_x509_certificates (line 42) | def renew_service_provider_x509_certificates(): function create_rollover_service_provider_x509_certificates (line 57) | def create_rollover_service_provider_x509_certificates(): function idp_cert_expires_reminder (line 72) | def idp_cert_expires_reminder(): function send_idp_cert_expires_reminder_emails (line 80) | def send_idp_cert_expires_reminder_emails(num_days): function auto_deactivate_removed_sso_users (line 127) | def auto_deactivate_removed_sso_users(): function send_deactivation_skipped_email (line 175) | def send_deactivation_skipped_email(idp, failure_code, error=None, error... function update_sso_user_api_key_expiration_dates (line 210) | def update_sso_user_api_key_expiration_dates(self, identity_provider_id): function enforce_key_expiration_for_idp (line 215) | def enforce_key_expiration_for_idp(idp): function get_users_for_email_domains (line 237) | def get_users_for_email_domains(domains): function get_keys_expiring_after (line 246) | def get_keys_expiring_after(users, expiration_date): function send_api_token_expiration_reminder (line 254) | def send_api_token_expiration_reminder(): function send_api_token_expiration_reminder_emails (line 262) | def send_api_token_expiration_reminder_emails(num_days): FILE: corehq/apps/sso/tests/generator.py function create_idp (line 23) | def create_idp(slug, account, include_certs=False): function get_billing_account_for_idp (line 44) | def get_billing_account_for_idp(): function get_enterprise_plan (line 53) | def get_enterprise_plan(): function create_request_session (line 73) | def create_request_session(request, use_saml_sso=False, use_oidc_sso=Fal... function store_full_name_in_saml_user_data (line 85) | def store_full_name_in_saml_user_data(request, first_name, last_name): function store_display_name_in_saml_user_data (line 93) | def store_display_name_in_saml_user_data(request, display_name): function store_full_name_in_oidc_user_data (line 100) | def store_full_name_in_oidc_user_data(request, first_name, last_name): function store_display_name_in_oidc_user_data (line 108) | def store_display_name_in_oidc_user_data(request, display_name): function get_public_cert_file (line 115) | def get_public_cert_file(expiration_in_seconds=certificates.DEFAULT_EXPI... function get_bad_cert_file (line 129) | def get_bad_cert_file(bad_cert_data): FILE: corehq/apps/sso/tests/test_async_handlers.py class FakeSuperuser (line 20) | class FakeSuperuser: method __init__ (line 21) | def __init__(self, is_superuser): function _get_request (line 25) | def _get_request(account, is_superuser=False): class BaseAsyncHandlerTest (line 33) | class BaseAsyncHandlerTest(TestCase): method setUpClass (line 36) | def setUpClass(cls): method tearDownClass (line 64) | def tearDownClass(cls): method _get_post_data (line 70) | def _get_post_data(self, object_name=None): class TestAsyncHandlerSecurity (line 82) | class TestAsyncHandlerSecurity(BaseAsyncHandlerTest): method setUpClass (line 85) | def setUpClass(cls): method setUp (line 89) | def setUp(self): method test_get_linked_objects_response_throws_404 (line 94) | def test_get_linked_objects_response_throws_404(self): method test_add_object_response_throws_404 (line 100) | def test_add_object_response_throws_404(self): method test_remove_object_response_throws_404 (line 106) | def test_remove_object_response_throws_404(self): method test_get_linked_objects_response_does_not_throw_404_for_superusers (line 112) | def test_get_linked_objects_response_does_not_throw_404_for_superusers... method test_add_object_response_does_not_throw_404_for_superusers (line 120) | def test_add_object_response_does_not_throw_404_for_superusers(self): method test_remove_object_response_does_not_throw_404_for_superusers (line 128) | def test_remove_object_response_does_not_throw_404_for_superusers(self): class TestIdentityProviderAdminAsyncHandler (line 141) | class TestIdentityProviderAdminAsyncHandler(BaseAsyncHandlerTest): method setUp (line 143) | def setUp(self): method test_get_linked_objects (line 147) | def test_get_linked_objects(self): method test_add_object_raises_error_if_conflict_with_idp (line 170) | def test_add_object_raises_error_if_conflict_with_idp(self): method test_add_object_raises_error_if_conflict_with_another_idp (line 185) | def test_add_object_raises_error_if_conflict_with_another_idp(self): method test_add_object_response (line 199) | def test_add_object_response(self): method test_remove_object_fails_if_no_email_domain_exists (line 214) | def test_remove_object_fails_if_no_email_domain_exists(self): method test_remove_object_fails_if_email_domain_is_related_to_other_idp (line 225) | def test_remove_object_fails_if_email_domain_is_related_to_other_idp(s... method test_remove_object_removes_email_domain (line 240) | def test_remove_object_removes_email_domain(self): class TestSSOExemptUsersAdminAsyncHandler (line 264) | class TestSSOExemptUsersAdminAsyncHandler(BaseAsyncHandlerTest): method setUpClass (line 267) | def setUpClass(cls): method tearDownClass (line 287) | def tearDownClass(cls): method setUp (line 291) | def setUp(self): method test_get_linked_objects (line 296) | def test_get_linked_objects(self): method test_missing_email_domain_in_username_raises_error (line 324) | def test_missing_email_domain_in_username_raises_error(self): method test_add_object_raises_errors_if_username_exists (line 334) | def test_add_object_raises_errors_if_username_exists(self): method test_add_object_raises_errors_if_email_domain_is_linked_to_different_idp (line 347) | def test_add_object_raises_errors_if_email_domain_is_linked_to_differe... method test_add_object_raises_errors_if_email_domain_does_not_exist (line 357) | def test_add_object_raises_errors_if_email_domain_does_not_exist(self): method test_add_object_raises_errors_there_is_an_existing_test_user (line 367) | def test_add_object_raises_errors_there_is_an_existing_test_user(self): method test_add_object_response (line 376) | def test_add_object_response(self): method test_remove_object_raises_error_if_username_does_not_exist (line 390) | def test_remove_object_raises_error_if_username_does_not_exist(self): method test_remove_object_raises_error_if_username_is_not_linked_to_idp (line 400) | def test_remove_object_raises_error_if_username_is_not_linked_to_idp(s... method test_remove_object_raises_error_if_idp_is_editable_and_only_one_username (line 415) | def test_remove_object_raises_error_if_idp_is_editable_and_only_one_us... method test_remove_object_response (line 432) | def test_remove_object_response(self): class TestSsoTestUserAdminAsyncHandler (line 455) | class TestSsoTestUserAdminAsyncHandler(BaseAsyncHandlerTest): method setUpClass (line 458) | def setUpClass(cls): method tearDownClass (line 478) | def tearDownClass(cls): method setUp (line 482) | def setUp(self): method test_get_linked_objects (line 487) | def test_get_linked_objects(self): method test_missing_email_domain_in_username_raises_error (line 515) | def test_missing_email_domain_in_username_raises_error(self): method test_add_object_raises_errors_if_username_exists (line 525) | def test_add_object_raises_errors_if_username_exists(self): method test_add_object_raises_errors_if_email_domain_is_linked_to_different_idp (line 538) | def test_add_object_raises_errors_if_email_domain_is_linked_to_differe... method test_add_object_raises_errors_if_email_domain_does_not_exist (line 548) | def test_add_object_raises_errors_if_email_domain_does_not_exist(self): method test_add_object_raises_errors_there_is_an_existing_exempt_user (line 558) | def test_add_object_raises_errors_there_is_an_existing_exempt_user(self): method test_add_object_response (line 567) | def test_add_object_response(self): method test_remove_object_raises_error_if_username_does_not_exist (line 581) | def test_remove_object_raises_error_if_username_does_not_exist(self): method test_remove_object_raises_error_if_username_is_not_linked_to_idp (line 591) | def test_remove_object_raises_error_if_username_is_not_linked_to_idp(s... method test_remove_object_response (line 606) | def test_remove_object_response(self): FILE: corehq/apps/sso/tests/test_backends.py class TestSsoBackend (line 16) | class TestSsoBackend(TestCase): method setUpClass (line 24) | def setUpClass(cls): method tearDownClass (line 51) | def tearDownClass(cls): method authenticate (line 56) | def authenticate(self, request, **kw): method setUp (line 67) | def setUp(self): method _get_oidc_request (line 73) | def _get_oidc_request(): method test_backend_failure_without_username (line 78) | def test_backend_failure_without_username(self): method test_backend_failure_without_idp_slug (line 90) | def test_backend_failure_without_idp_slug(self): method test_backend_failure_without_is_handshake_successful_flag (line 104) | def test_backend_failure_without_is_handshake_successful_flag(self): method test_login_error_if_idp_doesnt_exist (line 118) | def test_login_error_if_idp_doesnt_exist(self): method _activate_idp (line 136) | def _activate_idp(self): method test_login_error_if_idp_not_active (line 140) | def test_login_error_if_idp_not_active(self): method test_login_error_if_bad_username (line 161) | def test_login_error_if_bad_username(self): method test_login_error_if_email_domain_does_not_exist (line 179) | def test_login_error_if_email_domain_does_not_exist(self): method test_login_error_if_email_domain_is_not_authorized (line 198) | def test_login_error_if_email_domain_is_not_authorized(self): method test_new_user_created_and_data_is_saved (line 218) | def test_new_user_created_and_data_is_saved(self): method test_new_user_displayname_is_used_if_first_and_last_are_missing (line 261) | def test_new_user_displayname_is_used_if_first_and_last_are_missing(se... method test_new_user_displayname_with_one_name_is_used_as_first_name (line 299) | def test_new_user_displayname_with_one_name_is_used_as_first_name(self): method test_new_user_created_and_invitation_accepted (line 336) | def test_new_user_created_and_invitation_accepted(self): method test_new_user_created_and_expired_invitation_declined (line 375) | def test_new_user_created_and_expired_invitation_declined(self): method test_existing_user_invitation_accepted (line 416) | def test_existing_user_invitation_accepted(self): method test_new_user_is_populated_with_oidc_full_name_data (line 452) | def test_new_user_is_populated_with_oidc_full_name_data(self): method test_new_user_is_populated_with_oidc_display_name_data (line 481) | def test_new_user_is_populated_with_oidc_display_name_data(self): method test_new_user_with_no_async_signup_request_creates_new_user (line 509) | def test_new_user_with_no_async_signup_request_creates_new_user(self): method test_new_user_with_capitals_in_username (line 539) | def test_new_user_with_capitals_in_username(self): method test_successful_login (line 570) | def test_successful_login(self): method test_deactivated_user_is_reactivated_after_successful_sso_login (line 585) | def test_deactivated_user_is_reactivated_after_successful_sso_login(se... method test_deactivated_user_is_reactivated_and_invitation_accepted (line 607) | def test_deactivated_user_is_reactivated_and_invitation_accepted(self): method test_deactivated_user_is_reactivated_and_expired_invitation_declined (line 639) | def test_deactivated_user_is_reactivated_and_expired_invitation_declin... method test_failed_sso_login_does_not_reactivate_user (line 675) | def test_failed_sso_login_does_not_reactivate_user(self): method _create_a_new_user_then_deactivate_user (line 694) | def _create_a_new_user_then_deactivate_user(self): FILE: corehq/apps/sso/tests/test_caches.py class TestCacheCleanup (line 13) | class TestCacheCleanup(TestCase): method setUpClass (line 16) | def setUpClass(cls): method tearDownClass (line 29) | def tearDownClass(cls): method _cleanup_identity_provider (line 34) | def _cleanup_identity_provider(self): method test_cache_cleanup_when_email_domain_is_added_and_removed (line 38) | def test_cache_cleanup_when_email_domain_is_added_and_removed(self): method test_cache_cleanup_when_identity_provider_is_active_status_changes (line 60) | def test_cache_cleanup_when_identity_provider_is_active_status_changes... method test_cache_cleanup_when_idp_trust_relationship_changes (line 82) | def test_cache_cleanup_when_idp_trust_relationship_changes(self): method test_cache_cleanup_when_domain_subscription_changes (line 103) | def test_cache_cleanup_when_domain_subscription_changes(self): FILE: corehq/apps/sso/tests/test_context_helpers.py class TestSimpleIdPContextHelpers (line 13) | class TestSimpleIdPContextHelpers(SimpleTestCase): method test_render_multiple_to_strings (line 16) | def test_render_multiple_to_strings(self, mock_render): class TestIdPContextHelpers (line 25) | class TestIdPContextHelpers(TestCase): method setUpClass (line 28) | def setUpClass(cls): method setUp (line 32) | def setUp(self): method test_get_idp_cert_expiration_email_context (line 36) | def test_get_idp_cert_expiration_email_context(self): method tearDown (line 42) | def tearDown(self): method tearDownClass (line 47) | def tearDownClass(cls): FILE: corehq/apps/sso/tests/test_decorators.py class TestDecorators (line 12) | class TestDecorators(TestCase): method setUpClass (line 15) | def setUpClass(cls): method setUp (line 19) | def setUp(self): method test_identity_provider_required_decorator (line 33) | def test_identity_provider_required_decorator(self): method test_use_saml2_auth_decorator (line 40) | def test_use_saml2_auth_decorator(self): method tearDown (line 49) | def tearDown(self): method tearDownClass (line 54) | def tearDownClass(cls): FILE: corehq/apps/sso/tests/test_domain_helpers.py class TestIsDomainUsingSso (line 14) | class TestIsDomainUsingSso(TestCase): method setUpClass (line 20) | def setUpClass(cls): method tearDownClass (line 85) | def tearDownClass(cls): method test_domain_under_active_idp_returns_true (line 97) | def test_domain_under_active_idp_returns_true(self): method test_domain_under_inactive_idp_returns_false (line 104) | def test_domain_under_inactive_idp_returns_false(self): method test_domain_trusting_active_idp_returns_true (line 111) | def test_domain_trusting_active_idp_returns_true(self): method test_domain_trusting_inactive_idp_returns_false (line 118) | def test_domain_trusting_inactive_idp_returns_false(self): method test_non_sso_domain_returns_false (line 125) | def test_non_sso_domain_returns_false(self): method test_cache_is_cleared_when_domain_is_added_to_idp (line 132) | def test_cache_is_cleared_when_domain_is_added_to_idp(self): FILE: corehq/apps/sso/tests/test_forms.py class BaseSSOFormTest (line 26) | class BaseSSOFormTest(TestCase): method setUpClass (line 29) | def setUpClass(cls): method tearDownClass (line 41) | def tearDownClass(cls): class TestCreateIdentityProviderForm (line 48) | class TestCreateIdentityProviderForm(BaseSSOFormTest): method tearDownClass (line 51) | def tearDownClass(cls): method _get_post_data (line 56) | def _get_post_data(owner, name, slug, idp_type=None, protocol=None): method test_bad_slug_is_invalid (line 65) | def test_bad_slug_is_invalid(self): method test_idp_type_and_protocol_mismatch (line 81) | def test_idp_type_and_protocol_mismatch(self): method test_created_saml_identity_provider (line 97) | def test_created_saml_identity_provider(self): method test_created_oidc_identity_provider (line 121) | def test_created_oidc_identity_provider(self): class TestEditIdentityProviderAdminForm (line 149) | class TestEditIdentityProviderAdminForm(BaseSSOFormTest): method setUp (line 151) | def setUp(self): method tearDown (line 162) | def tearDown(self): method _fulfill_all_active_saml_requirements (line 168) | def _fulfill_all_active_saml_requirements(self, except_entity_id=False... method _fulfill_all_active_oidc_requirements (line 179) | def _fulfill_all_active_oidc_requirements(self, except_issuer_id=False... method _get_post_data (line 186) | def _get_post_data(self, name=None, is_editable=False, is_active=False... method test_bad_slug_update_is_invalid (line 194) | def test_bad_slug_update_is_invalid(self, *args): method test_slug_update_conflict (line 206) | def test_slug_update_conflict(self, *args): method test_slug_and_last_modified_by_updates (line 226) | def test_slug_and_last_modified_by_updates(self, *args): method test_name_updates_and_is_required (line 242) | def test_name_updates_and_is_required(self, *args): method test_is_editable_has_met_requirements_and_value_updates (line 260) | def test_is_editable_has_met_requirements_and_value_updates(self, *args): method test_is_active_has_met_saml_requirements_and_value_updates (line 290) | def test_is_active_has_met_saml_requirements_and_value_updates(self, *... method test_is_active_has_met_oidc_requirements_and_value_updates (line 345) | def test_is_active_has_met_oidc_requirements_and_value_updates(self, *... class TestSsoSamlEnterpriseSettingsForm (line 396) | class TestSsoSamlEnterpriseSettingsForm(BaseSSOFormTest): method setUp (line 398) | def setUp(self): method tearDown (line 402) | def tearDown(self): method _get_post_data (line 409) | def _get_post_data(no_entity_id=False, no_login_url=False, no_logout_u... method _get_request_files (line 439) | def _get_request_files(cert_file): method _create_identity_provider (line 444) | def _create_identity_provider( method _update_identity_provider (line 459) | def _update_identity_provider( method test_is_active_triggers_form_validation_errors (line 468) | def test_is_active_triggers_form_validation_errors(self): method test_that_is_active_updates_successfully_when_requirements_are_met (line 512) | def test_that_is_active_updates_successfully_when_requirements_are_met... method test_that_validation_error_is_raised_when_certificate_file_is_bad (line 551) | def test_that_validation_error_is_raised_when_certificate_file_is_bad(... method test_that_validation_error_is_raised_when_certificate_is_expired (line 567) | def test_that_validation_error_is_raised_when_certificate_is_expired(s... method test_last_modified_by_and_fields_update_when_not_active (line 584) | def test_last_modified_by_and_fields_update_when_not_active(self): method test_require_encrypted_assertions_is_saved (line 614) | def test_require_encrypted_assertions_is_saved(self): method test_login_enforcement_type_is_saved (line 629) | def test_login_enforcement_type_is_saved(self): method test_valid_key_expiration_values (line 644) | def test_valid_key_expiration_values(self): method test_when_enforce_api_key_expiration_is_false_expiration_window_is_null (line 656) | def test_when_enforce_api_key_expiration_is_false_expiration_window_is... method test_when_enforce_api_key_expiration_is_true_expiration_window_must_be_set (line 667) | def test_when_enforce_api_key_expiration_is_true_expiration_window_mus... method test_empty_string_is_not_a_valid_expiration_window (line 677) | def test_empty_string_is_not_a_valid_expiration_window(self): method test_custom_expiration_window_is_invalid (line 686) | def test_custom_expiration_window_is_invalid(self): method test_expiration_window_is_coerced_to_int (line 700) | def test_expiration_window_is_coerced_to_int(self): method test_form_default_expiration_values_are_empty (line 709) | def test_form_default_expiration_values_are_empty(self): method test_form_is_valid_without_api_expiration_values (line 714) | def test_form_is_valid_without_api_expiration_values(self): method test_always_show_key_management_is_saved (line 719) | def test_always_show_key_management_is_saved(self): method test_max_days_until_user_api_key_expiration_is_saved (line 729) | def test_max_days_until_user_api_key_expiration_is_saved(self): method test_expiration_enforcement_can_be_removed (line 742) | def test_expiration_enforcement_can_be_removed(self): class TestSsoOidcEnterpriseSettingsForm (line 753) | class TestSsoOidcEnterpriseSettingsForm(BaseSSOFormTest): method setUp (line 755) | def setUp(self): method tearDown (line 768) | def tearDown(self): method _get_post_data (line 775) | def _get_post_data(no_entity_id=False, no_client_id=False, no_client_s... method test_is_active_triggers_form_validation_errors (line 785) | def test_is_active_triggers_form_validation_errors(self): method test_that_entity_id_raises_error_when_url_is_not_one_login (line 824) | def test_that_entity_id_raises_error_when_url_is_not_one_login(self): method test_that_is_active_updates_successfully_when_requirements_are_met (line 837) | def test_that_is_active_updates_successfully_when_requirements_are_met... method test_last_modified_by_and_fields_update_when_not_active (line 869) | def test_last_modified_by_and_fields_update_when_not_active(self): method test_login_enforcement_type_is_saved (line 897) | def test_login_enforcement_type_is_saved(self): FILE: corehq/apps/sso/tests/test_identity_provider.py class TestIdentityProviderLoginEnforcements (line 7) | class TestIdentityProviderLoginEnforcements(TestCase): method setUpClass (line 10) | def setUpClass(cls): method setUp (line 14) | def setUp(self): method test_active_global_idp_is_required (line 22) | def test_active_global_idp_is_required(self): method test_active_test_idp_is_required_with_test_user (line 29) | def test_active_test_idp_is_required_with_test_user(self): method test_inactive_idp_is_never_required (line 45) | def test_inactive_idp_is_never_required(self): FILE: corehq/apps/sso/tests/test_login_helpers.py function _name_unavailable_for_domain_request (line 14) | def _name_unavailable_for_domain_request(*args, **kwargs): class TestProcessAsyncSignupRequests (line 18) | class TestProcessAsyncSignupRequests(TestCase): method setUpClass (line 25) | def setUpClass(cls): method setUp (line 32) | def setUp(self): method tearDownClass (line 38) | def tearDownClass(cls): method _get_signup_form (line 43) | def _get_signup_form(username, project_name): method test_new_domain_is_created_and_request_is_deleted (line 55) | def test_new_domain_is_created_and_request_is_deleted(self, mock_reque... method test_error_message_is_raised_if_domain_exists (line 72) | def test_error_message_is_raised_if_domain_exists(self, django_error_m... FILE: corehq/apps/sso/tests/test_message_helpers.py class TestShowSsoLoginSuccessOrErrorMessages (line 8) | class TestShowSsoLoginSuccessOrErrorMessages(SimpleTestCase): method setUp (line 10) | def setUp(self): method test_success_message_is_shown (line 19) | def test_success_message_is_shown(self, mock_messages_success): method test_error_message_is_shown (line 25) | def test_error_message_is_shown(self, mock_messages_error): method test_success_and_error_messages_are_shown (line 33) | def test_success_and_error_messages_are_shown(self, mock_messages_succ... FILE: corehq/apps/sso/tests/test_models.py class IdentityProviderTests (line 19) | class IdentityProviderTests(TestCase): method test_more_restrictive_api_key_expiration_date_updates_api_key_expirations (line 21) | def test_more_restrictive_api_key_expiration_date_updates_api_key_expi... method test_unchanged_api_key_expiration_does_not_call_task (line 30) | def test_unchanged_api_key_expiration_does_not_call_task(self, mock_ta... method test_less_restrictive_api_key_expiration_date_does_not_call_task (line 39) | def test_less_restrictive_api_key_expiration_date_does_not_call_task(s... method test_removing_max_api_expiration_does_not_call_task (line 48) | def test_removing_max_api_expiration_does_not_call_task(self, mock_task): method setUpClass (line 57) | def setUpClass(cls): method _create_identity_provider (line 61) | def _create_identity_provider(self, max_days_until_user_api_key_expira... class IdentityProviderGovernanceScopeTests (line 72) | class IdentityProviderGovernanceScopeTests(TestCase): method setUpClass (line 74) | def setUpClass(cls): method setUp (line 95) | def setUp(self): method _create_web_user (line 109) | def _create_web_user(self, username): method _create_test_sso_user (line 116) | def _create_test_sso_user(self, username): method test_idp_governance_scope_returns_everyone_when_login_enforcement_is_global (line 123) | def test_idp_governance_scope_returns_everyone_when_login_enforcement_... method test_idp_governance_scope_returns_test_user_only_when_login_enforcement_is_test (line 128) | def test_idp_governance_scope_returns_test_user_only_when_login_enforc... method test_idp_governance_scope_excludes_exempt_user (line 135) | def test_idp_governance_scope_excludes_exempt_user(self): method test_idp_governance_scope_excludes_users_have_different_email_domain (line 145) | def test_idp_governance_scope_excludes_users_have_different_email_doma... FILE: corehq/apps/sso/tests/test_oidc_utils.py function test_initialize_oidc_session (line 8) | def test_initialize_oidc_session(): FILE: corehq/apps/sso/tests/test_request_helpers.py function test_get_request_data (line 29) | def test_get_request_data(): function test_is_request_using_saml_sso_true (line 59) | def test_is_request_using_saml_sso_true(): function test_is_request_using_oidc_sso_true (line 68) | def test_is_request_using_oidc_sso_true(): function test_is_request_using_sso_false_with_session (line 77) | def test_is_request_using_sso_false_with_session(): function test_is_request_using_sso_false_without_session (line 86) | def test_is_request_using_sso_false_without_session(): class TestIsRequestBlockedFromViewingDomainDueToSso (line 94) | class TestIsRequestBlockedFromViewingDomainDueToSso(TestCase): method setUpClass (line 100) | def setUpClass(cls): method tearDownClass (line 140) | def tearDownClass(cls): method setUp (line 150) | def setUp(self): method tearDown (line 157) | def tearDown(self): method test_returns_false_if_request_is_not_using_sso (line 161) | def test_returns_false_if_request_is_not_using_sso(self): method test_raises_error_if_request_uses_sso_but_user_does_not_have_idp (line 180) | def test_raises_error_if_request_uses_sso_but_user_does_not_have_idp(s... method test_returns_false_if_domain_belongs_to_idp_account_owner (line 198) | def test_returns_false_if_domain_belongs_to_idp_account_owner(self): method test_returns_false_if_domain_trusts_identity_provider (line 211) | def test_returns_false_if_domain_trusts_identity_provider(self): method test_auto_trust_for_domains_created_by_user (line 228) | def test_auto_trust_for_domains_created_by_user(self): method test_returns_true_if_external_domain_does_not_trust_idp (line 283) | def test_returns_true_if_external_domain_does_not_trust_idp(self): class TestGetReturnToUrlFromRequest (line 297) | class TestGetReturnToUrlFromRequest(SimpleTestCase): method setUp (line 299) | def setUp(self): method test_absolute_url_returns_none (line 304) | def test_absolute_url_returns_none(self): method test_alt_absolute_url_returns_none (line 308) | def test_alt_absolute_url_returns_none(self): method test_relative_url_is_returned (line 312) | def test_relative_url_is_returned(self): FILE: corehq/apps/sso/tests/test_tasks.py function _get_days_before_expiration (line 36) | def _get_days_before_expiration(days_before): class TestSSOTasks (line 40) | class TestSSOTasks(TestCase): method setUpClass (line 43) | def setUpClass(cls): method setUp (line 47) | def setUp(self): method test_create_rollover_service_provider_x509_certificates (line 51) | def test_create_rollover_service_provider_x509_certificates(self): method test_renew_service_provider_x509_certificates (line 82) | def test_renew_service_provider_x509_certificates(self): method assert_idp_cert_expires_reminder (line 111) | def assert_idp_cert_expires_reminder(self, assert_reminder, remind_day... method set_idp_active (line 131) | def set_idp_active(self, active): method test_idp_cert_expires_reminder (line 135) | def test_idp_cert_expires_reminder(self): method test_idp_cert_expires_reminder_60 (line 139) | def test_idp_cert_expires_reminder_60(self): method test_idp_cert_expires_reminder_inactive (line 143) | def test_idp_cert_expires_reminder_inactive(self): method _assert_idp_secret_expires_reminder (line 147) | def _assert_idp_secret_expires_reminder(self, assert_reminder, remind_... method test_idp_secret_expires_reminder (line 169) | def test_idp_secret_expires_reminder(self): method test_idp_secret_expires_reminder_60 (line 173) | def test_idp_secret_expires_reminder_60(self): method test_idp_secret_expires_reminder_inactive (line 177) | def test_idp_secret_expires_reminder_inactive(self): method tearDown (line 181) | def tearDown(self): method tearDownClass (line 186) | def tearDownClass(cls): class GetUsersForEmailDomainTests (line 191) | class GetUsersForEmailDomainTests(TestCase): method test_finds_users_whose_username_ends_with_domain (line 192) | def test_finds_users_whose_username_ends_with_domain(self): method test_does_not_match_on_email (line 197) | def test_does_not_match_on_email(self): method test_can_match_multiple_domains (line 202) | def test_can_match_multiple_domains(self): class GetKeysExpiringAfterTests (line 209) | class GetKeysExpiringAfterTests(TestCase): method setUp (line 210) | def setUp(self): method test_finds_key_with_no_expiration (line 214) | def test_finds_key_with_no_expiration(self): method test_finds_key_with_expiration_after_date (line 219) | def test_finds_key_with_expiration_after_date(self): method test_ignores_key_at_expiration_date (line 225) | def test_ignores_key_at_expiration_date(self): method test_finds_inactive_keys (line 231) | def test_finds_inactive_keys(self): method _create_key (line 236) | def _create_key(self, expiration_date=None, is_active=True): class EnforceKeyExpirationTaskTests (line 242) | class EnforceKeyExpirationTaskTests(TestCase): method setUpClass (line 244) | def setUpClass(cls): method test_updates_non_compliant_expiry_to_max (line 248) | def test_updates_non_compliant_expiry_to_max(self): method test_exits_when_no_maximum_date_exists (line 261) | def test_exits_when_no_maximum_date_exists(self): method test_only_matches_exact_domain_matches (line 272) | def test_only_matches_exact_domain_matches(self): method test_integration_test (line 283) | def test_integration_test(self): method _create_idp_for_domains (line 295) | def _create_idp_for_domains(self, domains, max_days_until_user_api_key... method _create_user (line 304) | def _create_user(self, username): method _create_key_for_user (line 309) | def _create_key_for_user(self, user, expiration_date=None): class TestAutoDeactivationTask (line 314) | class TestAutoDeactivationTask(TestCase): method setUpClass (line 317) | def setUpClass(cls): method setUp (line 339) | def setUp(self): method test_user_is_deactivated_if_not_member_of_idp (line 353) | def test_user_is_deactivated_if_not_member_of_idp(self): method test_sso_exempt_users_are_not_deactivated (line 363) | def test_sso_exempt_users_are_not_deactivated(self): method test_deactivation_skipped_if_entra_return_empty_sso_user (line 378) | def test_deactivation_skipped_if_entra_return_empty_sso_user(self, moc... method test_deactivation_skip_members_who_do_not_have_an_email_domain_controlled_by_the_idp (line 392) | def test_deactivation_skip_members_who_do_not_have_an_email_domain_con... method test_auto_deactivation_skipped_for_idp_whose_auto_deactivation_is_off (line 404) | def test_auto_deactivation_skipped_for_idp_whose_auto_deactivation_is_... method test_auto_deactivation_only_deactivate_absent_test_user_when_login_enforcement_is_test (line 415) | def test_auto_deactivation_only_deactivate_absent_test_user_when_login... method _create_web_user (line 432) | def _create_web_user(self, username): FILE: corehq/apps/sso/tests/test_url_helpers.py class FakeIdp (line 8) | class FakeIdp: method __init__ (line 10) | def __init__(self, slug): method get_active_idp_by_username (line 14) | def get_active_idp_by_username(cls, username): class TestAddUsernameHintToLoginUrl (line 23) | class TestAddUsernameHintToLoginUrl(SimpleTestCase): method setUp (line 25) | def setUp(self): method test_hint_is_added_to_login_url (line 31) | def test_hint_is_added_to_login_url(self): method test_hint_is_not_added_to_url_due_to_idp_mismatch (line 36) | def test_hint_is_not_added_to_url_due_to_idp_mismatch(self): method test_hint_is_not_added_to_url_due_to_missing_username (line 41) | def test_hint_is_not_added_to_url_due_to_missing_username(self): method test_hint_is_added_to_login_url_with_plus_in_email (line 45) | def test_hint_is_added_to_login_url_with_plus_in_email(self): FILE: corehq/apps/sso/tests/test_user_helpers.py function test_get_email_domain_with_bad_username (line 6) | def test_get_email_domain_with_bad_username(): function test_get_email_domain_with_bad_username_strange_characters (line 10) | def test_get_email_domain_with_bad_username_strange_characters(): function test_get_email_domain_with_bad_username_no_user (line 14) | def test_get_email_domain_with_bad_username_no_user(): function test_get_email_domain_with_bad_username_multiple_ats (line 18) | def test_get_email_domain_with_bad_username_multiple_ats(): function test_get_email_domain_with_bad_username_spaces (line 22) | def test_get_email_domain_with_bad_username_spaces(): function test_get_email_domain_with_bad_username_space_at_end (line 26) | def test_get_email_domain_with_bad_username_space_at_end(): function test_get_email_domain_with_good_username (line 30) | def test_get_email_domain_with_good_username(): FILE: corehq/apps/sso/utils/context_helpers.py function render_multiple_to_strings (line 11) | def render_multiple_to_strings(context, *templates): function get_idp_cert_expiration_email_context (line 22) | def get_idp_cert_expiration_email_context(idp): function get_sso_deactivation_skip_email_context (line 69) | def get_sso_deactivation_skip_email_context(idp, failure_reason): function get_api_secret_expiration_email_context (line 95) | def get_api_secret_expiration_email_context(idp): FILE: corehq/apps/sso/utils/domain_helpers.py function is_domain_using_sso (line 7) | def is_domain_using_sso(domain): FILE: corehq/apps/sso/utils/entra.py class MSGraphIssue (line 9) | class MSGraphIssue: class MSOdataType (line 17) | class MSOdataType: function get_all_usernames_of_the_idp_from_entra (line 26) | def get_all_usernames_of_the_idp_from_entra(idp): function _configure_idp (line 56) | def _configure_idp(idp): function _get_user_principal_names (line 68) | def _get_user_principal_names(user_ids, token): function _get_access_token (line 115) | def _get_access_token(app, config): function _get_all_user_ids_in_app (line 126) | def _get_all_user_ids_in_app(token, app_id): function _get_group_members (line 161) | def _get_group_members(group_id, token): FILE: corehq/apps/sso/utils/login_helpers.py function process_async_signup_requests (line 9) | def process_async_signup_requests(request, user): FILE: corehq/apps/sso/utils/message_helpers.py function get_success_message_for_trusted_idp (line 6) | def get_success_message_for_trusted_idp(idp, domain_obj): function show_sso_login_success_or_error_messages (line 25) | def show_sso_login_success_or_error_messages(request): FILE: corehq/apps/sso/utils/oidc.py function get_client_for_identity_provider (line 14) | def get_client_for_identity_provider(identity_provider): function initialize_oidc_session (line 32) | def initialize_oidc_session(request): function get_openid_provider_login_url (line 38) | def get_openid_provider_login_url(client, request): function get_user_information_or_throw_error (line 51) | def get_user_information_or_throw_error(client, request): FILE: corehq/apps/sso/utils/request_helpers.py function get_request_data (line 15) | def get_request_data(request): function get_return_to_url_from_request (line 39) | def get_return_to_url_from_request(request): function is_request_using_sso (line 46) | def is_request_using_sso(request): function is_request_blocked_from_viewing_domain_due_to_sso (line 54) | def is_request_blocked_from_viewing_domain_due_to_sso(request, domain_obj): FILE: corehq/apps/sso/utils/session_helpers.py function store_saml_data_in_session (line 6) | def store_saml_data_in_session(request): function _is_saml_session (line 19) | def _is_saml_session(request): function _get_saml_user_data_property (line 23) | def _get_saml_user_data_property(request, prop_slug): function _get_oidc_user_data_property (line 38) | def _get_oidc_user_data_property(request, prop_slug): function _get_display_name_from_session (line 48) | def _get_display_name_from_session(request): function get_sso_user_first_name_from_session (line 62) | def get_sso_user_first_name_from_session(request): function get_sso_user_last_name_from_session (line 81) | def get_sso_user_last_name_from_session(request): FILE: corehq/apps/sso/utils/url_helpers.py function get_saml_entity_id (line 9) | def get_saml_entity_id(identity_provider): function get_saml_acs_url (line 13) | def get_saml_acs_url(identity_provider): function get_saml_login_url (line 17) | def get_saml_login_url(identity_provider): function get_oidc_login_url (line 21) | def get_oidc_login_url(identity_provider): function get_oidc_auth_url (line 25) | def get_oidc_auth_url(identity_provider): function get_oidc_logout_url (line 29) | def get_oidc_logout_url(identity_provider): function get_documentation_url (line 33) | def get_documentation_url(identity_provider): function get_dashboard_link (line 38) | def get_dashboard_link(identity_provider): function _get_full_sso_url (line 56) | def _get_full_sso_url(view_name, identity_provider): function add_username_hint_to_login_url (line 63) | def add_username_hint_to_login_url(login_url, request): FILE: corehq/apps/sso/utils/user_helpers.py function get_email_domain_from_username (line 4) | def get_email_domain_from_username(username): function convert_emails_to_lowercase (line 21) | def convert_emails_to_lowercase(emails): FILE: corehq/apps/sso/utils/view_helpers.py function render_untrusted_identity_provider_for_domain_view (line 10) | def render_untrusted_identity_provider_for_domain_view(request, domain): function render_sso_error (line 38) | def render_sso_error(request, error): function render_sso_user_login_failed (line 49) | def render_sso_user_login_failed(request): function render_saml_acs_error (line 53) | def render_saml_acs_error(request, saml_error_reason=None, idp_service_n... FILE: corehq/apps/sso/views/accounting_admin.py class IdentityProviderInterface (line 42) | class IdentityProviderInterface(AddItemInterface): method new_item_view (line 58) | def new_item_view(self): method headers (line 62) | def headers(self): method rows (line 73) | def rows(self): method _identity_providers (line 88) | def _identity_providers(self): class BaseIdentityProviderAdminView (line 113) | class BaseIdentityProviderAdminView(AccountingSectionView): method parent_pages (line 115) | def parent_pages(self): class NewIdentityProviderAdminView (line 123) | class NewIdentityProviderAdminView(BaseIdentityProviderAdminView, AsyncH... method create_idp_form (line 133) | def create_idp_form(self): method page_context (line 139) | def page_context(self): method page_url (line 146) | def page_url(self): method post (line 149) | def post(self, request, *args, **kwargs): class EditIdentityProviderAdminView (line 162) | class EditIdentityProviderAdminView(BaseIdentityProviderAdminView, Async... method is_deletion_request (line 174) | def is_deletion_request(self): method edit_idp_form (line 179) | def edit_idp_form(self): method page_context (line 185) | def page_context(self): method identity_provider (line 194) | def identity_provider(self): method page_url (line 201) | def page_url(self): method get (line 204) | def get(self, request, *args, **kwargs): method post (line 217) | def post(self, request, *args, **kwargs): FILE: corehq/apps/sso/views/enterprise_admin.py class ManageSSOEnterpriseView (line 23) | class ManageSSOEnterpriseView(BaseEnterpriseAdminView): method page_context (line 29) | def page_context(self): class EditIdentityProviderEnterpriseView (line 39) | class EditIdentityProviderEnterpriseView(BaseEnterpriseAdminView, AsyncH... method page_url (line 49) | def page_url(self): method idp_slug (line 54) | def idp_slug(self): method parent_pages (line 58) | def parent_pages(self): method page_context (line 67) | def page_context(self): method identity_provider (line 76) | def identity_provider(self): method get (line 84) | def get(self, request, *args, **kwargs): method edit_enterprise_idp_form (line 104) | def edit_enterprise_idp_form(self): method post (line 121) | def post(self, request, *args, **kwargs): FILE: corehq/apps/sso/views/oidc.py function sso_oidc_login (line 22) | def sso_oidc_login(request, idp_slug): function sso_oidc_auth (line 33) | def sso_oidc_auth(request, idp_slug): function sso_oidc_logout (line 68) | def sso_oidc_logout(request, idp_slug): FILE: corehq/apps/sso/views/saml.py function sso_saml_metadata (line 34) | def sso_saml_metadata(request, idp_slug): function sso_saml_acs (line 53) | def sso_saml_acs(request, idp_slug): function sso_saml_login (line 119) | def sso_saml_login(request, idp_slug): FILE: corehq/apps/styleguide/context.py function get_navigation_context (line 16) | def get_navigation_context(current_page): function get_interaction_colors (line 74) | def get_interaction_colors(): function get_neutral_colors (line 115) | def get_neutral_colors(): function get_gradient_colors (line 139) | def get_gradient_colors(): function _add_prefix_to_icons (line 225) | def _add_prefix_to_icons(prefix, icon_list): function get_common_icons (line 229) | def get_common_icons(): function get_custom_icons (line 247) | def get_custom_icons(): function get_example_context (line 273) | def get_example_context(filename): function get_html_example_context (line 279) | def get_html_example_context(filename): function get_js_example_context (line 285) | def get_js_example_context(filename): function get_python_example_context (line 291) | def get_python_example_context(filename): FILE: corehq/apps/styleguide/example_forms.py class BasicCrispyForm (line 11) | class BasicCrispyForm(forms.Form): method __init__ (line 25) | def __init__(self, *args, **kwargs): class CheckboxesForm (line 53) | class CheckboxesForm(forms.Form): method __init__ (line 66) | def __init__(self, *args, **kwargs): FILE: corehq/apps/styleguide/examples/bootstrap5/checkbox_form.py class CheckboxDemoForm (line 13) | class CheckboxDemoForm(forms.Form): method __init__ (line 38) | def __init__(self, *args, **kwargs): FILE: corehq/apps/styleguide/examples/bootstrap5/class_view.py class ExampleCenteredPageView (line 13) | class ExampleCenteredPageView(BasePageView): method page_url (line 19) | def page_url(self): class BaseExampleView (line 28) | class BaseExampleView(BaseSectionPageView): method page_url (line 32) | def page_url(self): method section_url (line 36) | def section_url(self): class ExampleParentSectionPageView (line 43) | class ExampleParentSectionPageView(BaseExampleView): method page_context (line 49) | def page_context(self): class ExampleChildSectionPageView (line 55) | class ExampleChildSectionPageView(BaseExampleView): method parent_pages (line 61) | def parent_pages(self): FILE: corehq/apps/styleguide/examples/bootstrap5/crispy_forms_basic.py class BasicCrispyExampleForm (line 12) | class BasicCrispyExampleForm(forms.Form): method __init__ (line 48) | def __init__(self, *args, **kwargs): FILE: corehq/apps/styleguide/examples/bootstrap5/crispy_forms_errors.py class ErrorsCrispyExampleForm (line 11) | class ErrorsCrispyExampleForm(forms.Form): method __init__ (line 21) | def __init__(self, *args, **kwargs): method clean_note (line 42) | def clean_note(self): FILE: corehq/apps/styleguide/examples/bootstrap5/crispy_forms_knockout.py class KnockoutCrispyExampleForm (line 12) | class KnockoutCrispyExampleForm(forms.Form): method __init__ (line 42) | def __init__(self, *args, **kwargs): FILE: corehq/apps/styleguide/examples/bootstrap5/crispy_forms_knockout_validation.py class KnockoutValidationCrispyExampleForm (line 11) | class KnockoutValidationCrispyExampleForm(forms.Form): method __init__ (line 29) | def __init__(self, *args, **kwargs): FILE: corehq/apps/styleguide/examples/bootstrap5/datepicker_alpine_crispy.py class DatepickerAlpineForm (line 11) | class DatepickerAlpineForm(forms.Form): method __init__ (line 17) | def __init__(self, *args, **kwargs): FILE: corehq/apps/styleguide/examples/bootstrap5/disabled_fields.py class DisabledFieldsExampleForm (line 10) | class DisabledFieldsExampleForm(forms.Form): method __init__ (line 32) | def __init__(self, *args, **kwargs): FILE: corehq/apps/styleguide/examples/bootstrap5/functional_view.py function example_data_view (line 13) | def example_data_view(request): # any additional arguments from the URL... function simple_redirect_view (line 20) | def simple_redirect_view(request): function example_centered_page_view (line 27) | def example_centered_page_view(request): function example_section_page_view (line 37) | def example_section_page_view(request): function example_parent_page_view (line 57) | def example_parent_page_view(request): FILE: corehq/apps/styleguide/examples/bootstrap5/htmx_alpine_form_demo.py class MatchType (line 11) | class MatchType: class FilterDemoForm (line 31) | class FilterDemoForm(forms.Form): method __init__ (line 49) | def __init__(self, *args, **kwargs): method clean (line 94) | def clean(self): FILE: corehq/apps/styleguide/examples/bootstrap5/htmx_alpine_form_views.py class HtmxAlpineFormDemoView (line 13) | class HtmxAlpineFormDemoView(HqHtmxActionMixin, BasePageView): method page_url (line 19) | def page_url(self): method form_context (line 22) | def form_context(self, existing_form=None, show_success=False): method load_form (line 29) | def load_form(self, request, *args, **kwargs): method submit_form (line 40) | def submit_form(self, request, *args, **kwargs): FILE: corehq/apps/styleguide/examples/bootstrap5/htmx_complex_store.py class KeyValuePairStore (line 4) | class KeyValuePairStore(CacheStore): FILE: corehq/apps/styleguide/examples/bootstrap5/htmx_debug_mixin_usage.py class TodoListDemoView (line 6) | class TodoListDemoView(HqHtmxDebugMixin, HqHtmxActionMixin, BasePageView): FILE: corehq/apps/styleguide/examples/bootstrap5/htmx_key_value_view.py class HtmxKeyValuePairsDemoView (line 14) | class HtmxKeyValuePairsDemoView(HqHtmxActionMixin, BasePageView): method page_url (line 26) | def page_url(self): method _store (line 29) | def _store(self): method get_pairs (line 32) | def get_pairs(self): method save_pairs (line 35) | def save_pairs(self, pairs): method _next_id (line 38) | def _next_id(self, pairs): method render_pairs (line 43) | def render_pairs(self, request): method load_pairs (line 57) | def load_pairs(self, request, *args, **kwargs): method add_pair (line 64) | def add_pair(self, request, *args, **kwargs): method update_pair (line 80) | def update_pair(self, request, *args, **kwargs): method delete_pair (line 123) | def delete_pair(self, request, *args, **kwargs): FILE: corehq/apps/styleguide/examples/bootstrap5/htmx_next_action_simple_forms.py class ChooseFruitForm (line 8) | class ChooseFruitForm(forms.Form): method __init__ (line 19) | def __init__(self, *args, **kwargs): method clean_fruit (line 37) | def clean_fruit(self): class ConfirmFruitChoiceForm (line 44) | class ConfirmFruitChoiceForm(forms.Form): method __init__ (line 59) | def __init__(self, *args, **kwargs): method clean_fruit (line 78) | def clean_fruit(self): method clean_next_step (line 84) | def clean_next_step(self): FILE: corehq/apps/styleguide/examples/bootstrap5/htmx_next_action_simple_view.py class SimpleNextActionDemoView (line 16) | class SimpleNextActionDemoView(HqHtmxActionMixin, BasePageView): method page_url (line 30) | def page_url(self): method page_context (line 34) | def page_context(self): method _step_context (line 41) | def _step_context(self, form=None, next_action=None, message=None): method load_first_step (line 53) | def load_first_step(self, request, *args, **kwargs): method validate_choice (line 64) | def validate_choice(self, request, *args, **kwargs): method confirm_or_change (line 91) | def confirm_or_change(self, request, *args, **kwargs): FILE: corehq/apps/styleguide/examples/bootstrap5/htmx_pagination_data.py function generate_example_pagination_data (line 6) | def generate_example_pagination_data(num_entries): FILE: corehq/apps/styleguide/examples/bootstrap5/htmx_pagination_host_view.py class HtmxPaginationView (line 9) | class HtmxPaginationView(BasePageView): method page_url (line 17) | def page_url(self): FILE: corehq/apps/styleguide/examples/bootstrap5/htmx_pagination_table.py class ExampleFakeDataTable (line 7) | class ExampleFakeDataTable(BaseHtmxTable): class Meta (line 19) | class Meta(BaseHtmxTable.Meta): FILE: corehq/apps/styleguide/examples/bootstrap5/htmx_pagination_table_view.py class ExamplePaginatedTableView (line 6) | class ExamplePaginatedTableView(SelectablePaginatedTableView): method get_queryset (line 18) | def get_queryset(self): FILE: corehq/apps/styleguide/examples/bootstrap5/htmx_todo_list.py class TodoListDemoView (line 14) | class TodoListDemoView(HqHtmxActionMixin, BasePageView): method page_url (line 24) | def page_url(self): method page_context (line 28) | def page_context(self): method get_items (line 34) | def get_items(self): method save_items (line 37) | def save_items(self, items): method update_item (line 40) | def update_item(self, item_id, name=None, is_done=None): method render_item_response (line 53) | def render_item_response(self, request, item): method create_new_item (line 68) | def create_new_item(self, request, *args, **kwargs): method edit_item (line 80) | def edit_item(self, request, *args, **kwargs): method mark_item_done (line 88) | def mark_item_done(self, request, *args, **kwargs): class TodoListStore (line 96) | class TodoListStore(CacheStore): FILE: corehq/apps/styleguide/examples/bootstrap5/multiselect_form.py class MultiselectDemoForm (line 7) | class MultiselectDemoForm(forms.Form): method __init__ (line 14) | def __init__(self, *args, **kwargs): FILE: corehq/apps/styleguide/examples/bootstrap5/placeholder_help_text.py class PlaceholderHelpTextExampleForm (line 9) | class PlaceholderHelpTextExampleForm(forms.Form): method __init__ (line 20) | def __init__(self, *args, **kwargs): FILE: corehq/apps/styleguide/examples/bootstrap5/select2_ajax_form.py class Select2AjaxDemoForm (line 9) | class Select2AjaxDemoForm(forms.Form): method __init__ (line 17) | def __init__(self, *args, **kwargs): FILE: corehq/apps/styleguide/examples/bootstrap5/select2_alpine_crispy.py class Select2AlpineForm (line 9) | class Select2AlpineForm(forms.Form): method __init__ (line 22) | def __init__(self, *args, **kwargs): FILE: corehq/apps/styleguide/examples/bootstrap5/select2_autocomplete_ko_form.py class Select2AutocompleteKoForm (line 7) | class Select2AutocompleteKoForm(forms.Form): method __init__ (line 14) | def __init__(self, *args, **kwargs): FILE: corehq/apps/styleguide/examples/bootstrap5/select2_css_class_form.py class Select2CssClassDemoForm (line 7) | class Select2CssClassDemoForm(forms.Form): method __init__ (line 26) | def __init__(self, *args, **kwargs): FILE: corehq/apps/styleguide/examples/bootstrap5/select2_dynamic_ko_form.py class Select2DynamicKoForm (line 7) | class Select2DynamicKoForm(forms.Form): method __init__ (line 14) | def __init__(self, *args, **kwargs): FILE: corehq/apps/styleguide/examples/bootstrap5/select2_manual_form.py class Select2ManualDemoForm (line 7) | class Select2ManualDemoForm(forms.Form): method __init__ (line 19) | def __init__(self, *args, **kwargs): FILE: corehq/apps/styleguide/examples/bootstrap5/select2_static_ko_form.py class Select2StaticKoForm (line 7) | class Select2StaticKoForm(forms.Form): method __init__ (line 14) | def __init__(self, *args, **kwargs): FILE: corehq/apps/styleguide/examples/bootstrap5/select_toggle_form.py class SelectToggleDemoForm (line 14) | class SelectToggleDemoForm(forms.Form): method __init__ (line 27) | def __init__(self, *args, **kwargs): FILE: corehq/apps/styleguide/examples/bootstrap5/switch_form.py class SwitchDemoForm (line 13) | class SwitchDemoForm(forms.Form): method __init__ (line 30) | def __init__(self, *args, **kwargs): FILE: corehq/apps/styleguide/examples/bootstrap5/tabs.py class StyleguideExamplesTab (line 15) | class StyleguideExamplesTab(UITab): method _is_viewable (line 22) | def _is_viewable(self): method dropdown_items (line 27) | def dropdown_items(self): method sidebar_items (line 57) | def sidebar_items(self): FILE: corehq/apps/styleguide/examples/simple_crispy_form/forms.py class ExampleUserLoginForm (line 11) | class ExampleUserLoginForm(forms.Form): method __init__ (line 42) | def __init__(self, *args, **kwargs): FILE: corehq/apps/styleguide/examples/simple_crispy_form/views.py class BaseSimpleCrispyFormSectionView (line 17) | class BaseSimpleCrispyFormSectionView(BaseSectionPageView): method section_url (line 20) | def section_url(self): method page_url (line 24) | def page_url(self): method dispatch (line 28) | def dispatch(self, request, *args, **kwargs): class DefaultSimpleCrispyFormSectionView (line 32) | class DefaultSimpleCrispyFormSectionView(BaseSimpleCrispyFormSectionView): method get (line 35) | def get(self, request, *args, **kwargs): class SimpleCrispyFormView (line 40) | class SimpleCrispyFormView(BaseSimpleCrispyFormSectionView): method simple_crispy_form (line 49) | def simple_crispy_form(self): method page_context (line 56) | def page_context(self): method post (line 61) | def post(self, request, *args, **kwargs): FILE: corehq/apps/styleguide/fake_data.py function get_first_name (line 6) | def get_first_name(): function get_last_name (line 14) | def get_last_name(): function get_planet (line 22) | def get_planet(): function get_color (line 27) | def get_color(): function get_big_cat (line 32) | def get_big_cat(): function get_fake_app (line 37) | def get_fake_app(): function get_owner (line 42) | def get_owner(): function get_status (line 47) | def get_status(): function get_past_date (line 51) | def get_past_date(months_away=None): FILE: corehq/apps/styleguide/models.py class CacheStore (line 7) | class CacheStore(ABC): method __init__ (line 14) | def __init__(self, request): method slug (line 19) | def slug(self): method initial_value (line 24) | def initial_value(self): method cache_key (line 36) | def cache_key(self): method set (line 39) | def set(self, data): method get (line 42) | def get(self): method delete (line 45) | def delete(self): FILE: corehq/apps/styleguide/static/styleguide/js/examples/ko_migration/alpine_complex.js method addKeyValuePair (line 8) | addKeyValuePair() { method removeKeyValuePair (line 11) | removeKeyValuePair(index) { FILE: corehq/apps/styleguide/static/styleguide/js/examples/ko_migration/alpine_complex_reusable.js method addKeyValuePair (line 6) | addKeyValuePair() { method removeKeyValuePair (line 9) | removeKeyValuePair(index) { FILE: corehq/apps/styleguide/tabs.py class BaseSGTab (line 23) | class BaseSGTab(UITab): method _is_viewable (line 26) | def _is_viewable(self): class SimpleCrispyFormSGExample (line 31) | class SimpleCrispyFormSGExample(BaseSGTab): method sidebar_items (line 39) | def sidebar_items(self): class SGExampleTab (line 66) | class SGExampleTab(BaseSGTab): method dropdown_items (line 73) | def dropdown_items(self): FILE: corehq/apps/styleguide/utils.py function get_fake_tabular_data (line 6) | def get_fake_tabular_data(num_entries): FILE: corehq/apps/styleguide/views/__init__.py function styleguide_default (line 17) | def styleguide_default(request): class MainStyleGuideView (line 21) | class MainStyleGuideView(TemplateView): class BaseStyleGuideArticleView (line 26) | class BaseStyleGuideArticleView(TemplateView): method sections (line 30) | def sections(self): method navigation_name (line 42) | def navigation_name(self): method section_context (line 52) | def section_context(self): method page_context (line 61) | def page_context(self): method example (line 68) | def example(self, filename, js_filename=None): method render_to_response (line 85) | def render_to_response(self, context, **response_kwargs): class AtomsStyleGuideView (line 92) | class AtomsStyleGuideView(BaseStyleGuideArticleView): method sections (line 97) | def sections(self): method page_context (line 108) | def page_context(self): class MoleculesStyleGuideView (line 265) | class MoleculesStyleGuideView(BaseStyleGuideArticleView): method sections (line 270) | def sections(self): method page_context (line 285) | def page_context(self): class OrganismsStyleGuideView (line 306) | class OrganismsStyleGuideView(BaseStyleGuideArticleView): method sections (line 311) | def sections(self): method page_context (line 319) | def page_context(self): class PagesStyleGuideView (line 331) | class PagesStyleGuideView(BaseStyleGuideArticleView): method sections (line 336) | def sections(self): method page_context (line 345) | def page_context(self): FILE: corehq/apps/styleguide/views/bootstrap5.py function styleguide_home (line 43) | def styleguide_home(request): function styleguide_code_guidelines (line 48) | def styleguide_code_guidelines(request): function styleguide_migration_guide (line 54) | def styleguide_migration_guide(request): function styleguide_javascript_guide (line 60) | def styleguide_javascript_guide(request): function styleguide_html_guide (line 66) | def styleguide_html_guide(request): function styleguide_htmx_and_alpine (line 120) | def styleguide_htmx_and_alpine(request): function styleguide_knockout_to_alpine_guide (line 205) | def styleguide_knockout_to_alpine_guide(request): function styleguide_atoms_accessibility (line 283) | def styleguide_atoms_accessibility(request): function styleguide_atoms_typography (line 289) | def styleguide_atoms_typography(request): function styleguide_atoms_colors (line 295) | def styleguide_atoms_colors(request): function styleguide_atoms_icons (line 306) | def styleguide_atoms_icons(request): function styleguide_molecules_buttons (line 316) | def styleguide_molecules_buttons(request): function styleguide_molecules_selections (line 333) | def styleguide_molecules_selections(request): function styleguide_molecules_checkboxes (line 416) | def styleguide_molecules_checkboxes(request): function styleguide_molecules_modals (line 437) | def styleguide_molecules_modals(request): function styleguide_molecules_pagination (line 461) | def styleguide_molecules_pagination(request): function styleguide_molecules_searching (line 495) | def styleguide_molecules_searching(request): function styleguide_molecules_inline_editing (line 509) | def styleguide_molecules_inline_editing(request): function styleguide_molecules_help (line 527) | def styleguide_molecules_help(request): function styleguide_molecules_feedback (line 538) | def styleguide_molecules_feedback(request): function styleguide_molecules_dates_times (line 552) | def styleguide_molecules_dates_times(request): function styleguide_organisms_forms (line 589) | def styleguide_organisms_forms(request): function styleguide_organisms_tables (line 629) | def styleguide_organisms_tables(request): function styleguide_pages_navigation (line 649) | def styleguide_pages_navigation(request): function styleguide_pages_views (line 670) | def styleguide_pages_views(request): FILE: corehq/apps/styleguide/views/bootstrap5_data.py function select2_ajax_demo (line 14) | def select2_ajax_demo(request): function remote_modal_demo (line 47) | def remote_modal_demo(request): function inline_edit_demo (line 54) | def inline_edit_demo(request): function submit_feedback_demo (line 72) | def submit_feedback_demo(request): function validate_ko_demo (line 79) | def validate_ko_demo(request): function datatables_data (line 97) | def datatables_data(request): function paginated_table_data (line 103) | def paginated_table_data(request): function a_hanging_view (line 116) | def a_hanging_view(request): FILE: corehq/apps/styleguide/views/docs.py function default (line 9) | def default(request): class FormsSimpleCrispyFormExampleView (line 13) | class FormsSimpleCrispyFormExampleView(BaseSimpleCrispyFormSectionView): class ViewsSimpleCrispyFormExampleView (line 19) | class ViewsSimpleCrispyFormExampleView(BaseSimpleCrispyFormSectionView): FILE: corehq/apps/toggle_ui/admin.py class ToggleAdmin (line 7) | class ToggleAdmin(admin.ModelAdmin): FILE: corehq/apps/toggle_ui/migration_helpers.py function move_toggles (line 7) | def move_toggles(from_toggle_id, to_toggle_id): FILE: corehq/apps/toggle_ui/migrations/0001_reconcile_commtrack_flags.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/toggle_ui/migrations/0002_toggleaudit.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/toggle_ui/models.py class ToggleAuditManager (line 6) | class ToggleAuditManager(models.Manager): method log_toggle_changes (line 7) | def log_toggle_changes(self, slug, username, current_items, previous_i... method log_toggle_action (line 20) | def log_toggle_action(self, slug, username, namespaced_items, action): class ToggleAudit (line 29) | class ToggleAudit(models.Model): function parse_item (line 55) | def parse_item(namespaced_item): FILE: corehq/apps/toggle_ui/static/toggle_ui/js/edit-flag.js function toggleViewModel (line 10) | function toggleViewModel() { function toggleItem (line 112) | function toggleItem(namespace, value, last_used, service_type, dimagi_us... FILE: corehq/apps/toggle_ui/tasks.py function generate_toggle_csv_download (line 38) | def generate_toggle_csv_download(self, tag, download_id, username): function _get_toggle_item_count (line 82) | def _get_toggle_item_count(toggles): function _get_toggles_with_tag (line 95) | def _get_toggles_with_tag(tag=None): function _write_toggle_data (line 103) | def _write_toggle_data(filepath, toggles, increment_progress=None): function _get_toggle_rows (line 130) | def _get_toggle_rows(toggle, usage_info): class _UsageInfo (line 199) | class _UsageInfo: method for_domain (line 201) | def for_domain(self, domain): method for_user (line 227) | def for_user(self, username): FILE: corehq/apps/toggle_ui/tests.py class MigrationHelperTest (line 31) | class MigrationHelperTest(TestCase): method _delete_toggles (line 34) | def _delete_toggles(self, *toggles): method test_move_nonexistent_source (line 41) | def test_move_nonexistent_source(self): method test_move_nonexistent_destination (line 50) | def test_move_nonexistent_destination(self): method test_move (line 62) | def test_move(self): class TestToggleAudit (line 81) | class TestToggleAudit(TestCase): method test_log_toggle_changes (line 82) | def test_log_toggle_changes(self): class TestClearCacheForToggle (line 107) | class TestClearCacheForToggle(SimpleTestCase): method test_clear_cache_for_domain_namespace (line 109) | def test_clear_cache_for_domain_namespace(self): method test_clear_cache_for_user_namespace (line 118) | def test_clear_cache_for_user_namespace(self): method test_clear_cache_for_other_namespace (line 127) | def test_clear_cache_for_other_namespace(self): method test_clear_cache_for_email_namespace (line 136) | def test_clear_cache_for_email_namespace(self): method test_clear_cache_raises_exception_for_colon_in_non_domain_namespaces (line 145) | def test_clear_cache_raises_exception_for_colon_in_non_domain_namespac... class BaseTestToggleView (line 150) | class BaseTestToggleView(TestCase): method setUpClass (line 154) | def setUpClass(cls): method endpoint (line 186) | def endpoint(self): class TestToggleListViewAccess (line 190) | class TestToggleListViewAccess(BaseTestToggleView): method test_superuser_access (line 193) | def test_superuser_access(self): method test_non_superuser_access (line 198) | def test_non_superuser_access(self): method test_editable_toggles_access (line 204) | def test_editable_toggles_access(self, mocked_get_editable_toggle_tags... class TestToggleEditViewAccess (line 218) | class TestToggleEditViewAccess(BaseTestToggleView): method endpoint (line 222) | def endpoint(self): method test_superuser_access (line 226) | def test_superuser_access(self, mocked_find_static_toggle): method test_non_superuser_access (line 232) | def test_non_superuser_access(self): method test_view_toggle_with_access (line 239) | def test_view_toggle_with_access(self, mocked_find_static_toggle, *args): method test_view_toggle_with_no_access (line 250) | def test_view_toggle_with_no_access(self, mocked_find_static_toggle, *... method test_edit_toggle_with_access (line 261) | def test_edit_toggle_with_access(self, mocked_find_static_toggle, *args): method test_edit_toggle_with_no_access (line 271) | def test_edit_toggle_with_no_access(self, mocked_find_static_toggle, *... class TestSetToggleViewAccess (line 280) | class TestSetToggleViewAccess(BaseTestToggleView): method endpoint (line 284) | def endpoint(self): method _sample_request_data (line 288) | def _sample_request_data(): method test_set_toggle_with_access (line 293) | def test_set_toggle_with_access(self, mocked_find_static_toggle, *args): method test_non_superuser_access (line 301) | def test_non_superuser_access(self): method test_set_toggle_with_no_access (line 308) | def test_set_toggle_with_no_access(self, mocked_find_static_toggle, *a... class TestReleaseAndDisableToggle (line 317) | class TestReleaseAndDisableToggle(TestCase): method setUp (line 319) | def setUp(self): method tearDown (line 325) | def tearDown(self): method test (line 328) | def test(self): FILE: corehq/apps/toggle_ui/utils.py function find_static_toggle (line 5) | def find_static_toggle(slug): function get_dimagi_users (line 11) | def get_dimagi_users(domain): FILE: corehq/apps/toggle_ui/views.py class ToggleListView (line 54) | class ToggleListView(BasePageView): method dispatch (line 60) | def dispatch(self, request, *args, **kwargs): method page_url (line 64) | def page_url(self): method show_usage (line 68) | def show_usage(self): method page_context (line 72) | def page_context(self): method _editable_tags_slugs (line 111) | def _editable_tags_slugs(self): class ToggleEditView (line 116) | class ToggleEditView(BasePageView): method page_title (line 121) | def page_title(self): method page_url (line 127) | def page_url(self): method usage_info (line 131) | def usage_info(self): method toggle_slug (line 135) | def toggle_slug(self): method is_random (line 139) | def is_random(self): method is_random_editable (line 143) | def is_random_editable(self): method is_feature_release (line 147) | def is_feature_release(self): method static_toggle (line 151) | def static_toggle(self): method can_edit_toggle (line 158) | def can_edit_toggle(self): method get_toggle (line 161) | def get_toggle(self): method page_context (line 167) | def page_context(self): method post (line 191) | def post(self, request, *args, **kwargs): method _save_randomness (line 228) | def _save_randomness(self, toggle, randomness): function _notify_on_change (line 238) | def _notify_on_change(static_toggle, added_entries, username): function _call_save_fn_and_clear_cache_and_enable_dependencies (line 258) | def _call_save_fn_and_clear_cache_and_enable_dependencies(request_userna... function _enable_dependencies (line 269) | def _enable_dependencies(request_username, static_toggle, item, namespac... function _set_toggle (line 275) | def _set_toggle(request_username, static_toggle, item, namespace, is_ena... function _call_save_fn_for_toggle (line 288) | def _call_save_fn_for_toggle(static_toggle, namespace, entry, enabled): function clear_toggle_cache_by_namespace (line 295) | def clear_toggle_cache_by_namespace(namespace, entry): function _clear_caches_for_dynamic_toggle (line 308) | def _clear_caches_for_dynamic_toggle(static_toggle): function _get_usage_info (line 313) | def _get_usage_info(toggle): function _get_service_type (line 336) | def _get_service_type(toggle): function _get_dimagi_users (line 363) | def _get_dimagi_users(toggle): function _namespace_domain (line 373) | def _namespace_domain(enabled_item): function _enabled_item_name (line 380) | def _enabled_item_name(enabled_item): function _format_date (line 391) | def _format_date(date): function _get_most_recently_used (line 398) | def _get_most_recently_used(last_used): function set_toggle (line 410) | def set_toggle(request, toggle_slug): function toggle_status (line 428) | def toggle_status(request, toggle_slug): function export_toggles (line 447) | def export_toggles(request): FILE: corehq/apps/translations/app_translations/download.py function get_bulk_app_single_sheet_by_name (line 24) | def get_bulk_app_single_sheet_by_name(app, lang, eligible_for_transifex_... function get_bulk_app_sheets_by_name (line 51) | def get_bulk_app_sheets_by_name(app, lang=None, eligible_for_transifex_o... function get_name_menu_media_row (line 108) | def get_name_menu_media_row(module_or_form, sheet_name, lang): function get_list_detail_case_property_row (line 126) | def get_list_detail_case_property_row(module_row, sheet_name): function get_question_row (line 144) | def get_question_row(question_label_name_media, sheet_name): function get_module_rows (line 154) | def get_module_rows(langs, module, domain): function get_module_report_rows (line 165) | def get_module_report_rows(langs, module): function get_module_case_list_form_rows (line 178) | def get_module_case_list_form_rows(langs, module): function get_module_case_list_menu_item_rows (line 188) | def get_module_case_list_menu_item_rows(langs, module): function get_module_search_command_rows (line 201) | def get_module_search_command_rows(langs, module, domain): function get_case_search_rows (line 219) | def get_case_search_rows(langs, module, domain): function get_module_detail_rows (line 234) | def get_module_detail_rows(langs, module): function _get_module_detail_no_items_text (line 247) | def _get_module_detail_no_items_text(langs, module): function _get_module_detail_select_text (line 257) | def _get_module_detail_select_text(langs, module): function get_module_detail_tabs_rows (line 267) | def get_module_detail_tabs_rows(langs, detail, list_or_detail): function get_module_detail_fields_rows (line 274) | def get_module_detail_fields_rows(langs, detail, list_or_detail): function get_module_detail_field_row (line 283) | def get_module_detail_field_row(langs, detail, list_or_detail): function get_module_detail_enum_rows (line 295) | def get_module_detail_enum_rows(langs, detail, list_or_detail): function get_module_detail_graph_rows (line 313) | def get_module_detail_graph_rows(langs, detail, list_or_detail): function get_form_question_label_name_media (line 346) | def get_form_question_label_name_media(langs, form): FILE: corehq/apps/translations/app_translations/upload_app.py function validate_bulk_app_translation_upload (line 46) | def validate_bulk_app_translation_upload(app, workbook, email, lang_to_c... function run_translation_checker (line 57) | def run_translation_checker(file_obj): function _email_app_translations_discrepancies (line 68) | def _email_app_translations_discrepancies(msgs, checker_messages, email,... function process_bulk_app_translation_upload (line 109) | def process_bulk_app_translation_upload(app, workbook, sheet_name_to_uni... function get_sheet_name_to_unique_id_map (line 170) | def get_sheet_name_to_unique_id_map(file_or_filename, lang): function _process_single_sheet (line 220) | def _process_single_sheet(app, sheet, names_map, lang=None): function _process_rows (line 254) | def _process_rows(app, sheet_name, rows, names_map, lang=None): function _check_for_sheet_error (line 308) | def _check_for_sheet_error(sheet, expected_headers, processed_sheets=Ell... function _check_for_sheet_warnings (line 337) | def _check_for_sheet_warnings(sheet, expected_headers): class BulkAppTranslationModulesAndFormsUpdater (line 355) | class BulkAppTranslationModulesAndFormsUpdater(BulkAppTranslationUpdater): method __init__ (line 356) | def __init__(self, app, names_map, lang=None): method update (line 360) | def update(self, rows): FILE: corehq/apps/translations/app_translations/upload_form.py class BulkAppTranslationFormUpdater (line 23) | class BulkAppTranslationFormUpdater(BulkAppTranslationUpdater): method __init__ (line 24) | def __init__(self, app, sheet_name, unique_id=None, lang=None): method _get_xform (line 43) | def _get_xform(self): method _get_itext (line 47) | def _get_itext(self): method update (line 68) | def update(self, rows): method _update_or_create_translation_elements (line 119) | def _update_or_create_translation_elements(self): method _get_template_translation_element (line 131) | def _get_template_translation_element(self): method _create_translation_element (line 151) | def _create_translation_element(self, template, lang): method _update_default_attr_if_needed (line 157) | def _update_default_attr_if_needed(self, element, element_lang): method _populate_markdown_stats (line 168) | def _populate_markdown_stats(self, rows): method _get_label_ids_to_skip (line 183) | def _get_label_ids_to_skip(self, rows): method _get_text_node (line 197) | def _get_text_node(self, translation_node, label_id): method _add_or_remove_translations (line 204) | def _add_or_remove_translations(self, lang, row): method _get_translations_for_row (line 258) | def _get_translations_for_row(self, row, lang): method _update_translation_node (line 269) | def _update_translation_node(self, new_translation, text_node, value_n... method _looks_like_markdown (line 293) | def _looks_like_markdown(self, str): method _get_markdown_node (line 296) | def _get_markdown_node(self, text_node_): method _get_default_value_nodes (line 300) | def _get_default_value_nodes(text_node_): method _get_value_node (line 309) | def _get_value_node(self, text_node_): method _had_markdown (line 317) | def _had_markdown(self, text_node_): method _is_markdown_vetoed (line 324) | def _is_markdown_vetoed(self, text_node_): method _has_translation (line 338) | def _has_translation(self, row): method _check_for_shadow_form_error (line 344) | def _check_for_shadow_form_error(self): method escape_output_value (line 351) | def escape_output_value(cls, value): method _get_col_key (line 362) | def _get_col_key(self, translation_type, lang): FILE: corehq/apps/translations/app_translations/upload_module.py class BulkAppTranslationModuleUpdater (line 15) | class BulkAppTranslationModuleUpdater(BulkAppTranslationUpdater): method __init__ (line 16) | def __init__(self, app, sheet_name, unique_id=None, lang=None): method update (line 37) | def update(self, rows): method _update_case_search_labels (line 110) | def _update_case_search_labels(self): method _update_report_module_rows (line 172) | def _update_report_module_rows(self, rows): method _get_condensed_rows (line 214) | def _get_condensed_rows(self, rows): method _remove_description_from_case_property (line 314) | def _remove_description_from_case_property(cls, row): method _has_at_least_one_translation (line 317) | def _has_at_least_one_translation(self, row, prefix): method _update_translation (line 329) | def _update_translation(self, row, language_dict, require_translation=... method _update_id_mappings (line 339) | def _update_id_mappings(self, rows, detail, langs=None): method _update_detail (line 343) | def _update_detail(self, row, detail): method _update_details_based_on_position (line 368) | def _update_details_based_on_position(self, list_rows, short_details, ... FILE: corehq/apps/translations/app_translations/utils.py function get_bulk_app_sheet_headers (line 15) | def get_bulk_app_sheet_headers(app, single_sheet=False, lang=None, eligi... function get_modules_and_forms_row (line 77) | def get_modules_and_forms_row(row_type, sheet_name, languages, media_ima... function get_menu_row (line 100) | def get_menu_row(languages, media_image, media_audio): function get_module_sheet_name (line 104) | def get_module_sheet_name(module): function get_form_sheet_name (line 108) | def get_form_sheet_name(form): function is_form_sheet (line 116) | def is_form_sheet(identifier): function is_module_sheet (line 120) | def is_module_sheet(identifier): function is_modules_and_forms_sheet (line 124) | def is_modules_and_forms_sheet(identifier): function is_single_sheet (line 128) | def is_single_sheet(identifier): function is_single_sheet_workbook (line 132) | def is_single_sheet_workbook(workbook): function get_menu_or_form_by_sheet_name (line 142) | def get_menu_or_form_by_sheet_name(app, sheet_name): function get_menu_or_form_by_unique_id (line 149) | def get_menu_or_form_by_unique_id(app, unique_id, sheet_name): function get_module_from_sheet_name (line 164) | def get_module_from_sheet_name(app, identifier): function get_form_from_sheet_name (line 172) | def get_form_from_sheet_name(app, identifier): function get_unicode_dicts (line 185) | def get_unicode_dicts(iterable): class BulkAppTranslationUpdater (line 205) | class BulkAppTranslationUpdater(object): method __init__ (line 210) | def __init__(self, app, lang=None): method update_translation_dict (line 223) | def update_translation_dict(self, prefix, language_dict, row): method update (line 241) | def update(self, rows): FILE: corehq/apps/translations/exceptions.py class BulkAppTranslationsException (line 3) | class BulkAppTranslationsException(Exception): FILE: corehq/apps/translations/generators.py class EligibleForTransifexChecker (line 26) | class EligibleForTransifexChecker(object): method __init__ (line 27) | def __init__(self, app): method exclude_module (line 31) | def exclude_module(module): method exclude_form (line 35) | def exclude_form(form): method is_label_to_skip (line 38) | def is_label_to_skip(self, form_id, label): method get_labels_to_skip (line 42) | def get_labels_to_skip(self): class AppTranslationsGenerator (line 81) | class AppTranslationsGenerator(object): method __init__ (line 82) | def __init__(self, domain, app_id, version, key_lang, source_lang, lan... method build_id (line 120) | def build_id(self): method _translation_data (line 126) | def _translation_data(self): method _set_sheet_name_to_module_or_form_mapping (line 143) | def _set_sheet_name_to_module_or_form_mapping(self, all_module_and_for... method _generate_module_sheet_name (line 154) | def _generate_module_sheet_name(self, module_index): method _generate_form_sheet_name (line 166) | def _generate_form_sheet_name(self, module_index, form_index): method _update_sheet_name_with_unique_id (line 183) | def _update_sheet_name_with_unique_id(self, sheet_name): method _get_filename (line 204) | def _get_filename(self, sheet_name): method _get_header_index (line 218) | def _get_header_index(self, sheet_name, column_name): method filter_invalid_rows_for_form (line 224) | def filter_invalid_rows_for_form(self, rows, form_id, label_index): method _get_translation_for_sheet (line 236) | def _get_translation_for_sheet(self, sheet_name, rows): method get_translations (line 302) | def get_translations(self): method _build_translations (line 308) | def _build_translations(self): method metadata (line 328) | def metadata(self): class PoFileGenerator (line 340) | class PoFileGenerator(object): method __init__ (line 341) | def __init__(self, translations, metadata): method __enter__ (line 346) | def __enter__(self): method __exit__ (line 349) | def __exit__(self, *exc_info): method generate_translation_files (line 352) | def generate_translation_files(self): method _cleanup (line 365) | def _cleanup(self): function _translations_to_po_entries (line 372) | def _translations_to_po_entries(translations): FILE: corehq/apps/translations/management/commands/translate_po_files.py function retry_with_exponential_backoff (line 19) | def retry_with_exponential_backoff( function langcode_to_langname_map (line 65) | def langcode_to_langname_map(): class LLMTranslator (line 73) | class LLMTranslator(abc.ABC): method __init__ (line 79) | def __init__(self, api_key, model, lang, translation_format, backup_mo... method base_prompt (line 94) | def base_prompt(self): method input_format_prompt (line 101) | def input_format_prompt(self): method output_format_prompt (line 104) | def output_format_prompt(self): method supported_models (line 108) | def supported_models(self): method translate (line 111) | def translate(self, input_data): method _call_llm (line 123) | def _call_llm(self, system_prompt, user_message): method _call_llm_http (line 128) | def _call_llm_http(self, system_prompt, user_message): class TranslationFormat (line 133) | class TranslationFormat(abc.ABC): method load_input (line 142) | def load_input(self, input_source=None): method format_input (line 146) | def format_input(self, input_data): method parse_output (line 150) | def parse_output(self, output_data): method save_output (line 154) | def save_output(self, output_data, output_path): method format_input_description (line 158) | def format_input_description(self): method format_output_description (line 162) | def format_output_description(self): class OpenaiTranslator (line 166) | class OpenaiTranslator(LLMTranslator): method supported_models (line 168) | def supported_models(self): method __init__ (line 171) | def __init__(self, api_key, model, lang, translation_format, backup_mo... method _call_llm (line 184) | def _call_llm(self, system_prompt, user_message): method _call_llm_http (line 210) | def _call_llm_http(self, system_prompt, user_message): class PoTranslationFormat (line 242) | class PoTranslationFormat(TranslationFormat): method __init__ (line 248) | def __init__(self, file_path): method load_input (line 252) | def load_input(self, input_source=None): method all_message_objects (line 264) | def all_message_objects(self): method untranslated_messages (line 272) | def untranslated_messages(self): method untranslated_messages_plural (line 276) | def untranslated_messages_plural(self): method _build_translation_obj_map (line 279) | def _build_translation_obj_map(self, translations): method format_input (line 291) | def format_input(self, msg_id_batch): method create_batches (line 297) | def create_batches(self, input_data=None, batch_size=10): method parse_output (line 315) | def parse_output(self, output_data): method is_valid_msgstr (line 334) | def is_valid_msgstr(msgid, msgstr): method fill_translations (line 415) | def fill_translations(self, llm_output): method save_output (line 423) | def save_output(self): method format_input_description (line 429) | def format_input_description(self): method format_output_description (line 439) | def format_output_description(self): method check_and_remove_errored_messages (line 443) | def check_and_remove_errored_messages(self, lang_path): method _run_msgfmt (line 456) | def _run_msgfmt(self, lang_path): method _extract_errored_msgstr_ids (line 475) | def _extract_errored_msgstr_ids(self, error_output): method _remove_errored_translations (line 491) | def _remove_errored_translations(self, line_num_error_map): class Command (line 548) | class Command(BaseCommand): method add_arguments (line 551) | def add_arguments(self, parser): method handle (line 589) | def handle(self, *args, **options): method _translate_language (line 628) | def _translate_language(self, lang, model, api_key, batch_size, parall... FILE: corehq/apps/translations/migrations/0001_initial.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/translations/migrations/0002_transifexblacklist.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/translations/migrations/0003_auto_20190318_1850.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/translations/migrations/0004_auto_20190318_1905.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/translations/migrations/0005_auto_20190405_1747.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/translations/migrations/0006_add_smstranslations.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/translations/migrations/0007_populate_smstranslations.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/translations/migrations/0008_remove_couch_id.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/translations/migrations/0009_auto_20200924_1753.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/translations/migrations/0010_transifex_organization_api_token_encryption.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/translations/migrations/0011_delete_transifexblacklist_and_more.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/translations/models.py class SMSTranslations (line 6) | class SMSTranslations(models.Model): method default_lang (line 12) | def default_lang(self): method set_translations (line 15) | def set_translations(self, lang, translations): class Translation (line 19) | class Translation(object): method get_translations (line 22) | def get_translations(cls, lang, key=None, one=False): FILE: corehq/apps/translations/tests/test_bulk_app_translation.py class BulkAppTranslationTestBase (line 159) | class BulkAppTranslationTestBase(SimpleTestCase, TestXmlMixin): method upload_raw_excel_translations (line 162) | def upload_raw_excel_translations(self, app, excel_headers, excel_data... class BulkAppTranslationUploadErrorTest (line 199) | class BulkAppTranslationUploadErrorTest(BulkAppTranslationTestBase): method setUp (line 200) | def setUp(self): method test_sheet_errors (line 253) | def test_sheet_errors(self): class BulkAppTranslationTestBaseWithApp (line 276) | class BulkAppTranslationTestBaseWithApp(BulkAppTranslationTestBase): method setUp (line 278) | def setUp(self): method upload_raw_excel_translations (line 285) | def upload_raw_excel_translations(self, excel_headers, excel_data, lan... method assert_question_label (line 289) | def assert_question_label(self, text, module_id, form_id, language, qu... method assert_case_property_label (line 311) | def assert_case_property_label(self, text, field, module_id, short_or_... method assert_module_name (line 317) | def assert_module_name(self, module_id, language, name): class BulkAppTranslationBasicTest (line 322) | class BulkAppTranslationBasicTest(BulkAppTranslationTestBaseWithApp): method test_set_up (line 602) | def test_set_up(self): method test_no_change_upload_multi_sheet (line 605) | def test_no_change_upload_multi_sheet(self): method test_no_change_upload_single_sheet (line 614) | def test_no_change_upload_single_sheet(self): method _shared_test_initial_set_up (line 624) | def _shared_test_initial_set_up(self): method _test_change_upload (line 628) | def _test_change_upload(self, langs): method test_change_upload_multi_sheet (line 709) | def test_change_upload_multi_sheet(self): method test_change_upload_single_sheet (line 713) | def test_change_upload_single_sheet(self): method test_missing_itext (line 718) | def test_missing_itext(self): method test_bad_column_name (line 727) | def test_bad_column_name(self): method test_remove_description_from_case_property (line 759) | def test_remove_description_from_case_property(self): method test_remove_description_from_case_property_multiple_parens (line 764) | def test_remove_description_from_case_property_multiple_parens(self): method test_empty_translations (line 769) | def test_empty_translations(self): method test_form_submit_label_on_upload (line 805) | def test_form_submit_label_on_upload(self): method test_submit_notification_label_on_upload (line 814) | def test_submit_notification_label_on_upload(self): method test_case_search_labels_on_upload (line 823) | def test_case_search_labels_on_upload(self): method test_translation_elements_are_up_to_date_with_app_langs (line 838) | def test_translation_elements_are_up_to_date_with_app_langs(self): class BulkAppTranslationPartialsTest (line 853) | class BulkAppTranslationPartialsTest(BulkAppTranslationTestBase): method setUp (line 879) | def setUp(self): class MismatchedItextReferenceTest (line 896) | class MismatchedItextReferenceTest(BulkAppTranslationTestBaseWithApp): method test_unchanged_upload (line 905) | def test_unchanged_upload(self): class MovedModuleTest (line 934) | class MovedModuleTest(BulkAppTranslationTestBaseWithApp): method test_moved_module (line 943) | def test_moved_module(self): class MovedFormTest (line 948) | class MovedFormTest(BulkAppTranslationTestBaseWithApp): method test_moved_form (line 955) | def test_moved_form(self): class BulkAppTranslationFormTest (line 1048) | class BulkAppTranslationFormTest(BulkAppTranslationTestBaseWithApp): method test_removing_form_translations (line 1052) | def test_removing_form_translations(self): class BulkAppTranslationDownloadTest (line 1080) | class BulkAppTranslationDownloadTest(SimpleTestCase, TestXmlMixin): method setUpClass (line 1089) | def setUpClass(cls): method test_sheet_names (line 1103) | def test_sheet_names(self): method test_sheet_headers (line 1107) | def test_sheet_headers(self): method test_module_case_list_form_rows (line 1128) | def test_module_case_list_form_rows(self): method test_module_case_list_menu_item_rows (line 1133) | def test_module_case_list_menu_item_rows(self): method test_module_search_labels_rows (line 1138) | def test_module_search_labels_rows(self): method test_module_case_search_rows (line 1145) | def test_module_case_search_rows(self): method test_module_detail_rows (line 1152) | def test_module_detail_rows(self): method test_form_rows (line 1160) | def test_form_rows(self): method test_bulk_app_sheet_rows (line 1182) | def test_bulk_app_sheet_rows(self): method test_bulk_app_sheet_skipped_label (line 1197) | def test_bulk_app_sheet_skipped_label(self): method test_bulk_app_single_sheet_rows (line 1210) | def test_bulk_app_single_sheet_rows(self): method test_bulk_app_single_sheet_skipped_label (line 1291) | def test_bulk_app_single_sheet_skipped_label(self): class RenameLangTest (line 1305) | class RenameLangTest(SimpleTestCase): method test_rename_lang_empty_form (line 1307) | def test_rename_lang_empty_form(self): class AggregateMarkdownNodeTests (line 1328) | class AggregateMarkdownNodeTests(SimpleTestCase, TestXmlMixin): method get_worksheet (line 1377) | def get_worksheet(self, title): method setUp (line 1384) | def setUp(self): method test_markdown_node (line 1393) | def test_markdown_node(self): class ReportModuleTest (line 1409) | class ReportModuleTest(BulkAppTranslationTestBase): method setUp (line 1415) | def setUp(self): method test_download (line 1437) | def test_download(self): method test_upload (line 1451) | def test_upload(self): method test_upload_unexpected_reports (line 1470) | def test_upload_unexpected_reports(self): method test_upload_unexpected_rows (line 1484) | def test_upload_unexpected_rows(self): FILE: corehq/apps/translations/tests/test_transifex_blacklisting.py class TestTransifexBlacklist (line 10) | class TestTransifexBlacklist(TestCase, TestXmlMixin): method setUpClass (line 14) | def setUpClass(cls): method test_allowed_label (line 34) | def test_allowed_label(self): method test_allowed_validation_message (line 37) | def test_allowed_validation_message(self): method test_blacklisted_validation_message (line 41) | def test_blacklisted_validation_message(self): method test_allowed_help_message (line 45) | def test_allowed_help_message(self): method test_allowed_hint_message (line 48) | def test_allowed_hint_message(self): method test_blacklisted_choices (line 51) | def test_blacklisted_choices(self): method test_choice_with_duplicate_label (line 57) | def test_choice_with_duplicate_label(self): FILE: corehq/apps/translations/tests/test_translate_po_files.py class MockTranslationFormat (line 20) | class MockTranslationFormat(TranslationFormat): method load_input (line 21) | def load_input(self, input_source=None): method format_input (line 24) | def format_input(self, input_data): method parse_output (line 27) | def parse_output(self, output_data): method save_output (line 30) | def save_output(self, output_data, output_path): method format_input_description (line 33) | def format_input_description(self): method format_output_description (line 36) | def format_output_description(self): class TestTranslator (line 41) | class TestTranslator(LLMTranslator): method supported_models (line 43) | def supported_models(self): method _call_llm (line 46) | def _call_llm(self, system_prompt, user_message): method _call_llm_http (line 49) | def _call_llm_http(self, system_prompt, user_message): function test_llm_translator_base_prompt (line 53) | def test_llm_translator_base_prompt(): function test_llm_translator_base_prompt_with_unsupported_lang (line 71) | def test_llm_translator_base_prompt_with_unsupported_lang(): function test_openai_translator_supported_models (line 89) | def test_openai_translator_supported_models(): function test_openai_translator_call_llm (line 109) | def test_openai_translator_call_llm(): function test_openai_translator_call_llm_http (line 138) | def test_openai_translator_call_llm_http(mock_post): function test_openai_translator_client_fallback_to_http (line 160) | def test_openai_translator_client_fallback_to_http(mock_post): class TestPoTranslationFormat (line 184) | class TestPoTranslationFormat: method test_init (line 186) | def test_init(self): method test_untranslated_messages (line 191) | def test_untranslated_messages(self): method test_untranslated_messages_includes_fuzzy (line 202) | def test_untranslated_messages_includes_fuzzy(self): method test_untranslated_messages_plural (line 218) | def test_untranslated_messages_plural(self): method test_build_translation_obj_map (line 229) | def test_build_translation_obj_map(self): method test_fuzzy_flag_removed_after_translation (line 239) | def test_fuzzy_flag_removed_after_translation(self): method test_format_input (line 257) | def test_format_input(self): method test_create_batches (line 267) | def test_create_batches(self): method test_parse_output_valid_json (line 280) | def test_parse_output_valid_json(self): method test_parse_output_invalid_json (line 291) | def test_parse_output_invalid_json(self): method test_fill_translations (line 299) | def test_fill_translations(self): method test_save_output (line 312) | def test_save_output(self, mock_pofile): method test_format_input_description (line 321) | def test_format_input_description(self): method test_format_output_description (line 329) | def test_format_output_description(self): method test_is_valid_msgstr (line 355) | def test_is_valid_msgstr(self, msgid, msgstr): method test_is_valid_msgstr_invalid (line 368) | def test_is_valid_msgstr_invalid(self, msgid, msgstr): function test_end_to_end_flow (line 373) | def test_end_to_end_flow(mock_polib): function test_extract_errored_msgstr_ids (line 402) | def test_extract_errored_msgstr_ids(): function test_run_msgfmt_returns_stderr (line 420) | def test_run_msgfmt_returns_stderr(): function test_remove_errored_translations (line 438) | def test_remove_errored_translations(): function test_fuzzy_handling_with_real_po_content (line 475) | def test_fuzzy_handling_with_real_po_content(): FILE: corehq/apps/translations/tests/test_updating_app_from_trans_dict.py class TestBulkUiTranslation (line 44) | class TestBulkUiTranslation(SimpleTestCase): method setUp (line 46) | def setUp(self): method _build_translation_download_file (line 57) | def _build_translation_download_file(self, headers, data=None): method test_not_upload_all_properties (line 70) | def test_not_upload_all_properties(self): method test_not_upload_all_languages (line 81) | def test_not_upload_all_languages(self): method test_partial_property_and_language (line 94) | def test_partial_property_and_language(self): FILE: corehq/apps/translations/tests/utils.py class custom_translations (line 9) | class custom_translations(ContextDecorator): method __init__ (line 19) | def __init__(self, translation_mapping): method __enter__ (line 22) | def __enter__(self): method __exit__ (line 32) | def __exit__(self, exc_type, exc_value, traceback): FILE: corehq/apps/translations/utils.py function get_file_content_from_workbook (line 6) | def get_file_content_from_workbook(wb): function update_app_translations_from_trans_dict (line 15) | def update_app_translations_from_trans_dict(app, new_trans): FILE: corehq/apps/translations/validator.py class UploadedTranslationsValidator (line 38) | class UploadedTranslationsValidator(object): method __init__ (line 43) | def __init__(self, app, uploaded_workbook, lang_to_compare, lang_prefi... method _setup (line 55) | def _setup(self): method _validate_sheet (line 69) | def _validate_sheet(self): method _generate_current_headers_and_rows (line 75) | def _generate_current_headers_and_rows(self): method _set_current_sheet_name_to_module_or_form_mapping (line 104) | def _set_current_sheet_name_to_module_or_form_mapping(self): method _map_ids_to_headers (line 116) | def _map_ids_to_headers(self): method _map_ids_to_translations (line 123) | def _map_ids_to_translations(self): method _get_current_header_index (line 131) | def _get_current_header_index(self, module_or_form_id, header): method _filter_rows (line 140) | def _filter_rows(self, for_type, rows, module_or_form_id): method _compare_sheet (line 153) | def _compare_sheet(self, module_or_form_id, uploaded_rows, for_type): method _missing_module_or_form_diff (line 188) | def _missing_module_or_form_diff(self, for_type): method _generate_diff (line 192) | def _generate_diff(parsed_current_rows, parsed_uploaded_rows): method compare (line 200) | def compare(self): method _compare_single_sheet (line 207) | def _compare_single_sheet(self): method _processed_single_sheet_expected_rows (line 217) | def _processed_single_sheet_expected_rows(self, expected_rows, columns... method _processed_single_sheet_uploaded_rows (line 230) | def _processed_single_sheet_uploaded_rows(uploaded_rows, columns_to_co... method _compare_multiple_sheets (line 236) | def _compare_multiple_sheets(self): method _parse_uploaded_worksheet (line 257) | def _parse_uploaded_worksheet(self): method _generate_uploaded_headers (line 265) | def _generate_uploaded_headers(self): method _set_uploaded_sheet_name_to_module_or_form_mapping (line 269) | def _set_uploaded_sheet_name_to_module_or_form_mapping(self, all_modul... FILE: corehq/apps/translations/views.py function upload_bulk_ui_translations (line 46) | def upload_bulk_ui_translations(request, domain, app_id): function download_bulk_ui_translations (line 86) | def download_bulk_ui_translations(request, domain, app_id): function download_bulk_app_translations (line 96) | def download_bulk_app_translations(request, domain, app_id): function upload_bulk_app_translations (line 121) | def upload_bulk_app_translations(request, domain, app_id): function _add_messages_to_request (line 153) | def _add_messages_to_request(request, msgs): FILE: corehq/apps/user_importer/admin.py class UserUploadAdmin (line 11) | class UserUploadAdmin(admin.ModelAdmin): method download_file (line 18) | def download_file(self, request, queryset): FILE: corehq/apps/user_importer/exceptions.py class UserUploadError (line 1) | class UserUploadError(Exception): FILE: corehq/apps/user_importer/helpers.py function spec_value_to_boolean_or_none (line 13) | def spec_value_to_boolean_or_none(user_spec_dict, key): class UserChangeLogger (line 23) | class UserChangeLogger(object): method __init__ (line 31) | def __init__(self, upload_domain, user_domain, user, is_new_user, chan... method add_changes (line 52) | def add_changes(self, changes, skip_confirmation=False): method add_change_message (line 65) | def add_change_message(self, message): method _update_change_messages (line 76) | def _update_change_messages(self, change_messages): method add_info (line 82) | def add_info(self, change_message): method save (line 89) | def save(self): method save_only_group_changes (line 106) | def save_only_group_changes(self, group_change_message): class BaseUserImporter (line 120) | class BaseUserImporter(object): method __init__ (line 126) | def __init__(self, upload_domain, user_domain, user, upload_user, is_n... method update_role (line 146) | def update_role(self, role_qualified_id): method update_user_data (line 154) | def update_user_data(self, data, uncategorized_data, profile_name, pro... method save_log (line 180) | def save_log(self): class CommCareUserImporter (line 188) | class CommCareUserImporter(BaseUserImporter): method update_phone_numbers (line 190) | def update_phone_numbers(self, phone_numbers): method update_name (line 204) | def update_name(self, name): method update_language (line 208) | def update_language(self, language): method update_email (line 212) | def update_email(self, email): method update_status (line 216) | def update_status(self, is_active): method update_locations (line 220) | def update_locations(self, location_codes, domain_info): method update_user_groups (line 257) | def update_user_groups(self, domain_info, group_names): method update_deactivate_after (line 278) | def update_deactivate_after(self, deactivate_after): method _log_phone_number_changes (line 287) | def _log_phone_number_changes(self, old_phone_numbers, new_phone_numbe... function _fmt_phone (line 304) | def _fmt_phone(phone_number): class WebUserImporter (line 310) | class WebUserImporter(BaseUserImporter): method add_to_domain (line 311) | def add_to_domain(self, role_qualified_id, primary_location_id, assign... method _log_primary_location_info (line 327) | def _log_primary_location_info(self): method update_primary_location (line 331) | def update_primary_location(self, location_id): method update_locations (line 343) | def update_locations(self, location_codes, membership, domain_info): function get_user_primary_location_id (line 375) | def get_user_primary_location_id(user, domain): function get_user_primary_location_name (line 381) | def get_user_primary_location_name(user, domain): function find_differences_in_list (line 387) | def find_differences_in_list(target: list, source: list): FILE: corehq/apps/user_importer/importer.py function check_headers (line 70) | def check_headers(user_specs, domain, upload_couch_user, is_web_upload=F... class GroupMemoizer (line 117) | class GroupMemoizer(object): method __init__ (line 124) | def __init__(self, domain): method load_all (line 133) | def load_all(self): method add_group (line 139) | def add_group(self, new_group): method by_name (line 152) | def by_name(self, group_name): method by_user_id (line 161) | def by_user_id(self, user_id): method get (line 169) | def get(self, group_id): method create (line 177) | def create(self, domain, name): method rename_group (line 182) | def rename_group(self, group, name): method group_updated (line 192) | def group_updated(self, group_id): method save_updated (line 195) | def save_updated(self): method save_all (line 200) | def save_all(self): class BulkCacheBase (line 204) | class BulkCacheBase(object): method __init__ (line 206) | def __init__(self, domain): method get (line 210) | def get(self, key): method lookup (line 217) | def lookup(self, key): class SiteCodeToSupplyPointCache (line 222) | class SiteCodeToSupplyPointCache(BulkCacheBase): method lookup (line 228) | def lookup(self, site_code): class SiteCodeToLocationCache (line 236) | class SiteCodeToLocationCache(BulkCacheBase): method __init__ (line 238) | def __init__(self, domain): method lookup (line 245) | def lookup(self, site_code): function create_or_update_groups (line 256) | def create_or_update_groups(domain, group_specs): function get_location_from_site_code (line 304) | def get_location_from_site_code(site_code, location_cache): function create_or_update_web_user_invite (line 324) | def create_or_update_web_user_invite(email, domain, role_qualified_id, u... function find_location_id (line 389) | def find_location_id(location_codes, location_cache): function check_modified_user_loc (line 397) | def check_modified_user_loc(location_ids, loc_id, assigned_loc_ids): function format_location_codes (line 403) | def format_location_codes(location_codes): function clean_phone_numbers (line 412) | def clean_phone_numbers(phone_numbers): function create_or_update_commcare_users_and_groups (line 421) | def create_or_update_commcare_users_and_groups(upload_domain, user_specs... class BaseUserRow (line 443) | class BaseUserRow: method __init__ (line 444) | def __init__(self, importer, row): method validate_row (line 456) | def validate_row(self): class CCUserRow (line 461) | class CCUserRow(BaseUserRow): method process (line 463) | def process(self): method _parse_username (line 526) | def _parse_username(self): method _parse_password (line 538) | def _parse_password(self): method _process_column_values (line 549) | def _process_column_values(self): method user (line 580) | def user(self): method import_helper (line 590) | def import_helper(self): method _process_simple_fields (line 599) | def _process_simple_fields(self): method _process_web_user (line 659) | def _process_web_user(self): class WebUserRow (line 729) | class WebUserRow(BaseUserRow): method _process_column_values (line 731) | def _process_column_values(self): method process (line 746) | def process(self): method process_row (line 754) | def process_row(self): method process_existing_user (line 761) | def process_existing_user(self, user): method _modify_existing_user_in_domain (line 807) | def _modify_existing_user_in_domain(self, membership, role_qualified_id, method process_new_user (line 849) | def process_new_user(self): method check_invitation_status (line 892) | def check_invitation_status(self, domain, username): class WebImporter (line 906) | class WebImporter: method __init__ (line 912) | def __init__(self, upload_domain, user_specs, upload_user, upload_reco... method domain_info (line 924) | def domain_info(self, domain): method run (line 927) | def run(self): class CCImporter (line 946) | class CCImporter(WebImporter): method __init__ (line 952) | def __init__(self, *args, group_memoizer=None, **kwargs): method update_deactivate_after_date (line 959) | def update_deactivate_after_date(self): class DomainInfo (line 965) | class DomainInfo: method __init__ (line 967) | def __init__(self, importer, domain, is_web_upload, upload_user=None): method domain_obj (line 975) | def domain_obj(self): method group_memoizer (line 983) | def group_memoizer(self): method roles_by_name (line 993) | def roles_by_name(self): method can_assign_locations (line 1003) | def can_assign_locations(self): method location_cache (line 1008) | def location_cache(self): method profiles_by_name (line 1016) | def profiles_by_name(self): method validators (line 1024) | def validators(self): function _get_or_create_commcare_user (line 1050) | def _get_or_create_commcare_user(domain, user_id, username, is_account_c... function create_or_update_web_users (line 1075) | def create_or_update_web_users(upload_domain, user_specs, upload_user, u... function check_user_role (line 1082) | def check_user_role(username, role): function check_can_upload_web_users (line 1089) | def check_can_upload_web_users(domain, upload_user): function check_changing_username (line 1096) | def check_changing_username(user, username): function remove_invited_web_user (line 1103) | def remove_invited_web_user(domain, username, upload_user): function remove_web_user_from_domain (line 1112) | def remove_web_user_from_domain(domain, user, username, upload_user, use... FILE: corehq/apps/user_importer/migrations/0001_initial.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/user_importer/models.py class UserUploadRecord (line 7) | class UserUploadRecord(models.Model): method get_file (line 14) | def get_file(self): FILE: corehq/apps/user_importer/tasks.py function import_users_and_groups (line 24) | def import_users_and_groups(self, domain, user_specs, group_specs, uploa... function parallel_import_task (line 31) | def parallel_import_task(self, domain, user_specs, group_specs, upload_u... function parallel_user_import (line 38) | def parallel_user_import(domain, user_specs, upload_user_id): function import_users (line 91) | def import_users(domain, user_specs, group_specs, upload_user_id, upload... FILE: corehq/apps/user_importer/tests/test_importer.py class TestUserDataMixin (line 62) | class TestUserDataMixin: method setup_userdata (line 65) | def setup_userdata(cls): method tear_down_user_data (line 94) | def tear_down_user_data(cls): method setup_locations (line 97) | def setup_locations(self): method assert_user_data_equals (line 101) | def assert_user_data_equals(self, expected): method assert_user_data_contains (line 104) | def assert_user_data_contains(self, expected): method assert_user_data_excludes (line 114) | def assert_user_data_excludes(self, excluded_keys): method _test_user_data (line 123) | def _test_user_data(self, is_web_upload=False): method _test_user_data_profile (line 168) | def _test_user_data_profile(self, is_web_upload=False): method _test_user_data_profile_redundant (line 188) | def _test_user_data_profile_redundant(self, is_web_upload=False): method _test_user_data_profile_blank (line 201) | def _test_user_data_profile_blank(self, is_web_upload=False): method _test_required_field_optional_if_profile_set (line 212) | def _test_required_field_optional_if_profile_set(self, is_web_upload=F... method _test_user_data_profile_conflict (line 230) | def _test_user_data_profile_conflict(self, is_web_upload=False): method _test_profile_cant_overwrite_existing_data (line 241) | def _test_profile_cant_overwrite_existing_data(self, is_web_upload=Fal... method _test_user_data_profile_unknown (line 272) | def _test_user_data_profile_unknown(self, is_web_upload=False): method _test_user_data_profile_removal (line 283) | def _test_user_data_profile_removal(self, is_web_upload=False): method _test_uncategorized_data (line 301) | def _test_uncategorized_data(self, is_web_upload=False): class TestMobileUserBulkUpload (line 325) | class TestMobileUserBulkUpload(TestCase, DomainSubscriptionMixin, TestUs... method setUpClass (line 327) | def setUpClass(cls): method setUp (line 371) | def setUp(self): method tearDownClass (line 377) | def tearDownClass(cls): method tearDown (line 387) | def tearDown(self): method username (line 394) | def username(self): method user (line 398) | def user(self): method _get_spec (line 401) | def _get_spec(self, delete_keys=None, **kwargs): method assert_user_data_item (line 418) | def assert_user_data_item(self, key, expected): method test_upload_with_missing_user_id (line 421) | def test_upload_with_missing_user_id(self): method test_location_not_list (line 434) | def test_location_not_list(self): method test_location_unknown_site_code (line 463) | def test_location_unknown_site_code(self): method test_location_add (line 477) | def test_location_add(self): method test_location_remove (line 505) | def test_location_remove(self): method test_primary_location_replace (line 555) | def test_primary_location_replace(self): method test_location_replace (line 606) | def test_location_replace(self): method get_emw_user (line 652) | def get_emw_user(self): method test_deactivate_after_updates (line 657) | def test_deactivate_after_updates(self): method test_numeric_user_name (line 734) | def test_numeric_user_name(self): method test_empty_user_name (line 748) | def test_empty_user_name(self): method test_user_data (line 763) | def test_user_data(self): method test_user_data_profile (line 766) | def test_user_data_profile(self): method test_user_data_profile_redundant (line 769) | def test_user_data_profile_redundant(self): method test_user_data_profile_blank (line 772) | def test_user_data_profile_blank(self): method test_required_field_optional_if_profile_set (line 775) | def test_required_field_optional_if_profile_set(self): method test_user_data_profile_conflict (line 778) | def test_user_data_profile_conflict(self): method test_profile_cant_overwrite_existing_data (line 781) | def test_profile_cant_overwrite_existing_data(self): method test_user_data_profile_unknown (line 784) | def test_user_data_profile_unknown(self): method test_user_data_profile_removal (line 787) | def test_user_data_profile_removal(self): method test_uncategorized_data (line 792) | def test_uncategorized_data(self): method test_upper_case_email (line 795) | def test_upper_case_email(self): method test_set_role (line 810) | def test_set_role(self): method test_tracking_new_commcare_user (line 821) | def test_tracking_new_commcare_user(self): method test_tracking_update_to_existing_commcare_user (line 853) | def test_tracking_update_to_existing_commcare_user(self): method test_blank_is_active (line 893) | def test_blank_is_active(self): method test_password_is_not_string (line 904) | def test_password_is_not_string(self): method test_update_user_no_username (line 915) | def test_update_user_no_username(self): method test_update_user_numeric_username (line 935) | def test_update_user_numeric_username(self): method test_upload_with_unconfirmed_account (line 948) | def test_upload_with_unconfirmed_account(self): method test_upload_with_unconfirmed_account_send_email (line 963) | def test_upload_with_unconfirmed_account_send_email(self, mock_account... method test_upload_invite_web_user (line 994) | def test_upload_invite_web_user(self, mock_send_activation_email): method test_upload_add_web_user (line 1018) | def test_upload_add_web_user(self, mock_invitation_class): method test_upload_edit_web_user (line 1050) | def test_upload_edit_web_user(self): method test_remove_web_user (line 1072) | def test_remove_web_user(self): method test_multi_domain (line 1094) | def test_multi_domain(self): method test_update_pending_user_role (line 1114) | def test_update_pending_user_role(self, mock_send_activation_email): method test_ensure_user_history_on_only_userdata_update (line 1168) | def test_ensure_user_history_on_only_userdata_update(self): method test_upload_with_phone_number (line 1185) | def test_upload_with_phone_number(self): method test_upload_with_multiple_phone_numbers (line 1202) | def test_upload_with_multiple_phone_numbers(self): method test_upload_with_multiple_phone_numbers_and_some_blank (line 1246) | def test_upload_with_multiple_phone_numbers_and_some_blank(self): method test_upload_with_multiple_phone_numbers_with_duplicates (line 1283) | def test_upload_with_multiple_phone_numbers_with_duplicates(self): method test_upload_with_badly_formatted_phone_numbers (line 1319) | def test_upload_with_badly_formatted_phone_numbers(self): method test_upload_with_no_phone_numbers (line 1337) | def test_upload_with_no_phone_numbers(self): method test_upload_with_no_phone_number_in_row (line 1366) | def test_upload_with_no_phone_number_in_row(self): method test_upload_with_group (line 1392) | def test_upload_with_group(self): method test_upload_with_no_group (line 1417) | def test_upload_with_no_group(self): method test_upload_new_group (line 1443) | def test_upload_new_group(self): method test_upload_group_changes (line 1455) | def test_upload_group_changes(self): method test_upload_new_group_and_assign_to_user (line 1470) | def test_upload_new_group_and_assign_to_user(self): method test_upload_new_group_and_assign_to_new_user (line 1486) | def test_upload_new_group_and_assign_to_new_user(self): method test_create_or_update_commcare_users_and_groups_with_bad_username (line 1500) | def test_create_or_update_commcare_users_and_groups_with_bad_username(... class TestUserBulkUploadStrongPassword (line 1513) | class TestUserBulkUploadStrongPassword(TestCase, DomainSubscriptionMixin): method setUpClass (line 1515) | def setUpClass(cls): method tearDownClass (line 1532) | def tearDownClass(cls): method setUp (line 1538) | def setUp(self): method test_duplicate_password (line 1552) | def test_duplicate_password(self): method test_weak_password (line 1576) | def test_weak_password(self): class TestUserUploadRecord (line 1592) | class TestUserUploadRecord(TestCase): method setUpClass (line 1595) | def setUpClass(cls): method tearDownClass (line 1609) | def tearDownClass(cls): method tearDown (line 1614) | def tearDown(self): method test_user_upload_record (line 1617) | def test_user_upload_record(self): class TestWebUserBulkUpload (line 1639) | class TestWebUserBulkUpload(TestCase, DomainSubscriptionMixin, TestUserD... method setUpClass (line 1641) | def setUpClass(cls): method tearDownClass (line 1663) | def tearDownClass(cls): method tearDown (line 1671) | def tearDown(self): method setUp (line 1675) | def setUp(self): method setup_users (line 1682) | def setup_users(self): method user (line 1690) | def user(self): method user_invite (line 1694) | def user_invite(self): method _get_spec (line 1697) | def _get_spec(self, delete_keys=None, **kwargs): method _get_invited_spec (line 1712) | def _get_invited_spec(self, delete_keys=None, **kwargs): method test_upload_with_missing_role (line 1725) | def test_upload_with_missing_role(self): method test_upload_existing_web_user (line 1736) | def test_upload_existing_web_user(self): method test_web_user_user_name_change (line 1762) | def test_web_user_user_name_change(self): method test_upper_case_email (line 1779) | def test_upper_case_email(self): method test_user_data (line 1795) | def test_user_data(self): method test_user_data_profile (line 1798) | def test_user_data_profile(self): method test_user_data_profile_redundant (line 1801) | def test_user_data_profile_redundant(self): method test_user_data_profile_blank (line 1804) | def test_user_data_profile_blank(self): method test_required_field_optional_if_profile_set (line 1807) | def test_required_field_optional_if_profile_set(self): method test_user_data_profile_conflict (line 1810) | def test_user_data_profile_conflict(self): method test_profile_cant_overwrite_existing_data (line 1813) | def test_profile_cant_overwrite_existing_data(self): method test_user_data_profile_unknown (line 1816) | def test_user_data_profile_unknown(self): method test_user_data_profile_removal (line 1819) | def test_user_data_profile_removal(self): method test_uncategorized_data (line 1822) | def test_uncategorized_data(self): method test_user_data_ignores_location_fields (line 1825) | def test_user_data_ignores_location_fields(self): method test_set_role (line 1859) | def test_set_role(self): method test_update_role_current_user (line 1877) | def test_update_role_current_user(self): method test_update_role_invited_user (line 1897) | def test_update_role_invited_user(self): method test_remove_user (line 1918) | def test_remove_user(self): method test_remove_invited_user (line 1939) | def test_remove_invited_user(self): method test_remove_uploading_user (line 1960) | def test_remove_uploading_user(self): method test_upload_invite (line 1973) | def test_upload_invite(self, mock_send_activation_email): method test_multi_domain (line 1984) | def test_multi_domain(self): method test_web_user_location_add (line 2000) | def test_web_user_location_add(self): method test_web_user_location_remove (line 2023) | def test_web_user_location_remove(self): method test_invite_location_add_and_remove (line 2058) | def test_invite_location_add_and_remove(self): method test_invite_location_column_missing (line 2122) | def test_invite_location_column_missing(self): method setup_locations (line 2158) | def setup_locations(self): method _setup_tableau_users (line 2162) | def _setup_tableau_users(self): method _mock_create_user_mock_responses (line 2179) | def _mock_create_user_mock_responses(self, username): method _mock_update_user_responses (line 2185) | def _mock_update_user_responses(self, username): method test_tableau_users (line 2199) | def test_tableau_users(self, mock_request): class TestUserChangeLogger (line 2252) | class TestUserChangeLogger(SimpleTestCase): method setUpClass (line 2254) | def setUpClass(cls): method test_add_change_message_duplicate_slug_entry (line 2263) | def test_add_change_message_duplicate_slug_entry(self): method test_add_info_duplicate_slug_entry (line 2298) | def test_add_info_duplicate_slug_entry(self): FILE: corehq/apps/user_importer/tests/test_validators.py function test_validators (line 174) | def test_validators(specs, validator, errors): function _test_duplicates (line 184) | def _test_duplicates(specs, duplicates, check=None): function test_duplicates (line 201) | def test_duplicates(validator, spec, duplicates): function test_duplicates_with_check (line 221) | def test_duplicates_with_check(validator, spec, duplicates): function test_existing_users (line 229) | def test_existing_users(): class TestLocationValidator (line 244) | class TestLocationValidator(LocationHierarchyTestCase): method setUpClass (line 261) | def setUpClass(cls): method test_success (line 272) | def test_success(self): method test_cant_edit_web_user (line 280) | def test_cant_edit_web_user(self): method test_cant_edit_commcare_user (line 292) | def test_cant_edit_commcare_user(self): method test_cant_edit_invitation (line 306) | def test_cant_edit_invitation(self): method test_cant_add_location (line 324) | def test_cant_add_location(self): method test_cant_remove_location (line 333) | def test_cant_remove_location(self): method test_cant_remove_all_locations (line 342) | def test_cant_remove_all_locations(self): method test_location_not_has_users (line 352) | def test_location_not_has_users(self): method tearDownClass (line 368) | def tearDownClass(cls): class TestProfileValidator (line 373) | class TestProfileValidator(TestCase): method setUpClass (line 377) | def setUpClass(cls): method test_edit_all_profiles_no_issues (line 439) | def test_edit_all_profiles_no_issues(self): method test_change_profile_no_issue (line 450) | def test_change_profile_no_issue(self): method test_invalid_profile_name (line 457) | def test_invalid_profile_name(self): method test_cant_assign_profile_without_the_permission (line 464) | def test_cant_assign_profile_without_the_permission(self): method test_removing_and_assigning_profile (line 471) | def test_removing_and_assigning_profile(self): method test_no_error_when_unaccessible_profile_didnt_change (line 480) | def test_no_error_when_unaccessible_profile_didnt_change(self): method test_cant_edit_profile_no_access (line 486) | def test_cant_edit_profile_no_access(self): method test_validation_error_when_profile_required (line 492) | def test_validation_error_when_profile_required(self): method test_no_validation_error_when_profile_required_and_supplied (line 503) | def test_no_validation_error_when_profile_required_and_supplied(self): method tearDownClass (line 512) | def tearDownClass(cls): class TestCustomDataValidator (line 517) | class TestCustomDataValidator(TestCase): method setUpClass (line 521) | def setUpClass(cls): method test_valid_fields_without_profile (line 565) | def test_valid_fields_without_profile(self): method test_invalid_fields_with_valid_profile (line 573) | def test_invalid_fields_with_valid_profile(self): method test_invalid_web_user_required_field (line 583) | def test_invalid_web_user_required_field(self): method test_invalid_commcare_user_required_field (line 591) | def test_invalid_commcare_user_required_field(self): method test_invalid_choices_field (line 599) | def test_invalid_choices_field(self): method test_invalild_regex_fields (line 610) | def test_invalild_regex_fields(self): class TestUtil (line 621) | class TestUtil(TestCase): method test_get_invitation_or_editable_user (line 624) | def test_get_invitation_or_editable_user(self): class TestTableauRoleValidator (line 650) | class TestTableauRoleValidator(TestCase): method test_valid_role (line 653) | def test_valid_role(self): method test_invalid_role (line 658) | def test_invalid_role(self): method test_no_role (line 666) | def test_no_role(self): class TestTableauGroupsValidator (line 672) | class TestTableauGroupsValidator(TestCase): method setUpClass (line 676) | def setUpClass(cls): method test_valid_groups (line 685) | def test_valid_groups(self): method test_invalid_groups (line 690) | def test_invalid_groups(self): method test_no_groups (line 698) | def test_no_groups(self): method test_empty_groups (line 703) | def test_empty_groups(self): FILE: corehq/apps/user_importer/validation.py function get_user_import_validators (line 40) | def get_user_import_validators(domain_obj, all_specs, is_web_user_import... class ImportValidator (line 78) | class ImportValidator(metaclass=ABCMeta): method __init__ (line 81) | def __init__(self, domain): method __call__ (line 84) | def __call__(self, spec): method validate_spec (line 90) | def validate_spec(self, spec): class NoopValidator (line 94) | class NoopValidator(ImportValidator): method validate_spec (line 95) | def validate_spec(self, spec): class UsernameValidator (line 99) | class UsernameValidator(ImportValidator): method validate_spec (line 102) | def validate_spec(self, spec): class BooleanColumnValidator (line 113) | class BooleanColumnValidator(ImportValidator): method __init__ (line 116) | def __init__(self, domain, column_id): method validate_spec (line 120) | def validate_spec(self, spec): method error_message (line 129) | def error_message(self): class RequiredFieldsValidator (line 133) | class RequiredFieldsValidator(ImportValidator): method validate_spec (line 136) | def validate_spec(self, spec): class RequiredWebFieldsValidator (line 143) | class RequiredWebFieldsValidator(ImportValidator): method validate_spec (line 146) | def validate_spec(self, spec): class TableauRoleValidator (line 153) | class TableauRoleValidator(ImportValidator): method __init__ (line 157) | def __init__(self, domain): method validate_spec (line 160) | def validate_spec(self, spec): method validate_tableau_role (line 165) | def validate_tableau_role(cls, tableau_role): class TableauGroupsValidator (line 170) | class TableauGroupsValidator(ImportValidator): method __init__ (line 173) | def __init__(self, domain, all_specs): method validate_spec (line 179) | def validate_spec(self, spec): method validate_tableau_groups (line 186) | def validate_tableau_groups(cls, allowed_groups_for_domain, tableau_gr... class DuplicateValidator (line 195) | class DuplicateValidator(ImportValidator): method __init__ (line 198) | def __init__(self, domain, field, all_specs, check_function=None): method error_message (line 205) | def error_message(self): method validate_spec (line 208) | def validate_spec(self, row_spec): function find_duplicates (line 220) | def find_duplicates(specs, field): class UsernameLengthValidator (line 229) | class UsernameLengthValidator(ImportValidator): method __init__ (line 232) | def __init__(self, domain, max_length=None): method error_message (line 237) | def error_message(self): method validate_spec (line 240) | def validate_spec(self, spec): class UsernameTypeValidator (line 248) | class UsernameTypeValidator(ImportValidator): method validate_spec (line 251) | def validate_spec(self, spec): class NewUserPasswordValidator (line 261) | class NewUserPasswordValidator(ImportValidator): method validate_spec (line 264) | def validate_spec(self, spec): class PasswordValidator (line 275) | class PasswordValidator(ImportValidator): method validate_spec (line 276) | def validate_spec(self, spec): class CustomDataValidator (line 285) | class CustomDataValidator(ImportValidator): method __init__ (line 286) | def __init__(self, domain, all_user_profiles_by_name, is_web_user_impo... method validate_spec (line 300) | def validate_spec(self, spec): class EmailValidator (line 311) | class EmailValidator(ImportValidator): method __init__ (line 314) | def __init__(self, domain, column_id): method validate_spec (line 318) | def validate_spec(self, spec): class RoleValidator (line 327) | class RoleValidator(ImportValidator): method __init__ (line 330) | def __init__(self, domain, allowed_roles=None): method validate_spec (line 334) | def validate_spec(self, spec): class ProfileValidator (line 340) | class ProfileValidator(ImportValidator): method __init__ (line 351) | def __init__(self, domain, upload_user, is_web_user_import, all_user_p... method validate_spec (line 357) | def validate_spec(self, spec): method _validate_profile_assignment_required (line 371) | def _validate_profile_assignment_required(self, spec_profile_name): method _get_original_profile_id (line 385) | def _get_original_profile_id(self, spec): method _validate_profile_access (line 393) | def _validate_profile_access(self, original_profile_id, spec_profile_n... class GroupValidator (line 410) | class GroupValidator(ImportValidator): method __init__ (line 413) | def __init__(self, domain, allowed_groups=None): method validate_spec (line 417) | def validate_spec(self, spec): function is_password (line 424) | def is_password(password): class ExistingUserValidator (line 433) | class ExistingUserValidator(ImportValidator): method __init__ (line 436) | def __init__(self, domain, all_sepcs): method get_exising_users (line 441) | def get_exising_users(self): method validate_spec (line 460) | def validate_spec(self, spec): class TargetDomainValidator (line 470) | class TargetDomainValidator(ImportValidator): method validate_spec (line 473) | def validate_spec(self, spec): class UserAccessValidator (line 480) | class UserAccessValidator(ImportValidator): method __init__ (line 484) | def __init__(self, domain, upload_user, is_web_user_import): method validate_spec (line 489) | def validate_spec(self, spec): method _validate_uploading_user_access_to_editable_user_or_invitation (line 495) | def _validate_uploading_user_access_to_editable_user_or_invitation(sel... class LocationValidator (line 506) | class LocationValidator(ImportValidator): method __init__ (line 509) | def __init__(self, domain, upload_user, location_cache, is_web_user_im... method validate_spec (line 515) | def validate_spec(self, spec): method validate_location_ids (line 521) | def validate_location_ids(self, user_result, location_ids_being_assign... method _get_locs_ids_being_assigned (line 531) | def _get_locs_ids_being_assigned(self, spec): method _get_current_loc_ids (line 538) | def _get_current_loc_ids(self, user_result): method _validate_user_location_permission (line 546) | def _validate_user_location_permission(self, current_loc_ids, locs_ids... method _validate_locations_allow_users (line 556) | def _validate_locations_allow_users(self, locs_ids_being_assigned): class UserRetrievalResult (line 562) | class UserRetrievalResult(NamedTuple): function _get_invitation_or_editable_user (line 567) | def _get_invitation_or_editable_user(spec, is_web_user_import, domain) -... FILE: corehq/apps/userreports/adapter.py class IndicatorAdapter (line 14) | class IndicatorAdapter(object): method __init__ (line 15) | def __init__(self, config): method config_id (line 19) | def config_id(self): method is_active (line 23) | def is_active(self): method get_table (line 27) | def get_table(self): method rebuild_table (line 30) | def rebuild_table(self, initiated_by=None, source=None, skip_log=False... method drop_table (line 33) | def drop_table(self, initiated_by=None, source=None, skip_log=False): method clear_table (line 37) | def clear_table(self): method get_query_object (line 40) | def get_query_object(self): method best_effort_save (line 43) | def best_effort_save(self, doc, eval_context=None): method _best_effort_save_rows (line 57) | def _best_effort_save_rows(self, rows, doc): method handle_exception (line 63) | def handle_exception(self, doc, exception): method save (line 83) | def save(self, doc, eval_context=None): method save_rows (line 90) | def save_rows(self, rows, use_shard_col=True): method bulk_save (line 93) | def bulk_save(self, docs): method get_all_values (line 99) | def get_all_values(self, doc, eval_context=None): method bulk_delete (line 103) | def bulk_delete(self, docs, use_shard_col=True): method delete (line 107) | def delete(self, doc, use_shard_col=True): method run_asynchronous (line 111) | def run_asynchronous(self): method get_distinct_values (line 114) | def get_distinct_values(self, column, limit): method log_table_build (line 117) | def log_table_build(self, initiated_by, source): method log_table_rebuild (line 121) | def log_table_rebuild(self, initiated_by, source, skip=False, diffs=No... method log_table_rebuild_skipped (line 125) | def log_table_rebuild_skipped(self, source, diffs): method log_table_drop (line 129) | def log_table_drop(self, initiated_by, source, skip=False): method log_table_migrate (line 133) | def log_table_migrate(self, source, diffs, initiated_by=None): method _log_action (line 137) | def _log_action(self, initiated_by, source, action, diffs=None, skip_d... class IndicatorAdapterLoadTracker (line 178) | class IndicatorAdapterLoadTracker(object): method __init__ (line 179) | def __init__(self, adapter, track_load): method __getattr__ (line 183) | def __getattr__(self, attr): method track_load (line 186) | def track_load(self, value=1): method save_rows (line 189) | def save_rows(self, rows, use_shard_col=True): method delete (line 193) | def delete(self, doc, use_shard_col=True): method get_distinct_values (line 197) | def get_distinct_values(self, column, limit): FILE: corehq/apps/userreports/adaptercache.py class TTLCache (line 8) | class TTLCache: method __init__ (line 27) | def __init__(self, iter_adapters, adapter_cache=None, timeout=TTL_48_H... method get_adapters (line 34) | def get_adapters(self, domain): method _load_adapters_ (line 44) | def _load_adapters_(self, domain): method _load_adapters (line 53) | def _load_adapters(self, domain): method _refresh (line 65) | def _refresh(self): method refresh (line 91) | def refresh(self): method remove (line 100) | def remove(self, domain, adapter): class MigrationCache (line 105) | class MigrationCache: method __init__ (line 110) | def __init__(self, iter_adapters, timeout='IGNORED'): method get_adapters (line 115) | def get_adapters(self): method _load_adapters (line 120) | def _load_adapters(self): method refresh (line 126) | def refresh(self): class AdapterCache (line 136) | class AdapterCache: method __init__ (line 143) | def __init__(self): method get (line 148) | def get(self, domain): method __getitem__ (line 156) | def __getitem__(self, domain): method __contains__ (line 164) | def __contains__(self, domain): method add (line 168) | def add(self, domain, adapter): method discard (line 176) | def discard(self, domain, adapter=None): FILE: corehq/apps/userreports/admin.py class AsyncIndicatorAdmin (line 11) | class AsyncIndicatorAdmin(admin.ModelAdmin): class InvalidUCRDataAdmin (line 28) | class InvalidUCRDataAdmin(admin.ModelAdmin): class DataSourceActionLogAdmin (line 43) | class DataSourceActionLogAdmin(admin.ModelAdmin): FILE: corehq/apps/userreports/alembic_diffs.py function get_migration_context (line 7) | def get_migration_context(connection, table_names=None): function include_name (line 15) | def include_name(tables_to_include, name, type_, parent_names): function include_object (line 21) | def include_object(tables_to_include, object, name, type_, reflected, co... function _include_table (line 27) | def _include_table(tables_to_include, type_, name): function get_tables_to_rebuild (line 33) | def get_tables_to_rebuild(diffs): function reformat_alembic_diffs (line 37) | def reformat_alembic_diffs(raw_diffs): class DiffTypes (line 84) | class DiffTypes(object): class SimpleDiff (line 117) | class SimpleDiff(object): method to_dict (line 123) | def to_dict(self): method column (line 130) | def column(self): method index (line 134) | def index(self): method constraint (line 138) | def constraint(self): method _item (line 141) | def _item(self, index, supported_types): FILE: corehq/apps/userreports/app_config.py class UserReports (line 10) | class UserReports(AppConfig): method ready (line 13) | def ready(self): function process_extensions (line 17) | def process_extensions(**kwargs): function register_filters (line 23) | def register_filters(): function register_expressions (line 31) | def register_expressions(): function register_filter_values (line 42) | def register_filter_values(): FILE: corehq/apps/userreports/app_manager/data_source_meta.py function make_case_data_source_filter (line 8) | def make_case_data_source_filter(case_type): function make_form_data_source_filter (line 20) | def make_form_data_source_filter(xmlns, app_id): function make_form_question_indicator (line 46) | def make_form_question_indicator(question, column_id=None, data_type=Non... function get_form_indicator_data_type (line 67) | def get_form_indicator_data_type(question_type): function make_form_meta_block_indicator (line 80) | def make_form_meta_block_indicator(spec, column_id=None, root_doc=False): FILE: corehq/apps/userreports/app_manager/helpers.py function get_case_data_sources (line 22) | def get_case_data_sources(app): function get_case_data_source (line 30) | def get_case_data_source(app, case_type): function get_form_data_sources (line 57) | def get_form_data_sources(app): function get_form_data_source (line 72) | def get_form_data_source(app, form): function _deduplicate_columns_if_necessary (line 97) | def _deduplicate_columns_if_necessary(config): function _get_shared_indicators (line 112) | def _get_shared_indicators(): function _get_dynamic_indicators_from_export_schema (line 127) | def _get_dynamic_indicators_from_export_schema(schema): function _export_column_to_ucr_indicator (line 132) | def _export_column_to_ucr_indicator(export_column): function _export_item_to_ucr_indicator (line 150) | def _export_item_to_ucr_indicator(export_item): function clean_table_name (line 206) | def clean_table_name(domain, readable_name): FILE: corehq/apps/userreports/columns.py class UCRExpandDatabaseSubcolumn (line 9) | class UCRExpandDatabaseSubcolumn(DatabaseColumn): method __init__ (line 13) | def __init__(self, header, agg_column=None, expand_value=None, *args, ... class ColumnConfig (line 20) | class ColumnConfig(object): method __init__ (line 25) | def __init__(self, columns, warnings=None): function get_distinct_values (line 31) | def get_distinct_values(data_source_configuration, column_config, expans... function get_expanded_column_config (line 47) | def get_expanded_column_config(data_source_configuration, column_config,... FILE: corehq/apps/userreports/custom/data_source.py class ConfigurableReportCustomDataSource (line 19) | class ConfigurableReportCustomDataSource(ConfigurableReportDataSourceMix... method helper (line 22) | def helper(self): method set_provider (line 26) | def set_provider(self, provider_string): method _db_columns (line 30) | def _db_columns(self): method get_data (line 35) | def get_data(self, start=None, limit=None): method get_query_strings (line 53) | def get_query_strings(self): method get_total_records (line 57) | def get_total_records(self): method get_total_row (line 61) | def get_total_row(self): method order_by (line 65) | def order_by(self): class ConfigurableReportCustomSQLDataSourceHelper (line 74) | class ConfigurableReportCustomSQLDataSourceHelper(object): method __init__ (line 75) | def __init__(self, report_data_source): method session_helper (line 80) | def session_helper(self): method get_table (line 83) | def get_table(self): method set_table (line 88) | def set_table(self, table): method _filters (line 92) | def _filters(self): method sql_alchemy_filters (line 102) | def sql_alchemy_filters(self): method sql_alchemy_filter_values (line 106) | def sql_alchemy_filter_values(self): class ConfigurableReportCustomQueryProvider (line 114) | class ConfigurableReportCustomQueryProvider(metaclass=ABCMeta): method get_data (line 116) | def get_data(self, start, limit): method get_total_row (line 128) | def get_total_row(self): method get_total_records (line 137) | def get_total_records(self): FILE: corehq/apps/userreports/data_source_providers.py class DataSourceProvider (line 16) | class DataSourceProvider(metaclass=ABCMeta): method __init__ (line 18) | def __init__(self, referenced_doc_type=None): method get_all_data_sources (line 22) | def get_all_data_sources(self, domain=None): method get_data_sources_modified_since (line 27) | def get_data_sources_modified_since(self, timestamp): method get_data_sources (line 31) | def get_data_sources(self, domain=None): class DynamicDataSourceProvider (line 39) | class DynamicDataSourceProvider(DataSourceProvider): method get_all_data_sources (line 41) | def get_all_data_sources(self, domain=None): method get_data_sources_modified_since (line 49) | def get_data_sources_modified_since(self, timestamp): class RegistryDataSourceProvider (line 59) | class RegistryDataSourceProvider(DataSourceProvider): method get_all_data_sources (line 61) | def get_all_data_sources(self, domain=None): method _iter_data_sources (line 73) | def _iter_data_sources(self, domain): method get_data_sources_modified_since (line 87) | def get_data_sources_modified_since(self, timestamp): class StaticDataSourceProvider (line 91) | class StaticDataSourceProvider(DataSourceProvider): method get_all_data_sources (line 93) | def get_all_data_sources(self, domain=None): method get_data_sources_modified_since (line 98) | def get_data_sources_modified_since(self, timestamp): class MockDataSourceProvider (line 102) | class MockDataSourceProvider(DataSourceProvider): method __init__ (line 104) | def __init__(self, data_sources_by_domain=None, referenced_doc_type=No... method get_all_data_sources (line 108) | def get_all_data_sources(self, domain=None): method get_data_sources_modified_since (line 113) | def get_data_sources_modified_since(self, timestamp): FILE: corehq/apps/userreports/datatypes.py function DataTypeProperty (line 27) | def DataTypeProperty(**kwargs): FILE: corehq/apps/userreports/dbaccessors.py function get_number_of_report_configs_by_data_source (line 22) | def get_number_of_report_configs_by_data_source(domain, data_source_id): function get_report_configs_for_domain (line 34) | def get_report_configs_for_domain(domain): function get_number_of_registry_report_configs_by_data_source (line 42) | def get_number_of_registry_report_configs_by_data_source(domain, data_so... function get_registry_report_configs_for_domain (line 55) | def get_registry_report_configs_for_domain(domain): function get_report_and_registry_report_configs_for_domain (line 63) | def get_report_and_registry_report_configs_for_domain(domain): function get_datasources_for_domain (line 76) | def get_datasources_for_domain(domain, referenced_doc_type=None, include... function get_all_data_sources (line 107) | def get_all_data_sources(): function get_registry_data_sources_by_domain (line 117) | def get_registry_data_sources_by_domain(domain, slug=None): function get_all_registry_data_source_ids (line 134) | def get_all_registry_data_source_ids(is_active=None, globally_accessible... function get_registry_data_sources_modified_since (line 148) | def get_registry_data_sources_modified_since(timestamp): function get_all_report_configs (line 160) | def get_all_report_configs(): function delete_all_report_configs (line 168) | def delete_all_report_configs(): function delete_all_ucr_tables_for_domain (line 173) | def delete_all_ucr_tables_for_domain(domain): function get_orphaned_ucrs (line 185) | def get_orphaned_ucrs(engine_id, domain=None, ignore_active_domains=True): function _get_ucrs_with_datasources (line 209) | def _get_ucrs_with_datasources(engine_id, domain, ignore_active_domains, function _get_existing_ucrs (line 231) | def _get_existing_ucrs(engine_id, domain, ignore_active_domains, function _get_confirmed_orphaned_ucrs (line 267) | def _get_confirmed_orphaned_ucrs(engine_id, suspected_orphaned_ucrs): function drop_orphaned_ucrs (line 291) | def drop_orphaned_ucrs(engine_id, ucrs): FILE: corehq/apps/userreports/decorators.py function catch_and_raise_exceptions (line 16) | def catch_and_raise_exceptions(func): function ucr_context_cache (line 33) | def ucr_context_cache(vary_on=()): FILE: corehq/apps/userreports/exceptions.py class UserReportsError (line 7) | class UserReportsError(Exception): class UserReportsWarning (line 11) | class UserReportsWarning(Warning): class TableNotFoundWarning (line 15) | class TableNotFoundWarning(UserReportsWarning): class MissingColumnWarning (line 19) | class MissingColumnWarning(UserReportsWarning): class BadBuilderConfigError (line 23) | class BadBuilderConfigError(UserReportsError): class ColumnNotFoundError (line 27) | class ColumnNotFoundError(UserReportsError): class BadSpecError (line 31) | class BadSpecError(UserReportsError): class DuplicateColumnIdError (line 35) | class DuplicateColumnIdError(BadSpecError): method __init__ (line 36) | def __init__(self, columns, *args, **kwargs): method __str__ (line 40) | def __str__(self): class UserQueryError (line 44) | class UserQueryError(UserReportsError): class TableRebuildError (line 48) | class TableRebuildError(UserReportsError): class StaleRebuildError (line 52) | class StaleRebuildError(TableRebuildError): class UserReportsFilterError (line 56) | class UserReportsFilterError(UserReportsError): class SortConfigurationError (line 60) | class SortConfigurationError(UserReportsError): class DataSourceConfigurationNotFoundError (line 64) | class DataSourceConfigurationNotFoundError(BadSpecError): class StaticDataSourceConfigurationNotFoundError (line 68) | class StaticDataSourceConfigurationNotFoundError(DataSourceConfiguration... class ReportConfigurationNotFoundError (line 72) | class ReportConfigurationNotFoundError(UserReportsError): class InvalidQueryColumn (line 76) | class InvalidQueryColumn(UserReportsError): class InvalidDataSourceType (line 80) | class InvalidDataSourceType(UserQueryError): class ValidationError (line 84) | class ValidationError(UserReportsError): method __init__ (line 85) | def __init__(self, errors): method __str__ (line 88) | def __str__(self): function translate_programming_error (line 92) | def translate_programming_error(exception): FILE: corehq/apps/userreports/expressions/date_specs.py class AddDaysExpressionSpec (line 17) | class AddDaysExpressionSpec(JsonObject): method configure (line 39) | def configure(self, date_expression, count_expression): method __call__ (line 43) | def __call__(self, item, evaluation_context=None): method __str__ (line 50) | def __str__(self): class AddHoursExpressionSpec (line 56) | class AddHoursExpressionSpec(JsonObject): method configure (line 78) | def configure(self, date_expression, count_expression): method __call__ (line 82) | def __call__(self, item, evaluation_context=None): method __str__ (line 89) | def __str__(self): class AddMonthsExpressionSpec (line 95) | class AddMonthsExpressionSpec(JsonObject): method configure (line 120) | def configure(self, date_expression, months_expression): method __call__ (line 124) | def __call__(self, item, evaluation_context=None): method __str__ (line 131) | def __str__(self): class MonthStartDateExpressionSpec (line 137) | class MonthStartDateExpressionSpec(JsonObject): method configure (line 158) | def configure(self, date_expression): method __call__ (line 161) | def __call__(self, item, evaluation_context=None): method __str__ (line 167) | def __str__(self): class MonthEndDateExpressionSpec (line 171) | class MonthEndDateExpressionSpec(JsonObject): method configure (line 175) | def configure(self, date_expression): method __call__ (line 178) | def __call__(self, item, evaluation_context=None): method __str__ (line 185) | def __str__(self): class DiffDaysExpressionSpec (line 189) | class DiffDaysExpressionSpec(JsonObject): method configure (line 211) | def configure(self, from_date_expression, to_date_expression): method __call__ (line 215) | def __call__(self, item, evaluation_context=None): method __str__ (line 222) | def __str__(self): function _datetime_now (line 227) | def _datetime_now(): class UTCNow (line 231) | class UTCNow(JsonObject): method __call__ (line 234) | def __call__(self, item, evaluation_context=None): method __str__ (line 237) | def __str__(self): class GregorianDateToEthiopianDateSpec (line 241) | class GregorianDateToEthiopianDateSpec(JsonObject): class Meta (line 259) | class Meta(object): method configure (line 266) | def configure(self, date_expression): method __call__ (line 269) | def __call__(self, item, evaluation_context=None): class EthiopianDateToGregorianDateSpec (line 274) | class EthiopianDateToGregorianDateSpec(JsonObject): class Meta (line 292) | class Meta(object): method configure (line 299) | def configure(self, date_expression): method __call__ (line 302) | def __call__(self, item, evaluation_context=None): FILE: corehq/apps/userreports/expressions/evaluator/functions.py function safe_range (line 15) | def safe_range(start, *args): function bind_context (line 22) | def bind_context(fn): function jsonpath_eval (line 34) | def jsonpath_eval(expr, as_list=False, context=None, *, _bound_context): function context_eval (line 55) | def context_eval(*, _bound_context): function named_eval (line 61) | def named_eval(name, context=None, *, _bound_context): function root_context (line 70) | def root_context(*, _bound_context): function date_eval (line 75) | def date_eval(value, fmt=None): FILE: corehq/apps/userreports/expressions/evaluator/main.py function safe_pow_fn (line 25) | def safe_pow_fn(a, b): class CommCareEval (line 36) | class CommCareEval(EvalWithCompoundTypes): method __init__ (line 41) | def __init__(self, *args, **kw): method set_context (line 45) | def set_context(self, context): method _eval_call (line 48) | def _eval_call(self, node): function eval_statements (line 75) | def eval_statements(statement, variable_context, execution_context=None): class EvalExecutionContext (line 94) | class EvalExecutionContext: method empty (line 100) | def empty(cls): method scope (line 103) | def scope(self, evaluator): method names (line 108) | def names(self): method root_context (line 112) | def root_context(self): method eval_spec (line 115) | def eval_spec(self, spec, item): FILE: corehq/apps/userreports/expressions/extension_expressions.py class IndexedCaseExpressionSpec (line 7) | class IndexedCaseExpressionSpec(JsonObject): method configure (line 12) | def configure(self, case_expression, factory_context): method __call__ (line 60) | def __call__(self, item, evaluation_context=None): method __str__ (line 63) | def __str__(self): function indexed_case_expression (line 70) | def indexed_case_expression(spec, factory_context): FILE: corehq/apps/userreports/expressions/factory.py function _make_filter (line 59) | def _make_filter(spec, factory_context): function _simple_expression_generator (line 66) | def _simple_expression_generator(wrapper_class, spec, factory_context): function _property_name_expression (line 78) | def _property_name_expression(spec, factory_context): function _named_expression (line 86) | def _named_expression(spec, factory_context): function _conditional_expression (line 92) | def _conditional_expression(spec, factory_context): function _switch_expression (line 102) | def _switch_expression(spec, factory_context): function _array_index_expression (line 112) | def _array_index_expression(spec, factory_context): function _root_doc_expression (line 121) | def _root_doc_expression(spec, factory_context): function _related_doc_expression (line 127) | def _related_doc_expression(spec, factory_context): function _related_case_expression (line 136) | def _related_case_expression(spec, factory_context): function _iterator_expression (line 156) | def _iterator_expression(spec, factory_context): function _nested_expression (line 165) | def _nested_expression(spec, factory_context): function _dict_expression (line 174) | def _dict_expression(spec, factory_context): function _add_days_expression (line 184) | def _add_days_expression(spec, factory_context): function _add_hours_expression (line 193) | def _add_hours_expression(spec, factory_context): function _add_months_expression (line 202) | def _add_months_expression(spec, factory_context): function _month_start_date_expression (line 211) | def _month_start_date_expression(spec, factory_context): function _month_end_date_expression (line 219) | def _month_end_date_expression(spec, factory_context): function _diff_days_expression (line 227) | def _diff_days_expression(spec, factory_context): function _gregorian_date_to_ethiopian_date (line 236) | def _gregorian_date_to_ethiopian_date(spec, factory_context): function _ethiopian_date_to_gregorian_date (line 244) | def _ethiopian_date_to_gregorian_date(spec, factory_context): function _evaluator_expression (line 252) | def _evaluator_expression(spec, factory_context): function _get_forms_expression (line 258) | def _get_forms_expression(spec, factory_context): function _get_subcases_expression (line 266) | def _get_subcases_expression(spec, factory_context): function _get_case_sharing_groups_expression (line 274) | def _get_case_sharing_groups_expression(spec, factory_context): function _get_reporting_groups_expression (line 282) | def _get_reporting_groups_expression(spec, factory_context): function _filter_items_expression (line 290) | def _filter_items_expression(spec, factory_context): function _map_items_expression (line 299) | def _map_items_expression(spec, factory_context): function _reduce_items_expression (line 308) | def _reduce_items_expression(spec, factory_context): function _flatten_expression (line 316) | def _flatten_expression(spec, factory_context): function _sort_items_expression (line 324) | def _sort_items_expression(spec, factory_context): function _split_string_expression (line 333) | def _split_string_expression(spec, factory_context): function _coalesce_expression (line 342) | def _coalesce_expression(spec, factory_context): class ExpressionFactory (line 351) | class ExpressionFactory(object): method register (line 394) | def register(cls, type_name, factory_func): method from_spec (line 408) | def from_spec(cls, spec, factory_context=None): function _is_literal (line 428) | def _is_literal(value): function _convert_constant_to_expression_spec (line 432) | def _convert_constant_to_expression_spec(value): FILE: corehq/apps/userreports/expressions/getters.py function evaluate_lazy_args (line 9) | def evaluate_lazy_args(func, *args): class TransformedGetter (line 14) | class TransformedGetter(object): method __init__ (line 21) | def __init__(self, getter, transform=None): method __call__ (line 25) | def __call__(self, item, evaluation_context=None): class DictGetter (line 32) | class DictGetter(object): method __init__ (line 34) | def __init__(self, property_name): method __call__ (line 37) | def __call__(self, item, evaluation_context=None): class NestedDictGetter (line 46) | class NestedDictGetter(object): method __init__ (line 53) | def __init__(self, property_path): method __call__ (line 56) | def __call__(self, item, evaluation_context=None): function safe_recursive_lookup (line 60) | def safe_recursive_lookup(item, path): function recursive_lookup (line 75) | def recursive_lookup(dict_object, keys): function transform_date (line 99) | def transform_date(item): function transform_datetime (line 117) | def transform_datetime(item): function transform_int (line 129) | def transform_int(item): function transform_decimal (line 139) | def transform_decimal(item): function transform_unicode (line 146) | def transform_unicode(item): function transform_array (line 155) | def transform_array(item): function transform_for_datatype (line 161) | def transform_for_datatype(datatype): function getter_from_property_reference (line 178) | def getter_from_property_reference(spec): FILE: corehq/apps/userreports/expressions/list_specs.py function _evaluate_items_expression (line 17) | def _evaluate_items_expression(itemx_ex, doc, evaluation_context): class FilterItemsExpressionSpec (line 25) | class FilterItemsExpressionSpec(NoPropertyTypeCoercionMixIn, JsonObject): method configure (line 64) | def configure(self, items_expression, filter_expression): method __call__ (line 68) | def __call__(self, doc, evaluation_context=None): method __str__ (line 78) | def __str__(self): class MapItemsExpressionSpec (line 83) | class MapItemsExpressionSpec(NoPropertyTypeCoercionMixIn, JsonObject): method configure (line 124) | def configure(self, items_expression, map_expression): method __call__ (line 128) | def __call__(self, doc, evaluation_context=None): method __str__ (line 133) | def __str__(self): class ReduceItemsExpressionSpec (line 138) | class ReduceItemsExpressionSpec(NoPropertyTypeCoercionMixIn, JsonObject): method configure (line 186) | def configure(self, items_expression): method __call__ (line 194) | def __call__(self, doc, evaluation_context=None): method __str__ (line 198) | def __str__(self): class FlattenExpressionSpec (line 203) | class FlattenExpressionSpec(NoPropertyTypeCoercionMixIn, JsonObject): method configure (line 223) | def configure(self, items_expression): method __call__ (line 226) | def __call__(self, doc, evaluation_context=None): method __str__ (line 237) | def __str__(self): class SortItemsExpressionSpec (line 241) | class SortItemsExpressionSpec(NoPropertyTypeCoercionMixIn, JsonObject): method configure (line 280) | def configure(self, items_expression, sort_expression): method __call__ (line 284) | def __call__(self, doc, evaluation_context=None): method __str__ (line 301) | def __str__(self): FILE: corehq/apps/userreports/expressions/specs.py class IdentityExpressionSpec (line 42) | class IdentityExpressionSpec(JsonObject): method __call__ (line 45) | def __call__(self, item, evaluation_context=None): method __str__ (line 48) | def __str__(self): class IterationNumberExpressionSpec (line 52) | class IterationNumberExpressionSpec(JsonObject): method __call__ (line 66) | def __call__(self, item, evaluation_context=None): method __str__ (line 69) | def __str__(self): class ConstantGetterSpec (line 73) | class ConstantGetterSpec(JsonObject): method wrap (line 92) | def wrap(self, obj): method __call__ (line 99) | def __call__(self, item, evaluation_context=None): method __str__ (line 102) | def __str__(self): class PropertyNameGetterSpec (line 106) | class PropertyNameGetterSpec(JsonObject): method configure (line 126) | def configure(self, property_name_expression): method __call__ (line 129) | def __call__(self, item, evaluation_context=None): method __str__ (line 135) | def __str__(self): class PropertyPathGetterSpec (line 142) | class PropertyPathGetterSpec(JsonObject): method __call__ (line 162) | def __call__(self, item, evaluation_context=None): method __str__ (line 166) | def __str__(self): class NamedExpressionSpec (line 173) | class NamedExpressionSpec(JsonObject): method configure (line 213) | def configure(self, factory_context): method _context_cache_key (line 217) | def _context_cache_key(self, item): method __call__ (line 220) | def __call__(self, item, evaluation_context=None): method __str__ (line 230) | def __str__(self): class ConditionalExpressionSpec (line 234) | class ConditionalExpressionSpec(JsonObject): method configure (line 278) | def configure(self, test_function, true_expression, false_expression): method __call__ (line 283) | def __call__(self, item, evaluation_context=None): method __str__ (line 289) | def __str__(self): class ArrayIndexExpressionSpec (line 296) | class ArrayIndexExpressionSpec(NoPropertyTypeCoercionMixIn, JsonObject): method configure (line 321) | def configure(self, array_expression, index_expression): method __call__ (line 325) | def __call__(self, item, evaluation_context=None): method __str__ (line 339) | def __str__(self): class SwitchExpressionSpec (line 343) | class SwitchExpressionSpec(JsonObject): method configure (line 386) | def configure(self, switch_on_expression, case_expressions, default_ex... method __call__ (line 391) | def __call__(self, item, evaluation_context=None): method __str__ (line 398) | def __str__(self): class IteratorExpressionSpec (line 408) | class IteratorExpressionSpec(NoPropertyTypeCoercionMixIn, JsonObject): method configure (line 442) | def configure(self, expressions, test): method __call__ (line 450) | def __call__(self, item, evaluation_context=None): method __str__ (line 458) | def __str__(self): class JsonpathExpressionSpec (line 463) | class JsonpathExpressionSpec(NoPropertyTypeCoercionMixIn, JsonObject): method wrap (line 512) | def wrap(cls, obj): method jsonpath_expr (line 518) | def jsonpath_expr(self): method __call__ (line 525) | def __call__(self, item, evaluation_context=None): method __str__ (line 534) | def __str__(self): class RootDocExpressionSpec (line 540) | class RootDocExpressionSpec(JsonObject): method configure (line 544) | def configure(self, expression): method __call__ (line 547) | def __call__(self, item, evaluation_context=None): method __str__ (line 552) | def __str__(self): class RelatedDocExpressionSpec (line 556) | class RelatedDocExpressionSpec(JsonObject): method configure (line 589) | def configure(self, doc_id_expression, value_expression): method __call__ (line 602) | def __call__(self, item, evaluation_context=None): method _get_document (line 609) | def _get_document(related_doc_type, doc_id, evaluation_context): method get_value (line 625) | def get_value(self, doc_id, evaluation_context): method __str__ (line 630) | def __str__(self): function _get_user (line 636) | def _get_user(domain, doc_id): function _get_doc (line 716) | def _get_doc(domain, doc_type, doc_id): function _device_to_dict (line 728) | def _device_to_dict( class RelatedCaseExpressionSpec (line 740) | class RelatedCaseExpressionSpec(JsonObject): method configure (line 766) | def configure( method __call__ (line 784) | def __call__(self, item, evaluation_context=None): method get_value (line 794) | def get_value(self, case_id, external_id, evaluation_context): method _get_document (line 801) | def _get_document(case_id, external_id, evaluation_context): class NestedExpressionSpec (line 820) | class NestedExpressionSpec(JsonObject): method configure (line 847) | def configure(self, argument_expression, value_expression): method __call__ (line 851) | def __call__(self, item, evaluation_context=None): method __str__ (line 855) | def __str__(self): class DictExpressionSpec (line 859) | class DictExpressionSpec(JsonObject): method configure (line 894) | def configure(self, compiled_properties): method __call__ (line 900) | def __call__(self, item, evaluation_context=None): method __str__ (line 906) | def __str__(self): class EvalExpressionSpec (line 913) | class EvalExpressionSpec(JsonObject): method configure (line 996) | def configure(self, factory_context): method __call__ (line 1003) | def __call__(self, item, evaluation_context=None): method get_variables (line 1013) | def get_variables(self, item, evaluation_context): method __str__ (line 1023) | def __str__(self): class FormsExpressionSpec (line 1032) | class FormsExpressionSpec(JsonObject): method configure (line 1037) | def configure(self, case_id_expression): method __call__ (line 1040) | def __call__(self, item, evaluation_context=None): method _get_forms (line 1049) | def _get_forms(self, case_id, evaluation_context): method _get_case_forms (line 1066) | def _get_case_forms(self, case_id, evaluation_context): method _get_form_json (line 1070) | def _get_form_json(self, form, evaluation_context): method __str__ (line 1079) | def __str__(self): class SubcasesExpressionSpec (line 1088) | class SubcasesExpressionSpec(JsonObject): method configure (line 1092) | def configure(self, case_id_expression): method __call__ (line 1095) | def __call__(self, item, evaluation_context=None): method _get_subcases (line 1104) | def _get_subcases(self, case_id, evaluation_context): method __str__ (line 1108) | def __str__(self): class _GroupsExpressionSpec (line 1112) | class _GroupsExpressionSpec(JsonObject): method configure (line 1115) | def configure(self, user_id_expression): method __call__ (line 1118) | def __call__(self, item, evaluation_context=None): method _get_groups (line 1127) | def _get_groups(self, user_id, evaluation_context): method _get_groups_from_user (line 1139) | def _get_groups_from_user(self, user): class CaseSharingGroupsExpressionSpec (line 1143) | class CaseSharingGroupsExpressionSpec(_GroupsExpressionSpec): method _get_groups_from_user (line 1161) | def _get_groups_from_user(self, user): method __str__ (line 1164) | def __str__(self): class ReportingGroupsExpressionSpec (line 1168) | class ReportingGroupsExpressionSpec(_GroupsExpressionSpec): method _get_groups_from_user (line 1186) | def _get_groups_from_user(self, user): method __str__ (line 1189) | def __str__(self): class SplitStringExpressionSpec (line 1193) | class SplitStringExpressionSpec(JsonObject): method configure (line 1222) | def configure(self, string_expression, index_expression): method __call__ (line 1226) | def __call__(self, item, evaluation_context=None): method __str__ (line 1243) | def __str__(self): class CoalesceExpressionSpec (line 1250) | class CoalesceExpressionSpec(JsonObject): method configure (line 1274) | def configure(self, expression, default_expression): method __call__ (line 1278) | def __call__(self, item, evaluation_context=None): method __str__ (line 1286) | def __str__(self): FILE: corehq/apps/userreports/expressions/utils.py function aggregate_items (line 11) | def aggregate_items(items, fn_name): function _sum (line 31) | def _sum(items): function _min (line 35) | def _min(items): function _max (line 41) | def _max(items): function _type_safe_agggregate (line 47) | def _type_safe_agggregate(aggregate_fn, items): function _count (line 54) | def _count(items): function _first_item (line 58) | def _first_item(items): function _last_item (line 65) | def _last_item(items): function _join (line 72) | def _join(items): FILE: corehq/apps/userreports/extension_points.py function static_ucr_data_source_paths (line 7) | def static_ucr_data_source_paths() -> List[str]: function static_ucr_report_paths (line 19) | def static_ucr_report_paths() -> List[str]: function custom_ucr_expressions (line 31) | def custom_ucr_expressions() -> List[Tuple[str, str]]: function custom_ucr_report_filters (line 48) | def custom_ucr_report_filters() -> List[Tuple[str, str]]: function custom_ucr_report_filter_values (line 64) | def custom_ucr_report_filter_values() -> List[Tuple[str, str]]: FILE: corehq/apps/userreports/filters/__init__.py class Filter (line 10) | class Filter(object): method __call__ (line 15) | def __call__(self, item, evaluation_context=None): method __str__ (line 18) | def __str__(self): class NOTFilter (line 22) | class NOTFilter(Filter): method __init__ (line 24) | def __init__(self, filter): method __call__ (line 27) | def __call__(self, item, evaluation_context=None): method __str__ (line 30) | def __str__(self): class ANDFilter (line 34) | class ANDFilter(Filter): method __init__ (line 39) | def __init__(self, filters): method __call__ (line 43) | def __call__(self, item, evaluation_context=None): method __str__ (line 46) | def __str__(self): class ORFilter (line 51) | class ORFilter(Filter): method __init__ (line 56) | def __init__(self, filters): method __call__ (line 60) | def __call__(self, item, evaluation_context=None): method __str__ (line 63) | def __str__(self): class CustomFilter (line 68) | class CustomFilter(Filter): method __init__ (line 75) | def __init__(self, filter): method __call__ (line 78) | def __call__(self, item, evaluation_context=None): method __str__ (line 81) | def __str__(self): class SinglePropertyValueFilter (line 85) | class SinglePropertyValueFilter(Filter): method __init__ (line 87) | def __init__(self, expression, operator, reference_expression): method __call__ (line 92) | def __call__(self, item, evaluation_context=None): method __str__ (line 96) | def __str__(self): class NamedFilter (line 102) | class NamedFilter(Filter): method __init__ (line 103) | def __init__(self, filter_name, filter): method __call__ (line 107) | def __call__(self, item, evaluation_context=None): method __str__ (line 110) | def __str__(self): FILE: corehq/apps/userreports/filters/factory.py function _build_compound_filter (line 27) | def _build_compound_filter(spec, factory_context): function _build_not_filter (line 44) | def _build_not_filter(spec, factory_context): function _build_property_match_filter (line 49) | def _build_property_match_filter(spec, factory_context): function _build_boolean_expression_filter (line 62) | def _build_boolean_expression_filter(spec, factory_context): function _build_named_filter (line 71) | def _build_named_filter(spec, factory_context): class FilterFactory (line 77) | class FilterFactory(object): method from_spec (line 88) | def from_spec(cls, spec, factory_context=None): method validate_spec (line 100) | def validate_spec(self, spec): FILE: corehq/apps/userreports/filters/specs.py class BaseFilterSpec (line 21) | class BaseFilterSpec(JsonObject): class BooleanExpressionFilterSpec (line 26) | class BooleanExpressionFilterSpec(NoPropertyTypeCoercionMixIn, BaseFilte... method wrap (line 33) | def wrap(cls, obj): class PropertyMatchFilterSpec (line 38) | class PropertyMatchFilterSpec(BaseFilterSpec): method getter (line 45) | def getter(self): method wrap (line 49) | def wrap(cls, obj): class NotFilterSpec (line 54) | class NotFilterSpec(BaseFilterSpec): class NamedFilterSpec (line 59) | class NamedFilterSpec(BaseFilterSpec): function _assert_prop_in_obj (line 64) | def _assert_prop_in_obj(property_name, obj): FILE: corehq/apps/userreports/forms.py class UCRExpressionForm (line 11) | class UCRExpressionForm(forms.ModelForm): class Meta (line 12) | class Meta: method __init__ (line 21) | def __init__(self, request, *args, **kwargs): method save (line 41) | def save(self, commit=True): FILE: corehq/apps/userreports/indicators/__init__.py class Column (line 12) | class Column(object): method __init__ (line 14) | def __init__(self, id, datatype, is_nullable=True, is_primary_key=Fals... method database_column_name (line 22) | def database_column_name(self): method __repr__ (line 31) | def __repr__(self): class ColumnValue (line 35) | class ColumnValue(object): method __init__ (line 37) | def __init__(self, column, value): method __repr__ (line 41) | def __repr__(self): class ConfigurableIndicatorMixIn (line 45) | class ConfigurableIndicatorMixIn(object): method get_columns (line 47) | def get_columns(self): method get_values (line 50) | def get_values(self, item, evaluation_context=None): class ConfigurableIndicator (line 54) | class ConfigurableIndicator(ConfigurableIndicatorMixIn): method __init__ (line 56) | def __init__(self, display_name, wrapped_spec): class SingleColumnIndicator (line 61) | class SingleColumnIndicator(ConfigurableIndicator): method __init__ (line 63) | def __init__(self, display_name, column, wrapped_spec): method get_columns (line 67) | def get_columns(self): class BooleanIndicator (line 71) | class BooleanIndicator(SingleColumnIndicator): method __init__ (line 78) | def __init__(self, display_name, column_id, filter, wrapped_spec): method get_values (line 84) | def get_values(self, item, evaluation_context=None): class SmallBooleanIndicator (line 89) | class SmallBooleanIndicator(BooleanIndicator): class RawIndicator (line 93) | class RawIndicator(SingleColumnIndicator): method __init__ (line 98) | def __init__(self, display_name, column, getter, wrapped_spec): method get_values (line 102) | def get_values(self, item, evaluation_context=None): class CompoundIndicator (line 106) | class CompoundIndicator(ConfigurableIndicator): method __init__ (line 111) | def __init__(self, display_name, indicators, wrapped_spec): method get_columns (line 115) | def get_columns(self): method get_values (line 118) | def get_values(self, item, evaluation_context=None): class LedgerBalancesIndicator (line 122) | class LedgerBalancesIndicator(ConfigurableIndicator): method __init__ (line 126) | def __init__(self, spec): method _make_column (line 133) | def _make_column(self, product_code): method _get_values_by_product (line 137) | def _get_values_by_product(self, domain, case_id): method get_columns (line 140) | def get_columns(self): method get_values (line 143) | def get_values(self, item, evaluation_context=None): class DueListDateIndicator (line 153) | class DueListDateIndicator(LedgerBalancesIndicator): method _get_values_by_product (line 157) | def _get_values_by_product(self, domain, case_id): FILE: corehq/apps/userreports/indicators/factory.py function _build_count_indicator (line 33) | def _build_count_indicator(spec, factory_context): function _build_raw_indicator (line 43) | def _build_raw_indicator(spec, factory_context): function _build_expression_indicator (line 60) | def _build_expression_indicator(spec, factory_context): function _build_small_boolean_indicator (line 77) | def _build_small_boolean_indicator(spec, factory_context): function _build_boolean_indicator (line 87) | def _build_boolean_indicator(spec, factory_context): function _build_choice_list_indicator (line 97) | def _build_choice_list_indicator(spec, factory_context): function _build_ledger_balances_indicator (line 122) | def _build_ledger_balances_indicator(spec, factory_context): function _build_due_list_date_indicator (line 127) | def _build_due_list_date_indicator(spec, factory_context): function _build_repeat_iteration_indicator (line 132) | def _build_repeat_iteration_indicator(spec, factory_context): function _build_inserted_at (line 146) | def _build_inserted_at(spec, factory_context): class IndicatorFactory (line 161) | class IndicatorFactory(object): method from_spec (line 176) | def from_spec(cls, spec, factory_context=None): method validate_spec (line 185) | def validate_spec(self, spec): FILE: corehq/apps/userreports/indicators/specs.py class IndicatorSpecBase (line 24) | class IndicatorSpecBase(JsonObject): method wrap (line 38) | def wrap(cls, obj): method readable_output (line 46) | def readable_output(self, factory_context): class PropertyReferenceIndicatorSpecBase (line 50) | class PropertyReferenceIndicatorSpecBase(IndicatorSpecBase): method getter (line 59) | def getter(self): method readable_output (line 62) | def readable_output(self, factory_context): class BooleanIndicatorSpec (line 66) | class BooleanIndicatorSpec(IndicatorSpecBase): method readable_output (line 70) | def readable_output(self, factory_context): class SmallBooleanIndicatorSpec (line 76) | class SmallBooleanIndicatorSpec(BooleanIndicatorSpec): class RawIndicatorSpec (line 80) | class RawIndicatorSpec(PropertyReferenceIndicatorSpecBase): method getter (line 88) | def getter(self): class ExpressionIndicatorSpec (line 94) | class ExpressionIndicatorSpec(IndicatorSpecBase): method parsed_expression (line 103) | def parsed_expression(self, factory_context): method readable_output (line 114) | def readable_output(self, factory_context): class ChoiceListIndicatorSpec (line 120) | class ChoiceListIndicatorSpec(PropertyReferenceIndicatorSpecBase): method get_operator (line 125) | def get_operator(self): method readable_output (line 128) | def readable_output(self, factory_context): class LedgerBalancesIndicatorSpec (line 134) | class LedgerBalancesIndicatorSpec(IndicatorSpecBase): method get_case_id_expression (line 140) | def get_case_id_expression(self, factory_context=None): method readable_output (line 144) | def readable_output(self, factory_context): class DueListDateIndicatorSpec (line 148) | class DueListDateIndicatorSpec(LedgerBalancesIndicatorSpec): method readable_output (line 151) | def readable_output(self, factory_context): FILE: corehq/apps/userreports/indicators/utils.py function get_values_by_product (line 5) | def get_values_by_product(domain, case_id, ledger_section, product_codes): FILE: corehq/apps/userreports/management/commands/add_inserted_at_index.py class Command (line 26) | class Command(BaseCommand): method add_arguments (line 29) | def add_arguments(self, parser): method handle (line 39) | def handle(self, domain, initiated_by, *args, **kwargs): FILE: corehq/apps/userreports/management/commands/async_rebuild_table.py class Command (line 19) | class Command(BaseCommand): method add_arguments (line 25) | def add_arguments(self, parser): method handle (line 42) | def handle(self, domain, type_, case_type_or_xmlns, data_source_ids, *... method fake_change_doc (line 77) | def fake_change_doc(self): method _save_ids (line 80) | def _save_ids(self, ids): method _get_ids_to_process (line 88) | def _get_ids_to_process(self, start_date): method _get_ids (line 102) | def _get_ids(self, db, start_date): FILE: corehq/apps/userreports/management/commands/clean_report_config.py class Command (line 58) | class Command(BaseCommand): method add_arguments (line 62) | def add_arguments(self, parser): method handle (line 65) | def handle(self, filepath, *args, **kwargs): function order_dict (line 89) | def order_dict(dict_, order): function clean_spec (line 99) | def clean_spec(spec, wrapped): function clean_filters (line 112) | def clean_filters(json_spec): function clean_columns (line 122) | def clean_columns(json_spec): FILE: corehq/apps/userreports/management/commands/count_ucrs.py class Command (line 16) | class Command(BaseCommand): method handle (line 19) | def handle(self, **options): FILE: corehq/apps/userreports/management/commands/find_datasource_mismatches.py class Command (line 17) | class Command(BaseCommand): method add_arguments (line 20) | def add_arguments(self, parser): method handle (line 24) | def handle(self, domain, data_source_id, *args, **kwargs): FILE: corehq/apps/userreports/management/commands/load_spec.py class Command (line 16) | class Command(BaseCommand): method add_arguments (line 19) | def add_arguments(self, parser): method handle (line 34) | def handle(self, filename, **options): FILE: corehq/apps/userreports/management/commands/manage_orphaned_ucrs.py class Command (line 14) | class Command(BaseCommand): method add_arguments (line 21) | def add_arguments(self, parser): method handle (line 40) | def handle(self, **options): function confirm_deletion_with_user (line 67) | def confirm_deletion_with_user(): FILE: corehq/apps/userreports/management/commands/profile_async_indicators.py class Command (line 16) | class Command(BaseCommand): method add_arguments (line 19) | def add_arguments(self, parser): method handle (line 24) | def handle(self, domain, count, **options): function _simulate_indicator_saves (line 50) | def _simulate_indicator_saves(indicators, docs, configs): function _simulate_async_indicator_save (line 55) | def _simulate_async_indicator_save(indicator, doc, configs): FILE: corehq/apps/userreports/management/commands/profile_data_source.py class Command (line 12) | class Command(BaseCommand): method add_arguments (line 15) | def add_arguments(self, parser): method handle (line 21) | def handle(self, domain, data_source_id, doc_id, **options): function print_profile_stats (line 34) | def print_profile_stats(filename, sort_by): FILE: corehq/apps/userreports/management/commands/queue_indicators.py class Command (line 9) | class Command(BaseCommand): method add_arguments (line 12) | def add_arguments(self, parser): method handle (line 17) | def handle(self, data_source_id, use_agg_queue, **options): FILE: corehq/apps/userreports/management/commands/rebuild_indicator_table.py class Command (line 6) | class Command(BaseCommand): method add_arguments (line 9) | def add_arguments(self, parser): method handle (line 16) | def handle(self, indicator_config_id, **options): FILE: corehq/apps/userreports/management/commands/rebuild_tables_by_domain.py class Command (line 10) | class Command(BaseCommand): method add_arguments (line 13) | def add_arguments(self, parser): method handle (line 21) | def handle(self, domain, **options): FILE: corehq/apps/userreports/migrations/0001_initial.py function set_default_engine_ids (line 12) | def set_default_engine_ids(apps, schema_editor): class Migration (line 23) | class Migration(migrations.Migration): FILE: corehq/apps/userreports/migrations/0002_migrate_translation_transforms.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/userreports/migrations/0003_auto_20170321_2019.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/userreports/migrations/0004_auto_20170330_2049.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/userreports/migrations/0005_asyncindicator_unsuccessful_attempts.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/userreports/migrations/0006_add_index_to_domain.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/userreports/migrations/0007_index_indicator_config_ids.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/userreports/migrations/0008_new_table_name_views.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/userreports/migrations/0009_rename_ucr_tables.py function table_exists (line 38) | def table_exists(connection, table_name): function get_legacy_table_name (line 43) | def get_legacy_table_name(data_source): function _data_sources_by_engine_id (line 49) | def _data_sources_by_engine_id(): function _assert_migrated (line 63) | def _assert_migrated(apps, schema_editor): class Migration (line 78) | class Migration(migrations.Migration): FILE: corehq/apps/userreports/migrations/0010_add_invaliducrdata.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/userreports/migrations/0011_datasourceactionlog.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/userreports/migrations/0012_datasourceactionlog_skip_destructive.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/userreports/migrations/0013_reportcomparisondiff_reportcomparisonexception_reportcomparisontiming.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/userreports/migrations/0014_auto_20190529_1458.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/userreports/migrations/0015_auto_20190701_2006.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/userreports/migrations/0016_change_primary_key_to_bigint.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/userreports/migrations/0017_index_cleanup.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/userreports/migrations/0018_ucrexpression.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/userreports/migrations/0019_ucrexpression_upstream_id.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/userreports/migrations/0020_delete_ucr_comparison_models.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/userreports/migrations/0021_drop_aggregate_ucrs_tables.py function _delete_aggregate_report_configs (line 9) | def _delete_aggregate_report_configs(apps, schema_editor): class Migration (line 36) | class Migration(migrations.Migration): FILE: corehq/apps/userreports/mixins.py class ConfigurableReportDataSourceMixin (line 11) | class ConfigurableReportDataSourceMixin(object): method __init__ (line 12) | def __init__(self, domain, config_or_config_id, filters, aggregation_c... method aggregation_columns (line 42) | def aggregation_columns(self): method config (line 48) | def config(self): method top_level_columns (line 55) | def top_level_columns(self): method inner_columns (line 64) | def inner_columns(self): method columns (line 75) | def columns(self): method top_level_db_columns (line 85) | def top_level_db_columns(self): method top_level_computed_columns (line 91) | def top_level_computed_columns(self): method table_name (line 96) | def table_name(self): method set_filter_values (line 99) | def set_filter_values(self, filter_values): method set_defer_fields (line 104) | def set_defer_fields(self, defer_fields): method set_order_by (line 107) | def set_order_by(self, columns): method column_configs (line 111) | def column_configs(self): method column_warnings (line 115) | def column_warnings(self): method has_total_row (line 119) | def has_total_row(self): method distinct_on (line 123) | def distinct_on(self): method group_by (line 127) | def group_by(self): method get_db_column_ids (line 134) | def get_db_column_ids(self, column_id): method final_column_ids (line 144) | def final_column_ids(self): method total_column_ids (line 159) | def total_column_ids(self): class NoPropertyTypeCoercionMixIn (line 167) | class NoPropertyTypeCoercionMixIn(object): class Meta (line 174) | class Meta(object): FILE: corehq/apps/userreports/models.py function _check_ids (line 117) | def _check_ids(value): class DataSourceActionLog (line 122) | class DataSourceActionLog(models.Model): class SQLColumnIndexes (line 149) | class SQLColumnIndexes(DocumentSchema): class SQLPartition (line 153) | class SQLPartition(DocumentSchema): class SQLSettings (line 163) | class SQLSettings(DocumentSchema): class DataSourceBuildInformation (line 168) | class DataSourceBuildInformation(DocumentSchema): method is_rebuilding (line 196) | def is_rebuilding(self): method is_rebuilding_in_place (line 204) | def is_rebuilding_in_place(self): method is_rebuild_in_progress (line 211) | def is_rebuild_in_progress(self): class DataSourceMeta (line 215) | class DataSourceMeta(DocumentSchema): class Validation (line 222) | class Validation(DocumentSchema): class AbstractUCRDataSource (line 228) | class AbstractUCRDataSource(object): method data_source_id (line 247) | def data_source_id(self): method get_columns (line 253) | def get_columns(self): method pk_columns (line 257) | def pk_columns(self): class DataSourceConfiguration (line 261) | class DataSourceConfiguration(CachedCouchDocumentMixin, Document, Abstra... class Meta (line 288) | class Meta(object): method __str__ (line 292) | def __str__(self): method is_deleted (line 296) | def is_deleted(self): method save (line 299) | def save(self, **params): method data_source_id (line 304) | def data_source_id(self): method filter (line 307) | def filter(self, document, eval_context=None): method deleted_filter (line 314) | def deleted_filter(self, document): method has_validations (line 319) | def has_validations(self): method validate_document (line 322) | def validate_document(self, document, eval_context=None): method _validations (line 335) | def _validations(self): method _get_main_filter (line 346) | def _get_main_filter(self): method _get_deleted_filter (line 350) | def _get_deleted_filter(self): method _get_filter (line 353) | def _get_filter(self, doc_types, include_configured=True): method _get_domain_filter_spec (line 387) | def _get_domain_filter_spec(self): method named_expression_objects (line 400) | def named_expression_objects(self): method named_filter_objects (line 415) | def named_filter_objects(self): method get_factory_context (line 422) | def get_factory_context(self): method default_indicators (line 427) | def default_indicators(self): method _get_inserted_at_indicator (line 453) | def _get_inserted_at_indicator(self): method indicators (line 460) | def indicators(self): method parsed_expression (line 472) | def parsed_expression(self): method get_columns (line 478) | def get_columns(self): method columns_by_id (line 483) | def columns_by_id(self): method get_column_by_id (line 486) | def get_column_by_id(self, column_id): method get_items (line 489) | def get_items(self, document, eval_context=None): method get_all_values (line 504) | def get_all_values(self, doc, eval_context=None): method get_report_count (line 533) | def get_report_count(self): method data_domains (line 540) | def data_domains(self): method _verify_contains_allowed_expressions (line 543) | def _verify_contains_allowed_expressions(self): method validate (line 556) | def validate(self, required=True): method by_domain (line 578) | def by_domain(cls, domain): method all_ids (line 582) | def all_ids(cls): method all (line 587) | def all(cls): method is_static (line 592) | def is_static(self): method deactivate (line 595) | def deactivate(self, initiated_by=None): method get_case_type_or_xmlns_filter (line 601) | def get_case_type_or_xmlns_filter(self): method _filter_interploation_helper (line 616) | def _filter_interploation_helper(self, config_filter, property_name): method pk_columns (line 646) | def pk_columns(self): method set_rebuild_flags (line 658) | def set_rebuild_flags(self): method set_build_queued (line 685) | def set_build_queued(self, *, reset_init_fin=True): method set_build_not_required (line 691) | def set_build_not_required(self): method save_build_started (line 696) | def save_build_started(self, *, in_place=False): method save_build_resumed (line 711) | def save_build_resumed(self): method save_build_finished (line 715) | def save_build_finished(self, *, in_place=False): method save_rebuilt_async (line 741) | def save_rebuilt_async(self): class RegistryDataSourceConfiguration (line 747) | class RegistryDataSourceConfiguration(DataSourceConfiguration): method registry_helper (line 758) | def registry_helper(self): method data_domains (line 762) | def data_domains(self): method validate (line 768) | def validate(self, required=True): method _get_domain_filter_spec (line 774) | def _get_domain_filter_spec(self): method default_indicators (line 787) | def default_indicators(self): method by_domain (line 807) | def by_domain(cls, domain): method all_ids (line 811) | def all_ids(cls): method get_report_count (line 814) | def get_report_count(self): class ReportMeta (line 821) | class ReportMeta(DocumentSchema): class ReportConfiguration (line 835) | class ReportConfiguration(QuickCachedDocumentMixin, Document): class Meta (line 857) | class Meta(object): method __str__ (line 861) | def __str__(self): method save (line 864) | def save(self, *args, **kwargs): method filters_without_prefilters (line 870) | def filters_without_prefilters(self): method prefilters (line 875) | def prefilters(self): method config (line 880) | def config(self): method report_columns (line 885) | def report_columns(self): method report_columns_by_column_id (line 890) | def report_columns_by_column_id(self): method ui_filters (line 895) | def ui_filters(self): method charts (line 900) | def charts(self): method _get_expanded_y_axis_cols_for_multibar (line 913) | def _get_expanded_y_axis_cols_for_multibar(self, original_y_axis_colum... method get_expanded_columns (line 934) | def get_expanded_columns(self, column_config): method cached_data_source (line 943) | def cached_data_source(self): method location_column_id (line 949) | def location_column_id(self): method map_config (line 955) | def map_config(self): method report_type (line 974) | def report_type(self): method sort_order (line 983) | def sort_order(self): method table_id (line 987) | def table_id(self): method get_ui_filter (line 990) | def get_ui_filter(self, filter_slug): method get_languages (line 996) | def get_languages(self): method validate (line 1008) | def validate(self, required=True): method by_domain (line 1041) | def by_domain(cls, domain): method count_by_data_source (line 1046) | def count_by_data_source(cls, domain, data_source_id): method clear_caches (line 1049) | def clear_caches(self): method is_static (line 1055) | def is_static(self): class RegistryReportConfiguration (line 1063) | class RegistryReportConfiguration(ReportConfiguration): method by_domain (line 1067) | def by_domain(cls, domain): method count_by_data_source (line 1072) | def count_by_data_source(cls, domain, data_source_id): method registry_slug (line 1076) | def registry_slug(self): method registry_helper (line 1080) | def registry_helper(self): method config (line 1085) | def config(self): class StaticDataSourceConfiguration (line 1095) | class StaticDataSourceConfiguration(JsonObject): method get_doc_id (line 1112) | def get_doc_id(cls, domain, table_id): method by_id_mapping (line 1117) | def by_id_mapping(cls): method _all (line 1126) | def _all(cls): method all (line 1149) | def all(cls): method by_domain (line 1156) | def by_domain(cls, domain): method by_id (line 1164) | def by_id(cls, config_id): method _get_datasource_config (line 1175) | def _get_datasource_config(cls, static_config, domain): class StaticReportConfiguration (line 1182) | class StaticReportConfiguration(JsonObject): method get_doc_id (line 1200) | def get_doc_id(cls, domain, report_id, custom_configurable_report): method _all (line 1208) | def _all(cls): method by_id_mapping (line 1225) | def by_id_mapping(cls): method all (line 1233) | def all(cls): method by_domain (line 1240) | def by_domain(cls, domain): method by_id (line 1251) | def by_id(cls, config_id, domain): method by_ids (line 1269) | def by_ids(cls, config_ids): method report_class_by_domain_and_id (line 1283) | def report_class_by_domain_and_id(cls, domain, config_id): method _get_report_config (line 1299) | def _get_report_config(cls, static_config, domain): class AsyncIndicator (line 1307) | class AsyncIndicator(models.Model): class Meta (line 1325) | class Meta(object): method update_record (line 1329) | def update_record(cls, doc_id, doc_type, domain, config_ids): method update_from_kafka_change (line 1368) | def update_from_kafka_change(cls, change, config_ids): method update_failure (line 1373) | def update_failure(self, to_remove): method bulk_creation (line 1381) | def bulk_creation(cls, doc_ids, doc_type, domain, config_ids): method bulk_update_records (line 1400) | def bulk_update_records(cls, configs_by_docs, domain, doc_type_by_id): class InvalidUCRData (line 1428) | class InvalidUCRData(models.Model): class Meta (line 1438) | class Meta(object): class UCRExpressionManager (line 1442) | class UCRExpressionManager(models.Manager): method get_expressions_for_domain (line 1443) | def get_expressions_for_domain(self, domain): method get_filters_for_domain (line 1446) | def get_filters_for_domain(self, domain): method get_wrapped_filters_for_domain (line 1449) | def get_wrapped_filters_for_domain(self, domain, factory_context): method get_wrapped_expressions_for_domain (line 1455) | def get_wrapped_expressions_for_domain(self, domain, factory_context): class LazyExpressionWrapper (line 1462) | class LazyExpressionWrapper: method __init__ (line 1469) | def __init__(self, expression, factory_context): method __call__ (line 1473) | def __call__(self, *args, **kwargs): method wrapped_expression (line 1477) | def wrapped_expression(self): class UCRExpression (line 1486) | class UCRExpression(models.Model): class Meta (line 1507) | class Meta: method wrapped_definition (line 1511) | def wrapped_definition(self, factory_context): method update_from_upstream (line 1517) | def update_from_upstream(self, upstream_ucr_expression): method __str__ (line 1525) | def __str__(self): function get_datasource_config (line 1533) | def get_datasource_config(config_id, domain): function id_is_static (line 1555) | def id_is_static(data_source_id): function report_config_id_is_static (line 1561) | def report_config_id_is_static(config_id): function is_data_registry_report (line 1574) | def is_data_registry_report(report_config, datasource=None): function get_report_configs (line 1582) | def get_report_configs(config_ids, domain): function get_report_config (line 1618) | def get_report_config(config_id, domain): function _get_wrapped_object_from_file (line 1627) | def _get_wrapped_object_from_file(path, wrapper): function _filter_by_server_env (line 1642) | def _filter_by_server_env(configs): class FilterValueEncoder (line 1652) | class FilterValueEncoder(DjangoJSONEncoder): method default (line 1653) | def default(self, obj): FILE: corehq/apps/userreports/operators.py function equal (line 7) | def equal(input, reference): function not_equal (line 11) | def not_equal(input, reference): function in_multiselect (line 15) | def in_multiselect(input, reference): function any_in_multiselect (line 19) | def any_in_multiselect(input, reference): function less_than (line 23) | def less_than(input, reference): function less_than_equal (line 27) | def less_than_equal(input, reference): function greater_than (line 31) | def greater_than(input, reference): function greater_than_equal (line 39) | def greater_than_equal(input, reference): function in_ (line 47) | def in_(input, reference): function regex_search (line 51) | def regex_search(input, reference): function get_operator (line 88) | def get_operator(slug): FILE: corehq/apps/userreports/pillow.py class WarmShutdown (line 50) | class WarmShutdown(object): method __enter__ (line 55) | def __enter__(self): method __exit__ (line 58) | def __exit__(self, exc_type, exc_value, traceback): method handler (line 63) | def handler(self, signum, frame): function time_ucr_process_change (line 67) | def time_ucr_process_change(method): function _filter_by_hash (line 84) | def _filter_by_hash(configs, ucr_division): function _filter_domains_to_skip (line 93) | def _filter_domains_to_skip(configs): function _filter_invalid_config (line 103) | def _filter_invalid_config(configs): function _get_indicator_adapter_for_pillow (line 119) | def _get_indicator_adapter_for_pillow(config): class UcrTableManager (line 123) | class UcrTableManager(ABC): method __init__ (line 126) | def __init__(self, bootstrap_interval, run_migrations, adapter_cache): method configure_dedicated_migration_process (line 141) | def configure_dedicated_migration_process(self): method run_migrations (line 155) | def run_migrations(self): method refresh_cache (line 178) | def refresh_cache(self): method get_adapters (line 181) | def get_adapters(self, domain): method _rebuild (line 190) | def _rebuild(self, adapters): method remove_adapter (line 199) | def remove_adapter(self, domain, adapter): method iter_adapters (line 209) | def iter_adapters(self, domain=None, *, since=None): method iter_configs (line 236) | def iter_configs(self, domain): method iter_configs_since (line 251) | def iter_configs_since(self, timestamp): class ConfigurableReportTableManager (line 258) | class ConfigurableReportTableManager(UcrTableManager): method __init__ (line 260) | def __init__(self, data_source_providers, ucr_division=None, method iter_configs (line 280) | def iter_configs(self, domain): method iter_configs_since (line 286) | def iter_configs_since(self, timestamp): method _filter_configs (line 299) | def _filter_configs(self, configs): class RegistryDataSourceTableManager (line 320) | class RegistryDataSourceTableManager(UcrTableManager): method __init__ (line 322) | def __init__(self, bootstrap_interval=None, run_migrations=True, adapt... method iter_configs (line 328) | def iter_configs(self, domain): method iter_configs_since (line 334) | def iter_configs_since(self, timestamp): class ConfigurableReportPillowProcessor (line 342) | class ConfigurableReportPillowProcessor(BulkPillowProcessor): method __init__ (line 354) | def __init__(self, table_manager): method _save_doc_to_table (line 360) | def _save_doc_to_table(self, domain, table, doc, eval_context): method process_changes_chunk (line 368) | def process_changes_chunk(self, changes): method _process_chunk_for_domain (line 396) | def _process_chunk_for_domain(self, domain, changes_chunk, adapters): method _metrics_timer (line 463) | def _metrics_timer(self, step, config_id=None): method _per_config_metrics_timer (line 475) | def _per_config_metrics_timer(self, step, config_id): method process_change (line 486) | def process_change(self, change): method checkpoint_updated (line 530) | def checkpoint_updated(self): method configure_dedicated_migration_process (line 546) | def configure_dedicated_migration_process(self): method run_migrations (line 549) | def run_migrations(self): class ConfigurableReportKafkaPillow (line 553) | class ConfigurableReportKafkaPillow(ConstructedPillow): method __init__ (line 556) | def __init__(self, processor, pillow_name, topics, num_processes, proc... function get_ucr_processor (line 584) | def get_ucr_processor(data_source_providers, function get_data_registry_ucr_processor (line 602) | def get_data_registry_ucr_processor(run_migrations): function get_kafka_ucr_pillow (line 610) | def get_kafka_ucr_pillow(pillow_id='kafka-ucr-main', ucr_division=None, function get_kafka_ucr_static_pillow (line 641) | def get_kafka_ucr_static_pillow(pillow_id='kafka-ucr-static', ucr_divisi... function get_location_pillow (line 676) | def get_location_pillow(pillow_id='location-ucr-pillow', include_ucrs=None, function get_kafka_ucr_registry_pillow (line 711) | def get_kafka_ucr_registry_pillow( FILE: corehq/apps/userreports/pillow_utils.py function _is_datasource_active (line 25) | def _is_datasource_active(adapter): function rebuild_sql_tables (line 38) | def rebuild_sql_tables(adapters): function migrate_tables_with_logging (line 89) | def migrate_tables_with_logging(engine, diffs, table_names, adapters_by_... function rebuild_table (line 106) | def rebuild_table(adapter, diffs=None): class TaskCoordinator (line 127) | class TaskCoordinator: method __init__ (line 135) | def __init__(self, name, interval, django_cache=_django_cache): method should_run (line 141) | def should_run(self, task_key): method reset (line 175) | def reset(self, task_key): method _get_key (line 186) | def _get_key(self, task_key): method _update_local_cache (line 190) | def _update_local_cache(self, task_key, now): FILE: corehq/apps/userreports/rebuild.py function get_redis_key_for_config (line 19) | def get_redis_key_for_config(config): class MigrateRebuildTables (line 28) | class MigrateRebuildTables(object): function get_table_diffs (line 33) | def get_table_diffs(engine, table_names, metadata): function get_tables_rebuild_migrate (line 43) | def get_tables_rebuild_migrate(diffs): function get_tables_with_index_diff_only (line 52) | def get_tables_with_index_diff_only(diffs, index_column): function get_tables_to_migrate (line 87) | def get_tables_to_migrate(diffs): function _filter_diffs (line 93) | def _filter_diffs(diffs, types): function migrate_tables (line 101) | def migrate_tables(engine, diffs): function add_columns (line 111) | def add_columns(engine, diffs): function apply_index_changes (line 127) | def apply_index_changes(engine, diffs): function _get_indexes_diffs_to_change (line 147) | def _get_indexes_diffs_to_change(diffs): FILE: corehq/apps/userreports/reports/builder/__init__.py function make_case_property_indicator (line 24) | def make_case_property_indicator(property_name, column_id=None, datatype... function make_multiselect_question_indicator (line 65) | def make_multiselect_question_indicator(question, column_id=None): function get_filter_format_from_question_type (line 77) | def get_filter_format_from_question_type(question_type): FILE: corehq/apps/userreports/reports/builder/columns.py class ColumnOption (line 26) | class ColumnOption(object): method __init__ (line 32) | def __init__(self, property, data_types, default_display): method get_default_display (line 38) | def get_default_display(self): method get_property (line 41) | def get_property(self): method to_view_model (line 44) | def to_view_model(self): method aggregation_options (line 56) | def aggregation_options(self): method _get_ucr_aggregation (line 62) | def _get_ucr_aggregation(self, ui_aggregation): method _get_indicator (line 82) | def _get_indicator(self, ui_aggregation, is_multiselect_chart_report=F... method get_indicators (line 89) | def get_indicators(self, ui_aggregation): method to_column_dicts (line 95) | def to_column_dicts(self, index, display_text, ui_aggregation, is_aggr... method _has_a_numeric_type (line 117) | def _has_a_numeric_type(self): class QuestionColumnOption (line 121) | class QuestionColumnOption(ColumnOption): method __init__ (line 126) | def __init__(self, property, data_types, default_display, question_sou... method to_view_model (line 130) | def to_view_model(self): method _get_indicator (line 135) | def _get_indicator(self, ui_aggregation, is_multiselect_chart_report=F... class FormMetaColumnOption (line 153) | class FormMetaColumnOption(ColumnOption): method __init__ (line 159) | def __init__(self, property, data_types, default_display, meta_propert... method _get_indicator (line 163) | def _get_indicator(self, ui_aggregation, is_multiselect_chart_report=F... class MultiselectQuestionColumnOption (line 176) | class MultiselectQuestionColumnOption(QuestionColumnOption): method __init__ (line 183) | def __init__(self, property, default_display, question_source): method to_column_dicts (line 188) | def to_column_dicts(self, index, display_text, ui_aggregation, is_aggr... method _get_filter_and_agg_indicator (line 215) | def _get_filter_and_agg_indicator(self): method _get_choice_indicator (line 223) | def _get_choice_indicator(self): method get_indicators (line 233) | def get_indicators(self, ui_aggregation): method _get_indicator (line 240) | def _get_indicator(self, ui_aggregation, is_multiselect_chart_report=F... class CasePropertyColumnOption (line 255) | class CasePropertyColumnOption(ColumnOption): method _get_datatype (line 257) | def _get_datatype(self, ui_aggregation): method _get_indicator (line 270) | def _get_indicator(self, ui_aggregation, is_multiselect_chart_report=F... class UsernameComputedCasePropertyOption (line 275) | class UsernameComputedCasePropertyOption(ColumnOption): method _get_indicator (line 276) | def _get_indicator(self, ui_aggregation, is_multiselect_chart_report=F... method to_column_dicts (line 292) | def to_column_dicts(self, index, display_text, ui_aggregation, is_aggr... class OwnernameComputedCasePropertyOption (line 303) | class OwnernameComputedCasePropertyOption(ColumnOption): method _get_indicator (line 304) | def _get_indicator(self, ui_aggregation, is_multiselect_chart_report=F... method to_column_dicts (line 320) | def to_column_dicts(self, index, display_text, ui_aggregation, is_aggr... class CountColumn (line 331) | class CountColumn(ColumnOption): method __init__ (line 332) | def __init__(self, default_display): method _get_ucr_aggregation (line 335) | def _get_ucr_aggregation(self, ui_aggregation): method _get_indicator (line 344) | def _get_indicator(self, ui_aggregation, is_multiselect_chart_report=F... method to_column_dicts (line 360) | def to_column_dicts(self, index, display_text, ui_aggregation, is_aggr... method aggregation_options (line 367) | def aggregation_options(self): class RawPropertyColumnOption (line 375) | class RawPropertyColumnOption(ColumnOption): method __init__ (line 380) | def __init__(self, property, data_types, default_display, source): method _get_indicator (line 384) | def _get_indicator(self, ui_aggregation, is_multiselect_chart_report=F... FILE: corehq/apps/userreports/reports/builder/filter_formats.py function get_pre_filter_format (line 4) | def get_pre_filter_format(pre_filter_dict): FILE: corehq/apps/userreports/reports/builder/forms.py class FilterField (line 114) | class FilterField(JsonField): method validate (line 120) | def validate(self, value): class DataSourceProperty (line 127) | class DataSourceProperty(object): method __init__ (line 145) | def __init__(self, type, id, text, source, data_types): method to_view_model (line 152) | def to_view_model(self): method get_text (line 163) | def get_text(self): method get_type (line 166) | def get_type(self): method get_id (line 169) | def get_id(self): method get_source (line 172) | def get_source(self): method to_report_column_option (line 175) | def to_report_column_option(self): method _get_filter_format (line 199) | def _get_filter_format(self, filter_configuration): method _get_ui_aggregation_for_filter_format (line 214) | def _get_ui_aggregation_for_filter_format(self, filter_format): method to_report_filter (line 225) | def to_report_filter(self, configuration, index): method to_report_filter_indicator (line 297) | def to_report_filter_indicator(self, configuration): class ReportBuilderDataSourceInterface (line 306) | class ReportBuilderDataSourceInterface(metaclass=ABCMeta): method report_config_class (line 316) | def report_config_class(self): method uses_managed_data_source (line 322) | def uses_managed_data_source(self): method data_source_properties (line 337) | def data_source_properties(self): method report_column_options (line 374) | def report_column_options(self): class ManagedReportBuilderDataSourceHelper (line 378) | class ManagedReportBuilderDataSourceHelper(ReportBuilderDataSourceInterf... method __init__ (line 389) | def __init__(self, domain, source_type, source_id): method uses_managed_data_source (line 398) | def uses_managed_data_source(self): method report_config_class (line 402) | def report_config_class(self): method uses_registry_data_source (line 406) | def uses_registry_data_source(self): method source_doc_type (line 420) | def source_doc_type(self): method filter (line 426) | def filter(self): method base_item_expression (line 433) | def base_item_expression(self, is_multiselect_chart_report, multiselec... method indicators (line 436) | def indicators(self, columns, filters, as_dict=False): method all_possible_indicators (line 474) | def all_possible_indicators(self, required_columns, required_filters): method data_source_properties (line 491) | def data_source_properties(self): method report_column_options (line 496) | def report_column_options(self): method data_source_name (line 511) | def data_source_name(self): method construct_data_source (line 514) | def construct_data_source(self, table_id, **kwargs): method _ds_config_kwargs (line 521) | def _ds_config_kwargs(self, indicators, is_multiselect_chart_report=Fa... method _get_data_source_build_information (line 536) | def _get_data_source_build_information(self): method get_temp_datasource_constructor_kwargs (line 539) | def get_temp_datasource_constructor_kwargs(self, required_columns, req... method get_datasource_constructor_kwargs (line 545) | def get_datasource_constructor_kwargs(self, columns, filters, method _remove_defaults_from_indicators (line 552) | def _remove_defaults_from_indicators(self, indicators): method _get_datasource_default_columns (line 559) | def _get_datasource_default_columns(self): class UnmanagedDataSourceHelper (line 567) | class UnmanagedDataSourceHelper(ReportBuilderDataSourceInterface): method __init__ (line 572) | def __init__(self, domain, app, source_type, source_id): method uses_managed_data_source (line 581) | def uses_managed_data_source(self): method report_config_class (line 585) | def report_config_class(self): method data_source (line 593) | def data_source(self): method data_source_properties (line 597) | def data_source_properties(self): method report_column_options (line 615) | def report_column_options(self): class ApplicationFormDataSourceHelper (line 623) | class ApplicationFormDataSourceHelper(ManagedReportBuilderDataSourceHelp... method __init__ (line 624) | def __init__(self, domain, app, source_type, source_id): method base_item_expression (line 631) | def base_item_expression(self, is_multiselect_chart_report, multiselec... method source_doc_type (line 689) | def source_doc_type(self): method uses_registry_data_source (line 693) | def uses_registry_data_source(self): method filter (line 698) | def filter(self): method data_source_properties (line 704) | def data_source_properties(self): method _get_data_source_build_information (line 750) | def _get_data_source_build_information(self): method data_source_name (line 759) | def data_source_name(self): class CaseDataSourceHelper (line 764) | class CaseDataSourceHelper(ManagedReportBuilderDataSourceHelper): method source_doc_type (line 770) | def source_doc_type(self): method filter (line 775) | def filter(self): method base_item_expression (line 778) | def base_item_expression(self, is_multiselect_chart_report, multiselec... method data_source_properties (line 784) | def data_source_properties(self): method _get_case_id_pseudo_property (line 821) | def _get_case_id_pseudo_property(): method _get_owner_name_pseudo_property (line 831) | def _get_owner_name_pseudo_property(): method _get_owner_location_pseudo_property (line 844) | def _get_owner_location_pseudo_property(cls): method _get_owner_location_with_descendants_pseudo_property (line 856) | def _get_owner_location_with_descendants_pseudo_property(cls): method _get_owner_location_archived_with_descendants_pseudo_property (line 867) | def _get_owner_location_archived_with_descendants_pseudo_property(cls): method _get_user_name_pseudo_property (line 878) | def _get_user_name_pseudo_property(): class ApplicationCaseDataSourceHelper (line 891) | class ApplicationCaseDataSourceHelper(CaseDataSourceHelper): method __init__ (line 892) | def __init__(self, domain, app, source_type, source_id): method _get_data_source_build_information (line 902) | def _get_data_source_build_information(self): method uses_registry_data_source (line 910) | def uses_registry_data_source(self): method data_source_name (line 915) | def data_source_name(self): class RegistryCaseDataSourceHelper (line 920) | class RegistryCaseDataSourceHelper(CaseDataSourceHelper): method __init__ (line 921) | def __init__(self, domain, registry_slug, source_type, source_id): method _get_data_source_build_information (line 933) | def _get_data_source_build_information(self): method uses_registry_data_source (line 940) | def uses_registry_data_source(self): method data_source_name (line 945) | def data_source_name(self): method data_source_properties (line 950) | def data_source_properties(self): method construct_data_source (line 961) | def construct_data_source(self, table_id, **kwargs): method _get_datasource_default_columns (line 969) | def _get_datasource_default_columns(self): function get_data_source_interface (line 977) | def get_data_source_interface(domain, app, source_type, source_id, regis... class DataSourceForm (line 990) | class DataSourceForm(forms.Form): method __init__ (line 993) | def __init__(self, domain, max_allowed_reports, request_user, *args, *... method get_data_layout (line 1038) | def get_data_layout(self): method sources_map (line 1076) | def sources_map(self): method dropdown_map (line 1080) | def dropdown_map(self): method get_selected_source (line 1083) | def get_selected_source(self): method clean (line 1086) | def clean(self): class ConfigureNewReportBase (line 1116) | class ConfigureNewReportBase(forms.Form): method __init__ (line 1122) | def __init__(self, domain, report_name, app_id, source_type, report_so... method _bootstrap (line 1159) | def _bootstrap(self, existing_report): method _configured_columns (line 1183) | def _configured_columns(self): method _get_data_source_configuration_kwargs (line 1197) | def _get_data_source_configuration_kwargs(self): method _build_data_source (line 1207) | def _build_data_source(self): method update_report (line 1222) | def update_report(self): method _update_data_source_if_necessary (line 1237) | def _update_data_source_if_necessary(self): method create_report (line 1263) | def create_report(self): method create_temp_report (line 1296) | def create_temp_report(self, data_source_id, username): method create_temp_data_source_if_necessary (line 1322) | def create_temp_data_source_if_necessary(self, username): method _filter_data_source_changes (line 1359) | def _filter_data_source_changes(data_source_config_id): method _update_temp_datasource (line 1375) | def _update_temp_datasource(self, data_source_config_id, username): method initial_default_filters (line 1408) | def initial_default_filters(self): method initial_user_filters (line 1413) | def initial_user_filters(self): method _default_case_report_filters (line 1425) | def _default_case_report_filters(self): method _default_form_report_filters (line 1445) | def _default_form_report_filters(self): method _get_view_model (line 1456) | def _get_view_model(self, filter): method _get_default_filter_view_model_from_pre_filter (line 1489) | def _get_default_filter_view_model_from_pre_filter(self, field, pre_fi... method _get_column_option_by_indicator_id (line 1500) | def _get_column_option_by_indicator_id(self, indicator_column_id): method _get_property_id_by_indicator_id (line 1512) | def _get_property_id_by_indicator_id(self, indicator_column_id): method _check_and_update_column (line 1524) | def _check_and_update_column(self, column_id): method _get_multiselect_indicator_id (line 1549) | def _get_multiselect_indicator_id(self, column_field, indicators): method _report_aggregation_cols (line 1562) | def _report_aggregation_cols(self): method _get_report_columns (line 1565) | def _get_report_columns(self): method _report_columns (line 1578) | def _report_columns(self): method _is_multiselect_chart_report (line 1585) | def _is_multiselect_chart_report(self): method _report_filters (line 1589) | def _report_filters(self): method _convert_closed_filter_to_choice_list (line 1609) | def _convert_closed_filter_to_choice_list(cls, filters): method _report_charts (line 1619) | def _report_charts(self): class ConfigureListReportForm (line 1623) | class ConfigureListReportForm(ConfigureNewReportBase): method initial_columns (line 1634) | def initial_columns(self): method _get_default_columns (line 1679) | def _get_default_columns(self): method _get_default_case_report_columns (line 1687) | def _get_default_case_report_columns(self): method _get_default_form_report_columns (line 1728) | def _get_default_form_report_columns(self): method _get_default_raw_report_columns (line 1754) | def _get_default_raw_report_columns(self): method _report_columns (line 1775) | def _report_columns(self): method _build_report_columns (line 1780) | def _build_report_columns(self, ui_aggregation_override=None, is_aggre... method _report_aggregation_cols (line 1798) | def _report_aggregation_cols(self): class ConfigureTableReportForm (line 1802) | class ConfigureTableReportForm(ConfigureListReportForm): method _report_charts (line 1807) | def _report_charts(self): method _is_multiselect_chart_report (line 1837) | def _is_multiselect_chart_report(self): method _report_columns (line 1850) | def _report_columns(self): method _report_aggregation_cols (line 1855) | def _report_aggregation_cols(self): class ConfigureMapReportForm (line 1862) | class ConfigureMapReportForm(ConfigureListReportForm): method __init__ (line 1866) | def __init__(self, domain, report_name, app_id, source_type, report_so... method _location_choices (line 1879) | def _location_choices(self): method initial_columns (line 1884) | def initial_columns(self): method location_field (line 1897) | def location_field(self): method _report_columns (line 1901) | def _report_columns(self): FILE: corehq/apps/userreports/reports/builder/sources.py function get_source_type_from_report_config (line 7) | def get_source_type_from_report_config(report_config): FILE: corehq/apps/userreports/reports/data_source.py class ConfigurableReportDataSource (line 15) | class ConfigurableReportDataSource(object): method __init__ (line 21) | def __init__(self, domain, config_or_config_id, filters, aggregation_c... method from_spec (line 46) | def from_spec(cls, spec, include_prefilters=False): method track_load (line 60) | def track_load(self, value): method backend (line 67) | def backend(self): method data_source (line 71) | def data_source(self): method lang (line 88) | def lang(self): method lang (line 92) | def lang(self, lang): method config (line 96) | def config(self): method top_level_columns (line 102) | def top_level_columns(self): method set_filter_values (line 105) | def set_filter_values(self, filter_values): method set_defer_fields (line 108) | def set_defer_fields(self, defer_fields): method set_order_by (line 111) | def set_order_by(self, columns): method group_by (line 115) | def group_by(self): method columns (line 119) | def columns(self): method inner_columns (line 123) | def inner_columns(self): method column_warnings (line 127) | def column_warnings(self): method get_data (line 130) | def get_data(self, start=None, limit=None): method has_total_row (line 136) | def has_total_row(self): method get_total_records (line 139) | def get_total_records(self): method get_total_row (line 142) | def get_total_row(self): method total_column_ids (line 146) | def total_column_ids(self): method final_column_ids (line 150) | def final_column_ids(self): FILE: corehq/apps/userreports/reports/factory.py class ReportColumnFactory (line 86) | class ReportColumnFactory(object): method from_spec (line 101) | def from_spec(cls, spec, is_static, domain=None): class ChartFactory (line 125) | class ChartFactory(object): method from_spec (line 133) | def from_spec(cls, spec): class ReportOrderByFactory (line 148) | class ReportOrderByFactory(object): method from_spec (line 151) | def from_spec(cls, spec): class SumWhenTemplateFactory (line 155) | class SumWhenTemplateFactory(object): method make_template (line 214) | def make_template(cls, spec): FILE: corehq/apps/userreports/reports/filters/choice_providers.py class ChoiceQueryContext (line 34) | class ChoiceQueryContext(object): method __init__ (line 39) | def __init__(self, query=None, limit=20, offset=None, page=None, user=... class ChoiceProvider (line 58) | class ChoiceProvider(metaclass=ABCMeta): method __init__ (line 61) | def __init__(self, report, filter_slug): method configure (line 65) | def configure(self, spec): method report_filter (line 72) | def report_filter(self): method domain (line 76) | def domain(self): method query (line 80) | def query(self, query_context): method get_sorted_choices_for_values (line 83) | def get_sorted_choices_for_values(self, values, user): method get_choices_for_values (line 87) | def get_choices_for_values(self, values, user): method get_choices_for_known_values (line 100) | def get_choices_for_known_values(self, values, user): class SearchableChoice (line 104) | class SearchableChoice(Choice): method __new__ (line 106) | def __new__(cls, value, display, searchable_text=None): class StaticChoiceProvider (line 113) | class StaticChoiceProvider(ChoiceProvider): method __init__ (line 115) | def __init__(self, choices): method query (line 129) | def query(self, query_context): method get_choices_for_known_values (line 138) | def get_choices_for_known_values(self, values, user): method default_value (line 142) | def default_value(self, user): class ChainableChoiceProvider (line 146) | class ChainableChoiceProvider(ChoiceProvider, metaclass=ABCMeta): method query (line 148) | def query(self, query_context): method get_choices_for_known_values (line 152) | def get_choices_for_known_values(self, values, user): method query_count (line 156) | def query_count(self, query_context): method default_value (line 160) | def default_value(self, user): class DataSourceColumnChoiceProvider (line 164) | class DataSourceColumnChoiceProvider(ChoiceProvider): method query (line 166) | def query(self, query_context): method query_count (line 179) | def query_count(self, query): method _adapter (line 185) | def _adapter(self): method _sql_column (line 189) | def _sql_column(self): method get_values_for_query (line 195) | def get_values_for_query(self, query_context): method get_choices_for_known_values (line 208) | def get_choices_for_known_values(self, values, user): method default_value (line 211) | def default_value(self, user): method _make_choice_from_value (line 214) | def _make_choice_from_value(self, value): method _deduplicate_and_sort_choices (line 220) | def _deduplicate_and_sort_choices(choices): method _deduplicate_choices (line 225) | def _deduplicate_choices(choices): class MultiFieldDataSourceColumnChoiceProvider (line 231) | class MultiFieldDataSourceColumnChoiceProvider(DataSourceColumnChoicePro... method _sql_columns (line 234) | def _sql_columns(self): method get_values_for_query (line 240) | def get_values_for_query(self, query_context): class LocationChoiceProvider (line 267) | class LocationChoiceProvider(ChainableChoiceProvider): method __init__ (line 271) | def __init__(self, report, filter_slug): method configure (line 278) | def configure(self, spec): method _locations_query (line 284) | def _locations_query(self, query_text, user): method query (line 297) | def query(self, query_context): method query_count (line 308) | def query_count(self, query, user): method get_choices_for_known_values (line 311) | def get_choices_for_known_values(self, values, user): method default_value (line 326) | def default_value(self, user): method _locations_to_choices (line 336) | def _locations_to_choices(self, locations): class UserChoiceProvider (line 352) | class UserChoiceProvider(ChainableChoiceProvider): method query (line 354) | def query(self, query_context): method query_count (line 360) | def query_count(self, query, user=None): method get_choices_for_known_values (line 364) | def get_choices_for_known_values(self, values, user): method get_choices_from_es_query (line 369) | def get_choices_from_es_query(user_es): method default_value (line 373) | def default_value(self, user): class GroupChoiceProvider (line 377) | class GroupChoiceProvider(ChainableChoiceProvider): method query (line 379) | def query(self, query_context): method query_count (line 387) | def query_count(self, query, user=None): method get_choices_for_known_values (line 394) | def get_choices_for_known_values(self, values, user): method get_choices_from_es_query (line 399) | def get_choices_from_es_query(group_es): method default_value (line 403) | def default_value(self, user): class DomainChoiceProvider (line 407) | class DomainChoiceProvider(ChainableChoiceProvider): method _query_domains (line 410) | def _query_domains(self, domain, query_text, user): method query (line 423) | def query(self, query_context): method query_count (line 430) | def query_count(self, query, user=None): method get_choices_for_known_values (line 433) | def get_choices_for_known_values(self, values, user): method default_value (line 438) | def default_value(self, user): method _domains_to_choices (line 441) | def _domains_to_choices(self, domains): class AbstractMultiProvider (line 445) | class AbstractMultiProvider(ChoiceProvider): method __init__ (line 449) | def __init__(self, report, filter_slug): method query (line 459) | def query(self, query_context): method get_choices_for_known_values (line 492) | def get_choices_for_known_values(self, values, user): class OwnerChoiceProvider (line 504) | class OwnerChoiceProvider(AbstractMultiProvider): FILE: corehq/apps/userreports/reports/filters/factory.py function _build_date_filter (line 47) | def _build_date_filter(spec, report): function _build_quarter_filter (line 56) | def _build_quarter_filter(spec, report): function _build_numeric_filter (line 65) | def _build_numeric_filter(spec, report): function _build_pre_filter (line 73) | def _build_pre_filter(spec, report): function _build_choice_list_filter (line 83) | def _build_choice_list_filter(spec, report): function _build_dynamic_choice_list_filter (line 100) | def _build_dynamic_choice_list_filter(spec, report): function _build_multi_field_dynamic_choice_list_filter (line 131) | def _build_multi_field_dynamic_choice_list_filter(spec, report): function _build_location_drilldown_filter (line 147) | def _build_location_drilldown_filter(spec, report): class ReportFilterFactory (line 170) | class ReportFilterFactory(object): method from_spec (line 183) | def from_spec(cls, spec, report=None): method validate_spec (line 194) | def validate_spec(cls, spec): class FilterChoiceProviderFactory (line 204) | class FilterChoiceProviderFactory(object): method from_spec (line 214) | def from_spec(cls, choice_provider_spec): class MultiFieldChoiceProviderFactory (line 218) | class MultiFieldChoiceProviderFactory(FilterChoiceProviderFactory): FILE: corehq/apps/userreports/reports/filters/specs.py class FilterValueFactory (line 31) | class FilterValueFactory: method from_spec (line 44) | def from_spec(cls, spec, value): function create_filter_value (line 48) | def create_filter_value(raw_filter_spec, value): class FilterChoice (line 52) | class FilterChoice(JsonObject): method get_display (line 56) | def get_display(self): class FilterSpec (line 60) | class FilterSpec(JsonObject): method get_display (line 79) | def get_display(self): method wrap (line 83) | def wrap(cls, *args, **kwargs): class DateFilterSpec (line 98) | class DateFilterSpec(FilterSpec): class QuarterFilterSpec (line 102) | class QuarterFilterSpec(FilterSpec): class ChoiceListFilterSpec (line 107) | class ChoiceListFilterSpec(FilterSpec): class DynamicChoiceListFilterSpec (line 114) | class DynamicChoiceListFilterSpec(FilterSpec): method get_choice_provider_spec (line 121) | def get_choice_provider_spec(self): method choices (line 125) | def choices(self): class MultiFieldDynamicChoiceFilterSpec (line 129) | class MultiFieldDynamicChoiceFilterSpec(DynamicChoiceListFilterSpec): class LocationDrilldownFilterSpec (line 134) | class LocationDrilldownFilterSpec(FilterSpec): class PreFilterSpec (line 142) | class PreFilterSpec(FilterSpec): class NumericFilterSpec (line 148) | class NumericFilterSpec(FilterSpec): FILE: corehq/apps/userreports/reports/filters/values.py class FilterValue (line 46) | class FilterValue(object): method __init__ (line 48) | def __init__(self, filter, value): method to_sql_filter (line 58) | def to_sql_filter(self): method to_sql_values (line 61) | def to_sql_values(self): class DateFilterValue (line 65) | class DateFilterValue(FilterValue): method __init__ (line 67) | def __init__(self, filter, value): method to_sql_filter (line 72) | def to_sql_filter(self): method to_sql_values (line 91) | def to_sql_values(self): method _offset_enddate (line 113) | def _offset_enddate(self, enddate): class QuarterFilterValue (line 120) | class QuarterFilterValue(FilterValue): method startdate_slug (line 123) | def startdate_slug(self): method enddate_slug (line 127) | def enddate_slug(self): method to_sql_filter (line 130) | def to_sql_filter(self): method to_sql_values (line 136) | def to_sql_values(self): class IsDistinctFromFilter (line 143) | class IsDistinctFromFilter(BasicFilter): method build_expression (line 145) | def build_expression(self): class NumericFilterValue (line 149) | class NumericFilterValue(FilterValue): method __init__ (line 160) | def __init__(self, filter, value): method to_sql_filter (line 168) | def to_sql_filter(self): method to_sql_values (line 174) | def to_sql_values(self): class BasicBetweenFilter (line 182) | class BasicBetweenFilter(BasicFilter): method build_expression (line 191) | def build_expression(self): class PreFilterValue (line 198) | class PreFilterValue(FilterValue): method _is_dyn_date (line 214) | def _is_dyn_date(self): method _is_list (line 217) | def _is_list(self): method _has_empty_value (line 224) | def _has_empty_value(self): method _is_empty (line 230) | def _is_empty(self): method _is_exists (line 237) | def _is_exists(self): method _array_filter (line 244) | def _array_filter(self): method _scalar_filter (line 252) | def _scalar_filter(self): method to_sql_filter (line 259) | def to_sql_filter(self): method to_sql_values (line 287) | def to_sql_values(self): class ChoiceListFilterValue (line 313) | class ChoiceListFilterValue(FilterValue): method __init__ (line 317) | def __init__(self, filter, value): method show_all (line 325) | def show_all(self): method is_null (line 329) | def is_null(self): method _get_value_without_nulls (line 332) | def _get_value_without_nulls(self): method _ancestor_filter (line 336) | def _ancestor_filter(self): method to_sql_filter (line 354) | def to_sql_filter(self): method to_sql_values (line 392) | def to_sql_values(self): class MultiFieldChoiceListFilterValue (line 408) | class MultiFieldChoiceListFilterValue(ChoiceListFilterValue): method to_sql_filter (line 411) | def to_sql_filter(self): class LocationDrilldownFilterValue (line 424) | class LocationDrilldownFilterValue(FilterValue): method show_all (line 429) | def show_all(self): method show_none (line 433) | def show_none(self): method _ancestor_filter (line 437) | def _ancestor_filter(self): method to_sql_filter (line 445) | def to_sql_filter(self): method to_sql_values (line 461) | def to_sql_values(self): class AncestorSQLParams (line 473) | class AncestorSQLParams(object): method __init__ (line 474) | def __init__(self, ancestor_expression, location_id): method sql_filter (line 478) | def sql_filter(self): method sql_value (line 482) | def sql_value(self): function dynamic_choice_list_url (line 500) | def dynamic_choice_list_url(domain, report, filter): FILE: corehq/apps/userreports/reports/specs.py class BaseReportColumn (line 69) | class BaseReportColumn(JsonObject): method restricted_to_static (line 77) | def restricted_to_static(cls, domain): method wrap (line 81) | def wrap(cls, obj): method get_header (line 86) | def get_header(self, lang): method get_column_ids (line 89) | def get_column_ids(self): method get_column_config (line 96) | def get_column_config(self, data_source_config, lang): method get_fields (line 99) | def get_fields(self, data_source_config=None, lang=None): class ReportColumn (line 107) | class ReportColumn(BaseReportColumn): method format_data (line 111) | def format_data(self, data): method get_format_fn (line 117) | def get_format_fn(self): method get_query_column_ids (line 125) | def get_query_column_ids(self): class FieldColumn (line 134) | class FieldColumn(ReportColumn): method wrap (line 150) | def wrap(cls, obj): method format_data (line 163) | def format_data(self, data): method get_column_config (line 172) | def get_column_config(self, data_source_config, lang): method get_fields (line 187) | def get_fields(self, data_source_config=None, lang=None): method _data_source_col_config (line 190) | def _data_source_col_config(self, data_source_config): method _column_data_type (line 195) | def _column_data_type(self, data_source_config): method _use_terms_aggregation_for_max_min (line 198) | def _use_terms_aggregation_for_max_min(self, data_source_config): method get_query_column_ids (line 205) | def get_query_column_ids(self): class LocationColumn (line 209) | class LocationColumn(ReportColumn): method format_data (line 214) | def format_data(self, data): method get_column_config (line 224) | def get_column_config(self, data_source_config, lang): class ExpandedColumn (line 237) | class ExpandedColumn(ReportColumn): method wrap (line 243) | def wrap(cls, obj): method get_column_config (line 249) | def get_column_config(self, data_source_config, lang): method get_fields (line 252) | def get_fields(self, data_source_config, lang): class AggregateDateColumn (line 258) | class AggregateDateColumn(ReportColumn): method get_column_config (line 266) | def get_column_config(self, data_source_config, lang): method _year_column_alias (line 281) | def _year_column_alias(self): method _month_column_alias (line 284) | def _month_column_alias(self): method get_format_fn (line 287) | def get_format_fn(self): method get_query_column_ids (line 295) | def get_query_column_ids(self): class _CaseExpressionColumn (line 299) | class _CaseExpressionColumn(ReportColumn): method get_column_config (line 311) | def get_column_config(self, data_source_config, lang): method get_whens (line 330) | def get_whens(self): method get_query_column_ids (line 333) | def get_query_column_ids(self): class IntegerBucketsColumn (line 337) | class IntegerBucketsColumn(_CaseExpressionColumn): method get_whens (line 344) | def get_whens(self): method _base_expression (line 356) | def _base_expression(self, bounds): class SumWhenColumn (line 360) | class SumWhenColumn(_CaseExpressionColumn): method restricted_to_static (line 366) | def restricted_to_static(cls, domain): class SumWhenTemplateColumn (line 374) | class SumWhenTemplateColumn(SumWhenColumn): method get_whens (line 378) | def get_whens(self): class PercentageColumn (line 389) | class PercentageColumn(ReportColumn): method get_column_config (line 398) | def get_column_config(self, data_source_config, lang): method get_format_fn (line 414) | def get_format_fn(self): method get_column_ids (line 469) | def get_column_ids(self): method get_fields (line 473) | def get_fields(self, data_source_config=None, lang=None): class ArrayAggLastValueReportColumn (line 477) | class ArrayAggLastValueReportColumn(ReportColumn): method get_column_config (line 483) | def get_column_config(self, data_source_config, lang): function _add_column_id_if_missing (line 504) | def _add_column_id_if_missing(obj): class CalculatedColumn (line 509) | class CalculatedColumn(namedtuple('CalculatedColumn', ['header', 'slug',... method data_tables_column (line 512) | def data_tables_column(self): class ExpressionColumn (line 517) | class ExpressionColumn(BaseReportColumn): method calculate_total (line 521) | def calculate_total(self): method wrapped_expression (line 528) | def wrapped_expression(self): method get_column_config (line 531) | def get_column_config(self, data_source_config, lang): method get_query_column_ids (line 543) | def get_query_column_ids(self): class ChartSpec (line 547) | class ChartSpec(JsonObject): method wrap (line 553) | def wrap(cls, obj): class PieChartSpec (line 559) | class PieChartSpec(ChartSpec): class GraphDisplayColumn (line 565) | class GraphDisplayColumn(JsonObject): method wrap (line 570) | def wrap(cls, obj): class MultibarChartSpec (line 577) | class MultibarChartSpec(ChartSpec): method wrap (line 585) | def wrap(cls, obj): class MultibarAggregateChartSpec (line 596) | class MultibarAggregateChartSpec(ChartSpec): class OrderBySpec (line 603) | class OrderBySpec(JsonObject): FILE: corehq/apps/userreports/reports/sum_when_templates.py class SumWhenTemplateSpec (line 13) | class SumWhenTemplateSpec(JsonObject): method bind_count (line 19) | def bind_count(self): class YearRangeTemplateSpec (line 25) | class YearRangeTemplateSpec(SumWhenTemplateSpec): class UnderXMonthsTemplateSpec (line 30) | class UnderXMonthsTemplateSpec(SumWhenTemplateSpec): class AdultFemaleMigrantDeathSpec (line 37) | class AdultFemaleMigrantDeathSpec(SumWhenTemplateSpec): class AdultFemaleResidentDeathSpec (line 42) | class AdultFemaleResidentDeathSpec(SumWhenTemplateSpec): class AgeAtDeathRangeMigrantSpec (line 47) | class AgeAtDeathRangeMigrantSpec(SumWhenTemplateSpec): class AgeAtDeathRangeResidentSpec (line 52) | class AgeAtDeathRangeResidentSpec(SumWhenTemplateSpec): class CCSPhaseNullTemplateSpec (line 57) | class CCSPhaseNullTemplateSpec(SumWhenTemplateSpec): class CCSPhaseTemplateSpec (line 62) | class CCSPhaseTemplateSpec(SumWhenTemplateSpec): class ComplementaryFeedingTemplateSpec (line 67) | class ComplementaryFeedingTemplateSpec(SumWhenTemplateSpec): class ClosedOnNullTemplateSpec (line 72) | class ClosedOnNullTemplateSpec(SumWhenTemplateSpec): class FemaleAgeAtDeathSpec (line 77) | class FemaleAgeAtDeathSpec(SumWhenTemplateSpec): class FemaleDeathTypeMigrantSpec (line 82) | class FemaleDeathTypeMigrantSpec(SumWhenTemplateSpec): class FemaleDeathTypeResidentSpec (line 87) | class FemaleDeathTypeResidentSpec(SumWhenTemplateSpec): class OpenDisabilityTypeSpec (line 92) | class OpenDisabilityTypeSpec(SumWhenTemplateSpec): class OpenFemaleSpec (line 97) | class OpenFemaleSpec(SumWhenTemplateSpec): class OpenFemaleDisabledSpec (line 102) | class OpenFemaleDisabledSpec(SumWhenTemplateSpec): class OpenFemaleHHCasteSpec (line 107) | class OpenFemaleHHCasteSpec(SumWhenTemplateSpec): class OpenFemaleHHCasteNotSpec (line 112) | class OpenFemaleHHCasteNotSpec(SumWhenTemplateSpec): class OpenFemaleHHMinoritySpec (line 117) | class OpenFemaleHHMinoritySpec(SumWhenTemplateSpec): class OpenFemaleMigrantSpec (line 122) | class OpenFemaleMigrantSpec(SumWhenTemplateSpec): class OpenFemaleMigrantDistinctFromSpec (line 127) | class OpenFemaleMigrantDistinctFromSpec(SumWhenTemplateSpec): class OpenFemaleResidentSpec (line 132) | class OpenFemaleResidentSpec(SumWhenTemplateSpec): class OpenMaleDisabledSpec (line 137) | class OpenMaleDisabledSpec(SumWhenTemplateSpec): class OpenMaleHHCasteSpec (line 142) | class OpenMaleHHCasteSpec(SumWhenTemplateSpec): class OpenMaleHHCasteNotSpec (line 147) | class OpenMaleHHCasteNotSpec(SumWhenTemplateSpec): class OpenMaleHHMinoritySpec (line 152) | class OpenMaleHHMinoritySpec(SumWhenTemplateSpec): class OpenMaleMigrantSpec (line 157) | class OpenMaleMigrantSpec(SumWhenTemplateSpec): class OpenMaleMigrantDistinctFromSpec (line 162) | class OpenMaleMigrantDistinctFromSpec(SumWhenTemplateSpec): class OpenMaleResidentSpec (line 167) | class OpenMaleResidentSpec(SumWhenTemplateSpec): class OpenPregnantMigrantSpec (line 172) | class OpenPregnantMigrantSpec(SumWhenTemplateSpec): class OpenPregnantResidentSpec (line 177) | class OpenPregnantResidentSpec(SumWhenTemplateSpec): class ReachedReferralHealthProblemSpec (line 182) | class ReachedReferralHealthProblemSpec(SumWhenTemplateSpec): class ReachedReferralHealthProblem2ProblemsSpec (line 187) | class ReachedReferralHealthProblem2ProblemsSpec(SumWhenTemplateSpec): class ReachedReferralHealthProblem3ProblemsSpec (line 192) | class ReachedReferralHealthProblem3ProblemsSpec(SumWhenTemplateSpec): class ReachedReferralHealthProblem5ProblemsSpec (line 197) | class ReachedReferralHealthProblem5ProblemsSpec(SumWhenTemplateSpec): class ReferralHealthProblemSpec (line 202) | class ReferralHealthProblemSpec(SumWhenTemplateSpec): class ReferralHealthProblem2ProblemsSpec (line 207) | class ReferralHealthProblem2ProblemsSpec(SumWhenTemplateSpec): class ReferralHealthProblem3ProblemsSpec (line 212) | class ReferralHealthProblem3ProblemsSpec(SumWhenTemplateSpec): class ReferralHealthProblem5ProblemsSpec (line 217) | class ReferralHealthProblem5ProblemsSpec(SumWhenTemplateSpec): FILE: corehq/apps/userreports/reports/util.py function get_expanded_columns (line 9) | def get_expanded_columns(column_configs, data_source_config): function report_has_location_filter (line 21) | def report_has_location_filter(config_id, domain): class ReportExport (line 35) | class ReportExport(object): method __init__ (line 39) | def __init__(self, domain, title, report_config, lang, filter_values): method data_source (line 48) | def data_source(self): method create_export (line 57) | def create_export(self, file_path, format_, limit=None): method header_rows (line 66) | def header_rows(self): method get_data (line 73) | def get_data(self, limit=None): method total_rows (line 78) | def total_rows(self): method data_rows (line 82) | def data_rows(self, limit=None): method get_table_data (line 94) | def get_table_data(self, limit=None): method get_table (line 98) | def get_table(self, limit=None): FILE: corehq/apps/userreports/reports/view.py function get_filter_values (line 82) | def get_filter_values(filters, request_dict, user=None): function query_dict_to_dict (line 99) | def query_dict_to_dict(query_dict, domain, string_type_params): function delete_report_config (line 126) | def delete_report_config(report_config): function _ucr_view_is_safe (line 131) | def _ucr_view_is_safe(view_fn, *args, **kwargs): class ConfigurableReportView (line 137) | class ConfigurableReportView(JSONResponseMixin, BaseDomainView): method domain (line 152) | def domain(self): method dispatch (line 158) | def dispatch(self, request, *args, **kwargs): method should_redirect_to_paywall (line 166) | def should_redirect_to_paywall(self, request): method section_url (line 171) | def section_url(self): method is_static (line 175) | def is_static(self): method is_custom_rendered (line 179) | def is_custom_rendered(self): method spec (line 184) | def spec(self): method get_spec_or_404 (line 190) | def get_spec_or_404(self): method has_viable_configuration (line 197) | def has_viable_configuration(self): method title (line 206) | def title(self): method page_name (line 210) | def page_name(self): method data_source (line 215) | def data_source(self): method request_dict (line 222) | def request_dict(self): method request_user (line 233) | def request_user(self): method filter_values (line 241) | def filter_values(self): method filter_context (line 246) | def filter_context(self): method filters (line 254) | def filters(self): method report_config_id (line 260) | def report_config_id(self): method lang (line 268) | def lang(self): method get (line 273) | def get(self, request, *args, **kwargs): method post (line 320) | def post(self, request, *args, **kwargs): method has_permissions (line 330) | def has_permissions(self, domain, user): method add_warnings (line 333) | def add_warnings(self, request): method page_context (line 338) | def page_context(self): method js_options (line 362) | def js_options(self): method pop_report_builder_context_data (line 374) | def pop_report_builder_context_data(self): method saved_report_context_data (line 384) | def saved_report_context_data(self): method has_datespan (line 409) | def has_datespan(self): method datespan_filters (line 413) | def datespan_filters(self): method headers (line 420) | def headers(self): method sanitize_page (line 424) | def sanitize_page(cls, page): method _sanitize_column (line 432) | def _sanitize_column(cls, col): method get_ajax (line 437) | def get_ajax(self, params): method _get_initial (line 493) | def _get_initial(self, request, **kwargs): method url_pattern (line 497) | def url_pattern(cls): method type (line 503) | def type(self): method sub_slug (line 510) | def sub_slug(self): method get_report (line 517) | def get_report(cls, domain, slug, report_config_id): method url (line 527) | def url(self): method _get_filter_export_format (line 530) | def _get_filter_export_format(self, filter_value): method report_export (line 549) | def report_export(self): method export_table (line 553) | def export_table(self): method email_response (line 558) | def email_response(self): method excel_response (line 570) | def excel_response(self): method export_response (line 577) | def export_response(self): method sanitize_export_table (line 584) | def sanitize_export_table(cls, table): method report_preview_data (line 592) | def report_preview_data(cls, domain, report_config): class CustomConfigurableReport (line 606) | class CustomConfigurableReport(ConfigurableReportView): class CustomConfigurableReportDispatcher (line 611) | class CustomConfigurableReportDispatcher(ReportDispatcher): method _report_class (line 616) | def _report_class(domain, config_id): method dispatch (line 622) | def dispatch(self, request, domain, subreport_slug, **kwargs): method get_report (line 631) | def get_report(cls, domain, slug, config_id): method url_pattern (line 639) | def url_pattern(cls): class DownloadUCRStatusView (line 646) | class DownloadUCRStatusView(BaseDomainView): method section_url (line 652) | def section_url(self): method get (line 655) | def get(self, request, *args, **kwargs): method page_url (line 674) | def page_url(self): method parent_pages (line 678) | def parent_pages(self): method spec (line 686) | def spec(self): method is_static (line 693) | def is_static(self): method report_config_id (line 698) | def report_config_id(self): function _safe_download_poll (line 702) | def _safe_download_poll(view_fn, request, domain, download_id, *args, **... function ucr_download_job_poll (line 707) | def ucr_download_job_poll(request, domain, function _has_permission (line 722) | def _has_permission(domain, user, config_id): FILE: corehq/apps/userreports/specs.py function TypeProperty (line 13) | def TypeProperty(value): class BaseContainer (line 22) | class BaseContainer: method __init__ (line 26) | def __init__(self, factory_context, expressions, domain=None): method replace (line 32) | def replace(self, expressions): method __getitem__ (line 35) | def __getitem__(self, item): method _search_scope (line 48) | def _search_scope(self, name): method _get_db_expressions (line 60) | def _get_db_expressions(self): method _load_db_expressions (line 65) | def _load_db_expressions(self): class FilterContainer (line 69) | class FilterContainer(BaseContainer): method _load_db_expressions (line 70) | def _load_db_expressions(self): class ExpressionContainer (line 75) | class ExpressionContainer(BaseContainer): method _load_db_expressions (line 76) | def _load_db_expressions(self): class FactoryContext (line 81) | class FactoryContext: method __init__ (line 82) | def __init__(self, named_expressions, named_filters, domain=None): method expression_from_spec (line 87) | def expression_from_spec(self, spec): method filter_from_spec (line 91) | def filter_from_spec(self, spec): method get_named_filter (line 95) | def get_named_filter(self, name): method get_named_expression (line 101) | def get_named_expression(self, name): method empty (line 108) | def empty(domain=None): class EvaluationContext (line 112) | class EvaluationContext(object): method __init__ (line 118) | def __init__(self, root_doc, iteration=0): method exists_in_cache (line 125) | def exists_in_cache(self, key): method get_cache_value (line 128) | def get_cache_value(self, key, default=None): method set_cache_value (line 137) | def set_cache_value(self, key, value): method set_iteration_cache_value (line 140) | def set_iteration_cache_value(self, key, value): method increment_iteration (line 143) | def increment_iteration(self): method reset_iteration (line 147) | def reset_iteration(self): method empty (line 152) | def empty(): FILE: corehq/apps/userreports/sql/adapter.py function get_metadata (line 31) | def get_metadata(engine_id): class IndicatorSqlAdapter (line 35) | class IndicatorSqlAdapter(IndicatorAdapter): method __init__ (line 37) | def __init__(self, config, override_table_name=None, engine_id=None): method table_id (line 46) | def table_id(self): method display_name (line 50) | def display_name(self): method get_table (line 54) | def get_table(self): method get_existing_table_from_db (line 60) | def get_existing_table_from_db(self): method table_exists (line 68) | def table_exists(self): method get_sqlalchemy_orm_table (line 73) | def get_sqlalchemy_orm_table(self): method _apply_sql_addons (line 82) | def _apply_sql_addons(self): method rebuild_table (line 85) | def rebuild_table(self, initiated_by=None, source=None, skip_log=False... method build_table (line 96) | def build_table(self, initiated_by=None, source=None): method drop_table (line 107) | def drop_table(self, initiated_by=None, source=None, skip_log=False): method clear_table (line 117) | def clear_table(self): method get_query_object (line 123) | def get_query_object(self): method get_distinct_values (line 129) | def get_distinct_values(self, column, limit): method _best_effort_save_rows (line 151) | def _best_effort_save_rows(self, rows, doc): method save_rows (line 157) | def save_rows(self, rows, use_shard_col=True): method supports_upsert (line 196) | def supports_upsert(self): method _upsert_query (line 204) | def _upsert_query(self, table, rows): method bulk_save (line 214) | def bulk_save(self, docs): method bulk_delete (line 220) | def bulk_delete(self, docs, use_shard_col=True): method delete (line 238) | def delete(self, doc, use_shard_col=True): method doc_exists (line 241) | def doc_exists(self, doc): method get_rows_by_doc_id (line 246) | def get_rows_by_doc_id(self, doc_id): class ErrorRaisingIndicatorSqlAdapter (line 265) | class ErrorRaisingIndicatorSqlAdapter(IndicatorSqlAdapter): method handle_exception (line 267) | def handle_exception(self, doc, exception): function _get_table_name_for_adapter (line 291) | def _get_table_name_for_adapter(override_table_name, config): function get_indicator_table (line 295) | def get_indicator_table(indicator_config, metadata, override_table_name=... function _custom_index_name (line 321) | def _custom_index_name(table_name, column_ids): function rebuild_table (line 327) | def rebuild_table(engine, table): function build_table (line 333) | def build_table(engine, table): FILE: corehq/apps/userreports/sql/columns.py function column_to_sql (line 10) | def column_to_sql(column): function expand_column (line 21) | def expand_column(report_column, distinct_values, lang): function get_column_type (line 44) | def get_column_type(data_type): FILE: corehq/apps/userreports/sql/data_source.py class ConfigurableReportSqlDataSource (line 17) | class ConfigurableReportSqlDataSource(ConfigurableReportDataSourceMixin,... method engine_id (line 19) | def engine_id(self): method override_engine_id (line 26) | def override_engine_id(self, engine_id): method filters (line 30) | def filters(self): method filter_values (line 34) | def filter_values(self): method order_by (line 38) | def order_by(self): method _db_columns (line 57) | def _db_columns(self): method get_data (line 63) | def get_data(self, start=None, limit=None): method get_query_strings (line 76) | def get_query_strings(self): method get_total_records (line 83) | def get_total_records(self): method get_total_row (line 90) | def get_total_row(self): FILE: corehq/apps/userreports/sql/util.py function get_column_name (line 4) | def get_column_name(path, suffix=None, add_hash=True): function decode_column_name (line 30) | def decode_column_name(column): FILE: corehq/apps/userreports/static/userreports/js/bootstrap3/base.js function getReportUrl (line 10) | function getReportUrl() { FILE: corehq/apps/userreports/static/userreports/js/bootstrap5/base.js function getReportUrl (line 10) | function getReportUrl() { FILE: corehq/apps/userreports/static/userreports/js/data_source_evaluator.js function transformRows (line 31) | function transformRows(rows) { FILE: corehq/apps/userreports/tasks.py function _build_indicators (line 63) | def _build_indicators(config, document_store, relevant_ids): function rebuild_indicators (line 78) | def rebuild_indicators( function rebuild_indicators_in_place (line 126) | def rebuild_indicators_in_place(indicator_config_id, initiated_by=None, ... function _get_rows_count_from_existing_table (line 147) | def _get_rows_count_from_existing_table(adapter): function _report_ucr_rebuild_metrics (line 153) | def _report_ucr_rebuild_metrics(config, source, action, adapter, rows_co... function _report_metric_number_of_days_since_first_build (line 166) | def _report_metric_number_of_days_since_first_build(config, action): function _report_metric_rebuild_error (line 180) | def _report_metric_rebuild_error(config, action): function _report_metric_increase_in_rows_count (line 190) | def _report_metric_increase_in_rows_count(config, action, adapter, rows_... function _iteratively_build_table (line 200) | def _iteratively_build_table(config, in_place=False, limit=-1): function delete_data_source_task (line 231) | def delete_data_source_task(domain, config_id): function run_queue_async_indicators_task (line 237) | def run_queue_async_indicators_task(): function time_in_range (line 246) | def time_in_range(time, time_dictionary): function queue_async_indicators (line 270) | def queue_async_indicators(): function _queue_indicators (line 300) | def _queue_indicators(async_indicators, use_agg_queue=False): function build_indicators_with_agg_queue (line 318) | def build_indicators_with_agg_queue(indicator_doc_ids): function build_async_indicators (line 323) | def build_async_indicators(indicator_doc_ids): function async_indicators_metrics (line 494) | def async_indicators_metrics(): function _indicator_metrics (line 549) | def _indicator_metrics(date_created=None): function export_ucr_async (line 585) | def export_ucr_async(report_export, download_id, user): FILE: corehq/apps/userreports/tests/test_adaptercache.py class TestTTLCache (line 12) | class TestTTLCache: method test_get_adapters (line 14) | def test_get_adapters(self): method test_get_adapters_with_irrelevant_domain (line 29) | def test_get_adapters_with_irrelevant_domain(self): method test_get_adapters_does_not_get_deactivated_adapter (line 37) | def test_get_adapters_does_not_get_deactivated_adapter(self): method test_refresh_removes_stale_entries (line 45) | def test_refresh_removes_stale_entries(self): method test_refresh_updates_modified_adapters (line 66) | def test_refresh_updates_modified_adapters(self): method test_refresh_removes_adapter_from_domain (line 90) | def test_refresh_removes_adapter_from_domain(self): method test_refresh_updates_modified_adapter_where_others_have_not_changed (line 111) | def test_refresh_updates_modified_adapter_where_others_have_not_change... method test_refresh_removes_deactivated_adapter (line 129) | def test_refresh_removes_deactivated_adapter(self): method test_remove_adapter (line 151) | def test_remove_adapter(self): method test_concurrent_refresh (line 171) | def test_concurrent_refresh(self): method test_concurrent_load (line 185) | def test_concurrent_load(self): method test_concurrent_load_different_domains (line 220) | def test_concurrent_load_different_domains(self): method test_concurrent_load_error (line 263) | def test_concurrent_load_error(self): class TestMigrationCache (line 301) | class TestMigrationCache: method test_get_adapters (line 303) | def test_get_adapters(self): method test_inactive_adapter (line 321) | def test_inactive_adapter(self): class Adapter (line 342) | class Adapter: class DatabaseError (line 352) | class DatabaseError(Exception): FILE: corehq/apps/userreports/tests/test_adapters.py class TestIndicatorSqlAdapter (line 9) | class TestIndicatorSqlAdapter(TestCase): method _create_data_source_config (line 12) | def _create_data_source_config(domain): method test_bulk_delete_table_dont_exist (line 32) | def test_bulk_delete_table_dont_exist(self, register_data_source_row_c... method test_bulk_delete_table_exists (line 43) | def test_bulk_delete_table_exists(self, register_data_source_row_chang... FILE: corehq/apps/userreports/tests/test_alembic_diffs.py function test_flatten_raw_diffs (line 19) | def test_flatten_raw_diffs(): class TestAlembicDiffs (line 33) | class TestAlembicDiffs(TestCase): method setUpClass (line 35) | def setUpClass(cls): method tearDownClass (line 50) | def tearDownClass(cls): method setUp (line 55) | def setUp(self): method tearDown (line 59) | def tearDown(self): method test_table_filter (line 62) | def test_table_filter(self): method test_add_remove_table (line 69) | def test_add_remove_table(self): method test_add_remove_column (line 77) | def test_add_remove_column(self): method test_modify_column (line 94) | def test_modify_column(self): method _test_diffs (line 108) | def _test_diffs(self, metadata, expected_diffs): class TestTablesToRebuild (line 119) | class TestTablesToRebuild(SimpleTestCase): method test_filter_by_type (line 120) | def test_filter_by_type(self): FILE: corehq/apps/userreports/tests/test_app_manager_integration.py class AppManagerDataSourceConfigTest (line 22) | class AppManagerDataSourceConfigTest(TestCase): method setUpClass (line 34) | def setUpClass(cls): method tearDownClass (line 56) | def tearDownClass(cls): method setUp (line 61) | def setUp(self): method tearDown (line 66) | def tearDown(self): method test_simple_case_management (line 70) | def test_simple_case_management(self, datetime_mock): method test_simple_form_data_source (line 166) | def test_simple_form_data_source(self): FILE: corehq/apps/userreports/tests/test_async_indicators.py class RunAsynchronousTest (line 20) | class RunAsynchronousTest(SimpleTestCase): method _create_data_source_config (line 21) | def _create_data_source_config(self, indicators=None): method test_async_not_configured (line 42) | def test_async_not_configured(self): method test_async_configured (line 47) | def test_async_configured(self): class TestBulkUpdate (line 54) | class TestBulkUpdate(TestCase): method tearDown (line 55) | def tearDown(self): method _get_indicator_data (line 58) | def _get_indicator_data(self): method test_update_record (line 64) | def test_update_record(self): class BulkAsyncIndicatorProcessingTest (line 101) | class BulkAsyncIndicatorProcessingTest(TestCase): method setUpClass (line 104) | def setUpClass(cls): method _setup_docs_and_indicators (line 156) | def _setup_docs_and_indicators(self): method setUp (line 176) | def setUp(self): method _assert_rows_in_ucr_table (line 194) | def _assert_rows_in_ucr_table(self, config, rows): method test_basic_run (line 206) | def test_basic_run(self): method test_queue_async_indicators (line 230) | def test_queue_async_indicators(self, patched_build): method test_known_exception (line 236) | def test_known_exception(self): method test_unknown_exception (line 251) | def test_unknown_exception(self): FILE: corehq/apps/userreports/tests/test_choice_provider.py class StaticChoiceProviderTest (line 52) | class StaticChoiceProviderTest(SimpleTestCase): method setUpClass (line 55) | def setUpClass(cls): method test_query_no_search (line 59) | def test_query_no_search(self): method test_get_choices_for_values (line 65) | def test_get_choices_for_values(self): class ChoiceProviderTestMixin (line 72) | class ChoiceProviderTestMixin(metaclass=ABCMeta): method _test_query (line 94) | def _test_query(self, query_context): method _test_get_choices_for_values (line 99) | def _test_get_choices_for_values(self, values, user): method test_query_no_search_all (line 105) | def test_query_no_search_all(self): method test_query_no_search_first_short_page (line 108) | def test_query_no_search_first_short_page(self): method test_query_no_search_second_short_page (line 111) | def test_query_no_search_second_short_page(self): method test_query_search (line 115) | def test_query_search(self): method test_get_choices_for_values (line 125) | def test_get_choices_for_values(self): class LocationChoiceProviderTest (line 137) | class LocationChoiceProviderTest(ChoiceProviderTestMixin, LocationHierar... method setUpClass (line 153) | def setUpClass(cls): method tearDownClass (line 176) | def tearDownClass(cls): method test_query_search (line 180) | def test_query_search(self): method test_get_choices_for_values (line 185) | def test_get_choices_for_values(self): method test_get_choices_for_values_include_descendants (line 191) | def test_get_choices_for_values_include_descendants(self): method test_location_type (line 204) | def test_location_type(self): method test_scoped_to_location_search (line 216) | def test_scoped_to_location_search(self): method test_cant_circumvent_restrictions (line 242) | def test_cant_circumvent_restrictions(self): class UserChoiceProviderTest (line 262) | class UserChoiceProviderTest(SimpleTestCase, ChoiceProviderTestMixin): method make_mobile_worker (line 267) | def make_mobile_worker(cls, username, domain=None): method make_web_user (line 279) | def make_web_user(cls, email, domain=None): method setUpClass (line 292) | def setUpClass(cls): method tearDownClass (line 317) | def tearDownClass(cls): method test_query_search (line 321) | def test_query_search(self): method test_get_choices_for_values (line 324) | def test_get_choices_for_values(self): class GroupChoiceProviderTest (line 332) | class GroupChoiceProviderTest(TestCase, ChoiceProviderTestMixin): method make_group (line 336) | def make_group(cls, name, domain=None): method setUpClass (line 347) | def setUpClass(cls): method test_query_search (line 367) | def test_query_search(self): method test_get_choices_for_values (line 370) | def test_get_choices_for_values(self): class OwnerChoiceProviderTest (line 380) | class OwnerChoiceProviderTest(LocationHierarchyTestCase, ChoiceProviderT... method setUpClass (line 386) | def setUpClass(cls): method tearDownClass (line 411) | def tearDownClass(cls): method test_query_search (line 415) | def test_query_search(self): method test_get_choices_for_values (line 421) | def test_get_choices_for_values(self): class UserUserDataChoiceProviderTest (line 430) | class UserUserDataChoiceProviderTest(TestCase, ChoiceProviderTestMixin): method make_web_user (line 434) | def make_web_user(cls, email, domain=None, user_data=None): method setUpClass (line 447) | def setUpClass(cls): method make_mobile_worker (line 480) | def make_mobile_worker(cls, username, domain=None, user_data=None): method tearDownClass (line 492) | def tearDownClass(cls): method test_query_search (line 498) | def test_query_search(self): method test_login_as_user (line 502) | def test_login_as_user(self): method test_not_login_as_user (line 506) | def test_not_login_as_user(self): method test_disabled_query_search (line 514) | def test_disabled_query_search(self): method test_get_choices_for_values (line 517) | def test_get_choices_for_values(self): class DomainChoiceProviderTest (line 524) | class DomainChoiceProviderTest(TestCase, ChoiceProviderTestMixin): method make_web_user_with_registry_role (line 528) | def make_web_user_with_registry_role(cls, email, domain, has_registry_... method setUpClass (line 546) | def setUpClass(cls): method test_query_search (line 599) | def test_query_search(self): method test_query_full_registry_access (line 602) | def test_query_full_registry_access(self): method test_query_no_registry_access (line 613) | def test_query_no_registry_access(self): method test_query_count (line 624) | def test_query_count(self): method test_get_choices_for_values (line 631) | def test_get_choices_for_values(self): method test_domain_with_some_grants (line 637) | def test_domain_with_some_grants(self): method test_domain_with_no_grants (line 654) | def test_domain_with_no_grants(self): FILE: corehq/apps/userreports/tests/test_columns.py class TestFieldColumn (line 36) | class TestFieldColumn(SimpleTestCase): method testColumnSetFromAlias (line 38) | def testColumnSetFromAlias(self): method testColumnDefaultsToField (line 48) | def testColumnDefaultsToField(self): method testBadAggregation (line 56) | def testBadAggregation(self): method testGoodFormat (line 64) | def testGoodFormat(self): method testBadFormat (line 78) | def testBadFormat(self): class ChoiceListColumnDbTest (line 88) | class ChoiceListColumnDbTest(TestCase): method test_column_uniqueness_when_truncated (line 90) | def test_column_uniqueness_when_truncated(self): class ArrayTypeColumnDbTest (line 129) | class ArrayTypeColumnDbTest(TestCase): method test_array_type_column (line 131) | def test_array_type_column(self): class TestExpandedColumn (line 168) | class TestExpandedColumn(TestCase): method _new_case (line 172) | def _new_case(self, properties): method _build_report (line 183) | def _build_report(self, vals, field='my_field', build_data_source=True): method setUpClass (line 225) | def setUpClass(cls): method tearDown (line 255) | def tearDown(self): method test_getting_distinct_values (line 259) | def test_getting_distinct_values(self): method test_no_distinct_values (line 269) | def test_no_distinct_values(self): method test_too_large_expansion (line 274) | def test_too_large_expansion(self): method test_allowed_expansion (line 281) | def test_allowed_expansion(self): method test_unbuilt_data_source (line 294) | def test_unbuilt_data_source(self): method test_expansion (line 300) | def test_expansion(self): method test_none_in_values (line 314) | def test_none_in_values(self): class TestAggregateDateColumn (line 344) | class TestAggregateDateColumn(SimpleTestCase): method setUp (line 346) | def setUp(self): method test_wrap (line 353) | def test_wrap(self): method test_group_by (line 358) | def test_group_by(self): method test_format (line 362) | def test_format(self): method test_custom_format (line 366) | def test_custom_format(self): method test_format_missing (line 371) | def test_format_missing(self): class TestPercentageColumn (line 376) | class TestPercentageColumn(SimpleTestCase): method test_wrap (line 378) | def test_wrap(self): method test_missing_fields (line 399) | def test_missing_fields(self): method test_wrong_field_type (line 423) | def test_wrong_field_type(self): method test_format_pct (line 438) | def test_format_pct(self): method test_format_pct_denom_0 (line 444) | def test_format_pct_denom_0(self): method test_format_fraction (line 451) | def test_format_fraction(self): method test_format_both (line 457) | def test_format_both(self): method test_format_pct_non_numeric (line 463) | def test_format_pct_non_numeric(self): method test_format_numeric_pct (line 472) | def test_format_numeric_pct(self): method test_format_float (line 478) | def test_format_float(self): method _test_spec (line 485) | def _test_spec(self): class TestSumWhenColumnsRestrictedToStatic (line 502) | class TestSumWhenColumnsRestrictedToStatic(SimpleTestCase): method test_sum_when_column_restricted_to_static (line 508) | def test_sum_when_column_restricted_to_static(self): method test_sum_when_template_column_restricted_to_static (line 511) | def test_sum_when_template_column_restricted_to_static(self): method test_sum_when_template_raises_in_dynamic_report (line 515) | def test_sum_when_template_raises_in_dynamic_report(self): FILE: corehq/apps/userreports/tests/test_data_source_config.py class TestDataSourceConfigAllowedExpressionsValidation (line 22) | class TestDataSourceConfigAllowedExpressionsValidation(TestCase): method setUpClass (line 25) | def setUpClass(cls) -> None: method test_raises_when_domain_has_no_permission (line 64) | def test_raises_when_domain_has_no_permission(self): method test_raises_when_related_doc_used_without_permission (line 70) | def test_raises_when_related_doc_used_without_permission(self): method test_raises_when_domain_has_only_related_doc (line 76) | def test_raises_when_domain_has_only_related_doc(self): method test_does_not_raise_with_permissions (line 82) | def test_does_not_raise_with_permissions(self): method test_allows_domains_with_no_explicit_permissions (line 86) | def test_allows_domains_with_no_explicit_permissions(self): class DataSourceConfigurationTest (line 93) | class DataSourceConfigurationTest(SimpleTestCase): method setUp (line 95) | def setUp(self): method test_metadata (line 98) | def test_metadata(self): method test_filters (line 106) | def test_filters(self): method test_columns (line 120) | def test_columns(self): method test_indicators (line 141) | def test_indicators(self, datetime_mock): method test_configured_filter_auto_date_convert (line 155) | def test_configured_filter_auto_date_convert(self): method test_duplicate_columns (line 174) | def test_duplicate_columns(self): class DataSourceFilterInterpolationTest (line 181) | class DataSourceFilterInterpolationTest(SimpleTestCase): method _setup_config (line 182) | def _setup_config(self, doc_type, filter_): method _case_config (line 190) | def _case_config(self, filter_): method _form_config (line 193) | def _form_config(self, filter_): method _test_helper (line 196) | def _test_helper(self, data_source, expected_filter): method test_one_case_type (line 202) | def test_one_case_type(self): method test_multiple_case_type (line 216) | def test_multiple_case_type(self): method test_one_xmlns (line 230) | def test_one_xmlns(self): method test_multiple_xmlns (line 244) | def test_multiple_xmlns(self): method test_xmlns_with_and (line 258) | def test_xmlns_with_and(self): method test_case_type_with_and (line 277) | def test_case_type_with_and(self): method test_case_type_with_and_other_filter (line 296) | def test_case_type_with_and_other_filter(self): method test_invalid_expression (line 324) | def test_invalid_expression(self): class DataSourceConfigurationTests (line 336) | class DataSourceConfigurationTests(TestCase): method setUpClass (line 339) | def setUpClass(cls): method test_by_domain_returns_relevant_datasource_configs (line 353) | def test_by_domain_returns_relevant_datasource_configs(self): method test_by_domain_returns_empty_list (line 358) | def test_by_domain_returns_empty_list(self): method test_all (line 362) | def test_all(self): method test_last_modified_date_updates_successfully (line 368) | def test_last_modified_date_updates_successfully(self): method test_create_requires_domain (line 383) | def test_create_requires_domain(self): method test_create_requires_table_id (line 388) | def test_create_requires_table_id(self): method test_create_requires_doc_type (line 393) | def test_create_requires_doc_type(self): class DataSourceConfigurationRebuildTests (line 398) | class DataSourceConfigurationRebuildTests(TestCase): method setUp (line 400) | def setUp(self): method test_set_build_not_required (line 409) | def test_set_build_not_required(self): method test_set_build_queued (line 415) | def test_set_build_queued(self): method test_rebuild_flag_for_missing_table (line 421) | def test_rebuild_flag_for_missing_table(self): method test_rebuild_flag_for_migratable_table (line 428) | def test_rebuild_flag_for_migratable_table(self, mock_get_table_diffs,... method test_rebuild_flag_for_rebuildable_table (line 437) | def test_rebuild_flag_for_rebuildable_table(self, mock_get_table_diffs... method test_rebuild_flag_for_no_change (line 446) | def test_rebuild_flag_for_no_change(self, mock_get_table_diffs, mock_t... method test_rebuild_flag_for_already_queued_table (line 453) | def test_rebuild_flag_for_already_queued_table(self, mock_get_table_di... method test_rebuild_flag_for_rebuilding_table (line 462) | def test_rebuild_flag_for_rebuilding_table(self, mock_get_table_diffs,... class IndicatorNamedExpressionTest (line 477) | class IndicatorNamedExpressionTest(SimpleTestCase): method setUp (line 479) | def setUp(self): method test_named_expressions_serialization (line 553) | def test_named_expressions_serialization(self): method test_filter_match (line 557) | def test_filter_match(self): method test_filter_nomatch (line 564) | def test_filter_nomatch(self): method test_indicator (line 571) | def test_indicator(self): method test_nested_indicator (line 583) | def test_nested_indicator(self): method test_missing_reference (line 595) | def test_missing_reference(self): method test_no_self_lookups (line 609) | def test_no_self_lookups(self): method test_no_recursive_lookups (line 618) | def test_no_recursive_lookups(self): method test_no_pk_attribute (line 631) | def test_no_pk_attribute(self): method test_missing_pk_column (line 637) | def test_missing_pk_column(self): class IndicatorNamedFilterTest (line 644) | class IndicatorNamedFilterTest(SimpleTestCase): method setUp (line 646) | def setUp(self): method test_match (line 726) | def test_match(self): method test_no_match (line 734) | def test_no_match(self): method test_simple_indicator_match (line 742) | def test_simple_indicator_match(self): method test_simple_indicator_nomatch (line 755) | def test_simple_indicator_nomatch(self): method test_expression_match (line 768) | def test_expression_match(self): method test_expression_nomatch (line 781) | def test_expression_nomatch(self): class TestDBExpressions (line 795) | class TestDBExpressions(TestCase): method test_named_db_expression (line 798) | def test_named_db_expression(self): method test_db_named_db_expression (line 858) | def test_db_named_db_expression(self): method test_recursive_named_db_expression (line 887) | def test_recursive_named_db_expression(self): method test_db_named_db_filter (line 912) | def test_db_named_db_filter(self): method test_recursive_named_db_filter (line 942) | def test_recursive_named_db_filter(self): method test_named_db_filter (line 967) | def test_named_db_filter(self): FILE: corehq/apps/userreports/tests/test_data_source_providers.py class DataSourceProviderTest (line 10) | class DataSourceProviderTest(TestCase): method test_dynamic_modified_date (line 12) | def test_dynamic_modified_date(self): class MockDataSourceProviderTest (line 26) | class MockDataSourceProviderTest(SimpleTestCase): method test_empty (line 28) | def test_empty(self): method test_with_data (line 33) | def test_with_data(self): FILE: corehq/apps/userreports/tests/test_data_source_repeats.py class RepeatDataSourceTestMixin (line 13) | class RepeatDataSourceTestMixin(object): method setUp (line 15) | def setUp(self): class RepeatDataSourceConfigurationTest (line 21) | class RepeatDataSourceConfigurationTest(RepeatDataSourceTestMixin, Simpl... method test_test_doc_matches (line 23) | def test_test_doc_matches(self): method test_empty_doc_no_rows (line 26) | def test_empty_doc_no_rows(self): method test_missing_property_no_rows (line 29) | def test_missing_property_no_rows(self): method test_null_property_no_rows (line 32) | def test_null_property_no_rows(self): method test_empty_list_property_no_rows (line 35) | def test_empty_list_property_no_rows(self): method test_dict_property (line 38) | def test_dict_property(self): method test_list_property (line 53) | def test_list_property(self): class RepeatDataSourceBuildTest (line 73) | class RepeatDataSourceBuildTest(RepeatDataSourceTestMixin, TestCase): method test_table_population (line 75) | def test_table_population(self): function _test_doc (line 111) | def _test_doc(**extras): FILE: corehq/apps/userreports/tests/test_data_source_validaton.py class DataSourceValidationTest (line 11) | class DataSourceValidationTest(SimpleTestCase): method setUp (line 13) | def setUp(self): method test_is_starred_validation (line 31) | def test_is_starred_validation(self): method test_multiple_validations (line 41) | def test_multiple_validations(self): FILE: corehq/apps/userreports/tests/test_date_expressions.py function test_add_months_to_date_expression (line 24) | def test_add_months_to_date_expression(self, source_doc, months_expressi... function test_month_start_date_expression (line 41) | def test_month_start_date_expression(self, source_doc, expected_value): function test_month_end_date_expression (line 57) | def test_month_end_date_expression(self, source_doc, expected_value): function test_diff_days_expression (line 78) | def test_diff_days_expression(self, source_doc, to_date_expression, expe... function test_add_days_to_date_expression (line 119) | def test_add_days_to_date_expression(self, source_doc, count_expression,... function test_add_hours_to_datetime_expression (line 144) | def test_add_hours_to_datetime_expression(self, source_doc, count_expres... function test_ethiopian_to_gregorian_expression (line 162) | def test_ethiopian_to_gregorian_expression(self, source_doc, expected_va... function test_ethiopian_to_gregorian_expression_constant (line 178) | def test_ethiopian_to_gregorian_expression_constant(self, expression, ex... function test_gregorian_to_ethiopian_expression (line 194) | def test_gregorian_to_ethiopian_expression(self, source_doc, expected_va... function test_gregorian_to_ethiopian_expression_constant (line 210) | def test_gregorian_to_ethiopian_expression_constant(self, expression, ex... FILE: corehq/apps/userreports/tests/test_dbaccessors.py class DBAccessorsTest (line 25) | class DBAccessorsTest(TestCase): method setUpClass (line 29) | def setUpClass(cls): method test_get_number_of_report_configs_by_data_source (line 52) | def test_get_number_of_report_configs_by_data_source(self): method test_get_all_report_configs (line 61) | def test_get_all_report_configs(self): method test_get_report_configs_for_domain (line 67) | def test_get_report_configs_for_domain(self): class RegistryUcrDbAccessorsTest (line 76) | class RegistryUcrDbAccessorsTest(TestCase): method setUpClass (line 80) | def setUpClass(cls): method test_get_all_registry_data_source_ids (line 89) | def test_get_all_registry_data_source_ids(self): method test_get_all_registry_data_source_ids_active (line 94) | def test_get_all_registry_data_source_ids_active(self): method test_get_all_registry_data_source_ids_global (line 108) | def test_get_all_registry_data_source_ids_global(self): method test_get_registry_data_sources_modified_since (line 122) | def test_get_registry_data_sources_modified_since(self): method _create_datasource (line 147) | def _create_datasource(self, active=True, globally_accessible=False): FILE: corehq/apps/userreports/tests/test_evaluator_expressions.py function test_valid_eval_expression (line 76) | def test_valid_eval_expression(self, source_doc, statement, context, exp... function test_invalid_eval_expression (line 97) | def test_invalid_eval_expression(self, source_doc, statement, context): function test_supported_evaluator_statements (line 141) | def test_supported_evaluator_statements(self, eq, context, expected_value): function test_unsupported_evaluator_statements (line 160) | def test_unsupported_evaluator_statements(self, eq, context): function test_errors_in_evaluator_statements (line 175) | def test_errors_in_evaluator_statements(self, eq, context, error_type): class TestEvaluatorTypes (line 186) | class TestEvaluatorTypes(SimpleTestCase): method test_datatype (line 188) | def test_datatype(self): class TestEvaluatorContext (line 199) | class TestEvaluatorContext(SimpleTestCase): method test_no_context (line 201) | def test_no_context(self): method test_named_function (line 208) | def test_named_function(self): method test_root_context (line 221) | def test_root_context(self): FILE: corehq/apps/userreports/tests/test_export.py class ParameterTest (line 12) | class ParameterTest(SimpleTestCase): method setUp (line 14) | def setUp(self): method test_no_parameters (line 18) | def test_no_parameters(self): method test_lastndays (line 24) | def test_lastndays(self): method test_range_filter (line 35) | def test_range_filter(self): FILE: corehq/apps/userreports/tests/test_expressions.py class ExpressionPluginTest (line 40) | class ExpressionPluginTest(SimpleTestCase): method test_custom_expression (line 42) | def test_custom_expression(self): method test_double_registration (line 48) | def test_double_registration(self): class IdentityExpressionTest (line 55) | class IdentityExpressionTest(SimpleTestCase): method setUp (line 57) | def setUp(self): method test_identity (line 60) | def test_identity(self): class ConstantExpressionTest (line 65) | class ConstantExpressionTest(SimpleTestCase): method test_constant_expression (line 67) | def test_constant_expression(self): method test_constant_auto_detection (line 76) | def test_constant_auto_detection(self): method test_constant_date_conversion (line 82) | def test_constant_date_conversion(self): method test_constant_datetime_conversion (line 86) | def test_constant_datetime_conversion(self): method test_legacy_constant_no_type_casting (line 90) | def test_legacy_constant_no_type_casting(self): method test_constant_auto_detection_invalid_types (line 106) | def test_constant_auto_detection_invalid_types(self): method test_invalid_constant (line 111) | def test_invalid_constant(self): class PropertyExpressionTest (line 118) | class PropertyExpressionTest(SimpleTestCase): method test_boolean_to_string_conversion (line 120) | def test_boolean_to_string_conversion(self): method test_datatype (line 129) | def test_datatype(self): class ExpressionFromSpecTest (line 160) | class ExpressionFromSpecTest(SimpleTestCase): method test_invalid_type (line 162) | def test_invalid_type(self): method test_property_name_expression (line 168) | def test_property_name_expression(self): method test_property_name_no_name (line 176) | def test_property_name_no_name(self): method test_property_name_empty_name (line 182) | def test_property_name_empty_name(self): method test_property_path_expression (line 189) | def test_property_path_expression(self): method test_property_path_no_path (line 197) | def test_property_path_no_path(self): method test_property_path_empty_path (line 203) | def test_property_path_empty_path(self): class PropertyNameExpressionTest (line 212) | class PropertyNameExpressionTest(SimpleTestCase): method test_basic (line 213) | def test_basic(self): method test_property_name_expression_with_expression (line 221) | def test_property_name_expression_with_expression(self): class PropertyPathExpressionTest (line 232) | class PropertyPathExpressionTest(SimpleTestCase): method test_datatype (line 234) | def test_datatype(self): method test_property_path_bad_type (line 251) | def test_property_path_bad_type(self): class JsonpathExpressionTest (line 265) | class JsonpathExpressionTest(SimpleTestCase): method test_jsonpath (line 267) | def test_jsonpath(self): method test_bad_expression (line 293) | def test_bad_expression(self): method test_bad_values (line 301) | def test_bad_values(self, bad_value): method test_datatype (line 319) | def test_datatype(self, item, jsonpath, datatype, expected): method test_list_coersion (line 333) | def test_list_coersion(self, item, jsonpath, expected): class ConditionalExpressionTest (line 341) | class ConditionalExpressionTest(SimpleTestCase): method setUp (line 343) | def setUp(self): method testConditionIsTrue (line 369) | def testConditionIsTrue(self): method testConditionIsFalse (line 376) | def testConditionIsFalse(self): method testConditionIsMissing (line 383) | def testConditionIsMissing(self): method testResultIsMissing (line 389) | def testResultIsMissing(self): method test_literals (line 395) | def test_literals(self): class SwitchExpressionTest (line 408) | class SwitchExpressionTest(SimpleTestCase): method setUp (line 410) | def setUp(self): method testCases (line 431) | def testCases(self): method testDefault (line 443) | def testDefault(self): class ArrayIndexExpressionTest (line 449) | class ArrayIndexExpressionTest(SimpleTestCase): method setUpClass (line 452) | def setUpClass(cls): method test_basic (line 467) | def test_basic(self): method test_array_out_of_bounds (line 472) | def test_array_out_of_bounds(self): method test_array_not_an_array (line 475) | def test_array_not_an_array(self): method test_array_empty (line 478) | def test_array_empty(self): method test_invalid_index (line 481) | def test_invalid_index(self): method test_empty_index (line 484) | def test_empty_index(self): method test_empty_constant_index (line 487) | def test_empty_constant_index(self): method test_nested_date (line 494) | def test_nested_date(self): class DictExpressionTest (line 534) | class DictExpressionTest(SimpleTestCase): method setUp (line 536) | def setUp(self): method test_missing_properties (line 549) | def test_missing_properties(self): method test_bad_properties_type (line 555) | def test_bad_properties_type(self): method test_empty_properties (line 562) | def test_empty_properties(self): method test_non_string_keys (line 569) | def test_non_string_keys(self): method test_basic (line 578) | def test_basic(self): class NestedExpressionTest (line 585) | class NestedExpressionTest(SimpleTestCase): method test_basic (line 587) | def test_basic(self): method test_parent_case_id (line 605) | def test_parent_case_id(self): method test_name_in_argument (line 638) | def test_name_in_argument(self): method test_name_in_value (line 654) | def test_name_in_value(self): method test_caching (line 670) | def test_caching(self): class IteratorExpressionTest (line 744) | class IteratorExpressionTest(SimpleTestCase): method setUp (line 746) | def setUp(self): method test_basic (line 767) | def test_basic(self): method test_missing_values_default (line 770) | def test_missing_values_default(self): method test_missing_values_filtered (line 773) | def test_missing_values_filtered(self): method test_missing_and_filtered (line 789) | def test_missing_and_filtered(self): method test_type_coercion (line 805) | def test_type_coercion(self): class RootDocExpressionTest (line 819) | class RootDocExpressionTest(SimpleTestCase): method setUp (line 821) | def setUp(self): method test_missing_context (line 831) | def test_missing_context(self): method test_not_in_context (line 836) | def test_not_in_context(self): method test_comes_from_context (line 845) | def test_comes_from_context(self): class RelatedDocExpressionTest (line 855) | class RelatedDocExpressionTest(SimpleTestCase): method setUp (line 857) | def setUp(self): method patch_cases_database (line 894) | def patch_cases_database(self): method test_simple_lookup (line 905) | def test_simple_lookup(self): method test_related_doc_not_found (line 921) | def test_related_doc_not_found(self): method test_cross_domain_lookups (line 925) | def test_cross_domain_lookups(self): method test_nested_lookup (line 941) | def test_nested_lookup(self): method test_nested_lookup_cross_domains (line 964) | def test_nested_lookup_cross_domains(self): method test_fail_on_bad_doc_type (line 987) | def test_fail_on_bad_doc_type(self): method test_caching (line 1003) | def test_caching(self): class RelatedDocExpressionDbTest (line 1016) | class RelatedDocExpressionDbTest(TestCase): method test_form_lookups (line 1019) | def test_form_lookups(self): method test_case_lookups (line 1025) | def test_case_lookups(self): method test_other_lookups (line 1032) | def test_other_lookups(self): method test_user_data_lookup (line 1044) | def test_user_data_lookup(self): method test_password_lookup (line 1063) | def test_password_lookup(self): method _get_expression (line 1083) | def _get_expression(doc_type): method _get_doc (line 1098) | def _get_doc(cls, id): class RelatedDocExpressionUserTest (line 1105) | class RelatedDocExpressionUserTest(TestCase): method setUp (line 1108) | def setUp(self): method tearDown (line 1153) | def tearDown(self): method test_value_expressions (line 1156) | def test_value_expressions(self): class TestRelatedDocExpressionWebUser (line 1259) | class TestRelatedDocExpressionWebUser(TestCase): method setUp (line 1262) | def setUp(self): method test_web_user (line 1269) | def test_web_user(self): class RelatedCaseExpressionTest (line 1292) | class RelatedCaseExpressionTest(SimpleTestCase): method setUp (line 1337) | def setUp(self): method test_lookup_by_case_id (line 1365) | def test_lookup_by_case_id(self): method test_lookup_by_external_id (line 1383) | def test_lookup_by_external_id(self): method test_both_ids_spec (line 1401) | def test_both_ids_spec(self): method test_neither_ids_spec (line 1420) | def test_neither_ids_spec(self): method test_related_case_id_not_found (line 1431) | def test_related_case_id_not_found(self): method test_related_external_id_not_found (line 1440) | def test_related_external_id_not_found(self): method test_cross_domain_case_id_lookup (line 1449) | def test_cross_domain_case_id_lookup(self): method test_cross_domain_external_id_lookup (line 1467) | def test_cross_domain_external_id_lookup(self): method test_nested_lookup (line 1485) | def test_nested_lookup(self): method test_nested_lookup_cross_domains (line 1515) | def test_nested_lookup_cross_domains(self): method test_caching (line 1545) | def test_caching(self): class TestFormsExpressionSpec (line 1558) | class TestFormsExpressionSpec(TestCase): method setUpClass (line 1561) | def setUpClass(cls): method tearDownClass (line 1571) | def tearDownClass(cls): method _make_expression (line 1576) | def _make_expression(self, xmlns=None): method test_evaluation (line 1588) | def test_evaluation(self): method test_wrong_domain (line 1596) | def test_wrong_domain(self): method test_correct_xmlns (line 1602) | def test_correct_xmlns(self): method test_incorrect_xmlns (line 1609) | def test_incorrect_xmlns(self): class TestGetSubcasesExpression (line 1616) | class TestGetSubcasesExpression(TestCase): method setUp (line 1618) | def setUp(self): method tearDown (line 1631) | def tearDown(self): method test_no_subcases (line 1636) | def test_no_subcases(self): method test_single_child (line 1641) | def test_single_child(self): method test_single_extension (line 1655) | def test_single_extension(self): class TestGetCaseSharingGroupsExpression (line 1673) | class TestGetCaseSharingGroupsExpression(TestCase): method setUp (line 1675) | def setUp(self): method tearDown (line 1688) | def tearDown(self): method test_no_groups (line 1697) | def test_no_groups(self): method test_single_group (line 1703) | def test_single_group(self): method test_multiple_groups (line 1713) | def test_multiple_groups(self): method test_wrong_domain (line 1724) | def test_wrong_domain(self): method test_web_user (line 1733) | def test_web_user(self): class TestGetReportingGroupsExpression (line 1740) | class TestGetReportingGroupsExpression(TestCase): method setUp (line 1742) | def setUp(self): method tearDown (line 1755) | def tearDown(self): method test_no_groups (line 1764) | def test_no_groups(self): method test_multiple_groups (line 1770) | def test_multiple_groups(self): method test_wrong_domain (line 1781) | def test_wrong_domain(self): class TestIterationNumberExpression (line 1791) | class TestIterationNumberExpression(SimpleTestCase): method setUpClass (line 1794) | def setUpClass(cls): method test_default (line 1798) | def test_default(self): method test_value_set (line 1801) | def test_value_set(self): class TestEvaluationContext (line 1805) | class TestEvaluationContext(SimpleTestCase): method test_cache (line 1807) | def test_cache(self): method test_cached_function (line 1813) | def test_cached_function(self): method test_cached_method (line 1828) | def test_cached_method(self): method test_no_overlap (line 1845) | def test_no_overlap(self): class SplitStringExpressionTest (line 1865) | class SplitStringExpressionTest(SimpleTestCase): method test_split_string_index_expression (line 1867) | def test_split_string_index_expression(self): method test_split_string_index_constant (line 1893) | def test_split_string_index_constant(self): method test_split_string_delimiter (line 1912) | def test_split_string_delimiter(self): method test_split_string_delimiter_without_index (line 1932) | def test_split_string_delimiter_without_index(self): class TestCoalesceExpression (line 1944) | class TestCoalesceExpression(SimpleTestCase): method setUp (line 1946) | def setUp(self): method testNoCoalesce (line 1960) | def testNoCoalesce(self): method testNoValue (line 1966) | def testNoValue(self): method testNull (line 1971) | def testNull(self): method testEmptyString (line 1977) | def testEmptyString(self): method testZero (line 1983) | def testZero(self): method testBlankDefaultValue (line 1989) | def testBlankDefaultValue(self): method testBlankDefaultValue2 (line 1994) | def testBlankDefaultValue2(self): FILE: corehq/apps/userreports/tests/test_extension_expressions.py class IndexedCaseExpressionTest (line 12) | class IndexedCaseExpressionTest(TestCase): method setUp (line 13) | def setUp(self): method tearDown (line 19) | def tearDown(self): method test_parent_case_no_index (line 24) | def test_parent_case_no_index(self): method test_named_index (line 52) | def test_named_index(self): method test_multiple_indexes (line 82) | def test_multiple_indexes(self): method test_grandparent_index (line 121) | def test_grandparent_index(self): FILE: corehq/apps/userreports/tests/test_filters.py class PropertyMatchFilterTest (line 19) | class PropertyMatchFilterTest(SimpleTestCase): method get_filter (line 21) | def get_filter(self): method get_path_filter (line 28) | def get_path_filter(self): method test_normal_filter (line 35) | def test_normal_filter(self): method test_filter_with_path (line 39) | def test_filter_with_path(self): method test_no_name_or_path (line 43) | def test_no_name_or_path(self): method test_empty_name (line 50) | def test_empty_name(self): method test_name_no_value (line 58) | def test_name_no_value(self): method test_empty_path (line 65) | def test_empty_path(self): method test_filter_match (line 73) | def test_filter_match(self): method test_filter_no_match (line 76) | def test_filter_no_match(self): method test_filter_missing (line 79) | def test_filter_missing(self): method test_filter_path_match (line 82) | def test_filter_path_match(self): method test_filter_path_no_match (line 85) | def test_filter_path_no_match(self): method test_path_filter_missing (line 88) | def test_path_filter_missing(self): method test_null_value (line 120) | def test_null_value(self): class EqualityFilterTest (line 93) | class EqualityFilterTest(PropertyMatchFilterTest): method get_filter (line 95) | def get_filter(self): method get_path_filter (line 106) | def get_path_filter(self): class PropertyMatchFilterTest (line 118) | class PropertyMatchFilterTest(SimpleTestCase): method get_filter (line 21) | def get_filter(self): method get_path_filter (line 28) | def get_path_filter(self): method test_normal_filter (line 35) | def test_normal_filter(self): method test_filter_with_path (line 39) | def test_filter_with_path(self): method test_no_name_or_path (line 43) | def test_no_name_or_path(self): method test_empty_name (line 50) | def test_empty_name(self): method test_name_no_value (line 58) | def test_name_no_value(self): method test_empty_path (line 65) | def test_empty_path(self): method test_filter_match (line 73) | def test_filter_match(self): method test_filter_no_match (line 76) | def test_filter_no_match(self): method test_filter_missing (line 79) | def test_filter_missing(self): method test_filter_path_match (line 82) | def test_filter_path_match(self): method test_filter_path_no_match (line 85) | def test_filter_path_no_match(self): method test_path_filter_missing (line 88) | def test_path_filter_missing(self): method test_null_value (line 120) | def test_null_value(self): class BooleanExpressionFilterTest (line 132) | class BooleanExpressionFilterTest(SimpleTestCase): method get_filter (line 134) | def get_filter(self, operator, value): method test_equal (line 145) | def test_equal(self): method test_equal_null (line 152) | def test_equal_null(self): method test_in (line 159) | def test_in(self): method test_in_multiselect (line 167) | def test_in_multiselect(self): method test_any_in_multi (line 177) | def test_any_in_multi(self): method test_less_than (line 187) | def test_less_than(self): method test_less_than_equal (line 194) | def test_less_than_equal(self): method test_greater_than (line 201) | def test_greater_than(self): method test_greater_than_equal (line 208) | def test_greater_than_equal(self): method test_regex_search (line 215) | def test_regex_search(self): method test_regex_compile_error (line 223) | def test_regex_compile_error(self): method test_date_conversion (line 229) | def test_date_conversion(self): method test_date_conversion_nested (line 243) | def test_date_conversion_nested(self): method test_literal_in_expression (line 261) | def test_literal_in_expression(self): method test_expression_in_value (line 277) | def test_expression_in_value(self): class ConfigurableANDFilterTest (line 294) | class ConfigurableANDFilterTest(SimpleTestCase): method setUp (line 296) | def setUp(self): method test_filter_match (line 314) | def test_filter_match(self): method test_filter_partial_match (line 317) | def test_filter_partial_match(self): method test_filter_no_match (line 320) | def test_filter_no_match(self): method test_filter_missing_partial_match (line 323) | def test_filter_missing_partial_match(self): method test_filter_missing_all (line 326) | def test_filter_missing_all(self): class ConfigurableORFilterTest (line 330) | class ConfigurableORFilterTest(SimpleTestCase): method setUp (line 332) | def setUp(self): method test_filter_match (line 350) | def test_filter_match(self): method test_filter_partial_match (line 353) | def test_filter_partial_match(self): method test_filter_no_match (line 356) | def test_filter_no_match(self): method test_filter_missing_partial_match (line 359) | def test_filter_missing_partial_match(self): method test_filter_missing_all (line 362) | def test_filter_missing_all(self): class ComplexFilterTest (line 366) | class ComplexFilterTest(SimpleTestCase): method test_complex_structure (line 368) | def test_complex_structure(self): class ConfigurableNOTFilterTest (line 425) | class ConfigurableNOTFilterTest(SimpleTestCase): method setUp (line 427) | def setUp(self): method test_filter_match (line 438) | def test_filter_match(self): method test_filter_no_match (line 441) | def test_filter_no_match(self): class ConfigurableNamedFilterTest (line 445) | class ConfigurableNamedFilterTest(SimpleTestCase): method setUp (line 447) | def setUp(self): method test_filter_match (line 464) | def test_filter_match(self): method test_filter_no_match (line 467) | def test_filter_no_match(self): class DateFilterValueTests (line 471) | class DateFilterValueTests(SimpleTestCase): method test_dates_use_iso_formatting (line 476) | def test_dates_use_iso_formatting(self): FILE: corehq/apps/userreports/tests/test_get_report_configs.py class TestGetReportConfigs (line 20) | class TestGetReportConfigs(SimpleTestCase, TestFileMixin): method setUp (line 25) | def setUp(self): method test_static_reports (line 29) | def test_static_reports(self): method test_non_existent_id (line 49) | def test_non_existent_id(self): method test_wrong_domain (line 54) | def test_wrong_domain(self): method test_mixed_reports (line 59) | def test_mixed_reports(self): FILE: corehq/apps/userreports/tests/test_getters.py class Foo (line 10) | class Foo(object): method foo (line 14) | def foo(self): class DictGetterTest (line 18) | class DictGetterTest(SimpleTestCase): method setUp (line 20) | def setUp(self): method test_basic (line 23) | def test_basic(self): method test_property_missing (line 26) | def test_property_missing(self): method test_not_a_dict (line 29) | def test_not_a_dict(self): method test_null (line 32) | def test_null(self): class NestedDictGetterTest (line 36) | class NestedDictGetterTest(SimpleTestCase): method setUp (line 38) | def setUp(self): method test_basic (line 41) | def test_basic(self): method test_property_missing (line 50) | def test_property_missing(self): method test_not_a_dict (line 61) | def test_not_a_dict(self): method test_null (line 64) | def test_null(self): class TransformedGetterTest (line 68) | class TransformedGetterTest(SimpleTestCase): method setUp (line 70) | def setUp(self): method test_no_transform (line 73) | def test_no_transform(self): method test_basic (line 78) | def test_basic(self): FILE: corehq/apps/userreports/tests/test_indicators.py class SingleIndicatorTestBase (line 29) | class SingleIndicatorTestBase(SimpleTestCase): method _check_result (line 31) | def _check_result(self, indicator, document, value, evaluation_context... class BooleanIndicatorTest (line 36) | class BooleanIndicatorTest(SingleIndicatorTestBase): method setUp (line 39) | def setUp(self): method testNoColumnId (line 52) | def testNoColumnId(self): method testEmptyColumnId (line 63) | def testEmptyColumnId(self): method testNoFilter (line 75) | def testNoFilter(self): method testEmptyFilter (line 82) | def testEmptyFilter(self): method testBadFilterType (line 90) | def testBadFilterType(self): method testInvalidFilter (line 98) | def testInvalidFilter(self): method testIndicatorMatch (line 109) | def testIndicatorMatch(self): method testIndicatorNoMatch (line 112) | def testIndicatorNoMatch(self): method testIndicatorMissing (line 115) | def testIndicatorMissing(self): method testComplexStructure (line 118) | def testComplexStructure(self): method test_not_null_filter_root_doc (line 178) | def test_not_null_filter_root_doc(self): class SmallBooleanIndicatorTest (line 212) | class SmallBooleanIndicatorTest(BooleanIndicatorTest): class CountIndicatorTest (line 216) | class CountIndicatorTest(SingleIndicatorTestBase): method testCount (line 218) | def testCount(self): class RawIndicatorTest (line 227) | class RawIndicatorTest(SingleIndicatorTestBase): method testMetadataDefaults (line 229) | def testMetadataDefaults(self): method testMetadataOverrides (line 240) | def testMetadataOverrides(self): method test_raw_ints (line 253) | def test_raw_ints(self): method test_raw_small_ints (line 267) | def test_raw_small_ints(self): method test_raw_strings (line 281) | def test_raw_strings(self): method testNestedSinglePath (line 295) | def testNestedSinglePath(self): method testNestedDeepReference (line 302) | def testNestedDeepReference(self): method testNestedInvalidTopLevel (line 316) | def testNestedInvalidTopLevel(self): method testNestedInvalidMidLevel (line 323) | def testNestedInvalidMidLevel(self): method _default_nested_indicator (line 337) | def _default_nested_indicator(self, path): class ExpressionIndicatorTest (line 347) | class ExpressionIndicatorTest(SingleIndicatorTestBase): method simple_indicator (line 350) | def simple_indicator(self): method complex_indicator (line 363) | def complex_indicator(self): method test_expression (line 393) | def test_expression(self): method test_missing_value (line 396) | def test_missing_value(self): method test_complicated_expression (line 399) | def test_complicated_expression(self): method test_datasource_transform (line 418) | def test_datasource_transform(self): method test_literal (line 435) | def test_literal(self): class ChoiceListIndicatorTest (line 454) | class ChoiceListIndicatorTest(SimpleTestCase): method setUp (line 456) | def setUp(self): method _check_vals (line 471) | def _check_vals(self, indicator, document, expected_values): method testConstructChoiceList (line 476) | def testConstructChoiceList(self): method testChoiceListWithPath (line 486) | def testChoiceListWithPath(self): method testSingleSelectIndicators (line 496) | def testSingleSelectIndicators(self): method testMultiSelectIndicators (line 506) | def testMultiSelectIndicators(self): class IndicatorDatatypeTest (line 522) | class IndicatorDatatypeTest(SingleIndicatorTestBase): method testDecimal (line 524) | def testDecimal(self): class LedgerBalancesIndicatorTest (line 536) | class LedgerBalancesIndicatorTest(SimpleTestCase): method setUp (line 538) | def setUp(self): method test_ledger_balances_indicator (line 552) | def test_ledger_balances_indicator(self): class DueListDateIndicatorTest (line 565) | class DueListDateIndicatorTest(SimpleTestCase): method setUp (line 567) | def setUp(self): method test_ledger_balances_indicator (line 581) | def test_ledger_balances_indicator(self): class TestGetValuesByProduct (line 599) | class TestGetValuesByProduct(TestCase): method create_report (line 603) | def create_report(self, transactions=None, tag=None, date=None): method _create_models_for_stock_report_helper (line 613) | def _create_models_for_stock_report_helper(self, form, stock_report_he... method setUpClass (line 620) | def setUpClass(cls): method tearDownClass (line 630) | def tearDownClass(cls): method setUp (line 634) | def setUp(self): method tearDown (line 665) | def tearDown(self): method test_get_soh_values_by_product (line 671) | def test_get_soh_values_by_product(self): method test_get_consumption_by_product (line 679) | def test_get_consumption_by_product(self): FILE: corehq/apps/userreports/tests/test_list_expressions.py function test_filter_items_bad_spec (line 30) | def test_filter_items_bad_spec(self, items_ex, filter_ex): function test_filter_items_basic (line 93) | def test_filter_items_basic(self, doc, items_ex, filter_ex, expected): function test_map_items_bad_spec (line 108) | def test_map_items_bad_spec(self, items_ex, map_ex): function test_map_items_basic (line 169) | def test_map_items_basic(self, doc, items_ex, map_ex, expected): function test_reduce_items_bad_spec (line 183) | def test_reduce_items_bad_spec(self, items_ex, reduce_ex): function test_reduce_items_basic (line 273) | def test_reduce_items_basic(self, doc, items_ex, reduce_ex, expected): function test_reduce_items_non_iterable (line 304) | def test_reduce_items_non_iterable(self, aggregation_fn, expected): function test_reduce_items_empty_list (line 335) | def test_reduce_items_empty_list(self, aggregation_fn, expected): function test_flatten_bad_spec (line 347) | def test_flatten_bad_spec(self, items_ex): function test_flatten_basic (line 395) | def test_flatten_basic(self, doc, items_ex, expected): function test_sort_items_bad_spec (line 409) | def test_sort_items_bad_spec(self, items_ex, sort_ex): class TestSortOrderExpression (line 422) | class TestSortOrderExpression(SimpleTestCase): method test_bad_order_raises_badspec (line 424) | def test_bad_order_raises_badspec(self): method test_descending_order (line 434) | def test_descending_order(self): function test_sort_items_basic (line 505) | def test_sort_items_basic(self, doc, items_ex, sort_ex, expected): class NestedExpressionTest (line 514) | class NestedExpressionTest(SimpleTestCase): method test_filter_items_with_nested_dates (line 547) | def test_filter_items_with_nested_dates(self): method test_map_items_with_nested_dates (line 556) | def test_map_items_with_nested_dates(self): method test_reduce_items_with_nested_dates (line 568) | def test_reduce_items_with_nested_dates(self): method test_flatten_items_with_nested_dates (line 576) | def test_flatten_items_with_nested_dates(self): method test_sort_items_with_nested_dates (line 585) | def test_sort_items_with_nested_dates(self): class ListExpressionTest (line 599) | class ListExpressionTest(SimpleTestCase): method test_latest_property (line 604) | def test_latest_property(self): method test_repeat_calculation (line 631) | def test_repeat_calculation(self): FILE: corehq/apps/userreports/tests/test_location_data_source.py class TestLocationDataSource (line 21) | class TestLocationDataSource(TestCase): method setUpClass (line 25) | def setUpClass(cls): method setUp (line 30) | def setUp(self): method _make_loc (line 66) | def _make_loc(self, name, location_type): method assertDataSourceAccurate (line 70) | def assertDataSourceAccurate(self, expected_locations): method test_location_data_source (line 79) | def test_location_data_source(self): FILE: corehq/apps/userreports/tests/test_manage_orphaned_ucrs.py class BaseOrphanedUCRTest (line 21) | class BaseOrphanedUCRTest(TestCase): method setUpClass (line 24) | def setUpClass(cls): method create_ucr (line 37) | def create_ucr(self, domain, tablename, is_orphan=False): method _create_data_source_config (line 50) | def _create_data_source_config(domain_name, tablename='test-table'): class GetOrphanedUCRsTests (line 70) | class GetOrphanedUCRsTests(BaseOrphanedUCRTest): method test_returns_empty_if_no_orphaned_tables (line 72) | def test_returns_empty_if_no_orphaned_tables(self): method test_returns_deleted_domain_ucrs_when_ignore_active_domains_is_true (line 76) | def test_returns_deleted_domain_ucrs_when_ignore_active_domains_is_tru... method test_includes_active_domain_ucrs_when_ignore_active_domains_is_false (line 86) | def test_includes_active_domain_ucrs_when_ignore_active_domains_is_fal... method test_returns_for_specific_domain_when_domain_is_specified (line 97) | def test_returns_for_specific_domain_when_domain_is_specified(self): method test_raises_exception_if_domain_is_active_but_ignore_active_domains_is_true (line 107) | def test_raises_exception_if_domain_is_active_but_ignore_active_domain... method test_raises_exception_if_database_does_not_exist (line 112) | def test_raises_exception_if_database_does_not_exist(self): class DropUCRTablesTests (line 118) | class DropUCRTablesTests(BaseOrphanedUCRTest): method test_ucrs_are_dropped (line 120) | def test_ucrs_are_dropped(self): class ManageOrphanedUCRsTests (line 136) | class ManageOrphanedUCRsTests(BaseOrphanedUCRTest): method setUp (line 138) | def setUp(self): method test_non_orphaned_tables_are_not_dropped (line 146) | def test_non_orphaned_tables_are_not_dropped(self): method test_orphaned_table_for_active_domain_is_not_dropped_if_ignore_active_domains_is_true (line 151) | def test_orphaned_table_for_active_domain_is_not_dropped_if_ignore_act... method test_orphaned_table_for_active_domain_is_dropped_if_ignore_active_domains_is_false (line 157) | def test_orphaned_table_for_active_domain_is_dropped_if_ignore_active_... method test_orphaned_table_for_deleted_domain_is_dropped_if_ignore_active_domains_is_true (line 163) | def test_orphaned_table_for_deleted_domain_is_dropped_if_ignore_active... method test_orphaned_table_for_deleted_domain_is_dropped_if_ignore_active_domains_is_false (line 169) | def test_orphaned_table_for_deleted_domain_is_dropped_if_ignore_active... method test_orphaned_table_for_deleted_domain_is_dropped_if_domain_is_set (line 175) | def test_orphaned_table_for_deleted_domain_is_dropped_if_domain_is_set... FILE: corehq/apps/userreports/tests/test_operators.py function test_in_operator (line 18) | def test_in_operator(self, input, reference_list, expected_result): FILE: corehq/apps/userreports/tests/test_pillow.py function setup_module (line 59) | def setup_module(): function teardown_module (line 63) | def teardown_module(): function _get_pillow (line 67) | def _get_pillow(configs, processor_chunk_size=0): class Config (line 84) | class Config: class Adapter (line 89) | class Adapter: method config_id (line 93) | def config_id(self): class UcrTableManagerTest (line 97) | class UcrTableManagerTest(SimpleTestCase): method test_iter_adapters (line 100) | def test_iter_adapters(self): method test_iter_adapters_since (line 120) | def test_iter_adapters_since(self): class ConfigurableReportTableManagerDbTest (line 138) | class ConfigurableReportTableManagerDbTest(TestCase): method tearDown (line 139) | def tearDown(self): method test_table_adapters (line 143) | def test_table_adapters(self): method test_table_adapters_for_migration_process (line 155) | def test_table_adapters_for_migration_process(self): method test_complete_integration (line 172) | def test_complete_integration(self, mock_rebuild_sql_tables): method test_bad_spec_error (line 191) | def test_bad_spec_error(self, _): method _copy_data_source (line 207) | def _copy_data_source(self, data_source): class ChunkedUCRProcessorTest (line 214) | class ChunkedUCRProcessorTest(TestCase): method setUpClass (line 216) | def setUpClass(cls): method tearDownClass (line 226) | def tearDownClass(cls): method tearDown (line 231) | def tearDown(self): method test_basic_sql (line 241) | def test_basic_sql(self, processor_patch): method _create_cases (line 252) | def _create_cases(self, datetime_mock, docs=[]): method _create_and_process_changes (line 266) | def _create_and_process_changes(self, docs=[]): method test_full_fallback (line 276) | def test_full_fallback(self, process_change_patch, process_changes_pat... method test_partial_fallback_calls (line 287) | def test_partial_fallback_calls(self, iter_docs_patch, process_change_... method test_partial_fallback_data (line 300) | def test_partial_fallback_data(self, iter_docs_patch): method test_invalid_data_bulk_processor (line 317) | def test_invalid_data_bulk_processor(self, process_change): method test_invalid_data_serial_processor (line 347) | def test_invalid_data_serial_processor(self, process_changes_chunk): class IndicatorPillowTest (line 376) | class IndicatorPillowTest(BaseRepeaterTest): method setUpClass (line 381) | def setUpClass(cls): method tearDownClass (line 396) | def tearDownClass(cls): method tearDown (line 401) | def tearDown(self): method _check_sample_doc_state (line 406) | def _check_sample_doc_state(self, expected_indicators, datetime_mock): method test_stale_rebuild (line 422) | def test_stale_rebuild(self): method test_change_transport (line 431) | def test_change_transport(self, datetime_mock): method test_datasource_change_triggers_change_signal (line 440) | def test_datasource_change_triggers_change_signal(self, datetime_mock,... method test_rebuild_indicators (line 461) | def test_rebuild_indicators(self, datetime_mock): method test_bad_integer_datatype (line 470) | def test_bad_integer_datatype(self): method test_basic_doc_processing (line 484) | def test_basic_doc_processing(self, datetime_mock): method test_not_relevant_to_domain (line 491) | def test_not_relevant_to_domain(self, datetime_mock): method test_process_doc_from_sql_chunked (line 499) | def test_process_doc_from_sql_chunked(self, datetime_mock): method test_process_doc_from_sql (line 505) | def test_process_doc_from_sql(self, datetime_mock): method _test_process_doc_from_sql (line 508) | def _test_process_doc_from_sql(self, datetime_mock): method test_process_deleted_doc_from_sql_chunked (line 525) | def test_process_deleted_doc_from_sql_chunked(self, datetime_mock): method test_delete_doc_should_not_forward_change (line 539) | def test_delete_doc_should_not_forward_change(self, datetime_mock, reg... method _setup_data_source_subscription (line 544) | def _setup_data_source_subscription(self, domain, data_source_id, num_... method test_process_deleted_doc_from_sql (line 554) | def test_process_deleted_doc_from_sql(self, datetime_mock): method _test_process_deleted_doc_from_sql (line 557) | def _test_process_deleted_doc_from_sql(self, datetime_mock): method test_process_filter_no_longer_pass (line 580) | def test_process_filter_no_longer_pass(self, datetime_mock): method test_check_if_doc_exist (line 594) | def test_check_if_doc_exist(self, datetime_mock): class ProcessRelatedDocTypePillowTest (line 605) | class ProcessRelatedDocTypePillowTest(TestCase): method setUp (line 609) | def setUp(self): method tearDown (line 616) | def tearDown(self): method _post_case_blocks (line 623) | def _post_case_blocks(self, iteration=0): method test_process_doc_from_sql_stale_chunked (line 644) | def test_process_doc_from_sql_stale_chunked(self): method test_process_doc_from_sql_stale (line 652) | def test_process_doc_from_sql_stale(self): method _test_process_doc_from_sql_stale (line 660) | def _test_process_doc_from_sql_stale(self, pillow=None, num_queries=4): class ReuseEvaluationContextTest (line 685) | class ReuseEvaluationContextTest(TestCase): method setUp (line 689) | def setUp(self): method tearDown (line 704) | def tearDown(self): method _post_case_blocks (line 711) | def _post_case_blocks(self, iteration=0): method _test_pillow (line 732) | def _test_pillow(self, pillow, since, num_queries=12): method test_reuse_cache (line 740) | def test_reuse_cache(self): method test_reuse_cache_chunked (line 743) | def test_reuse_cache_chunked(self): method _test_reuse_cache (line 748) | def _test_reuse_cache(self, pillow1=None, pillow2=None, num_queries=4): class AsyncIndicatorTest (line 766) | class AsyncIndicatorTest(TestCase): method setUpClass (line 771) | def setUpClass(cls): method tearDownClass (line 781) | def tearDownClass(cls): method tearDown (line 786) | def tearDown(self): method test_async_save_success (line 796) | def test_async_save_success(self): method test_async_save_fails (line 840) | def test_async_save_fails(self, config): method test_async_invalid_data (line 882) | def test_async_invalid_data(self): class ChunkedAsyncIndicatorTest (line 932) | class ChunkedAsyncIndicatorTest(AsyncIndicatorTest): method setUpClass (line 935) | def setUpClass(cls): class IndicatorConfigFilterTest (line 940) | class IndicatorConfigFilterTest(SimpleTestCase): method setUp (line 942) | def setUp(self): method test_filter (line 945) | def test_filter(self): method test_deleted_filter (line 958) | def test_deleted_filter(self): function _save_sql_case (line 975) | def _save_sql_case(doc): FILE: corehq/apps/userreports/tests/test_pillow_utils.py class TestTaskCoordinator (line 8) | class TestTaskCoordinator: method setup_method (line 10) | def setup_method(self, __): method test_should_run (line 13) | def test_should_run(self): method test_timeout (line 18) | def test_timeout(self): method test_reset (line 26) | def test_reset(self): method test_timeout_changed (line 46) | def test_timeout_changed(self): method test_update_local_cache_from_redis (line 55) | def test_update_local_cache_from_redis(self): method test_does_not_hit_django_cache_unnecessarily (line 65) | def test_does_not_hit_django_cache_unnecessarily(self): method test_concurrency (line 74) | def test_concurrency(self): method test_local_cache_pruning (line 81) | def test_local_cache_pruning(self): method _django_cache (line 94) | def _django_cache(): FILE: corehq/apps/userreports/tests/test_rebuild_migrate.py function setup_module (line 22) | def setup_module(): function teardown_module (line 26) | def teardown_module(): class RebuildTableTest (line 30) | class RebuildTableTest(TestCase): method _get_config (line 36) | def _get_config(self, extra_id): method _setup_data_source (line 42) | def _setup_data_source(self, extra_id): method test_add_index (line 50) | def test_add_index(self): method test_table_with_inserted_at_index_excluded (line 80) | def test_table_with_inserted_at_index_excluded(self): method test_add_non_nullable_column (line 143) | def test_add_non_nullable_column(self): method test_add_nullable_column (line 182) | def test_add_nullable_column(self): method test_skip_destructive_rebuild (line 216) | def test_skip_destructive_rebuild(self): method test_implicit_pk (line 289) | def test_implicit_pk(self): method test_ordered_pk (line 297) | def test_ordered_pk(self): FILE: corehq/apps/userreports/tests/test_registry_data_source_config.py class RegistryDataSourceConfigurationTest (line 24) | class RegistryDataSourceConfigurationTest(SimpleTestCase): method setUp (line 26) | def setUp(self): method tearDown (line 36) | def tearDown(self): method test_metadata (line 39) | def test_metadata(self): method test_filters_doc_type (line 47) | def test_filters_doc_type(self): method test_filters_case_type (line 50) | def test_filters_case_type(self): method test_filters_domain (line 53) | def test_filters_domain(self): method test_filters_domain_global (line 57) | def test_filters_domain_global(self): method _test_filters (line 61) | def _test_filters(self, test_field, matching_values, not_matching_valu... method test_columns (line 76) | def test_columns(self): method test_indicators (line 96) | def test_indicators(self, datetime_mock): method test_configured_filter_validation (line 106) | def test_configured_filter_validation(self): class RegistryDataSourceConfigurationDbTest (line 112) | class RegistryDataSourceConfigurationDbTest(TestCase): method setUpClass (line 115) | def setUpClass(cls): method test_by_domain_returns_relevant_report_configs (line 136) | def test_by_domain_returns_relevant_report_configs(self): method test_by_domain_returns_empty (line 141) | def test_by_domain_returns_empty(self): method test_all_returns_expected_result (line 145) | def test_all_returns_expected_result(self): method test_registry_slug_is_required (line 151) | def test_registry_slug_is_required(self): method test_registry_global_validation (line 157) | def test_registry_global_validation(self): FILE: corehq/apps/userreports/tests/test_registry_pillow.py class RegistryDataSourceTableManagerTest (line 22) | class RegistryDataSourceTableManagerTest(TestCase): method setUpTestData (line 26) | def setUpTestData(cls): method test_bootstrap (line 37) | def test_bootstrap(self): method test_update_modified_since_remove_deactivated (line 40) | def test_update_modified_since_remove_deactivated(self): method test_update_modified_since_add_adapter_same_domain (line 51) | def test_update_modified_since_add_adapter_same_domain(self): method test_update_modified_since_add_adapter_different_domain (line 67) | def test_update_modified_since_add_adapter_different_domain(self): method test_update_modified_since_refresh_same_configs (line 84) | def test_update_modified_since_refresh_same_configs(self): method _bootstrap_manager_with_data_source (line 103) | def _bootstrap_manager_with_data_source(self): class RegistryUcrPillowTest (line 118) | class RegistryUcrPillowTest(TestCase): method setUpClass (line 121) | def setUpClass(cls): method tearDown (line 154) | def tearDown(self): method test_registry_ucr (line 159) | def test_registry_ucr(self): method test_global_registry_ucr (line 183) | def test_global_registry_ucr(self): class RegistryDataSourceProviderTest (line 222) | class RegistryDataSourceProviderTest(TestCase): method setUpTestData (line 226) | def setUpTestData(cls): method test_get_by_owning_domain (line 245) | def test_get_by_owning_domain(self): method test_get_by_granted_domain (line 253) | def test_get_by_granted_domain(self): FILE: corehq/apps/userreports/tests/test_report_aggregation.py class ConfigurableReportAggregationTestMixin (line 17) | class ConfigurableReportAggregationTestMixin(ConfigurableReportTestMixin): method _create_report (line 18) | def _create_report(self, aggregation_columns, columns, filters=None, s... method _create_view (line 32) | def _create_view(self, report_config): class TestReportAggregationSQL (line 40) | class TestReportAggregationSQL(ConfigurableReportAggregationTestMixin, T... method _create_data (line 46) | def _create_data(cls): method _create_data_source (line 58) | def _create_data_source(cls): method setUpClass (line 112) | def setUpClass(cls): method test_aggregation_by_column_not_in_report (line 117) | def test_aggregation_by_column_not_in_report(self): method test_aggregation_by_column_in_report (line 147) | def test_aggregation_by_column_in_report(self): method test_max_aggregation_by_string_column (line 193) | def test_max_aggregation_by_string_column(self): method test_aggregation_by_indicator_in_percent_column (line 234) | def test_aggregation_by_indicator_in_percent_column(self): method test_aggregation_by_column_with_new_id (line 272) | def test_aggregation_by_column_with_new_id(self): method test_aggregation_no_group_by (line 312) | def test_aggregation_no_group_by(self): method test_sort_expression (line 338) | def test_sort_expression(self): method test_total_row (line 400) | def test_total_row(self): method test_no_total_row (line 449) | def test_no_total_row(self): method test_total_row_first_column_value (line 497) | def test_total_row_first_column_value(self): method test_totaling_noninteger_column (line 546) | def test_totaling_noninteger_column(self): method test_total_row_with_expanded_column (line 566) | def test_total_row_with_expanded_column(self): class TestReportMultipleAggregationsSQL (line 618) | class TestReportMultipleAggregationsSQL(ConfigurableReportAggregationTes... method _create_data (line 620) | def _create_data(cls): method _create_data_source (line 654) | def _create_data_source(cls): method setUpClass (line 739) | def setUpClass(cls): method _create_default_report (line 744) | def _create_default_report(self, filters=None): method test_with_multiple_agg_columns (line 776) | def test_with_multiple_agg_columns(self): method test_aggregate_by_column_id_slash_data_source_indicator (line 798) | def test_aggregate_by_column_id_slash_data_source_indicator(self): method test_with_prefilter (line 834) | def test_with_prefilter(self): method test_aggregate_date (line 867) | def test_aggregate_date(self): method test_integer_buckets (line 916) | def test_integer_buckets(self): method test_bad_integer_buckets_specs (line 963) | def test_bad_integer_buckets_specs(self): method test_sum_when (line 1027) | def test_sum_when(self): method test_doc_id_aggregation (line 1131) | def test_doc_id_aggregation(self): FILE: corehq/apps/userreports/tests/test_report_builder.py class ReportBuilderDBTest (line 53) | class ReportBuilderDBTest(TestCase): method setUpClass (line 58) | def setUpClass(cls): method tearDownClass (line 72) | def tearDownClass(cls): class DataSourceBuilderTest (line 80) | class DataSourceBuilderTest(ReportBuilderDBTest): method test_builder_bad_type (line 82) | def test_builder_bad_type(self): method test_builder_bad_type_case (line 91) | def test_builder_bad_type_case(self): method test_builder_for_forms (line 100) | def test_builder_for_forms(self): method test_builder_for_cases (line 152) | def test_builder_for_cases(self): method test_owner_as_location (line 193) | def test_owner_as_location(self, *args): method test_builder_for_registry (line 227) | def test_builder_for_registry(self): class DataSourceReferenceTest (line 258) | class DataSourceReferenceTest(ReportBuilderDBTest): method test_reference_for_forms (line 260) | def test_reference_for_forms(self): method test_reference_for_cases (line 314) | def test_reference_for_cases(self): class ReportBuilderTest (line 350) | class ReportBuilderTest(ReportBuilderDBTest): method test_data_source_exclusivity (line 352) | def test_data_source_exclusivity(self): method test_updating_report_data_source (line 402) | def test_updating_report_data_source(self): method test_updating_report_that_shares_data_source (line 466) | def test_updating_report_that_shares_data_source(self): method test_data_source_columns (line 524) | def test_data_source_columns(self): class MultiselectQuestionTest (line 574) | class MultiselectQuestionTest(ReportBuilderDBTest): method testReportColumnOptions (line 579) | def testReportColumnOptions(self): method testDataSource (line 594) | def testDataSource(self): method test_multiselect_aggregation (line 630) | def test_multiselect_aggregation(self): FILE: corehq/apps/userreports/tests/test_report_builder_filters.py class PreFilterFormatTest (line 7) | class PreFilterFormatTest(SimpleTestCase): method test_empty_filter_format (line 9) | def test_empty_filter_format(self): method test_exists_filter_format (line 15) | def test_exists_filter_format(self): method test_not_equal_filter_format (line 21) | def test_not_equal_filter_format(self): method test_value_filter_format (line 31) | def test_value_filter_format(self): method test_date_filter_format (line 37) | def test_date_filter_format(self): FILE: corehq/apps/userreports/tests/test_report_charts.py class ChartTestCase (line 14) | class ChartTestCase(SimpleTestCase): method test_no_type (line 16) | def test_no_type(self): method test_bad_type (line 24) | def test_bad_type(self): class PieChartTestCase (line 34) | class PieChartTestCase(SimpleTestCase): method test_make_pie_chart (line 36) | def test_make_pie_chart(self): method test_missing_value (line 45) | def test_missing_value(self): class MultibarTestCase (line 54) | class MultibarTestCase(SimpleTestCase): method test_make_multibar_chart (line 56) | def test_make_multibar_chart(self): method test_make_multibar_chart_legacy_columns (line 74) | def test_make_multibar_chart_legacy_columns(self): method test_make_multibar_chart_bad_columns (line 93) | def test_make_multibar_chart_bad_columns(self): method test_missing_x_axis (line 103) | def test_missing_x_axis(self): class MultibarAggregateTestCase (line 115) | class MultibarAggregateTestCase(SimpleTestCase): method test_make_multibar_chart (line 117) | def test_make_multibar_chart(self): method test_missing_value (line 127) | def test_missing_value(self): method test_missing_primary (line 136) | def test_missing_primary(self): method test_missing_secondary (line 145) | def test_missing_secondary(self): class ChartJsonTest (line 155) | class ChartJsonTest(SimpleTestCase): method test_charts_to_json (line 157) | def test_charts_to_json(self): FILE: corehq/apps/userreports/tests/test_report_config.py class ReportConfigurationTest (line 24) | class ReportConfigurationTest(SimpleTestCase): method setUp (line 26) | def setUp(self): method test_metadata (line 29) | def test_metadata(self): method test_duplicate_filter_slugs (line 35) | def test_duplicate_filter_slugs(self): method test_duplicate_column_ids (line 42) | def test_duplicate_column_ids(self): method test_duplicate_column_ids_pct_columns (line 49) | def test_duplicate_column_ids_pct_columns(self): method test_group_by_missing_from_columns (line 70) | def test_group_by_missing_from_columns(self): method test_fall_back_display_to_column_id (line 88) | def test_fall_back_display_to_column_id(self): method test_missing_column_id (line 105) | def test_missing_column_id(self): method test_constant_date_expression_column (line 131) | def test_constant_date_expression_column(self): class ReportConfigurationDBAccessorsTests (line 155) | class ReportConfigurationDBAccessorsTests(TestCase): method setUpClass (line 158) | def setUpClass(cls): method test_by_domain_returns_relevant_report_configs (line 175) | def test_by_domain_returns_relevant_report_configs(self): method test_by_domain_returns_empty (line 180) | def test_by_domain_returns_empty(self): method test_get_all_report_configs_returns_expected_result (line 184) | def test_get_all_report_configs_returns_expected_result(self): method test_create_requires_domain (line 190) | def test_create_requires_domain(self): method test_create_requires_config_id (line 194) | def test_create_requires_config_id(self): class ReportTranslationTest (line 199) | class ReportTranslationTest(TestCase): method setUpClass (line 204) | def setUpClass(cls): method test_column_string_display_value (line 238) | def test_column_string_display_value(self): method test_column_display_translation (line 243) | def test_column_display_translation(self): FILE: corehq/apps/userreports/tests/test_report_configuration.py function test_report_configuration_type_map (line 4) | def test_report_configuration_type_map(): function test_report_configuration_type_table (line 26) | def test_report_configuration_type_table(): function test_report_configuration_type_list (line 43) | def test_report_configuration_type_list(): FILE: corehq/apps/userreports/tests/test_report_data.py class ReportDataTest (line 20) | class ReportDataTest(TestCase): method setUp (line 22) | def setUp(self): method _add_some_rows (line 152) | def _add_some_rows(self, count): method _add_rows (line 157) | def _add_rows(self, rows): method test_basic_query (line 174) | def test_basic_query(self): method test_limit (line 189) | def test_limit(self): method test_skip (line 199) | def test_skip(self): method test_total_row (line 209) | def test_total_row(self): method test_transform (line 216) | def test_transform(self): FILE: corehq/apps/userreports/tests/test_report_filters.py class FilterTestCase (line 53) | class FilterTestCase(SimpleTestCase): method test_no_type (line 55) | def test_no_type(self): method test_bad_type (line 63) | def test_bad_type(self): method test_missing_field (line 72) | def test_missing_field(self): method test_missing_slug (line 80) | def test_missing_slug(self): method test_translation (line 88) | def test_translation(self): class DateFilterTestCase (line 112) | class DateFilterTestCase(SimpleTestCase): method test_date_filter (line 114) | def test_date_filter(self): method test_compare_as_string_option (line 125) | def test_compare_as_string_option(self): class DateFilterDBTest (line 154) | class DateFilterDBTest(ConfigurableReportTestMixin, TestCase): method setUpClass (line 157) | def setUpClass(cls): method _create_data (line 164) | def _create_data(cls): method _create_data_source (line 168) | def _create_data_source(cls): method _create_report (line 223) | def _create_report(cls): method _create_view (line 264) | def _create_view(self, filter_values): method docs_returned (line 274) | def docs_returned(self, export_table): method test_standard_date_filter (line 278) | def test_standard_date_filter(self): method test_string_date_filter (line 287) | def test_string_date_filter(self): method test_standard_datetime_filter (line 296) | def test_standard_datetime_filter(self): class QuarterFilterTestCase (line 305) | class QuarterFilterTestCase(SimpleTestCase): method test_date_filter (line 307) | def test_date_filter(self): class NumericFilterTestCase (line 340) | class NumericFilterTestCase(SimpleTestCase): method test_numeric_filter (line 342) | def test_numeric_filter(self): method test_numeric_filter_value (line 353) | def test_numeric_filter_value(self): class PreFilterTestCase (line 366) | class PreFilterTestCase(SimpleTestCase): method test_pre_filter (line 368) | def test_pre_filter(self): method test_pre_filter_value (line 380) | def test_pre_filter_value(self): method test_pre_filter_value_empty (line 392) | def test_pre_filter_value_empty(self): method test_pre_filter_value_empty_date_types (line 412) | def test_pre_filter_value_empty_date_types(self): method test_pre_filter_value_exists (line 434) | def test_pre_filter_value_exists(self): method test_pre_filter_value_exists_date_types (line 454) | def test_pre_filter_value_exists_date_types(self): method test_pre_filter_value_array (line 475) | def test_pre_filter_value_array(self): method test_pre_filter_operator (line 491) | def test_pre_filter_operator(self): method test_pre_filter_invalid_operator (line 504) | def test_pre_filter_invalid_operator(self): method test_pre_filter_between_operator (line 518) | def test_pre_filter_between_operator(self): method test_pre_filter_distinct_from_operator (line 535) | def test_pre_filter_distinct_from_operator(self): method test_pre_filter_dyn_operator (line 548) | def test_pre_filter_dyn_operator(self): class ChoiceListFilterTestCase (line 572) | class ChoiceListFilterTestCase(SimpleTestCase): method test_choice_list_filter (line 584) | def test_choice_list_filter(self): method test_choice_list_filter_show_all (line 604) | def test_choice_list_filter_show_all(self): method test_choice_list_filter_with_integers (line 623) | def test_choice_list_filter_with_integers(self): class DynamicChoiceListFilterTestCase (line 673) | class DynamicChoiceListFilterTestCase(SimpleTestCase): method setUp (line 675) | def setUp(self): method test_choice_list_filter (line 684) | def test_choice_list_filter(self): method test_string_datatype (line 690) | def test_string_datatype(self): method test_integer_datatype (line 704) | def test_integer_datatype(self): method test_multiple_selections (line 718) | def test_multiple_selections(self): method test_ancestor_expression (line 734) | def test_ancestor_expression(self): class DateFilterOffsetTest (line 754) | class DateFilterOffsetTest(SimpleTestCase): method _computed_dates (line 755) | def _computed_dates(self, actual_startdate, actual_enddate): method test_date_objects (line 770) | def test_date_objects(self): method test_datetime_objects (line 776) | def test_datetime_objects(self): class LocationDrilldownFilterTest (line 785) | class LocationDrilldownFilterTest(LocationHierarchyTestCase): method setUpClass (line 800) | def setUpClass(cls): method test_filter (line 804) | def test_filter(self): method test_filter_value (line 852) | def test_filter_value(self): method test_ancestor_expression_missing_location_type (line 870) | def test_ancestor_expression_missing_location_type(self): method test_prefix_ancestor_location (line 883) | def test_prefix_ancestor_location(self): class QueryDictUtilTest (line 928) | class QueryDictUtilTest(SimpleTestCase): method test_raw_boolean_strings_are_not_cast (line 929) | def test_raw_boolean_strings_are_not_cast(self): FILE: corehq/apps/userreports/tests/test_report_rendering.py class VeryFakeReportExport (line 7) | class VeryFakeReportExport(ReportExport): method __init__ (line 8) | def __init__(self, data): method get_table (line 11) | def get_table(self, limit=None): class VeryFakeReportView (line 15) | class VeryFakeReportView(ConfigurableReportView): method __init__ (line 18) | def __init__(self, data): method report_export (line 22) | def report_export(self): class ReportRenderingTest (line 26) | class ReportRenderingTest(SimpleTestCase): method test_email_response_unicode (line 28) | def test_email_response_unicode(self): FILE: corehq/apps/userreports/tests/test_save_errors.py function get_sample_config (line 20) | def get_sample_config(domain=None): class SaveErrorsTest (line 39) | class SaveErrorsTest(TestCase): method setUp (line 41) | def setUp(self): method test_raise_error_for_missing_table (line 46) | def test_raise_error_for_missing_table(self): method test_missing_column (line 56) | def test_missing_column(self): method test_non_nullable_column (line 74) | def test_non_nullable_column(self): class AdapterBulkSaveTest (line 94) | class AdapterBulkSaveTest(TestCase): method setUp (line 96) | def setUp(self): method test_bulk_save_and_bulk_delete (line 105) | def test_bulk_save_and_bulk_delete(self): method test_save_rows_accepts_empty_list (line 121) | def test_save_rows_accepts_empty_list(self): FILE: corehq/apps/userreports/tests/test_static_data_sources.py class TestStaticDataSource (line 20) | class TestStaticDataSource(SimpleTestCase, TestFileMixin): method test_wrap (line 25) | def test_wrap(self): method test_get_all (line 29) | def test_get_all(self): method test_is_static_positive_json (line 46) | def test_is_static_positive_json(self): method test_is_static_positive_yaml (line 51) | def test_is_static_positive_yaml(self): method test_is_static_negative (line 56) | def test_is_static_negative(self): method test_deactivate_noop (line 60) | def test_deactivate_noop(self): method test_production_config (line 67) | def test_production_config(self): method test_for_table_id_conflicts (line 71) | def test_for_table_id_conflicts(self): FILE: corehq/apps/userreports/tests/test_static_reports.py class TestStaticReportConfig (line 17) | class TestStaticReportConfig(SimpleTestCase, TestFileMixin): method setUp (line 22) | def setUp(self): method test_wrap (line 26) | def test_wrap(self): method test_get_all_json (line 30) | def test_get_all_json(self): method test_get_all_yaml (line 44) | def test_get_all_yaml(self): method test_production_config (line 55) | def test_production_config(self): method test_for_report_id_conflicts (line 59) | def test_for_report_id_conflicts(self): method test_data_sources_actually_exist (line 70) | def test_data_sources_actually_exist(self): FILE: corehq/apps/userreports/tests/test_tasks.py class TimeInRange (line 20) | class TimeInRange(SimpleTestCase): method test_sunday_all_day (line 22) | def test_sunday_all_day(self): method test_monday (line 27) | def test_monday(self): class BaseTestRebuildIndicators (line 41) | class BaseTestRebuildIndicators(ConfigurableReportTestMixin, TestCase): method tearDownClass (line 43) | def tearDownClass(cls): method setUpClass (line 48) | def setUpClass(cls): class TestRebuildIndicators (line 54) | class TestRebuildIndicators(BaseTestRebuildIndicators): method test_rebuild_indicators (line 59) | def test_rebuild_indicators(self, mock_get_indicator_adapter, mock_get... class TestRebuildIndicatorsInPlace (line 94) | class TestRebuildIndicatorsInPlace(BaseTestRebuildIndicators): method test_rebuild_indicators_in_place (line 99) | def test_rebuild_indicators_in_place(self, mock_get_indicator_adapter,... FILE: corehq/apps/userreports/tests/test_transforms.py class TransformFactoryTest (line 13) | class TransformFactoryTest(SimpleTestCase): method testMissingType (line 15) | def testMissingType(self): method testInvalidType (line 21) | def testInvalidType(self): class NumberFormatTransformTest (line 29) | class NumberFormatTransformTest(SimpleTestCase): method setUp (line 31) | def setUp(self): method test_int (line 37) | def test_int(self): method test_decimal (line 40) | def test_decimal(self): method test_none (line 43) | def test_none(self): function test_number_format_transform_strings (line 53) | def test_number_format_transform_strings(self, input, expected_result): class TestEthiopianConversion (line 57) | class TestEthiopianConversion(SimpleTestCase): function test_ethiopian_to_gregorian (line 68) | def test_ethiopian_to_gregorian(self, date_string, expected_result): function test_gregorian_to_ethiopian (line 83) | def test_gregorian_to_ethiopian(self, date_string, expected_result): class CustomTransformTest (line 92) | class CustomTransformTest(SimpleTestCase): method testInvalidCustomType (line 94) | def testInvalidCustomType(self): method testValidCustom (line 101) | def testValidCustom(self): class DaysElapsedTransformTest (line 109) | class DaysElapsedTransformTest(SimpleTestCase): method test_datetime_transform (line 111) | def test_datetime_transform(self): method test_string_transform (line 118) | def test_string_transform(self): class TranslationTransform (line 127) | class TranslationTransform(SimpleTestCase): method test_missing_translation (line 129) | def test_missing_translation(self): method test_basic_translation (line 136) | def test_basic_translation(self): method test_default_language_translation (line 146) | def test_default_language_translation(self): method test_spanish_language_translation (line 165) | def test_spanish_language_translation(self): method test_dont_translate_for_mobile (line 183) | def test_dont_translate_for_mobile(self): method test_bad_option (line 196) | def test_bad_option(self): class MultiValueStringTranslationTransform (line 209) | class MultiValueStringTranslationTransform(SimpleTestCase): method test_multi_translation (line 211) | def test_multi_translation(self): class MarkdownTransformTest (line 226) | class MarkdownTransformTest(SimpleTestCase): method test_markdown_rendering (line 228) | def test_markdown_rendering(self): FILE: corehq/apps/userreports/tests/test_utils.py class UtilitiesTestCase (line 18) | class UtilitiesTestCase(SimpleTestCase): method test_truncate_value_left (line 20) | def test_truncate_value_left(self): method test_truncate_value_right (line 25) | def test_truncate_value_right(self): method test_truncate_value_unicode_left (line 30) | def test_truncate_value_unicode_left(self): method test_truncate_value_unicode_right (line 35) | def test_truncate_value_unicode_right(self): method test_table_name (line 40) | def test_table_name(self): method test_table_name_unicode (line 43) | def test_table_name_unicode(self): method test_table_trickery (line 49) | def test_table_trickery(self): method test_long_table_name (line 54) | def test_long_table_name(self): method test_column_unicode (line 59) | def test_column_unicode(self): method test_column_trickery (line 64) | def test_column_trickery(self): method test_column_name_suffix (line 77) | def test_column_name_suffix(self): method test_column_length_with_suffix (line 83) | def test_column_length_with_suffix(self): function test_remove_deleted_doc_type_suffix (line 99) | def test_remove_deleted_doc_type_suffix(doc_type, expected): class TestGetDomainForUCRTableName (line 103) | class TestGetDomainForUCRTableName(SimpleTestCase): method test_modern_prefix (line 105) | def test_modern_prefix(self): method test_legacy_prefix (line 113) | def test_legacy_prefix(self): method test_domain_name_with_underscore (line 121) | def test_domain_name_with_underscore(self): method test_domain_name_with_unicode (line 129) | def test_domain_name_with_unicode(self): method test_domain_name_with_illegal_name (line 137) | def test_domain_name_with_illegal_name(self): FILE: corehq/apps/userreports/tests/test_view.py class ConfigurableReportTestMixin (line 48) | class ConfigurableReportTestMixin(object): method _sample_data_source_config (line 53) | def _sample_data_source_config(cls): method _new_case (line 101) | def _new_case(cls, properties): method _delete_everything (line 114) | def _delete_everything(cls): class ConfigurableReportViewTest (line 121) | class ConfigurableReportViewTest(ConfigurableReportTestMixin, TestCase): method _build_report_and_view (line 123) | def _build_report_and_view(self, request=HttpRequest()): method tearDownClass (line 200) | def tearDownClass(cls): method setUpClass (line 207) | def setUpClass(cls): method test_export_table (line 214) | def test_export_table(self): method test_report_preview_data (line 238) | def test_report_preview_data(self): method test_report_preview_data_with_expanded_columns (line 286) | def test_report_preview_data_with_expanded_columns(self): method test_report_charts (line 325) | def test_report_charts(self): method test_report_charts_with_expanded_columns (line 350) | def test_report_charts_with_expanded_columns(self): method test_report_preview_data_does_not_handle_user_reports_error (line 375) | def test_report_preview_data_does_not_handle_user_reports_error(self, ... method test_report_preview_data_propagates_data_source_not_found_error (line 383) | def test_report_preview_data_propagates_data_source_not_found_error(se... method test_paginated_build_table (line 391) | def test_paginated_build_table(self): method test_redirect_custom_report (line 417) | def test_redirect_custom_report(self): method test_redirect_report_builder (line 422) | def test_redirect_report_builder(self): method test_can_edit_report (line 429) | def test_can_edit_report(self): class TestDataSourceRebuild (line 481) | class TestDataSourceRebuild(ConfigurableReportTestMixin, TestCase): method setUpClass (line 483) | def setUpClass(cls): method tearDownClass (line 497) | def tearDownClass(cls): method _send_data_source_rebuild_request (line 501) | def _send_data_source_rebuild_request(self): method test_number_of_records_to_be_processed (line 505) | def test_number_of_records_to_be_processed(self): method test_feature_flag (line 509) | def test_feature_flag(self): method test_successful_rebuilt (line 515) | def test_successful_rebuilt(self, mock_prep_data_source_for_rebuild): method test_blocked_rebuild_for_restricted_data_source (line 529) | def test_blocked_rebuild_for_restricted_data_source(self): method test_successful_rebuild_for_restricted_data_source (line 548) | def test_successful_rebuild_for_restricted_data_source(self): method test_if_build_awaiting (line 560) | def test_if_build_awaiting(self): class TestPrepDataSourceForRebuild (line 578) | class TestPrepDataSourceForRebuild(ConfigurableReportTestMixin, TestCase): method test_prep_data_source_for_rebuild_for_non_static (line 579) | def test_prep_data_source_for_rebuild_for_non_static(self): method test_prep_data_source_for_rebuild_for_static (line 588) | def test_prep_data_source_for_rebuild_for_static(self): class TestBuildDataSourceInPlace (line 598) | class TestBuildDataSourceInPlace(ConfigurableReportTestMixin, TestCase): method setUpClass (line 600) | def setUpClass(cls): method tearDownClass (line 606) | def tearDownClass(cls): method _send_build_data_source_in_place_request (line 610) | def _send_build_data_source_in_place_request(self): method test_successful_rebuilt (line 618) | def test_successful_rebuilt(self, mock_prep_data_source_for_rebuild, m... method test_if_build_awaiting (line 637) | def test_if_build_awaiting(self): class TestSubscribeToDataSource (line 655) | class TestSubscribeToDataSource(TestCase): method setUpClass (line 662) | def setUpClass(cls): method tearDownClass (line 677) | def tearDownClass(cls): method _construct_api_auth_header (line 682) | def _construct_api_auth_header(self, api_key): method _post_request (line 685) | def _post_request(self, domain, data_source_id, data, **extras): method test_subscribe_successful (line 691) | def test_subscribe_successful(self): method test_subscribe_create_only_one_repeater_instance (line 723) | def test_subscribe_create_only_one_repeater_instance(self): method test_subscribe_unsuccessful_without_ff (line 769) | def test_subscribe_unsuccessful_without_ff(self): method test_subscribe_unsuccessful_with_a_missing_param (line 781) | def test_subscribe_unsuccessful_with_a_missing_param(self): method test_subscribe_unsuccessful_with_missing_params (line 801) | def test_subscribe_unsuccessful_with_missing_params(self): class TestUnsubscribeFromDataSource (line 821) | class TestUnsubscribeFromDataSource(TestCase): method setUpClass (line 828) | def setUpClass(cls): method tearDownClass (line 843) | def tearDownClass(cls): method _construct_api_auth_header (line 848) | def _construct_api_auth_header(self, api_key): method _post_request (line 851) | def _post_request(self, domain, data_source_id, data=None, **extras): method _subscribe_to_datasource (line 855) | def _subscribe_to_datasource(self, datasource_id): method test_basic_unsubscribe_successful (line 876) | def test_basic_unsubscribe_successful(self): method test_unsubscribe_when_multiple_repeaters (line 900) | def test_unsubscribe_when_multiple_repeaters(self): method test_missing_client_id (line 926) | def test_missing_client_id(self): method test_invalid_client_id (line 938) | def test_invalid_client_id(self): method test_invalid_data_source_id (line 950) | def test_invalid_data_source_id(self): FILE: corehq/apps/userreports/tests/test_views.py class NamedExpressionHighlighterTests (line 10) | class NamedExpressionHighlighterTests(SimpleTestCase): method test_normal_text_has_no_changes (line 11) | def test_normal_text_has_no_changes(self): method test_named_filter_is_highlighted (line 14) | def test_named_filter_is_highlighted(self): method test_result_is_html_safe (line 18) | def test_result_is_html_safe(self): class UCRExpressionListViewTests (line 23) | class UCRExpressionListViewTests(TestCase): method test_paginated_list_limits_results (line 24) | def test_paginated_list_limits_results(self): method test_paginated_list_respects_page (line 32) | def test_paginated_list_respects_page(self): method test_default_limit (line 40) | def test_default_limit(self): method _create_expression (line 48) | def _create_expression(index): method _create_view (line 56) | def _create_view(page=1, limit=None): FILE: corehq/apps/userreports/tests/utils.py function get_sample_report_config (line 30) | def get_sample_report_config(): function get_sample_data_source (line 36) | def get_sample_data_source(): function get_sample_registry_data_source (line 40) | def get_sample_registry_data_source(**kwargs): function bootstrap_pillow (line 44) | def bootstrap_pillow(pillow, *configs, rebuild_adapters=False): function cleanup_ucr (line 65) | def cleanup_ucr(data_source): function get_data_source_with_related_doc_type (line 72) | def get_data_source_with_related_doc_type(): function get_data_source_with_repeat (line 76) | def get_data_source_with_repeat(): function _get_sample_doc (line 80) | def _get_sample_doc(filename, doc_class, **kwargs): function get_sample_doc_and_indicators (line 89) | def get_sample_doc_and_indicators(fake_time_now=None, owner_id='some-use... function doc_to_change (line 123) | def doc_to_change(doc): function domain_lite (line 140) | def domain_lite(name): function mock_datasource_config (line 145) | def mock_datasource_config(): function get_simple_xform (line 150) | def get_simple_xform(): function load_data_from_db (line 164) | def load_data_from_db(table_name): function mock_filter_missing_domains (line 199) | def mock_filter_missing_domains(configs): FILE: corehq/apps/userreports/transforms/custom/date.py function get_month_display (line 9) | def get_month_display(month_index): function days_elapsed_from_date (line 16) | def days_elapsed_from_date(date): function split_date_string (line 22) | def split_date_string(date_string): function get_ethiopian_to_gregorian (line 33) | def get_ethiopian_to_gregorian(date_string): function get_gregorian_to_ethiopian (line 58) | def get_gregorian_to_ethiopian(date_input): FILE: corehq/apps/userreports/transforms/custom/numeric.py function get_short_decimal_display (line 1) | def get_short_decimal_display(num): FILE: corehq/apps/userreports/transforms/custom/users.py function get_user_without_domain_display (line 12) | def get_user_without_domain_display(user_id): FILE: corehq/apps/userreports/transforms/factory.py class TransformFactory (line 18) | class TransformFactory(object): method get_transform (line 29) | def get_transform(cls, spec): FILE: corehq/apps/userreports/transforms/specs.py class Transform (line 28) | class Transform(JsonObject): class CustomTransform (line 49) | class CustomTransform(JsonObject): method get_transform_function (line 58) | def get_transform_function(self): method transform (line 61) | def transform(self, value): class DateFormatTransform (line 65) | class DateFormatTransform(Transform): method get_transform_function (line 69) | def get_transform_function(self): class NumberFormatTransform (line 80) | class NumberFormatTransform(Transform): method get_transform_function (line 84) | def get_transform_function(self): class TranslationTransform (line 97) | class TranslationTransform(Transform): method get_transform_function (line 103) | def get_transform_function(self): class MultipleValueStringTranslationTransform (line 118) | class MultipleValueStringTranslationTransform(TranslationTransform): method get_transform_function (line 122) | def get_transform_function(self): class MarkdownTransform (line 136) | class MarkdownTransform(Transform): method get_transform_function (line 140) | def get_transform_function(self): FILE: corehq/apps/userreports/ui/fields.py class ReportDataSourceField (line 13) | class ReportDataSourceField(forms.ChoiceField): method __init__ (line 15) | def __init__(self, domain, *args, **kwargs): class JsonField (line 27) | class JsonField(forms.CharField): method __init__ (line 32) | def __init__(self, expected_type=None, null_values=None, *args, **kwar... method prepare_value (line 37) | def prepare_value(self, value): method to_python (line 46) | def to_python(self, value): method validate (line 59) | def validate(self, value): FILE: corehq/apps/userreports/ui/forms.py class DocumentFormBase (line 24) | class DocumentFormBase(forms.Form): method __init__ (line 29) | def __init__(self, instance=None, read_only=False, *args, **kwargs): method save (line 38) | def save(self, commit=False): method populate_instance (line 44) | def populate_instance(self, instance, cleaned_data): class ConfigurableReportEditForm (line 56) | class ConfigurableReportEditForm(DocumentFormBase): method __init__ (line 71) | def __init__(self, domain, instance=None, read_only=False, *args, **kw... method clean_visible (line 114) | def clean_visible(self): method clean (line 117) | def clean(self): method save (line 130) | def save(self, commit=False): class ConfigurableDataSourceEditForm (line 141) | class ConfigurableDataSourceEditForm(DocumentFormBase): method __init__ (line 182) | def __init__(self, domain, data_source_config, read_only, *args, **kwa... method clean_table_id (line 239) | def clean_table_id(self): method clean (line 255) | def clean(self): method _check_for_asynchronous (line 271) | def _check_for_asynchronous(self, config): method save (line 286) | def save(self, commit=False): method _report_edit_datasource_metrics (line 292) | def _report_edit_datasource_metrics(self): class ConfigurableDataSourceFromAppForm (line 300) | class ConfigurableDataSourceFromAppForm(forms.Form): method __init__ (line 302) | def __init__(self, domain, *args, **kwargs): FILE: corehq/apps/userreports/ui/widgets.py class JsonWidget (line 6) | class JsonWidget(forms.Textarea): method render (line 8) | def render(self, name, value, attrs=None, renderer=None): FILE: corehq/apps/userreports/util.py function localize (line 34) | def localize(value, lang): function default_language (line 53) | def default_language(): function has_report_builder_add_on_privilege (line 57) | def has_report_builder_add_on_privilege(request): function has_report_builder_access (line 63) | def has_report_builder_access(request): function add_event (line 72) | def add_event(request, event): function has_report_builder_trial (line 77) | def has_report_builder_trial(request): function can_edit_report (line 81) | def can_edit_report(request, report): function can_delete_report (line 92) | def can_delete_report(request, report): function _can_edit_report (line 96) | def _can_edit_report(request, report): function get_referring_apps (line 115) | def get_referring_apps(domain, report_id): function allowed_report_builder_reports (line 133) | def allowed_report_builder_reports(request): function get_configurable_and_static_reports_for_data_source (line 157) | def get_configurable_and_static_reports_for_data_source(domain, data_sou... function get_configurable_and_static_reports (line 162) | def get_configurable_and_static_reports(domain): function get_existing_reports (line 167) | def get_existing_reports(domain): function number_of_report_builder_reports (line 176) | def number_of_report_builder_reports(domain): function number_of_ucr_reports (line 184) | def number_of_ucr_reports(domain): function get_indicator_adapter (line 192) | def get_indicator_adapter(config, raise_errors=False, load_source="unkno... function get_table_name (line 203) | def get_table_name(domain, table_id, max_length=50, prefix=UCR_TABLE_PRE... function truncate_value (line 229) | def truncate_value(value, max_length=63, from_left=True): function get_ucr_class_name (line 248) | def get_ucr_class_name(id): function get_async_indicator_modify_lock_key (line 259) | def get_async_indicator_modify_lock_key(doc_id): function get_static_report_mapping (line 263) | def get_static_report_mapping(from_domain, to_domain): function add_tabbed_text (line 298) | def add_tabbed_text(text): function get_report_config_or_not_found (line 302) | def get_report_config_or_not_found(domain, config_id): function get_ucr_datasource_config_by_id (line 316) | def get_ucr_datasource_config_by_id(indicator_config_id, allow_deleted=F... function _wrap_data_source_by_doc_type (line 329) | def _wrap_data_source_by_doc_type(doc, allow_deleted=False): function wrap_report_config_by_type (line 344) | def wrap_report_config_by_type(config, allow_deleted=False): function get_domain_for_ucr_table_name (line 362) | def get_domain_for_ucr_table_name(table_name): function register_data_source_row_change (line 374) | def register_data_source_row_change(domain, data_source_id, doc_ids): FILE: corehq/apps/userreports/views.py function get_datasource_config_or_404 (line 178) | def get_datasource_config_or_404(config_id, domain): function get_report_config_or_404 (line 185) | def get_report_config_or_404(config_id, domain): function swallow_programming_errors (line 192) | def swallow_programming_errors(fn): class BaseUserConfigReportsView (line 216) | class BaseUserConfigReportsView(BaseDomainView): method main_context (line 220) | def main_context(self): method section_url (line 235) | def section_url(self): method page_url (line 239) | def page_url(self): method dispatch (line 242) | def dispatch(self, *args, **kwargs): class UserConfigReportsHomeView (line 257) | class UserConfigReportsHomeView(BaseUserConfigReportsView): class BaseEditConfigReportView (line 263) | class BaseEditConfigReportView(BaseUserConfigReportsView): method report_id (line 267) | def report_id(self): method page_url (line 271) | def page_url(self): method page_context (line 277) | def page_context(self): method config (line 286) | def config(self): method read_only (line 292) | def read_only(self): method edit_form (line 304) | def edit_form(self): method post (line 311) | def post(self, request, *args, **kwargs): class EditConfigReportView (line 321) | class EditConfigReportView(BaseEditConfigReportView): class CreateConfigReportView (line 326) | class CreateConfigReportView(BaseEditConfigReportView): class ReportBuilderView (line 331) | class ReportBuilderView(BaseDomainView): method dispatch (line 335) | def dispatch(self, request, *args, **kwargs): method main_context (line 339) | def main_context(self): method section_name (line 352) | def section_name(self): method section_url (line 356) | def section_url(self): function paywall_home (line 361) | def paywall_home(domain): class ReportBuilderPaywallBase (line 373) | class ReportBuilderPaywallBase(BaseDomainView): method section_name (line 377) | def section_name(self): method section_url (line 381) | def section_url(self): method plan_name (line 386) | def plan_name(self): class ReportBuilderPaywallPricing (line 390) | class ReportBuilderPaywallPricing(ReportBuilderPaywallBase): method page_context (line 396) | def page_context(self): class ReportBuilderPaywallActivatingSubscription (line 409) | class ReportBuilderPaywallActivatingSubscription(ReportBuilderPaywallBase): method post (line 413) | def post(self, request, domain, *args, **kwargs): class ReportBuilderDataSourceSelect (line 430) | class ReportBuilderDataSourceSelect(ReportBuilderView): method page_context (line 436) | def page_context(self): method form (line 448) | def form(self): method post (line 454) | def post(self, request, *args, **kwargs): class EditReportInBuilder (line 487) | class EditReportInBuilder(View): method dispatch (line 489) | def dispatch(self, request, *args, **kwargs): class ConfigureReport (line 502) | class ConfigureReport(ReportBuilderView): method dispatch (line 509) | def dispatch(self, request, *args, **kwargs): method render_error_response (line 559) | def render_error_response(self, message, allow_delete=None, report_id=... method page_name (line 575) | def page_name(self): method report_description (line 580) | def report_description(self): method _populate_data_source_properties_from_interface (line 585) | def _populate_data_source_properties_from_interface(self, data_source_... method _get_report_name (line 594) | def _get_report_name(self, request=None): method _get_existing_report_type (line 601) | def _get_existing_report_type(self): method _get_property_id_by_indicator_id (line 605) | def _get_property_id_by_indicator_id(self, indicator_column_id): method _get_initial_location (line 617) | def _get_initial_location(self, report_form): method _get_initial_chart_type (line 624) | def _get_initial_chart_type(self): method _get_column_options (line 633) | def _get_column_options(self, report_form): method page_context (line 643) | def page_context(self): method _get_bound_form (line 676) | def _get_bound_form(self, report_data): method post (line 689) | def post(self, request, domain, *args, **kwargs): method _delete_temp_data_source (line 729) | def _delete_temp_data_source(self, report_data): method _confirm_report_limit (line 733) | def _confirm_report_limit(self): function update_report_description (line 746) | def update_report_description(request, domain, report_id): function _get_form_type (line 755) | def _get_form_type(report_type): function _munge_report_data (line 765) | def _munge_report_data(report_data): class ReportPreview (line 776) | class ReportPreview(BaseDomainView): method post (line 779) | def post(self, request, domain, data_source): function _assert_report_delete_privileges (line 822) | def _assert_report_delete_privileges(request): function delete_report (line 832) | def delete_report(request, domain, report_id): function undelete_report (line 881) | def undelete_report(request, domain, report_id): class ImportConfigReportView (line 901) | class ImportConfigReportView(BaseUserConfigReportsView): method spec (line 907) | def spec(self): method post (line 912) | def post(self, request, *args, **kwargs): method page_context (line 930) | def page_context(self): function report_source_json (line 938) | def report_source_json(request, domain, report_id): class ExpressionDebuggerView (line 944) | class ExpressionDebuggerView(BaseUserConfigReportsView): method main_context (line 950) | def main_context(self): class DataSourceDebuggerView (line 957) | class DataSourceDebuggerView(BaseUserConfigReportsView): method dispatch (line 962) | def dispatch(self, *args, **kwargs): function evaluate_expression (line 970) | def evaluate_expression(request, domain): function _get_factory_context (line 993) | def _get_factory_context(domain, data_source_id): function _get_parsed_expression (line 1005) | def _get_parsed_expression(domain, factory_context, expression_text, exp... function _get_document (line 1024) | def _get_document(domain, doc_type, doc_id): function evaluate_data_source (line 1039) | def evaluate_data_source(request, domain): class CreateDataSourceFromAppView (line 1092) | class CreateDataSourceFromAppView(BaseUserConfigReportsView): method form (line 1099) | def form(self): method post (line 1104) | def post(self, request, *args, **kwargs): method page_context (line 1125) | def page_context(self): class BaseEditDataSourceView (line 1132) | class BaseEditDataSourceView(BaseUserConfigReportsView): method page_context (line 1136) | def page_context(self): method page_url (line 1147) | def page_url(self): method config_id (line 1153) | def config_id(self): method read_only (line 1157) | def read_only(self): method config (line 1162) | def config(self): method edit_form (line 1169) | def edit_form(self): method post (line 1181) | def post(self, request, *args, **kwargs): method get_reports (line 1209) | def get_reports(self): method get (line 1227) | def get(self, request, *args, **kwargs): class CreateDataSourceView (line 1238) | class CreateDataSourceView(BaseEditDataSourceView): class EditDataSourceView (line 1243) | class EditDataSourceView(BaseEditDataSourceView): method page_name (line 1248) | def page_name(self): method page_context (line 1252) | def page_context(self): function delete_data_source (line 1261) | def delete_data_source(request, domain, config_id): function delete_data_source_shared (line 1273) | def delete_data_source_shared(domain, config_id, request=None): function undelete_data_source (line 1301) | def undelete_data_source(request, domain, config_id): function rebuild_data_source (line 1322) | def rebuild_data_source(request, domain, config_id): function _build_awaiting_redirect_response (line 1355) | def _build_awaiting_redirect_response(request, domain, config_id): function _prep_data_source_for_rebuild (line 1365) | def _prep_data_source_for_rebuild(data_source_config, is_static): function _report_ucr_rebuild_metrics (line 1378) | def _report_ucr_rebuild_metrics(domain, config, action): function _report_metric_report_counts_by_datasource (line 1394) | def _report_metric_report_counts_by_datasource(domain, data_source_id, a... function number_of_records_to_be_processed (line 1407) | def number_of_records_to_be_processed(datasource_configuration): function _error_message_for_restricting_rebuild (line 1436) | def _error_message_for_restricting_rebuild(number_of_records_to_be_itera... function build_data_source_in_place (line 1450) | def build_data_source_in_place(request, domain, config_id): function data_source_json (line 1478) | def data_source_json(request, domain, config_id): class PreviewDataSourceView (line 1491) | class PreviewDataSourceView(BaseUserConfigReportsView): method dispatch (line 1497) | def dispatch(self, request, *args, **kwargs): method config_id (line 1501) | def config_id(self): method page_url (line 1505) | def page_url(self): method page_context (line 1509) | def page_context(self): function _last_n_days (line 1537) | def _last_n_days(column, value): function _range_filter (line 1545) | def _range_filter(column, value): function process_url_params (line 1560) | def process_url_params(params, columns): function export_data_source (line 1597) | def export_data_source(request, domain, config_id): function export_sql_adapter_view (line 1605) | def export_sql_adapter_view(request, domain, adapter, too_large_redirect... function subscribe_to_data_source_changes (line 1668) | def subscribe_to_data_source_changes(request, domain, config_id): function unsubscribe_from_data_source (line 1720) | def unsubscribe_from_data_source(request, domain, config_id): function _get_report_filter (line 1755) | def _get_report_filter(domain, report_id, filter_id): function _is_location_safe_choice_list (line 1763) | def _is_location_safe_choice_list(view_fn, request, domain, report_id, f... function choice_list_api (line 1769) | def choice_list_api(request, domain, report_id, filter_id): class DataSourceSummaryView (line 1787) | class DataSourceSummaryView(BaseUserConfigReportsView): method config_id (line 1793) | def config_id(self): method config (line 1798) | def config(self): method page_url (line 1802) | def page_url(self): method page_name (line 1806) | def page_name(self): method page_context (line 1810) | def page_context(self): method indicator_summary (line 1821) | def indicator_summary(self): method named_expression_summary (line 1837) | def named_expression_summary(self): method named_filter_summary (line 1847) | def named_filter_summary(self): method configured_filter_summary (line 1857) | def configured_filter_summary(self): class NamedExpressionHighlighter (line 1864) | class NamedExpressionHighlighter: method highlight_links (line 1872) | def highlight_links(cls, content): method _make_link (line 1877) | def _make_link(cls, match): class UCRExpressionListView (line 1882) | class UCRExpressionListView(BaseProjectDataView, CRUDPaginatedViewMixin): method base_query (line 1888) | def base_query(self): method total (line 1892) | def total(self): method post (line 1895) | def post(self, *args, **kwargs): method column_names (line 1899) | def column_names(self): method page_context (line 1909) | def page_context(self): method paginated_list (line 1913) | def paginated_list(self): method _item_data (line 1920) | def _item_data(self, expression): method _truncate_value (line 1932) | def _truncate_value(self, value): method get_create_form (line 1940) | def get_create_form(self, is_blank=False): method get_create_item_data (line 1945) | def get_create_item_data(self, create_form): method delete_item (line 1955) | def delete_item(self, item_id): class UCRExpressionEditView (line 1967) | class UCRExpressionEditView(BaseProjectDataView): method expression_id (line 1973) | def expression_id(self): method expression (line 1981) | def expression(self): method page_url (line 1988) | def page_url(self): method main_context (line 1992) | def main_context(self): method post (line 2007) | def post(self, request, domain, **kwargs): FILE: corehq/apps/users/account_confirmation.py function send_account_confirmation_if_necessary (line 18) | def send_account_confirmation_if_necessary(couch_user): function should_send_account_confirmation (line 34) | def should_send_account_confirmation(couch_user): function send_account_confirmation (line 42) | def send_account_confirmation(commcare_user): function _get_account_confirmation_template_params (line 68) | def _get_account_confirmation_template_params(commcare_user, message_tok... FILE: corehq/apps/users/admin.py class DDUserNonceAdmin (line 11) | class DDUserNonceAdmin(admin.ModelAdmin): class DDPartialDigestAdmin (line 15) | class DDPartialDigestAdmin(admin.ModelAdmin): class ApiKeyInline (line 24) | class ApiKeyInline(admin.TabularInline): method has_add_permission (line 30) | def has_add_permission(self, request, obj): function _copy_fieldsets (line 34) | def _copy_fieldsets(fieldsets, excluding_fields=()): class CustomUserAdmin (line 54) | class CustomUserAdmin(UserAdmin): method has_add_permission (line 61) | def has_add_permission(self, request): class HQApiKeyAdmin (line 69) | class HQApiKeyAdmin(admin.ModelAdmin): class UserHistoryAdmin (line 80) | class UserHistoryAdmin(admin.ModelAdmin): method has_add_permission (line 86) | def has_add_permission(self, request): method has_change_permission (line 89) | def has_change_permission(self, request, obj=None): method has_delete_permission (line 92) | def has_delete_permission(self, request, obj=None): class UserDataAdmin (line 99) | class UserDataAdmin(admin.ModelAdmin): FILE: corehq/apps/users/analytics.py function update_analytics_indexes (line 9) | def update_analytics_indexes(): function get_count_of_active_commcare_users_in_domain (line 20) | def get_count_of_active_commcare_users_in_domain(domain): function get_count_of_inactive_commcare_users_in_domain (line 24) | def get_count_of_inactive_commcare_users_in_domain(domain): function _get_count_of_commcare_users_in_domain (line 28) | def _get_count_of_commcare_users_in_domain(active_flag, domain): function get_active_commcare_users_in_domain (line 40) | def get_active_commcare_users_in_domain(domain, start_at=0, limit=None): function get_inactive_commcare_users_in_domain (line 44) | def get_inactive_commcare_users_in_domain(domain, start_at=0, limit=None): function _get_commcare_users_in_domain (line 48) | def _get_commcare_users_in_domain(active_flag, domain, start_at, limit): function get_search_users_in_domain_es_query (line 64) | def get_search_users_in_domain_es_query(domain, search_string, limit, of... function get_role_user_count (line 85) | def get_role_user_count(domain, role_id, web_users_only=False): FILE: corehq/apps/users/apps.py class UsersAppConfig (line 9) | class UsersAppConfig(AppConfig): method ready (line 12) | def ready(self): FILE: corehq/apps/users/audit/change_messages.py class UserChangeMessage (line 5) | class UserChangeMessage(object): method program_change (line 18) | def program_change(program): method role_change (line 34) | def role_change(user_role): method domain_removal (line 50) | def domain_removal(domain): method domain_addition (line 58) | def domain_addition(domain): method two_factor_disabled_with_verification (line 66) | def two_factor_disabled_with_verification(verified_by, verification_mo... method password_reset (line 80) | def password_reset(): method status_update (line 88) | def status_update(active, reason): method phone_numbers_added (line 99) | def phone_numbers_added(phone_numbers): method phone_numbers_removed (line 109) | def phone_numbers_removed(phone_numbers): method profile_info (line 119) | def profile_info(profile_id, profile_name=None): method primary_location_removed (line 135) | def primary_location_removed(): method primary_location_info (line 143) | def primary_location_info(location): method assigned_locations_info (line 159) | def assigned_locations_info(locations): method groups_info (line 177) | def groups_info(groups): method added_as_web_user (line 195) | def added_as_web_user(domain): method invited_to_domain (line 203) | def invited_to_domain(domain): method invitation_revoked_for_domain (line 211) | def invitation_revoked_for_domain(domain): method updated_deactivate_after (line 219) | def updated_deactivate_after(deactivate_after, change_message): method mobile_account_confirmed_for_domain (line 237) | def mobile_account_confirmed_for_domain(domain): method toggle_edit_permissions_added (line 245) | def toggle_edit_permissions_added(toggle_tags): method toggle_edit_permissions_removed (line 255) | def toggle_edit_permissions_removed(toggle_tags): class UserChangeFormatter (line 265) | class UserChangeFormatter(object): method simple_formatter (line 267) | def simple_formatter(raw_message): method phone_numbers_formatter (line 273) | def phone_numbers_formatter(raw_message): method assigned_locations_formatter (line 281) | def assigned_locations_formatter(raw_message): method assigned_groups_formatter (line 290) | def assigned_groups_formatter(raw_message): method toggle_edit_permissions_formatter (line 299) | def toggle_edit_permissions_formatter(raw_message): function get_messages (line 426) | def get_messages(change_messages): FILE: corehq/apps/users/auditors.py class HQAuditor (line 4) | class HQAuditor(BaseAuditor): method change_context (line 7) | def change_context(self, request): FILE: corehq/apps/users/bulk_download.py class LocationIdToSiteCodeCache (line 38) | class LocationIdToSiteCodeCache(BulkCacheBase): method lookup (line 40) | def lookup(self, location_id): function build_data_headers (line 47) | def build_data_headers(keys, header_prefix='data'): function get_devices (line 53) | def get_devices(user): function get_location_codes (line 62) | def get_location_codes(location_cache, loc_id, assigned_loc_ids): function get_phone_numbers (line 78) | def get_phone_numbers(user_data): class UserDataContributor (line 93) | class UserDataContributor: method __init__ (line 95) | def __init__(self, domain): method fields_definition (line 102) | def fields_definition(self): method get_headers (line 111) | def get_headers(self): method get_data_dict (line 123) | def get_data_dict(self, user): function make_mobile_user_dict (line 139) | def make_mobile_user_dict(user, group_names, location_cache, domain, dea... function get_user_role_name (line 171) | def get_user_role_name(domain_membership): function make_web_user_dict (line 184) | def make_web_user_dict(user, location_cache, domain): function make_invited_web_user_dict (line 207) | def make_invited_web_user_dict(invite, location_cache): function get_user_rows (line 236) | def get_user_rows(user_dicts, user_headers): function parse_mobile_users (line 242) | def parse_mobile_users(domain, user_filters, task=None, total_count=None): function parse_web_users (line 308) | def parse_web_users(domain, user_filters, owner, task=None, total_count=... function get_domains_from_user_filters (line 347) | def get_domains_from_user_filters(domain, user_filters): function parse_groups (line 357) | def parse_groups(groups): function count_users_and_groups (line 388) | def count_users_and_groups(domain, user_filters, group_memoizer): function dump_usernames (line 395) | def dump_usernames(domain, download_id, user_filters, task, owner_id): function _dump_xlsx_and_expose_download (line 418) | def _dump_xlsx_and_expose_download(filename, headers, rows, download_id,... function load_memoizer (line 433) | def load_memoizer(domain): function dump_users_and_groups (line 449) | def dump_users_and_groups(domain, download_id, user_filters, task, owner... function dump_web_users (line 481) | def dump_web_users(domain, download_id, user_filters, task, owner_id): class GroupNameError (line 501) | class GroupNameError(Exception): method __init__ (line 503) | def __init__(self, blank_groups): method message (line 507) | def message(self): FILE: corehq/apps/users/cases.py function user_db (line 10) | def user_db(): function get_owner_id (line 14) | def get_owner_id(case): function get_wrapped_owner (line 18) | def get_wrapped_owner(owner_id, support_deleted=False): function get_owner_location_id (line 59) | def get_owner_location_id(owner_id, domain): FILE: corehq/apps/users/credentials_issuing.py function get_credentials_for_timeframe (line 18) | def get_credentials_for_timeframe(activity_level, app_ids): function _filter_users_with_complete_months (line 40) | def _filter_users_with_complete_months(data, months, activity_level): function has_consecutive_months (line 67) | def has_consecutive_months(month_dates, required_months): function get_app_ids_by_activity_level (line 85) | def get_app_ids_by_activity_level(): function submit_new_credentials (line 95) | def submit_new_credentials(): function submit_credentials (line 137) | def submit_credentials(credentials_to_submit, cred_id_groups): function get_username_cred_id_dict (line 153) | def get_username_cred_id_dict(user_credentials): function get_connectid_username_by_commcare_username (line 173) | def get_connectid_username_by_commcare_username(user_credentials): function mark_credentials_as_issued (line 184) | def mark_credentials_as_issued(response, credential_id_groups): function get_app_names_by_id (line 210) | def get_app_names_by_id(user_credentials): FILE: corehq/apps/users/dbaccessors.py function get_user_id_by_username (line 17) | def get_user_id_by_username(username): function get_display_name_for_user_id (line 34) | def get_display_name_for_user_id(domain, user_id, default=None): function get_user_id_and_doc_type_by_domain (line 42) | def get_user_id_and_doc_type_by_domain(domain): function get_all_commcare_users_by_domain (line 56) | def get_all_commcare_users_by_domain(domain): function get_all_web_users_by_domain (line 62) | def get_all_web_users_by_domain(domain): function get_all_users_by_domain (line 69) | def get_all_users_by_domain(domain, include_inactive=True): function get_mobile_usernames_by_filters (line 75) | def get_mobile_usernames_by_filters(domain, user_filters): function _get_es_query (line 80) | def _get_es_query(domain, user_type, user_filters): function count_mobile_users_by_filters (line 125) | def count_mobile_users_by_filters(domain, user_filters): function count_web_users_by_filters (line 129) | def count_web_users_by_filters(domain, user_filters): function get_mobile_users_by_filters (line 133) | def get_mobile_users_by_filters(domain, user_filters): function get_web_users_by_filters (line 137) | def get_web_users_by_filters(domain, user_filters): function _get_users_by_filters (line 141) | def _get_users_by_filters(domain, user_type, user_filters, count_only=Fa... function count_invitations_by_filters (line 176) | def count_invitations_by_filters(domain, user_filters): function get_invitations_by_filters (line 180) | def get_invitations_by_filters(domain, user_filters): function _get_invitations_by_filters (line 184) | def _get_invitations_by_filters(domain, user_filters, count_only=False): function get_all_user_ids_by_domain (line 216) | def get_all_user_ids_by_domain(domain, include_web_users=True, include_m... function get_all_usernames_by_domain (line 226) | def get_all_usernames_by_domain(domain): function get_all_user_id_username_pairs_by_domain (line 231) | def get_all_user_id_username_pairs_by_domain(domain, include_web_users=T... function get_active_web_usernames_by_domain (line 240) | def get_active_web_usernames_by_domain(domain): function get_web_user_count (line 244) | def get_web_user_count(domain, include_inactive=True): function get_mobile_user_count (line 258) | def get_mobile_user_count(domain, include_inactive=True): function get_mobile_user_ids (line 271) | def get_mobile_user_ids(domain, include_inactive=True): function get_all_user_rows (line 284) | def get_all_user_rows(domain, include_web_users=True, include_mobile_use... function get_user_docs_by_username (line 312) | def get_user_docs_by_username(usernames): function get_existing_usernames (line 318) | def get_existing_usernames(usernames): function _get_user_results_by_username (line 326) | def _get_user_results_by_username(usernames, include_docs=True): function _get_deleted_user_results_by_username (line 335) | def _get_deleted_user_results_by_username(usernames): function get_all_user_ids (line 344) | def get_all_user_ids(): function delete_all_users (line 352) | def delete_all_users(): function hard_delete_deleted_users (line 363) | def hard_delete_deleted_users(): function get_deleted_user_by_username (line 370) | def get_deleted_user_by_username(cls, username): function user_exists (line 379) | def user_exists(username): function get_practice_mode_mobile_workers (line 404) | def get_practice_mode_mobile_workers(domain): function get_all_user_search_query (line 418) | def get_all_user_search_query(search_string): FILE: corehq/apps/users/decorators.py function require_permission_raw (line 18) | def require_permission_raw(permission_check, function get_permission_name (line 64) | def get_permission_name(permission): function require_api_permission (line 74) | def require_api_permission(permission, data=None, login_decorator=login_... function require_permission (line 113) | def require_permission(permission, function require_permission_to_edit_user (line 155) | def require_permission_to_edit_user(view_func): function require_can_use_filtered_user_download (line 179) | def require_can_use_filtered_user_download(view_func): function can_use_filtered_user_download (line 188) | def can_use_filtered_user_download(domain): function ensure_active_user_by_username (line 196) | def ensure_active_user_by_username(username, domain): FILE: corehq/apps/users/device_rate_limiter.py class DeviceRateLimiter (line 19) | class DeviceRateLimiter: method __init__ (line 24) | def __init__(self): method device_limit_per_user (line 28) | def device_limit_per_user(self, domain): method rate_limit_device (line 31) | def rate_limit_device(self, domain, user, device_id): method _get_redis_key (line 72) | def _get_redis_key(self, domain, user_id): method _track_usage (line 82) | def _track_usage(self, redis_key, device_id, is_key_new=False): method _get_usage_for_device (line 89) | def _get_usage_for_device(self, redis_key, device_id): method _is_formplayer (line 96) | def _is_formplayer(self, device_id): FILE: corehq/apps/users/event_handlers.py function handle_email_invite_message (line 5) | def handle_email_invite_message(message, invite_id): FILE: corehq/apps/users/exceptions.py class NoAccountException (line 1) | class NoAccountException(Exception): class InvalidRequestException (line 8) | class InvalidRequestException(Exception): class IllegalAccountConfirmation (line 12) | class IllegalAccountConfirmation(Exception): class MissingRoleException (line 16) | class MissingRoleException(Exception): class ModifyUserStatusException (line 23) | class ModifyUserStatusException(Exception): FILE: corehq/apps/users/fixturegenerators.py class UserGroupsFixtureProvider (line 7) | class UserGroupsFixtureProvider(FixtureProvider): method __call__ (line 14) | def __call__(self, restore_state): method get_group_fixture (line 25) | def get_group_fixture(self, restore_user, last_sync=None): method group_fixture (line 32) | def group_fixture(self, groups, restore_user): FILE: corehq/apps/users/forms.py function get_mobile_worker_max_username_length (line 90) | def get_mobile_worker_max_username_length(domain): function clean_mobile_worker_username (line 100) | def clean_mobile_worker_username( function clean_deactivate_after_date (line 140) | def clean_deactivate_after_date(deactivate_after_date): function wrapped_language_validation (line 151) | def wrapped_language_validation(value): function generate_strong_password (line 161) | def generate_strong_password(): class LanguageField (line 177) | class LanguageField(forms.CharField): method __init__ (line 182) | def __init__(self, *args, **kwargs): class BaseUpdateUserForm (line 193) | class BaseUpdateUserForm(forms.Form): method __init__ (line 195) | def __init__(self, *args, **kwargs): method direct_properties (line 213) | def direct_properties(self): method clean_email (line 216) | def clean_email(self): method update_user (line 219) | def update_user(self, save=True): class UpdateUserRoleForm (line 247) | class UpdateUserRoleForm(BaseUpdateUserForm): method clean_role (line 250) | def clean_role(self): method update_user (line 256) | def update_user(self, metadata_updated=False, profile_updated=False): method _role_updated (line 305) | def _role_updated(old_role, new_role): method load_roles (line 312) | def load_roles(self, role_choices=None, current_role=None): class BaseUserInfoForm (line 321) | class BaseUserInfoForm(forms.Form): method load_language (line 337) | def load_language(self, language_choices=None): class UpdateMyAccountInfoForm (line 343) | class UpdateMyAccountInfoForm(BaseUpdateUserForm, BaseUserInfoForm): method __init__ (line 360) | def __init__(self, *args, **kwargs): method set_analytics_enabled (line 421) | def set_analytics_enabled(self): method direct_properties (line 425) | def direct_properties(self): method update_user (line 433) | def update_user(self, save=True, **kwargs): class UpdateCommCareUserInfoForm (line 441) | class UpdateCommCareUserInfoForm(BaseUserInfoForm, UpdateUserRoleForm): method __init__ (line 460) | def __init__(self, *args, **kwargs): method clean_deactivate_after_date (line 475) | def clean_deactivate_after_date(self): method direct_properties (line 479) | def direct_properties(self): method update_user (line 483) | def update_user(self, **kwargs): class CommCareUserActionForm (line 493) | class CommCareUserActionForm(BaseUpdateUserForm): method __init__ (line 506) | def __init__(self, *args, **kwargs): class SetUserPasswordForm (line 538) | class SetUserPasswordForm(SetPasswordForm): method __init__ (line 545) | def __init__(self, project, user_id, **kwargs): method user_has_active_personalid_link (line 603) | def user_has_active_personalid_link(self, user_id): method clean_new_password1 (line 613) | def clean_new_password1(self): method save (line 619) | def save(self, commit=True): class SendCommCareUserPasswordResetEmailForm (line 629) | class SendCommCareUserPasswordResetEmailForm(forms.Form): method __init__ (line 630) | def __init__(self, *args, **kwargs): method save (line 645) | def save(self, **kwargs): class NewMobileWorkerForm (line 651) | class NewMobileWorkerForm(forms.Form): method __init__ (line 729) | def __init__(self, project, request_user, *args, **kwargs): method clean_email (line 916) | def clean_email(self): method clean_location_id (line 922) | def clean_location_id(self): method clean_username (line 931) | def clean_username(self): method clean_new_password (line 937) | def clean_new_password(self): method clean_deactivate_after_date (line 943) | def clean_deactivate_after_date(self): class GroupMembershipForm (line 947) | class GroupMembershipForm(forms.Form): method __init__ (line 954) | def __init__(self, group_api_url, *args, **kwargs): class MultipleSelectionForm (line 971) | class MultipleSelectionForm(forms.Form): method __init__ (line 1006) | def __init__(self, *args, **kwargs): class PrimaryLocationWidget (line 1032) | class PrimaryLocationWidget(forms.Widget): method __init__ (line 1038) | def __init__(self, css_id, source_css_id, attrs=None): method render (line 1049) | def render(self, name, value, attrs=None, renderer=None): class SelectUserLocationForm (line 1073) | class SelectUserLocationForm(forms.Form): method __init__ (line 1085) | def __init__(self, domain: str, *args, **kwargs): method clean_assigned_locations (line 1100) | def clean_assigned_locations(self): method _user_has_permission_to_access_locations (line 1110) | def _user_has_permission_to_access_locations(self, new_location_ids): method clean (line 1115) | def clean(self): class CommtrackUserForm (line 1135) | class CommtrackUserForm(SelectUserLocationForm): method __init__ (line 1142) | def __init__(self, *args, **kwargs): method commtrack_enabled (line 1164) | def commtrack_enabled(self): method save (line 1167) | def save(self, user): method _update_location_data (line 1193) | def _update_location_data(self, user, new_location_id, new_location_ids): method _log_commcare_user_changes (line 1235) | def _log_commcare_user_changes(self, user_change_logger, location_upda... method _log_program_changes (line 1265) | def _log_program_changes(user_change_logger, program_id): method _log_web_user_changes (line 1272) | def _log_web_user_changes(self, user_change_logger, location_updates, ... class DomainRequestForm (line 1303) | class DomainRequestForm(forms.Form): method form_actions (line 1315) | def form_actions(self): method __init__ (line 1324) | def __init__(self, *args, **kwargs): method clean_email (line 1339) | def clean_email(self): class ConfirmExtraUserChargesForm (line 1345) | class ConfirmExtraUserChargesForm(EditBillingAccountInfoForm): method __init__ (line 1346) | def __init__(self, account, domain, creating_user, data=None, *args, *... method save (line 1389) | def save(self, commit=True): class AddPhoneNumberForm (line 1398) | class AddPhoneNumberForm(forms.Form): method __init__ (line 1405) | def __init__(self, *args, **kwargs): class _UserFormSet (line 1425) | class _UserFormSet(object): method __init__ (line 1427) | def __init__(self, domain, editable_user, request_user, request, data=... method user_form (line 1435) | def user_form(self): method field_view (line 1439) | def field_view(self): method custom_data (line 1443) | def custom_data(self): method is_valid (line 1453) | def is_valid(self): method update_user (line 1457) | def update_user(self): class CommCareUserFormSet (line 1470) | class CommCareUserFormSet(_UserFormSet): method user_form (line 1474) | def user_form(self): method action_form (line 1479) | def action_form(self): method field_view (line 1488) | def field_view(self): class WebUserFormSet (line 1493) | class WebUserFormSet(_UserFormSet): method user_form (line 1497) | def user_form(self): method field_view (line 1502) | def field_view(self): class UserFilterForm (line 1507) | class UserFilterForm(forms.Form): method __init__ (line 1554) | def __init__(self, *args, **kwargs): method clean_role_id (line 1648) | def clean_role_id(self): method clean_search_string (line 1659) | def clean_search_string(self): method clean_domains (line 1665) | def clean_domains(self): method clean_user_active_status (line 1676) | def clean_user_active_status(self): method clean_location_id (line 1685) | def clean_location_id(self): method clean (line 1691) | def clean(self): class BaseTableauUserForm (line 1706) | class BaseTableauUserForm(forms.Form): method __init__ (line 1720) | def __init__(self, *args, **kwargs): class TableauUserForm (line 1738) | class TableauUserForm(BaseTableauUserForm): method __init__ (line 1740) | def __init__(self, *args, **kwargs): method save (line 1768) | def save(self, username, commit=True): FILE: corehq/apps/users/landing_pages.py function get_allowed_landing_pages (line 26) | def get_allowed_landing_pages(domain): function validate_landing_page (line 32) | def validate_landing_page(domain, landing_page_id): function get_landing_page (line 38) | def get_landing_page(domain, landing_page_id): function get_redirect_url (line 45) | def get_redirect_url(landing_page_id, domain): FILE: corehq/apps/users/management/commands/accept_invite.py class Command (line 6) | class Command(BaseCommand): method add_arguments (line 9) | def add_arguments(self, parser): method handle (line 13) | def handle(self, username, domain, **options): FILE: corehq/apps/users/management/commands/archive_forms_submitted_by_user.py class Command (line 9) | class Command(BaseCommand): method add_arguments (line 10) | def add_arguments(self, parser): method handle (line 14) | def handle(self, domain, user_id, **options): FILE: corehq/apps/users/management/commands/copy_invitation_supply_point.py class Command (line 21) | class Command(BaseCommand): method add_arguments (line 24) | def add_arguments(self, parser): method handle (line 28) | def handle(self, **options): function _copy_supply_point_field_to_location (line 46) | def _copy_supply_point_field_to_location(): FILE: corehq/apps/users/management/commands/delete_user.py class Command (line 6) | class Command(BaseCommand): method add_arguments (line 9) | def add_arguments(self, parser): method handle (line 12) | def handle(self, username, **options): FILE: corehq/apps/users/management/commands/deleted_users.py class Command (line 15) | class Command(BaseCommand): method add_arguments (line 18) | def add_arguments(self, parser): method handle (line 28) | def handle(self, domain, **options): FILE: corehq/apps/users/management/commands/fix_commcare_version.py class Command (line 18) | class Command(BaseCommand): method handle (line 21) | def handle(self, *args, **kwargs): function update_commcare_version (line 48) | def update_commcare_version(user_doc): function update_version (line 75) | def update_version(obj, attr_name): function _fix_commcare_version (line 84) | def _fix_commcare_version(version): FILE: corehq/apps/users/management/commands/gdpr_scrub_user_from_forms.py class Command (line 16) | class Command(BaseCommand): method add_arguments (line 19) | def add_arguments(self, parser): method handle (line 23) | def handle(self, username, domain, **options): method update_form_data (line 44) | def update_form_data(form_data, new_username): FILE: corehq/apps/users/management/commands/rm_orphaned_user_data.py class Command (line 7) | class Command(BaseCommand): method add_arguments (line 10) | def add_arguments(self, parser): method handle (line 14) | def handle(self, domain, dry_run, **kwargs): function remove_orphaned_user_data_for_domain (line 20) | def remove_orphaned_user_data_for_domain(domain, dry_run): FILE: corehq/apps/users/management/commands/role_permission_history.py class Command (line 14) | class Command(BaseCommand): method add_arguments (line 29) | def add_arguments(self, parser): method handle (line 37) | def handle(self, domain, role_name, role_id, list_roles, **options): method _list_roles (line 57) | def _list_roles(self, domain): method _get_role (line 67) | def _get_role(self, domain, role_name, role_id): method _collect_events (line 96) | def _collect_events(self, role): method _get_related_pks_from_audit (line 121) | def _get_related_pks_from_audit(self, model_class, role): method _get_role_permission_pks (line 134) | def _get_role_permission_pks(self, role): method _get_role_assignable_by_pks (line 140) | def _get_role_assignable_by_pks(self, role): method _print_event (line 146) | def _print_event(self, entry_type, event, perm_map): method _event_prefix (line 161) | def _event_prefix(self, event): method _role_lines (line 165) | def _role_lines(self, event, delta): method _permission_line (line 184) | def _permission_line(self, event, delta, perm_map): method _assignable_by_line (line 225) | def _assignable_by_line(self, event, delta): method _who (line 240) | def _who(event): method _format_items (line 249) | def _format_items(items): FILE: corehq/apps/users/middleware.py class UsersMiddleware (line 9) | class UsersMiddleware(MiddlewareMixin): method process_view (line 11) | def process_view(self, request, view_func, view_args, view_kwargs): FILE: corehq/apps/users/migrations/0001_add_location_permission.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0002_domainrequest.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0003_roles_permissions_update.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0004_rm_role_id_from_admins.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0005_add_user_reporting_metadata.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0006_auto_20191225_1207.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0007_userreportingmetadatastaging_created_on.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0008_auto_20200129_1852.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0009_sqlinvitation.py class Migration (line 10) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0010_populate_usersinvitation.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0011_sqlinvitation_uuid.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0012_alter_usersinvitation.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0013_remove_sqlinvitation_ids.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0014_rename_usersinvitation.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0015_domainpermissionsmirror.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0016_hqapikey.py function populate_api_keys (line 14) | def populate_api_keys(apps, schema_editor): class Migration (line 33) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0016_webappspermissions.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0017_merge_20200608_1401.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0018_auto_20200619_1626.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0019_editreportspermissions.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0020_user_staging_pk_to_bigint.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0021_add_view_apps_permission.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0021_invitation_email_status.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0022_merge_20200814_2045.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0023_hqapikey_role_id.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0024_add_login_as_all_users.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0025_hqapikey_domain.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0026_sql_role_permissions.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0027_role_permission_unique.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0028_migrate_roles_to_sql.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0028_remove_domainpermissionsmirror.py function migrate_mirrors (line 10) | def migrate_mirrors(apps, schema_editor): class Migration (line 33) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0029_merge_20210611_1436.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0029_userhistory.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0030_userhistory_user_upload_record.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0031_delete_domainpermissionsmirror.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0032_add_download_reports_permission.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0033_rename_sqluserrole.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0034_auto_20210813_1121.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0035_auto_20210826_1155.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0036_reset_user_history_records.py function noop (line 9) | def noop(*args, **kwargs): function _reset_records (line 14) | def _reset_records(*args, **kwargs): class Migration (line 18) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0037_add_edit_messaging_permission.py function migrate_edit_migrations_permissions (line 10) | def migrate_edit_migrations_permissions(apps, schema_editor): class Migration (line 20) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0038_add_ucr_permissions.py function add_ucr_permissions (line 9) | def add_ucr_permissions(apps, schema_editor): class Migration (line 29) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0038_auto_20210930_1235.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0039_merge_20211007_0556.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0040_add_repr_and_changed_by_repr.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0041_migrate_reprs.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0042_deactivatemobileworkertrigger.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0043_add_release_management_permission.py function create_release_management_permission (line 6) | def create_release_management_permission(apps, schema_editor): class Migration (line 10) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0044_userrole_is_commcare_user_default.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0045_add_view_tableau_permission.py function create_view_tableau_permission (line 6) | def create_view_tableau_permission(apps, schema_editor): class Migration (line 10) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0046_add_default_mobile_worker_role.py function _add_default_mobile_worker_role (line 12) | def _add_default_mobile_worker_role(apps, schema_editor): class Migration (line 25) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0047_rename_sqlpermission_permission.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0048_expiring_keys.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0049_add_data_dict_permissions.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0050_add_manage_attendance_tracking_permission.py function create_attendance_tracking_permission (line 7) | def create_attendance_tracking_permission(apps, schema_editor): class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0051_add_attendance_tracking_privilege.py function _run_prbac_bootstrap (line 9) | def _run_prbac_bootstrap(apps, schema_editor): class Migration (line 13) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0052_hqapikey_last_used.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0053_userreportingmetadatastaging_fcm_token.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0054_connectiduserlink.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0055_add_user_data.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0056_add_manage_domain_alerts_permission.py function create_manage_domain_alerts_permission (line 10) | def create_manage_domain_alerts_permission(*args, **kwargs): class Migration (line 14) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0057_populate_sql_user_data.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0058_createprofileanduserdata_copylocation.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0059_copy_transient_invitation_supply_point.py function copy_invitation_supply_point (line 32) | def copy_invitation_supply_point(apps, schema_editor): function count_items_to_be_migrated (line 66) | def count_items_to_be_migrated(connection): class Migration (line 73) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0060_invitations_addtableau_roles_and_groupids.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0061_auto_20240423_0802.py function create_commcare_analytics_permissions (line 10) | def create_commcare_analytics_permissions(*args, **kwargs): class Migration (line 14) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0062_add_web_apps_groups_permission_flag.py function enable_flag (line 9) | def enable_flag(apps, schema_editor): class Migration (line 14) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0063_rename_location_invitation_primary_location_and_more.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0064_add_edit_view_tableau_config_permissions.py function create_edit_view_tableau_config_permissions (line 7) | def create_edit_view_tableau_config_permissions(apps, schema_editor): class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0065_transfer_to_tableau_config_permission.py function _assert_migrated (line 24) | def _assert_migrated(apps, schema_editor): class Migration (line 65) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0066_add_profile_permissions.py function create_profile_permissions (line 13) | def create_profile_permissions(apps, schema_editor): function _assert_migrated (line 17) | def _assert_migrated(apps, schema_editor): class Migration (line 38) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0067_alter_invitation_tableau_role.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0068_grant_web_apps_to_default_mobile_worker_role.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0069_alter_invitation_custom_user_data_and_more.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0070_alter_invitation_tableau_role.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0071_rm_user_data.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0072_remove_invitation_supply_point.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0073_rm_location_from_user_data.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0074_alter_sqluserdata_profile.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0075_hqapikey_encrypted_key.py function copy_key_to_hashed_key (line 13) | def copy_key_to_hashed_key(apps, schema_editor): function _batch_query (line 24) | def _batch_query(db_alias, model, query, batch_size): class Migration (line 29) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0076_connectiduserlink_messaging_consent_and_more.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0077_invitationhistory.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0078_sqluserdata_deleted_on.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0079_alter_sqluserdata_managers.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0080_connectiduserlink_is_active.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0081_rm_orphaned_user_data.py function remove_orphaned_user_data (line 8) | def remove_orphaned_user_data(apps, schema_editor): class Migration (line 12) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0082_connectidmessagingkey_unique_active_messaging_key_per_user_and_domain.py function remove_duplicates (line 6) | def remove_duplicates(apps, schema_editor): class Migration (line 27) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0083_reset_ccu_dm_is_active.py function affected_ids (line 9) | def affected_ids(): function fix_user (line 16) | def fix_user(user_doc): function reset_is_active (line 22) | def reset_is_active(apps, schema_editor): class Migration (line 30) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0084_remove_hqapikey_key.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0085_usercredential.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0086_backfill_usercases.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/users/migrations/0087_alter_sqluserdata_managers.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/apps/users/model_log.py class UserModelAction (line 6) | class UserModelAction(Enum): class InviteModelAction (line 13) | class InviteModelAction(Enum): FILE: corehq/apps/users/models.py function _add_to_list (line 128) | def _add_to_list(list, obj, default): function _get_default (line 140) | def _get_default(list): class PermissionInfo (line 144) | class PermissionInfo(namedtuple("Permission", "name, allow")): method __new__ (line 151) | def __new__(cls, name, allow=ALLOW_ALL): method allow_all (line 158) | def allow_all(self): method allowed_items (line 162) | def allowed_items(self): class HqPermissions (line 180) | class HqPermissions(DocumentSchema): method from_permission_list (line 255) | def from_permission_list(cls, permission_list): method normalize (line 264) | def normalize(self, previous=None): method permission_names (line 321) | def permission_names(cls): method diff (line 329) | def diff(cls, left, right): method to_list (line 345) | def to_list(self) -> List[PermissionInfo]: method _yield_enabled (line 349) | def _yield_enabled(self): method view_report (line 359) | def view_report(self, report): method access_web_app (line 362) | def access_web_app(self, app_id): method access_profile (line 365) | def access_profile(self, profile_id): method view_tableau_viz (line 368) | def view_tableau_viz(self, viz): method has (line 373) | def has(self, permission, data=None): method _getattr (line 379) | def _getattr(self, name): method __eq__ (line 385) | def __eq__(self, other): method max (line 392) | def max(cls): method min (line 396) | def min(cls): method _all (line 400) | def _all(cls, value: bool): class DomainMembershipError (line 407) | class DomainMembershipError(Exception): class Membership (line 411) | class Membership(DocumentSchema): class DomainMembership (line 417) | class DomainMembership(Membership): method permissions (line 435) | def permissions(self): method wrap (line 442) | def wrap(cls, data): method role (line 451) | def role(self): method get_default_role (line 466) | def get_default_role(self): method has_permission (line 471) | def has_permission(self, permission, data=None): method viewable_reports (line 476) | def viewable_reports(self): class Meta (line 479) | class Meta(object): class IsMemberOfMixin (line 483) | class IsMemberOfMixin(DocumentSchema): method _is_member_of (line 485) | def _is_member_of(self, domain, allow_enterprise): method is_member_of (line 504) | def is_member_of(self, domain_qs, allow_enterprise=False): method is_global_admin (line 515) | def is_global_admin(self): class _AuthorizableMixin (line 520) | class _AuthorizableMixin(IsMemberOfMixin): method get_domain_membership (line 525) | def get_domain_membership(self, domain, allow_enterprise=True): method add_domain_membership (line 549) | def add_domain_membership(self, domain, timezone=None, **kwargs): method add_as_web_user (line 567) | def add_as_web_user(self, domain, role, primary_location_id=None, method delete_domain_membership (line 599) | def delete_domain_membership(self, domain, create_record=False): method transfer_domain_membership (line 630) | def transfer_domain_membership(self, domain, to_user, create_record=Fa... method is_domain_admin (line 635) | def is_domain_admin(self, domain=None): method can_edit_linked_data (line 654) | def can_edit_linked_data(self, domain): method get_domains (line 660) | def get_domains(self): method has_permission (line 668) | def has_permission(self, domain, permission, data=None): method get_role (line 679) | def get_role(self, domain=None, checking_global_admin=True, allow_ente... method set_role (line 694) | def set_role(self, domain, role_qualified_id): method role_label (line 718) | def role_label(self, domain=None): class SingleMembershipMixin (line 736) | class SingleMembershipMixin(_AuthorizableMixin): method domains (line 740) | def domains(self): method domain_memberships (line 744) | def domain_memberships(self): method add_domain_membership (line 747) | def add_domain_membership(self, domain, timezone=None, **kwargs): method delete_domain_membership (line 750) | def delete_domain_membership(self, domain, create_record=False): method transfer_domain_membership (line 753) | def transfer_domain_membership(self, domain, user, create_record=False): method set_is_active (line 756) | def set_is_active(self, domain, is_active): class MultiMembershipMixin (line 762) | class MultiMembershipMixin(_AuthorizableMixin): method set_is_active (line 766) | def set_is_active(self, domain, is_active): class LowercaseStringProperty (line 773) | class LowercaseStringProperty(StringProperty): method __init__ (line 778) | def __init__(self, validators=None, *args, **kwargs): class DjangoUserMixin (line 790) | class DjangoUserMixin(DocumentSchema): method set_password (line 815) | def set_password(self, raw_password): method check_password (line 820) | def check_password(self, password): class EulaMixin (line 825) | class EulaMixin(DocumentSchema): method migrate_eula (line 830) | def migrate_eula(cls, data): method is_eula_signed (line 837) | def is_eula_signed(self, version=CURRENT_VERSION): method get_eula (line 851) | def get_eula(self, version, eula_type): method get_eulas (line 859) | def get_eulas(self): method eula (line 867) | def eula(self, version=CURRENT_VERSION, eula_type=LicenseAgreementType... class DeviceAppMeta (line 876) | class DeviceAppMeta(DocumentSchema): method _update_latest_request (line 888) | def _update_latest_request(self): method merge (line 892) | def merge(self, other): class DeviceIdLastUsed (line 913) | class DeviceIdLastUsed(DocumentSchema): method update_meta (line 919) | def update_meta(self, commcare_version=None, app_meta=None): method _merge_app_meta (line 925) | def _merge_app_meta(self, app_meta): method get_meta_for_app (line 933) | def get_meta_for_app(self, app_id): method get_last_used_app_meta (line 936) | def get_last_used_app_meta(self): method __eq__ (line 942) | def __eq__(self, other): class LastSubmission (line 946) | class LastSubmission(DocumentSchema): class LastSync (line 956) | class LastSync(DocumentSchema): class LastBuild (line 963) | class LastBuild(DocumentSchema): class ReportingMetadata (line 974) | class ReportingMetadata(DocumentSchema): class CouchUser (line 983) | class CouchUser(Document, DjangoUserMixin, IsMemberOfMixin, EulaMixin): method wrap (line 1026) | def wrap(cls, data, should_save=False): class AccountTypeError (line 1039) | class AccountTypeError(Exception): class Inconsistent (line 1042) | class Inconsistent(Exception): class InvalidID (line 1045) | class InvalidID(Exception): class UnsuportedOperation (line 1048) | class UnsuportedOperation(Exception): method __repr__ (line 1051) | def __repr__(self): method two_factor_disabled (line 1058) | def two_factor_disabled(self): method is_dimagi (line 1065) | def is_dimagi(self): method is_locked_out (line 1068) | def is_locked_out(self): method should_be_locked_out (line 1071) | def should_be_locked_out(self): method is_active_in_domain (line 1075) | def is_active_in_domain(self, domain): method is_active_in_any_domain (line 1090) | def is_active_in_any_domain(self): method supports_lockout (line 1096) | def supports_lockout(self): method raw_username (line 1100) | def raw_username(self): method username_in_report (line 1107) | def username_in_report(self): method html_username (line 1110) | def html_username(self): method userID (line 1123) | def userID(self): method __str__ (line 1128) | def __str__(self): method get_email (line 1131) | def get_email(self): method is_commcare_user (line 1136) | def is_commcare_user(self): method is_web_user (line 1139) | def is_web_user(self): method _get_user_type (line 1142) | def _get_user_type(self): method full_name (line 1151) | def full_name(self): method human_friendly_name (line 1155) | def human_friendly_name(self): method name_in_filters (line 1159) | def name_in_filters(self): method days_since_created (line 1164) | def days_since_created(self): method timestamp_created (line 1169) | def timestamp_created(self): method set_full_name (line 1175) | def set_full_name(self, full_name): method get_user_data (line 1180) | def get_user_data(self, domain): method _save_user_data (line 1187) | def _save_user_data(self): method get_user_session_data (line 1191) | def get_user_session_data(self, domain): method get_owner_ids (line 1218) | def get_owner_ids(self, domain): method _get_case_sharing_groups_for_locations (line 1223) | def _get_case_sharing_groups_for_locations(self, domain): method _get_case_owning_locations (line 1230) | def _get_case_owning_locations(self, domain): method delete (line 1253) | def delete(self, deleted_by_domain, deleted_by, deleted_via=None): method delete_phone_number (line 1279) | def delete_phone_number(self, phone_number): method get_django_user (line 1287) | def get_django_user(self, use_primary_db=False): method add_phone_number (line 1293) | def add_phone_number(self, phone_number, default=False, **kwargs): method set_default_phone_number (line 1299) | def set_default_phone_number(self, phone_number): method set_phone_numbers (line 1303) | def set_phone_numbers(self, new_phone_numbers, default_number=''): method default_phone_number (line 1309) | def default_phone_number(self): method phone_numbers_extended (line 1313) | def phone_numbers_extended(self, requesting_user): method couch_id (line 1347) | def couch_id(self): method all (line 1352) | def all(cls): method username_exists (line 1356) | def username_exists(cls, username): method by_domain (line 1363) | def by_domain(cls, domain, is_active=True, reduce=False, limit=None, s... method total_by_domain (line 1389) | def total_by_domain(cls, domain, is_active=True): method ids_by_domain (line 1394) | def ids_by_domain(cls, domain, is_active=True): method phone_users_by_domain (line 1408) | def phone_users_by_domain(cls, domain): method is_previewer (line 1415) | def is_previewer(self): method sync_from_django_user (line 1420) | def sync_from_django_user(self, django_user): method sync_to_django_user (line 1432) | def sync_to_django_user(self): method wrap_correctly (line 1455) | def wrap_correctly(cls, source, allow_deleted_doc_types=False): method wrapped_correctly (line 1469) | def wrapped_correctly(self): method get_by_username (line 1476) | def get_by_username(cls, username, strict=False): method clear_quickcache_for_user (line 1499) | def clear_quickcache_for_user(self): method get_by_user_id (line 1522) | def get_by_user_id(cls, userID, domain=None): method from_django_user (line 1540) | def from_django_user(cls, django_user, strict=False): method __init__ (line 1543) | def __init__(self, *args, **kwargs): method create (line 1548) | def create(cls, domain, username, password, created_by, created_via, e... method to_be_deleted (line 1577) | def to_be_deleted(self): method save_docs (line 1581) | def save_docs(cls, docs, **kwargs): method save (line 1591) | def save(self, fire_signals=True, update_django_user=True, fail_hard=F... method fire_signals (line 1636) | def fire_signals(self): method django_user_post_save_signal (line 1642) | def django_user_post_save_signal(cls, sender, django_user, created, ma... method is_deleted (line 1662) | def is_deleted(self): method get_viewable_reports (line 1665) | def get_viewable_reports(self, domain=None, name=False, slug=False): method _get_viewable_report_slugs (line 1682) | def _get_viewable_report_slugs(self, domain): method can_view_some_reports (line 1695) | def can_view_some_reports(self, domain): method can_access_any_exports (line 1698) | def can_access_any_exports(self, domain=None): method can_access_any_web_apps (line 1704) | def can_access_any_web_apps(self, domain=None): method can_view_some_tableau_viz (line 1715) | def can_view_some_tableau_viz(self, domain): method can_login_as (line 1719) | def can_login_as(self, domain): method is_current_web_user (line 1725) | def is_current_web_user(self, request): method __getattr__ (line 1729) | def __getattr__(self, item): method _get_perm_check_fn (line 1740) | def _get_perm_check_fn(self, perm): method get_location_id (line 1746) | def get_location_id(self, domain): method set_has_built_app (line 1749) | def set_has_built_app(self): method log_user_create (line 1754) | def log_user_create(self, domain, created_by, created_via, by_domain_r... method belongs_to_messaging_domain (line 1780) | def belongs_to_messaging_domain(self): method _update_locations_fixture (line 1790) | def _update_locations_fixture(self): class CommCareUser (line 1795) | class CommCareUser(CouchUser, SingleMembershipMixin, CommCareMobileConta... method wrap (line 1814) | def wrap(cls, data): method _is_demo_user_cached_value_is_stale (line 1826) | def _is_demo_user_cached_value_is_stale(self): method clear_quickcache_for_user (line 1837) | def clear_quickcache_for_user(self): method save (line 1848) | def save(self, fire_signals=True, **params): method delete (line 1858) | def delete(self, deleted_by_domain, deleted_by, deleted_via=None): method project (line 1867) | def project(self): method is_domain_admin (line 1870) | def is_domain_admin(self, domain=None): method create (line 1875) | def create(cls, method filter_flag (line 1922) | def filter_flag(self): method is_commcare_user (line 1926) | def is_commcare_user(self): method is_web_user (line 1929) | def is_web_user(self): method supports_lockout (line 1932) | def supports_lockout(self): method to_ota_restore_user (line 1935) | def to_ota_restore_user(self, domain, request_user=None): method _get_form_ids (line 1944) | def _get_form_ids(self): method _get_case_ids (line 1947) | def _get_case_ids(self): method _get_deleted_form_ids (line 1950) | def _get_deleted_form_ids(self): method _get_deleted_case_ids (line 1953) | def _get_deleted_case_ids(self): method unretire (line 1956) | def unretire(self, unretired_by_domain, unretired_by, unretired_via=No... method retire (line 1995) | def retire(self, retired_by_domain, deleted_by, deleted_via=None): method delete_user_data (line 2022) | def delete_user_data(self): method confirm_account (line 2047) | def confirm_account(self, password): method get_case_sharing_groups (line 2058) | def get_case_sharing_groups(self, domain=None): method get_reporting_groups (line 2065) | def get_reporting_groups(self): method get_group_ids (line 2069) | def get_group_ids(self): method set_groups (line 2073) | def set_groups(self, group_ids): method get_time_zone (line 2104) | def get_time_zone(self): method get_language_code (line 2110) | def get_language_code(self): method location (line 2121) | def location(self): method sql_location (line 2125) | def sql_location(self): method get_location_ids (line 2131) | def get_location_ids(self, domain): method get_sql_locations (line 2135) | def get_sql_locations(self, domain): method add_to_assigned_locations (line 2143) | def add_to_assigned_locations(self, location, commit=True): method get_sql_location (line 2155) | def get_sql_location(self, domain): method set_location (line 2158) | def set_location(self, location, commit=True): method unset_location (line 2188) | def unset_location(self, fall_back_to_next=False, commit=True): method unset_location_by_id (line 2217) | def unset_location_by_id(self, location_id, fall_back_to_next=False): method _remove_location_from_user (line 2232) | def _remove_location_from_user(self, location_id): method reset_locations (line 2249) | def reset_locations(self, location_ids, commit=True): method supply_point_index_mapping (line 2268) | def supply_point_index_mapping(self, supply_point, clear=False): method submit_location_block (line 2286) | def submit_location_block(self, caseblock, source): method clear_location_delegates (line 2297) | def clear_location_delegates(self): method create_location_delegates (line 2306) | def create_location_delegates(self, locations): method get_location_map_case (line 2333) | def get_location_map_case(self): method memoized_usercase (line 2348) | def memoized_usercase(self): method get_usercase_by_domain (line 2351) | def get_usercase_by_domain(self, domain): method get_usercase (line 2356) | def get_usercase(self): method get_usercase_id (line 2360) | def get_usercase_id(self): method update_device_id_last_used (line 2364) | def update_device_id_last_used(self, device_id, when=None, commcare_ve... method get_last_used_device (line 2406) | def get_last_used_device(self): method get_device (line 2412) | def get_device(self, device_id): class WebUser (line 2418) | class WebUser(CouchUser, MultiMembershipMixin, CommCareMobileContactMixin): method __repr__ (line 2428) | def __repr__(self): method is_global_admin (line 2434) | def is_global_admin(self): method create (line 2438) | def create(cls, domain, username, password, created_by, created_via, e... method add_domain_membership (line 2450) | def add_domain_membership(self, domain, timezone=None, **kwargs): method delete_domain_membership (line 2458) | def delete_domain_membership(self, domain, create_record=False): method is_commcare_user (line 2470) | def is_commcare_user(self): method is_web_user (line 2473) | def is_web_user(self): method to_ota_restore_user (line 2476) | def to_ota_restore_user(self, domain, request_user=None): method get_case_sharing_groups (line 2483) | def get_case_sharing_groups(self, domain=None): method get_usercase_id (line 2488) | def get_usercase_id(self, domain): method get_email (line 2492) | def get_email(self): method get_time_zone (line 2497) | def get_time_zone(self): method get_language_code (line 2510) | def get_language_code(self): method get_domains (line 2513) | def get_domains(self): method get_admins_by_domain (line 2517) | def get_admins_by_domain(cls, domain): method get_billing_admins_by_domain (line 2525) | def get_billing_admins_by_domain(cls, domain): method get_dimagi_emails_by_domain (line 2533) | def get_dimagi_emails_by_domain(cls, domain): method deactivate (line 2539) | def deactivate(self, domain, changed_by): method reactivate (line 2551) | def reactivate(self, domain, changed_by): method add_to_assigned_locations (line 2563) | def add_to_assigned_locations(self, domain, location): method set_location (line 2575) | def set_location(self, domain, location_object_or_id, commit=True): method unset_location (line 2595) | def unset_location(self, domain, fall_back_to_next=False, commit=True): method unset_location_by_id (line 2613) | def unset_location_by_id(self, domain, location_id, fall_back_to_next=... method _remove_location_from_user (line 2627) | def _remove_location_from_user(self, membership, location_id): method reset_locations (line 2631) | def reset_locations(self, domain, location_ids, commit=True): method get_sql_location (line 2646) | def get_sql_location(self, domain): method get_location_ids (line 2652) | def get_location_ids(self, domain): method get_sql_locations (line 2656) | def get_sql_locations(self, domain=None): method get_location (line 2664) | def get_location(self, domain): method get_usercase_by_domain (line 2667) | def get_usercase_by_domain(self, domain): class FakeUser (line 2671) | class FakeUser(WebUser): method save (line 2676) | def save(self, **kwargs): method _id (line 2680) | def _id(self): class InvalidUser (line 2684) | class InvalidUser(FakeUser): method is_member_of (line 2689) | def is_member_of(self, domain_qs): class DomainRequest (line 2693) | class DomainRequest(models.Model): class Meta (line 2702) | class Meta(object): method by_domain (line 2706) | def by_domain(cls, domain, is_approved=False): method by_email (line 2710) | def by_email(cls, domain, email, is_approved=False): method send_approval_email (line 2713) | def send_approval_email(self): method send_request_email (line 2725) | def send_request_email(self): class InvitationStatus (line 2745) | class InvitationStatus(object): class Invitation (line 2751) | class Invitation(models.Model): method __repr__ (line 2773) | def __repr__(self): method save (line 2776) | def save(self, *args, **kwargs): method delete (line 2792) | def delete(self, **kwargs): method by_domain (line 2806) | def by_domain(cls, domain, is_accepted=False, expired=..., **filters): method by_email (line 2815) | def by_email(cls, email): method is_expired (line 2819) | def is_expired(self): method email_marked_as_bounced (line 2823) | def email_marked_as_bounced(self): method send_activation_email (line 2826) | def send_activation_email(self, remaining_days=30): method get_invited_user (line 2858) | def get_invited_user(self): method get_role_name (line 2861) | def get_role_name(self): method _send_confirmation_email (line 2874) | def _send_confirmation_email(self): method accept_invitation_and_join_domain (line 2899) | def accept_invitation_and_join_domain(self, web_user): class InvitationHistory (line 2921) | class InvitationHistory(models.Model): class Meta (line 2943) | class Meta: class DomainRemovalRecord (line 2949) | class DomainRemovalRecord(DeleteRecord): method undo (line 2953) | def undo(self): class UserReportingMetadataStaging (line 2968) | class UserReportingMetadataStaging(models.Model): method add_submission (line 2998) | def add_submission(cls, domain, user_id, app_id, build_id, version, me... method add_sync (line 3030) | def add_sync(cls, domain, user_id, app_id, build_id, sync_date, device... method add_heartbeat (line 3060) | def add_heartbeat(cls, domain, user_id, app_id, build_id, sync_date, d... method process_record (line 3106) | def process_record(self, user): class Meta (line 3152) | class Meta(object): class ApiKeyManager (line 3156) | class ApiKeyManager(models.Manager): method get_queryset (line 3157) | def get_queryset(self): class HQApiKey (line 3163) | class HQApiKey(models.Model): class Meta (line 3180) | class Meta(object): method save (line 3183) | def save(self, *args, **kwargs): method _generate_key (line 3192) | def _generate_key(self): method plaintext_key (line 3198) | def plaintext_key(self): method plaintext_key (line 3202) | def plaintext_key(self, plaintext): method role (line 3207) | def role(self): class UserHistory (line 3218) | class UserHistory(models.Model): class Meta (line 3261) | class Meta: class DeactivateMobileWorkerTriggerUpdateMessage (line 3268) | class DeactivateMobileWorkerTriggerUpdateMessage: class DeactivateMobileWorkerTrigger (line 3274) | class DeactivateMobileWorkerTrigger(models.Model): method deactivate_mobile_workers (line 3284) | def deactivate_mobile_workers(cls, domain, date_deactivation): method update_trigger (line 3301) | def update_trigger(cls, domain, user_id, deactivate_after): method get_deactivate_after_date (line 3332) | def get_deactivate_after_date(cls, domain, user_id): function check_and_send_limit_email (line 3339) | def check_and_send_limit_email(domain, plan_limit, user_count, prev_count): class ConnectIDUserLink (line 3376) | class ConnectIDUserLink(models.Model): class Meta (line 3384) | class Meta: method messaging_key (line 3388) | def messaging_key(self): method messaging_channel (line 3407) | def messaging_channel(self): class ConnectIDMessagingKey (line 3418) | class ConnectIDMessagingKey(models.Model): class Meta (line 3425) | class Meta: class ActivityLevel (line 3435) | class ActivityLevel(models.TextChoices): function months_for_activity_level (line 3454) | def months_for_activity_level(activity_level): class UserCredential (line 3458) | class UserCredential(models.Model): class Meta (line 3470) | class Meta: FILE: corehq/apps/users/models_role.py class StaticRole (line 18) | class StaticRole: method domain_admin (line 31) | def domain_admin(cls, domain): method domain_default (line 36) | def domain_default(cls, domain): method get_qualified_id (line 40) | def get_qualified_id(self): method get_id (line 44) | def get_id(self): method cache_version (line 48) | def cache_version(self): method to_json (line 51) | def to_json(self): class UserRoleManager (line 55) | class UserRoleManager(AuditingManager): method get_by_domain (line 57) | def get_by_domain(self, domain, include_archived=False): method by_domain_and_name (line 63) | def by_domain_and_name(self, domain, name): method by_couch_id (line 67) | def by_couch_id(self, couch_id, domain=None): function _uuid_str (line 75) | def _uuid_str(): class UserRole (line 82) | class UserRole(models.Model): class Meta (line 102) | class Meta: method __repr__ (line 109) | def __repr__(self): method create (line 113) | def create(cls, domain, name, permissions=None, assignable_by=None, **... method commcare_user_default (line 129) | def commcare_user_default(cls, domain): method get_id (line 148) | def get_id(self): method get_qualified_id (line 152) | def get_qualified_id(self): method cache_version (line 156) | def cache_version(self): method to_json (line 159) | def to_json(self): method set_permissions (line 163) | def set_permissions(self, permission_infos): method get_permission_infos (line 200) | def get_permission_infos(self): method permissions (line 210) | def permissions(self): method set_assignable_by_couch (line 214) | def set_assignable_by_couch(self, couch_role_ids): method set_assignable_by (line 221) | def set_assignable_by(self, role_ids): method get_assignable_by (line 255) | def get_assignable_by(self): method assignable_by_couch (line 259) | def assignable_by_couch(self): method assignable_by (line 263) | def assignable_by(self): method accessible_by_non_admin_role (line 267) | def accessible_by_non_admin_role(self, role_id): class RolePermission (line 274) | class RolePermission(models.Model): class Meta (line 288) | class Meta: method __repr__ (line 299) | def __repr__(self): method from_permission_info (line 303) | def from_permission_info(role, info): method as_permission_info (line 308) | def as_permission_info(self): class PermissionManager (line 314) | class PermissionManager(AuditingManager): method get_by_natural_key (line 316) | def get_by_natural_key(self, value): class Permission (line 322) | class Permission(models.Model): class Meta (line 327) | class Meta: method __repr__ (line 330) | def __repr__(self): method create_all (line 334) | def create_all(cls): method natural_key (line 339) | def natural_key(self): class RoleAssignableBy (line 345) | class RoleAssignableBy(models.Model): function role_to_dict (line 353) | def role_to_dict(role): FILE: corehq/apps/users/permissions.py function get_extra_permissions (line 36) | def get_extra_permissions(): function can_download_data_files (line 71) | def can_download_data_files(domain, couch_user): function can_upload_data_files (line 75) | def can_upload_data_files(domain, couch_user): function _has_data_file_permission (line 79) | def _has_data_file_permission(domain, couch_user, read_only=True): function can_view_sms_exports (line 89) | def can_view_sms_exports(couch_user, domain): function has_permission_to_view_report (line 95) | def has_permission_to_view_report(couch_user, domain, report_to_check): function can_access_payments_report (line 105) | def can_access_payments_report(couch_user, domain): function can_access_kyc_report (line 109) | def can_access_kyc_report(couch_user, domain): FILE: corehq/apps/users/role_utils.py class UserRolePresets (line 5) | class UserRolePresets: function _get_default_roles (line 38) | def _get_default_roles(): function get_custom_roles_for_domain (line 45) | def get_custom_roles_for_domain(domain): function archive_custom_roles_for_domain (line 54) | def archive_custom_roles_for_domain(domain): function unarchive_roles_for_domain (line 61) | def unarchive_roles_for_domain(domain): function reset_initial_roles_for_domain (line 71) | def reset_initial_roles_for_domain(domain): function initialize_domain_with_default_roles (line 79) | def initialize_domain_with_default_roles(domain): function get_commcare_analytics_access_for_user_domain (line 90) | def get_commcare_analytics_access_for_user_domain(couch_user, domain): FILE: corehq/apps/users/signals.py function django_user_post_save_signal (line 11) | def django_user_post_save_signal(sender, instance, created, raw=False, *... function update_user_in_es (line 18) | def update_user_in_es(sender, couch_user, **kwargs): function _update_user_in_es (line 23) | def _update_user_in_es(couch_user): function apply_correct_demo_mode (line 35) | def apply_correct_demo_mode(sender, couch_user, **kwargs): function sync_user_phone_numbers (line 40) | def sync_user_phone_numbers(sender, couch_user, **kwargs): function remove_test_cases (line 45) | def remove_test_cases(sender, couch_user, **kwargs): function connect_user_signals (line 52) | def connect_user_signals(): FILE: corehq/apps/users/static/users/js/bootstrap3/filtered_download.js function FiltersModel (line 11) | function FiltersModel(options) { FILE: corehq/apps/users/static/users/js/bootstrap3/mobile_workers.js function toggleActive (line 130) | function toggleActive($modal, urlName, userIdOrName, bodyData = {}) { function pick (line 364) | function pick(possible, min, max) { function shuffle (line 381) | function shuffle(password) { FILE: corehq/apps/users/static/users/js/bootstrap3/web_users.js function selectText (line 158) | function selectText(element) { function handleDeletion (line 184) | function handleDeletion($el, data, title, body, postUrl) { FILE: corehq/apps/users/static/users/js/bootstrap5/filtered_download.js function FiltersModel (line 11) | function FiltersModel(options) { FILE: corehq/apps/users/static/users/js/bootstrap5/mobile_workers.js function toggleActive (line 130) | function toggleActive($modal, urlName, userIdOrName, bodyData = {}) { function pick (line 364) | function pick(possible, min, max) { function shuffle (line 381) | function shuffle(password) { FILE: corehq/apps/users/static/users/js/bootstrap5/web_users.js function selectText (line 158) | function selectText(element) { function handleDeletion (line 184) | function handleDeletion($el, data, title, body, postUrl) { FILE: corehq/apps/users/static/users/js/edit_role.js method selection (line 38) | get selection() { method selection (line 42) | set selection(value) { method showItems (line 56) | get showItems() { method hasError (line 60) | get hasError() { method init (line 65) | init() { method value (line 80) | get value() { method value (line 84) | set value(checked) { method all (line 126) | get all() { method all (line 129) | set all(checked) { method value (line 145) | get value() { method value (line 148) | set value(checked) { method hasUnpermittedLocationRestriction (line 173) | get hasUnpermittedLocationRestriction() { method restrictRoleChecked (line 176) | get restrictRoleChecked() { method unrestrictedButRestrictedRoleCanAssign (line 179) | get unrestrictedButRestrictedRoleCanAssign() { method cantAccessAllLocations (line 182) | get cantAccessAllLocations() { method canRestrictAccessByLocation (line 185) | get canRestrictAccessByLocation() { method showRestrictedLocationRoleAssignmentWarning (line 188) | get showRestrictedLocationRoleAssignmentWarning() { method isEditable (line 192) | get isEditable() { method init (line 196) | init() { FILE: corehq/apps/users/tasks.py function bulk_download_usernames_async (line 51) | def bulk_download_usernames_async(domain, download_id, user_filters, own... function bulk_download_users_async (line 57) | def bulk_download_users_async(domain, download_id, user_filters, is_web_... function tag_cases_as_deleted_and_remove_indices (line 104) | def tag_cases_as_deleted_and_remove_indices(domain, case_ids, deletion_i... function tag_forms_as_deleted_rebuild_associated_cases (line 120) | def tag_forms_as_deleted_rebuild_associated_cases(user_id, domain, form_... function _get_forms_to_modify (line 145) | def _get_forms_to_modify(domain, modified_forms, modified_cases, is_dele... function tag_system_forms_as_deleted (line 178) | def tag_system_forms_as_deleted(domain, deleted_forms, deleted_cases, de... function undelete_system_forms (line 184) | def undelete_system_forms(domain, deleted_forms, deleted_cases): function _remove_indices_from_deleted_cases_task (line 191) | def _remove_indices_from_deleted_cases_task(domain, case_ids): function remove_indices_from_deleted_cases (line 208) | def remove_indices_from_deleted_cases(domain, case_ids): function _rebuild_case_with_retries (line 229) | def _rebuild_case_with_retries(self, domain, case_id, detail): function resend_pending_invitations (line 252) | def resend_pending_invitations(): function turn_on_demo_mode_task (line 266) | def turn_on_demo_mode_task(commcare_user_id, domain): function reset_demo_user_restore_task (line 281) | def reset_demo_user_restore_task(commcare_user_id, domain): function remove_unused_custom_fields_from_users_task (line 303) | def remove_unused_custom_fields_from_users_task(domain): function update_domain_date (line 319) | def update_domain_date(user_id, domain): function process_reporting_metadata_staging (line 342) | def process_reporting_metadata_staging(): function _process_reporting_metadata_staging (line 367) | def _process_reporting_metadata_staging(): function _process_record_with_retry (line 378) | def _process_record_with_retry(record): function apply_correct_demo_mode_to_loadtest_user (line 390) | def apply_correct_demo_mode_to_loadtest_user(commcare_user_id): function remove_users_test_cases (line 418) | def remove_users_test_cases(domain, owner_ids): function process_mobile_worker_credentials (line 429) | def process_mobile_worker_credentials(): FILE: corehq/apps/users/tests/case_utils.py class CaseUtilsTestCase (line 10) | class CaseUtilsTestCase(TestCase): method setUp (line 12) | def setUp(self): method test_get_wrapped_user (line 15) | def test_get_wrapped_user(self): method test_get_wrapped_group (line 22) | def test_get_wrapped_group(self): function test_invalid_ids (line 40) | def test_invalid_ids(self, invalid_id): FILE: corehq/apps/users/tests/create.py class CreateTestCase (line 15) | class CreateTestCase(TestCase): method setUp (line 17) | def setUp(self): method testCreateBasicWebUser (line 20) | def testCreateBasicWebUser(self): method testCreateCompleteWebUser (line 41) | def testCreateCompleteWebUser(self): class TestDomainMemberships (line 65) | class TestDomainMemberships(TestCase): method tearDownClass (line 69) | def tearDownClass(cls): method setUpClass (line 76) | def setUpClass(cls): method setUp (line 97) | def setUp(self): method testMembershipsOnCreation (line 103) | def testMembershipsOnCreation(self): method testGetMemberships (line 107) | def testGetMemberships(self): method testDefaultPermissions (line 111) | def testDefaultPermissions(self): method testNewRole (line 115) | def testNewRole(self): method testDeleteDomainMembership (line 132) | def testDeleteDomainMembership(self): method test_undo_delete_domain_membership_removes_deleted_couch_doc_record (line 143) | def test_undo_delete_domain_membership_removes_deleted_couch_doc_recor... method testTransferMembership (line 152) | def testTransferMembership(self): FILE: corehq/apps/users/tests/fixture_status.py class TestFixtureStatus (line 14) | class TestFixtureStatus(TestCase): method setUp (line 16) | def setUp(self): method tearDown (line 27) | def tearDown(self): method _delete_everything (line 30) | def _delete_everything(self): method test_get_last_modified (line 35) | def test_get_last_modified(self): method test_update_status_set_location (line 53) | def test_update_status_set_location(self): method test_update_status_unset_location (line 71) | def test_update_status_unset_location(self): method test_update_status_reset_location (line 87) | def test_update_status_reset_location(self): method test_unset_location_by_id (line 104) | def test_unset_location_by_id(self): FILE: corehq/apps/users/tests/forms.py class TestStrongSetUserPasswordForm (line 13) | class TestStrongSetUserPasswordForm(TestCase): method setUp (line 14) | def setUp(self): method tearDown (line 19) | def tearDown(self): method form (line 23) | def form(self, password): method test_weak_password (line 29) | def test_weak_password(self): method test_strong_password (line 33) | def test_strong_password(self): class TestWeakSetUserPasswordForm (line 38) | class TestWeakSetUserPasswordForm(TestCase): method setUp (line 39) | def setUp(self): method tearDown (line 44) | def tearDown(self): method form (line 48) | def form(self, password): method test_weak_password (line 54) | def test_weak_password(self): method test_strong_password (line 58) | def test_strong_password(self): class TestSetMobileUserPasswordForm (line 63) | class TestSetMobileUserPasswordForm(TestCase): method test_login_attempts_are_cleared_after_reset (line 65) | def test_login_attempts_are_cleared_after_reset(self): method form (line 76) | def form(self, password): method setUpClass (line 84) | def setUpClass(cls): method setUp (line 90) | def setUp(self): FILE: corehq/apps/users/tests/permissions.py class PermissionsHelpersTest (line 20) | class PermissionsHelpersTest(SimpleTestCase): method setUpClass (line 23) | def setUpClass(cls): method setUp (line 34) | def setUp(self): method tearDown (line 55) | def tearDown(self): method test_deid_permission (line 59) | def test_deid_permission(self): method test_view_reports (line 73) | def test_view_reports(self): method test_has_permission_to_view_report_all (line 78) | def test_has_permission_to_view_report_all(self): method test_has_permission_to_view_report (line 83) | def test_has_permission_to_view_report(self): function test_parameterized_permission_covers_all (line 89) | def test_parameterized_permission_covers_all(): function test_parameterized_permission_validation (line 101) | def test_parameterized_permission_validation(): FILE: corehq/apps/users/tests/phone_users.py class PhoneUsersTestCase (line 10) | class PhoneUsersTestCase(TestCase): method setUp (line 12) | def setUp(self): method tearDown (line 22) | def tearDown(self): method testPhoneUsersViewNoNumberSet (line 31) | def testPhoneUsersViewNoNumberSet(self): method testPhoneUsersViewDefaultNumber (line 36) | def testPhoneUsersViewDefaultNumber(self): method testPhoneUsersChangeDefaultNumber (line 46) | def testPhoneUsersChangeDefaultNumber(self): method testPhoneUsersViewLastCommCareUsername (line 56) | def testPhoneUsersViewLastCommCareUsername(self): method testWebUserImplementsMobileMixIn (line 70) | def testWebUserImplementsMobileMixIn(self): method testDeletePhoneNumber (line 77) | def testDeletePhoneNumber(self): method test_get_cached_full_name (line 84) | def test_get_cached_full_name(self): FILE: corehq/apps/users/tests/retire.py class RetireUserTestCase (line 30) | class RetireUserTestCase(TestCase): method setUpClass (line 33) | def setUpClass(cls): method tearDownClass (line 39) | def tearDownClass(cls): method setUp (line 43) | def setUp(self): method tearDown (line 56) | def tearDown(self): method test_retire_missing_deleted_by (line 63) | def test_retire_missing_deleted_by(self): method test_retire (line 67) | def test_retire(self): method test_unretire_missing_unretired_by (line 80) | def test_unretire_missing_unretired_by(self): method test_unretire_user (line 84) | def test_unretire_user(self): method test_undelete_system_forms (line 131) | def test_undelete_system_forms(self): method test_deleted_indices_removed (line 174) | def test_deleted_indices_removed(self): method test_rebuild_cases_with_new_owner (line 210) | def test_rebuild_cases_with_new_owner(self, rebuild_case): method test_dont_rebuild (line 232) | def test_dont_rebuild(self, rebuild_case): method test_multiple_case_blocks_all_rebuilt (line 250) | def test_multiple_case_blocks_all_rebuilt(self, rebuild_case): method test_multiple_case_blocks_some_deleted (line 276) | def test_multiple_case_blocks_some_deleted(self, rebuild_case): method test_all_case_forms_deleted (line 304) | def test_all_case_forms_deleted(self): method test_forms_touching_live_case_not_deleted (line 337) | def test_forms_touching_live_case_not_deleted(self): FILE: corehq/apps/users/tests/sync.py class SyncWebUserTestCase (line 8) | class SyncWebUserTestCase(TestCase): method setUp (line 10) | def setUp(self): method test_couch_to_django (line 19) | def test_couch_to_django(self): method test_django_to_couch (line 24) | def test_django_to_couch(self): method test_truncates_long_names_from_couch_to_django (line 30) | def test_truncates_long_names_from_couch_to_django(self): method tearDown (line 44) | def tearDown(self): class SyncCommCareUserTestCase (line 50) | class SyncCommCareUserTestCase(TestCase): method setUp (line 52) | def setUp(self): method test_couch_to_django (line 61) | def test_couch_to_django(self): method test_django_to_couch (line 66) | def test_django_to_couch(self): method test_truncates_long_names_from_couch_to_django (line 72) | def test_truncates_long_names_from_couch_to_django(self): method test_retire (line 86) | def test_retire(self): method tearDown (line 93) | def tearDown(self): FILE: corehq/apps/users/tests/test_admin.py class CustomUserAdminTest (line 6) | class CustomUserAdminTest(SimpleTestCase): method test_fieldsets (line 8) | def test_fieldsets(self): FILE: corehq/apps/users/tests/test_analytics.py class UserAnalyticsTest (line 18) | class UserAnalyticsTest(TestCase): method setUpClass (line 21) | def setUpClass(cls): method tearDownClass (line 59) | def tearDownClass(cls): method test_get_count_of_active_commcare_users_in_domain (line 64) | def test_get_count_of_active_commcare_users_in_domain(self): method test_get_count_of_active_commcare_users_in_domain_no_results (line 67) | def test_get_count_of_active_commcare_users_in_domain_no_results(self): method test_get_count_of_inactive_commcare_users_in_domain (line 70) | def test_get_count_of_inactive_commcare_users_in_domain(self): method test_get_count_of_inactive_commcare_users_in_domain_no_results (line 73) | def test_get_count_of_inactive_commcare_users_in_domain_no_results(self): method test_get_active_commcare_users_in_domain (line 76) | def test_get_active_commcare_users_in_domain(self): method test_get_inactive_commcare_users_in_domain (line 81) | def test_get_inactive_commcare_users_in_domain(self): method test_get_active_commcare_users_in_domain_no_results (line 86) | def test_get_active_commcare_users_in_domain_no_results(self): method test_get_inactive_commcare_users_in_domain_no_results (line 89) | def test_get_inactive_commcare_users_in_domain_no_results(self): FILE: corehq/apps/users/tests/test_audit.py class TestUserChangeMessageSlugs (line 16) | class TestUserChangeMessageSlugs(SimpleTestCase): method _test_change_messages (line 17) | def _test_change_messages(self, change_message_method, args, expected_... method test_set_program (line 31) | def test_set_program(self): method test_clear_program (line 49) | def test_clear_program(self): method test_set_role (line 61) | def test_set_role(self): method test_clear_role (line 80) | def test_clear_role(self): method test_remove_from_domain (line 92) | def test_remove_from_domain(self): method test_add_to_domain (line 105) | def test_add_to_domain(self): method test_add_as_web_user (line 118) | def test_add_as_web_user(self): method test_disable_with_verification (line 131) | def test_disable_with_verification(self): method test_reset_password (line 166) | def test_reset_password(self): method test_activate_user (line 178) | def test_activate_user(self): method test_deactivate_user (line 193) | def test_deactivate_user(self): method test_add_phone_numbers (line 208) | def test_add_phone_numbers(self): method test_remove_phone_numbers (line 226) | def test_remove_phone_numbers(self): method test_set_profile (line 244) | def test_set_profile(self): method test_clear_profile (line 259) | def test_clear_profile(self): method test_set_primary_location (line 271) | def test_set_primary_location(self): method test_clear_primary_location (line 289) | def test_clear_primary_location(self): method test_set_assigned_locations (line 312) | def test_set_assigned_locations(self): method test_clear_assigned_locations (line 338) | def test_clear_assigned_locations(self): method test_set_groups (line 350) | def test_set_groups(self): method test_clear_groups (line 376) | def test_clear_groups(self): method test_add_domain_invitation (line 388) | def test_add_domain_invitation(self): method test_remove_domain_invitation (line 401) | def test_remove_domain_invitation(self): method test_updated_deactivate_after (line 414) | def test_updated_deactivate_after(self): method test_updated_deactivate_after_deleted (line 429) | def test_updated_deactivate_after_deleted(self): method test_add_toggle_edit_permissions (line 441) | def test_add_toggle_edit_permissions(self): method test_remove_toggle_edit_permissions (line 456) | def test_remove_toggle_edit_permissions(self): FILE: corehq/apps/users/tests/test_auditors.py class TestHQAudit (line 8) | class TestHQAudit(TestCase): method setUp (line 10) | def setUp(self): method test_change_context_returns_none_when_not_authenticated (line 13) | def test_change_context_returns_none_when_not_authenticated(self): method test_change_context_contains_user_name_and_type (line 17) | def test_change_context_contains_user_name_and_type(self): method test_change_context_fetches_couch_user_when_missing (line 24) | def test_change_context_fetches_couch_user_when_missing(self): method test_change_context_contains_domain_when_present (line 35) | def test_change_context_contains_domain_when_present(self): class MockRequest (line 43) | class MockRequest: method __init__ (line 45) | def __init__(self, user, couch_user=None, domain=None): method without_auth (line 53) | def without_auth(cls, username): method with_auth (line 57) | def with_auth(cls, username): method with_auth_and_couch_user (line 61) | def with_auth_and_couch_user(cls, username, doc_type): method with_auth_and_domain (line 65) | def with_auth_and_domain(cls, username, doc_type, domain): class MockDjangoAuthUser (line 69) | class MockDjangoAuthUser: method __init__ (line 71) | def __init__(self, username, is_authenticated=True): class MockCouchUser (line 76) | class MockCouchUser: method __init__ (line 78) | def __init__(self, username, doc_type): FILE: corehq/apps/users/tests/test_authorization.py class BaseAuthorizationTest (line 14) | class BaseAuthorizationTest(TestCase): method __test__ (line 17) | def __test__(cls): method setUpTestData (line 21) | def setUpTestData(cls): method tearDownClass (line 35) | def tearDownClass(cls): method setUp (line 41) | def setUp(self): method _set_role (line 49) | def _set_role(self, domain, user, is_admin=False): method _create_user (line 56) | def _create_user(cls, domain): method test_get_membership (line 62) | def test_get_membership(self): method test_get_membership__no_membership (line 66) | def test_get_membership__no_membership(self): method test_get_membership__null_domain (line 69) | def test_get_membership__null_domain(self): method test_get_role (line 75) | def test_get_role(self): method test_get_role__not_set (line 80) | def test_get_role__not_set(self): method test_get_role__no_membership (line 83) | def test_get_role__no_membership(self): method test_get_role__null_domain (line 87) | def test_get_role__null_domain(self): method test_is_domain_admin__admin_role (line 94) | def test_is_domain_admin__admin_role(self): method test_is_domain_admin__non_admin_role (line 98) | def test_is_domain_admin__non_admin_role(self): method test_is_domain_admin__no_role (line 102) | def test_is_domain_admin__no_role(self): method test_is_domain_admin__no_membership (line 105) | def test_is_domain_admin__no_membership(self): method test_is_domain_admin__null_domain (line 108) | def test_is_domain_admin__null_domain(self): method test_is_member_of (line 114) | def test_is_member_of(self): method test_is_member_of__no_membership (line 117) | def test_is_member_of__no_membership(self): method test_is_member_of__null_domain (line 120) | def test_is_member_of__null_domain(self): method test_has_permission__from_role (line 126) | def test_has_permission__from_role(self): method test_has_permission__admin (line 130) | def test_has_permission__admin(self): method test_has_permission__default_yes (line 134) | def test_has_permission__default_yes(self): method test_has_permission__default_no (line 137) | def test_has_permission__default_no(self): method test_has_permission__default_yes__no_membership (line 140) | def test_has_permission__default_yes__no_membership(self): method test_has_permission__default_yes__null_domain (line 143) | def test_has_permission__default_yes__null_domain(self): class TestMobileUserAuthorizationFunctions (line 147) | class TestMobileUserAuthorizationFunctions(BaseAuthorizationTest): method _create_user (line 149) | def _create_user(cls, domain): method test_get_role__not_set (line 158) | def test_get_role__not_set(self): method test_is_domain_admin__admin_role (line 163) | def test_is_domain_admin__admin_role(self): class TestWebUserAuthorizationFunctions (line 169) | class TestWebUserAuthorizationFunctions(BaseAuthorizationTest): method _create_user (line 171) | def _create_user(cls, domain): method test_inactive_no_permissions (line 180) | def test_inactive_no_permissions(self): method test_inactive_admin_no_permissions (line 188) | def test_inactive_admin_no_permissions(self): method test_reactivating_restores_permissions (line 196) | def test_reactivating_restores_permissions(self): class TestSuperUserAuthorizationFunctions (line 210) | class TestSuperUserAuthorizationFunctions(BaseAuthorizationTest): method _create_user (line 212) | def _create_user(cls, domain): method test_get_role (line 225) | def test_get_role(self): method test_get_role__not_set (line 230) | def test_get_role__not_set(self): method test_get_role__no_membership (line 234) | def test_get_role__no_membership(self): method test_get_role__null_domain (line 238) | def test_get_role__null_domain(self): method test_get_role___not_set__no_checking_global_admin (line 243) | def test_get_role___not_set__no_checking_global_admin(self): method test_get_role___not_set__domain_restricts_superusers (line 247) | def test_get_role___not_set__domain_restricts_superusers(self, _mock): method test_get_role__domain_restricts_superusers (line 253) | def test_get_role__domain_restricts_superusers(self, _mock): method test_get_role__no_membership__no_checking_global_admin (line 259) | def test_get_role__no_membership__no_checking_global_admin(self): method test_get_role__no_membership__domain_restricts_superusers (line 264) | def test_get_role__no_membership__domain_restricts_superusers(self, _m... method test_is_domain_admin__non_admin_role (line 272) | def test_is_domain_admin__non_admin_role(self): method test_is_domain_admin__no_role (line 276) | def test_is_domain_admin__no_role(self): method test_is_domain_admin__no_membership (line 279) | def test_is_domain_admin__no_membership(self): method test_is_domain_admin__non_admin_role__domain_restricts_superusers (line 283) | def test_is_domain_admin__non_admin_role__domain_restricts_superusers(... method test_is_member_of__no_membership (line 290) | def test_is_member_of__no_membership(self): method test_is_member_of__no_membership__domain_restricts_superusers (line 294) | def test_is_member_of__no_membership__domain_restricts_superusers(self... method test_has_permission__default_no (line 300) | def test_has_permission__default_no(self): method test_has_permission__default_yes__no_membership (line 303) | def test_has_permission__default_yes__no_membership(self): method test_has_permission__default_yes__null_domain (line 306) | def test_has_permission__default_yes__null_domain(self): method test_has_permission__default_no__domain_restricts_superusers (line 310) | def test_has_permission__default_no__domain_restricts_superusers(self,... method test_has_permission__default_yes__no_membership__domain_restricts_superusers (line 314) | def test_has_permission__default_yes__no_membership__domain_restricts_... method test_has_permission__default_no__no_is_active (line 317) | def test_has_permission__default_no__no_is_active(self): method test_has_permission__default_no__no_is_active__domain_restricts_superusers (line 326) | def test_has_permission__default_no__no_is_active__domain_restricts_su... FILE: corehq/apps/users/tests/test_bulk_download.py class TestBulkDownload (line 9) | class TestBulkDownload(TestCase): method setUpClass (line 12) | def setUpClass(cls): method test_make_web_user_dict_with_inactive_user (line 17) | def test_make_web_user_dict_with_inactive_user(self): FILE: corehq/apps/users/tests/test_cases.py class TestGetEntityLocation (line 11) | class TestGetEntityLocation(TestCase): method setUp (line 12) | def setUp(self): method test_retrieves_location_from_web_user (line 24) | def test_retrieves_location_from_web_user(self): method test_retrieves_location_from_mobile_user (line 32) | def test_retrieves_location_from_mobile_user(self): method test_retrieves_location_from_location (line 40) | def test_retrieves_location_from_location(self): method test_location_from_group_is_none (line 46) | def test_location_from_group_is_none(self): FILE: corehq/apps/users/tests/test_commcare_users_lookup.py class UserCountTest (line 10) | class UserCountTest(TestCase): method setUpClass (line 12) | def setUpClass(cls): method create_group (line 26) | def create_group(self): method create_request (line 31) | def create_request(self, user_type): method test_count_users_mobile_worker_return_value (line 37) | def test_count_users_mobile_worker_return_value(self, mock_count_mobil... method test_count_users_web_user_return_value (line 51) | def test_count_users_web_user_return_value(self, mock_count_web_users,... FILE: corehq/apps/users/tests/test_confirm_account.py class TestAccountConfirmation (line 10) | class TestAccountConfirmation(TestCase): method setUpClass (line 14) | def setUpClass(cls): method setUp (line 18) | def setUp(self): method tearDownClass (line 36) | def tearDownClass(cls): method tearDown (line 42) | def tearDown(self): method test_confirm_account (line 45) | def test_confirm_account(self): method test_cant_confirm_twice (line 60) | def test_cant_confirm_twice(self): function test_should_send_account_confirmation (line 71) | def test_should_send_account_confirmation(self, user, result): FILE: corehq/apps/users/tests/test_confirm_account_view.py class TestMobileWorkerConfirmAccountView (line 14) | class TestMobileWorkerConfirmAccountView(TestCase): method setUpClass (line 18) | def setUpClass(cls): method tearDownClass (line 23) | def tearDownClass(cls): method setUp (line 27) | def setUp(self): method tearDown (line 40) | def tearDown(self): method test_expected_workflow (line 44) | def test_expected_workflow(self): method test_does_not_have_privilege (line 49) | def test_does_not_have_privilege(self): method test_user_id_not_found (line 55) | def test_user_id_not_found(self): method test_user_domain_mismatch (line 64) | def test_user_domain_mismatch(self): method test_account_active (line 70) | def test_account_active(self): method test_account_inactive_but_confirmed (line 79) | def test_account_inactive_but_confirmed(self): method test_invite_expired_message (line 90) | def test_invite_expired_message(self, mock_expiration_time): FILE: corehq/apps/users/tests/test_create_mobile_workers.py class TestCreateMobileWorkers (line 8) | class TestCreateMobileWorkers(TestCase): method setUpClass (line 12) | def setUpClass(cls): method tearDownClass (line 17) | def tearDownClass(cls): method test_create_basic (line 21) | def test_create_basic(self): method test_create_unconfirmed (line 49) | def test_create_unconfirmed(self): method test_disallow_unconfirmed_active (line 68) | def test_disallow_unconfirmed_active(self): FILE: corehq/apps/users/tests/test_credentials_issuing.py class TestHasConsecutiveMonths (line 22) | class TestHasConsecutiveMonths(SimpleTestCase): method setUp (line 24) | def setUp(self): method test_has_consecutive_months (line 40) | def test_has_consecutive_months(self): method test_consecutive_month_across_years (line 44) | def test_consecutive_month_across_years(self): method test_no_consecutive_months (line 47) | def test_no_consecutive_months(self): class TestGetUsernameCredIDDict (line 51) | class TestGetUsernameCredIDDict(TestCase): method setUpClass (line 55) | def setUpClass(cls): method tearDownClass (line 94) | def tearDownClass(cls): method test_get_username_cred_id_dict (line 99) | def test_get_username_cred_id_dict(self): method test_no_user_credentials (line 111) | def test_no_user_credentials(self): class TestGetAppNamesByID (line 116) | class TestGetAppNamesByID(TestCase): method setUpClass (line 120) | def setUpClass(cls): method tearDownClass (line 152) | def tearDownClass(cls): method test_get_app_names_by_id (line 156) | def test_get_app_names_by_id(self): method test_missing_app (line 163) | def test_missing_app(self): method test_no_user_credentials (line 178) | def test_no_user_credentials(self): FILE: corehq/apps/users/tests/test_dbaccessors.py class AllCommCareUsersTest (line 41) | class AllCommCareUsersTest(TestCase): method setUpClass (line 45) | def setUpClass(cls): method test_get_users_by_filters (line 159) | def test_get_users_by_filters(self): method test_get_invitations_by_filters (line 264) | def test_get_invitations_by_filters(self): method _assert_invitations (line 285) | def _assert_invitations(self, filters, expected_emails): method test_get_all_commcare_users_by_domain (line 295) | def test_get_all_commcare_users_by_domain(self): method test_get_all_web_users_by_domain (line 301) | def test_get_all_web_users_by_domain(self): method test_get_all_usernames_by_domain (line 308) | def test_get_all_usernames_by_domain(self): method test_exclude_retired_users (line 322) | def test_exclude_retired_users(self): method test_get_user_docs_by_username (line 339) | def test_get_user_docs_by_username(self): method test_get_existing_usernames (line 347) | def test_get_existing_usernames(self): method test_get_all_ids (line 355) | def test_get_all_ids(self): method test_get_all_user_rows (line 371) | def test_get_all_user_rows(self): method test_get_all_user_rows_no_inactive (line 387) | def test_get_all_user_rows_no_inactive(self): method test_get_id_by_username (line 400) | def test_get_id_by_username(self): method test_get_deleted_user_by_username (line 404) | def test_get_deleted_user_by_username(self): FILE: corehq/apps/users/tests/test_deactivate_mobile_worker_trigger.py class TestDeactivateMobileWorkerTrigger (line 13) | class TestDeactivateMobileWorkerTrigger(TestCase): method setUpClass (line 16) | def setUpClass(cls): method tearDownClass (line 78) | def tearDownClass(cls): method test_users_deactivated (line 85) | def test_users_deactivated(self): class UpdateDeactivateMobileWorkerTriggerTest (line 121) | class UpdateDeactivateMobileWorkerTriggerTest(TestCase): method tearDown (line 123) | def tearDown(self): method test_updates (line 127) | def test_updates(self): method test_creates (line 145) | def test_creates(self): method test_deletes (line 161) | def test_deletes(self): method test_no_update_needed (line 180) | def test_no_update_needed(self): method test_noop (line 196) | def test_noop(self): method test_string_value (line 208) | def test_string_value(self): method test_bad_value (line 224) | def test_bad_value(self): method test_bad_value_date (line 230) | def test_bad_value_date(self): method test_noop_blank_string (line 236) | def test_noop_blank_string(self): class GetDeactivateAfterDateTest (line 250) | class GetDeactivateAfterDateTest(TestCase): method tearDown (line 252) | def tearDown(self): method test_no_trigger_exists (line 256) | def test_no_trigger_exists(self): method test_date_is_fetched (line 262) | def test_date_is_fetched(self): FILE: corehq/apps/users/tests/test_device_rate_limiter.py class TestDeviceRateLimiter (line 11) | class TestDeviceRateLimiter(TestCase): method setUpClass (line 16) | def setUpClass(cls): method setUp (line 21) | def setUp(self): method _cleanup_redis (line 25) | def _cleanup_redis(self): method test_allowed_if_no_devices_have_been_used_yet (line 29) | def test_allowed_if_no_devices_have_been_used_yet(self): method test_allowed_if_device_count_is_under_limit (line 32) | def test_allowed_if_device_count_is_under_limit(self): method test_rate_limited_if_device_count_exceeds_limit (line 37) | def test_rate_limited_if_device_count_exceeds_limit(self): method test_allowed_if_device_has_already_been_used (line 41) | def test_allowed_if_device_has_already_been_used(self): method test_allowed_if_different_user (line 45) | def test_allowed_if_different_user(self): method test_allowed_after_waiting_one_minute (line 51) | def test_allowed_after_waiting_one_minute(self): method test_formplayer_activity_is_always_allowed (line 58) | def test_formplayer_activity_is_always_allowed(self): method test_formplayer_activity_does_not_count_towards_limit (line 63) | def test_formplayer_activity_does_not_count_towards_limit(self): method test_domain_has_higher_limit (line 68) | def test_domain_has_higher_limit(self): method test_domain_has_lower_limit (line 77) | def test_domain_has_lower_limit(self): method test_allowed_if_user_or_device_id_is_none (line 87) | def test_allowed_if_user_or_device_id_is_none(self): method test_domains_do_not_conflict (line 92) | def test_domains_do_not_conflict(self): method test_demo_user_activity_is_not_limited (line 97) | def test_demo_user_activity_is_not_limited(self): FILE: corehq/apps/users/tests/test_download.py class TestDownloadMobileWorkers (line 23) | class TestDownloadMobileWorkers(TestCase): method setUpClass (line 26) | def setUpClass(cls): method tearDownClass (line 94) | def tearDownClass(cls): method test_download (line 104) | def test_download(self): method test_multiple_domain_download (line 128) | def test_multiple_domain_download(self): FILE: corehq/apps/users/tests/test_download_with_profile.py class TestDownloadMobileWorkersWithProfile (line 18) | class TestDownloadMobileWorkersWithProfile(TestCase, DomainSubscriptionM... method setUpClass (line 22) | def setUpClass(cls): method tearDownClass (line 77) | def tearDownClass(cls): method test_download_with_profile (line 85) | def test_download_with_profile(self): FILE: corehq/apps/users/tests/test_email_events.py class TestInviteMessages (line 15) | class TestInviteMessages(TestSnsEmailBase): method setUp (line 18) | def setUp(self): method tearDown (line 28) | def tearDown(self): method test_bounced_event (line 32) | def test_bounced_event(self): class TestUserLimitWarnings (line 45) | class TestUserLimitWarnings(TestSnsEmailBase): method setUp (line 46) | def setUp(self): method dont_send_email_below_threshold (line 61) | def dont_send_email_below_threshold(self): method send_warning_email_at_threshold (line 68) | def send_warning_email_at_threshold(self): method send_final_email_at_threshold (line 78) | def send_final_email_at_threshold(self): method dont_send_email_for_enterprise (line 88) | def dont_send_email_for_enterprise(self): method only_send_warning_email_once (line 96) | def only_send_warning_email_once(self): method only_send_final_email_once (line 103) | def only_send_final_email_once(self): FILE: corehq/apps/users/tests/test_forms.py class TestGenerateStrongPassword (line 8) | class TestGenerateStrongPassword(SimpleTestCase): method setUpClass (line 11) | def setUpClass(cls): method test_length (line 15) | def test_length(self): method test_contains_lower (line 18) | def test_contains_lower(self): method test_contains_upper (line 21) | def test_contains_upper(self): method test_contains_digit (line 24) | def test_contains_digit(self): method test_contains_punc (line 27) | def test_contains_punc(self): FILE: corehq/apps/users/tests/test_get_domain_language.py class TestDomainLanguages (line 11) | class TestDomainLanguages(TestCase): method setUpClass (line 14) | def setUpClass(cls): method test_returns_translated_languages_for_domain (line 29) | def test_returns_translated_languages_for_domain(self): method test_default_to_all_langs (line 33) | def test_default_to_all_langs(self): FILE: corehq/apps/users/tests/test_get_owner_ids.py class OwnerIDTestCase (line 10) | class OwnerIDTestCase(TestCase): method _mock_user (line 14) | def _mock_user(cls, id): method test_get_owner_id_no_groups (line 24) | def test_get_owner_id_no_groups(self): method test_case_sharing_groups_included (line 30) | def test_case_sharing_groups_included(self): method test_non_case_sharing_groups_not_included (line 39) | def test_non_case_sharing_groups_not_included(self): class LocationOwnerIdTests (line 48) | class LocationOwnerIdTests(LocationHierarchyTestCase): method setUpClass (line 72) | def setUpClass(cls): method test_hierarchical_ownership (line 79) | def test_hierarchical_ownership(self): method test_web_user (line 96) | def test_web_user(self): method test_hierarchical_ownership_with_SQL_function (line 108) | def test_hierarchical_ownership_with_SQL_function(self): method test_web_user_with_SQL_function (line 124) | def test_web_user_with_SQL_function(self): method test_case_sync_restriction_simple (line 136) | def test_case_sync_restriction_simple(self): FILE: corehq/apps/users/tests/test_location_assignment.py class CCUserLocationAssignmentTest (line 16) | class CCUserLocationAssignmentTest(TestCase): method setUpClass (line 19) | def setUpClass(cls): method tearDownClass (line 29) | def tearDownClass(cls): method setUp (line 34) | def setUp(self): method tearDown (line 45) | def tearDown(self): method test_set_location (line 49) | def test_set_location(self): method test_set_sql_location (line 54) | def test_set_sql_location(self): method test_location_append (line 60) | def test_location_append(self): method test_reset_locations (line 69) | def test_reset_locations(self): method test_unset_primary_location (line 75) | def test_unset_primary_location(self): method test_unset_by_location_id (line 89) | def test_unset_by_location_id(self): method test_deleting_location_updates_user (line 104) | def test_deleting_location_updates_user(self): method test_no_commit (line 111) | def test_no_commit(self): method test_create_with_location (line 116) | def test_create_with_location(self): method assertPrimaryLocation (line 130) | def assertPrimaryLocation(self, expected): method assertAssignedLocations (line 134) | def assertAssignedLocations(self, expected_location_ids): method assertNonPrimaryLocation (line 138) | def assertNonPrimaryLocation(self, expected): class WebUserLocationAssignmentTest (line 143) | class WebUserLocationAssignmentTest(TestCase): method setUpClass (line 146) | def setUpClass(cls): method tearDownClass (line 156) | def tearDownClass(cls): method setUp (line 161) | def setUp(self): method tearDown (line 172) | def tearDown(self): method test_set_location (line 176) | def test_set_location(self): method test_reset_locations (line 181) | def test_reset_locations(self): method test_no_commit (line 187) | def test_no_commit(self): method test_reset_locations_doesnt_ovewrite_set_location_uncomitted (line 192) | def test_reset_locations_doesnt_ovewrite_set_location_uncomitted(self): method test_location_append (line 200) | def test_location_append(self): method test_unset_primary_location (line 209) | def test_unset_primary_location(self): method test_unset_by_location_id (line 223) | def test_unset_by_location_id(self): method assertPrimaryLocation (line 235) | def assertPrimaryLocation(self, expected): method assertAssignedLocations (line 240) | def assertAssignedLocations(self, expected_location_ids): method assertNonPrimaryLocation (line 244) | def assertNonPrimaryLocation(self, expected): FILE: corehq/apps/users/tests/test_log_user_change.py class TestLogUserChange (line 11) | class TestLogUserChange(TestCase): method setUpClass (line 16) | def setUpClass(cls): method tearDownClass (line 26) | def tearDownClass(cls): method test_create (line 32) | def test_create(self): method test_update (line 48) | def test_update(self): method test_delete_missing_deleted_by (line 85) | def test_delete_missing_deleted_by(self): method test_delete (line 89) | def test_delete(self): method test_missing_by_domain (line 109) | def test_missing_by_domain(self): method test_missing_for_domain (line 129) | def test_missing_for_domain(self): function _get_expected_changes_json (line 141) | def _get_expected_changes_json(user): FILE: corehq/apps/users/tests/test_models.py class CouchUserTest (line 26) | class CouchUserTest(SimpleTestCase): method test_web_user_flag (line 28) | def test_web_user_flag(self): method test_commcare_user_flag (line 36) | def test_commcare_user_flag(self): class InvitationTest (line 45) | class InvitationTest(TestCase): method setUpClass (line 48) | def setUpClass(cls): method test_by_domain (line 63) | def test_by_domain(self): method test_by_email (line 69) | def test_by_email(self): method tearDownClass (line 75) | def tearDownClass(cls): class User_MessagingDomain_Tests (line 81) | class User_MessagingDomain_Tests(SimpleTestCase): method test_web_user_with_no_messaging_domain_returns_false (line 82) | def test_web_user_with_no_messaging_domain_returns_false(self): method test_web_user_with_messaging_domain_returns_true (line 86) | def test_web_user_with_messaging_domain_returns_true(self): method test_commcare_user_is_compatible (line 90) | def test_commcare_user_is_compatible(self): method setUp (line 94) | def setUp(self): method _get_domain_by_name (line 105) | def _get_domain_by_name(self, name): class DeviceAppMetaMergeTests (line 109) | class DeviceAppMetaMergeTests(SimpleTestCase): method test_overwrites_key (line 110) | def test_overwrites_key(self): method test_ignores_older_submissions (line 117) | def test_ignores_older_submissions(self): method test_ignores_simultaneous_submissions (line 124) | def test_ignores_simultaneous_submissions(self): method test_merges_new_properties (line 131) | def test_merges_new_properties(self): method test_merges_new_dates (line 137) | def test_merges_new_dates(self): method test_does_not_overwrite_unspecified_properties (line 143) | def test_does_not_overwrite_unspecified_properties(self): method test_uses_nontruthy_values (line 149) | def test_uses_nontruthy_values(self): method test_updates_dates (line 156) | def test_updates_dates(self): method test_ignores_older_dates (line 163) | def test_ignores_older_dates(self): method test_updates_last_request (line 175) | def test_updates_last_request(self): method setUp (line 182) | def setUp(self): class DeviceAppMetaLatestRequestTests (line 190) | class DeviceAppMetaLatestRequestTests(SimpleTestCase): method test_uses_max_from_submission (line 191) | def test_uses_max_from_submission(self): method test_uses_max_from_sync (line 200) | def test_uses_max_from_sync(self): method test_uses_max_from_heartbeat (line 209) | def test_uses_max_from_heartbeat(self): method setUp (line 218) | def setUp(self): class HQPermissionsTests (line 223) | class HQPermissionsTests(SimpleTestCase): method test_normalize_removes_permissions_from_location_restricted_user (line 224) | def test_normalize_removes_permissions_from_location_restricted_user(s... method test_normalize_edit_users_implies_view_users (line 244) | def test_normalize_edit_users_implies_view_users(self): method test_normalize_edit_commcare_users_implies_view_users (line 250) | def test_normalize_edit_commcare_users_implies_view_users(self): method test_normalize_edit_group_implies_view_group (line 256) | def test_normalize_edit_group_implies_view_group(self): method test_normalize_disabled_edit_groups_prevents_editing_users_in_groups (line 262) | def test_normalize_disabled_edit_groups_prevents_editing_users_in_grou... method test_normalize_edit_locations_implies_viewing_locations (line 268) | def test_normalize_edit_locations_implies_viewing_locations(self): method test_normalize_disabled_edit_locations_prevents_editing_users_locations (line 274) | def test_normalize_disabled_edit_locations_prevents_editing_users_loca... method test_normalize_edit_apps_implies_view_apps (line 280) | def test_normalize_edit_apps_implies_view_apps(self): method test_normalize_access_release_management_preserves_previous_edit_linked_config_value (line 286) | def test_normalize_access_release_management_preserves_previous_edit_l... method test_normalize_disabled_release_management_uses_edit_linked_config_value (line 293) | def test_normalize_disabled_release_management_uses_edit_linked_config... method test_diff_returns_an_empty_list_for_matching_permissions (line 300) | def test_diff_returns_an_empty_list_for_matching_permissions(self): method test_diff_builds_array_of_mismatched_permission_names (line 305) | def test_diff_builds_array_of_mismatched_permission_names(self): method test_diff_includes_missing_permissions_from_left (line 310) | def test_diff_includes_missing_permissions_from_left(self): method test_diff_includes_missing_permissions_from_right (line 315) | def test_diff_includes_missing_permissions_from_right(self): class CouchUserSaveRaceConditionTests (line 321) | class CouchUserSaveRaceConditionTests(TestCase): method test_couch_user_save_race_condition (line 323) | def test_couch_user_save_race_condition(self): method setUpClass (line 351) | def setUpClass(cls): class TestCouchUser (line 357) | class TestCouchUser(TestCase): method test_check_user (line 359) | def test_check_user(self): class ConnectIDUserLinkTests (line 368) | class ConnectIDUserLinkTests(TestCase): method setUpClass (line 372) | def setUpClass(cls): method tearDown (line 386) | def tearDown(self): method test_create_messaging_key (line 395) | def test_create_messaging_key(self): method test_messaging_key_exists (line 401) | def test_messaging_key_exists(self): method test_error_creating_duplicate_messaging_key (line 413) | def test_error_creating_duplicate_messaging_key(self): FILE: corehq/apps/users/tests/test_models_role.py class BaseEventSetupCase (line 16) | class BaseEventSetupCase(TestCase): method setUpClass (line 19) | def setUpClass(cls): method setUp (line 23) | def setUp(self): method setup_audited_models (line 29) | def setup_audited_models(self): method get_test_audit_events (line 33) | def get_test_audit_events(self, ignore_ids=[]): class CaseWithDomainAndRole (line 39) | class CaseWithDomainAndRole(BaseEventSetupCase): method setUpClass (line 42) | def setUpClass(cls): method setup_audited_models (line 50) | def setup_audited_models(self): class TestUserRole (line 58) | class TestUserRole(CaseWithDomainAndRole): method test_audit_fields_for_userrole_create (line 71) | def test_audit_fields_for_userrole_create(self): method test_audit_fields_for_userrole_update (line 83) | def test_audit_fields_for_userrole_update(self): method test_audit_fields_for_userrole_delete (line 100) | def test_audit_fields_for_userrole_delete(self): class TestRoleAssignableBy (line 115) | class TestRoleAssignableBy(CaseWithDomainAndRole): method setup_audited_models (line 117) | def setup_audited_models(self): method test_audit_fields_for_assignableby_create (line 122) | def test_audit_fields_for_assignableby_create(self): method test_audit_fields_for_assignableby_delete (line 137) | def test_audit_fields_for_assignableby_delete(self): class TestRolePermission (line 157) | class TestRolePermission(CaseWithDomainAndRole): method setup_audited_models (line 159) | def setup_audited_models(self): method test_audit_fields_for_rolepermission_create (line 167) | def test_audit_fields_for_rolepermission_create(self): method test_audit_fields_for_rolepermission_direct_edit (line 188) | def test_audit_fields_for_rolepermission_direct_edit(self): method test_audit_fields_for_rolepermission_set_new (line 208) | def test_audit_fields_for_rolepermission_set_new(self): method test_audit_fields_for_rolepermission_delete (line 245) | def test_audit_fields_for_rolepermission_delete(self): class TestPermission (line 266) | class TestPermission(BaseEventSetupCase): method setup_audited_models (line 269) | def setup_audited_models(cls): method test_audit_fields_for_permission_create (line 272) | def test_audit_fields_for_permission_create(self): method test_audit_fields_for_permission_update (line 282) | def test_audit_fields_for_permission_update(self): method test_audit_fields_for_permission_delete (line 301) | def test_audit_fields_for_permission_delete(self): class HqPermissionsTest (line 314) | class HqPermissionsTest(SimpleTestCase): method setUp (line 316) | def setUp(self): method test_permissions_default (line 321) | def test_permissions_default(self): method test_view_allowed_when_edit_allowed (line 329) | def test_view_allowed_when_edit_allowed(self): method test_download_reports_removed_when_view_reports_false (line 344) | def test_download_reports_removed_when_view_reports_false(self): method test_download_reports_not_removed_when_view_reports_true (line 348) | def test_download_reports_not_removed_when_view_reports_true(self): method test_download_reports_not_removed_when_view_reports_list (line 352) | def test_download_reports_not_removed_when_view_reports_list(self): method _check_normalized_permission (line 357) | def _check_normalized_permission(self, permission, initial_value=True,... FILE: corehq/apps/users/tests/test_rm_orphaned_user_data.py class TestOrphanedUserData (line 9) | class TestOrphanedUserData(TestCase): method setUpClass (line 12) | def setUpClass(cls): method test_unknown_user_data_is_removed (line 18) | def test_unknown_user_data_is_removed(self): method test_active_user_data_is_not_removed (line 26) | def test_active_user_data_is_not_removed(self): method test_orphaned_user_data_is_removed (line 36) | def test_orphaned_user_data_is_removed(self): method test_dry_run_works (line 48) | def test_dry_run_works(self): FILE: corehq/apps/users/tests/test_role_permission_history.py class BaseRoleHistoryTest (line 15) | class BaseRoleHistoryTest(TestCase): method setUpClass (line 20) | def setUpClass(cls): method _call_command (line 26) | def _call_command(self, *args, **kwargs): class TestListRoles (line 35) | class TestListRoles(BaseRoleHistoryTest): method test_list_roles (line 37) | def test_list_roles(self): method test_list_roles_shows_archived (line 45) | def test_list_roles_shows_archived(self): method test_list_roles_empty_domain (line 51) | def test_list_roles_empty_domain(self): class TestGetRoleErrors (line 56) | class TestGetRoleErrors(BaseRoleHistoryTest): method test_nonexistent_role_name (line 58) | def test_nonexistent_role_name(self): method test_nonexistent_role_id (line 63) | def test_nonexistent_role_id(self): method test_nonexistent_couch_id (line 67) | def test_nonexistent_couch_id(self): method test_lookup_by_couch_id (line 72) | def test_lookup_by_couch_id(self): method test_role_id_wrong_domain (line 78) | def test_role_id_wrong_domain(self): method test_couch_id_wrong_domain (line 84) | def test_couch_id_wrong_domain(self): method test_ambiguous_role_name (line 90) | def test_ambiguous_role_name(self): class TestRoleCreatedEvent (line 98) | class TestRoleCreatedEvent(BaseRoleHistoryTest): method test_shows_role_created (line 100) | def test_shows_role_created(self): method test_shows_role_metadata_change (line 107) | def test_shows_role_metadata_change(self): class TestPermissionEvents (line 116) | class TestPermissionEvents(BaseRoleHistoryTest): method test_permission_granted (line 118) | def test_permission_granted(self): method test_permission_granted_with_items (line 128) | def test_permission_granted_with_items(self): method test_permission_revoked (line 138) | def test_permission_revoked(self): method test_permission_changed (line 148) | def test_permission_changed(self): class TestAssignableByEvents (line 163) | class TestAssignableByEvents(BaseRoleHistoryTest): method test_assignable_by_added (line 165) | def test_assignable_by_added(self): method test_assignable_by_removed (line 173) | def test_assignable_by_removed(self): class TestNoEvents (line 182) | class TestNoEvents(BaseRoleHistoryTest): method test_no_events (line 184) | def test_no_events(self): class TestChronologicalOrder (line 193) | class TestChronologicalOrder(BaseRoleHistoryTest): method test_events_in_chronological_order (line 195) | def test_events_in_chronological_order(self): FILE: corehq/apps/users/tests/test_role_utils.py class RoleUtilsTests (line 25) | class RoleUtilsTests(TestCase): method setUpTestData (line 29) | def setUpTestData(cls): method tearDownClass (line 34) | def tearDownClass(cls): method test_init_domain_with_presets (line 39) | def test_init_domain_with_presets(self): method test_reset_initial_roles_for_domain (line 48) | def test_reset_initial_roles_for_domain(self): method create_commcare_user_default_role (line 61) | def create_commcare_user_default_role(self): method test_archive_custom_roles_for_domain (line 71) | def test_archive_custom_roles_for_domain(self): method test_unarchive_roles_for_domain (line 88) | def test_unarchive_roles_for_domain(self): method test_get_custom_roles_for_domain (line 104) | def test_get_custom_roles_for_domain(self): method _delete_presets (line 110) | def _delete_presets(self): class TestCommcareAnalyticsRolesByUser (line 116) | class TestCommcareAnalyticsRolesByUser(TestCase): method setUpClass (line 123) | def setUpClass(cls): method tearDownClass (line 137) | def tearDownClass(cls): method test_admin_user (line 145) | def test_admin_user(self): method test_non_admin_user (line 153) | def test_non_admin_user(self): method test_user_has_limited_roles (line 162) | def test_user_has_limited_roles(self): method test_user_has_all_roles (line 169) | def test_user_has_all_roles(self): method _create_role (line 177) | def _create_role(cls, role_name, analytics_roles=None, all_roles=False): FILE: corehq/apps/users/tests/test_signals.py class TestUserSignals (line 34) | class TestUserSignals(SimpleTestCase): method test_commcareuser_save (line 40) | def test_commcareuser_save(self, send_to_es, invalidate, sync_usercases, method test_webuser_save (line 53) | def test_webuser_save(self, send_to_es, invalidate, sync_usercases, class TestUserSyncToEs (line 70) | class TestUserSyncToEs(SimpleTestCase): method test_sync_to_es_create_update_delete (line 73) | def test_sync_to_es_create_update_delete(self, *mocks): method check_user (line 98) | def check_user(self, user): class TestElasticSyncPatch (line 117) | class TestElasticSyncPatch(SimpleTestCase): class MockUser (line 119) | class MockUser: method to_be_deleted (line 122) | def to_be_deleted(self): method to_json (line 125) | def to_json(self): method test_user_sync_is_disabled_by_default_during_unittests (line 128) | def test_user_sync_is_disabled_by_default_during_unittests(self): method test_user_sync_is_enabled_with_decorator (line 135) | def test_user_sync_is_enabled_with_decorator(self): FILE: corehq/apps/users/tests/test_tasks.py class TasksTest (line 41) | class TasksTest(TestCase): method setUpClass (line 44) | def setUpClass(cls): method _last_accessed (line 68) | def _last_accessed(self, user, domain): method test_update_domain_date_web_user (line 74) | def test_update_domain_date_web_user(self): method test_update_domain_date_web_user_mirror (line 80) | def test_update_domain_date_web_user_mirror(self): class TestLoadtestUserIsDemoUser (line 89) | class TestLoadtestUserIsDemoUser(TestCase): method test_set_loadtest_factor_on_demo_user (line 91) | def test_set_loadtest_factor_on_demo_user(self): method test_set_loadtest_factor_on_non_demo_user (line 99) | def test_set_loadtest_factor_on_non_demo_user(self): method test_unset_loadtest_factor_on_demo_user (line 107) | def test_unset_loadtest_factor_on_demo_user(self): method test_unset_loadtest_factor_on_non_demo_user (line 116) | def test_unset_loadtest_factor_on_non_demo_user(self): function _get_user (line 127) | def _get_user(loadtest_factor, is_demo_user): class TestRemoveUsersTestCases (line 148) | class TestRemoveUsersTestCases(TestCase): method setUpClass (line 153) | def setUpClass(cls): method tearDownClass (line 158) | def tearDownClass(cls): method test_only_copied_cases_gets_removed (line 162) | def test_only_copied_cases_gets_removed(self): method _send_case_to_es (line 171) | def _send_case_to_es( class TestProcessReportingMetadataStaging (line 196) | class TestProcessReportingMetadataStaging(TestCase): method test_record_is_deleted_if_processed_successfully (line 198) | def test_record_is_deleted_if_processed_successfully(self, mock_proces... method test_record_is_not_deleted_if_not_processed_successfully (line 207) | def test_record_is_not_deleted_if_not_processed_successfully(self, moc... method test_process_record_is_retried_successfully_after_resource_conflict_raised (line 217) | def test_process_record_is_retried_successfully_after_resource_conflic... method test_process_record_raises_resource_conflict_after_three_tries (line 228) | def test_process_record_raises_resource_conflict_after_three_tries(sel... method test_subsequent_records_are_not_processed_if_exception_raised (line 239) | def test_subsequent_records_are_not_processed_if_exception_raised(self... method setUp (line 250) | def setUp(self): class TestProcessReportingMetadataStagingTransaction (line 257) | class TestProcessReportingMetadataStagingTransaction(TestCase): method test_subsequent_records_are_processed_if_record_is_locked (line 268) | def test_subsequent_records_are_processed_if_record_is_locked(self, mo... method setUpClass (line 277) | def setUpClass(cls): method tearDownClass (line 287) | def tearDownClass(cls): class TestProcessMobileWorkerCredentials (line 299) | class TestProcessMobileWorkerCredentials(TestCase): method setUpClass (line 303) | def setUpClass(cls): method tearDownClass (line 347) | def tearDownClass(cls): method _create_malt_rows (line 356) | def _create_malt_rows(self, months, user, app, offset=0): method _create_user_credential (line 368) | def _create_user_credential(self, user, app, activity_level): method test_process_credentials (line 377) | def test_process_credentials(self, mock_post, mock_status_raise): method test_process_multiple_credentials (line 387) | def test_process_multiple_credentials(self, mock_post, mock_status_rai... method test_no_credentials (line 393) | def test_no_credentials(self, mock_post, mock_status_raise): method test_no_consecutive_activity (line 398) | def test_no_consecutive_activity(self, mock_post, mock_status_raise): method test_credentials_already_exist (line 404) | def test_credentials_already_exist(self, mock_post, mock_status_raise): FILE: corehq/apps/users/tests/test_user_data.py class TestUserData (line 22) | class TestUserData(TestCase): method setUpTestData (line 26) | def setUpTestData(cls): method make_commcare_user (line 29) | def make_commcare_user(self): method make_web_user (line 34) | def make_web_user(self): method test_user_data_accessor (line 39) | def test_user_data_accessor(self): method test_web_users (line 54) | def test_web_users(self): method test_prime_user_data_caches (line 72) | def test_prime_user_data_caches(self): method test_prime_user_data_caches_avoids_multiple_schema_lookups (line 95) | def test_prime_user_data_caches_avoids_multiple_schema_lookups(self): method test_profile (line 110) | def test_profile(self): method test_remove_unused_custom_fields_from_users_task (line 126) | def test_remove_unused_custom_fields_from_users_task(self): function _get_profile (line 141) | def _get_profile(self, profile_id): class TestUserDataModel (line 158) | class TestUserDataModel(TestCase): method setUpClass (line 160) | def setUpClass(cls): method setUp (line 170) | def setUp(self): method init_user_data (line 181) | def init_user_data(self, raw_user_data=None, profile_id=None, domain=N... method test_defaults_unspecified_schema_properties_to_empty (line 191) | def test_defaults_unspecified_schema_properties_to_empty(self): method test_specified_user_data_overrides_schema_defaults (line 197) | def test_specified_user_data_overrides_schema_defaults(self): method test_add_and_remove_profile (line 203) | def test_add_and_remove_profile(self): method test_profile_conflicts_with_data (line 225) | def test_profile_conflicts_with_data(self): method test_profile_conflicts_with_blank_existing_data (line 230) | def test_profile_conflicts_with_blank_existing_data(self): method test_avoid_conflict_by_blanking_out (line 235) | def test_avoid_conflict_by_blanking_out(self): method test_data_conflicts_with_profile (line 242) | def test_data_conflicts_with_profile(self): method test_profile_and_data_conflict (line 247) | def test_profile_and_data_conflict(self): method test_update_shows_changed (line 254) | def test_update_shows_changed(self): method test_update_order_irrelevant (line 261) | def test_update_order_irrelevant(self): method test_ignore_noop_conflicts_with_profile (line 267) | def test_ignore_noop_conflicts_with_profile(self): method test_remove_profile (line 272) | def test_remove_profile(self): method test_remove_profile_and_clear (line 278) | def test_remove_profile_and_clear(self): method test_delitem (line 285) | def test_delitem(self): method test_popitem (line 290) | def test_popitem(self): method test_remove_unrecognized (line 300) | def test_remove_unrecognized(self): method test_remove_unrecognized_empty_field (line 311) | def test_remove_unrecognized_empty_field(self): method test_no_location_info_in_user_data_when_no_location_assigned (line 321) | def test_no_location_info_in_user_data_when_no_location_assigned(self): class TestUserDataLifecycle (line 329) | class TestUserDataLifecycle(TestCase): method setUpClass (line 331) | def setUpClass(cls): method _create_user_data (line 336) | def _create_user_data(self, user, domain, raw_user_data, commit=True): method _create_web_user (line 345) | def _create_web_user(self, username): method test_user_data_is_soft_deleted_when_domain_membership_is_deleted (line 350) | def test_user_data_is_soft_deleted_when_domain_membership_is_deleted(s... method test_user_data_is_undeleted_when_domain_membership_is_restored (line 367) | def test_user_data_is_undeleted_when_domain_membership_is_restored(self): method test_user_data_for_another_domain_is_not_deleted (line 384) | def test_user_data_for_another_domain_is_not_deleted(self): method test_soft_deleted_user_data_is_removed_before_readding_to_domain (line 401) | def test_soft_deleted_user_data_is_removed_before_readding_to_domain(s... FILE: corehq/apps/users/tests/test_user_invitation.py class InvitationTestException (line 20) | class InvitationTestException(Exception): class StubbedAcceptedWebUserInvitationForm (line 24) | class StubbedAcceptedWebUserInvitationForm(AcceptedWebUserInvitationForm): method __init__ (line 26) | def __init__(self, *args, **kwargs): method cleaned_data (line 31) | def cleaned_data(self): class TestUserInvitation (line 35) | class TestUserInvitation(TestCase): method setUpTestData (line 38) | def setUpTestData(cls): method tearDownClass (line 48) | def tearDownClass(cls): method tearDown (line 53) | def tearDown(cls): method test_redirect_if_invite_does_not_exist (line 57) | def test_redirect_if_invite_does_not_exist(self): method test_redirect_if_invite_is_already_accepted (line 65) | def test_redirect_if_invite_is_already_accepted(self): method test_redirect_if_invite_email_does_not_match (line 82) | def test_redirect_if_invite_email_does_not_match(self): method _setup_invitation_and_request (line 131) | def _setup_invitation_and_request(self): method test_successful_accept_invite_and_user_created (line 155) | def test_successful_accept_invite_and_user_created(self, mock_messages... method test_atomic_user_invite (line 167) | def test_atomic_user_invite(self, accept_invitation_mock, mock_message... method test_invitation_save_logging (line 176) | def test_invitation_save_logging(self): method test_invitation_delete (line 184) | def test_invitation_delete(self): FILE: corehq/apps/users/tests/test_user_model.py class UserModelTest (line 22) | class UserModelTest(TestCase): method setUp (line 24) | def setUp(self): method tearDown (line 42) | def tearDown(self): method create_user (line 48) | def create_user(self, username, is_web_user=True): method test_get_form_ids (line 58) | def test_get_form_ids(self): method test_last_modified (line 63) | def test_last_modified(self): method test_last_modified_bulk (line 70) | def test_last_modified_bulk(self): method test_commcare_user_lockout_limits (line 81) | def test_commcare_user_lockout_limits(self): method test_web_user_lockout_limits (line 92) | def test_web_user_lockout_limits(self): method test_commcare_user_with_no_lockouts_is_not_locked_out (line 103) | def test_commcare_user_with_no_lockouts_is_not_locked_out(self): class UserDeviceTest (line 113) | class UserDeviceTest(SimpleTestCase): method test_add_single_device (line 115) | def test_add_single_device(self): method test_add_second_device (line 126) | def test_add_second_device(self): method test_update_existing_devices (line 140) | def test_update_existing_devices(self): method test_only_update_once_per_day (line 157) | def test_only_update_once_per_day(self): method test_update_app_metadata (line 167) | def test_update_app_metadata(self): class BaseCommCareUserTestSetup (line 182) | class BaseCommCareUserTestSetup(TestCase): method setUpClass (line 185) | def setUpClass(cls, domain): method _create_user (line 195) | def _create_user(self, username, role_id=None, include_domain_membersh... class TestCommCareUserRoles (line 212) | class TestCommCareUserRoles(BaseCommCareUserTestSetup): method setUpClass (line 216) | def setUpClass(cls): method test_create_user_without_role (line 219) | def test_create_user_without_role(self): method test_create_user_with_role (line 225) | def test_create_user_with_role(self): method test_set_role (line 229) | def test_set_role(self): method test_update_role (line 242) | def test_update_role(self): method test_role_deleted (line 255) | def test_role_deleted(self): method check_role (line 265) | def check_role(self, user, expected, domain=None): class TestWebUserRoles (line 271) | class TestWebUserRoles(TestCommCareUserRoles): method setUpClass (line 275) | def setUpClass(cls): method test_create_user_without_role (line 281) | def test_create_user_without_role(self): method test_roles_multiple_domains (line 287) | def test_roles_multiple_domains(self): class TestWebUserTableauIntegration (line 296) | class TestWebUserTableauIntegration(BaseCommCareUserTestSetup): method setUpClass (line 300) | def setUpClass(cls): method test_add_as_web_user_with_tableau_params (line 307) | def test_add_as_web_user_with_tableau_params(self, mock_get_tableau_gr... FILE: corehq/apps/users/tests/test_user_role.py class RolesTests (line 14) | class RolesTests(TestCase): method setUpTestData (line 18) | def setUpTestData(cls): method test_set_assignable_by (line 43) | def test_set_assignable_by(self): method test_set_assignable_by_clear_prefetched_cache (line 72) | def test_set_assignable_by_clear_prefetched_cache(self): method test_set_assignable_by_couch (line 97) | def test_set_assignable_by_couch(self): method test_set_permissions (line 116) | def test_set_permissions(self): method test_set_permissions_clear_prefetch_cache (line 152) | def test_set_permissions_clear_prefetch_cache(self): method test_by_couch_id (line 171) | def test_by_couch_id(self): method test_create_atomic (line 181) | def test_create_atomic(self): class TestRolePermissionsModel (line 193) | class TestRolePermissionsModel(TestCase): method setUp (line 196) | def setUp(self): method _test_allow_check_constraint (line 201) | def _test_allow_check_constraint(self, name, allow_all, allowed_items): method test_allow_check_constraint_allow_all_params_none (line 206) | def test_allow_check_constraint_allow_all_params_none(self): method test_allow_check_constraint_allow_all_params_empty (line 209) | def test_allow_check_constraint_allow_all_params_empty(self): method test_allow_check_constraint_params_list (line 212) | def test_allow_check_constraint_params_list(self): method test_allow_check_constraint_fail (line 216) | def test_allow_check_constraint_fail(self): method test_unique_constraint_ok (line 223) | def test_unique_constraint_ok(self): method test_unique_constraint_fail (line 238) | def test_unique_constraint_fail(self): class TestStaticRoles (line 252) | class TestStaticRoles(SimpleTestCase): method test_static_role_default (line 267) | def test_static_role_default(self): method test_static_role_admin (line 273) | def test_static_role_admin(self): FILE: corehq/apps/users/tests/test_username_validation.py class TestMobileUsernameValidation (line 13) | class TestMobileUsernameValidation(TestCase): method setUpClass (line 16) | def setUpClass(cls): method test_no_exception_rasied_if_valid_username (line 25) | def test_no_exception_rasied_if_valid_username(self): method test_exception_raised_if_username_is_none (line 28) | def test_exception_raised_if_username_is_none(self): method test_exception_raised_if_username_is_empty (line 34) | def test_exception_raised_if_username_is_empty(self): method test_exception_raised_if_invalid_username (line 40) | def test_exception_raised_if_invalid_username(self): method test_exception_raised_if_username_is_reserved (line 45) | def test_exception_raised_if_username_is_reserved(self): method test_exception_raised_if_username_is_actively_in_use (line 52) | def test_exception_raised_if_username_is_actively_in_use(self): method test_exception_raised_if_username_was_previously_used (line 59) | def test_exception_raised_if_username_was_previously_used(self): class TestValidateCompleteUsername (line 72) | class TestValidateCompleteUsername(SimpleTestCase): method test_no_exception_raised_if_valid_email (line 74) | def test_no_exception_raised_if_valid_email(self): method test_exception_raised_if_invalid_email (line 80) | def test_exception_raised_if_invalid_email(self): method test_exception_raised_if_invalid_username (line 87) | def test_exception_raised_if_invalid_username(self): method test_exception_raised_if_incorrect_email_domain (line 96) | def test_exception_raised_if_incorrect_email_domain(self): method test_exception_raised_if_incorrect_account_root (line 104) | def test_exception_raised_if_incorrect_account_root(self): FILE: corehq/apps/users/tests/test_util.py class TestUsernameToUserID (line 30) | class TestUsernameToUserID(TestCase): method setUpClass (line 33) | def setUpClass(cls): method tearDownClass (line 40) | def tearDownClass(cls): method test_username_to_user_id (line 45) | def test_username_to_user_id(self): method test_username_to_user_id_wrong_username (line 49) | def test_username_to_user_id_wrong_username(self): class TestUserIdToUsernameToUserName (line 54) | class TestUserIdToUsernameToUserName(TestCase): method setUpClass (line 56) | def setUpClass(cls): method tearDownClass (line 75) | def tearDownClass(cls): method test_user_id_to_username_no_names (line 81) | def test_user_id_to_username_no_names(self): method test_user_id_to_username_with_names (line 85) | def test_user_id_to_username_with_names(self): method test_cached_user_id_to_user_display (line 95) | def test_cached_user_id_to_user_display(self): class TestUserDisplayString (line 109) | class TestUserDisplayString(SimpleTestCase): method test_all_names (line 110) | def test_all_names(self): method test_only_username (line 114) | def test_only_username(self): method test_is_escaped (line 118) | def test_is_escaped(self): method test_is_safe (line 122) | def test_is_safe(self): method test_handles_none_names (line 127) | def test_handles_none_names(self): class TestBulkAutoDeactivateCommCareUser (line 132) | class TestBulkAutoDeactivateCommCareUser(TestCase): method setUpClass (line 135) | def setUpClass(cls): method tearDown (line 158) | def tearDown(self): method tearDownClass (line 163) | def tearDownClass(cls): method test_user_is_deactivated_and_logged (line 169) | def test_user_is_deactivated_and_logged(self): method test_user_is_not_deactivated_and_no_logs (line 191) | def test_user_is_not_deactivated_and_no_logs(self): class TestGenerateMobileUsername (line 200) | class TestGenerateMobileUsername(TestCase): method setUpClass (line 203) | def setUpClass(cls): method test_successfully_generated_username (line 212) | def test_successfully_generated_username(self): method test_exception_raised_if_username_validation_fails (line 220) | def test_exception_raised_if_username_validation_fails(self): class TestIsUsernameAvailable (line 225) | class TestIsUsernameAvailable(TestCase): method setUpClass (line 228) | def setUpClass(cls): method test_returns_true_if_available (line 238) | def test_returns_true_if_available(self): method test_returns_false_if_actively_in_use (line 241) | def test_returns_false_if_actively_in_use(self): method test_returns_false_if_previously_used (line 244) | def test_returns_false_if_previously_used(self): method test_returns_false_if_reserved_username (line 252) | def test_returns_false_if_reserved_username(self): class TestGetCompleteMobileUsername (line 257) | class TestGetCompleteMobileUsername(SimpleTestCase): method test_returns_unchanged_username_if_already_complete (line 259) | def test_returns_unchanged_username_if_already_complete(self): method test_returns_complete_username_if_incomplete (line 263) | def test_returns_complete_username_if_incomplete(self): class TestGetLocationsWithOrphanedCases (line 268) | class TestGetLocationsWithOrphanedCases(TestCase): method setUpClass (line 271) | def setUpClass(cls): method tearDownClass (line 308) | def tearDownClass(cls): method test_no_locations (line 320) | def test_no_locations(self, _): method test_with_locations (line 332) | def test_with_locations(self, _, __): method test_get_user_location_info (line 344) | def test_get_user_location_info(self, _, __): FILE: corehq/apps/users/tests/test_views.py function get_default_available_permissions (line 48) | def get_default_available_permissions(**kwargs): class TestMobileWorkerListView (line 54) | class TestMobileWorkerListView(TestCase): method setUp (line 59) | def setUp(self): method tearDown (line 70) | def tearDown(self): method _remote_invoke (line 75) | def _remote_invoke(self, route, data): method test_create_mobile_worker (line 85) | def test_create_mobile_worker(self): function test_check_usernames_for_invalid_characters (line 118) | def test_check_usernames_for_invalid_characters(self, username, error): class TestUpdateRoleFromView (line 126) | class TestUpdateRoleFromView(TestCase): method setUpTestData (line 141) | def setUpTestData(cls): method tearDownClass (line 149) | def tearDownClass(cls): method tearDown (line 153) | def tearDown(self): method test_create_role (line 158) | def test_create_role(self): method test_create_role_duplicate_name (line 169) | def test_create_role_duplicate_name(self): method test_update_role (line 175) | def test_update_role(self): method test_update_role_for_manage_domain_alerts (line 190) | def test_update_role_for_manage_domain_alerts(self): method test_landing_page_validation (line 206) | def test_landing_page_validation(self): class TestDeleteRole (line 213) | class TestDeleteRole(TestCase): method test_delete_role (line 216) | def test_delete_role(self): method test_delete_role_not_exist (line 221) | def test_delete_role_not_exist(self): method test_delete_role_with_users (line 225) | def test_delete_role_with_users(self): method test_delete_commcare_user_default_role (line 231) | def test_delete_commcare_user_default_role(self): method test_delete_role_wrong_domain (line 236) | def test_delete_role_wrong_domain(self): method setUp (line 241) | def setUp(self): class TestDeletePhoneNumberView (line 247) | class TestDeletePhoneNumberView(TestCase): method setUpClass (line 251) | def setUpClass(cls): method tearDownClass (line 263) | def tearDownClass(cls): method setUp (line 269) | def setUp(self): method test_no_phone_number (line 272) | def test_no_phone_number(self): method test_delete_phone_number (line 279) | def test_delete_phone_number(self): class TestCountWebUsers (line 297) | class TestCountWebUsers(TestCase): method setUpClass (line 302) | def setUpClass(cls): method tearDownClass (line 344) | def tearDownClass(cls): method test_admin_user_sees_all_web_users (line 353) | def test_admin_user_sees_all_web_users(self, _): method test_admin_location_user_sees_all_web_users (line 361) | def test_admin_location_user_sees_all_web_users(self, _): class BulkUserUploadAPITest (line 370) | class BulkUserUploadAPITest(TestCase): method setUpClass (line 372) | def setUpClass(cls): method setUp (line 382) | def setUp(self): method _create_valid_workbook (line 387) | def _create_valid_workbook(): method _make_post_request (line 400) | def _make_post_request(self, file): method test_success (line 408) | def test_success(self): method test_api_no_authentication (line 416) | def test_api_no_authentication(self): method test_api_invalid_authentication (line 421) | def test_api_invalid_authentication(self): method test_no_file_uploaded (line 429) | def test_no_file_uploaded(self): method test_invalid_file_format (line 439) | def test_invalid_file_format(self, mock_get_workbook): method test_invalid_workbook_headers (line 448) | def test_invalid_workbook_headers(self): method test_tableau_role_and_groups_headers (line 469) | def test_tableau_role_and_groups_headers(self): method test_user_upload_error (line 515) | def test_user_upload_error(self, mock_upload_users): method test_exception (line 526) | def test_exception(self, mock_upload_users, mock_notify_exception): method test_cant_upload_multiple_files (line 536) | def test_cant_upload_multiple_files(self): class BaseUploadUserTest (line 554) | class BaseUploadUserTest(TestCase): method setUp (line 562) | def setUp(self): method test_post_success (line 576) | def test_post_success(self, mock_get_workbook, mock_process_workbook, ... class TestCommCareUserPasswordResetView (line 595) | class TestCommCareUserPasswordResetView(TestCase): method setUpClass (line 599) | def setUpClass(cls): method _create_request (line 615) | def _create_request(self, data=None): method _mock_commcare_user (line 620) | def _mock_commcare_user(self, is_active=True, has_usable_password=True): method test_inactive_user_fails (line 634) | def test_inactive_user_fails(self, mock_messages, mock_reverse, mock_g... method test_user_with_unusable_password_fails (line 657) | def test_user_with_unusable_password_fails(self, mock_messages, mock_r... method test_form_is_valid (line 682) | def test_form_is_valid(self, mock_messages, mock_reverse, mock_form_cl... FILE: corehq/apps/users/tests/test_web_user_download.py class TestDownloadWebUsers (line 18) | class TestDownloadWebUsers(TestCase): method setUpClass (line 21) | def setUpClass(cls): method tearDownClass (line 102) | def tearDownClass(cls): method test_download (line 115) | def test_download(self): method test_search_string (line 138) | def test_search_string(self): method test_multi_domain_download (line 146) | def test_multi_domain_download(self): method _setup_tableau_users (line 163) | def _setup_tableau_users(self): method test_tableau_user_download (line 177) | def test_tableau_user_download(self, mock_request): FILE: corehq/apps/users/tests/update.py class UpdateTestCase (line 9) | class UpdateTestCase(TestCase): method setUp (line 11) | def setUp(self): method testAddRemovePhoneNumbers (line 21) | def testAddRemovePhoneNumbers(self): FILE: corehq/apps/users/tests/util.py function create_usercase (line 7) | def create_usercase(user): function _dummy_for_user (line 23) | def _dummy_for_user(user, domain): FILE: corehq/apps/users/user_data.py class UserDataError (line 16) | class UserDataError(Exception): class UserData (line 20) | class UserData: method __init__ (line 21) | def __init__(self, raw_user_data, couch_user, domain, profile_id=None): method for_user (line 28) | def for_user(cls, couch_user, domain): method save (line 40) | def save(self): method _provided_by_system (line 61) | def _provided_by_system(self): method to_dict (line 67) | def to_dict(self): method _schema_fields (line 75) | def _schema_fields(self): method raw (line 79) | def raw(self): method __repr__ (line 83) | def __repr__(self): method profile_id (line 87) | def profile_id(self): method profile_id (line 91) | def profile_id(self, profile_id): method profile (line 106) | def profile(self): method _get_profile (line 110) | def _get_profile(self, profile_id): method remove_unrecognized (line 123) | def remove_unrecognized(self): method items (line 126) | def items(self): method __iter__ (line 129) | def __iter__(self): method __getitem__ (line 132) | def __getitem__(self, key): method __contains__ (line 135) | def __contains__(self, item): method get (line 138) | def get(self, key, default=None): method __setitem__ (line 141) | def __setitem__(self, key, value): method update (line 148) | def update(self, data, profile_id=...): method __delitem__ (line 166) | def __delitem__(self, key): method pop (line 171) | def pop(self, key, default=...): function _remove_unrecognized (line 185) | def _remove_unrecognized(local_data, schema_fields): class SQLUserDataManager (line 194) | class SQLUserDataManager(models.Manager): method get_queryset (line 196) | def get_queryset(self): class SQLUserData (line 203) | class SQLUserData(models.Model): class Meta (line 217) | class Meta: method remove_unrecognized (line 221) | def remove_unrecognized(self, schema_fields): function get_all_profiles_by_id (line 225) | def get_all_profiles_by_id(domain): function _get_schema_fields (line 233) | def _get_schema_fields(domain): function prime_user_data_caches (line 244) | def prime_user_data_caches(users, domain): FILE: corehq/apps/users/util.py function generate_mobile_username (line 47) | def generate_mobile_username(username, domain, is_unique=True): function get_complete_username (line 64) | def get_complete_username(username, domain): function cc_user_domain (line 77) | def cc_user_domain(domain): function format_username (line 82) | def format_username(username, domain): function normalize_username (line 87) | def normalize_username(username, domain=None): function raw_username (line 113) | def raw_username(username): function username_to_user_id (line 131) | def username_to_user_id(username): function user_id_to_username (line 148) | def user_id_to_username(user_id, use_name_if_available=False): function cached_user_id_to_username (line 168) | def cached_user_id_to_username(user_id): function cached_user_id_to_user_display (line 183) | def cached_user_id_to_user_display(user_id): function cached_owner_id_to_display (line 187) | def cached_owner_id_to_display(owner_id): function doc_value_wrapper (line 203) | def doc_value_wrapper(doc_cls, value_cls): function can_add_extra_mobile_workers (line 227) | def can_add_extra_mobile_workers(request): function user_display_string (line 236) | def user_display_string(username, first_name='', last_name=''): function user_location_data (line 246) | def user_location_data(location_ids): function update_device_meta (line 251) | def update_device_meta(user, device_id, commcare_version=None, device_ap... function _last_build_needs_update (line 268) | def _last_build_needs_update(last_build, build_date): function update_latest_builds (line 276) | def update_latest_builds(user, app_id, date, version, build_profile_id=N... function filter_by_app (line 302) | def filter_by_app(obj_list, app_id): function update_last_sync (line 312) | def update_last_sync(user, app_id, sync_date, version): function _last_sync_needs_update (line 334) | def _last_sync_needs_update(last_sync, sync_datetime): function log_user_change (line 342) | def log_user_change(by_domain, for_domain, couch_user, changed_by_user, ... function log_invitation_change (line 405) | def log_invitation_change(domain, changed_by, changed_via, action, invit... function _get_changed_details (line 438) | def _get_changed_details(couch_user, action, fields_changed, for_domain): function bulk_auto_deactivate_commcare_users (line 452) | def bulk_auto_deactivate_commcare_users(user_ids, domain): function is_dimagi_email (line 511) | def is_dimagi_email(email): function is_username_available (line 515) | def is_username_available(username): function verify_modify_user_conditions (line 535) | def verify_modify_user_conditions(request, user, is_active) -> None: FILE: corehq/apps/users/validation.py function validate_mobile_username (line 13) | def validate_mobile_username(username, domain, is_unique=True): function _validate_complete_username (line 29) | def _validate_complete_username(username, domain): function validate_profile_required (line 52) | def validate_profile_required(profile_name, domain): function validate_assigned_locations_allow_users (line 66) | def validate_assigned_locations_allow_users(domain, assigned_location_ids): function validate_primary_location_assignment (line 79) | def validate_primary_location_assignment(primary_location, assigned_loca... FILE: corehq/apps/users/views/__init__.py function _users_context (line 130) | def _users_context(request, domain): class BaseUserSettingsView (line 144) | class BaseUserSettingsView(BaseDomainView): method section_url (line 149) | def section_url(self): method couch_user (line 154) | def couch_user(self): method main_context (line 161) | def main_context(self): class DefaultProjectUserSettingsView (line 171) | class DefaultProjectUserSettingsView(BaseUserSettingsView): method redirect (line 176) | def redirect(self): method get (line 225) | def get(self, request, *args, **kwargs): class BaseEditUserView (line 231) | class BaseEditUserView(BaseUserSettingsView): method page_url (line 235) | def page_url(self): method parent_pages (line 240) | def parent_pages(self): method editable_user_id (line 247) | def editable_user_id(self): method editable_user (line 252) | def editable_user(self): method existing_role (line 259) | def existing_role(self): method editable_role_choices (line 274) | def editable_role_choices(self): method can_change_user_roles (line 278) | def can_change_user_roles(self): method form_user_update (line 289) | def form_user_update(self): method main_context (line 293) | def main_context(self): method commtrack_form (line 304) | def commtrack_form(self): method update_user (line 319) | def update_user(self): method tableau_form (line 325) | def tableau_form(self): method post (line 354) | def post(self, request, *args, **kwargs): method dispatch (line 373) | def dispatch(self, *args, **kwargs): class EditWebUserView (line 380) | class EditWebUserView(BaseEditUserView): method page_name (line 386) | def page_name(self): method form_user_update (line 393) | def form_user_update(self): method user_role_choices (line 416) | def user_role_choices(self): method can_grant_superuser_access (line 426) | def can_grant_superuser_access(self): method page_context (line 430) | def page_context(self): method dispatch (line 482) | def dispatch(self, request, *args, **kwargs): method get (line 485) | def get(self, request, *args, **kwargs): method post (line 488) | def post(self, request, *args, **kwargs): function get_domain_languages (line 513) | def get_domain_languages(domain, default_to_all_langs=False): class BaseRoleAccessView (line 536) | class BaseRoleAccessView(BaseUserSettingsView): method can_restrict_access_by_location (line 540) | def can_restrict_access_by_location(self): class ListWebUsersView (line 548) | class ListWebUsersView(BaseRoleAccessView): method role_labels (line 555) | def role_labels(self): method invitations (line 563) | def invitations(self): method page_context (line 581) | def page_context(self): function download_web_users (line 599) | def download_web_users(request, domain): class DownloadWebUsersStatusView (line 605) | class DownloadWebUsersStatusView(BaseUserSettingsView): method dispatch (line 610) | def dispatch(self, request, *args, **kwargs): method parent_pages (line 614) | def parent_pages(self): method get (line 620) | def get(self, request, *args, **kwargs): method page_url (line 634) | def page_url(self): function _commcare_analytics_roles_options (line 638) | def _commcare_analytics_roles_options(): function paginate_enterprise_users (line 654) | def paginate_enterprise_users(request, domain): function _format_enterprise_user (line 698) | def _format_enterprise_user(domain, user): function paginate_web_users (line 713) | def paginate_web_users(request, domain): function _get_web_users (line 760) | def _get_web_users(request, domains, filter_by_accessible_locations=False): function remove_web_user (line 800) | def remove_web_user(request, domain, couch_user_id): function undo_remove_web_user (line 830) | def undo_remove_web_user(request, domain, record_id): function deactivate_web_user (line 845) | def deactivate_web_user(request, domain, couch_user_id): function reactivate_web_user (line 859) | def reactivate_web_user(request, domain, couch_user_id): function delete_request (line 872) | def delete_request(request, domain): function check_sso_trust (line 881) | def check_sso_trust(request, domain): class BaseManageWebUserView (line 898) | class BaseManageWebUserView(BaseUserSettingsView): method parent_pages (line 901) | def parent_pages(self): class InviteWebUserView (line 910) | class InviteWebUserView(BaseManageWebUserView): method invite_web_user_form (line 917) | def invite_web_user_form(self): method custom_data (line 962) | def custom_data(self): method request_id (line 983) | def request_id(self): method page_context (line 989) | def page_context(self): method _assert_user_has_permission_to_access_locations (line 1005) | def _assert_user_has_permission_to_access_locations(self, assigned_loc... method invitation (line 1011) | def invitation(self): method post (line 1018) | def post(self, request, *args, **kwargs): method _get_sql_locations (line 1101) | def _get_sql_locations(self, primary_location_id, assigned_location_ids): method _get_and_set_changes (line 1111) | def _get_and_set_changes(self, invite, form_data, profile): method format_changes (line 1146) | def format_changes(domain, changed_values): class BaseUploadUser (line 1174) | class BaseUploadUser(BaseUserSettingsView): method post (line 1175) | def post(self, request, *args, **kwargs): method process_workbook (line 1198) | def process_workbook(workbook, domain, is_web_upload, upload_user): method upload_users (line 1219) | def upload_users(request, user_specs, group_specs, domain, is_web_uplo... method _get_success_response (line 1251) | def _get_success_response(self, request, task_ref): class UploadWebUsers (line 1270) | class UploadWebUsers(BaseUploadUser): method dispatch (line 1279) | def dispatch(self, request, *args, **kwargs): method page_context (line 1283) | def page_context(self): class WebUserUploadStatusView (line 1292) | class WebUserUploadStatusView(BaseManageWebUserView): method get (line 1296) | def get(self, request, *args, **kwargs): method page_url (line 1310) | def page_url(self): class UserUploadJobPollView (line 1314) | class UserUploadJobPollView(BaseUserSettingsView): method get (line 1316) | def get(self, request, domain, download_id): class WebUserUploadJobPollView (line 1334) | class WebUserUploadJobPollView(UserUploadJobPollView, BaseManageWebUserV... function make_phone_number_default (line 1343) | def make_phone_number_default(request, domain, couch_user_id): function delete_phone_number (line 1361) | def delete_phone_number(request, domain, couch_user_id): function verify_phone_number (line 1386) | def verify_phone_number(request, domain, couch_user_id): function domain_accounts (line 1418) | def domain_accounts(request, domain, couch_user_id, template="users/doma... function add_domain_membership (line 1433) | def add_domain_membership(request, domain, couch_user_id, domain_name): function change_password (line 1445) | def change_password(request, domain, login_id): function test_httpdigest (line 1486) | def test_httpdigest(request, domain): function register_fcm_device_token (line 1494) | def register_fcm_device_token(request, domain, couch_user_id, device_tok... FILE: corehq/apps/users/views/mobile/custom_data_fields.py class UserFieldsView (line 15) | class UserFieldsView(CustomDataModelMixin, BaseUserSettingsView): method dispatch (line 64) | def dispatch(self, request, *args, **kwargs): method update_existing_models (line 67) | def update_existing_models(self): method get_user_accessible_profiles (line 71) | def get_user_accessible_profiles(cls, domain, couch_user): method get_displayable_profiles_and_edit_permission (line 82) | def get_displayable_profiles_and_edit_permission(cls, original_profile... method get_field_page_context (line 99) | def get_field_page_context(cls, domain, couch_user, custom_data_editor... method is_field_required (line 119) | def is_field_required(cls, field): class WebUserFieldsView (line 125) | class WebUserFieldsView(UserFieldsView): class CommcareUserFieldsView (line 129) | class CommcareUserFieldsView(UserFieldsView): FILE: corehq/apps/users/views/mobile/groups.py class GroupNotFoundException (line 41) | class GroupNotFoundException(Exception): function _get_sorted_groups (line 45) | def _get_sorted_groups(domain): function get_group_or_404 (line 52) | def get_group_or_404(domain, group_id): class BulkSMSVerificationView (line 62) | class BulkSMSVerificationView(BaseDomainView): method dispatch (line 67) | def dispatch(self, *args, **kwargs): method initiate_verification (line 70) | def initiate_verification(self, request, group): method get (line 116) | def get(self, request, *args, **kwargs): method post (line 119) | def post(self, request, domain, group_id, *args, **kwargs): class BaseGroupsView (line 125) | class BaseGroupsView(BaseUserSettingsView): method dispatch (line 128) | def dispatch(self, request, *args, **kwargs): method all_groups (line 132) | def all_groups(self): method main_context (line 136) | def main_context(self): class GroupsListView (line 152) | class GroupsListView(BaseGroupsView): class EditGroupMembersView (line 159) | class EditGroupMembersView(BaseGroupsView): method parent_pages (line 165) | def parent_pages(self): method page_name (line 172) | def page_name(self): method group_id (line 178) | def group_id(self): method page_url (line 182) | def page_url(self): method group (line 187) | def group(self): method formatted_member_ids (line 192) | def formatted_member_ids(self): method members (line 197) | def members(self): method group_membership_form (line 206) | def group_membership_form(self): method page_context (line 215) | def page_context(self): method domain_uses_case_sharing (line 239) | def domain_uses_case_sharing(self): FILE: corehq/apps/users/views/mobile/users.py class EditCommCareUserView (line 175) | class EditCommCareUserView(BaseEditUserView): method page_name (line 180) | def page_name(self): method template_name (line 186) | def template_name(self): method dispatch (line 193) | def dispatch(self, request, *args, **kwargs): method main_context (line 197) | def main_context(self): method has_any_sync_logs (line 214) | def has_any_sync_logs(self): method editable_user (line 219) | def editable_user(self): method edit_user_form_title (line 229) | def edit_user_form_title(self): method is_currently_logged_in_user (line 233) | def is_currently_logged_in_user(self): method reset_password_form (line 238) | def reset_password_form(self): method groups (line 243) | def groups(self): method all_groups (line 250) | def all_groups(self): method group_form (line 257) | def group_form(self): method commtrack_form (line 266) | def commtrack_form(self): method page_context (line 284) | def page_context(self): method user_role_choices (line 349) | def user_role_choices(self): method form_user_update (line 356) | def form_user_update(self): method parent_pages (line 376) | def parent_pages(self): method post (line 382) | def post(self, request, *args, **kwargs): class ConfirmBillingAccountForExtraUsersView (line 411) | class ConfirmBillingAccountForExtraUsersView(BaseUserSettingsView, Async... method account (line 421) | def account(self): method billing_info_form (line 432) | def billing_info_form(self): method page_context (line 440) | def page_context(self): method dispatch (line 446) | def dispatch(self, request, *args, **kwargs): method post (line 451) | def post(self, request, *args, **kwargs): function delete_commcare_user (line 475) | def delete_commcare_user(request, domain, user_id): function force_user_412 (line 494) | def force_user_412(request, domain, user_id): function restore_commcare_user (line 513) | def restore_commcare_user(request, domain, user_id): function toggle_demo_mode (line 526) | def toggle_demo_mode(request, domain, user_id): class BaseManageCommCareUserView (line 567) | class BaseManageCommCareUserView(BaseUserSettingsView): method parent_pages (line 570) | def parent_pages(self): class ConfirmTurnOffDemoModeView (line 578) | class ConfirmTurnOffDemoModeView(BaseManageCommCareUserView): method page_context (line 584) | def page_context(self): method page_url (line 596) | def page_url(self): class DemoRestoreStatusView (line 601) | class DemoRestoreStatusView(BaseManageCommCareUserView): method dispatch (line 605) | def dispatch(self, request, *args, **kwargs): method get (line 608) | def get(self, request, *args, **kwargs): method page_url (line 622) | def page_url(self): function demo_restore_job_poll (line 627) | def demo_restore_job_poll(request, domain, download_id, template="users/... function reset_demo_user_restore (line 644) | def reset_demo_user_restore(request, domain, user_id): function update_user_groups (line 665) | def update_user_groups(request, domain, couch_user_id): class MobileWorkerListView (line 685) | class MobileWorkerListView(JSONResponseMixin, BaseUserSettingsView): method dispatch (line 691) | def dispatch(self, *args, **kwargs): method can_access_all_locations (line 696) | def can_access_all_locations(self): method can_bulk_edit_users (line 700) | def can_bulk_edit_users(self): method can_add_extra_users (line 704) | def can_add_extra_users(self): method new_mobile_worker_form (line 709) | def new_mobile_worker_form(self): method custom_data (line 716) | def custom_data(self): method two_stage_user_confirmation (line 726) | def two_stage_user_confirmation(self): method page_context (line 730) | def page_context(self): method query (line 758) | def query(self): method check_username (line 762) | def check_username(self, in_data): method create_mobile_worker (line 771) | def create_mobile_worker(self, in_data): method _build_commcare_user (line 805) | def _build_commcare_user(self): method _ensure_proper_request (line 840) | def _ensure_proper_request(self, in_data): method _construct_form_data (line 849) | def _construct_form_data(self, in_data): function activate_commcare_user (line 874) | def activate_commcare_user(request, domain, user_id): function deactivate_commcare_user (line 881) | def deactivate_commcare_user(request, domain, user_id): function set_personalid_link_status (line 888) | def set_personalid_link_status(request, domain, username): function _modify_user_status (line 909) | def _modify_user_status(request, domain, user_id, is_active): function send_confirmation_email (line 930) | def send_confirmation_email(request, domain, user_id): function paginate_mobile_workers (line 939) | def paginate_mobile_workers(request, domain): function get_user_upload_context (line 1016) | def get_user_upload_context(domain, request_params, download_url, adject... class UploadCommCareUsers (line 1036) | class UploadCommCareUsers(BaseUploadUser): method dispatch (line 1044) | def dispatch(self, request, *args, **kwargs): method page_context (line 1048) | def page_context(self): method post (line 1053) | def post(self, request, *args, **kwargs): class UserUploadStatusView (line 1059) | class UserUploadStatusView(BaseManageCommCareUserView): method get (line 1063) | def get(self, request, *args, **kwargs): method page_url (line 1077) | def page_url(self): class CommcareUserUploadJobPollView (line 1082) | class CommcareUserUploadJobPollView(UserUploadJobPollView): method dispatch (line 1088) | def dispatch(self, request, *args, **kwargs): function commcare_user_download_job_poll (line 1094) | def commcare_user_download_job_poll( function web_user_download_job_poll (line 1102) | def web_user_download_job_poll( function _user_download_job_poll (line 1109) | def _user_download_job_poll(request, domain, download_id, template): class DownloadUsersStatusView (line 1119) | class DownloadUsersStatusView(BaseUserSettingsView): method dispatch (line 1124) | def dispatch(self, request, *args, **kwargs): method parent_pages (line 1128) | def parent_pages(self): method get (line 1134) | def get(self, request, *args, **kwargs): method page_url (line 1148) | def page_url(self): class FilteredUserDownload (line 1152) | class FilteredUserDownload(BaseUserSettingsView): method get (line 1154) | def get(self, request, domain, *args, **kwargs): class FilteredCommCareUserDownload (line 1168) | class FilteredCommCareUserDownload(FilteredUserDownload, BaseManageCommC... class FilteredWebUserDownload (line 1177) | class FilteredWebUserDownload(FilteredUserDownload, BaseManageWebUserView): class UsernameUploadMixin (line 1184) | class UsernameUploadMixin(object): method _get_usernames (line 1189) | def _get_usernames(self, request): method _get_sheet (line 1210) | def _get_sheet(self, request): class DeleteCommCareUsers (line 1227) | class DeleteCommCareUsers(BaseManageCommCareUserView, UsernameUploadMixin): method page_context (line 1233) | def page_context(self): method post (line 1240) | def post(self, request, *args, **kwargs): method _get_user_ids_with_forms (line 1258) | def _get_user_ids_with_forms(self, request, user_docs_by_id): method _get_usernames_not_found (line 1278) | def _get_usernames_not_found(self, request, user_docs_by_id, usernames): method _delete_users (line 1289) | def _delete_users(self, request, user_docs_by_id, user_ids_with_forms): class CommCareUsersLookup (line 1301) | class CommCareUsersLookup(BaseManageCommCareUserView, UsernameUploadMixin): method page_context (line 1307) | def page_context(self): method post (line 1314) | def post(self, request, *args, **kwargs): method _excel_data (line 1334) | def _excel_data(self, rows): function count_commcare_users (line 1347) | def count_commcare_users(request, domain): function count_web_users (line 1354) | def count_web_users(request, domain): function _count_users (line 1359) | def _count_users(request, domain, user_type): function download_commcare_users (line 1394) | def download_commcare_users(request, domain): function download_users (line 1399) | def download_users(request, domain, user_type): class CommCareUserConfirmAccountView (line 1430) | class CommCareUserConfirmAccountView(TemplateView, DomainViewMixin): method user_invite_hash (line 1438) | def user_invite_hash(self): method user_id (line 1443) | def user_id(self): method user (line 1448) | def user(self): method get_context_data (line 1451) | def get_context_data(self, **kwargs): method post (line 1462) | def post(self, request, *args, **kwargs): method is_invite_valid (line 1501) | def is_invite_valid(self): class CommCareUserConfirmAccountViewByEmailView (line 1511) | class CommCareUserConfirmAccountViewByEmailView(CommCareUserConfirmAccou... method form (line 1517) | def form(self): method _expiration_time_in_hours (line 1528) | def _expiration_time_in_hours(self): class CommCareUserAccountConfirmedView (line 1533) | class CommCareUserAccountConfirmedView(TemplateView, DomainViewMixin): method get_context_data (line 1538) | def get_context_data(self, **kwargs): function link_connectid_user (line 1555) | def link_connectid_user(request, domain): function bulk_user_upload_api (line 1574) | def bulk_user_upload_api(request, domain): class CommCareUserPasswordResetView (line 1599) | class CommCareUserPasswordResetView(BaseManageCommCareUserView, FormView): method post (line 1603) | def post(self, request, *args, **kwargs): method form_valid (line 1629) | def form_valid(self, form): method editable_user_id (line 1638) | def editable_user_id(self): method editable_user (line 1643) | def editable_user(self): method dispatch (line 1649) | def dispatch(self, *args, **kwargs): method get_form_kwargs (line 1654) | def get_form_kwargs(self): method get_success_url (line 1663) | def get_success_url(self): FILE: corehq/apps/users/views/role.py class RoleContextMixin (line 44) | class RoleContextMixin: method can_edit_roles (line 48) | def can_edit_roles(self): method non_admin_roles (line 54) | def non_admin_roles(self): method get_common_role_context (line 60) | def get_common_role_context(self): class ListRolesView (line 80) | class ListRolesView(RoleContextMixin, BaseRoleAccessView): method dispatch (line 85) | def dispatch(self, request, *args, **kwargs): method get_roles_for_display (line 88) | def get_roles_for_display(self): method page_context (line 127) | def page_context(self): function create_user_role (line 153) | def create_user_role(request, domain): function update_user_role (line 161) | def update_user_role(request, domain, role_id): function _save_user_role (line 165) | def _save_user_role(request, domain, role_id=None): function _update_role_from_view (line 186) | def _update_role_from_view(domain, role_data, role_id=None): function delete_user_role (line 229) | def delete_user_role(request, domain, role_id): function _delete_user_role (line 241) | def _delete_user_role(domain, role_id): class EditRoleView (line 272) | class EditRoleView(RoleContextMixin, BaseRoleAccessView): method role_id (line 277) | def role_id(self): method page_title (line 281) | def page_title(self): method page_url (line 287) | def page_url(self): method parent_pages (line 293) | def parent_pages(self): method landing_page_choices (line 300) | def landing_page_choices(self): method get_possible_profiles (line 308) | def get_possible_profiles(self): method page_context (line 323) | def page_context(self): method _get_role_data (line 354) | def _get_role_data(self): method _get_existing_role (line 362) | def _get_existing_role(self, role_id): method _get_blank_role_data (line 372) | def _get_blank_role_data(self): method role (line 388) | def role(self): FILE: corehq/apps/users/views/utils.py function get_editable_role_choices (line 29) | def get_editable_role_choices(domain, couch_user, allow_admin_role): class BulkUploadResponseWrapper (line 55) | class BulkUploadResponseWrapper(object): method __init__ (line 57) | def __init__(self, context): method success_count (line 66) | def success_count(self): method has_errors (line 69) | def has_errors(self): method errors (line 72) | def errors(self): function log_user_groups_change (line 83) | def log_user_groups_change(domain, request, user, group_ids=None): function log_commcare_user_locations_changes (line 99) | def log_commcare_user_locations_changes(request, user, old_location_id, ... function _get_location_ids_with_other_users (line 128) | def _get_location_ids_with_other_users(domain, location_ids, user_id_to_... function _get_location_case_counts (line 146) | def _get_location_case_counts(domain, location_ids): function _get_locations_with_orphaned_cases (line 162) | def _get_locations_with_orphaned_cases(domain, location_ids, user_id): function get_user_location_info (line 198) | def get_user_location_info(domain, user_location_ids, user_id): function filter_user_query_by_locations_accessible_to_user (line 216) | def filter_user_query_by_locations_accessible_to_user(user_es, domain, c... function user_can_access_invite (line 223) | def user_can_access_invite(domain, couch_user, invite): function send_hq_sso_date_metric (line 228) | def send_hq_sso_date_metric(link: ConnectIDUserLink): FILE: corehq/apps/users/views/web.py class UserInvitationView (line 41) | class UserInvitationView(object): method __call__ (line 45) | def __call__(self, request, uuid, **kwargs): method validate_invitation (line 226) | def validate_invitation(self, invitation): method is_invited (line 229) | def is_invited(self, invitation, couch_user): method inviting_entity (line 233) | def inviting_entity(self): method redirect_to_on_success (line 236) | def redirect_to_on_success(self, email, domain): function accept_invitation (line 247) | def accept_invitation(request, domain, uuid): function reinvite_web_user (line 256) | def reinvite_web_user(request, domain): function delete_invitation (line 275) | def delete_invitation(request, domain): class DomainRequestView (line 285) | class DomainRequestView(BasePageView): method page_url (line 292) | def page_url(self): method page_context (line 296) | def page_context(self): method post (line 312) | def post(self, request, *args, **kwargs): FILE: corehq/apps/zapier/admin.py class ZapierSubscriptionAdmin (line 6) | class ZapierSubscriptionAdmin(admin.ModelAdmin): FILE: corehq/apps/zapier/api/v0_5.py class ZapierXFormInstanceResource (line 22) | class ZapierXFormInstanceResource(XFormInstanceResource): method dehydrate (line 24) | def dehydrate(self, bundle): method get_required_privilege (line 28) | def get_required_privilege(self): class ZapierApplicationResource (line 32) | class ZapierApplicationResource(BaseApplicationResource): method get_required_privilege (line 39) | def get_required_privilege(self): class CustomField (line 43) | class CustomField(object): method __init__ (line 48) | def __init__(self, initial=None): method get_content (line 55) | def get_content(self): class BaseZapierCustomFieldResource (line 59) | class BaseZapierCustomFieldResource(Resource): method _build_key (line 65) | def _build_key(self, hashtag_value): method _build_label (line 68) | def _build_label(self, label): method _has_default_label (line 71) | def _has_default_label(self, question): method obj_get_list (line 74) | def obj_get_list(self, bundle, **kwargs): class Meta (line 77) | class Meta(CustomResourceMeta): class ZapierCustomTriggerFieldFormResource (line 84) | class ZapierCustomTriggerFieldFormResource(BaseZapierCustomFieldResource): method obj_get_list (line 89) | def obj_get_list(self, bundle, **kwargs): class Meta (line 141) | class Meta(BaseZapierCustomFieldResource.Meta): class ZapierCustomFieldCaseResource (line 162) | class ZapierCustomFieldCaseResource(BaseZapierCustomFieldResource): method obj_get_list (line 167) | def obj_get_list(self, bundle, **kwargs): class Meta (line 196) | class Meta(BaseZapierCustomFieldResource.Meta): class ZapierCustomActionFieldCaseResource (line 200) | class ZapierCustomActionFieldCaseResource(BaseZapierCustomFieldResource): method obj_get_list (line 206) | def obj_get_list(self, bundle, **kwargs): class Meta (line 243) | class Meta(BaseZapierCustomFieldResource.Meta): class ZapierUserDomains (line 247) | class ZapierUserDomains(UserDomainsResource): method get_object_list (line 252) | def get_object_list(self, request): FILE: corehq/apps/zapier/apps.py class ZapierConfig (line 4) | class ZapierConfig(AppConfig): method ready (line 9) | def ready(self): FILE: corehq/apps/zapier/consts.py class EventTypes (line 8) | class EventTypes(object): FILE: corehq/apps/zapier/migrations/0001_initial.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/zapier/migrations/0002_auto_20170117_1756.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/apps/zapier/models.py class ZapierSubscription (line 4) | class ZapierSubscription(models.Model): FILE: corehq/apps/zapier/queries.py function get_subscription_by_url (line 4) | def get_subscription_by_url(domain, url): FILE: corehq/apps/zapier/services.py function delete_subscription_with_url (line 4) | def delete_subscription_with_url(url): FILE: corehq/apps/zapier/signals/receivers.py function zapier_subscription_pre_save (line 14) | def zapier_subscription_pre_save(sender, instance, *args, **kwargs): function zapier_subscription_post_delete (line 53) | def zapier_subscription_post_delete(sender, instance, *args, **kwargs): FILE: corehq/apps/zapier/tests/test_create_update_cases_from_zapier.py class TestZapierCreateCaseAction (line 20) | class TestZapierCreateCaseAction(TestCase): method setUpClass (line 26) | def setUpClass(cls): method tearDownClass (line 42) | def tearDownClass(cls): method get_case_id (line 48) | def get_case_id(self, response): method test_create_case (line 53) | def test_create_case(self): method test_update_case (line 67) | def test_update_case(self): method test_update_case_does_not_exist (line 90) | def test_update_case_does_not_exist(self): method test_update_case_wrong_domain (line 100) | def test_update_case_wrong_domain(self): method test_update_case_wrong_type (line 119) | def test_update_case_wrong_type(self): method test_user_does_not_have_access (line 138) | def test_user_does_not_have_access(self): FILE: corehq/apps/zapier/tests/test_fields.py class TestRemoveAdvancedFields (line 11) | class TestRemoveAdvancedFields(SimpleTestCase): method test_form (line 13) | def test_form(self): class TestZapierCustomFields (line 114) | class TestZapierCustomFields(TestCase): method setUpClass (line 117) | def setUpClass(cls): method setUp (line 121) | def setUp(self): method test_case_fields (line 134) | def test_case_fields(self): FILE: corehq/apps/zapier/tests/test_polling.py class XFormPollingTests (line 18) | class XFormPollingTests(SimpleTestCase): method test_can_poll_with_only_zapier_privilege (line 19) | def test_can_poll_with_only_zapier_privilege(self): method setUp (line 29) | def setUp(self): method _create_form (line 59) | def _create_form(self, id, domain='test-domain'): method _create_request (line 70) | def _create_request(self, username, domain, api_key): method _mock_domain_has_privilege (line 78) | def _mock_domain_has_privilege(self, domain, privilege): method _mock_get_forms (line 81) | def _mock_get_forms(self, *args, **kwargs): class ApplicationPollingTests (line 86) | class ApplicationPollingTests(SimpleTestCase): method test_can_poll_with_only_zapier_privilege (line 87) | def test_can_poll_with_only_zapier_privilege(self): method setUp (line 97) | def setUp(self): method _create_request (line 126) | def _create_request(self, username, domain, api_key): method _create_app (line 134) | def _create_app(self, id, name='test'): method _mock_domain_has_privilege (line 137) | def _mock_domain_has_privilege(self, domain, privilege): method _mock_get_applications (line 140) | def _mock_get_applications(self, *args, **kwargs): FILE: corehq/apps/zapier/tests/test_utils.py function bootstrap_domain_for_zapier (line 17) | def bootstrap_domain_for_zapier(domain_name): function _ensure_plans (line 32) | def _ensure_plans(): FILE: corehq/apps/zapier/tests/test_zapier_forwarding.py class TestZapierCaseForwarding (line 23) | class TestZapierCaseForwarding(TestCase): method setUpClass (line 26) | def setUpClass(cls): method tearDown (line 41) | def tearDown(self): method test_create_case_forwarding (line 44) | def test_create_case_forwarding(self): method test_update_case_forwarding (line 47) | def test_update_case_forwarding(self): method test_change_case_forwarding (line 50) | def test_change_case_forwarding(self): method test_case_forwarding_wrong_type (line 54) | def test_case_forwarding_wrong_type(self): method test_update_case_forwarding_wrong_type (line 57) | def test_update_case_forwarding_wrong_type(self): method test_change_case_forwarding_wrong_type (line 60) | def test_change_case_forwarding_wrong_type(self): method _run_test (line 63) | def _run_test(self, event_type, expected_records_after_create, expecte... FILE: corehq/apps/zapier/tests/test_zapier_hooks.py class TestZapierIntegration (line 77) | class TestZapierIntegration(TestCase): method setUpClass (line 80) | def setUpClass(cls): method tearDownClass (line 95) | def tearDownClass(cls): method tearDown (line 101) | def tearDown(self): method test_subscribe_form (line 104) | def test_subscribe_form(self): method test_subscribe_case_events (line 128) | def test_subscribe_case_events(self): method test_subscribe_error (line 153) | def test_subscribe_error(self): method test_unsubscribe_form (line 166) | def test_unsubscribe_form(self): method test_unsubscribe_case (line 187) | def test_unsubscribe_case(self): method test_urls_conflict (line 208) | def test_urls_conflict(self): FILE: corehq/apps/zapier/util.py function remove_advanced_fields (line 4) | def remove_advanced_fields(form_dict): FILE: corehq/apps/zapier/views.py class SubscribeView (line 25) | class SubscribeView(View): method dispatch (line 31) | def dispatch(self, request, *args, **kwargs): method post (line 38) | def post(self, request, domain, *args, **kwargs): class UnsubscribeView (line 75) | class UnsubscribeView(View): method dispatch (line 81) | def dispatch(self, *args, **kwargs): method post (line 84) | def post(self, request, *args, **kwargs): class ZapierCreateCase (line 96) | class ZapierCreateCase(View): method dispatch (line 102) | def dispatch(self, request, *args, **kwargs): method post (line 108) | def post(self, request, *args, **kwargs): class ZapierUpdateCase (line 134) | class ZapierUpdateCase(View): method dispatch (line 140) | def dispatch(self, request, *args, **kwargs): method post (line 146) | def post(self, request, *args, **kwargs): FILE: corehq/blobs/__init__.py function get_blob_db (line 7) | def get_blob_db(): function _get_s3_db (line 21) | def _get_s3_db(settings, key="S3_BLOB_DB_SETTINGS"): function _get_fs_db (line 31) | def _get_fs_db(settings): function _get_migrating_db (line 40) | def _get_migrating_db(new_db, old_db): class CODES (line 45) | class CODES: FILE: corehq/blobs/atomic.py class AtomicBlobs (line 4) | class AtomicBlobs(object): method __init__ (line 19) | def __init__(self, db): method put (line 25) | def put(self, content, **kw): method get (line 32) | def get(self, *args, **kw): method delete (line 35) | def delete(self, key): method expire (line 47) | def expire(self, *args, **kw): method copy_blob (line 50) | def copy_blob(self, *args, **kw): method __enter__ (line 53) | def __enter__(self): method __exit__ (line 58) | def __exit__(self, exc_type, exc_value, tb): FILE: corehq/blobs/exceptions.py class Error (line 3) | class Error(Exception): class AmbiguousBlobStorageError (line 7) | class AmbiguousBlobStorageError(Error): class BadName (line 11) | class BadName(Error): class InvalidContext (line 15) | class InvalidContext(Error): class NotFound (line 19) | class NotFound(Error): class GzipStreamError (line 23) | class GzipStreamError(Exception): FILE: corehq/blobs/export.py class BlobDbBackendExporter (line 14) | class BlobDbBackendExporter(object): method __init__ (line 16) | def __init__(self, filename, already_exported): method __enter__ (line 24) | def __enter__(self): method __exit__ (line 27) | def __exit__(self, exc_type, exc_val, exc_tb): method process_object (line 34) | def process_object(self, meta): method _write_missing_ids (line 48) | def _write_missing_ids(self): class BlobExporter (line 59) | class BlobExporter: method __init__ (line 61) | def __init__(self, domain): method migrate (line 64) | def migrate(self, filename, chunk_size=100, limit_to_db=None, already_... class ExportError (line 91) | class ExportError(Exception): FILE: corehq/blobs/fsdb.py class FilesystemBlobDB (line 31) | class FilesystemBlobDB(AbstractBlobDB): method __init__ (line 35) | def __init__(self, rootdir): method put (line 40) | def put(self, content, **blob_meta_args): method get (line 63) | def get(self, key=None, type_code=None, meta=None): method size (line 78) | def size(self, key): method exists (line 85) | def exists(self, key): method delete (line 88) | def delete(self, key): method bulk_delete (line 99) | def bulk_delete(self, metas): method copy_blob (line 110) | def copy_blob(self, content, key): method get_path (line 122) | def get_path(self, key): function safejoin (line 126) | def safejoin(root, subpath): function _count_size (line 137) | def _count_size(path): FILE: corehq/blobs/interface.py class AbstractBlobDB (line 9) | class AbstractBlobDB(metaclass=ABCMeta): method __init__ (line 16) | def __init__(self): method put (line 20) | def put(self, content, **blob_meta_args): method get (line 56) | def get(self, key=None, type_code=None, meta=None): method _validate_get_args (line 73) | def _validate_get_args(key, type_code, meta): method exists (line 87) | def exists(self, key): method size (line 96) | def size(self, key): method delete (line 106) | def delete(self, key): method bulk_delete (line 116) | def bulk_delete(self, metas): method expire (line 125) | def expire(self, *args, **kw): method copy_blob (line 133) | def copy_blob(self, content, key): FILE: corehq/blobs/management/commands/blob_storage_report.py class Command (line 25) | class Command(BaseCommand): method add_arguments (line 32) | def add_arguments(self, parser): method handle (line 69) | def handle(self, files, output_file, write_csv, sample_size, default_o... function report_blobs_by_type (line 87) | def report_blobs_by_type(data, sizes, samples_by_type, write): function report_blob_sizes (line 107) | def report_blob_sizes(data, sizes, samples_by_type, write, summarize=Fal... function report_blob_ids (line 187) | def report_blob_ids(sizes, write): function accumulate_put_requests (line 209) | def accumulate_put_requests(files): function get_blob_sizes (line 221) | def get_blob_sizes(data, sample_size, default_only): function get_couch_blob_size (line 258) | def get_couch_blob_size(db_name, bucket, doc_id, blob_id): function get_form_blob_size (line 278) | def get_form_blob_size(bucket, attachment_id, subkey): function get_default_blob_size (line 286) | def get_default_blob_size(bucket, blob_id): class BlobSize (line 307) | class BlobSize(object): method __init__ (line 309) | def __init__(self, domain, doc_type, length, bucket, blob_id): function lookup_doc (line 317) | def lookup_doc(doc_id, db_name): function load_puts (line 325) | def load_puts(fileobj, data): function make_row_writer (line 346) | def make_row_writer(output_file, write_csv): function sizeof_fmt (line 394) | def sizeof_fmt(num): function mean (line 406) | def mean(data): FILE: corehq/blobs/management/commands/check_blob_logs.py class Command (line 32) | class Command(BaseCommand): method add_arguments (line 39) | def add_arguments(self, parser): method handle (line 62) | def handle(self, files, migrate=False, num_workers=10, **options): function process (line 109) | def process(rec, old_db, new_db, migrate): function check_blob (line 115) | def check_blob(rec, old_db, new_db, migrate=False): class Stats (line 158) | class Stats(object): method get (line 163) | def get(cls, type_code): method __init__ (line 169) | def __init__(self): FILE: corehq/blobs/management/commands/emergency_restore_blobs_for_domain.py class Command (line 12) | class Command(BaseCommand): method handle (line 22) | def handle(self, domain, **options): function get_blob_metas_for_domain (line 28) | def get_blob_metas_for_domain(domain): function restore_blobs (line 45) | def restore_blobs(db, blob_metas): function _get_blob_metas (line 51) | def _get_blob_metas(parent_id): function _get_deleted_blob_metas (line 55) | def _get_deleted_blob_metas(parent_id): function _get_stream_of_latest_version_before_deletion_for_object (line 59) | def _get_stream_of_latest_version_before_deletion_for_object(meta): function _get_latest_version_id_before_deletion_for_object (line 64) | def _get_latest_version_id_before_deletion_for_object(key): function _get_stream_for_object_version (line 72) | def _get_stream_for_object_version(meta, version_id): function _get_versions_dict_for_object (line 80) | def _get_versions_dict_for_object(key): function _get_object_dict_for_version (line 85) | def _get_object_dict_for_version(key, version_id): FILE: corehq/blobs/management/commands/export_selected_blobs.py class Command (line 24) | class Command(BaseCommand): method add_arguments (line 37) | def add_arguments(self, parser): method handle (line 50) | def handle(self, path, **options): method _run_threaded_export (line 71) | def _run_threaded_export(self, export_meta_files, meta, output_path, a... method _get_file_list_and_meta (line 87) | def _get_file_list_and_meta(self, filter_pattern, path, use_extracted): function _export_blobs (line 117) | def _export_blobs(output_path, path, meta, already_exported): function _key_iterator (line 132) | def _key_iterator(path): function _get_export_filename (line 151) | def _get_export_filename(meta_path): FILE: corehq/blobs/management/commands/import_blob_zip.py class Command (line 22) | class Command(BaseCommand): method add_arguments (line 25) | def add_arguments(self, parser): method handle (line 28) | def handle(self, zipname, **options): FILE: corehq/blobs/management/commands/run_blob_export.py class Command (line 14) | class Command(BaseCommand): method add_arguments (line 30) | def add_arguments(self, parser): method handle (line 47) | def handle( function get_lines_from_file (line 82) | def get_lines_from_file(filename): function _get_export_filename (line 89) | def _get_export_filename(domain, already_exported, path=None, limited_to... FILE: corehq/blobs/management/commands/run_blob_import.py class Command (line 15) | class Command(BaseCommand): method add_arguments (line 18) | def add_arguments(self, parser): method handle (line 21) | def handle(self, filename, **options): function import_blobs_from_tgz (line 25) | def import_blobs_from_tgz(filename): function worker (line 36) | def worker(filename, length, worker_number): FILE: corehq/blobs/management/commands/run_blob_migration.py class Command (line 24) | class Command(BaseCommand): method add_arguments (line 30) | def add_arguments(self, parser): method handle (line 90) | def handle(self, slug, log_dir=None, **options): function get_date (line 161) | def get_date(value): FILE: corehq/blobs/management/commands/wipe_blobdb.py class Command (line 11) | class Command(BaseCommand): method add_arguments (line 15) | def add_arguments(self, parser): method handle (line 23) | def handle(self, *args, **options): function wipe_blobdb (line 32) | def wipe_blobdb(commit=False): function wipe_shard (line 40) | def wipe_shard(blob_db, dbname, commit=False): function cursor_paginated (line 50) | def cursor_paginated(queryset, page_size): FILE: corehq/blobs/metadata.py class MetaDB (line 18) | class MetaDB(object): method new (line 25) | def new(self, **blob_meta_args): method put (line 55) | def put(self, meta): method delete (line 72) | def delete(self, key, content_length): method bulk_delete (line 86) | def bulk_delete(self, metas): method expire (line 141) | def expire(self, parent_id, key, minutes=60): method get (line 167) | def get(self, **kw): method get_for_parent (line 200) | def get_for_parent(self, parent_id, type_code=None): method get_for_parents (line 212) | def get_for_parents(self, parent_ids, type_code=None): method reparent (line 224) | def reparent(self, old_parent_id, new_parent_id): function _utcnow (line 238) | def _utcnow(): function _meta_tags (line 242) | def _meta_tags(meta): FILE: corehq/blobs/migrate.py function encode_content (line 137) | def encode_content(data): class BaseDocMigrator (line 143) | class BaseDocMigrator(object): method __init__ (line 145) | def __init__(self, couchdb, filename=None, blob_helper=BlobHelper, method __enter__ (line 157) | def __enter__(self): method __exit__ (line 162) | def __exit__(self, exc_type, exc_val, exc_tb): method write_backup (line 166) | def write_backup(self, doc): method migrate (line 170) | def migrate(self, doc): method processing_complete (line 179) | def processing_complete(self): class CouchAttachmentMigrator (line 185) | class CouchAttachmentMigrator(BaseDocMigrator): method migrate (line 189) | def migrate(self, doc): method should_process (line 213) | def should_process(self, doc): method _prepare_doc (line 216) | def _prepare_doc(self, doc): method _backup_doc (line 226) | def _backup_doc(self, doc): class SharedCouchAttachmentMigrator (line 239) | class SharedCouchAttachmentMigrator(CouchAttachmentMigrator): class BlobDbMigrator (line 244) | class BlobDbMigrator(BaseDocMigrator, ABC): method __init__ (line 251) | def __init__(self, *args, **kw): method save_backup (line 257) | def save_backup(self, doc, error="not found"): method processing_complete (line 269) | def processing_complete(self): class BlobDbBackendMigrator (line 278) | class BlobDbBackendMigrator(BlobDbMigrator): method __init__ (line 279) | def __init__(self, *args, **kw): method migrate (line 285) | def migrate(self, doc): class BlobDbBackendCheckMigrator (line 299) | class BlobDbBackendCheckMigrator(BlobDbBackendMigrator): method migrate (line 300) | def migrate(self, doc): class BlobDBCompressionMigrator (line 314) | class BlobDBCompressionMigrator(BlobDbMigrator): method migrate (line 315) | def migrate(self, doc): class BlobMetaReindexAccessor (line 333) | class BlobMetaReindexAccessor(ReindexAccessor): method __init__ (line 340) | def __init__(self, limit_db_aliases=None, type_code=None): method get_doc (line 344) | def get_doc(self, *args, **kw): method doc_to_json (line 348) | def doc_to_json(self, obj): method get_key (line 351) | def get_key(self, doc): method extra_filters (line 357) | def extra_filters(self, for_count=False): method load (line 372) | def load(self, key): class Migrator (line 378) | class Migrator(object): method __init__ (line 382) | def __init__(self, slug, doc_types, doc_migrator_class): method migrate (line 400) | def migrate(self, filename=None, reset=False, max_retry=2, chunk_size=... method write_migration_completed_state (line 431) | def write_migration_completed_state(self): method get_doc_migrator (line 434) | def get_doc_migrator(self, filename): method get_document_provider (line 441) | def get_document_provider(self): class BackendMigrator (line 445) | class BackendMigrator(Migrator): method __init__ (line 449) | def __init__(self, slug, doc_migrator_class, type_code=None): method get_doc_migrator (line 456) | def get_doc_migrator(self, filename, **kw): method get_document_provider (line 460) | def get_document_provider(self, date_range=None, domain=None): function _migrator_with_worker_pool (line 473) | def _migrator_with_worker_pool(migrator, reindexer, iterable, max_retry,... function assert_migration_complete (line 553) | def assert_migration_complete(slug): class MigrationError (line 600) | class MigrationError(Exception): class MigrationNotComplete (line 604) | class MigrationNotComplete(MigrationError): FILE: corehq/blobs/migrate_metadata.py class MultiDbMigrator (line 23) | class MultiDbMigrator(object): method __init__ (line 25) | def __init__(self, slug, couch_types, sql_reindexers): method iter_migrators (line 31) | def iter_migrators(self): method migrate (line 49) | def migrate(self, filename, *args, **kw): function make_migrators (line 64) | def make_migrators(mod): class SqlBlobHelper (line 152) | class SqlBlobHelper(object): method __init__ (line 159) | def __init__(self, obj, key, domain, reindexer): method __repr__ (line 165) | def __repr__(self): method _id (line 174) | def _id(self): method doc_type (line 181) | def doc_type(self): function sql_blob_helper (line 185) | def sql_blob_helper(key_attr): class PkReindexAccessor (line 200) | class PkReindexAccessor(ReindexAccessor): method id_field (line 202) | def id_field(self): method get_doc (line 205) | def get_doc(self, *args, **kw): method doc_to_json (line 209) | def doc_to_json(self, obj, id): class CaseUploadFileMetaReindexAccessor (line 213) | class CaseUploadFileMetaReindexAccessor(PkReindexAccessor): method doc_to_json (line 217) | def doc_to_json(self, obj): method get_type_code (line 221) | def get_type_code(doc): method get_domain (line 224) | def get_domain(self, obj): method blob_kwargs (line 230) | def blob_kwargs(self, obj): class DemoUserRestoreReindexAccessor (line 234) | class DemoUserRestoreReindexAccessor(PkReindexAccessor): method doc_to_json (line 238) | def doc_to_json(self, obj): method get_type_code (line 243) | def get_type_code(doc): method get_domain (line 246) | def get_domain(self, obj): method blob_kwargs (line 252) | def blob_kwargs(self, obj): function couch_blob_helper (line 256) | def couch_blob_helper(doc, *args, **kw): function get_shared_domain (line 267) | def get_shared_domain(doc): function get_invoice_domain (line 271) | def get_invoice_domain(doc): FILE: corehq/blobs/migratingdb.py class MigratingBlobDB (line 7) | class MigratingBlobDB(object): method __init__ (line 10) | def __init__(self, new_db, old_db): method put (line 19) | def put(self, *args, **kw): method get (line 22) | def get(self, *args, **kw): method size (line 28) | def size(self, *args, **kw): method exists (line 34) | def exists(self, *args, **kw): method delete (line 37) | def delete(self, *args, **kw): method bulk_delete (line 42) | def bulk_delete(self, *args, **kw): method expire (line 47) | def expire(self, *args, **kw): method copy_blob (line 50) | def copy_blob(self, *args, **kw): FILE: corehq/blobs/migrations/0001_squashed_0009_domains.py function _assert_fresh_install (line 25) | def _assert_fresh_install(apps, schema_editor): class Migration (line 29) | class Migration(migrations.Migration): FILE: corehq/blobs/migrations/0002_blobmeta.py class Migration (line 17) | class Migration(migrations.Migration): FILE: corehq/blobs/migrations/0003_big_content.py class Migration (line 12) | class Migration(migrations.Migration): FILE: corehq/blobs/migrations/0004_blobmeta_form_attachments.py class Migration (line 12) | class Migration(migrations.Migration): FILE: corehq/blobs/migrations/0005_negative_id.py class Migration (line 12) | class Migration(migrations.Migration): FILE: corehq/blobs/migrations/0006_restrict_form_attachments.py class Migration (line 13) | class Migration(migrations.Migration): FILE: corehq/blobs/migrations/0007_drop_blobmeta_view.py class Migration (line 13) | class Migration(migrations.Migration): FILE: corehq/blobs/migrations/0008_deletedblobmeta.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/blobs/migrations/0009_delete_blobexpiration.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/blobs/migrations/0010_auto_20191023_0938.py class Migration (line 14) | class Migration(migrations.Migration): FILE: corehq/blobs/migrations/0011_blobmeta_compressed.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/blobs/migrations/0012_rename_indexes.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/blobs/migrations/0013_drop_icds_cas_index.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/blobs/migrations/0014_alter_deletedblobmeta_id.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/blobs/migrations/0015_rename_blobmeta_parent_id_type_code_name_blobs_blobm_parent__73d7c2_idx.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/blobs/mixin.py class BlobMetaRef (line 32) | class BlobMetaRef(DocumentSchema): method _from_attachment (line 39) | def _from_attachment(cls, data): method _normalize_json (line 46) | def _normalize_json(dbname, doc_id, data): class BlobMixin (line 56) | class BlobMixin(Document): class Meta (line 58) | class Meta(object): method wrap (line 73) | def wrap(cls, data): method _blobdb_type_code (line 92) | def _blobdb_type_code(cls): method blobs (line 105) | def blobs(self): method put_attachment (line 119) | def put_attachment(self, content, name=None, content_type=None, method fetch_attachment (line 175) | def fetch_attachment(self, name, stream=False): method has_attachment (line 206) | def has_attachment(self, name): method delete_attachment (line 209) | def delete_attachment(self, name): method atomic_blobs (line 226) | def atomic_blobs(self, save=None): class BlobHelper (line 286) | class BlobHelper(object): method __init__ (line 305) | def __init__(self, doc, database, type_code): method __repr__ (line 325) | def __repr__(self): method blobs (line 336) | def blobs(self): method put_attachment (line 339) | def put_attachment(self, content, name=None, *args, **kw): method fetch_attachment (line 357) | def fetch_attachment(self, name, *args, **kw): method delete_attachment (line 362) | def delete_attachment(self, *args, **kw): method atomic_blobs (line 365) | def atomic_blobs(self, save=None): method _sync_doc (line 391) | def _sync_doc(self): method save (line 399) | def save(self): class DeferredBlobMixin (line 404) | class DeferredBlobMixin(BlobMixin): class Meta (line 412) | class Meta(object): method blobs (line 418) | def blobs(self): method persistent_blobs (line 434) | def persistent_blobs(self): method put_attachment (line 443) | def put_attachment(self, content, name=None, *args, **kw): method fetch_attachment (line 449) | def fetch_attachment(self, name, stream=False): method delete_attachment (line 464) | def delete_attachment(self, name): method deferred_put_attachment (line 471) | def deferred_put_attachment(self, content, name=None, content_type=None, method deferred_delete_attachment (line 501) | def deferred_delete_attachment(self, name): method save (line 507) | def save(self): function get_short_identifier (line 524) | def get_short_identifier(): function _get_couchdb_name (line 550) | def _get_couchdb_name(doc_class): function safe_id (line 554) | def safe_id(identifier): FILE: corehq/blobs/models.py function uuid4_hex (line 22) | def uuid4_hex(): class BlobMeta (line 26) | class BlobMeta(PartitionedModel, Model): class Meta (line 66) | class Meta: method __repr__ (line 85) | def __repr__(self): method is_image (line 89) | def is_image(self): method is_compressed (line 94) | def is_compressed(self): method stored_content_length (line 98) | def stored_content_length(self): method open (line 101) | def open(self, db=None): method blob_exists (line 110) | def blob_exists(self): method content_md5 (line 115) | def content_md5(self): method natural_key (line 120) | def natural_key(self): class DeletedBlobMeta (line 126) | class DeletedBlobMeta(PartitionedModel, Model): class BlobMigrationState (line 145) | class BlobMigrationState(Model): FILE: corehq/blobs/retry_s3db.py function retry_on_slow_down (line 6) | def retry_on_slow_down(func): function _is_slow_down (line 12) | def _is_slow_down(err: ClientError): FILE: corehq/blobs/s3db.py class S3BlobDB (line 27) | class S3BlobDB(AbstractBlobDB): method __init__ (line 29) | def __init__(self, config): method report_timing (line 47) | def report_timing(self, action, key): method put (line 67) | def put(self, content, **blob_meta_args): method get (line 95) | def get(self, key=None, type_code=None, meta=None): method size (line 110) | def size(self, key): method exists (line 115) | def exists(self, key): method delete (line 124) | def delete(self, key): method bulk_delete (line 137) | def bulk_delete(self, metas): method copy_blob (line 148) | def copy_blob(self, content, key): method _s3_bucket (line 152) | def _s3_bucket(self, create=False): function is_not_found (line 167) | def is_not_found(err, not_found_codes=["NoSuchKey", "NoSuchBucket", "404... function maybe_not_found (line 173) | def maybe_not_found(throw=None): class NoClose (line 184) | class NoClose(object): method __init__ (line 190) | def __init__(self, fileobj): method __getattr__ (line 193) | def __getattr__(self, name): method close (line 196) | def close(self): FILE: corehq/blobs/sql_templates/delete_blob_meta.sql function delete_blob_meta (line 1) | CREATE OR REPLACE FUNCTION delete_blob_meta(TEXT) RETURNS SETOF BIGINT A... FILE: corehq/blobs/sql_templates/delete_blob_meta_v2.sql function delete_blob_meta (line 1) | CREATE OR REPLACE FUNCTION delete_blob_meta(TEXT) RETURNS SETOF BIGINT A... FILE: corehq/blobs/sql_templates/get_blobmetas.sql function get_blobmetas (line 4) | CREATE FUNCTION get_blobmetas( FILE: corehq/blobs/sql_templates/mutate_blobs_blobmeta.sql function mutate_blobs_blobmeta (line 1) | CREATE OR REPLACE FUNCTION mutate_blobs_blobmeta() RETURNS TRIGGER AS $$... FILE: corehq/blobs/sql_templates/setup_blobmeta_view.sql type blobs_blobmeta (line 3) | CREATE OR REPLACE VIEW blobs_blobmeta AS function mutate_blobs_blobmeta (line 57) | CREATE OR REPLACE FUNCTION mutate_blobs_blobmeta() RETURNS TRIGGER AS $$... type form_processor_xformattachmentsql_blobmeta_key (line 146) | CREATE INDEX IF NOT EXISTS form_processor_xformattachmentsql_blobmeta_key FILE: corehq/blobs/targzipdb.py class TarGzipBlobDB (line 6) | class TarGzipBlobDB(AbstractBlobDB): method __init__ (line 15) | def __init__(self, filename): method open (line 20) | def open(self, mode='r:gz'): method close (line 23) | def close(self): method put (line 27) | def put(self, **blob_meta_args): method get (line 30) | def get(self, key=None, type_code=None, meta=None): method delete (line 33) | def delete(self, key): method bulk_delete (line 36) | def bulk_delete(self, metas): method copy_blob (line 39) | def copy_blob(self, in_fileobj, key): method exists (line 53) | def exists(self, key): method size (line 56) | def size(self, key): FILE: corehq/blobs/tasks.py function delete_expired_blobs (line 16) | def delete_expired_blobs(): function _utcnow (line 40) | def _utcnow(): FILE: corehq/blobs/tests/fixtures.py function blob_db (line 8) | def blob_db(): FILE: corehq/blobs/tests/test_atomic.py class TestAtomicBlobs (line 11) | class TestAtomicBlobs(TestCase): method setUpClass (line 14) | def setUpClass(cls): method tearDownClass (line 19) | def tearDownClass(cls): method test_put (line 23) | def test_put(self): method test_put_failed (line 29) | def test_put_failed(self): method test_put_outside_context (line 36) | def test_put_outside_context(self): method test_delete (line 42) | def test_delete(self): method test_delete_failed (line 49) | def test_delete_failed(self): method test_delete_outside_context (line 57) | def test_delete_outside_context(self): method test_expire (line 63) | def test_expire(self): class Boom (line 72) | class Boom(Exception): FILE: corehq/blobs/tests/test_blob_import.py class SleeperBlobDB (line 17) | class SleeperBlobDB: method copy_blob (line 18) | def copy_blob(self, content, key): class ErrorBlobDB (line 24) | class ErrorBlobDB: method copy_blob (line 25) | def copy_blob(self, content, key): function import_sleep (line 29) | def import_sleep(): function make_blob_export (line 38) | def make_blob_export(filename): class BlobImportTests (line 46) | class BlobImportTests(SimpleTestCase): method test_concurrency (line 48) | def test_concurrency(self): method test_errors (line 56) | def test_errors(self): FILE: corehq/blobs/tests/test_blob_timeout.py class BlobExpireTest (line 15) | class BlobExpireTest(TestCase): method setUpClass (line 26) | def setUpClass(cls): method tearDownClass (line 31) | def tearDownClass(cls): method tearDown (line 35) | def tearDown(self): method test_blob_expires (line 39) | def test_blob_expires(self): method test_blob_does_not_expire (line 63) | def test_blob_does_not_expire(self): FILE: corehq/blobs/tests/test_export.py class TestBlobExporter (line 15) | class TestBlobExporter(TestCase): method setUpClass (line 18) | def setUpClass(cls): method setUp (line 24) | def setUp(self): method test_only_blob_in_targeted_domain_is_exported (line 28) | def test_only_blob_in_targeted_domain_is_exported(self): method test_different_blob_types_are_exported (line 40) | def test_different_blob_types_are_exported(self): method test_blob_meta_referencing_missing_blob_is_not_exported (line 51) | def test_blob_meta_referencing_missing_blob_is_not_exported(self): method test_exported_blobs_can_be_imported_successfully (line 63) | def test_exported_blobs_can_be_imported_successfully(self): class TestExtendingExport (line 74) | class TestExtendingExport(TestCase): method setUp (line 78) | def setUp(self): method tearDown (line 83) | def tearDown(self): method test_extends (line 88) | def test_extends(self): class TestMockBigBlobIO (line 142) | class TestMockBigBlobIO(SimpleTestCase): method two_zeros (line 145) | def two_zeros(): method test_zeros (line 150) | def test_zeros(self): method test_read (line 154) | def test_read(self): method test_read_size (line 159) | def test_read_size(self): method test_read_chunks (line 164) | def test_read_chunks(self): class MockBigBlobIO (line 171) | class MockBigBlobIO(RawIOBase): method __init__ (line 178) | def __init__(self, bytes_gen, max_blocks): method readable (line 183) | def readable(self): method seekable (line 186) | def seekable(self): method writable (line 189) | def writable(self): method read (line 192) | def read(self, blocks=None): method readall (line 202) | def readall(self): method readinto (line 205) | def readinto(self, buffer): function test_doctests (line 209) | def test_doctests(): FILE: corehq/blobs/tests/test_fsdb.py class _BlobDBTests (line 22) | class _BlobDBTests(object): method new_meta (line 25) | def new_meta(self, **kwargs): method test_has_metadb (line 29) | def test_has_metadb(self): method test_put_and_get (line 32) | def test_put_and_get(self): method test_put_and_size (line 39) | def test_put_and_size(self): method test_put_with_timeout (line 49) | def test_put_with_timeout(self): method test_put_and_get_with_unicode (line 64) | def test_put_and_get_with_unicode(self): method test_put_from_get_stream (line 71) | def test_put_from_get_stream(self): method test_exists (line 78) | def test_exists(self): method test_delete_not_exists (line 82) | def test_delete_not_exists(self): method test_delete (line 87) | def test_delete(self): method test_bulk_delete (line 95) | def test_bulk_delete(self): method test_delete_no_args (line 114) | def test_delete_no_args(self): method test_empty_attachment_name (line 122) | def test_empty_attachment_name(self): method test_put_with_colliding_blob_id (line 128) | def test_put_with_colliding_blob_id(self): method test_expire (line 135) | def test_expire(self): method test_expire_missing_blob (line 155) | def test_expire_missing_blob(self): method test_raw_io_content_stream_should_be_open_after_put (line 160) | def test_raw_io_content_stream_should_be_open_after_put(self): method test_blob_stream_should_remain_open_after_put (line 169) | def test_blob_stream_should_remain_open_after_put(self): function _is_overridden (line 185) | def _is_overridden(method): function test_bad_name (line 198) | def test_bad_name(self, key): class TestFilesystemBlobDB (line 203) | class TestFilesystemBlobDB(TestCase, _BlobDBTests): method setUpClass (line 206) | def setUpClass(cls): method tearDownClass (line 212) | def tearDownClass(cls): method test_delete (line 218) | def test_delete(self): method test_bulk_delete (line 222) | def test_bulk_delete(self): method test_blob_path (line 226) | def test_blob_path(self): method test_empty_attachment_name (line 233) | def test_empty_attachment_name(self): method _check_file_content (line 238) | def _check_file_content(self, path, expected): class TestFilesystemBlobDBCompressed (line 243) | class TestFilesystemBlobDBCompressed(TestFilesystemBlobDB): method _check_file_content (line 246) | def _check_file_content(self, path, expected): FILE: corehq/blobs/tests/test_init.py function test_get_blobdb (line 20) | def test_get_blobdb(self, msg, root=True, blob_dir=None): FILE: corehq/blobs/tests/test_metadata.py class TestMetaDB (line 15) | class TestMetaDB(TestCase): method setUpClass (line 18) | def setUpClass(cls): method tearDownClass (line 23) | def tearDownClass(cls): method test_new (line 27) | def test_new(self): method test_save_on_put (line 43) | def test_save_on_put(self): method test_save_properties (line 52) | def test_save_properties(self): method test_save_empty_properties (line 57) | def test_save_empty_properties(self): method test_delete (line 66) | def test_delete(self): method test_delete_missing_meta (line 73) | def test_delete_missing_meta(self): method test_bulk_delete (line 79) | def test_bulk_delete(self): method test_bulk_delete_unsaved_meta_raises (line 93) | def test_bulk_delete_unsaved_meta_raises(self): method test_get (line 98) | def test_get(self): method test_get_by_key (line 107) | def test_get_by_key(self): method test_get_missing_parent_id (line 115) | def test_get_missing_parent_id(self): method test_get_missing_type_code (line 123) | def test_get_missing_type_code(self): method test_get_missing_name (line 131) | def test_get_missing_name(self): method test_get_extra_arg (line 139) | def test_get_extra_arg(self): method test_get_missing_blobmeta (line 149) | def test_get_missing_blobmeta(self): method test_get_missing_blobmeta_by_key (line 154) | def test_get_missing_blobmeta_by_key(self): method create_blobs (line 159) | def create_blobs(self): method test_get_for_parent (line 174) | def test_get_for_parent(self): method test_get_for_parent_with_type_code (line 179) | def test_get_for_parent_with_type_code(self): method test_get_for_parents (line 186) | def test_get_for_parents(self): method test_get_for_parents_with_type_code (line 191) | def test_get_for_parents_with_type_code(self): method test_reparent (line 199) | def test_reparent(self): class TestPartitionedMetaDB (line 218) | class TestPartitionedMetaDB(TestMetaDB): method tearDown (line 225) | def tearDown(self): method create_blobs (line 231) | def create_blobs(self): FILE: corehq/blobs/tests/test_migrate.py class TestMigrateBackend (line 19) | class TestMigrateBackend(TestCase): method setUp (line 23) | def setUp(self): method tearDown (line 50) | def tearDown(self): method test_migrate_backend (line 56) | def test_migrate_backend(self): function verify_migration (line 83) | def verify_migration(test, slug, filename, not_founds): function discard_migration_state (line 103) | def discard_migration_state(slug, **kw): FILE: corehq/blobs/tests/test_migrate_compress.py class TestCompressMigration (line 17) | class TestCompressMigration(TestCase): method setUp (line 20) | def setUp(self): method tearDown (line 50) | def tearDown(self): method test_compress_all (line 57) | def test_compress_all(self): method test_compress_domain (line 60) | def test_compress_domain(self): method _test_compress (line 63) | def _test_compress(self, expected_count, domain=None): FILE: corehq/blobs/tests/test_migrate_metadata.py class TestMigrateBackend (line 17) | class TestMigrateBackend(TestCase): method setUpClass (line 50) | def setUpClass(cls): method tearDownClass (line 58) | def tearDownClass(cls): method CaseUploadFileMeta_save (line 62) | def CaseUploadFileMeta_save(self, obj, key): method DemoUserRestore_save (line 77) | def DemoUserRestore_save(self, obj, key): method setUp (line 85) | def setUp(self): method tearDown (line 122) | def tearDown(self): method test_migrate_backend (line 132) | def test_migrate_backend(self): method test_resume_migration (line 169) | def test_resume_migration(self): function resurrect_old_couch_blob_meta (line 200) | def resurrect_old_couch_blob_meta(): class CouchDoc (line 215) | class CouchDoc(object): method id (line 223) | def id(self): class SqlDoc (line 228) | class SqlDoc(object): FILE: corehq/blobs/tests/test_migratingdb.py function get_base_class (line 13) | def get_base_class(): class TestMigratingBlobDB (line 19) | class TestMigratingBlobDB(get_base_class()): method setUpClass (line 22) | def setUpClass(cls): method test_fall_back_to_fsdb (line 29) | def test_fall_back_to_fsdb(self): method test_copy_blob_masks_old_blob (line 34) | def test_copy_blob_masks_old_blob(self): method test_delete_from_both_fs_and_s3 (line 46) | def test_delete_from_both_fs_and_s3(self): method assertEndsWith (line 54) | def assertEndsWith(self, a, b): class Boom (line 58) | class Boom(Exception): function blow_up (line 62) | def blow_up(*args, **kw): FILE: corehq/blobs/tests/test_mixin.py class BaseTestCase (line 23) | class BaseTestCase(TestCase): method setUpClass (line 26) | def setUpClass(cls): method tearDownClass (line 31) | def tearDownClass(cls): method make_doc (line 35) | def make_doc(self, type_=None, id=None): method setUp (line 42) | def setUp(self): method get_blob (line 45) | def get_blob(self, key): class TestBlob (line 48) | class TestBlob(object): method __init__ (line 50) | def __init__(self, db, key): method exists (line 55) | def exists(self): method open (line 58) | def open(self): method listdir (line 61) | def listdir(self): class TestBlobMixin (line 71) | class TestBlobMixin(BaseTestCase): method test_put_attachment_without_name (line 73) | def test_put_attachment_without_name(self): method test_put_attachment_for_doc_with_bad_path_id (line 77) | def test_put_attachment_for_doc_with_bad_path_id(self): method test_put_attachment_unicode (line 84) | def test_put_attachment_unicode(self): method test_put_attachment_bytes (line 90) | def test_put_attachment_bytes(self): method test_put_attachment_with_named_content (line 96) | def test_put_attachment_with_named_content(self): method test_fetch_attachment_with_unicode (line 103) | def test_fetch_attachment_with_unicode(self): method test_fetch_attachment_stream (line 109) | def test_fetch_attachment_stream(self): method test_delete_attachment (line 116) | def test_delete_attachment(self): method test_document_blobs (line 126) | def test_document_blobs(self): method test_deferred_put_attachment (line 133) | def test_deferred_put_attachment(self): method test_put_attachment_overwrites_unsaved_blob (line 143) | def test_put_attachment_overwrites_unsaved_blob(self): method test_fetch_attachment_returns_unsaved_blob (line 152) | def test_fetch_attachment_returns_unsaved_blob(self): method test_delete_attachment_deletes_unsaved_blob (line 159) | def test_delete_attachment_deletes_unsaved_blob(self): method test_deferred_delete_attachment (line 168) | def test_deferred_delete_attachment(self): method test_fetch_attachment_after_deferred_delete_attachment (line 182) | def test_fetch_attachment_after_deferred_delete_attachment(self): method test_persistent_blobs (line 194) | def test_persistent_blobs(self): method test_save_persists_unsaved_blob (line 210) | def test_save_persists_unsaved_blob(self): method test_blob_directory (line 221) | def test_blob_directory(self): method test_put_attachment_deletes_replaced_blob (line 229) | def test_put_attachment_deletes_replaced_blob(self): method test_put_attachment_failed_save_does_not_delete_replaced_blob (line 239) | def test_put_attachment_failed_save_does_not_delete_replaced_blob(self): method test_blobs_property (line 251) | def test_blobs_property(self): method test_unsaved_document (line 257) | def test_unsaved_document(self): method test_atomic_blobs_success (line 262) | def test_atomic_blobs_success(self): method test_atomic_blobs_success_and_new_id (line 272) | def test_atomic_blobs_success_and_new_id(self): method test_atomic_blobs_deletes_replaced_blob (line 283) | def test_atomic_blobs_deletes_replaced_blob(self): method test_atomic_blobs_deletes_replaced_blob_in_same_context (line 295) | def test_atomic_blobs_deletes_replaced_blob_in_same_context(self): method test_atomic_blobs_deletes_replaced_blob_in_nested_context (line 306) | def test_atomic_blobs_deletes_replaced_blob_in_nested_context(self): method test_atomic_blobs_preserves_blob_replaced_in_failed_nested_context (line 318) | def test_atomic_blobs_preserves_blob_replaced_in_failed_nested_context... method test_atomic_blobs_fail (line 332) | def test_atomic_blobs_fail(self): method test_atomic_blobs_fail_does_not_delete_out_of_context_blobs (line 345) | def test_atomic_blobs_fail_does_not_delete_out_of_context_blobs(self): method test_atomic_blobs_fail_does_not_overwrite_existing_blob (line 353) | def test_atomic_blobs_fail_does_not_overwrite_existing_blob(self): method test_atomic_blobs_fail_restores_deleted_blob (line 367) | def test_atomic_blobs_fail_restores_deleted_blob(self): method test_atomic_blobs_bug_deleting_existing_blob (line 381) | def test_atomic_blobs_bug_deleting_existing_blob(self): method test_atomic_blobs_bug_deleting_existing_blob_on_save_failure (line 397) | def test_atomic_blobs_bug_deleting_existing_blob_on_save_failure(self): method test_migrating_flag_not_in_doc_json (line 413) | def test_migrating_flag_not_in_doc_json(self): method test_wrap_with_legacy_BlobMeta (line 426) | def test_wrap_with_legacy_BlobMeta(self): method test_wrap_with_bad_id (line 447) | def test_wrap_with_bad_id(self): class TestBlobMixinWithS3Backend (line 464) | class TestBlobMixinWithS3Backend(TestBlobMixin): method setUpClass (line 467) | def setUpClass(cls): class TestBlob (line 473) | class TestBlob(object): method __init__ (line 475) | def __init__(self, db, key): method s3_bucket (line 480) | def s3_bucket(self): method exists (line 483) | def exists(self): method open (line 489) | def open(self): method listdir (line 493) | def listdir(self): class TestBlobMixinWithMigratingDbBeforeCopyToNew (line 500) | class TestBlobMixinWithMigratingDbBeforeCopyToNew(TestBlobMixinWithS3Bac... method setUpClass (line 503) | def setUpClass(cls): class TestBlob (line 507) | class TestBlob(TestBlobMixinWithS3Backend.TestBlob): method __init__ (line 509) | def __init__(self, db, key): method exists (line 514) | def exists(self): method open (line 518) | def open(self): method listdir (line 524) | def listdir(self): class TestBlobMixinWithMigratingDbAfterCopyToNew (line 535) | class TestBlobMixinWithMigratingDbAfterCopyToNew(TestBlobMixinWithMigrat... method setUpClass (line 538) | def setUpClass(cls): class TestBlobHelper (line 544) | class TestBlobHelper(BaseTestCase): method setUp (line 546) | def setUp(self): method make_doc (line 549) | def make_doc(self, type_=mod.BlobHelper, doc=None): method test_put_attachment_for_doc_with_bad_path_id (line 572) | def test_put_attachment_for_doc_with_bad_path_id(self): method test_put_and_fetch_attachment_from_couch (line 582) | def test_put_and_fetch_attachment_from_couch(self): method test_put_attachment_error_on_ambiguous_backend (line 591) | def test_put_attachment_error_on_ambiguous_backend(self): method test_fetch_attachment_do_not_hit_couch_when_not_migrating (line 596) | def test_fetch_attachment_do_not_hit_couch_when_not_migrating(self): method test_fetch_attachment_not_found_while_migrating (line 611) | def test_fetch_attachment_not_found_while_migrating(self): method test_put_and_fetch_attachment_from_blob_db (line 623) | def test_put_and_fetch_attachment_from_blob_db(self): method test_fetch_attachment_from_multi_backend_doc (line 645) | def test_fetch_attachment_from_multi_backend_doc(self): method test_atomic_blobs_with_couch_attachments (line 665) | def test_atomic_blobs_with_couch_attachments(self): method test_atomic_blobs_with_external_blobs (line 682) | def test_atomic_blobs_with_external_blobs(self): method test_atomic_blobs_with_migrating_couch_attachments (line 708) | def test_atomic_blobs_with_migrating_couch_attachments(self): method test_atomic_blobs_maintains_attachments_on_error (line 748) | def test_atomic_blobs_maintains_attachments_on_error(self): function test_safe_id (line 788) | def test_safe_id(self, value, result): class FakeCouchDatabase (line 796) | class FakeCouchDatabase(object): method __init__ (line 798) | def __init__(self, name="couch"): method put_attachment (line 804) | def put_attachment(self, doc, content, name, **meta): method fetch_attachment (line 812) | def fetch_attachment(self, doc_id, name, stream=False): method save_doc (line 816) | def save_doc(self, doc): class PutInOldBlobDB (line 826) | class PutInOldBlobDB(TemporaryMigratingBlobDB): method put (line 828) | def put(self, *args, **kw): class PutInOldCopyToNewBlobDB (line 832) | class PutInOldCopyToNewBlobDB(TemporaryMigratingBlobDB): method put (line 834) | def put(self, content, *args, **kw): class BaseFakeDocument (line 841) | class BaseFakeDocument(Document): class Meta (line 843) | class Meta(object): method save (line 848) | def save(self): method get_db (line 855) | def get_db(cls): class FakeCouchDocument (line 867) | class FakeCouchDocument(mod.BlobMixin, BaseFakeDocument): class Meta (line 869) | class Meta(object): class DeferredPutBlobDocument (line 877) | class DeferredPutBlobDocument(mod.DeferredBlobMixin, BaseFakeDocument): class Meta (line 879) | class Meta(object): class FailingSaveCouchDocument (line 886) | class FailingSaveCouchDocument(FakeCouchDocument): method save (line 890) | def save(self): class AttachmentFallback (line 898) | class AttachmentFallback(object): method __init__ (line 900) | def __init__(self, *args, **kw): method put_attachment (line 904) | def put_attachment(self, *args, **kw): method fetch_attachment (line 907) | def fetch_attachment(self, name, stream=False): method delete_attachment (line 912) | def delete_attachment(self, name): class FallbackToCouchDocument (line 917) | class FallbackToCouchDocument(mod.BlobMixin, AttachmentFallback, Document): class Meta (line 919) | class Meta(object): method get_db (line 928) | def get_db(cls): class BlowUp (line 938) | class BlowUp(Exception): FILE: corehq/blobs/tests/test_models.py class TestBlobMeta (line 12) | class TestBlobMeta(TestCase): method setUpClass (line 15) | def setUpClass(cls): method tearDownClass (line 20) | def tearDownClass(cls): method test_open (line 24) | def test_open(self): method test_delete_permanent_metadata (line 29) | def test_delete_permanent_metadata(self): method test_bulk_delete_permanent_metadata (line 40) | def test_bulk_delete_permanent_metadata(self): method test_delete_temporary_metadata (line 50) | def test_delete_temporary_metadata(self): method test_bulk_delete_temporary_metadata (line 59) | def test_bulk_delete_temporary_metadata(self): function test_is_image (line 76) | def test_is_image(self, content_type, result): FILE: corehq/blobs/tests/test_s3db.py class TestS3BlobDB (line 76) | class TestS3BlobDB(TestCase, _BlobDBTests): method setUpClass (line 79) | def setUpClass(cls): method tearDownClass (line 86) | def tearDownClass(cls): method test_put_from_other_s3_db (line 90) | def test_put_from_other_s3_db(self): class TestS3BlobDBCompressed (line 101) | class TestS3BlobDBCompressed(TestS3BlobDB): class TestBlobStream (line 105) | class TestBlobStream(TestCase): method new_meta (line 108) | def new_meta(cls, **kwargs): method setUpClass (line 112) | def setUpClass(cls): method tearDownClass (line 120) | def tearDownClass(cls): method test_text_io_wrapper (line 124) | def test_text_io_wrapper(self): method test_checks (line 131) | def test_checks(self): method test_tell (line 138) | def test_tell(self): method test_seek (line 144) | def test_seek(self): method test_write (line 150) | def test_write(self): method test_truncate (line 154) | def test_truncate(self): method test_fileno (line 158) | def test_fileno(self): method test_closed (line 162) | def test_closed(self): method test_close (line 167) | def test_close(self): method test_close_on_exit_context (line 173) | def test_close_on_exit_context(self): method get_blob (line 180) | def get_blob(self): class TestBlobStreamCompressed (line 184) | class TestBlobStreamCompressed(TestBlobStream): method new_meta (line 186) | def new_meta(cls, **kwargs): class FakeStream (line 191) | class FakeStream(object): method close (line 194) | def close(self): FILE: corehq/blobs/tests/test_type_codes.py class TestTypeCodes (line 7) | class TestTypeCodes(TestCase): method test_uniqueness (line 9) | def test_uniqueness(self): FILE: corehq/blobs/tests/test_util.py class TestRandomUrlId (line 13) | class TestRandomUrlId(TestCase): method setUp (line 17) | def setUp(self): method test_random_id_length (line 20) | def test_random_id_length(self): method test_random_id_randomness (line 24) | def test_random_id_randomness(self): class TestGzipStream (line 28) | class TestGzipStream(TestCase): method test_compression (line 30) | def test_compression(self): method test_content_length_access (line 47) | def test_content_length_access(self): method test_content_length_0 (line 68) | def test_content_length_0(self): method test_content_length_1 (line 78) | def test_content_length_1(self): method test_content_length_10x_chunk (line 88) | def test_content_length_10x_chunk(self): method test_content_length_after_partial_read_and_close (line 101) | def test_content_length_after_partial_read_and_close(self): method test_content_length_after_full_read_and_close (line 110) | def test_content_length_after_full_read_and_close(self): FILE: corehq/blobs/tests/util.py function get_id (line 19) | def get_id(): function new_meta (line 23) | def new_meta(**kw): function get_meta (line 32) | def get_meta(meta, deleted=False): function temporary_blob_db (line 40) | def temporary_blob_db(db): class TemporaryBlobDBMixin (line 54) | class TemporaryBlobDBMixin(object): method __init__ (line 60) | def __init__(self, *args, **kw): method close (line 71) | def close(self): method clean_db (line 77) | def clean_db(self): method __enter__ (line 85) | def __enter__(self): method __exit__ (line 88) | def __exit__(self, *exc_info): class TemporaryFilesystemBlobDB (line 92) | class TemporaryFilesystemBlobDB(TemporaryBlobDBMixin, FilesystemBlobDB): method __init__ (line 94) | def __init__(self): method clean_db (line 98) | def clean_db(self): class TemporaryS3BlobDB (line 104) | class TemporaryS3BlobDB(TemporaryBlobDBMixin, S3BlobDB): method __init__ (line 106) | def __init__(self, config): method clean_db (line 117) | def clean_db(self): class TemporaryMigratingBlobDB (line 131) | class TemporaryMigratingBlobDB(TemporaryBlobDBMixin, MigratingBlobDB): method __init__ (line 133) | def __init__(self, *args): method clean_db (line 138) | def clean_db(self): FILE: corehq/blobs/util.py class GzipStream (line 16) | class GzipStream: method __init__ (line 23) | def __init__(self, fileobj): method content_length (line 30) | def content_length(self): method read (line 39) | def read(self, size=-1): method close (line 49) | def close(self): class _IoBuffer (line 57) | class _IoBuffer: method __init__ (line 58) | def __init__(self): method __len__ (line 62) | def __len__(self): method write (line 65) | def write(self, data): method read (line 69) | def read(self, size=-1): method flush (line 84) | def flush(self): method close (line 87) | def close(self): class document_method (line 92) | class document_method(object): method __init__ (line 106) | def __init__(self, func): method __get__ (line 109) | def __get__(self, obj, owner): class classproperty (line 115) | class classproperty(object): method __init__ (line 118) | def __init__(self, func): method __get__ (line 121) | def __get__(self, obj, owner): function random_url_id (line 125) | def random_url_id(nbytes): function check_safe_key (line 134) | def check_safe_key(key): function _utcnow (line 150) | def _utcnow(): function get_content_md5 (line 154) | def get_content_md5(fileobj): function set_max_connections (line 170) | def set_max_connections(num_workers): class BlobStream (line 196) | class BlobStream(RawIOBase): method __init__ (line 204) | def __init__(self, stream, blob_db, blob_key, content_length, compress... method readable (line 211) | def readable(self): method read (line 214) | def read(self, *args, **kw): method write (line 219) | def write(self, *args, **kw): method tell (line 222) | def tell(self): method seek (line 228) | def seek(self, offset, from_what=os.SEEK_SET): method close (line 236) | def close(self): method __getattr__ (line 240) | def __getattr__(self, name): method blob_db (line 244) | def blob_db(self): function get_content_size (line 248) | def get_content_size(fileobj, chunks_sent): FILE: corehq/celery_monitoring/app_config.py class CeleryMonitoringAppConfig (line 4) | class CeleryMonitoringAppConfig(AppConfig): method ready (line 7) | def ready(self): FILE: corehq/celery_monitoring/heartbeat.py class HeartbeatNeverRecorded (line 15) | class HeartbeatNeverRecorded(Exception): class HeartbeatCache (line 19) | class HeartbeatCache(object): method __init__ (line 20) | def __init__(self, queue): method _cache_key (line 23) | def _cache_key(self): method get (line 26) | def get(self): method set (line 29) | def set(self, value): method delete (line 32) | def delete(self): class HeartbeatTimeToStartCache (line 36) | class HeartbeatTimeToStartCache(HeartbeatCache): method _cache_key (line 37) | def _cache_key(self): class Heartbeat (line 41) | class Heartbeat(object): method __init__ (line 42) | def __init__(self, queue): method get_last_seen (line 48) | def get_last_seen(self): method mark_seen (line 55) | def mark_seen(self): method clear_last_seen (line 58) | def clear_last_seen(self): method get_blockage_duration (line 62) | def get_blockage_duration(self): method get_and_report_blockage_duration (line 73) | def get_and_report_blockage_duration(self): method set_time_to_start (line 90) | def set_time_to_start(self, task_id): method get_and_report_time_to_start (line 94) | def get_and_report_time_to_start(self): method periodic_task_name (line 106) | def periodic_task_name(self): method make_periodic_task (line 109) | def make_periodic_task(self): FILE: corehq/celery_monitoring/signals.py function celery_add_time_sent (line 18) | def celery_add_time_sent(headers=None, body=None, **kwargs): function update_celery_state (line 28) | def update_celery_state(sender=None, headers=None, **kwargs): function celery_record_time_to_start (line 54) | def celery_record_time_to_start(task_id=None, task=None, **kwargs): function celery_record_time_to_run (line 77) | def celery_record_time_to_run(task_id=None, task=None, state=None, args=... function celery_push_metrics (line 115) | def celery_push_metrics(**kwargs): function get_task_time_to_start (line 120) | def get_task_time_to_start(task_id): class TimingNotAvailable (line 124) | class TimingNotAvailable(Exception): class CeleryTimer (line 128) | class CeleryTimer(object): method __init__ (line 129) | def __init__(self, task_id, timing_type): method _cache_key (line 134) | def _cache_key(self): method start_timing (line 137) | def start_timing(self, eta=None): method stop_and_pop_timing (line 140) | def stop_and_pop_timing(self): method parse_iso8601 (line 158) | def parse_iso8601(datetime_string): class TimeToStartTimer (line 162) | class TimeToStartTimer(CeleryTimer): method __init__ (line 163) | def __init__(self, task_id): class TimeToRunTimer (line 167) | class TimeToRunTimer(CeleryTimer): method __init__ (line 168) | def __init__(self, task_id): function get_domain_from_task (line 172) | def get_domain_from_task(task, args, kwargs): FILE: corehq/celery_monitoring/tests.py function test_heartbeat (line 21) | def test_heartbeat(): function test_get_and_report_blockage_duration (line 43) | def test_get_and_report_blockage_duration(): function test_time_to_start_timer (line 50) | def test_time_to_start_timer(): function test_time_to_start_timer_with_eta (line 73) | def test_time_to_start_timer_with_eta(): function test_parse_iso8601 (line 89) | def test_parse_iso8601(): function test_import_tasks (line 94) | def test_import_tasks(): function test_get_domain_from_task (line 101) | def test_get_domain_from_task(): FILE: corehq/couchapps/by_domain_doc_type_date/views/view/map.js function get_date (line 3) | function get_date(doc){ FILE: corehq/couchapps/doc_conflicts/tasks.py function remove_doc_conflicts (line 9) | def remove_doc_conflicts(): FILE: corehq/couchapps/tests/test_all_docs.py class AllDocsTest (line 8) | class AllDocsTest(TestCase): method setUpClass (line 12) | def setUpClass(cls): method tearDownClass (line 34) | def tearDownClass(cls): method test_get_all_doc_ids_for_domain_grouped_by_db (line 39) | def test_get_all_doc_ids_for_domain_grouped_by_db(self): method test_get_doc_count_by_type (line 50) | def test_get_doc_count_by_type(self): method test_get_doc_count_by_domain_type (line 56) | def test_get_doc_count_by_domain_type(self): FILE: corehq/dbaccessors/couchapps/all_docs.py function _get_all_docs_dbs (line 8) | def _get_all_docs_dbs(): function get_all_doc_ids_for_domain_grouped_by_db (line 12) | def get_all_doc_ids_for_domain_grouped_by_db(domain): function get_doc_count_by_type (line 29) | def get_doc_count_by_type(db, doc_type): function iter_all_doc_ids (line 40) | def iter_all_doc_ids(db, doc_type): function get_doc_count_by_domain_type (line 52) | def get_doc_count_by_domain_type(db, domain, doc_type): function get_all_docs_with_doc_types (line 63) | def get_all_docs_with_doc_types(db, doc_types, chunk_size=100): function get_doc_ids_by_class (line 81) | def get_doc_ids_by_class(doc_class): function get_deleted_doc_ids_by_class (line 96) | def get_deleted_doc_ids_by_class(doc_class): function delete_all_docs_by_doc_type (line 107) | def delete_all_docs_by_doc_type(db, doc_types): FILE: corehq/elastic.py function get_es_new (line 5) | def get_es_new(): function get_es_export (line 10) | def get_es_export(): FILE: corehq/ex-submodules/casexml/apps/case/apps.py class CaseXMLModule (line 5) | class CaseXMLModule(AppConfig): method ready (line 8) | def ready(self): FILE: corehq/ex-submodules/casexml/apps/case/cleanup.py function close_cases (line 18) | def close_cases(case_ids, domain, user, device_id, case_db=None, synctok... function close_case (line 58) | def close_case(case_id, domain, user, device_id): function rebuild_case_from_forms (line 62) | def rebuild_case_from_forms(domain, case_id, detail): function safe_hard_delete (line 75) | def safe_hard_delete(case): function claim_case (line 102) | def claim_case(domain, restore_user, host_id, host_type=None, host_name=... function get_first_claims (line 146) | def get_first_claims(domain, user_id, case_ids): FILE: corehq/ex-submodules/casexml/apps/case/exceptions.py class CommCareCaseError (line 3) | class CommCareCaseError(Exception): class CaseLogicException (line 10) | class CaseLogicException(CommCareCaseError): class IllegalCaseId (line 17) | class IllegalCaseId(CommCareCaseError): class InvalidCaseIndex (line 26) | class InvalidCaseIndex(CommCareCaseError): class CaseValueError (line 33) | class CaseValueError(CommCareCaseError): class UsesReferrals (line 40) | class UsesReferrals(CommCareCaseError): class NoDomainProvided (line 44) | class NoDomainProvided(CommCareCaseError): class ReconciliationError (line 48) | class ReconciliationError(CommCareCaseError): class MissingServerDate (line 55) | class MissingServerDate(ReconciliationError): class VersionNotSupported (line 59) | class VersionNotSupported(CommCareCaseError): class PhoneDateValueError (line 63) | class PhoneDateValueError(CommCareCaseError): FILE: corehq/ex-submodules/casexml/apps/case/fixtures.py class CaseDBFixture (line 6) | class CaseDBFixture(object): method __init__ (line 15) | def __init__(self, cases): method fixture (line 22) | def fixture(self): FILE: corehq/ex-submodules/casexml/apps/case/management/commands/create_case.py class Command (line 12) | class Command(BaseCommand): method add_arguments (line 15) | def add_arguments(self, parser): method handle (line 23) | def handle(self, domain, case_type, case_name, owner_id, **kwargs): FILE: corehq/ex-submodules/casexml/apps/case/management/commands/create_case_fixtures.py function get_faker (line 14) | def get_faker(): class Command (line 25) | class Command(BaseCommand): method add_arguments (line 28) | def add_arguments(self, parser): method handle (line 38) | def handle(self, domain, num_root_items, owner_ids, **kwargs): method _create_case_structure (line 60) | def _create_case_structure(self, locale, owner_id): method _generate_data_dictionary (line 149) | def _generate_data_dictionary(self, domain): method _generate_sample_app (line 160) | def _generate_sample_app(self, domain): FILE: corehq/ex-submodules/casexml/apps/case/mock/case_block.py class CaseBlock (line 17) | class CaseBlock(object): method __init__ (line 23) | def __init__( method deprecated_init (line 71) | def deprecated_init(cls, *args, **kwargs): method _updatable_built_ins (line 82) | def _updatable_built_ins(self): method _check_for_duplicate_properties (line 85) | def _check_for_duplicate_properties(self): method _make_index_attrs (line 91) | def _make_index_attrs(value): method _to_json (line 100) | def _to_json(self): method as_xml (line 147) | def as_xml(self): method from_xml (line 155) | def from_xml(cls, case): method as_text (line 205) | def as_text(self): method as_bytes (line 208) | def as_bytes(self): class CaseBlockError (line 212) | class CaseBlockError(Exception): class _DictToXML (line 216) | class _DictToXML(object): method __init__ (line 217) | def __init__(self, order): method build (line 220) | def build(self, block, dct): method sort_key (line 237) | def sort_key(self, item): method fmt (line 246) | def fmt(value): function _dict_to_xml (line 261) | def _dict_to_xml(block, dct, order): FILE: corehq/ex-submodules/casexml/apps/case/mock/mock.py class CaseStructure (line 8) | class CaseStructure(object): method __init__ (line 15) | def __init__(self, case_id=None, indices=None, attrs=None, walk_relate... method index (line 25) | def index(self): method walk_ids (line 31) | def walk_ids(self): class CaseIndex (line 39) | class CaseIndex(object): method __init__ (line 43) | def __init__(self, related_structure=None, relationship=DEFAULT_RELATI... method related_id (line 57) | def related_id(self): class CaseFactory (line 61) | class CaseFactory(object): method __init__ (line 73) | def __init__(self, domain=None, case_defaults=None, submission_extras=... method get_case_block (line 78) | def get_case_block(self, case_id, **kwargs): method get_case_blocks (line 83) | def get_case_blocks(self, case_structures): method post_case_blocks (line 102) | def post_case_blocks(self, caseblocks, submission_extras=None, user_id... method create_case (line 116) | def create_case(self, **kwargs): method update_case (line 128) | def update_case(self, case_id, **kwargs): method close_case (line 139) | def close_case(self, case_id): method create_or_update_case (line 149) | def create_or_update_case( method create_or_update_cases (line 160) | def create_or_update_cases( FILE: corehq/ex-submodules/casexml/apps/case/mock/tests/test_case_block.py class CaseBlockTest (line 10) | class CaseBlockTest(SimpleTestCase): method setUpClass (line 13) | def setUpClass(cls): method test_basic (line 19) | def test_basic(self): method test_does_not_let_you_specify_a_keyword_twice (line 33) | def test_does_not_let_you_specify_a_keyword_twice(self): method test_let_you_specify_system_props_for_create_via_updates (line 43) | def test_let_you_specify_system_props_for_create_via_updates(self): method test_buggy_behavior (line 59) | def test_buggy_behavior(self): method test_owner_id_is_none (line 77) | def test_owner_id_is_none(self): method test_date_opened_default (line 84) | def test_date_opened_default(self): method test_date_opened_given (line 90) | def test_date_opened_given(self): method test_date_opened_deprecated_given (line 98) | def test_date_opened_deprecated_given(self): method test_date_opened_deprecated_now (line 108) | def test_date_opened_deprecated_now(self): FILE: corehq/ex-submodules/casexml/apps/case/signals.py function rebuild_form_cases (line 5) | def rebuild_form_cases(sender, xform, *args, **kwargs): function connect_signals (line 19) | def connect_signals(): FILE: corehq/ex-submodules/casexml/apps/case/templatetags/case_tags.py function case_inline_display (line 9) | def case_inline_display(case): FILE: corehq/ex-submodules/casexml/apps/case/tests/test_bugs.py class CaseBugTest (line 20) | class CaseBugTest(TestCase, TestFileMixin): method setUpClass (line 28) | def setUpClass(cls): method tearDownClass (line 33) | def tearDownClass(cls): method test_empty_case_id (line 37) | def test_empty_case_id(self): method _test_datatypes_in_various_properties (line 49) | def _test_datatypes_in_various_properties(self, value): method test_date_in_various_properties (line 72) | def test_date_in_various_properties(self): method test_integer_in_various_properties (line 78) | def test_integer_in_various_properties(self): method test_decimal_in_various_properties (line 84) | def test_decimal_in_various_properties(self): method test_duplicate_case_properties (line 88) | def test_duplicate_case_properties(self): method test_multiple_case_blocks (line 102) | def test_multiple_case_blocks(self): method test_lots_of_subcases (line 124) | def test_lots_of_subcases(self): method test_submit_to_deleted_case (line 131) | def test_submit_to_deleted_case(self): method test_case_block_ordering (line 151) | def test_case_block_ordering(self): method test_case_block_ordering_with_indices (line 166) | def test_case_block_ordering_with_indices(self): class TestCaseHierarchy (line 184) | class TestCaseHierarchy(TestCase): method setUpClass (line 186) | def setUpClass(cls): method tearDownClass (line 191) | def tearDownClass(cls): method normal_index (line 195) | def normal_index(self): method test_normal_index (line 214) | def test_normal_index(self): method test_deleted_index (line 217) | def test_deleted_index(self): method test_extension_index (line 237) | def test_extension_index(self): method test_recursive_indexes (line 263) | def test_recursive_indexes(self): method test_complex_index (line 277) | def test_complex_index(self): method test_missing_transactions (line 309) | def test_missing_transactions(self): class TestCaseHierarchyContext (line 336) | class TestCaseHierarchyContext(TestCase): method setUp (line 337) | def setUp(self): method tearDown (line 352) | def tearDown(self): method test_case_hierarchy_context_parent (line 356) | def test_case_hierarchy_context_parent(self): method test_case_hierarchy_context_parent_deleted_index (line 360) | def test_case_hierarchy_context_parent_deleted_index(self): method test_case_hierarchy_context_child (line 365) | def test_case_hierarchy_context_child(self): method test_case_hierarchy_context_child_deleted_index (line 369) | def test_case_hierarchy_context_child_deleted_index(self): method _delete_child_index (line 374) | def _delete_child_index(self): FILE: corehq/ex-submodules/casexml/apps/case/tests/test_case_block.py class TestCaseBlock (line 5) | class TestCaseBlock(SimpleTestCase): method test_numeric_properties (line 7) | def test_numeric_properties(self): FILE: corehq/ex-submodules/casexml/apps/case/tests/test_case_history.py class TestCaseHistory (line 15) | class TestCaseHistory(TestCase): method setUp (line 17) | def setUp(self): method tearDown (line 25) | def tearDown(self): method test_case_history (line 30) | def test_case_history(self): FILE: corehq/ex-submodules/casexml/apps/case/tests/test_close_extension_chain.py class AutoCloseExtensionsTest (line 19) | class AutoCloseExtensionsTest(TestCase): method setUpClass (line 22) | def setUpClass(cls): method tearDown (line 34) | def tearDown(self): method tearDownClass (line 40) | def tearDownClass(cls): method _create_extension_chain (line 44) | def _create_extension_chain(self): method _create_extension_loop (line 72) | def _create_extension_loop(self): method _create_host_is_subcase_chain (line 83) | def _create_host_is_subcase_chain(self): method _create_two_host_extension (line 111) | def _create_two_host_extension(self): method test_get_extension_chain_simple (line 132) | def test_get_extension_chain_simple(self): method test_get_extension_chain_multiple (line 148) | def test_get_extension_chain_multiple(self): method test_get_extension_chain_circular_ref (line 155) | def test_get_extension_chain_circular_ref(self): method test_get_extension_to_close (line 167) | def test_get_extension_to_close(self): method test_get_extension_to_close_child_host (line 187) | def test_get_extension_to_close_child_host(self): method test_close_cases_host (line 206) | def test_close_cases_host(self): method test_closing_one_host_closes_extension (line 246) | def test_closing_one_host_closes_extension(self): method test_close_cases_child (line 272) | def test_close_cases_child(self): FILE: corehq/ex-submodules/casexml/apps/case/tests/test_delete.py class TestHardDelete (line 15) | class TestHardDelete(TestCase): method setUp (line 17) | def setUp(self): method test_simple_delete (line 21) | def test_simple_delete(self): method test_delete_with_related (line 48) | def test_delete_with_related(self): method test_delete_sharing_form (line 66) | def test_delete_sharing_form(self): FILE: corehq/ex-submodules/casexml/apps/case/tests/test_domains.py class DomainTest (line 75) | class DomainTest(TestCase): method tearDown (line 77) | def tearDown(self): method test_cant_own_case (line 81) | def test_cant_own_case(self): FILE: corehq/ex-submodules/casexml/apps/case/tests/test_exclusion.py class CaseExclusionTest (line 12) | class CaseExclusionTest(TestCase): method setUp (line 17) | def setUp(self): method testTopLevelExclusion (line 21) | def testTopLevelExclusion(self): method testNestedExclusion (line 32) | def testNestedExclusion(self): FILE: corehq/ex-submodules/casexml/apps/case/tests/test_extract_caseblocks.py class TestExtractCaseBlocks (line 20) | class TestExtractCaseBlocks(SimpleTestCase): method test_basic (line 22) | def test_basic(self): method test_simple_path (line 33) | def test_simple_path(self): method test_nested_path (line 44) | def test_nested_path(self): method test_blocks_in_list (line 60) | def test_blocks_in_list(self): method test_blocks_in_repeat (line 77) | def test_blocks_in_repeat(self): class TestParsingExtractCaseBlock (line 93) | class TestParsingExtractCaseBlock(TestCase, TestFileMixin): method setUp (line 97) | def setUp(self): method _formatXForm (line 100) | def _formatXForm(self, doc_id, raw_xml, attachment_block, date=None): method test_parsing_date_modified (line 112) | def test_parsing_date_modified(self): FILE: corehq/ex-submodules/casexml/apps/case/tests/test_factory.py class CaseRelationshipTest (line 10) | class CaseRelationshipTest(SimpleTestCase): method test_defaults (line 12) | def test_defaults(self): method test_default_type_from_relationship (line 18) | def test_default_type_from_relationship(self): class CaseStructureTest (line 23) | class CaseStructureTest(SimpleTestCase): method test_index (line 25) | def test_index(self): method test_multiple_indices (line 39) | def test_multiple_indices(self): method test_walk_ids (line 56) | def test_walk_ids(self): method test_walk_ids_ignore_related (line 75) | def test_walk_ids_ignore_related(self): class CaseFactoryTest (line 103) | class CaseFactoryTest(TestCase): method test_simple_create (line 105) | def test_simple_create(self): method test_create_overrides (line 110) | def test_create_overrides(self): method test_domain (line 116) | def test_domain(self): method test_factory_defaults (line 122) | def test_factory_defaults(self): method test_override_defaults (line 128) | def test_override_defaults(self): method test_create_from_structure (line 134) | def test_create_from_structure(self): method test_no_walk_related (line 162) | def test_no_walk_related(self): method test_form_extras (line 173) | def test_form_extras(self): method test_form_extras_default (line 182) | def test_form_extras_default(self): method test_form_extras_override_defaults (line 192) | def test_form_extras_override_defaults(self): FILE: corehq/ex-submodules/casexml/apps/case/tests/test_fixtures.py class TestFixtures (line 11) | class TestFixtures(TestXmlMixin, SimpleTestCase): method create_case (line 17) | def create_case(self): method test_fixture (line 36) | def test_fixture(self): FILE: corehq/ex-submodules/casexml/apps/case/tests/test_from_xform.py class CaseFromXFormTest (line 11) | class CaseFromXFormTest(TestCase): method setUp (line 13) | def setUp(self): method testCreate (line 16) | def testCreate(self): method testCreateThenUpdateInSeparateForms (line 24) | def testCreateThenUpdateInSeparateForms(self): method testCreateThenClose (line 57) | def testCreateThenClose(self): method _check_static_properties (line 72) | def _check_static_properties(self, case): method _check_transactions (line 81) | def _check_transactions(self, case, xforms): FILE: corehq/ex-submodules/casexml/apps/case/tests/test_get_case_property_changes.py class TestCasePropertyChanged (line 16) | class TestCasePropertyChanged(TestCase): method setUp (line 17) | def setUp(self): method tearDown (line 23) | def tearDown(self): method test_date_case_property_changed (line 27) | def test_date_case_property_changed(self): method test_multiple_cases_in_update (line 56) | def test_multiple_cases_in_update(self): method test_owner_id_changed (line 99) | def test_owner_id_changed(self): method test_name_changed (line 120) | def test_name_changed(self): method test_blank_change (line 136) | def test_blank_change(self): method test_case_rebuild (line 152) | def test_case_rebuild(self): FILE: corehq/ex-submodules/casexml/apps/case/tests/test_indexes.py class IndexSimpleTest (line 16) | class IndexSimpleTest(SimpleTestCase): method setUp (line 18) | def setUp(self): method testHasIndex (line 33) | def testHasIndex(self): method testGetIndex (line 38) | def testGetIndex(self): class IndexTest (line 46) | class IndexTest(TestCase): method setUpClass (line 52) | def setUpClass(cls): method tearDown (line 59) | def tearDown(self): method tearDownClass (line 64) | def tearDownClass(cls): method testIndexes (line 69) | def testIndexes(self): method testRelationshipGetsSet (line 139) | def testRelationshipGetsSet(self): method test_default_relationship (line 155) | def test_default_relationship(self): class CaseBlockIndexRelationshipTests (line 175) | class CaseBlockIndexRelationshipTests(SimpleTestCase): method test_case_block_index_supports_relationship (line 177) | def test_case_block_index_supports_relationship(self): method test_case_block_index_omit_child (line 206) | def test_case_block_index_omit_child(self): method test_case_block_index_default_relationship (line 235) | def test_case_block_index_default_relationship(self): method test_case_block_index_valid_relationship (line 264) | def test_case_block_index_valid_relationship(self): FILE: corehq/ex-submodules/casexml/apps/case/tests/test_multi_case_submits.py class MultiCaseTest (line 8) | class MultiCaseTest(TestCase): method setUp (line 10) | def setUp(self): method testParallel (line 16) | def testParallel(self): method testMixed (line 25) | def testMixed(self): method testCasesInRepeats (line 33) | def testCasesInRepeats(self): method _check_ids (line 41) | def _check_ids(self, form, cases): FILE: corehq/ex-submodules/casexml/apps/case/tests/test_multimedia.py class BaseCaseMultimediaTest (line 38) | class BaseCaseMultimediaTest(TestCase, TestFileMixin): method setUp (line 43) | def setUp(self): method _formatXForm (line 49) | def _formatXForm(self, doc_id, raw_xml, attachment_block, date=None): method _prepAttachments (line 61) | def _prepAttachments(self, new_attachments, removes=[]): method _singleAttachBlock (line 77) | def _singleAttachBlock(self, key): method _singleAttachRemoveBlock (line 80) | def _singleAttachRemoveBlock(self, key): method _attachmentFileStream (line 83) | def _attachmentFileStream(self, key): method _calc_file_hash (line 88) | def _calc_file_hash(self, key): method _do_submit (line 92) | def _do_submit(self, xml_data, dict_attachments, sync_token=None, date... method _submit_and_verify (line 113) | def _submit_and_verify(self, doc_id, xml_data, dict_attachments, method _doCreateCaseWithMultimedia (line 129) | def _doCreateCaseWithMultimedia(self, attachments=['fruity_file']): method _doSubmitUpdateWithMultimedia (line 135) | def _doSubmitUpdateWithMultimedia(self, new_attachments=None, removes=... class CaseMultimediaTest (line 148) | class CaseMultimediaTest(BaseCaseMultimediaTest): method testAttachInCreate (line 153) | def testAttachInCreate(self): method testArchiveAfterAttach (line 164) | def testArchiveAfterAttach(self): method testAttachRemoveSingle (line 179) | def testAttachRemoveSingle(self): method testAttachRemoveMultiple (line 193) | def testAttachRemoveMultiple(self): method testOTARestoreSingle (line 203) | def testOTARestoreSingle(self): method testOTARestoreMultiple (line 209) | def testOTARestoreMultiple(self): method _validateOTARestore (line 217) | def _validateOTARestore(self, domain, case_id, restore_attachments): method testAttachInUpdate (line 236) | def testAttachInUpdate(self): method test_sync_log_invalidation_bug (line 252) | def test_sync_log_invalidation_bug(self): class CaseMultimediaS3DBTest (line 266) | class CaseMultimediaS3DBTest(BaseCaseMultimediaTest): method setUp (line 272) | def setUp(self): method tearDown (line 280) | def tearDown(self): method test_case_attachment (line 284) | def test_case_attachment(self): FILE: corehq/ex-submodules/casexml/apps/case/tests/test_out_of_order_processing.py class OutOfOrderCaseTest (line 9) | class OutOfOrderCaseTest(TestCase): method setUp (line 11) | def setUp(self): method testOutOfOrderSubmissions (line 16) | def testOutOfOrderSubmissions(self): FILE: corehq/ex-submodules/casexml/apps/case/tests/test_rebuild.py function _post_util (line 19) | def _post_util(create=False, case_id=None, user_id=None, owner_id=None, class CaseRebuildTest (line 39) | class CaseRebuildTest(TestCase): method setUpClass (line 42) | def setUpClass(cls): method test_rebuild_empty (line 46) | def test_rebuild_empty(self): method _assertListEqual (line 52) | def _assertListEqual(self, l1, l2, include_ordering=True): method _assertListNotEqual (line 61) | def _assertListNotEqual(self, l1, l2, msg=None, include_ordering=True): method test_archiving_only_form (line 69) | def test_archiving_only_form(self): method test_form_archiving (line 96) | def test_form_archiving(self): method test_archie_modified_on (line 203) | def test_archie_modified_on(self): method test_archive_against_deleted_case (line 226) | def test_archive_against_deleted_case(self): method test_archive_removes_index (line 244) | def test_archive_removes_index(self): FILE: corehq/ex-submodules/casexml/apps/case/tests/test_strict_datetimes.py class StrictDatetimesTest (line 28) | class StrictDatetimesTest(TestCase): method setUpClass (line 31) | def setUpClass(cls): method test (line 36) | def test(self): function _make_form_from_case_blocks (line 45) | def _make_form_from_case_blocks(case_blocks): FILE: corehq/ex-submodules/casexml/apps/case/tests/test_v2_parsing.py class Version2CaseParsingTest (line 22) | class Version2CaseParsingTest(TestCase): method setUp (line 27) | def setUp(self): method tearDownClass (line 32) | def tearDownClass(cls): method testParseCreate (line 36) | def testParseCreate(self): method _test_parse_create (line 39) | def _test_parse_create(self): method testParseUpdate (line 54) | def testParseUpdate(self): method testParseNoop (line 69) | def testParseNoop(self): method testParseClose (line 83) | def testParseClose(self): method testParseNamedNamespace (line 94) | def testParseNamedNamespace(self): method testParseWithIndices (line 106) | def testParseWithIndices(self): method testParseCustomProperties (line 151) | def testParseCustomProperties(self): class SimpleParsingTests (line 183) | class SimpleParsingTests(SimpleTestCase): method test_index_block_not_dict (line 184) | def test_index_block_not_dict(self): method test_attachments_block_not_dict (line 192) | def test_attachments_block_not_dict(self): FILE: corehq/ex-submodules/casexml/apps/case/tests/test_xform.py class TestGetCaseUpdates (line 7) | class TestGetCaseUpdates(SimpleTestCase): method test_processes_single_case (line 12) | def test_processes_single_case(self): method test_processes_sub_case (line 32) | def test_processes_sub_case(self): method test_can_restrict_by_id (line 45) | def test_can_restrict_by_id(self): method _create_case_block (line 58) | def _create_case_block( method _create_case_update (line 75) | def _create_case_update( FILE: corehq/ex-submodules/casexml/apps/case/tests/test_xform_case_ids.py class TestXformCaseIds (line 12) | class TestXformCaseIds(SimpleTestCase): method test_basic (line 14) | def test_basic(self): method test_blocks_in_list (line 22) | def test_blocks_in_list(self): method test_blocks_in_repeat (line 29) | def test_blocks_in_repeat(self): function case_block (line 42) | def case_block(case_id): class FakeForm (line 47) | class FakeForm: method get_xml_element (line 50) | def get_xml_element(self): FILE: corehq/ex-submodules/casexml/apps/case/tests/util.py class _RestoreCaseBlock (line 22) | class _RestoreCaseBlock(object): method __init__ (line 30) | def __init__(self, xml_element, version=V2): method to_string (line 34) | def to_string(self): method get_case_id (line 37) | def get_case_id(self): method get_case_name (line 43) | def get_case_name(self): function bootstrap_case_from_xml (line 49) | def bootstrap_case_from_xml(test_class, filename, case_id_override=None,... function create_case (line 69) | def create_case(domain, case_type, **kwargs): function _replace_ids_in_xform_xml (line 82) | def _replace_ids_in_xform_xml(xml_data, case_id_override=None): function check_xml_line_by_line (line 94) | def check_xml_line_by_line(test_case, expected, actual, **kw): function get_case_xmlns (line 99) | def get_case_xmlns(version): function extract_caseblocks_from_xml (line 103) | def extract_caseblocks_from_xml(payload_string, version=V2): function _cached_restore (line 110) | def _cached_restore(testcase, user, restore_id="", version=V2, function deprecated_check_user_has_case (line 136) | def deprecated_check_user_has_case(testcase, user, case_blocks, should_h... function _check_payload_has_cases (line 162) | def _check_payload_has_cases(testcase, payload_string, username, case_bl... function delete_all_cases (line 219) | def delete_all_cases(): function delete_all_xforms (line 224) | def delete_all_xforms(): function delete_all_sync_logs (line 229) | def delete_all_sync_logs(): function delete_all_ledgers (line 234) | def delete_all_ledgers(): FILE: corehq/ex-submodules/casexml/apps/case/tests/xml/test_parser.py class CaseUpdateTests (line 6) | class CaseUpdateTests(SimpleTestCase): method test_constructor (line 7) | def test_constructor(self): method test_get_normalized_updates (line 30) | def test_get_normalized_updates(self): method test_equality (line 43) | def test_equality(self): method test_non_equality (line 55) | def test_non_equality(self): method _create_case_block (line 66) | def _create_case_block(self, create_block=None, update_block=None): class CaseActionTests (line 83) | class CaseActionTests(SimpleTestCase): method test_equality (line 84) | def test_equality(self): method test_non_equality (line 93) | def test_non_equality(self): FILE: corehq/ex-submodules/casexml/apps/case/util.py function validate_phone_datetime (line 20) | def validate_phone_datetime(datetime_string, none_ok=False, form_id=None): function create_real_cases_from_dummy_cases (line 40) | def create_real_cases_from_dummy_cases(cases): function prune_previous_log (line 68) | def prune_previous_log(sync_log): function primary_actions (line 76) | def primary_actions(case): function property_changed_in_action (line 80) | def property_changed_in_action(domain, case_transaction, case_id, case_p... function get_latest_property_change_to_value (line 106) | def get_latest_property_change_to_value(case, case_property_name, value): function get_datetime_case_property_changed (line 121) | def get_datetime_case_property_changed(case, case_property_name, value): function get_all_changes_to_case_property (line 132) | def get_all_changes_to_case_property(case, case_property_name): function get_paged_changes_to_case_property (line 148) | def get_paged_changes_to_case_property(case, case_property_name, start=0... function get_case_history (line 184) | def get_case_history(case): FILE: corehq/ex-submodules/casexml/apps/case/views.py function reference_case_attachment_view (line 7) | def reference_case_attachment_view(request, domain, case_id, attachment_... class CaseDisplayWrapper (line 11) | class CaseDisplayWrapper(object): method __init__ (line 13) | def __init__(self, case): method actions (line 16) | def actions(self): method to_full_dict (line 20) | def to_full_dict(self): method get_display_config (line 30) | def get_display_config(self): method dynamic_properties (line 48) | def dynamic_properties(self): method related_cases_columns (line 63) | def related_cases_columns(self): class SupplyPointDisplayWrapper (line 73) | class SupplyPointDisplayWrapper(CaseDisplayWrapper): method to_full_dict (line 75) | def to_full_dict(self): method get_display_config (line 95) | def get_display_config(self): function get_wrapped_case (line 112) | def get_wrapped_case(case): FILE: corehq/ex-submodules/casexml/apps/case/xform.py class CaseProcessingResult (line 20) | class CaseProcessingResult(object): method __init__ (line 25) | def __init__(self, domain, cases): method set_cases (line 29) | def set_cases(self, cases): function process_cases_with_casedb (line 33) | def process_cases_with_casedb(xforms, case_db): function _update_sync_logs (line 48) | def _update_sync_logs(xform, cases): function _get_or_update_cases (line 58) | def _get_or_update_cases(xforms, case_db): function _validate_indices (line 73) | def _validate_indices(case_db, case_updates): function _is_change_of_ownership (line 112) | def _is_change_of_ownership(previous_owner_id, next_owner_id): function close_extension_cases (line 120) | def close_extension_cases(case_db, cases, device_id, synctoken_id): function get_all_extensions_to_close (line 135) | def get_all_extensions_to_close(domain, cases): function get_extensions_to_close (line 141) | def get_extensions_to_close(domain, cases): function is_device_report (line 146) | def is_device_report(doc): function has_case_id (line 159) | def has_case_id(case_block): function extract_case_blocks (line 166) | def extract_case_blocks(doc, include_path=False): function _extract_case_blocks (line 190) | def _extract_case_blocks(data, path=None, form_id=Ellipsis): function get_case_updates (line 226) | def get_case_updates(xform, for_case=None): function order_updates (line 247) | def order_updates(case_updates): function _update_order_index (line 256) | def _update_order_index(update): function get_case_ids_from_form (line 266) | def get_case_ids_from_form(xform): FILE: corehq/ex-submodules/casexml/apps/case/xml/__init__.py function check_version (line 18) | def check_version(version): FILE: corehq/ex-submodules/casexml/apps/case/xml/generator.py function datetime_to_xml_string (line 12) | def datetime_to_xml_string(datetime_string): function safe_element (line 21) | def safe_element(tag, text=None): function date_to_xml_string (line 32) | def date_to_xml_string(date): function get_dynamic_element (line 44) | def get_dynamic_element(key, val): class CaseXMLGeneratorBase (line 60) | class CaseXMLGeneratorBase(object): method __init__ (line 65) | def __init__(self, case): method _ni (line 70) | def _ni(self): method get_root_element (line 73) | def get_root_element(self): method get_create_element (line 76) | def get_create_element(self): method get_update_element (line 79) | def get_update_element(self): method get_close_element (line 82) | def get_close_element(self): method get_index_element (line 85) | def get_index_element(self, index): method get_case_type_element (line 92) | def get_case_type_element(self): method get_user_id_element (line 95) | def get_user_id_element(self): method get_case_name_element (line 98) | def get_case_name_element(self): method get_external_id_element (line 101) | def get_external_id_element(self): method add_base_properties (line 104) | def add_base_properties(self, element): method add_custom_properties (line 108) | def add_custom_properties(self, element): method add_indices (line 112) | def add_indices(self, element): class V1CaseXMLGenerator (line 116) | class V1CaseXMLGenerator(CaseXMLGeneratorBase): method get_root_element (line 118) | def get_root_element(self): method get_case_type_element (line 127) | def get_case_type_element(self): method add_base_properties (line 130) | def add_base_properties(self, element): method add_custom_properties (line 138) | def add_custom_properties(self, element): method add_indices (line 145) | def add_indices(self, element): method add_attachments (line 151) | def add_attachments(self, element): class V2CaseXMLGenerator (line 155) | class V2CaseXMLGenerator(CaseXMLGeneratorBase): method get_root_element (line 157) | def get_root_element(self): method get_case_type_element (line 168) | def get_case_type_element(self): method add_base_properties (line 172) | def add_base_properties(self, element): method add_custom_properties (line 177) | def add_custom_properties(self, element): method add_indices (line 186) | def add_indices(self, element): method add_attachments (line 198) | def add_attachments(self, element): function _sync_attachments (line 217) | def _sync_attachments(domain): function get_generator (line 221) | def get_generator(version, case): class CaseDBXMLGenerator (line 232) | class CaseDBXMLGenerator(V2CaseXMLGenerator): method __init__ (line 234) | def __init__(self, case): method get_root_element (line 237) | def get_root_element(self): method add_base_properties (line 248) | def add_base_properties(self, element): method get_element (line 253) | def get_element(self): FILE: corehq/ex-submodules/casexml/apps/case/xml/parser.py function get_version (line 26) | def get_version(case_block): class CaseGenerationException (line 45) | class CaseGenerationException(Exception): function case_update_from_block (line 52) | def case_update_from_block(case_block): function case_id_from_block (line 57) | def case_id_from_block(case_block): class CaseActionBase (line 61) | class CaseActionBase(object): method __init__ (line 64) | def __init__(self, block, type=None, name=None, external_id=None, method get_known_properties (line 78) | def get_known_properties(self): method __repr__ (line 82) | def __repr__(self): method __eq__ (line 85) | def __eq__(self, other): method __ne__ (line 89) | def __ne__(self, other): method _from_block_and_mapping (line 93) | def _from_block_and_mapping(cls, block, mapping): method from_v1 (line 115) | def from_v1(cls, block): method from_v2 (line 119) | def from_v2(cls, block): class CaseNoopAction (line 142) | class CaseNoopAction(CaseActionBase): method get_known_properties (line 148) | def get_known_properties(self): class CaseCreateAction (line 152) | class CaseCreateAction(CaseActionBase): class CaseUpdateAction (line 156) | class CaseUpdateAction(CaseActionBase): class CaseCloseAction (line 160) | class CaseCloseAction(CaseActionBase): class AbstractAction (line 164) | class AbstractAction(object): method __init__ (line 166) | def __init__(self, action_type_slug): method get_known_properties (line 174) | def get_known_properties(self): class CaseAttachment (line 178) | class CaseAttachment(object): method __init__ (line 183) | def __init__(self, identifier, attachment_src, attachment_from, attach... method is_delete (line 197) | def is_delete(self): class CaseAttachmentAction (line 211) | class CaseAttachmentAction(CaseActionBase): method __init__ (line 214) | def __init__(self, block, attachments): method from_v1 (line 218) | def from_v1(cls, block): method from_v2 (line 223) | def from_v2(cls, block): class CaseIndex (line 241) | class CaseIndex(object): method __init__ (line 246) | def __init__(self, identifier, referenced_type, referenced_id, relatio... class CaseIndexAction (line 253) | class CaseIndexAction(CaseActionBase): method __init__ (line 259) | def __init__(self, block, indices): method get_known_properties (line 262) | def get_known_properties(self): method from_v1 (line 267) | def from_v1(cls, block): method from_v2 (line 272) | def from_v2(cls, block): class CaseUpdate (line 285) | class CaseUpdate(object): method __init__ (line 291) | def __init__(self, id, version, block, user_id="", modified_on_str=""): method guess_modified_on (line 325) | def guess_modified_on(self): method creates_case (line 331) | def creates_case(self): method updates_case (line 335) | def updates_case(self): method closes_case (line 339) | def closes_case(self): method has_indices (line 343) | def has_indices(self): method has_referrals (line 346) | def has_referrals(self): method has_attachments (line 349) | def has_attachments(self): method __str__ (line 352) | def __str__(self): method __repr__ (line 355) | def __repr__(self): method __eq__ (line 358) | def __eq__(self, other): method __ne__ (line 362) | def __ne__(self, other): method _filtered_action (line 365) | def _filtered_action(self, func): method get_create_action (line 372) | def get_create_action(self): method get_update_action (line 375) | def get_update_action(self): method get_close_action (line 378) | def get_close_action(self): method get_index_action (line 381) | def get_index_action(self): method get_attachment_action (line 384) | def get_attachment_action(self): method get_normalized_update_property_names (line 387) | def get_normalized_update_property_names(self): method from_v1 (line 401) | def from_v1(cls, case_block): method from_v2 (line 411) | def from_v2(cls, case_block): method v1_case_id_from (line 423) | def v1_case_id_from(cls, case_block): method v2_case_id_from (line 433) | def v2_case_id_from(cls, case_block): FILE: corehq/ex-submodules/casexml/apps/phone/admin.py class SyncLogSQLAdmin (line 5) | class SyncLogSQLAdmin(admin.ModelAdmin): FILE: corehq/ex-submodules/casexml/apps/phone/change_publishers.py function publish_synclog_saved (line 5) | def publish_synclog_saved(synclog): function change_meta_from_synclog (line 10) | def change_meta_from_synclog(synclog): FILE: corehq/ex-submodules/casexml/apps/phone/checksum.py class CaseStateHash (line 14) | class CaseStateHash(object): method __init__ (line 16) | def __init__(self, hash): method parse (line 20) | def parse(cls, str): method __str__ (line 24) | def __str__(self): method __eq__ (line 27) | def __eq__(self, obj): class Checksum (line 33) | class Checksum(object): method __init__ (line 52) | def __init__(self, init=None): method add (line 55) | def add(self, id): method hash (line 59) | def hash(cls, line): method xor (line 65) | def xor(cls, bytes1, bytes2): method hexdigest (line 69) | def hexdigest(self): FILE: corehq/ex-submodules/casexml/apps/phone/data_providers/case/livequery.py function do_livequery (line 42) | def do_livequery(timing_context, restore_state, response, async_task=None): function get_case_hierarchy (line 99) | def get_case_hierarchy(domain, cases): function get_all_related_live_cases (line 110) | def get_all_related_live_cases(domain, case_ids): function get_live_case_ids_and_indices (line 117) | def get_live_case_ids_and_indices(domain, owned_ids, timing_context): function discard_already_synced_cases (line 313) | def discard_already_synced_cases(live_ids, restore_state): class PrefetchIndexCaseAccessor (line 329) | class PrefetchIndexCaseAccessor: method __init__ (line 331) | def __init__(self, domain, indices): method get_cases (line 335) | def get_cases(self, case_ids, **kw): function batch_cases (line 343) | def batch_cases(accessor, case_ids): function init_progress (line 358) | def init_progress(async_task, total): function compile_response (line 376) | def compile_response( FILE: corehq/ex-submodules/casexml/apps/phone/data_providers/case/load_testing.py function transform_loadtest_update (line 9) | def transform_loadtest_update(update, factor): function get_xml_for_response (line 24) | def get_xml_for_response(case_sync_update, restore_state, total_cases): FILE: corehq/ex-submodules/casexml/apps/phone/data_providers/case/stock.py function get_stock_payload (line 14) | def get_stock_payload(project, stock_settings, case_stub_list): class StockPayloadGenerator (line 23) | class StockPayloadGenerator(object): method __init__ (line 24) | def __init__(self, domain_name, stock_settings, case_stub_list): method yield_sections (line 32) | def yield_sections(self): method _consumption_sections (line 54) | def _consumption_sections(self, case_stub, case_ledgers, section_times... method _entry_xml (line 93) | def _entry_xml(self, id, quantity): method _state_to_xml (line 99) | def _state_to_xml(self, state): method _consumption_entry (line 102) | def _consumption_entry(self, case_id, product_id, state): method _default_consumption_entry (line 109) | def _default_consumption_entry(self, case_id, product_id): FILE: corehq/ex-submodules/casexml/apps/phone/data_providers/case/utils.py class CaseSyncUpdate (line 9) | class CaseSyncUpdate(object): method __init__ (line 14) | def __init__(self, case, sync_token, required_updates=None): method _get_required_updates (line 20) | def _get_required_updates(self): function get_case_sync_updates (line 35) | def get_case_sync_updates(domain, cases, last_sync_log): FILE: corehq/ex-submodules/casexml/apps/phone/document_store.py class SyncLogDocumentStore (line 5) | class SyncLogDocumentStore(DjangoDocumentStore): method __init__ (line 6) | def __init__(self): method iter_document_ids (line 13) | def iter_document_ids(self): FILE: corehq/ex-submodules/casexml/apps/phone/exceptions.py class RestoreException (line 4) | class RestoreException(ValueError, CommCareCaseError): class BadStateException (line 11) | class BadStateException(RestoreException): method __init__ (line 17) | def __init__(self, server_hash, phone_hash, case_ids, **kwargs): method __str__ (line 23) | def __str__(self): class BadVersionException (line 28) | class BadVersionException(RestoreException): class InvalidSyncLogException (line 35) | class InvalidSyncLogException(Exception): class MissingSyncLog (line 39) | class MissingSyncLog(InvalidSyncLogException): class SyncLogUserMismatch (line 43) | class SyncLogUserMismatch(InvalidSyncLogException): class IncompatibleSyncLogType (line 47) | class IncompatibleSyncLogType(InvalidSyncLogException): class SyncLogCachingError (line 51) | class SyncLogCachingError(Exception): class CouldNotRetrieveSyncLogIds (line 55) | class CouldNotRetrieveSyncLogIds(Exception): FILE: corehq/ex-submodules/casexml/apps/phone/fixtures.py class FixtureProvider (line 12) | class FixtureProvider(metaclass=ABCMeta): method id (line 14) | def id(self): method __call__ (line 19) | def __call__(self, restore_state): function _fixture_generators (line 24) | def _fixture_generators(): function get_fixture_elements (line 52) | def get_fixture_elements(restore_state, timing_context): FILE: corehq/ex-submodules/casexml/apps/phone/management/commands/invalidate_sync_heads.py class Command (line 8) | class Command(BaseCommand): method add_arguments (line 14) | def add_arguments(self, parser): method handle (line 18) | def handle(self, user_id, date, **options): FILE: corehq/ex-submodules/casexml/apps/phone/management/commands/sync_log_debugger.py class Command (line 8) | class Command(BaseCommand): method add_arguments (line 30) | def add_arguments(self, parser): method handle (line 71) | def handle(self, sync_logs, **options): function _brute_force_search (line 123) | def _brute_force_search(case_id_set, expected_hash, diff=None, depth=1): function _get_hash (line 140) | def _get_hash(ids): FILE: corehq/ex-submodules/casexml/apps/phone/management/commands/sync_log_profile.py class Command (line 7) | class Command(BaseCommand): method handle (line 12) | def handle(self, filename, *args, **kwargs): FILE: corehq/ex-submodules/casexml/apps/phone/middleware.py class SyncTokenMiddleware (line 6) | class SyncTokenMiddleware(MiddlewareMixin): method process_request (line 12) | def process_request(self, request): FILE: corehq/ex-submodules/casexml/apps/phone/migrations/0001_initial.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/casexml/apps/phone/migrations/0002_synclogsql.py function add_partitions (line 9) | def add_partitions(apps, schema_editor): class Migration (line 13) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/casexml/apps/phone/migrations/0003_auto_20190405_1752.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/casexml/apps/phone/migrations/0004_auto_20191021_1308.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/casexml/apps/phone/migrations/0005_auto_20210119_1001.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/casexml/apps/phone/migrations/0006_synclogsql_auth_type.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/casexml/apps/phone/migrations/0007_delete_ownershipcleanlinessflag.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/casexml/apps/phone/models.py function _get_logger (line 46) | def _get_logger(): class OTARestoreUser (line 52) | class OTARestoreUser(object): method __init__ (line 60) | def __init__(self, domain, couch_user, loadtest_factor=1, request_user... method user_id (line 67) | def user_id(self): method loadtest_factor (line 71) | def loadtest_factor(self): method full_username (line 84) | def full_username(self): method username (line 88) | def username(self): method password (line 92) | def password(self): method user_session_data (line 96) | def user_session_data(self): method date_joined (line 100) | def date_joined(self): method project (line 105) | def project(self): method request_user_id (line 109) | def request_user_id(self): method sql_location (line 114) | def sql_location(self): method get_role (line 118) | def get_role(self, domain): method get_sql_locations (line 121) | def get_sql_locations(self, domain): method get_location_ids (line 124) | def get_location_ids(self, domain): method get_fixture_data_items (line 127) | def get_fixture_data_items(self): method get_commtrack_location_id (line 130) | def get_commtrack_location_id(self): method get_owner_ids (line 133) | def get_owner_ids(self): method get_call_center_indicators (line 136) | def get_call_center_indicators(self, config): method get_case_sharing_groups (line 139) | def get_case_sharing_groups(self): method get_ucr_filter_value (line 142) | def get_ucr_filter_value(self, ucr_filter, ui_filter): class OTARestoreWebUser (line 146) | class OTARestoreWebUser(OTARestoreUser): method __init__ (line 148) | def __init__(self, domain, couch_user, **kwargs): method get_fixture_data_items (line 154) | def get_fixture_data_items(self): method get_commtrack_location_id (line 157) | def get_commtrack_location_id(self): method get_call_center_indicators (line 160) | def get_call_center_indicators(self, config): method get_usercase_id (line 163) | def get_usercase_id(self): class OTARestoreCommCareUser (line 167) | class OTARestoreCommCareUser(OTARestoreUser): method __init__ (line 169) | def __init__(self, domain, couch_user, **kwargs): method get_fixture_data_items (line 175) | def get_fixture_data_items(self): method get_commtrack_location_id (line 180) | def get_commtrack_location_id(self): method get_call_center_indicators (line 185) | def get_call_center_indicators(self, config): method get_usercase_id (line 196) | def get_usercase_id(self): class SyncLogAssertionError (line 200) | class SyncLogAssertionError(AssertionError): method __init__ (line 202) | def __init__(self, case_id, *args, **kwargs): class UCRSyncLog (line 211) | class UCRSyncLog(Document): class AbstractSyncLog (line 216) | class AbstractSyncLog(SafeSaveDocument): method wrap (line 251) | def wrap(cls, data): method save (line 257) | def save(self): method delete (line 260) | def delete(self): method case_count (line 264) | def case_count(self): method phone_is_holding_case (line 270) | def phone_is_holding_case(self, case_id): method get_footprint_of_cases_on_phone (line 273) | def get_footprint_of_cases_on_phone(self): method get_state_hash (line 280) | def get_state_hash(self): method update_phone_lists (line 283) | def update_phone_lists(self, xform, case_list): method from_other_format (line 291) | def from_other_format(cls, other_sync_log): function save_synclog_to_sql (line 301) | def save_synclog_to_sql(synclog_json_object): function delete_synclogs (line 307) | def delete_synclogs(current_synclog): function synclog_to_sql_object (line 325) | def synclog_to_sql_object(synclog_json_object): class SyncLogSQL (line 367) | class SyncLogSQL(models.Model): method save (line 396) | def save(self, *args, **kwargs): class IndexTree (line 408) | class IndexTree(DocumentSchema): method reverse_indices (line 418) | def reverse_indices(self): method __repr__ (line 421) | def __repr__(self): method get_all_dependencies (line 425) | def get_all_dependencies(case_id, child_index_tree, extension_index_tr... method get_all_outgoing_cases (line 450) | def get_all_outgoing_cases(case_id, child_index_tree, extension_index_... method traverse_incoming_extensions (line 464) | def traverse_incoming_extensions(case_id, extension_index_tree, closed... method get_cases_that_directly_depend_on_case (line 480) | def get_cases_that_directly_depend_on_case(self, case_id): method delete_index (line 483) | def delete_index(self, from_case_id, index_name): method set_index (line 490) | def set_index(self, from_case_id, index_name, to_case_id): method _clear_index_caches (line 496) | def _clear_index_caches(self): method apply_updates (line 506) | def apply_updates(self, other_tree): function _reverse_index_map (line 521) | def _reverse_index_map(index_map): class SimplifiedSyncLog (line 529) | class SimplifiedSyncLog(AbstractSyncLog): method purged_cases (line 552) | def purged_cases(self): method is_formplayer (line 558) | def is_formplayer(self): method case_count (line 561) | def case_count(self): method phone_is_holding_case (line 564) | def phone_is_holding_case(self, case_id): method get_footprint_of_cases_on_phone (line 570) | def get_footprint_of_cases_on_phone(self): method primary_case_ids (line 574) | def primary_case_ids(self): method purge (line 577) | def purge(self, case_id, xform_id=None): method _get_relevant_cases (line 623) | def _get_relevant_cases(self, case_id): method _get_available_cases (line 637) | def _get_available_cases(self, relevant): method _get_live_cases (line 660) | def _get_live_cases(self, available): method _remove_cases_purge_indices (line 690) | def _remove_cases_purge_indices(self, all_to_remove, checked_case_id, ... method _remove_case (line 703) | def _remove_case(self, to_remove, all_to_remove, checked_case_id, xfor... method _add_primary_case (line 728) | def _add_primary_case(self, case_id): method _add_index (line 733) | def _add_index(self, index, case_update): method _add_extension_index (line 741) | def _add_extension_index(self, index, case_update): method _add_child_index (line 752) | def _add_child_index(self, index): method _delete_index (line 756) | def _delete_index(self, index): method update_phone_lists (line 760) | def update_phone_lists(self, xform, case_list): class CaseUpdate (line 913) | class CaseUpdate: method __init__ (line 915) | def __init__(self, case_id, owner_ids_on_phone): method extension_indices_to_add (line 925) | def extension_indices_to_add(self): method has_extension_indices_to_add (line 929) | def has_extension_indices_to_add(self): method is_live (line 933) | def is_live(self): function get_properly_wrapped_sync_log (line 954) | def get_properly_wrapped_sync_log(doc_id): function properly_wrap_sync_log (line 972) | def properly_wrap_sync_log(doc, synclog_sql=None): FILE: corehq/ex-submodules/casexml/apps/phone/restore.py function stream_response (line 71) | def stream_response(payload, headers=None, status=200): class StockSettings (line 86) | class StockSettings(object): method __init__ (line 88) | def __init__(self, section_to_consumption_types=None, consumption_conf... class RestoreContent (line 106) | class RestoreContent(object): method __init__ (line 114) | def __init__(self, username=None, items=False): method __enter__ (line 119) | def __enter__(self): method __exit__ (line 123) | def __exit__(self, exc_type, exc_val, exc_tb): method append (line 126) | def append(self, xml_element): method extend (line 135) | def extend(self, iterable): method _write_to_file (line 139) | def _write_to_file(self, fileobj): method get_fileobj (line 153) | def get_fileobj(self): class RestoreResponse (line 164) | class RestoreResponse(object): method __init__ (line 166) | def __init__(self, fileobj): method as_file (line 169) | def as_file(self): method as_string (line 172) | def as_string(self): method get_http_response (line 182) | def get_http_response(self): class AsyncRestoreResponse (line 189) | class AsyncRestoreResponse(object): method __init__ (line 191) | def __init__(self, task, username): method compile_response (line 202) | def compile_response(self): method get_http_response (line 213) | def get_http_response(self): class CachedResponse (line 223) | class CachedResponse(object): method __init__ (line 225) | def __init__(self, name): method save_for_later (line 236) | def save_for_later(cls, fileobj, timeout, domain, restore_user_id): method __bool__ (line 254) | def __bool__(self): method as_string (line 262) | def as_string(self): method as_file (line 266) | def as_file(self): method get_http_response (line 274) | def get_http_response(self): class RestoreParams (line 280) | class RestoreParams(object): method __init__ (line 293) | def __init__(self, method app_id (line 313) | def app_id(self): method is_webapps (line 317) | def is_webapps(self): method __repr__ (line 320) | def __repr__(self): class RestoreCacheSettings (line 329) | class RestoreCacheSettings(object): method __init__ (line 339) | def __init__(self, force_cache=False, cache_timeout=None, overwrite_ca... method __repr__ (line 344) | def __repr__(self): class RestoreState (line 352) | class RestoreState: method __init__ (line 361) | def __init__( method validate_state (line 390) | def validate_state(self): method last_sync_log (line 420) | def last_sync_log(self): method is_initial (line 439) | def is_initial(self): method version (line 443) | def version(self): method owner_ids (line 448) | def owner_ids(self): method stock_settings (line 453) | def stock_settings(self): method is_first_extension_sync (line 460) | def is_first_extension_sync(self): method start_sync (line 467) | def start_sync(self): method finish_sync (line 471) | def finish_sync(self): method _new_sync_log (line 476) | def _new_sync_log(self): method get_safe_loadtest_factor (line 497) | def get_safe_loadtest_factor(self, total_cases: int) -> int: method __repr__ (line 507) | def __repr__(self): class RestoreConfig (line 517) | class RestoreConfig(object): method __init__ (line 529) | def __init__(self, project=None, restore_user=None, params=None, method sync_log (line 558) | def sync_log(self): method async_restore_task_id_cache (line 562) | def async_restore_task_id_cache(self): method restore_payload_path_cache (line 571) | def restore_payload_path_cache(self): method initial_restore_payload_path_cache (line 580) | def initial_restore_payload_path_cache(self): method get_response (line 588) | def get_response(self): method get_payload (line 614) | def get_payload(self): method validate (line 637) | def validate(self): method get_cached_response (line 644) | def get_cached_response(self): method generate_payload (line 652) | def generate_payload(self, async_task=None): method _get_asynchronous_payload (line 675) | def _get_asynchronous_payload(self): method _get_task_timeout (line 716) | def _get_task_timeout(self, new_task): method _generate_restore_response (line 722) | def _generate_restore_response(self, async_task=None): method set_cached_payload_if_necessary (line 745) | def set_cached_payload_if_necessary(self, fileobj, duration, is_async): method delete_cached_payload_if_necessary (line 771) | def delete_cached_payload_if_necessary(self): method delete_initial_cached_payload_if_necessary (line 775) | def delete_initial_cached_payload_if_necessary(self): method _record_timing (line 784) | def _record_timing(self, status): method __repr__ (line 844) | def __repr__(self): FILE: corehq/ex-submodules/casexml/apps/phone/restore_caching.py class _CacheAccessor (line 16) | class _CacheAccessor(object): method exists (line 21) | def exists(self): method get_value (line 25) | def get_value(self): method set_value (line 29) | def set_value(self, value, timeout=None): method invalidate (line 35) | def invalidate(self): function get_loadtest_factor_for_restore_cache_key (line 41) | def get_loadtest_factor_for_restore_cache_key(domain, user_id): function _get_new_arbitrary_value (line 50) | def _get_new_arbitrary_value(): function _get_domain_freshness_token (line 56) | def _get_domain_freshness_token(domain): function _get_user_freshness_token (line 61) | def _get_user_freshness_token(domain, user_id): function invalidate_restore_cache (line 65) | def invalidate_restore_cache(domain, user_id=Ellipsis): class _RestoreCache (line 74) | class _RestoreCache(_CacheAccessor): method __init__ (line 77) | def __init__(self, domain, user_id, sync_log_id, device_id): method _make_cache_key (line 82) | def _make_cache_key(cls, domain, user_id, sync_log_id, device_id): class RestorePayloadPathCache (line 96) | class RestorePayloadPathCache(_RestoreCache): class AsyncRestoreTaskIdCache (line 101) | class AsyncRestoreTaskIdCache(_RestoreCache): FILE: corehq/ex-submodules/casexml/apps/phone/tasks.py function get_async_restore_payload (line 24) | def get_async_restore_payload(restore_config, domain=None, username=None): function prune_synclogs (line 51) | def prune_synclogs(): FILE: corehq/ex-submodules/casexml/apps/phone/tests/dbaccessors.py function get_all_sync_logs_docs (line 6) | def get_all_sync_logs_docs(): FILE: corehq/ex-submodules/casexml/apps/phone/tests/dummy.py function dummy_user_xml (line 11) | def dummy_user_xml(user=None): function dummy_restore_xml (line 37) | def dummy_restore_xml(restore_id, case_xml="", items=None, user=None): FILE: corehq/ex-submodules/casexml/apps/phone/tests/test_async_restore.py class BaseAsyncRestoreTest (line 34) | class BaseAsyncRestoreTest(TestCase): method setUpClass (line 37) | def setUpClass(cls): method tearDownClass (line 48) | def tearDownClass(cls): method _restore_config (line 55) | def _restore_config(self, is_async=True, sync_log_id='', overwrite_cac... class AsyncRestoreTest (line 69) | class AsyncRestoreTest(BaseAsyncRestoreTest): method test_regular_restore_doesnt_start_task (line 71) | def test_regular_restore_doesnt_start_task(self, task): method test_first_async_restore_kicks_off_task (line 79) | def test_first_async_restore_kicks_off_task(self, task): method test_restore_then_sync_on_same_synclog_returns_async_restore_response (line 89) | def test_restore_then_sync_on_same_synclog_returns_async_restore_respo... method test_subsequent_syncs_when_job_complete (line 103) | def test_subsequent_syncs_when_job_complete(self): method test_completed_task_deletes_cache (line 139) | def test_completed_task_deletes_cache(self): method test_completed_task_creates_sync_log (line 153) | def test_completed_task_creates_sync_log(self): method test_submit_form_no_userid (line 166) | def test_submit_form_no_userid(self): class ShardedAsyncRestoreTest (line 178) | class ShardedAsyncRestoreTest(BaseAsyncRestoreTest): method test_restore_in_progress_form_submitted_kills_old_jobs (line 181) | def test_restore_in_progress_form_submitted_kills_old_jobs(self): method test_submit_form_no_userid (line 234) | def test_submit_form_no_userid(self): method test_clears_cache (line 249) | def test_clears_cache(self, task, response, exists_patch, invalidate): class TestAsyncRestoreResponse (line 263) | class TestAsyncRestoreResponse(TestXmlMixin, SimpleTestCase): method setUp (line 264) | def setUp(self): method test_response (line 272) | def test_response(self): method test_html_response (line 288) | def test_html_response(self): FILE: corehq/ex-submodules/casexml/apps/phone/tests/test_extension_indexes.py function get_test_file_json (line 15) | def get_test_file_json(filename): function get_test_name (line 26) | def get_test_name(test_name): function test_generator (line 31) | def test_generator(skip=False, **test): function assert_each_test_is_unique (line 62) | def assert_each_test_is_unique(tests_to_run): class SequenceTestMeta (line 94) | class SequenceTestMeta(type): method __new__ (line 96) | def __new__(mcs, name, bases, dict): class IndexTreeTest (line 113) | class IndexTreeTest(BaseSyncTest, metaclass=SequenceTestMeta): method get_all_case_names (line 134) | def get_all_case_names(self, test): method build_case_structures (line 143) | def build_case_structures(self, test): FILE: corehq/ex-submodules/casexml/apps/phone/tests/test_index_tree.py class TestExtendedFootprint (line 5) | class TestExtendedFootprint(SimpleTestCase): method test_simple_linear_structure (line 7) | def test_simple_linear_structure(self): method test_multiple_children (line 16) | def test_multiple_children(self): method test_simple_extension (line 26) | def test_simple_extension(self): method test_extension_long_chain (line 35) | def test_extension_long_chain(self): method test_child_and_extension (line 50) | def test_child_and_extension(self): method test_multiple_indices (line 77) | def test_multiple_indices(self): class PurgingTest (line 103) | class PurgingTest(SimpleTestCase): method test_purge_parent_then_child (line 105) | def test_purge_parent_then_child(self): method test_purge_child_then_parent (line 123) | def test_purge_child_then_parent(self): method test_purge_tiered_top_down (line 142) | def test_purge_tiered_top_down(self): method test_purge_tiered_bottom_up (line 174) | def test_purge_tiered_bottom_up(self): method test_purge_multiple_children (line 197) | def test_purge_multiple_children(self): method test_purge_partial_children (line 229) | def test_purge_partial_children(self): method test_purge_multiple_parents (line 243) | def test_purge_multiple_parents(self): method test_purge_circular_loops (line 267) | def test_purge_circular_loops(self): method test_purge_very_circular_loops (line 285) | def test_purge_very_circular_loops(self): method test_purge_self_indexing (line 304) | def test_purge_self_indexing(self): class ExtensionCasesPurgingTest (line 315) | class ExtensionCasesPurgingTest(SimpleTestCase): method test_purge_host (line 317) | def test_purge_host(self, ): method test_purge_extension (line 332) | def test_purge_extension(self, ): method test_purge_host_extension_has_extension (line 347) | def test_purge_host_extension_has_extension(self): method test_purge_host_has_multiple_extensions (line 363) | def test_purge_host_has_multiple_extensions(self): method test_purge_extension_host_has_multiple_extensions (line 379) | def test_purge_extension_host_has_multiple_extensions(self): method test_purge_extension_non_dependent_host (line 395) | def test_purge_extension_non_dependent_host(self): method test_purge_child_of_extension (line 408) | def test_purge_child_of_extension(self): method test_purge_extension_host_is_parent (line 428) | def test_purge_extension_host_is_parent(self): method test_open_extension_of_extension (line 448) | def test_open_extension_of_extension(self): method test_open_child_of_extension (line 465) | def test_open_child_of_extension(self): function convert_list_to_dict (line 487) | def convert_list_to_dict(a_list): FILE: corehq/ex-submodules/casexml/apps/phone/tests/test_new_sync.py class TestLiveQuery (line 10) | class TestLiveQuery(TestCase): method setUpClass (line 13) | def setUpClass(cls): method tearDownClass (line 24) | def tearDownClass(cls): FILE: corehq/ex-submodules/casexml/apps/phone/tests/test_ota_fixtures.py class OtaFixtureTest (line 25) | class OtaFixtureTest(TestCase): method setUpClass (line 28) | def setUpClass(cls): method test_skip_fixture (line 50) | def test_skip_fixture(self): method test_fixture_ownership (line 58) | def test_fixture_ownership(self): function make_item_lists (line 66) | def make_item_lists(tag, item_name, group=None): FILE: corehq/ex-submodules/casexml/apps/phone/tests/test_ota_restore.py function get_registration_xml (line 35) | def get_registration_xml(restore_user): function _expected_payload (line 39) | def _expected_payload(key, val): class SimpleOtaRestoreTest (line 47) | class SimpleOtaRestoreTest(TestCase): method setUp (line 49) | def setUp(self): method tearDown (line 53) | def tearDown(self): method test_registration_xml (line 57) | def test_registration_xml(self): method test_username_doesnt_have_domain (line 62) | def test_username_doesnt_have_domain(self): method test_name_and_number (line 67) | def test_name_and_number(self): class BaseOtaRestoreTest (line 80) | class BaseOtaRestoreTest(TestCase, TestFileMixin): method setUpClass (line 85) | def setUpClass(cls): method tearDownClass (line 93) | def tearDownClass(cls): method setUp (line 97) | def setUp(self): method tearDown (line 102) | def tearDown(self): class OtaRestoreTest (line 110) | class OtaRestoreTest(BaseOtaRestoreTest): method _get_the_first_synclog (line 112) | def _get_the_first_synclog(self): method _get_synclog_count (line 115) | def _get_synclog_count(self): method test_user_restore (line 118) | def test_user_restore(self): method testOverwriteCache (line 129) | def testOverwriteCache(self): method testDifferentDeviceCache (line 143) | def testDifferentDeviceCache(self): method testUserRestoreWithCase (line 157) | def testUserRestoreWithCase(self): method testSyncTokenWithItems (line 223) | def testSyncTokenWithItems(self): method testSyncTokenWithoutItems (line 226) | def testSyncTokenWithoutItems(self): method _test_sync_token (line 229) | def _test_sync_token(self, items): method testRestoreAttributes (line 302) | def testRestoreAttributes(self): method testRestoreDeletedIndex (line 322) | def testRestoreDeletedIndex(self): class WebUserOtaRestoreTest (line 382) | class WebUserOtaRestoreTest(OtaRestoreTest): method setUp (line 385) | def setUp(self): method test_location_ids_in_restore (line 390) | def test_location_ids_in_restore(self): FILE: corehq/ex-submodules/casexml/apps/phone/tests/test_ota_restore_v3.py class OtaV3RestoreTest (line 15) | class OtaV3RestoreTest(TestCase): method setUp (line 18) | def setUp(self): method tearDown (line 26) | def tearDown(self): method testUserRestoreWithCase (line 29) | def testUserRestoreWithCase(self): class TestRestoreContent (line 44) | class TestRestoreContent(SimpleTestCase): method _expected (line 46) | def _expected(self, username, body, items=None): method test_no_items (line 59) | def test_no_items(self): method test_items (line 68) | def test_items(self): FILE: corehq/ex-submodules/casexml/apps/phone/tests/test_prune.py class SyncLogPruneTest (line 19) | class SyncLogPruneTest(TestCase, DocTestMixin): method setUpClass (line 23) | def setUpClass(cls): method tearDownClass (line 31) | def tearDownClass(cls): method test_count_delete_queries (line 36) | def test_count_delete_queries(self): method _oldest_synclog (line 51) | def _oldest_synclog(self, user_id): FILE: corehq/ex-submodules/casexml/apps/phone/tests/test_restore_user.py function _get_domain (line 13) | def _get_domain(name): function test_get_commtrack_location_id (line 21) | def test_get_commtrack_location_id(): function test_user_types (line 37) | def test_user_types(user, expected_type): FILE: corehq/ex-submodules/casexml/apps/phone/tests/test_state_hash.py class StateHashTest (line 15) | class StateHashTest(TestCase): method setUpClass (line 18) | def setUpClass(cls): method setUp (line 25) | def setUp(self): method tearDownClass (line 36) | def tearDownClass(cls): method testEmpty (line 41) | def testEmpty(self): method testMismatch (line 60) | def testMismatch(self): method testMismatchIgnoredForWebApps (line 83) | def testMismatchIgnoredForWebApps(self): FILE: corehq/ex-submodules/casexml/apps/phone/tests/test_sync_log_assertions.py class SyncLogAssertionTest (line 15) | class SyncLogAssertionTest(TestCase): method test_update_dependent_case (line 17) | def test_update_dependent_case(self): method test_update_dependent_case_owner_still_present (line 39) | def test_update_dependent_case_owner_still_present(self): FILE: corehq/ex-submodules/casexml/apps/phone/tests/test_sync_logs.py class SyncLogModelTest (line 15) | class SyncLogModelTest(TestCase): method setUpClass (line 19) | def setUpClass(cls): method tearDownClass (line 26) | def tearDownClass(cls): method test_basic_properties (line 30) | def test_basic_properties(self): method test_build_id (line 37) | def test_build_id(self): FILE: corehq/ex-submodules/casexml/apps/phone/tests/test_sync_mode.py class BaseSyncTest (line 50) | class BaseSyncTest(TestCase): method setUpClass (line 56) | def setUpClass(cls): method setUp (line 69) | def setUp(self): method tearDown (line 77) | def tearDown(self): method get_device (line 85) | def get_device(self, **kw): method _checkLists (line 91) | def _checkLists(self, l1, l2, msg=None): method _testUpdate (line 94) | def _testUpdate(self, sync_log_or_id, case_ids, dependent_case_ids=None): class DeprecatedBaseSyncTest (line 109) | class DeprecatedBaseSyncTest(BaseSyncTest): method setUp (line 116) | def setUp(self): class SyncTokenUpdateTest (line 126) | class SyncTokenUpdateTest(BaseSyncTest): method testInitialEmpty (line 132) | def testInitialEmpty(self): method testOwnUpdatesDontSync (line 138) | def testOwnUpdatesDontSync(self): method test_change_index_type (line 153) | def test_change_index_type(self): method test_change_index_id (line 166) | def test_change_index_id(self): method test_add_multiple_indices (line 185) | def test_add_multiple_indices(self): method test_delete_only_index (line 205) | def test_delete_only_index(self): method test_delete_one_of_multiple_indices (line 216) | def test_delete_one_of_multiple_indices(self): method test_delete_extension_index_removes_case (line 254) | def test_delete_extension_index_removes_case(self): method _initialize_parent_child (line 284) | def _initialize_parent_child(self): method testClosedParentIndex (line 301) | def testClosedParentIndex(self): method testAssignToNewOwner (line 332) | def testAssignToNewOwner(self): method testArchiveUpdates (line 361) | def testArchiveUpdates(self): method testUserLoggedIntoMultipleDevices (line 388) | def testUserLoggedIntoMultipleDevices(self): method test_tiered_parent_closing (line 406) | def test_tiered_parent_closing(self): method test_create_immediately_irrelevant_parent_case (line 444) | def test_create_immediately_irrelevant_parent_case(self): method test_index_case_not_on_device (line 468) | def test_index_case_not_on_device(self): method test_closed_case_not_in_next_sync (line 501) | def test_closed_case_not_in_next_sync(self): method test_sync_by_user_id (line 515) | def test_sync_by_user_id(self): method test_create_irrelevant_owner_and_update_to_irrelevant_owner_in_same_form (line 523) | def test_create_irrelevant_owner_and_update_to_irrelevant_owner_in_sam... method test_create_irrelevant_owner_and_update_to_relevant_owner_in_same_form (line 532) | def test_create_irrelevant_owner_and_update_to_relevant_owner_in_same_... method test_create_relevant_owner_and_update_to_empty_owner_in_same_form (line 545) | def test_create_relevant_owner_and_update_to_empty_owner_in_same_form(... method test_create_irrelevant_owner_and_update_to_empty_owner_in_same_form (line 557) | def test_create_irrelevant_owner_and_update_to_empty_owner_in_same_for... method test_create_relevant_owner_then_submit_again_with_no_owner (line 569) | def test_create_relevant_owner_then_submit_again_with_no_owner(self): method test_create_irrelevant_owner_then_submit_again_with_no_owner (line 581) | def test_create_irrelevant_owner_then_submit_again_with_no_owner(self): method test_create_irrelevant_child_case_and_close_parent_in_same_form (line 593) | def test_create_irrelevant_child_case_and_close_parent_in_same_form(se... method test_create_closed_child_case_and_close_parent_in_same_form (line 618) | def test_create_closed_child_case_and_close_parent_in_same_form(self): method test_create_irrelevant_owner_and_close_in_same_form (line 644) | def test_create_irrelevant_owner_and_close_in_same_form(self): method test_reassign_and_close_in_same_form (line 648) | def test_reassign_and_close_in_same_form(self): method test_index_after_close (line 659) | def test_index_after_close(self): method test_index_chain_with_closed_parents (line 684) | def test_index_chain_with_closed_parents(self): method test_reassign_case_and_sync (line 715) | def test_reassign_case_and_sync(self): method test_cousins (line 729) | def test_cousins(self): class SyncDeletedCasesTest (line 768) | class SyncDeletedCasesTest(BaseSyncTest): method test_deleted_case_doesnt_sync (line 770) | def test_deleted_case_doesnt_sync(self): method test_deleted_parent_doesnt_sync (line 776) | def test_deleted_parent_doesnt_sync(self): class ExtensionCasesSyncTokenUpdates (line 797) | class ExtensionCasesSyncTokenUpdates(BaseSyncTest): method test_create_extension (line 801) | def test_create_extension(self): method test_create_multiple_indices (line 826) | def test_create_multiple_indices(self): method test_create_extension_with_extension (line 853) | def test_create_extension_with_extension(self): method test_create_extension_then_delegate (line 886) | def test_create_extension_then_delegate(self): method test_create_delegated_extension (line 912) | def test_create_delegated_extension(self): method test_close_host (line 933) | def test_close_host(self): method test_long_chain_with_children (line 962) | def test_long_chain_with_children(self): class ExtensionCasesFirstSync (line 1025) | class ExtensionCasesFirstSync(BaseSyncTest): method setUp (line 1027) | def setUp(self): method test_is_first_extension_sync (line 1031) | def test_is_first_extension_sync(self): method test_is_first_extension_sync_after_sync (line 1038) | def test_is_first_extension_sync_after_sync(self): class ChangingOwnershipTest (line 1055) | class ChangingOwnershipTest(BaseSyncTest): method test_remove_user_from_group (line 1057) | def test_remove_user_from_group(self): method test_add_user_to_group (line 1090) | def test_add_user_to_group(self): class SyncTokenCachingTest (line 1114) | class SyncTokenCachingTest(BaseSyncTest): method testCaching (line 1116) | def testCaching(self): method test_initial_cache (line 1127) | def test_initial_cache(self): method testCacheInvalidation (line 1141) | def testCacheInvalidation(self): method testCacheNonInvalidation (line 1162) | def testCacheNonInvalidation(self): method testCacheInvalidationAfterFileDelete (line 1182) | def testCacheInvalidationAfterFileDelete(self): class MultiUserSyncTest (line 1210) | class MultiUserSyncTest(BaseSyncTest): method setUpClass (line 1216) | def setUpClass(cls): method setUp (line 1233) | def setUp(self): method testSharedCase (line 1251) | def testSharedCase(self): method testOtherUserEdits (line 1258) | def testOtherUserEdits(self): method testOtherUserAddsIndex (line 1274) | def testOtherUserAddsIndex(self): method testMultiUserEdits (line 1314) | def testMultiUserEdits(self): method testOtherUserCloses (line 1355) | def testOtherUserCloses(self): method testOtherUserUpdatesUnowned (line 1373) | def testOtherUserUpdatesUnowned(self): method testIndexesSync (line 1395) | def testIndexesSync(self): method testOtherUserUpdatesIndex (line 1431) | def testOtherUserUpdatesIndex(self): method testOtherUserReassignsIndexed (line 1474) | def testOtherUserReassignsIndexed(self): method testComplicatedGatesBug (line 1563) | def testComplicatedGatesBug(self): method test_dependent_case_becomes_relevant_at_sync_time (line 1578) | def test_dependent_case_becomes_relevant_at_sync_time(self): method test_index_tree_conflict_handling (line 1610) | def test_index_tree_conflict_handling(self): method test_incremental_sync_with_close_and_create (line 1658) | def test_incremental_sync_with_close_and_create(self): class SteadyStateExtensionSyncTest (line 1737) | class SteadyStateExtensionSyncTest(BaseSyncTest): method setUpClass (line 1743) | def setUpClass(cls): method _create_extension (line 1751) | def _create_extension(self): method test_delegating_extensions (line 1770) | def test_delegating_extensions(self): method test_multiple_syncs (line 1808) | def test_multiple_syncs(self): method test_two_device_extension_sync_bug (line 1830) | def test_two_device_extension_sync_bug(self): class SyncTokenReprocessingTest (line 1863) | class SyncTokenReprocessingTest(BaseSyncTest): method testShouldHaveCase (line 1868) | def testShouldHaveCase(self): class LooseSyncTokenValidationTest (line 1891) | class LooseSyncTokenValidationTest(BaseSyncTest): method test_submission_with_bad_log_toggle_enabled (line 1893) | def test_submission_with_bad_log_toggle_enabled(self): method test_restore_with_bad_log_toggle_enabled (line 1901) | def test_restore_with_bad_log_toggle_enabled(self): class IndexSyncTest (line 1914) | class IndexSyncTest(BaseSyncTest): method test_sync_index_between_open_owned_cases (line 1916) | def test_sync_index_between_open_owned_cases(self): class TestUpdatesToSynclog (line 1946) | class TestUpdatesToSynclog(BaseSyncTest): method setUpClass (line 1948) | def setUpClass(cls): method _create_cases (line 1956) | def _create_cases(self): method test_remove_index (line 1989) | def test_remove_index(self): method test_close_host (line 2024) | def test_close_host(self): FILE: corehq/ex-submodules/casexml/apps/phone/tests/test_sync_purge.py class TestSyncPurge (line 16) | class TestSyncPurge(TestCase): method setUpClass (line 18) | def setUpClass(cls): method tearDownClass (line 28) | def tearDownClass(cls): method test_prune_synclogs (line 34) | def test_prune_synclogs(self): method test_prune_formplayer_synclogs (line 70) | def test_prune_formplayer_synclogs(self): FILE: corehq/ex-submodules/casexml/apps/phone/tests/test_synclog_pillow.py class SyncLogPillowTest (line 15) | class SyncLogPillowTest(TestCase): method setUpClass (line 18) | def setUpClass(cls): method tearDown (line 33) | def tearDown(self): method tearDownClass (line 41) | def tearDownClass(cls): method _get_latest_synclog (line 47) | def _get_latest_synclog(self): method test_pillow_non_batch (line 51) | def test_pillow_non_batch(self): method test_pillow (line 83) | def test_pillow(self): method test_pillow_form_processed (line 116) | def test_pillow_form_processed(self): FILE: corehq/ex-submodules/casexml/apps/phone/tests/test_synclog_sql.py class SyncLogQueryTest (line 8) | class SyncLogQueryTest(TestCase): method tearDown (line 10) | def tearDown(self): method _count (line 14) | def _count(self): method test_simple (line 17) | def test_simple(self): method test_update (line 24) | def test_update(self): FILE: corehq/ex-submodules/casexml/apps/phone/tests/test_utils.py class TestUtils (line 12) | class TestUtils(SimpleTestCase): method test_get_cached_items_with_count_no_count (line 14) | def test_get_cached_items_with_count_no_count(self): method test_get_cached_items_with_count (line 20) | def test_get_cached_items_with_count(self): method test_get_cached_items_with_count_bad_format (line 26) | def test_get_cached_items_with_count_bad_format(self): class MockDeviceLedgersTest (line 33) | class MockDeviceLedgersTest(BaseSyncTest, TestXmlMixin): method setUp (line 34) | def setUp(self): method _create_ledgers (line 40) | def _create_ledgers(self): method test_ledgers (line 70) | def test_ledgers(self): FILE: corehq/ex-submodules/casexml/apps/phone/tests/test_xml.py class TestCaseDBElement (line 11) | class TestCaseDBElement(TestXmlMixin, SimpleTestCase): method create_case (line 17) | def create_case(self): method test_generate_xml (line 36) | def test_generate_xml(self): FILE: corehq/ex-submodules/casexml/apps/phone/tests/utils.py function create_restore_user (line 15) | def create_restore_user( function deprecated_synclog_id_from_restore_payload (line 43) | def deprecated_synclog_id_from_restore_payload(restore_payload): function deprecated_synclog_from_restore_payload (line 49) | def deprecated_synclog_from_restore_payload(restore_payload): function deprecated_generate_restore_payload (line 55) | def deprecated_generate_restore_payload(project, user, restore_id="", ve... function call_fixture_generator (line 67) | def call_fixture_generator( FILE: corehq/ex-submodules/casexml/apps/phone/utils.py function write_fixture_items_to_io (line 33) | def write_fixture_items_to_io(items): function cache_fixture_items_data (line 45) | def cache_fixture_items_data(io_data, domain, fixure_name, key): function get_cached_fixture_items (line 63) | def get_cached_fixture_items(key): function clear_fixture_cache (line 70) | def clear_fixture_cache(domain, bucket_prefix): function record_datadog_metric (line 76) | def record_datadog_metric(name, domain): function get_cached_items_with_count (line 82) | def get_cached_items_with_count(cached_bytes): function get_restore_config (line 105) | def get_restore_config(project, user, restore_id="", version=V1, state_h... class MockDevice (line 130) | class MockDevice(object): method __init__ (line 132) | def __init__(self, project, user, restore_options=None, method change_cases (line 152) | def change_cases(self, cases=None, **case_kwargs): method post_changes (line 185) | def post_changes(self, *args, **kw): method get_restore_config (line 209) | def get_restore_config(self, **options): method sync (line 220) | def sync(self, **config): method restore (line 229) | def restore(self, **config): class SyncResult (line 235) | class SyncResult(object): method __init__ (line 237) | def __init__(self, device, config, payload, form): method device (line 245) | def device(self): method device (line 249) | def device(self, value): method restore_id (line 254) | def restore_id(self): method get_log (line 259) | def get_log(self): method log (line 274) | def log(self): method cases (line 285) | def cases(self): method ledgers (line 292) | def ledgers(self): method has_cached_payload (line 301) | def has_cached_payload(self, version): FILE: corehq/ex-submodules/casexml/apps/phone/xml.py function escape (line 18) | def escape(o): function tostring (line 25) | def tostring(element): function get_sync_element (line 30) | def get_sync_element(restore_id=None): function get_case_element (line 38) | def get_case_element(case, updates, version=V1): function get_case_xml (line 87) | def get_case_xml(case, updates, version=V1): function get_casedb_element (line 92) | def get_casedb_element(case): function get_registration_element (line 113) | def get_registration_element(restore_user): function get_registration_element_data (line 126) | def get_registration_element_data(restore_user): function get_registration_element_for_case (line 137) | def get_registration_element_for_case(case): function get_data_element (line 148) | def get_data_element(name, dict): function get_progress_element (line 158) | def get_progress_element(done=0, total=0, retry_after=0): FILE: corehq/ex-submodules/casexml/apps/stock/consumption.py class ConsumptionHelper (line 15) | class ConsumptionHelper(object): method __init__ (line 20) | def __init__(self, domain, case_id, section_id, entry_id, daily_consum... method domain_obj (line 30) | def domain_obj(self): method get_default_monthly_consumption (line 33) | def get_default_monthly_consumption(self): method get_daily_consumption (line 39) | def get_daily_consumption(self): method get_monthly_consumption (line 47) | def get_monthly_consumption(self): method get_months_remaining (line 53) | def get_months_remaining(self): method get_resupply_quantity_needed (line 59) | def get_resupply_quantity_needed(self): method get_stock_category (line 70) | def get_stock_category(self): class ConsumptionConfiguration (line 82) | class ConsumptionConfiguration(object): method __init__ (line 87) | def __init__(self, min_periods=None, min_window=None, max_window=None, method test_config (line 110) | def test_config(cls): method __repr__ (line 113) | def __repr__(self): function from_ts (line 123) | def from_ts(dt): function span_days (line 135) | def span_days(start, end): function compute_daily_consumption (line 140) | def compute_daily_consumption( function get_default_monthly_consumption_for_case_and_entry (line 165) | def get_default_monthly_consumption_for_case_and_entry(domain, case_id, ... function compute_default_monthly_consumption (line 178) | def compute_default_monthly_consumption(case_id, product_id, configurati... function compute_daily_consumption_from_transactions (line 185) | def compute_daily_consumption_from_transactions(transactions, window_sta... FILE: corehq/ex-submodules/casexml/apps/stock/migrations/0001_squashed_0002_stockreport_server_date.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/casexml/apps/stock/migrations/0002_delete_stocktransaction.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/casexml/apps/stock/migrations/0003_delete_stock_models.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/casexml/apps/stock/migrations/0004_drop_unused_stock_tables.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/casexml/apps/stock/mock.py class LedgerXML (line 11) | class LedgerXML(XmlObject): method as_xml (line 15) | def as_xml(self): method from_xml (line 19) | def from_xml(cls, node): method as_string (line 22) | def as_string(self): method as_text (line 25) | def as_text(self): class Value (line 30) | class Value(LedgerXML): class Entry (line 36) | class Entry(LedgerXML): class Balance (line 46) | class Balance(LedgerXML): class Transfer (line 59) | class Transfer(LedgerXML): FILE: corehq/ex-submodules/casexml/apps/stock/tests/base.py class StockTestBase (line 12) | class StockTestBase(TestCase): method setUpClass (line 15) | def setUpClass(cls): method tearDownClass (line 20) | def tearDownClass(cls): method setUp (line 24) | def setUp(self): method tearDown (line 39) | def tearDown(self): function _stock_report (line 45) | def _stock_report(domain, case_id, product_id, amount, days_ago): function _receipt_report (line 56) | def _receipt_report(domain, case_id, product_id, amount, days_ago): FILE: corehq/ex-submodules/casexml/apps/stock/tests/mock_consumption.py function ago (line 14) | def ago(days): function mock_consumption (line 19) | def mock_consumption(txdata, window, params=None): FILE: corehq/ex-submodules/casexml/apps/stock/tests/test_consumption_calc.py class ConsumptionCalcTest (line 6) | class ConsumptionCalcTest(SimpleTestCase): method consumption (line 8) | def consumption(self, txdata, window, params=None): method test_one_period (line 17) | def test_one_period(self): method test_one_period_with_receipts (line 50) | def test_one_period_with_receipts(self): method test_multiple_periods (line 66) | def test_multiple_periods(self): method test_excluded_period (line 81) | def test_excluded_period(self): method test_prorated_period (line 98) | def test_prorated_period(self): method test_thresholds (line 111) | def test_thresholds(self): function _tx_new (line 130) | def _tx_new(type_, delta, updated_balance, age): FILE: corehq/ex-submodules/casexml/apps/stock/tests/test_consumption_for_case.py class ConsumptionCaseTest (line 8) | class ConsumptionCaseTest(StockTestBase): method testNoConsumption (line 10) | def testNoConsumption(self): method testNoConsumptionWithReceipts (line 15) | def testNoConsumptionWithReceipts(self): method testSimpleConsumption (line 21) | def testSimpleConsumption(self): method testDefaultValue (line 26) | def testDefaultValue(self): FILE: corehq/ex-submodules/casexml/apps/stock/utils.py function months_of_stock_remaining (line 4) | def months_of_stock_remaining(stock, daily_consumption): function stock_category (line 11) | def stock_category(stock, daily_consumption, understock, overstock): FILE: corehq/ex-submodules/couchexport/deid.py function deid_ID (line 8) | def deid_ID(val, doc): class JSONPath (line 13) | class JSONPath(object): method __init__ (line 15) | def __init__(self, paths): method search (line 18) | def search(self, doc): function deid_date (line 26) | def deid_date(val, doc, key_path='form/case/@case_id|form/case/case_id|_... function deid_remove (line 36) | def deid_remove(val, doc): function deid_map (line 40) | def deid_map(doc, config): FILE: corehq/ex-submodules/couchexport/exceptions.py class CouchExportException (line 3) | class CouchExportException(Exception): class CustomExportValidationError (line 7) | class CustomExportValidationError(CouchExportException): class SchemaInferenceError (line 11) | class SchemaInferenceError(CouchExportException): class SchemaMismatchException (line 15) | class SchemaMismatchException(CouchExportException): class UnsupportedExportFormat (line 19) | class UnsupportedExportFormat(CouchExportException): class ExportRebuildError (line 23) | class ExportRebuildError(CouchExportException): FILE: corehq/ex-submodules/couchexport/export.py function get_writer (line 12) | def get_writer(format, use_formatted_cells=False): function export_from_tables (line 30) | def export_from_tables(tables, file, format, max_column_size=2000): function export_raw (line 47) | def export_raw(headers, data, file, format=Format.XLS_2007, function export_raw_to_writer (line 78) | def export_raw_to_writer(headers, data, file, format=Format.XLS_2007, class Constant (line 100) | class Constant(object): method __init__ (line 102) | def __init__(self, message): method __str__ (line 105) | def __str__(self): function render_never_was (line 122) | def render_never_was(schema): function fit_to_schema (line 138) | def fit_to_schema(doc, schema): function get_headers (line 182) | def get_headers(schema, separator="|"): function get_formatted_rows (line 190) | def get_formatted_rows(docs, schema, separator, include_headers=True): function _create_intermediate_tables (line 195) | def _create_intermediate_tables(docs, schema): class FormattedRow (line 258) | class FormattedRow(object): method __init__ (line 266) | def __init__(self, data, id=None, separator=".", id_index=0, method __iter__ (line 277) | def __iter__(self): method has_id (line 281) | def has_id(self): method formatted_id (line 285) | def formatted_id(self): method include_compound_id (line 290) | def include_compound_id(self): method compound_id (line 294) | def compound_id(self): method get_data (line 299) | def get_data(self): method wrap_all_rows (line 319) | def wrap_all_rows(cls, tables): function _format_tables (line 343) | def _format_tables(tables, id_label='id', separator='.', include_headers... FILE: corehq/ex-submodules/couchexport/files.py function Temp (line 5) | def Temp(tmp): class TempBase (line 10) | class TempBase(object): method file (line 13) | def file(self): class PathTemp (line 17) | class PathTemp(TempBase): method __init__ (line 19) | def __init__(self, path): method payload (line 23) | def payload(self): method delete (line 27) | def delete(self): class StringIOTemp (line 31) | class StringIOTemp(TempBase): method __init__ (line 33) | def __init__(self, buffer): method payload (line 38) | def payload(self): method path (line 42) | def path(self): method delete (line 50) | def delete(self): class ExportFiles (line 55) | class ExportFiles(object): method __init__ (line 57) | def __init__(self, file, checkpoint, format=None): method __enter__ (line 62) | def __enter__(self): method __exit__ (line 65) | def __exit__(self, exc_type, exc_val, exc_tb): FILE: corehq/ex-submodules/couchexport/models.py class Format (line 4) | class Format(object): method __init__ (line 53) | def __init__(self, slug, mimetype, extension, download): method from_format (line 60) | def from_format(cls, format): FILE: corehq/ex-submodules/couchexport/properties.py function parse_date_string (line 6) | def parse_date_string(datestring, precise=False): class TimeStampProperty (line 27) | class TimeStampProperty(DateTimeProperty): method __init__ (line 36) | def __init__(self, precise_reads=False, **kwargs): method to_python (line 40) | def to_python(self, value): method to_json (line 49) | def to_json(self, value): class JsonProperty (line 55) | class JsonProperty(Property): method to_python (line 60) | def to_python(self, value): method to_json (line 63) | def to_json(self, value): FILE: corehq/ex-submodules/couchexport/shortcuts.py function export_response (line 8) | def export_response(file, format, filename, checkpoint=None): FILE: corehq/ex-submodules/couchexport/tests/test_deid.py class DeidTests (line 6) | class DeidTests(SimpleTestCase): method test_deidentifies_date (line 7) | def test_deidentifies_date(self): method test_deid_date_returns_none_when_key_is_not_found (line 17) | def test_deid_date_returns_none_when_key_is_not_found(self): method test_deid_date_returns_none_when_key_value_cannot_be_determined_from_document (line 22) | def test_deid_date_returns_none_when_key_value_cannot_be_determined_fr... method test_doc_is_unnecessary_when_key_is_provided (line 25) | def test_doc_is_unnecessary_when_key_is_provided(self): FILE: corehq/ex-submodules/couchexport/tests/test_excel_format_value.py function check (line 13) | def check(input, output, format, output_type): function test_integers (line 25) | def test_integers(input, output, format, output_type): function test_decimal (line 35) | def test_decimal(input, output, format, output_type): function test_boolean (line 50) | def test_boolean(input, output, format, output_type): function test_decimal_eur (line 58) | def test_decimal_eur(input, output, format, output_type): function test_percentage (line 68) | def test_percentage(input, output, format, output_type): function test_comma_separated_us (line 78) | def test_comma_separated_us(input, output, format, output_type): function test_comma_separated_eur (line 89) | def test_comma_separated_eur(input, output, format, output_type): function test_currency_usd (line 100) | def test_currency_usd(input, output, format, output_type): function test_currency_eur (line 111) | def test_currency_eur(input, output, format, output_type): function test_date (line 125) | def test_date(input, output, format, output_type): function test_datetime (line 152) | def test_datetime(input, output, format, output_type): function test_time (line 162) | def test_time(input, output, format, output_type): function test_missing (line 166) | def test_missing(): function test_empty (line 170) | def test_empty(): function test_text (line 179) | def test_text(input, output, format, output_type): function test_bad_date_string (line 183) | def test_bad_date_string(): FILE: corehq/ex-submodules/couchexport/tests/test_raw.py class ExportRawTest (line 9) | class ExportRawTest(TestCase): method test_export_raw (line 11) | def test_export_raw(self): FILE: corehq/ex-submodules/couchexport/tests/test_saved.py class DailySavedExportSavingTest (line 7) | class DailySavedExportSavingTest(TestCase): method test_file_save_and_load (line 9) | def test_file_save_and_load(self): method test_save_basic_export_to_blobdb (line 16) | def test_save_basic_export_to_blobdb(self): FILE: corehq/ex-submodules/couchexport/tests/test_transforms.py class ExportTransformTest (line 5) | class ExportTransformTest(SimpleTestCase): method test_couch_to_excel_datetime_current_fmt (line 7) | def test_couch_to_excel_datetime_current_fmt(self): method test_couch_to_excel_datetime_old_fmt (line 10) | def test_couch_to_excel_datetime_old_fmt(self): FILE: corehq/ex-submodules/couchexport/tests/test_writers.py class ZippedExportWriterTests (line 24) | class ZippedExportWriterTests(SimpleTestCase): method setUp (line 26) | def setUp(self): method tearDown (line 38) | def tearDown(self): method test_zipped_export_writer_unicode (line 42) | def test_zipped_export_writer_unicode(self): method test_zipped_export_writer_utf8 (line 49) | def test_zipped_export_writer_utf8(self): class CsvFileWriterTests (line 57) | class CsvFileWriterTests(SimpleTestCase): method test_csv_file_writer_bom (line 59) | def test_csv_file_writer_bom(self): method test_csv_file_writer_utf8 (line 71) | def test_csv_file_writer_utf8(self): method test_csv_file_writer_int (line 80) | def test_csv_file_writer_int(self): class HtmlExportWriterTests (line 90) | class HtmlExportWriterTests(SimpleTestCase): method test_nones_transformed (line 92) | def test_nones_transformed(self): class Excel2007ExportWriterTests (line 113) | class Excel2007ExportWriterTests(SimpleTestCase): method test_bytestrings (line 115) | def test_bytestrings(self): class Excel2003ExportWriterTests (line 127) | class Excel2003ExportWriterTests(SimpleTestCase): method test_data_length (line 129) | def test_data_length(self): class HeaderNameTest (line 149) | class HeaderNameTest(SimpleTestCase): method test_names_matching_case (line 151) | def test_names_matching_case(self): method test_even_max_header_length (line 177) | def test_even_max_header_length(self): method test_odd_max_header_length (line 193) | def test_odd_max_header_length(self): method test_exact_max_header_length (line 208) | def test_exact_max_header_length(self): method test_max_header_length_duplicates (line 223) | def test_max_header_length_duplicates(self): class TestGeoJSONWriter (line 241) | class TestGeoJSONWriter(SimpleTestCase): method test_get_features (line 244) | def test_get_features(self): method test_get_features__other_geo_property_configured (line 267) | def test_get_features__other_geo_property_configured(self): method test_get_features__invalid_geo_property_column_value (line 272) | def test_get_features__invalid_geo_property_column_value(self): method test_get_features_from_path (line 282) | def test_get_features_from_path(self): method test_get_features_from_path__invalid_path (line 308) | def test_get_features_from_path__invalid_path(self): method test_get_features_from_path__location_metadata (line 318) | def test_get_features_from_path__location_metadata(self): method _table_data (line 345) | def _table_data(self, geo_property_header=None): method _table_header (line 351) | def _table_header(self, geo_property_header=None): method _table_data_rows (line 360) | def _table_data_rows(self): method geopoint_table_configuration (line 367) | def geopoint_table_configuration(self, selected_geo_property, path_str... FILE: corehq/ex-submodules/couchexport/transforms.py function identity (line 8) | def identity(val, doc): function couch_to_excel_datetime (line 12) | def couch_to_excel_datetime(val, doc): FILE: corehq/ex-submodules/couchexport/util.py function get_excel_format_value (line 15) | def get_excel_format_value(value): function get_legacy_excel_safe_value (line 167) | def get_legacy_excel_safe_value(value): function parse_datetime (line 179) | def parse_datetime(val, ignoretz=True): FILE: corehq/ex-submodules/couchexport/writers.py class XlsLengthException (line 26) | class XlsLengthException(Exception): class UniqueHeaderGenerator (line 30) | class UniqueHeaderGenerator(object): method __init__ (line 32) | def __init__(self, max_column_size=None): method next_unique (line 36) | def next_unique(self, header): method _next_unique (line 41) | def _next_unique(self, string): method __enter__ (line 56) | def __enter__(self): method __exit__ (line 59) | def __exit__(self, exc_type, exc_val, exc_tb): class ExportFileWriter (line 63) | class ExportFileWriter(object): method __init__ (line 65) | def __init__(self): method get_path (line 71) | def get_path(self): method get_file (line 75) | def get_file(self): method open (line 79) | def open(self, name): method _open (line 89) | def _open(self): method _begin_file (line 92) | def _begin_file(self): method write_row (line 95) | def write_row(self, row): method _end_file (line 98) | def _end_file(self): method finish (line 101) | def finish(self): method close (line 105) | def close(self): class CsvFileWriter (line 112) | class CsvFileWriter(ExportFileWriter): method _open (line 114) | def _open(self): method write_row (line 118) | def write_row(self, row): class PartialHtmlFileWriter (line 128) | class PartialHtmlFileWriter(ExportFileWriter): method _write_from_template (line 130) | def _write_from_template(self, context): method _open (line 133) | def _open(self): method write_row (line 137) | def write_row(self, row): method _end_file (line 142) | def _end_file(self): class HtmlFileWriter (line 148) | class HtmlFileWriter(PartialHtmlFileWriter): method _begin_file (line 150) | def _begin_file(self): method _end_file (line 154) | def _end_file(self): class ExportWriter (line 160) | class ExportWriter(object): method open (line 164) | def open(self, header_table, file, max_column_size=2000, table_titles=... method add_table (line 190) | def add_table(self, table_index, headers, table_title=None): method write (line 213) | def write(self, document_table, skip_first=False): method write_row (line 236) | def write_row(self, table_index, row): method close (line 244) | def close(self): method _init (line 252) | def _init(self): method _init_table (line 255) | def _init_table(self, table_index, table_title): method _write_row (line 258) | def _write_row(self, sheet_index, row): method _close (line 261) | def _close(self): method __enter__ (line 264) | def __enter__(self): method __exit__ (line 267) | def __exit__(self, exc_type, exc_val, exc_tb): class OnDiskExportWriter (line 271) | class OnDiskExportWriter(ExportWriter): method _init (line 278) | def _init(self): method _init_table (line 282) | def _init_table(self, table_index, table_title): method _write_row (line 288) | def _write_row(self, sheet_index, row): method _close (line 300) | def _close(self): method _write_final_result (line 312) | def _write_final_result(self): class ZippedExportWriter (line 319) | class ZippedExportWriter(OnDiskExportWriter): method _write_final_result (line 325) | def _write_final_result(self): method _get_archive_filename (line 336) | def _get_archive_filename(self, name): class CsvExportWriter (line 340) | class CsvExportWriter(ZippedExportWriter): class UnzippedCsvExportWriter (line 347) | class UnzippedCsvExportWriter(OnDiskExportWriter): method _write_final_result (line 353) | def _write_final_result(self): class Excel2007ExportWriter (line 360) | class Excel2007ExportWriter(ExportWriter): method __init__ (line 364) | def __init__(self, format_as_text=False, use_formatted_cells=False): method _init (line 369) | def _init(self): method _init_table (line 376) | def _init_table(self, table_index, table_title): method _write_row (line 382) | def _write_row(self, sheet_index, row): method _close (line 411) | def _close(self): class Excel2003ExportWriter (line 418) | class Excel2003ExportWriter(ExportWriter): method _init (line 422) | def _init(self): method _init_table (line 427) | def _init_table(self, table_index, table_title): method _write_row (line 432) | def _write_row(self, sheet_index, row): method _close (line 443) | def _close(self): class InMemoryExportWriter (line 447) | class InMemoryExportWriter(ExportWriter): method _init (line 452) | def _init(self): method _init_table (line 456) | def _init_table(self, table_index, table_title): method _write_row (line 460) | def _write_row(self, sheet_index, row): method _close (line 465) | def _close(self): class JsonExportWriter (line 469) | class JsonExportWriter(InMemoryExportWriter): class ConstantEncoder (line 475) | class ConstantEncoder(json.JSONEncoder): method default (line 477) | def default(self, obj): method _close (line 485) | def _close(self): class PythonDictWriter (line 494) | class PythonDictWriter(InMemoryExportWriter): class ConstantEncoder (line 497) | class ConstantEncoder(json.JSONEncoder): method default (line 499) | def default(self, obj): method get_preview (line 507) | def get_preview(self): class HtmlExportWriter (line 520) | class HtmlExportWriter(OnDiskExportWriter): method _write_final_result (line 529) | def _write_final_result(self): class ZippedHtmlExportWriter (line 550) | class ZippedHtmlExportWriter(ZippedExportWriter): class GeoJSONWriter (line 559) | class GeoJSONWriter(JsonExportWriter): method parse_feature (line 564) | def parse_feature(coordinates, properties): method _find_geo_property_by_path (line 572) | def _find_geo_property_by_path(table): method get_features (line 584) | def get_features(self, table, data): method _close (line 610) | def _close(self): FILE: corehq/ex-submodules/couchforms/admin.py class UnfinishedSubmissionStubAdmin (line 5) | class UnfinishedSubmissionStubAdmin(admin.ModelAdmin): FILE: corehq/ex-submodules/couchforms/analytics.py function domain_has_submission_in_last_30_days (line 12) | def domain_has_submission_in_last_30_days(domain): function get_number_of_forms_in_domain (line 20) | def get_number_of_forms_in_domain(domain): function _received_on_query (line 24) | def _received_on_query(domain, desc=False): function get_first_form_submission_received (line 33) | def get_first_form_submission_received(domain): function get_last_form_submission_received (line 42) | def get_last_form_submission_received(domain): function get_all_xmlns_app_id_pairs_submitted_to_in_domain (line 52) | def get_all_xmlns_app_id_pairs_submitted_to_in_domain(domain): function get_form_analytics_metadata (line 79) | def get_form_analytics_metadata(domain, app_id, xmlns): function get_exports_by_form (line 133) | def get_exports_by_form(domain): function _get_export_forms (line 149) | def _get_export_forms(domain): function get_form_count_breakdown_for_domain (line 160) | def get_form_count_breakdown_for_domain(domain): FILE: corehq/ex-submodules/couchforms/exceptions.py class CouchFormException (line 5) | class CouchFormException(Exception): class XMLSyntaxError (line 12) | class XMLSyntaxError(CouchFormException): class MissingXMLNSError (line 16) | class MissingXMLNSError(CouchFormException): class UnexpectedDeletedXForm (line 20) | class UnexpectedDeletedXForm(Exception): class BadSubmissionRequest (line 24) | class BadSubmissionRequest(Exception): method __init__ (line 25) | def __init__(self, message, status_code=400): class MultipartFilenameError (line 30) | class MultipartFilenameError(BadSubmissionRequest): method __init__ (line 31) | def __init__(self): class MultipartEmptyPayload (line 39) | class MultipartEmptyPayload(BadSubmissionRequest): method __init__ (line 40) | def __init__(self): class EmptyPayload (line 47) | class EmptyPayload(BadSubmissionRequest): method __init__ (line 48) | def __init__(self): class PayloadTooLarge (line 52) | class PayloadTooLarge(BadSubmissionRequest): method __init__ (line 53) | def __init__(self): class UnprocessableFormSubmission (line 60) | class UnprocessableFormSubmission(BadSubmissionRequest): class InvalidSubmissionFileExtensionError (line 64) | class InvalidSubmissionFileExtensionError(UnprocessableFormSubmission): method __init__ (line 65) | def __init__(self): class InvalidAttachmentFileError (line 74) | class InvalidAttachmentFileError(UnprocessableFormSubmission): method __init__ (line 75) | def __init__(self): class AttachmentSizeTooLarge (line 84) | class AttachmentSizeTooLarge(BadSubmissionRequest): method __init__ (line 85) | def __init__(self): FILE: corehq/ex-submodules/couchforms/geopoint.py class GeoPoint (line 8) | class GeoPoint: method lat_lon (line 15) | def lat_lon(self): method from_string (line 23) | def from_string(cls, input_string, flexible=False): function _extract_elements (line 42) | def _extract_elements(input_string, flexible): function _to_decimal (line 55) | def _to_decimal(n): function _validate_range (line 68) | def _validate_range(d, lower, upper): class _GeoPointGenerationError (line 74) | class _GeoPointGenerationError(Exception): FILE: corehq/ex-submodules/couchforms/getters.py function get_path (line 27) | def get_path(request): class MultimediaBug (line 31) | class MultimediaBug(Exception): function get_instance_and_attachment (line 35) | def get_instance_and_attachment(request): function _valid_instance_file_extension (line 77) | def _valid_instance_file_extension(file): function _valid_file_extension (line 81) | def _valid_file_extension(filename, valid_extensions): function _valid_attachment_file (line 88) | def _valid_attachment_file(file): function _valid_attachment_file_extension (line 92) | def _valid_attachment_file_extension(file): function _valid_attachment_file_mimetype (line 96) | def _valid_attachment_file_mimetype(file): function _attachment_exceeds_size_limit (line 114) | def _attachment_exceeds_size_limit(file): function get_location (line 118) | def get_location(request=None): function get_received_on (line 130) | def get_received_on(request): function get_date_header (line 138) | def get_date_header(request): function get_submit_ip (line 160) | def get_submit_ip(request): function get_last_sync_token (line 168) | def get_last_sync_token(request): function get_openrosa_headers (line 172) | def get_openrosa_headers(request): FILE: corehq/ex-submodules/couchforms/jsonobject_extensions.py class GeoPointProperty (line 5) | class GeoPointProperty(JsonProperty): method wrap (line 11) | def wrap(self, obj): method unwrap (line 14) | def unwrap(self, obj): FILE: corehq/ex-submodules/couchforms/management/commands/purge_forms_and_cases.py class Command (line 22) | class Command(BaseCommand): method add_arguments (line 31) | def add_arguments(self, parser): method __init__ (line 37) | def __init__(self): method setup (line 45) | def setup(self): method ensure_prerequisites (line 51) | def ensure_prerequisites(self, domain, app_id, version_number, test_run): method handle (line 62) | def handle(self, domain, app_id, version_number, test_run, **options): method iterate_forms_and_collect_case_ids (line 73) | def iterate_forms_and_collect_case_ids(self): method get_xform_build_version (line 89) | def get_xform_build_version(self, xform): method ensure_valid_xform (line 103) | def ensure_valid_xform(self, xform): method print_case_details (line 107) | def print_case_details(self): method delete_permitted (line 111) | def delete_permitted(self): method data_to_delete (line 114) | def data_to_delete(self): method delete_forms_and_cases (line 117) | def delete_forms_and_cases(self): function _print_form_details (line 123) | def _print_form_details(xform, file_writer, app_version_built_with): function _form_details (line 130) | def _form_details(xform, app_version_built_with): function _print_case_details (line 134) | def _print_case_details(case, file_writer): function _case_details (line 141) | def _case_details(case): function _raise_xform_domain_mismatch (line 145) | def _raise_xform_domain_mismatch(xform): function _print_final_debug_info (line 151) | def _print_final_debug_info(xform_ids, filtered_xform_ids, case_ids): function _notify_parsed_args (line 158) | def _notify_parsed_args(domain_name, app_id, version_number, test_run): FILE: corehq/ex-submodules/couchforms/migrations/0001_initial.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/couchforms/migrations/0002_auto_20170802_1505.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/couchforms/migrations/0003_auto_20170808_1212.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/couchforms/migrations/0004_unfinishedarchivestub.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/couchforms/migrations/0005_index_cleanup.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/couchforms/migrations/0006_unfinishedarchivestub_attempts.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/couchforms/migrations/0007_auto_20191210_2206.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/couchforms/migrations/0008_auto_20200701_0742.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/couchforms/models.py class DefaultAuthContext (line 6) | class DefaultAuthContext(DocumentSchema): method is_valid (line 8) | def is_valid(self): class UnfinishedSubmissionStub (line 12) | class UnfinishedSubmissionStub(models.Model): method __str__ (line 21) | def __str__(self): class Meta (line 30) | class Meta(object): class UnfinishedArchiveStub (line 37) | class UnfinishedArchiveStub(models.Model): method __str__ (line 46) | def __str__(self): class Meta (line 57) | class Meta(object): FILE: corehq/ex-submodules/couchforms/openrosa_response.py class ResponseNature (line 10) | class ResponseNature(object): function get_response_element (line 25) | def get_response_element(message, nature=''): function get_simple_response_xml (line 29) | def get_simple_response_xml(message, nature=''): function get_openrosa_reponse (line 33) | def get_openrosa_reponse(message, nature, status): class OpenRosaResponse (line 37) | class OpenRosaResponse(object): method __init__ (line 44) | def __init__(self, message, nature, status): method etree (line 49) | def etree(self): method xml (line 59) | def xml(self): method response (line 62) | def response(self): function get_openarosa_success_response (line 66) | def get_openarosa_success_response(message=None): function parse_openrosa_response (line 87) | def parse_openrosa_response(response): FILE: corehq/ex-submodules/couchforms/tests/test_analytics.py class ExportsFormsAnalyticsTest (line 43) | class ExportsFormsAnalyticsTest(TestCase, DocTestMixin): method setUpClass (line 47) | def setUpClass(cls): method tearDownClass (line 87) | def tearDownClass(cls): method test_get_form_analytics_metadata__no_match (line 92) | def test_get_form_analytics_metadata__no_match(self): method test_get_form_analytics_metadata__no_app (line 96) | def test_get_form_analytics_metadata__no_app(self): method test_get_form_analytics_metadata__app (line 103) | def test_get_form_analytics_metadata__app(self): method test_get_exports_by_form (line 114) | def test_get_exports_by_form(self): class CouchformsESAnalyticsTest (line 145) | class CouchformsESAnalyticsTest(TestCase): method setUpClass (line 149) | def setUpClass(cls): method tearDownClass (line 181) | def tearDownClass(cls): method test_get_number_of_forms_in_domain (line 185) | def test_get_number_of_forms_in_domain(self): method test_domain_has_submission_in_last_30_days (line 191) | def test_domain_has_submission_in_last_30_days(self): method test_not_domain_has_submission_in_last_30_days (line 194) | def test_not_domain_has_submission_in_last_30_days(self): method test_get_first_form_submission_received (line 198) | def test_get_first_form_submission_received(self): method test_get_last_form_submission_received (line 203) | def test_get_last_form_submission_received(self): method test_get_all_xmlns_app_id_pairs_submitted_to_in_domain (line 207) | def test_get_all_xmlns_app_id_pairs_submitted_to_in_domain(self): FILE: corehq/ex-submodules/couchforms/tests/test_archive.py class TestFormArchiving (line 21) | class TestFormArchiving(TestCase, TestFileMixin): method setUp (line 25) | def setUp(self): method tearDown (line 30) | def tearDown(self): method testArchive (line 35) | def testArchive(self): method testUnfinishedArchiveStub (line 76) | def testUnfinishedArchiveStub(self): method testUnfinishedUnarchiveStub (line 125) | def testUnfinishedUnarchiveStub(self): method testUnarchivingWithArchiveStub (line 178) | def testUnarchivingWithArchiveStub(self): method testArchivingWithUnarchiveStub (line 223) | def testArchivingWithUnarchiveStub(self): method testUnfinishedArchiveStubErrorAddingHistory (line 274) | def testUnfinishedArchiveStubErrorAddingHistory(self): method testUnfinishedUnarchiveStubErrorAddingHistory (line 329) | def testUnfinishedUnarchiveStubErrorAddingHistory(self): method testSignal (line 391) | def testSignal(self): method testPublishChanges (line 413) | def testPublishChanges(self): FILE: corehq/ex-submodules/couchforms/tests/test_auth.py class AuthTest (line 12) | class AuthTest(TestCase, TestFileMixin): method test_auth_context (line 16) | def test_auth_context(self): FILE: corehq/ex-submodules/couchforms/tests/test_const.py class TestCont (line 6) | class TestCont(SimpleTestCase): method test_valid_attachment_file_extensions (line 7) | def test_valid_attachment_file_extensions(self): FILE: corehq/ex-submodules/couchforms/tests/test_devicelogs.py class DeviceLogTest (line 14) | class DeviceLogTest(TestCase, TestFileMixin): method setUp (line 18) | def setUp(self): method tearDown (line 21) | def tearDown(self): method assert_properties_equal (line 27) | def assert_properties_equal(self, obj, expected): method test_basic_devicelog (line 34) | def test_basic_devicelog(self): method assert_device_report_entries (line 42) | def assert_device_report_entries(self): method assert_user_entries (line 66) | def assert_user_entries(self): method assert_user_error_entries (line 78) | def assert_user_error_entries(self): method assert_force_close_entries (line 90) | def assert_force_close_entries(self): method test_subreports_that_shouldnt_fail (line 110) | def test_subreports_that_shouldnt_fail(self): class TestDeviceLogUtils (line 115) | class TestDeviceLogUtils(SimpleTestCase, TestFileMixin): method test_single_node (line 119) | def test_single_node(self): method test_single_entry (line 131) | def test_single_entry(self): method test_multiple_nodes (line 150) | def test_multiple_nodes(self): FILE: corehq/ex-submodules/couchforms/tests/test_duplicates.py class DuplicateFormTest (line 11) | class DuplicateFormTest(TestCase, TestFileMixin): method tearDown (line 16) | def tearDown(self): method test_basic_duplicate (line 19) | def test_basic_duplicate(self): method test_wrong_doc_type (line 32) | def test_wrong_doc_type(self): method test_wrong_domain (line 52) | def test_wrong_domain(self): FILE: corehq/ex-submodules/couchforms/tests/test_edits.py class EditFormTest (line 22) | class EditFormTest(TestCase, TestFileMixin): method setUp (line 29) | def setUp(self): method tearDown (line 35) | def tearDown(self): method test_basic_edit (line 41) | def test_basic_edit(self): method test_edit_form_with_attachments (line 79) | def test_edit_form_with_attachments(self): method test_edit_an_error (line 126) | def test_edit_an_error(self): method test_broken_save (line 144) | def test_broken_save(self): method test_case_management (line 175) | def test_case_management(self): method test_second_edit_fails (line 214) | def test_second_edit_fails(self): method test_case_management_ordering (line 238) | def test_case_management_ordering(self): method test_edit_different_xmlns (line 306) | def test_edit_different_xmlns(self): method test_copy_operations (line 336) | def test_copy_operations(self): FILE: corehq/ex-submodules/couchforms/tests/test_errors.py class CaseProcessingErrorsTest (line 9) | class CaseProcessingErrorsTest(TestCase): method test_no_case_id (line 11) | def test_no_case_id(self): method test_uses_referrals (line 44) | def test_uses_referrals(self): FILE: corehq/ex-submodules/couchforms/tests/test_geopoint.py function test_valid_geopoint_properties (line 18) | def test_valid_geopoint_properties(input_string, output): function test_inflexible_is_strict (line 26) | def test_inflexible_is_strict(): function test_invalid_geopoint_properties (line 40) | def test_invalid_geopoint_properties(input_string): FILE: corehq/ex-submodules/couchforms/tests/test_meta.py class TestMeta (line 14) | class TestMeta(TestCase, TestFileMixin): method tearDown (line 19) | def tearDown(self): method _check_metadata (line 22) | def _check_metadata(self, xform, expected): method testClosed (line 27) | def testClosed(self): method testDecimalAppVersion (line 52) | def testDecimalAppVersion(self): method testMetaBadUsername (line 77) | def testMetaBadUsername(self): method testMetaAppVersionDict (line 96) | def testMetaAppVersionDict(self): method test_gps_location (line 115) | def test_gps_location(self): method test_empty_gps_location (line 145) | def test_empty_gps_location(self): method testMetaDateInDatetimeFields (line 156) | def testMetaDateInDatetimeFields(self): method test_missing_meta_key (line 163) | def test_missing_meta_key(self): FILE: corehq/ex-submodules/couchforms/tests/test_namespaces.py class TestNamespaces (line 11) | class TestNamespaces(TestCase, TestFileMixin): method _assert_xmlns (line 15) | def _assert_xmlns(self, xmlns, xform, xpath, expect_xmlns_index=False): method testClosed (line 19) | def testClosed(self): FILE: corehq/ex-submodules/couchforms/tests/test_openrosa_response.py class TestOpenRosaResponse (line 20) | class TestOpenRosaResponse(SimpleTestCase): function test_parse_openrosa_response (line 29) | def test_parse_openrosa_response(self, xml, nature, message): FILE: corehq/ex-submodules/couchforms/tests/test_post.py class PostTest (line 13) | class PostTest(TestCase, TestFileMixin): method _process_sql_json (line 19) | def _process_sql_json(self, expected, xform_json, any_id_ok): method _test (line 26) | def _test(self, name, any_id_ok=False): method tearDown (line 37) | def tearDown(self): method test_decimalmeta (line 41) | def test_decimalmeta(self): method test_duplicate (line 44) | def test_duplicate(self): method test_meta (line 47) | def test_meta(self): method test_meta_bad_username (line 50) | def test_meta_bad_username(self): method test_meta_dict_appversion (line 53) | def test_meta_dict_appversion(self): method test_namespaces (line 56) | def test_namespaces(self): method test_unicode (line 59) | def test_unicode(self): FILE: corehq/ex-submodules/couchforms/tests/test_xml.py class XMLElementTest (line 11) | class XMLElementTest(TestCase, TestFileMixin): method test_various_encodings (line 15) | def test_various_encodings(self): FILE: corehq/ex-submodules/couchforms/util.py function spoof_submission (line 9) | def spoof_submission(submit_url, body): FILE: corehq/ex-submodules/dimagi/ext/couchdbkit.py class Document (line 27) | class Document(OldDocument): class DocumentSchema (line 31) | class DocumentSchema(OldDocumentSchema): class SafeSaveDocument (line 35) | class SafeSaveDocument(OldSafeSaveDocument): FILE: corehq/ex-submodules/dimagi/ext/jsonobject.py function _assert (line 24) | def _assert(assertion, msg): class DateTimeProperty (line 32) | class DateTimeProperty(AbstractDateProperty): method _wrap (line 44) | def _wrap(self, value): method _unwrap (line 47) | def _unwrap(self, value): method deserialize (line 53) | def deserialize(cls, value): class USecDateTimeMeta (line 95) | class USecDateTimeMeta(object): class JsonObject (line 107) | class JsonObject(OldJsonObject): class StrictJsonObject (line 111) | class StrictJsonObject(JsonObject): FILE: corehq/ex-submodules/dimagi/ext/tests/test_jsonobject.py class Foo (line 8) | class Foo(jsonobject.JsonObject): class TransitionalExactDateTimePropertyTest (line 12) | class TransitionalExactDateTimePropertyTest(SimpleTestCase): method test_wrap_old (line 13) | def test_wrap_old(self): method test_wrap_new (line 18) | def test_wrap_new(self): method test_wrap_milliseconds_only (line 23) | def test_wrap_milliseconds_only(self): method test_wrap_old_no_Z (line 27) | def test_wrap_old_no_Z(self): method test_wrap_new_no_Z (line 31) | def test_wrap_new_no_Z(self): class TestDateRegex (line 36) | class TestDateRegex(SimpleTestCase): method test_strict_match (line 38) | def test_strict_match(self): class DateTimePropertyTests (line 52) | class DateTimePropertyTests(SimpleTestCase): method test_wrap (line 53) | def test_wrap(self): method test_unwrap (line 58) | def test_unwrap(self): method test_deserialize (line 64) | def test_deserialize(self): FILE: corehq/ex-submodules/dimagi/ext/tests/test_schema.py class Ham (line 11) | class Ham(DocumentSchema): method __eq__ (line 14) | def __eq__(self, other): method __hash__ (line 17) | def __hash__(self): class Spam (line 21) | class Spam(DocumentSchema): class SchemaTests (line 27) | class SchemaTests(SimpleTestCase): method test_schemas (line 33) | def test_schemas(self): FILE: corehq/ex-submodules/dimagi/test_utils/base.py class DimagiUtilsTestCase (line 17) | class DimagiUtilsTestCase(TestCase): method test_memoized_function (line 19) | def test_memoized_function(self): method test_memoized_class (line 31) | def test_memoized_class(self): method test_chunked (line 89) | def test_chunked(self): method test_chunked_stop (line 96) | def test_chunked_stop(self): method test_ReadOnlyObject (line 104) | def test_ReadOnlyObject(self): method test_sync_design_docs (line 132) | def test_sync_design_docs(self): method test_sync_design_docs_tmp (line 139) | def test_sync_design_docs_tmp(self): method test_copy_designs (line 147) | def test_copy_designs(self): FILE: corehq/ex-submodules/dimagi/utils/chunked.py function chunked (line 4) | def chunked(it, n, collection=tuple): function take (line 30) | def take(n, iterable, collection=list): FILE: corehq/ex-submodules/dimagi/utils/couch/__init__.py class LockableMixIn (line 18) | class LockableMixIn(DocumentSchema): method acquire_lock (line 21) | def acquire_lock(self, now): method release_lock (line 36) | def release_lock(self): class LockManager (line 42) | class LockManager(namedtuple('ObjectLockTuple', 'obj lock')): method __enter__ (line 60) | def __enter__(self): method __exit__ (line 63) | def __exit__(self, exc_type, exc_val, exc_tb): class ReleaseOnError (line 67) | class ReleaseOnError(object): method __init__ (line 68) | def __init__(self, lock): method __enter__ (line 71) | def __enter__(self): method __exit__ (line 74) | def __exit__(self, exc_type, exc_val, exc_tb): function get_redis_lock (line 79) | def get_redis_lock(key, timeout=None, name=None, track_unreleased=True, ... function acquire_lock (line 100) | def acquire_lock(lock, degrade_gracefully, **kwargs): function release_lock (line 120) | def release_lock(lock, degrade_gracefully): class RedisLockableMixIn (line 146) | class RedisLockableMixIn(object): method _redis_obj_lock_key (line 148) | def _redis_obj_lock_key(cls, obj_id): method _redis_class_lock_key (line 156) | def _redis_class_lock_key(cls): method get_obj_id (line 164) | def get_obj_id(cls, obj): method get_obj (line 171) | def get_obj(cls, *args, **kwargs): method get_obj_by_id (line 179) | def get_obj_by_id(cls, _id): method create_obj (line 187) | def create_obj(cls, *args, **kwargs): method get_latest_obj (line 195) | def get_latest_obj(cls, obj): method get_obj_lock (line 200) | def get_obj_lock(cls, obj, timeout_seconds=120): method get_obj_lock_by_id (line 205) | def get_obj_lock_by_id(cls, obj_id, timeout_seconds=120): method get_redis_lock (line 209) | def get_redis_lock(cls, key, timeout_seconds, obj_id=None): method get_class_lock (line 214) | def get_class_lock(cls, timeout_seconds=120): method get_locked_obj (line 218) | def get_locked_obj(cls, *args, **kwargs): class CriticalSection (line 270) | class CriticalSection(object): method __init__ (line 286) | def __init__(self, keys, fail_hard=False, timeout=60, block=True): method __enter__ (line 295) | def __enter__(self): method success (line 311) | def success(self): method __exit__ (line 315) | def __exit__(self, exc_type, exc_value, traceback): class IncompatibleDocument (line 320) | class IncompatibleDocument(Exception): function get_cached_property (line 324) | def get_cached_property(couch_cls, obj_id, prop_name, expiry=12 * 60 * 60): FILE: corehq/ex-submodules/dimagi/utils/couch/bulk.py class BulkFetchException (line 8) | class BulkFetchException(Exception): function get_docs (line 12) | def get_docs(db, keys, **query_params): FILE: corehq/ex-submodules/dimagi/utils/couch/cache/cache_core/__init__.py class RedisClientError (line 31) | class RedisClientError(Exception): function rcache (line 35) | def rcache(): function get_redis_default_cache (line 39) | def get_redis_default_cache(): function get_redis_client (line 49) | def get_redis_client(): function key_doc_id (line 58) | def key_doc_id(doc_id): FILE: corehq/ex-submodules/dimagi/utils/couch/cache/cache_core/api.py class FakeViewResults (line 10) | class FakeViewResults(list): method first (line 16) | def first(self): method one (line 22) | def one(self): method all (line 32) | def all(self): function cached_view (line 40) | def cached_view(db, view_name, wrapper=None, cache_expire=COUCH_CACHE_TI... function do_cache_doc (line 58) | def do_cache_doc(doc, cache_expire=COUCH_CACHE_TIMEOUT): function cached_open_doc (line 64) | def cached_open_doc(db, doc_id, cache_expire=COUCH_CACHE_TIMEOUT, **para... function invalidate_doc (line 81) | def invalidate_doc(doc, deleted=False): FILE: corehq/ex-submodules/dimagi/utils/couch/cache/cache_core/gen.py class GenerationCache (line 15) | class GenerationCache(object): method _get_generational_caches (line 21) | def _get_generational_caches(): method view_generation_map (line 27) | def view_generation_map(): method doc_type_generation_map (line 35) | def doc_type_generation_map(): method _generate_caches (line 43) | def _generate_caches(): method _get_generation (line 53) | def _get_generation(self): method invalidate_all (line 62) | def invalidate_all(self): method _mk_view_cache_key (line 72) | def _mk_view_cache_key(self, view_name, params=None): method _cached_view_doc (line 92) | def _cached_view_doc(self, doc_or_docid, cache_expire=COUCH_CACHE_TIME... method cached_view (line 100) | def cached_view(self, db, view_name, wrapper=None, cache_expire=COUCH_... class GlobalCache (line 213) | class GlobalCache(GenerationCache): method _get_generation (line 224) | def _get_generation(self): method invalidate_all (line 227) | def invalidate_all(self): method nogen (line 234) | def nogen(): FILE: corehq/ex-submodules/dimagi/utils/couch/cache/cache_core/lib.py function invalidate_doc_generation (line 5) | def invalidate_doc_generation(doc): function _get_cached_doc_only (line 13) | def _get_cached_doc_only(doc_id): FILE: corehq/ex-submodules/dimagi/utils/couch/database.py class DocTypeMismatchException (line 18) | class DocTypeMismatchException(Exception): class DesignDoc (line 22) | class DesignDoc(object): method __init__ (line 25) | def __init__(self, database, id): method views (line 31) | def views(self): function get_db (line 39) | def get_db(postfix=None): function get_design_docs (line 52) | def get_design_docs(database): function iter_docs (line 61) | def iter_docs(database, ids, chunksize=100, **query_params): function iter_bulk_delete (line 67) | def iter_bulk_delete(database, ids, chunksize=100, doc_callback=None, wa... function iter_bulk_delete_with_doc_type_verification (line 92) | def iter_bulk_delete_with_doc_type_verification(database, ids, doc_type,... function is_bigcouch (line 103) | def is_bigcouch(): function bigcouch_quorum_count (line 108) | def bigcouch_quorum_count(): function get_safe_write_kwargs (line 118) | def get_safe_write_kwargs(): function get_safe_read_kwargs (line 122) | def get_safe_read_kwargs(): class SafeSaveDocument (line 126) | class SafeSaveDocument(Document): method save (line 131) | def save(self, **params): function safe_delete (line 137) | def safe_delete(db, doc_or_id): function apply_update (line 143) | def apply_update(doc, update_fn, max_tries=5): function _is_couch_error (line 160) | def _is_couch_error(err): function _get_request_from_traceback (line 180) | def _get_request_from_traceback(tb): function _get_couch_base_urls (line 193) | def _get_couch_base_urls(): FILE: corehq/ex-submodules/dimagi/utils/couch/debugdb/__init__.py function process_key (line 27) | def process_key(key_obj): function tidy_stacktrace (line 36) | def tidy_stacktrace(strace): function ms_from_timedelta (line 55) | def ms_from_timedelta(td): FILE: corehq/ex-submodules/dimagi/utils/couch/debugdb/debugdatabase.py class DebugDatabase (line 13) | class DebugDatabase(Database): method debug_open_doc (line 15) | def debug_open_doc(self, docid, **params): class DebugViewResults64 (line 97) | class DebugViewResults64(ViewResults): method debug_fetch (line 99) | def debug_fetch(self): method _debug_fetch_if_needed (line 122) | def _debug_fetch_if_needed(self): class DebugViewResults57 (line 163) | class DebugViewResults57(ViewResults): method debug_fetch (line 165) | def debug_fetch(self): method _debug_fetch_if_needed (line 188) | def _debug_fetch_if_needed(self): FILE: corehq/ex-submodules/dimagi/utils/couch/loosechange.py function map_reduce (line 1) | def map_reduce(emitfunc=lambda rec: [(None,)], reducefunc=lambda v: v, d... FILE: corehq/ex-submodules/dimagi/utils/couch/migration.py function disable_sync_to_couch (line 15) | def disable_sync_to_couch(sql_class): function sync_to_couch_enabled (line 30) | def sync_to_couch_enabled(sql_class): class SyncCouchToSQLMixin (line 44) | class SyncCouchToSQLMixin(object): method _migration_get_fields (line 79) | def _migration_get_fields(cls): method _migration_get_submodels (line 87) | def _migration_get_submodels(cls): method _migration_get_custom_couch_to_sql_functions (line 95) | def _migration_get_custom_couch_to_sql_functions(cls): method _migration_get_sql_model_class (line 103) | def _migration_get_sql_model_class(cls): method _migration_automatically_handle_dups (line 109) | def _migration_automatically_handle_dups(self): method _migration_get_sql_object (line 123) | def _migration_get_sql_object(self): method _migration_get_or_create_sql_object (line 135) | def _migration_get_or_create_sql_object(self): method _migration_sync_to_sql (line 142) | def _migration_sync_to_sql(self, sql_object, save=True): method _migration_sync_submodels_to_sql (line 153) | def _migration_sync_submodels_to_sql(self, sql_object): method _migration_do_sync (line 170) | def _migration_do_sync(self): method save (line 175) | def save(self, *args, sync_to_sql=True, **kwargs): method delete (line 189) | def delete(self, sync_to_sql=True, *args, **kwargs): class SyncSQLToCouchMixin (line 197) | class SyncSQLToCouchMixin(object): method _migration_couch_id (line 206) | def _migration_couch_id(self): method _migration_couch_id (line 210) | def _migration_couch_id(self, value): method _migration_get_fields (line 214) | def _migration_get_fields(cls): method _migration_get_submodels (line 222) | def _migration_get_submodels(cls): method _migration_get_custom_sql_to_couch_functions (line 230) | def _migration_get_custom_sql_to_couch_functions(cls): method _migration_get_couch_model_class (line 238) | def _migration_get_couch_model_class(cls): method _migration_get_couch_object (line 244) | def _migration_get_couch_object(self, **kw): method _migration_get_or_create_couch_object (line 253) | def _migration_get_or_create_couch_object(self): method _migration_sync_to_couch (line 263) | def _migration_sync_to_couch(self, couch_object, save=True): method _migration_sync_submodels_to_couch (line 274) | def _migration_sync_submodels_to_couch(self, couch_object): method _migration_do_sync (line 287) | def _migration_do_sync(self): method save (line 291) | def save(self, *args, sync_to_couch=True, **kwargs): method _save_submodels (line 307) | def _save_submodels(self, is_update): method delete (line 313) | def delete(self, *args, sync_to_couch=True, **kwargs): FILE: corehq/ex-submodules/dimagi/utils/couch/resource_conflict.py class RetryResourceError (line 6) | class RetryResourceError(Exception): method __init__ (line 7) | def __init__(self, fn, attempts): method __str__ (line 11) | def __str__(self): function retry_resource (line 18) | def retry_resource(n): FILE: corehq/ex-submodules/dimagi/utils/couch/safe_index.py function safe_index (line 3) | def safe_index(object, keys): FILE: corehq/ex-submodules/dimagi/utils/couch/settingshelper.py function get_server_url (line 4) | def get_server_url(server_root, username, password): function get_dynamic_db_settings (line 14) | def get_dynamic_db_settings(server_root, username, password, dbname, ins... FILE: corehq/ex-submodules/dimagi/utils/couch/sync_docs.py function sync_design_docs (line 16) | def sync_design_docs(db, design_dir, design_name, temp=None): function index_design_docs (line 37) | def index_design_docs(db, docid, design_name, wait=True, expect_views=Tr... function copy_designs (line 56) | def copy_designs(db, design_name, temp='tmp', delete=True): FILE: corehq/ex-submodules/dimagi/utils/couch/tests/test_redis_lock.py function test_get_redis_lock_with_token (line 13) | def test_get_redis_lock_with_token(): function test_get_redis_lock_without_token (line 35) | def test_get_redis_lock_without_token(): FILE: corehq/ex-submodules/dimagi/utils/couch/undo.py class DeleteRecord (line 12) | class DeleteRecord(Document): method save (line 17) | def save(self): class DeleteDocRecord (line 39) | class DeleteDocRecord(DeleteRecord): method undo (line 42) | def undo(self): class UndoableDocument (line 47) | class UndoableDocument(Document): method soft_delete (line 48) | def soft_delete(self, domain_included=True): function is_deleted (line 65) | def is_deleted(doc): function _is_doc_type_deleted (line 77) | def _is_doc_type_deleted(doc_type): function soft_delete (line 81) | def soft_delete(document): function get_deleted_doc_type (line 86) | def get_deleted_doc_type(document_class_or_instance): function undo_delete (line 94) | def undo_delete(document, delete_record=None, save=True): function remove_deleted_doc_type_suffix (line 105) | def remove_deleted_doc_type_suffix(doc_type): FILE: corehq/ex-submodules/dimagi/utils/data/crud.py class TabularCRUDManager (line 8) | class TabularCRUDManager(object): method __init__ (line 14) | def __init__(self, document_class, document_instance=None): method edit_button (line 19) | def edit_button(self): method properties_in_row (line 26) | def properties_in_row(self): method row (line 34) | def row(self): method format_property (line 48) | def format_property(self, key, property): method is_valid (line 51) | def is_valid(self, existing=None, **kwargs): method update (line 57) | def update(self, **kwargs): method create (line 63) | def create(self, **kwargs): class BaseCRUDForm (line 70) | class BaseCRUDForm(forms.Form): method __init__ (line 76) | def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None, method existing_object (line 87) | def existing_object(self): method crud_manager (line 93) | def crud_manager(self): method clean (line 96) | def clean(self): method save (line 102) | def save(self): class CRUDActionError (line 110) | class CRUDActionError(Exception): class CRUDFormRequestManager (line 114) | class CRUDFormRequestManager(object): method __init__ (line 119) | def __init__(self, request, form_class, form_template, doc_id=None, de... method json_response (line 133) | def json_response(self): method _get_form (line 150) | def _get_form(self): method _update_or_create_doc (line 155) | def _update_or_create_doc(self): method _delete_doc (line 164) | def _delete_doc(self): FILE: corehq/ex-submodules/dimagi/utils/data/deid_generator.py function to_number (line 5) | def to_number(bytes): function to_base (line 9) | def to_base(n, b): class DeidGenerator (line 19) | class DeidGenerator(object): method __init__ (line 21) | def __init__(self, seed, salt, bytes=8): method _get_number (line 27) | def _get_number(self): method _sha1_bytes (line 30) | def _sha1_bytes(self): method digest (line 34) | def digest(self, alphabet="0123456789"): method random_hash (line 41) | def random_hash(self): method random_number (line 48) | def random_number(self, low, high): FILE: corehq/ex-submodules/dimagi/utils/data/generator.py function arbitrary_firstname (line 35) | def arbitrary_firstname(): function arbitrary_lastname (line 39) | def arbitrary_lastname(): function arbitrary_fullname (line 43) | def arbitrary_fullname(): function arbitrary_username (line 47) | def arbitrary_username(): function username_from_name (line 51) | def username_from_name(name): function random_phonenumber (line 58) | def random_phonenumber(numdigits=11): function instantiate (line 62) | def instantiate(generator_or_value): function arbitrary_unique_name (line 75) | def arbitrary_unique_name(prefix=None, suffix=None): FILE: corehq/ex-submodules/dimagi/utils/dates.py function force_to_date (line 15) | def force_to_date(val): function force_to_datetime (line 29) | def force_to_datetime(val): function months_between (line 43) | def months_between(start, end): function add_months (line 61) | def add_months(year, months, offset): function add_months_to_date (line 73) | def add_months_to_date(date_or_datetime, offset): function first_of_next_month (line 85) | def first_of_next_month(ref_date): function utcnow_sans_milliseconds (line 94) | def utcnow_sans_milliseconds(): function today_or_tomorrow (line 98) | def today_or_tomorrow(date, inclusive=True): class DateSpan (line 107) | class DateSpan(object): method __init__ (line 127) | def __init__(self, startdate, enddate, format=ISO_DATE_FORMAT, inclusi... method __eq__ (line 138) | def __eq__(self, other): method __setstate__ (line 148) | def __setstate__(self, state): method max_days (line 178) | def max_days(self): method max_days (line 182) | def max_days(self, value): method to_dict (line 187) | def to_dict(self): method from_dict (line 194) | def from_dict(cls, data): method computed_startdate (line 198) | def computed_startdate(self): method computed_enddate (line 206) | def computed_enddate(self): method startdate_param (line 217) | def startdate_param(self): method startdate_utc (line 225) | def startdate_utc(self): method startdate_param_utc (line 230) | def startdate_param_utc(self): method startdate_display (line 236) | def startdate_display(self): method startdate_key_utc (line 244) | def startdate_key_utc(self): method enddate_adjusted (line 251) | def enddate_adjusted(self): method enddate_param (line 258) | def enddate_param(self): method enddate_utc (line 263) | def enddate_utc(self): method enddate_param_utc (line 269) | def enddate_param_utc(self): method enddate_key_utc (line 274) | def enddate_key_utc(self): method adjust_to_utc (line 280) | def adjust_to_utc(self, date): method end_of_end_day (line 286) | def end_of_end_day(self): method enddate_display (line 293) | def enddate_display(self): method is_valid (line 300) | def is_valid(self): method get_validation_reason (line 304) | def get_validation_reason(self): method __str__ (line 319) | def __str__(self): method __repr__ (line 335) | def __repr__(self): method default_serialization (line 338) | def default_serialization(self): method since (line 343) | def since(cls, days, enddate=None, format=ISO_DATE_FORMAT, inclusive=T... method max (line 370) | def max(cls): method from_month (line 374) | def from_month(cls, month=None, year=None, format=ISO_DATE_FORMAT, method set_timezone (line 392) | def set_timezone(self, to_tz): function get_day_of_month (line 404) | def get_day_of_month(year, month, count): function get_business_day_of_month (line 421) | def get_business_day_of_month(year, month, count): function get_business_day_of_month_before (line 436) | def get_business_day_of_month_before(year, month, day): function safe_strftime (line 460) | def safe_strftime(val, fmt): function get_start_and_end_dates_of_month (line 494) | def get_start_and_end_dates_of_month(year, month): function get_date_from_month_and_year_string (line 507) | def get_date_from_month_and_year_string(mm_yyyy): FILE: corehq/ex-submodules/dimagi/utils/decorators/datespan.py function datespan_in_request (line 7) | def datespan_in_request(from_param="from", to_param="to", FILE: corehq/ex-submodules/dimagi/utils/decorators/log_exception.py class log_exception (line 5) | class log_exception(object): method __call__ (line 11) | def __call__(self, fn): FILE: corehq/ex-submodules/dimagi/utils/decorators/profile.py function profile (line 27) | def profile(func=None, stream=sys.stderr, limit=100): function profile_dump (line 66) | def profile_dump(log_file, probability=1, limit=None): class resident_set_size (line 132) | class resident_set_size(ContextDecorator): method __init__ (line 140) | def __init__(self, enter_debugger=False): method __enter__ (line 144) | def __enter__(self): method __exit__ (line 148) | def __exit__(self, exc_type, exc_val, exc_tb): FILE: corehq/ex-submodules/dimagi/utils/decorators/view.py function get_file (line 5) | def get_file(filename): FILE: corehq/ex-submodules/dimagi/utils/django/cached_object.py class CachedObjectMeta (line 65) | class CachedObjectMeta(dict): method __init__ (line 71) | def __init__(self, size_key=OBJECT_ORIGINAL, content_length=0, content... method to_json (line 76) | def to_json(self): method wrap (line 80) | def wrap(cls, data): method get_extension (line 90) | def get_extension(content_type): method make_meta (line 98) | def make_meta(cls, file_stream, size_key, metadata): class CachedImageMeta (line 123) | class CachedImageMeta(CachedObjectMeta): method __init__ (line 128) | def __init__( method get_image_size (line 144) | def get_image_size(self): method make_meta (line 148) | def make_meta(cls, file_stream, size_key, metadata): class CachedObject (line 183) | class CachedObject(object): method __init__ (line 184) | def __init__(self, cache_key): method is_cached (line 194) | def is_cached(self): method key_prefix (line 198) | def key_prefix(self): method stream_key (line 204) | def stream_key(self, size_key): method meta_key (line 210) | def meta_key(self, size_key): method fetch_stream (line 215) | def fetch_stream(self, key): method fetch_meta (line 222) | def fetch_meta(self, key): method get (line 231) | def get(self, **kwargs): method _do_get_size (line 234) | def _do_get_size(self, size_key): method cache_put (line 243) | def cache_put(self, object_stream, metadata, timeout=None): method rcache (line 255) | def rcache(self): class CachedImage (line 259) | class CachedImage(CachedObject): method cache_put (line 263) | def cache_put(self, image_stream, metadata): method get (line 279) | def get(self, size_key=OBJECT_ORIGINAL, **kwargs): method fetch_image (line 293) | def fetch_image(self, key): method can_size (line 314) | def can_size(self, target_size_key, source_size_key=OBJECT_ORIGINAL): method has_size (line 326) | def has_size(self, size_key): method make_size (line 333) | def make_size(self, size_key): FILE: corehq/ex-submodules/dimagi/utils/django/email.py function mark_local_bounced_email (line 29) | def mark_local_bounced_email(bounced_addresses, message_id): function get_valid_recipients (line 55) | def get_valid_recipients(recipients, domain=None, is_conditional_alert=F... function send_HTML_email (line 83) | def send_HTML_email(subject, recipient, html_content, text_content=None, function get_email_configuration (line 173) | def get_email_configuration(domain: str, use_domain_gateway: bool = True, class EmailConfigurationManager (line 186) | class EmailConfigurationManager(ABC): method from_email (line 189) | def from_email(self): method connection (line 194) | def connection(self): method SES_configuration_set (line 199) | def SES_configuration_set(self): method return_path_email (line 204) | def return_path_email(self): class DefaultEmailConfiguration (line 208) | class DefaultEmailConfiguration(EmailConfigurationManager): method __init__ (line 209) | def __init__(self, from_email: str): method from_email (line 213) | def from_email(self) -> str: method connection (line 217) | def connection(self): method SES_configuration_set (line 221) | def SES_configuration_set(self): method return_path_email (line 225) | def return_path_email(self): class CustomEmailConfiguration (line 229) | class CustomEmailConfiguration(EmailConfigurationManager): method __init__ (line 230) | def __init__(self, email_setting): method from_email (line 235) | def from_email(self) -> str: method connection (line 239) | def connection(self): method SES_configuration_set (line 251) | def SES_configuration_set(self): method return_path_email (line 255) | def return_path_email(self): FILE: corehq/ex-submodules/dimagi/utils/django/fields.py class TrimmedCharField (line 4) | class TrimmedCharField(CharField): method clean (line 5) | def clean(self, value): FILE: corehq/ex-submodules/dimagi/utils/django/management.py function are_you_sure (line 7) | def are_you_sure(prompt="Are you sure you want to proceed? (yes or no): "): function export_as_csv_action (line 19) | def export_as_csv_action(description="Export selected objects as CSV file", FILE: corehq/ex-submodules/dimagi/utils/django/profiling_middleware.py class ProfileMiddleware (line 25) | class ProfileMiddleware(MiddlewareMixin): method process_request (line 37) | def process_request(self, request): method process_view (line 43) | def process_view(self, request, callback, callback_args, callback_kwar... method get_group (line 47) | def get_group(self, file): method get_summary (line 53) | def get_summary(self, results_dict, sum): method summary_for_files (line 64) | def summary_for_files(self, stats_str): method process_response (line 93) | def process_response(self, request, response): FILE: corehq/ex-submodules/dimagi/utils/django/request.py function _is_http_request (line 6) | def _is_http_request(obj): function request_from_args_or_kwargs (line 10) | def request_from_args_or_kwargs(*args, **kwargs): function mutable_querydict (line 25) | def mutable_querydict(query_dict): FILE: corehq/ex-submodules/dimagi/utils/django/settingsutil.py function initialize_logging (line 5) | def initialize_logging(loginitfunc): function default_logging (line 15) | def default_logging(logfile): FILE: corehq/ex-submodules/dimagi/utils/django/test_email.py class TestEmailConfiguration (line 13) | class TestEmailConfiguration(TestCase): method setUp (line 15) | def setUp(self): method test_get_email_configuration_with_domain_gateway (line 45) | def test_get_email_configuration_with_domain_gateway(self): method test_get_email_configuration_with_domain_gateway_disabled (line 57) | def test_get_email_configuration_with_domain_gateway_disabled(self): method test_get_email_configuration_without_domain_gateway (line 62) | def test_get_email_configuration_without_domain_gateway(self): method test_get_email_configuration_nonexistent_domain_gateway (line 67) | def test_get_email_configuration_nonexistent_domain_gateway(self): method _check_configuration (line 72) | def _check_configuration(self, config: EmailSettings, instance_type, FILE: corehq/ex-submodules/dimagi/utils/gitinfo.py function git_file_deltas (line 6) | def git_file_deltas(git_dir, commit, compare=None): function sub_git_remote_url (line 11) | def sub_git_remote_url(git_dir): function sub_git_cmd (line 18) | def sub_git_cmd(git_dir, args): function sub_get_current_branch (line 55) | def sub_get_current_branch(git_dir): function get_project_snapshot (line 67) | def get_project_snapshot(git_dir, submodules=False, log_count=1, submodu... function sub_git_info (line 75) | def sub_git_info(git_dir, log_count=1): function get_git_sub_info (line 132) | def get_git_sub_info(git_dir, sub_path, log_count=1): function sub_git_submodules (line 138) | def sub_git_submodules(git_dir, log_count=1): function split_repo_url (line 158) | def split_repo_url(repo_url): function get_commit_url (line 171) | def get_commit_url(repo_url, hexsha, compare=False): function get_compare_url (line 177) | def get_compare_url(repo_url, start_cmp, end_cmp): FILE: corehq/ex-submodules/dimagi/utils/logging.py function notify_error (line 9) | def notify_error(message, details=None): function notify_exception (line 13) | def notify_exception(request, message=None, details=None, exec_info=None): function log_signal_errors (line 44) | def log_signal_errors(signal_results, message, details): FILE: corehq/ex-submodules/dimagi/utils/management/commands/flush_caches.py class Command (line 6) | class Command(BaseCommand): method handle (line 9) | def handle(self, **options): FILE: corehq/ex-submodules/dimagi/utils/management/commands/prime_views.py function get_unique_dbs (line 25) | def get_unique_dbs(): function do_prime (line 44) | def do_prime(app_label, design_doc_name, view_name, verbose=False): class Command (line 57) | class Command(BaseCommand): method handle (line 60) | def handle(self, **options): method prime_everything (line 67) | def prime_everything(self, pool, verbose=False): FILE: corehq/ex-submodules/dimagi/utils/memory/utils.py function total_size (line 12) | def total_size(o, handlers={}, verbose=False): FILE: corehq/ex-submodules/dimagi/utils/models.py class _ (line 4) | class _(Document): FILE: corehq/ex-submodules/dimagi/utils/modules.py function to_function (line 6) | def to_function(function_path, failhard=False): FILE: corehq/ex-submodules/dimagi/utils/name_to_url.py function name_to_url (line 4) | def name_to_url(name, default=""): FILE: corehq/ex-submodules/dimagi/utils/next_available_name.py function next_available_name (line 4) | def next_available_name(prefix, existing_names): FILE: corehq/ex-submodules/dimagi/utils/parsing.py function string_to_boolean (line 10) | def string_to_boolean(val): function string_to_datetime (line 26) | def string_to_datetime(val): function string_to_utc_datetime (line 37) | def string_to_utc_datetime(val): function json_format_datetime (line 48) | def json_format_datetime(dt): function json_format_date (line 63) | def json_format_date(date_): FILE: corehq/ex-submodules/dimagi/utils/prime_views.py function prime_views (line 3) | def prime_views(pool_size): FILE: corehq/ex-submodules/dimagi/utils/rate_limit.py function rate_limit (line 5) | def rate_limit(key, actions_allowed=60, how_often=60): FILE: corehq/ex-submodules/dimagi/utils/read_only.py class ReadOnlyObject (line 4) | class ReadOnlyObject(object): method __init__ (line 6) | def __init__(self, obj): method __getitem__ (line 9) | def __getitem__(self, item): method __getattr__ (line 12) | def __getattr__(self, item): FILE: corehq/ex-submodules/dimagi/utils/repo.py function get_revision (line 4) | def get_revision(vcs, reporoot, dirtyfunc=lambda rev, **kw: rev + '*'): function get_raw_revision (line 20) | def get_raw_revision(vcs, reporoot, untracked_is_dirty=False): function git_raw_revision (line 51) | def git_raw_revision(exec_): function hg_raw_revision (line 55) | def hg_raw_revision(exec_): function git_is_dirty (line 59) | def git_is_dirty(exec_, excl_untracked): function hg_is_dirty (line 63) | def hg_is_dirty(exec_, excl_untracked): function dirty_nonce (line 67) | def dirty_nonce(rev, NONCE_LEN=5, **kwargs): FILE: corehq/ex-submodules/dimagi/utils/requestskit.py function get_auth (line 4) | def get_auth(url): FILE: corehq/ex-submodules/dimagi/utils/retry.py function retry_on (line 6) | def retry_on( FILE: corehq/ex-submodules/dimagi/utils/system.py function shell_exec (line 7) | def shell_exec(cmd, cwd=None): function shell_exec_checked (line 23) | def shell_exec_checked(cmd, cwd=None): function shell_exec_raw (line 41) | def shell_exec_raw(cmd, cwd): class ShellCommandError (line 55) | class ShellCommandError(Exception): method __init__ (line 58) | def __init__(self, **kwargs): method __str__ (line 62) | def __str__(self): method __repr__ (line 68) | def __repr__(self): function make_env (line 72) | def make_env(): function fix_path (line 78) | def fix_path(path, pathext=[]): FILE: corehq/ex-submodules/dimagi/utils/tests/cache_tests.py class FakeCache (line 11) | class FakeCache(object): method __init__ (line 12) | def __init__(self): method get (line 15) | def get(self, key): method keys (line 18) | def keys(self, pattern): method set (line 23) | def set(self, key, value, timeout=None): method delete (line 26) | def delete(self, key): class CachedObjectTests (line 33) | class CachedObjectTests(TestCase): method setUp (line 34) | def setUp(self): method testBasicObjects (line 37) | def testBasicObjects(self): method _make_image (line 53) | def _make_image(self, width=3001, height=2001): method test_is_cached_lost_meta_key (line 60) | def test_is_cached_lost_meta_key(self): method test_is_cached_lost_stream_key (line 72) | def test_is_cached_lost_stream_key(self): method testHugeImageObject (line 84) | def testHugeImageObject(self): method testSmallerImageObject (line 107) | def testSmallerImageObject(self): FILE: corehq/ex-submodules/dimagi/utils/tests/dates.py class DateSpanSinceTest (line 17) | class DateSpanSinceTest(SimpleTestCase): method test_since (line 18) | def test_since(self): class DateSpanTimezoneTest (line 29) | class DateSpanTimezoneTest(SimpleTestCase): method test_defaults (line 31) | def test_defaults(self): method test_adjustment (line 37) | def test_adjustment(self): class AddToMonthTest (line 48) | class AddToMonthTest(SimpleTestCase): method test_normal_date_function (line 50) | def test_normal_date_function(self): method test_normal_datetime_function (line 53) | def test_normal_datetime_function(self): method test_going_backwards (line 56) | def test_going_backwards(self): method test_no_shift (line 59) | def test_no_shift(self): method test_spanning_years (line 62) | def test_spanning_years(self): method test_spanning_years_backwards (line 65) | def test_spanning_years_backwards(self): method test_spanning_multiple_years (line 68) | def test_spanning_multiple_years(self): method test_spanning_multiple_years_backwards (line 71) | def test_spanning_multiple_years_backwards(self): method test_end_of_month (line 74) | def test_end_of_month(self): method test_leap_year (line 77) | def test_leap_year(self): method test_time_preserved (line 80) | def test_time_preserved(self): method test_time_preserved_end_of_month (line 84) | def test_time_preserved_end_of_month(self): class DateSpanInRequestTest (line 89) | class DateSpanInRequestTest(SimpleTestCase): method setUp (line 90) | def setUp(self): method test_from_request (line 98) | def test_from_request(self): class DateSpanValidationTests (line 120) | class DateSpanValidationTests(SimpleTestCase): method test_ok (line 122) | def test_ok(self): method test_date_missing (line 127) | def test_date_missing(self): method test_end_before_start (line 132) | def test_end_before_start(self): method test_wrong_century (line 140) | def test_wrong_century(self): method test_datespan_ok (line 145) | def test_datespan_ok(self): method test_datespan_too_long (line 149) | def test_datespan_too_long(self): method test_negative_max_days (line 155) | def test_negative_max_days(self): class DateSpanPickleTest (line 160) | class DateSpanPickleTest(SimpleTestCase): method _assert_datespan_equal_pre_post_pickle (line 161) | def _assert_datespan_equal_pre_post_pickle(self, datespan): method test_date (line 167) | def test_date(self): method test_datetime (line 170) | def test_datetime(self): method test_none (line 173) | def test_none(self): method test_other_args (line 178) | def test_other_args(self): class StartAndEndDatesOfMonthTest (line 189) | class StartAndEndDatesOfMonthTest(SimpleTestCase): method ensure_start_and_end_dates_are_correct_for_30_days (line 190) | def ensure_start_and_end_dates_are_correct_for_30_days(self): method ensure_start_and_end_dates_are_correct_for_31_days (line 195) | def ensure_start_and_end_dates_are_correct_for_31_days(self): method ensure_start_and_end_dates_are_correct_feb_leap_year (line 200) | def ensure_start_and_end_dates_are_correct_feb_leap_year(self): method ensure_start_and_end_dates_are_correct_feb_no_leap_year (line 205) | def ensure_start_and_end_dates_are_correct_feb_no_leap_year(self): class DateFromMonthAndYearStringTest (line 211) | class DateFromMonthAndYearStringTest(SimpleTestCase): method test_correct_format_is_parsed (line 212) | def test_correct_format_is_parsed(self): method test_invalid_format_throws_error (line 218) | def test_invalid_format_throws_error(self): FILE: corehq/ex-submodules/dimagi/utils/tests/name_to_url.py class NameToURLTest (line 5) | class NameToURLTest(SimpleTestCase): method test_name_to_url (line 6) | def test_name_to_url(self): FILE: corehq/ex-submodules/dimagi/utils/tests/next_available_name.py class NextAvailableNameTest (line 5) | class NextAvailableNameTest(SimpleTestCase): method test_next_available_name (line 6) | def test_next_available_name(self): FILE: corehq/ex-submodules/dimagi/utils/tests/test_chunked.py function test_doctests (line 6) | def test_doctests(): FILE: corehq/ex-submodules/dimagi/utils/tests/test_database.py function test_retry_on_couch_error (line 21) | def test_retry_on_couch_error(n, error): function test_retry_on_couch_error_too_many_retries (line 30) | def test_retry_on_couch_error_too_many_retries(): function test_retry_on_couch_error_non_couch_error (line 39) | def test_retry_on_couch_error_non_couch_error(): function make_couch_retry_function (line 51) | def make_couch_retry_function(n_errors, error=None): FILE: corehq/ex-submodules/dimagi/utils/tests/test_decorators.py function test_profile_decorator (line 10) | def test_profile_decorator(): function test_profile_decorator_with_options (line 25) | def test_profile_decorator_with_options(): function test_profile_contextmanager (line 38) | def test_profile_contextmanager(): FILE: corehq/ex-submodules/dimagi/utils/tests/test_json_handler.py class JsonHandlerTest (line 7) | class JsonHandlerTest(SimpleTestCase): method test_date (line 9) | def test_date(self): method test_datetime (line 12) | def test_datetime(self): method test_time (line 15) | def test_time(self): method test_time_24_hour (line 18) | def test_time_24_hour(self): method test_decimal (line 21) | def test_decimal(self): method test_to_json (line 24) | def test_to_json(self): method test_to_complete_json (line 31) | def test_to_complete_json(self): FILE: corehq/ex-submodules/dimagi/utils/tests/test_modules.py class ModulesTests (line 5) | class ModulesTests(SimpleTestCase): method test_to_function_simple (line 7) | def test_to_function_simple(self): method test_to_function_unicode (line 12) | def test_to_function_unicode(self): method test_to_function_package_level (line 17) | def test_to_function_package_level(self): FILE: corehq/ex-submodules/dimagi/utils/tests/test_rate_limit.py class RateLimitTestCase (line 10) | class RateLimitTestCase(SimpleTestCase): method test_rate_limit (line 11) | def test_rate_limit(self): FILE: corehq/ex-submodules/dimagi/utils/tests/test_retry.py class Error (line 11) | class Error(Exception): class OtherError (line 15) | class OtherError(Exception): function test_retry_on (line 29) | def test_retry_on(n, error): function test_retry_on_too_many_retries (line 40) | def test_retry_on_too_many_retries(): function test_retry_on_non_retry_error (line 50) | def test_retry_on_non_retry_error(): function test_retry_with_delays (line 63) | def test_retry_with_delays(): function make_retry_function (line 72) | def make_retry_function(decorator, n_errors, error): function mock_retry_sleep (line 86) | def mock_retry_sleep(): FILE: corehq/ex-submodules/dimagi/utils/tests/test_undo.py class TestDocument (line 11) | class TestDocument(Document): class TestSubDocument (line 15) | class TestSubDocument(TestDocument): class TestDeletedDocType (line 19) | class TestDeletedDocType(SimpleTestCase): method test_format_class (line 21) | def test_format_class(self): method test_format_instance (line 24) | def test_format_instance(self): method test_format_instance_override_doc_type (line 27) | def test_format_instance_override_doc_type(self): method test_format_subclass (line 30) | def test_format_subclass(self): method test_format_subclass_instance (line 33) | def test_format_subclass_instance(self): class TestDeleteAndUndo (line 37) | class TestDeleteAndUndo(TestCase): method test_undo_delete_removes_deleted_couch_doc_record (line 39) | def test_undo_delete_removes_deleted_couch_doc_record(self): method test_delete_record_cleans_up_after_itself (line 57) | def test_delete_record_cleans_up_after_itself(self): method test_save_delete_record_twice (line 63) | def test_save_delete_record_twice(self): FILE: corehq/ex-submodules/dimagi/utils/tests/test_web.py function test_get_ip (line 23) | def test_get_ip(request_meta, expected_value): function test_json_request (line 49) | def test_json_request(params, kwargs, expected_result): function test_not_lenient_json_request (line 53) | def test_not_lenient_json_request(): FILE: corehq/ex-submodules/dimagi/utils/web.py function get_url_base (line 17) | def get_url_base(): function get_site_domain (line 21) | def get_site_domain(): function get_static_url_prefix (line 25) | def get_static_url_prefix(): function parse_int (line 29) | def parse_int(arg_keys=[], kwarg_keys=[]): function json_handler (line 55) | def json_handler(obj): function json_response (line 76) | def json_response(obj, status_code=200, **kwargs): function json_request (line 87) | def json_request(params, lenient=True, booleans_as_strings=False): function get_ip (line 107) | def get_ip(request): FILE: corehq/ex-submodules/phonelog/admin.py class TableIsTooBigPaginator (line 7) | class TableIsTooBigPaginator(Paginator): method count (line 9) | def count(self): class DeviceReportEntryAdmin (line 15) | class DeviceReportEntryAdmin(admin.ModelAdmin): class UserErrorEntryAdmin (line 35) | class UserErrorEntryAdmin(admin.ModelAdmin): class UserEntryAdmin (line 57) | class UserEntryAdmin(admin.ModelAdmin): class ForceCloseEntryAdmin (line 71) | class ForceCloseEntryAdmin(admin.ModelAdmin): FILE: corehq/ex-submodules/phonelog/migrations/0001_initial.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/phonelog/migrations/0002_auto_20160218_1613.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/phonelog/migrations/0002_auto_20160219_0951.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/phonelog/migrations/0003_auto_20160225_0420.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/phonelog/migrations/0004_merge.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/phonelog/migrations/0005_add_forceclose_entry_20160408_1530.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/phonelog/migrations/0006_usererrorentry_context_node.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/phonelog/migrations/0007_devicelog_indexes.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/phonelog/migrations/0008_devicelog_varchar_index.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/phonelog/migrations/0009_userentry_server_date.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/phonelog/migrations/0010_rename_device_model.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/phonelog/migrations/0011_partition_devicelogentry.py function add_partitions (line 9) | def add_partitions(apps, schema_editor): class Migration (line 13) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/phonelog/migrations/0012_server_date_not_null.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/phonelog/migrations/0013_delete_olddevicereportentry.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/phonelog/migrations/0014_auto_20170718_2039.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/phonelog/migrations/0015_devicereportentry_android_version_and_more.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/phonelog/migrations/0016_rename_devicereportentry_domain_device_id_phonelog_da_domain_e98c65_idx_and_more.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/phonelog/models.py class DeviceReportEntry (line 8) | class DeviceReportEntry(models.Model): class Meta (line 23) | class Meta(object): method __repr__ (line 34) | def __repr__(self): class UserErrorEntry (line 38) | class UserErrorEntry(models.Model): class Meta (line 58) | class Meta(object): method __repr__ (line 65) | def __repr__(self): class UserEntry (line 69) | class UserEntry(models.Model): class Meta (line 77) | class Meta(object): method __repr__ (line 81) | def __repr__(self): class ForceCloseEntry (line 85) | class ForceCloseEntry(models.Model): class Meta (line 105) | class Meta(object): method __repr__ (line 109) | def __repr__(self): FILE: corehq/ex-submodules/phonelog/reports.py class BaseDeviceLogReport (line 48) | class BaseDeviceLogReport(GetParamsMixin, DatespanMixin, PaginatedReport... method headers (line 75) | def headers(self): method errors_only (line 96) | def errors_only(self): method device_log_users (line 101) | def device_log_users(self): method selected_tags (line 106) | def selected_tags(self): method selected_devices (line 111) | def selected_devices(self): method filters (line 116) | def filters(self): method goto_key (line 129) | def goto_key(self): method limit (line 134) | def limit(self): method goto_log (line 139) | def goto_log(self): method breadcrumbs (line 144) | def breadcrumbs(self): method rendered_report_title (line 155) | def rendered_report_title(self): method rows (line 172) | def rows(self): method ordering (line 189) | def ordering(self): method get_all_rows (line 194) | def get_all_rows(self): method _create_row (line 205) | def _create_row(self, log, matching_id, _device_users_by_xform, user_q... method _create_rows (line 270) | def _create_rows(self, logs, matching_id=None, range=None): method _filter_logs (line 285) | def _filter_logs(self): method _filter_query_by_slug (line 305) | def _filter_query_by_slug(self, slug): class DeviceLogDetailsReport (line 309) | class DeviceLogDetailsReport(BaseDeviceLogReport, DeploymentsReport): method show_in_navigation (line 311) | def show_in_navigation(cls, domain=None, project=None, user=None): FILE: corehq/ex-submodules/phonelog/tasks.py function purge_old_device_report_entries (line 18) | def purge_old_device_report_entries(): function send_device_log_to_sumologic (line 30) | def send_device_log_to_sumologic(self, url, data, headers): FILE: corehq/ex-submodules/phonelog/tests/test_sumologic.py class TestSumologic (line 12) | class TestSumologic(SimpleTestCase, TestXmlMixin): method setUp (line 16) | def setUp(self): method _get_xform (line 20) | def _get_xform(self, filename): method test_log_error (line 27) | def test_log_error(self): method test_usererror (line 39) | def test_usererror(self): method test_forceclose (line 52) | def test_forceclose(self): FILE: corehq/ex-submodules/phonelog/utils.py function device_users_by_xform (line 18) | def device_users_by_xform(xform_id): function _force_list (line 25) | def _force_list(obj_or_list): function _get_log_entries (line 29) | def _get_log_entries(report, report_slug): function _get_logs (line 41) | def _get_logs(form, report_name, report_slug): function process_device_log (line 54) | def process_device_log(domain, xform, force_logs): function _process_user_subreport (line 63) | def _process_user_subreport(xform): function _process_log_subreport (line 80) | def _process_log_subreport(domain, xform): function _get_user_info_from_log (line 109) | def _get_user_info_from_log(domain, log): function _process_user_error_subreport (line 126) | def _process_user_error_subreport(domain, xform): function _process_force_close_subreport (line 154) | def _process_force_close_subreport(domain, xform): class SumoLogicLog (line 186) | class SumoLogicLog(object): method __init__ (line 191) | def __init__(self, domain, xform): method send_data (line 195) | def send_data(self, url): method _get_header (line 200) | def _get_header(self, fmt): method _fill_base_template (line 217) | def _fill_base_template(self, log): method _get_user_info (line 250) | def _get_user_info(self, log): method log_subreport (line 263) | def log_subreport(self): method user_error_subreport (line 267) | def user_error_subreport(self): method force_close_subreport (line 282) | def force_close_subreport(self): function clear_device_log_request (line 300) | def clear_device_log_request(domain, xform): FILE: corehq/ex-submodules/pillow_retry/admin.py class PillowErrorAdmin (line 9) | class PillowErrorAdmin(admin.ModelAdmin): method reset_attempts (line 28) | def reset_attempts(self, request, queryset): FILE: corehq/ex-submodules/pillow_retry/api.py function _get_pillow (line 18) | def _get_pillow(pillow_name_or_class): function process_pillow_retry (line 22) | def process_pillow_retry(error_doc, producer=None): function _process_couch_change (line 53) | def _process_couch_change(pillow, error): function _process_kafka_change (line 68) | def _process_kafka_change(producer, error): FILE: corehq/ex-submodules/pillow_retry/management/commands/run_pillow_retry_queue.py class PillowRetryEnqueuingOperation (line 22) | class PillowRetryEnqueuingOperation(BaseCommand): method handle (line 25) | def handle(self, **options): method process_queue (line 36) | def process_queue(self): method get_items_to_be_processed (line 44) | def get_items_to_be_processed(self, utcnow): method _get_items (line 53) | def _get_items(self, utcnow): class Command (line 58) | class Command(PillowRetryEnqueuingOperation): FILE: corehq/ex-submodules/pillow_retry/management/commands/send_pillow_retry_queue_through_pillows.py class Command (line 17) | class Command(BaseCommand): method add_arguments (line 18) | def add_arguments(self, parser): method handle (line 21) | def handle(self, pillow_name, **options): method get_next_errors (line 40) | def get_next_errors(self): method _process_errors (line 59) | def _process_errors(self, errors): method _delete_errors (line 73) | def _delete_errors(self, errors): FILE: corehq/ex-submodules/pillow_retry/migrations/0001_initial.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/pillow_retry/migrations/0002_pillowerror_queued.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/pillow_retry/migrations/0003_auto_20151002_0944.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/pillow_retry/migrations/0004_auto_drop_legacy_ucr_errors.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/pillow_retry/migrations/0005_auto_20160923_1913.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/pillow_retry/migrations/0006_auto_20170615_0327.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/pillow_retry/migrations/0007_remove_pillowerror_queued.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/pillow_retry/migrations/0008_index_cleanup.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/pillow_retry/migrations/0009_pillow_error_pk_to_bigint.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/pillow_retry/models.py function _get_extra_args (line 18) | def _get_extra_args(limit, reduce, skip): function path_from_object (line 28) | def path_from_object(obj): class PillowError (line 33) | class PillowError(models.Model): method change_object (line 48) | def change_object(self): class Meta (line 55) | class Meta(object): method add_attempt (line 59) | def add_attempt(self, exception, traceb, change_meta=None, date=None): method reset_attempts (line 75) | def reset_attempts(self): method has_next_attempt (line 79) | def has_next_attempt(self): method get_or_create (line 86) | def get_or_create(cls, change, pillow): method get_errors_to_process (line 109) | def get_errors_to_process(cls, utcnow, limit=None, skip=0): method bulk_reset_attempts (line 147) | def bulk_reset_attempts(cls, last_attempt_lt, attempts_gte=None): FILE: corehq/ex-submodules/pillow_retry/tasks.py function record_pillow_error_queue_size (line 17) | def record_pillow_error_queue_size(): FILE: corehq/ex-submodules/pillow_retry/tests/test_all_pillows.py class ExceptionA (line 13) | class ExceptionA(Exception): class PillowtopRetryAllPillowsTests (line 17) | class PillowtopRetryAllPillowsTests(TestCase): method setUpClass (line 19) | def setUpClass(cls): method tearDownClass (line 27) | def tearDownClass(cls): method tearDown (line 31) | def tearDown(self): method test_all_pillows_handle_errors (line 34) | def test_all_pillows_handle_errors(self): method _test_error_logging_for_pillow (line 39) | def _test_error_logging_for_pillow(self, pillow_config): method _get_random_doc (line 61) | def _get_random_doc(self): function _pillow_instance_from_config_with_mock_process_change (line 70) | def _pillow_instance_from_config_with_mock_process_change(pillow_config): FILE: corehq/ex-submodules/pillow_retry/tests/test_model.py function get_ex_tb (line 19) | def get_ex_tb(message, ex_class=None): function FakePillow (line 27) | def FakePillow(): function GetDocPillow (line 31) | def GetDocPillow(): class GetDocProcessor (line 40) | class GetDocProcessor(PillowProcessor): method process_change (line 45) | def process_change(self, change): function create_error (line 51) | def create_error(change, message='message', attempts=0, pillow=None, ex_... class PillowRetryTestCase (line 61) | class PillowRetryTestCase(TestCase): method setUp (line 63) | def setUp(self): method tearDown (line 73) | def tearDown(self): method test_id (line 76) | def test_id(self): method test_attempts (line 85) | def test_attempts(self): method test_get_or_create (line 99) | def test_get_or_create(self): method test_get_errors_to_process (line 115) | def test_get_errors_to_process(self): method test_get_errors_to_process_max_limit (line 134) | def test_get_errors_to_process_max_limit(self): method test_deleted_doc (line 177) | def test_deleted_doc(self): method test_bulk_reset (line 187) | def test_bulk_reset(self): method test_bulk_reset_cutoff (line 200) | def test_bulk_reset_cutoff(self): method test_pillow_not_found (line 215) | def test_pillow_not_found(self): method test_empty_metadata (line 228) | def test_empty_metadata(self): class ExceptionA (line 239) | class ExceptionA(Exception): function _change (line 243) | def _change(id): FILE: corehq/ex-submodules/pillow_retry/tests/test_retry.py class TestException (line 22) | class TestException(Exception): class TestMixin (line 26) | class TestMixin(object): method _check_errors (line 28) | def _check_errors(self, expected_attempts, message=None): class CouchPillowRetryProcessingTest (line 42) | class CouchPillowRetryProcessingTest(TestCase, TestMixin): method setUp (line 43) | def setUp(self): method tearDown (line 61) | def tearDown(self): method test (line 66) | def test(self): class KakfaPillowRetryProcessingTest (line 108) | class KakfaPillowRetryProcessingTest(TestCase, TestMixin): method setUp (line 110) | def setUp(self): method tearDown (line 122) | def tearDown(self): method test (line 125) | def test(self): FILE: corehq/ex-submodules/pillowtop/admin.py class PillowCheckpointAdmin (line 6) | class PillowCheckpointAdmin(admin.ModelAdmin): class KafkaCheckpointAdmin (line 20) | class KafkaCheckpointAdmin(admin.ModelAdmin): FILE: corehq/ex-submodules/pillowtop/checkpoints/manager.py function get_or_create_checkpoint (line 21) | def get_or_create_checkpoint(checkpoint_id, sequence_format): function reset_checkpoint (line 33) | def reset_checkpoint(checkpoint_id, sequence_format): class PillowCheckpoint (line 42) | class PillowCheckpoint(object): method __init__ (line 44) | def __init__(self, checkpoint_id, sequence_format): method get_or_create_wrapped (line 49) | def get_or_create_wrapped(self, verify_unchanged=False): method get_current_sequence_id (line 60) | def get_current_sequence_id(self): method update_to (line 63) | def update_to(self, seq, change=None): method reset (line 91) | def reset(self): method touch (line 94) | def touch(self, min_interval): class PillowCheckpointEventHandler (line 115) | class PillowCheckpointEventHandler(ChangeEventHandler): method __init__ (line 117) | def __init__(self, checkpoint, checkpoint_frequency, checkpoint_callba... method should_update_checkpoint (line 130) | def should_update_checkpoint(self, context): method get_new_seq (line 141) | def get_new_seq(self, change): method update_checkpoint (line 144) | def update_checkpoint(self, change, context): class WrappedCheckpoint (line 159) | class WrappedCheckpoint(object): method __init__ (line 160) | def __init__(self, kafka_seq, timestamp): method wrapped_sequence (line 166) | def wrapped_sequence(self): class KafkaPillowCheckpoint (line 170) | class KafkaPillowCheckpoint(PillowCheckpoint): method __init__ (line 172) | def __init__(self, checkpoint_id, topics): method _get_checkpoints (line 178) | def _get_checkpoints(self): method get_or_create_wrapped (line 181) | def get_or_create_wrapped(self, verify_unchanged=None): method get_current_sequence_as_dict (line 195) | def get_current_sequence_as_dict(self): method get_current_sequence_id (line 201) | def get_current_sequence_id(self): method update_to (line 204) | def update_to(self, seq, change=None): method touch (line 226) | def touch(self, min_interval): method reset (line 229) | def reset(self): function get_checkpoint_for_elasticsearch_pillow (line 233) | def get_checkpoint_for_elasticsearch_pillow(pillow_id, index_name, topics): FILE: corehq/ex-submodules/pillowtop/checkpoints/util.py function get_machine_id (line 7) | def get_machine_id(): function construct_checkpoint_doc_id_from_name (line 20) | def construct_checkpoint_doc_id_from_name(name): function get_formatted_current_timestamp (line 24) | def get_formatted_current_timestamp(): FILE: corehq/ex-submodules/pillowtop/couchdb.py class CachedCouchDB (line 4) | class CachedCouchDB(Database): method __init__ (line 15) | def __init__(self, uri, readonly): method get_all (line 20) | def get_all(self): method doc_exist (line 26) | def doc_exist(self, doc_id): method open_doc (line 29) | def open_doc(self, doc_id, check_main=True): method save_doc (line 37) | def save_doc(self, doc): method bulk_load (line 44) | def bulk_load(self, doc_ids, purge_existing=True): FILE: corehq/ex-submodules/pillowtop/dao/couch.py class CouchDocumentStore (line 11) | class CouchDocumentStore(DocumentStore): method __init__ (line 13) | def __init__(self, couch_db, domain=None, doc_type=None): method get_document (line 18) | def get_document(self, doc_id): method iter_document_ids (line 27) | def iter_document_ids(self): method iter_documents (line 40) | def iter_documents(self, ids): FILE: corehq/ex-submodules/pillowtop/dao/django.py class DjangoDocumentStore (line 6) | class DjangoDocumentStore(DocumentStore): method __init__ (line 10) | def __init__(self, model_class, doc_generator_fn=None, model_manager=N... method get_document (line 24) | def get_document(self, doc_id): method iter_document_ids (line 31) | def iter_document_ids(self): method iter_documents (line 34) | def iter_documents(self, ids): FILE: corehq/ex-submodules/pillowtop/dao/exceptions.py class DocumentNotFoundError (line 3) | class DocumentNotFoundError(Exception): class DocumentDeletedError (line 7) | class DocumentDeletedError(DocumentNotFoundError): class DocumentMissingError (line 11) | class DocumentMissingError(DocumentNotFoundError): class DocumentMismatchError (line 15) | class DocumentMismatchError(Exception): FILE: corehq/ex-submodules/pillowtop/dao/interface.py class DocumentStore (line 4) | class DocumentStore(metaclass=ABCMeta): method get_document (line 10) | def get_document(self, doc_id): method iter_document_ids (line 14) | def iter_document_ids(self): method iter_documents (line 18) | def iter_documents(self, ids): FILE: corehq/ex-submodules/pillowtop/dao/mock.py class MockDocumentStore (line 5) | class MockDocumentStore(DocumentStore): method __init__ (line 7) | def __init__(self, data=None): method get_document (line 10) | def get_document(self, doc_id): method iter_documents (line 16) | def iter_documents(self, ids): method iter_document_ids (line 20) | def iter_document_ids(self): FILE: corehq/ex-submodules/pillowtop/es_utils.py function set_index_reindex_settings (line 18) | def set_index_reindex_settings(index): function set_index_normal_settings (line 25) | def set_index_normal_settings(index): function initialize_index_and_mapping (line 32) | def initialize_index_and_mapping(adapter): function initialize_index (line 38) | def initialize_index(adapter): function mapping_exists (line 49) | def mapping_exists(index_info): function assume_alias (line 56) | def assume_alias(index, alias): FILE: corehq/ex-submodules/pillowtop/exceptions.py class PillowtopCheckpointReset (line 3) | class PillowtopCheckpointReset(Exception): class PillowNotFoundError (line 7) | class PillowNotFoundError(Exception): class PillowtopIndexingError (line 11) | class PillowtopIndexingError(Exception): class PillowConfigError (line 15) | class PillowConfigError(Exception): class BulkDocException (line 19) | class BulkDocException(Exception): FILE: corehq/ex-submodules/pillowtop/feed/couch.py class CouchChangeFeed (line 9) | class CouchChangeFeed(ChangeFeed): method __init__ (line 11) | def __init__(self, couch_db, couch_filter=None, extra_couch_view_param... method iter_changes (line 18) | def iter_changes(self, since, forever): method get_processed_offsets (line 40) | def get_processed_offsets(self): method get_latest_offsets (line 43) | def get_latest_offsets(self): method get_latest_offsets_as_checkpoint_value (line 46) | def get_latest_offsets_as_checkpoint_value(self): method couch_db (line 50) | def couch_db(self): function change_from_couch_row (line 54) | def change_from_couch_row(couch_change, document_store=None): function populate_change_metadata (line 68) | def populate_change_metadata(change, data_source_type, data_source_name): function get_current_seq (line 100) | def get_current_seq(couch_db): FILE: corehq/ex-submodules/pillowtop/feed/interface.py class ChangeMeta (line 10) | class ChangeMeta(jsonobject.JsonObject): class Change (line 49) | class Change(object): method __init__ (line 60) | def __init__(self, id, sequence_id, document=None, deleted=False, meta... method set_document (line 83) | def set_document(self, document): method get_document (line 88) | def get_document(self): method should_fetch_document (line 103) | def should_fetch_document(self): method increment_attempt_count (line 106) | def increment_attempt_count(self): method __repr__ (line 110) | def __repr__(self): method __len__ (line 115) | def __len__(self): method __setattr__ (line 118) | def __setattr__(self, name, value): method __getitem__ (line 123) | def __getitem__(self, key): method __setitem__ (line 126) | def __setitem__(self, key, value): method __delitem__ (line 129) | def __delitem__(self, key, value): method __iter__ (line 132) | def __iter__(self): method __contains__ (line 135) | def __contains__(self, item): method get (line 138) | def get(self, key, default=None): method pop (line 141) | def pop(self, key, default): method to_dict (line 144) | def to_dict(self): class ChangeFeed (line 148) | class ChangeFeed(metaclass=ABCMeta): method iter_changes (line 157) | def iter_changes(self, since, forever): method get_latest_offsets (line 164) | def get_latest_offsets(self): method get_latest_offsets_json (line 170) | def get_latest_offsets_json(self): method get_processed_offsets (line 178) | def get_processed_offsets(self): method get_latest_offsets_as_checkpoint_value (line 185) | def get_latest_offsets_as_checkpoint_value(self): FILE: corehq/ex-submodules/pillowtop/feed/mock.py class MockChangeFeed (line 5) | class MockChangeFeed(ChangeFeed): method __init__ (line 11) | def __init__(self, queue): method iter_changes (line 14) | def iter_changes(self, since, forever=False): method get_latest_offsets (line 23) | def get_latest_offsets(self): method get_latest_offsets_as_checkpoint_value (line 26) | def get_latest_offsets_as_checkpoint_value(self): method get_processed_offsets (line 29) | def get_processed_offsets(self): class RandomChangeFeed (line 33) | class RandomChangeFeed(ChangeFeed): method __init__ (line 40) | def __init__(self, count, change_generator=None): method iter_changes (line 45) | def iter_changes(self, since, forever=False): method get_latest_offsets (line 54) | def get_latest_offsets(self): method get_latest_offsets_as_checkpoint_value (line 57) | def get_latest_offsets_as_checkpoint_value(self): method get_processed_offsets (line 60) | def get_processed_offsets(self): function random_change (line 64) | def random_change(sequence_id): FILE: corehq/ex-submodules/pillowtop/management/commands/add_kafka_partition.py class Command (line 6) | class Command(BaseCommand): method add_arguments (line 12) | def add_arguments(self, parser): method handle (line 16) | def handle(self, topic, num_partitions, **options): FILE: corehq/ex-submodules/pillowtop/management/commands/create_checkpoints_for_merged_pillows.py function pillow_to_checkpoint_id_mapping (line 35) | def pillow_to_checkpoint_id_mapping(reorg_mapping): class Command (line 50) | class Command(BaseCommand): method add_arguments (line 65) | def add_arguments(self, parser): method handle (line 79) | def handle(self, **options): method _create_checkpoints (line 125) | def _create_checkpoints(self, checkpoint_id_mapping, skip_check): FILE: corehq/ex-submodules/pillowtop/management/commands/merge_pillow_checkpoints.py function confirm (line 13) | def confirm(msg): class Command (line 17) | class Command(BaseCommand): method add_arguments (line 20) | def add_arguments(self, parser): method handle (line 26) | def handle(self, pillow_names, **options): FILE: corehq/ex-submodules/pillowtop/management/commands/ptop_dump_remaining_changes.py class Command (line 10) | class Command(BaseCommand): method add_arguments (line 13) | def add_arguments(self, parser): method handle (line 18) | def handle(self, pillow_class=None, **options): FILE: corehq/ex-submodules/pillowtop/management/commands/ptop_reset_checkpoint.py class Command (line 6) | class Command(BaseCommand): method add_arguments (line 9) | def add_arguments(self, parser): method handle (line 21) | def handle(self, pillow_class, **options): FILE: corehq/ex-submodules/pillowtop/management/commands/ptop_run_docs.py class Command (line 9) | class Command(BaseCommand): method add_arguments (line 12) | def add_arguments(self, parser): method handle (line 33) | def handle(self, **options): method log (line 60) | def log(self, string): method check_file (line 64) | def check_file(self, docs_filename): method check_id (line 75) | def check_id(self, id_string): method handle_all (line 80) | def handle_all(self, reindexer, doc_ids): FILE: corehq/ex-submodules/pillowtop/management/commands/run_ptop.py class Command (line 16) | class Command(BaseCommand): method add_arguments (line 19) | def add_arguments(self, parser): method handle (line 107) | def handle(self, run_all, list_all, list_checkpoints, pillow_key, pill... FILE: corehq/ex-submodules/pillowtop/management/commands/search_kafka_changes.py class Command (line 17) | class Command(BaseCommand): method add_arguments (line 26) | def add_arguments(self, parser): method handle (line 39) | def handle(self, **options): function get_offsets (line 138) | def get_offsets(partitions, date_start): function get_consumer (line 152) | def get_consumer(): function get_offset_check_function (line 165) | def get_offset_check_function(consumer, tp, target_date, margin): function _search (line 191) | def _search(left, right, predicate): FILE: corehq/ex-submodules/pillowtop/management/commands/split_pillow_checkpoints.py function confirm (line 13) | def confirm(msg): class Command (line 17) | class Command(BaseCommand): method add_arguments (line 20) | def add_arguments(self, parser): method handle (line 26) | def handle(self, pillow_names, **options): FILE: corehq/ex-submodules/pillowtop/management/commands/sync_es_users.py class Command (line 15) | class Command(BaseCommand): method add_arguments (line 18) | def add_arguments(self, parser): method handle (line 32) | def handle(self, **options): FILE: corehq/ex-submodules/pillowtop/management/commands/tail_kafka.py class Command (line 15) | class Command(BaseCommand): method add_arguments (line 18) | def add_arguments(self, parser): method handle (line 23) | def handle(self, **options): function get_consumer (line 69) | def get_consumer(): FILE: corehq/ex-submodules/pillowtop/management/commands/update_es_settings.py class Command (line 8) | class Command(BaseCommand): method add_arguments (line 11) | def add_arguments(self, parser): method handle (line 20) | def handle(self, **options): function _confirm (line 54) | def _confirm(message): FILE: corehq/ex-submodules/pillowtop/migrations/0001_initial.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/pillowtop/migrations/0002_djangopillowcheckpoint_sequence_format.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/pillowtop/migrations/0003_auto_20170411_1957.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/pillowtop/migrations/0004_offset_to_big_int.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/pillowtop/migrations/0005_kafkacheckpoint_doc_modification_time.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/pillowtop/migrations/0006_add_geopoint_to_case_search_index.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/pillowtop/migrations/0007_copy_xforms_checkpoint.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/pillowtop/migrations/0008_sync_es_with_couch_webusers.py function sync_couch_webusers_with_es (line 7) | def sync_couch_webusers_with_es(*args, **kwargs): class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/pillowtop/migrations/0009_sync_es_with_couch_commcareusers.py function sync_couch_commcareusers_with_es (line 7) | def sync_couch_commcareusers_with_es(*args, **kwargs): class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/ex-submodules/pillowtop/models.py function str_to_kafka_seq (line 11) | def str_to_kafka_seq(seq): function kafka_seq_to_str (line 21) | def kafka_seq_to_str(seq): class DjangoPillowCheckpoint (line 28) | class DjangoPillowCheckpoint(models.Model): method wrapped_sequence (line 37) | def wrapped_sequence(self): class Meta (line 43) | class Meta(object): method to_dict (line 47) | def to_dict(instance): method from_dict (line 59) | def from_dict(checkpoint_dict): class KafkaCheckpoint (line 71) | class KafkaCheckpoint(models.Model): class Meta (line 79) | class Meta(object): method get_or_create_for_checkpoint_id (line 83) | def get_or_create_for_checkpoint_id(cls, checkpoint_id, topics): function _create_checkpoints_from_kafka (line 97) | def _create_checkpoints_from_kafka(checkpoint_id, topics): FILE: corehq/ex-submodules/pillowtop/pillow/interface.py function _topic_for_ddog (line 24) | def _topic_for_ddog(topic): class PillowRuntimeContext (line 34) | class PillowRuntimeContext(object): method __init__ (line 40) | def __init__(self, changes_seen=0): method reset (line 43) | def reset(self): class ConstructedPillow (line 47) | class ConstructedPillow: method __init__ (line 61) | def __init__(self, name, checkpoint, change_feed, processor, process_n... method topics (line 78) | def topics(self): method get_change_feed (line 81) | def get_change_feed(self): method get_name (line 87) | def get_name(self): method get_last_checkpoint_sequence (line 93) | def get_last_checkpoint_sequence(self): method get_checkpoint (line 96) | def get_checkpoint(self, verify_unchanged=False): method set_checkpoint (line 99) | def set_checkpoint(self, change): method reset_checkpoint (line 102) | def reset_checkpoint(self): method run (line 105) | def run(self): method _run_migrations_forever (line 121) | def _run_migrations_forever(self): method _update_checkpoint (line 129) | def _update_checkpoint(self, change, context): method batch_processors (line 140) | def batch_processors(self): method serial_processors (line 148) | def serial_processors(self): method process_changes (line 154) | def process_changes(self, since, forever): method _batch_process_with_error_handling (line 192) | def _batch_process_with_error_handling(self, changes_chunk): method process_with_error_handling (line 243) | def process_with_error_handling(self, change, processor=None): method process_change (line 266) | def process_change(self, change, serial_only=False): method update_checkpoint (line 271) | def update_checkpoint(self, change, context): method _normalize_checkpoint_sequence (line 279) | def _normalize_checkpoint_sequence(self): method _normalize_sequence (line 286) | def _normalize_sequence(self, sequence): method _record_datadog_metrics (line 297) | def _record_datadog_metrics(self, changes_chunk, processing_time): method _record_checkpoint_in_datadog (line 330) | def _record_checkpoint_in_datadog(self): method _record_change_in_datadog (line 341) | def _record_change_in_datadog(self, change, processing_time): method _record_timeout_in_datadog (line 347) | def _record_timeout_in_datadog(self): method _record_batch_exception_in_datadog (line 356) | def _record_batch_exception_in_datadog(self, processor): method _record_change_success_in_datadog (line 364) | def _record_change_success_in_datadog(self, change): method __record_change_metric_in_datadog (line 367) | def __record_change_metric_in_datadog(self, metric, change, processing... method _deduplicate_changes (line 410) | def _deduplicate_changes(changes_chunk): class ChangeEventHandler (line 421) | class ChangeEventHandler(metaclass=ABCMeta): method update_checkpoint (line 427) | def update_checkpoint(self, change, context): method get_new_seq (line 434) | def get_new_seq(self, change): function handle_pillow_error (line 441) | def handle_pillow_error(pillow, change, exception): FILE: corehq/ex-submodules/pillowtop/processors/elastic.py function identity (line 35) | def identity(x): function noop_filter (line 39) | def noop_filter(x): class ElasticProcessor (line 47) | class ElasticProcessor(PillowProcessor): method __init__ (line 60) | def __init__(self, adapter, doc_filter_fn=None, change_filter_fn=None): method process_change (line 65) | def process_change(self, change): method _delete_doc_if_exists (line 120) | def _delete_doc_if_exists(self, doc_id, domain=None): method _datadog_timing (line 139) | def _datadog_timing(self, step): class BulkElasticProcessor (line 149) | class BulkElasticProcessor(ElasticProcessor, BulkPillowProcessor): method process_changes_chunk (line 162) | def process_changes_chunk(self, changes_chunk): function send_to_elasticsearch (line 203) | def send_to_elasticsearch(adapter, doc_id, name, function _propagate_failure (line 257) | def _propagate_failure(): function _retries (line 261) | def _retries(): function _sleep_between_retries (line 265) | def _sleep_between_retries(current_tries): FILE: corehq/ex-submodules/pillowtop/processors/form.py class FormSubmissionMetadataTrackerProcessor (line 32) | class FormSubmissionMetadataTrackerProcessor(PillowProcessor): method process_change (line 50) | def process_change(self, change): function mark_has_submission (line 104) | def mark_has_submission(domain, build_id): function _last_submission_needs_update (line 116) | def _last_submission_needs_update(last_submission, received_on_datetime,... function mark_latest_submission (line 140) | def mark_latest_submission(domain, user, app_id, build_id, version, meta... FILE: corehq/ex-submodules/pillowtop/processors/interface.py class PillowProcessor (line 4) | class PillowProcessor(metaclass=ABCMeta): method process_change (line 8) | def process_change(self, change): method checkpoint_updated (line 11) | def checkpoint_updated(self): method configure_dedicated_migration_process (line 14) | def configure_dedicated_migration_process(self): method run_migrations (line 17) | def run_migrations(self): class BulkPillowProcessor (line 21) | class BulkPillowProcessor(PillowProcessor): method process_changes_chunk (line 28) | def process_changes_chunk(self, changes_chunk): FILE: corehq/ex-submodules/pillowtop/processors/sample.py class NoopProcessor (line 5) | class NoopProcessor(PillowProcessor): method process_change (line 10) | def process_change(self, change): class LoggingProcessor (line 14) | class LoggingProcessor(PillowProcessor): method __init__ (line 19) | def __init__(self, logger=None): method process_change (line 22) | def process_change(self, change): class CountingProcessor (line 26) | class CountingProcessor(PillowProcessor): method __init__ (line 31) | def __init__(self): method process_change (line 34) | def process_change(self, change): class TestProcessor (line 38) | class TestProcessor(PillowProcessor): method __init__ (line 44) | def __init__(self): method process_change (line 47) | def process_change(self, change): method reset (line 50) | def reset(self): class ChunkedCountProcessor (line 54) | class ChunkedCountProcessor(BulkPillowProcessor): method __init__ (line 56) | def __init__(self): method process_change (line 59) | def process_change(self, change): method process_changes_chunk (line 62) | def process_changes_chunk(self, changes_chunk): FILE: corehq/ex-submodules/pillowtop/reindexer/change_providers/case.py class SqlDomainCaseChangeProvider (line 8) | class SqlDomainCaseChangeProvider(ChangeProvider): method __init__ (line 10) | def __init__(self, domain, limit_db_aliases=None): method iter_all_changes (line 14) | def iter_all_changes(self, start_from=None): function get_domain_case_change_provider (line 20) | def get_domain_case_change_provider(domains, limit_db_aliases=None): function _sql_case_to_change (line 27) | def _sql_case_to_change(case): FILE: corehq/ex-submodules/pillowtop/reindexer/change_providers/composite.py class CompositeChangeProvider (line 6) | class CompositeChangeProvider(ChangeProvider): method __init__ (line 10) | def __init__(self, change_providers): method iter_all_changes (line 13) | def iter_all_changes(self, start_from=None): FILE: corehq/ex-submodules/pillowtop/reindexer/change_providers/couch.py class CouchViewChangeProvider (line 8) | class CouchViewChangeProvider(ChangeProvider): method __init__ (line 18) | def __init__(self, couch_db, view_name, chunk_size=100, view_kwargs=No... method iter_all_changes (line 24) | def iter_all_changes(self, start_from=None): FILE: corehq/ex-submodules/pillowtop/reindexer/change_providers/form.py class SqlDomainXFormChangeProvider (line 8) | class SqlDomainXFormChangeProvider(ChangeProvider): method __init__ (line 10) | def __init__(self, domains, chunk_size=1000): method iter_all_changes (line 14) | def iter_all_changes(self, start_from=None): method _iter_form_id_chunks (line 29) | def _iter_form_id_chunks(self): function get_domain_form_change_provider (line 49) | def get_domain_form_change_provider(domains): FILE: corehq/ex-submodules/pillowtop/reindexer/change_providers/interface.py class ChangeProvider (line 4) | class ChangeProvider(metaclass=ABCMeta): method iter_all_changes (line 12) | def iter_all_changes(self, start_from=None): FILE: corehq/ex-submodules/pillowtop/reindexer/reindexer.py class Reindexer (line 28) | class Reindexer(metaclass=ABCMeta): method clean (line 29) | def clean(self): method reindex (line 39) | def reindex(self): class ReindexerFactory (line 44) | class ReindexerFactory(metaclass=ABCMeta): method __init__ (line 48) | def __init__(self, **options): method add_arguments (line 52) | def add_arguments(cls, parser): method build (line 60) | def build(self): method elastic_reindexer_args (line 68) | def elastic_reindexer_args(parser): method resumable_reindexer_args (line 77) | def resumable_reindexer_args(parser): method limit_db_args (line 94) | def limit_db_args(parser): method domain_arg (line 102) | def domain_arg(parser): method server_modified_on_arg (line 109) | def server_modified_on_arg(parser): class PillowChangeProviderReindexer (line 124) | class PillowChangeProviderReindexer(Reindexer): method __init__ (line 127) | def __init__(self, pillow_or_processor, change_provider): method reindex (line 131) | def reindex(self): function clean_index (line 147) | def clean_index(index_name): function prepare_index_for_reindex (line 152) | def prepare_index_for_reindex(adapter): function prepare_index_for_usage (line 157) | def prepare_index_for_usage(index_name): function _set_checkpoint (line 162) | def _set_checkpoint(pillow): class ElasticPillowReindexer (line 168) | class ElasticPillowReindexer(PillowChangeProviderReindexer): method __init__ (line 171) | def __init__( method clean (line 178) | def clean(self): method reindex (line 181) | def reindex(self): class BulkPillowReindexProcessor (line 192) | class BulkPillowReindexProcessor(BaseDocProcessor): method __init__ (line 193) | def __init__(self, adapter, doc_filter=None, process_deletes=False): method should_process (line 198) | def should_process(self, doc): method process_bulk_docs (line 203) | def process_bulk_docs(self, docs, progress_logger): method _doc_to_change (line 232) | def _doc_to_change(doc): class ResumableBulkElasticPillowReindexer (line 237) | class ResumableBulkElasticPillowReindexer(Reindexer): method __init__ (line 241) | def __init__(self, doc_provider, adapter, method clean (line 254) | def clean(self): method reindex (line 257) | def reindex(self): FILE: corehq/ex-submodules/pillowtop/run_pillowtop.py function run_pillow_by_name (line 14) | def run_pillow_by_name( function run_gevent_pillows (line 55) | def run_gevent_pillows(pillow_name, num_processes, process_number, geven... function run_gevent_worker (line 74) | def run_gevent_worker(pillow_name, *, process_number, **kw): function start_pillows (line 84) | def start_pillows(pillows=None): function start_pillow (line 106) | def start_pillow(pillow_instance): FILE: corehq/ex-submodules/pillowtop/tasks.py function pillow_datadog_metrics (line 13) | def pillow_datadog_metrics(): FILE: corehq/ex-submodules/pillowtop/tests/test_bulk.py class BulkTest (line 26) | class BulkTest(SimpleTestCase): method test_deduplicate_changes (line 28) | def test_deduplicate_changes(self): method test_get_errors_with_ids (line 43) | def test_get_errors_with_ids(self): class TestBulkDocOperations (line 53) | class TestBulkDocOperations(TestCase): method setUpClass (line 55) | def setUpClass(cls): method tearDownClass (line 66) | def tearDownClass(cls): method _changes_from_ids (line 70) | def _changes_from_ids(self, case_ids): method test_get_docs (line 83) | def test_get_docs(self): method test_process_changes_chunk (line 96) | def test_process_changes_chunk(self): method test_process_changes_chunk_with_errors (line 111) | def test_process_changes_chunk_with_errors(self): class TestBulkOperationsCaseToSQL (line 131) | class TestBulkOperationsCaseToSQL(TestCase): method setUpClass (line 134) | def setUpClass(cls): method tearDownClass (line 146) | def tearDownClass(cls): method _changes_from_ids (line 150) | def _changes_from_ids(self, case_ids): method test_process_changes_chunk_ignore_couch (line 164) | def test_process_changes_chunk_ignore_couch(self): FILE: corehq/ex-submodules/pillowtop/tests/test_changes.py class TestCouchChange (line 12) | class TestCouchChange(SimpleTestCase): method test_convert_to_and_from_couch_row (line 14) | def test_convert_to_and_from_couch_row(self): method test_set_attr_id (line 33) | def test_set_attr_id(self): method test_set_attr_document (line 40) | def test_set_attr_document(self): method test_set_attr_seq (line 48) | def test_set_attr_seq(self): method test_set_attr_deleted (line 55) | def test_set_attr_deleted(self): class TestChangeDocument (line 63) | class TestChangeDocument(SimpleTestCase): method setUp (line 65) | def setUp(self): method test_get_set_document (line 73) | def test_get_set_document(self): method test_get_document_from_doc_store (line 80) | def test_get_document_from_doc_store(self): method test_initial_document_overrides_doc_store (line 84) | def test_initial_document_overrides_doc_store(self): method test_set_document_overrides_doc_store (line 88) | def test_set_document_overrides_doc_store(self): method test_get_document_not_found (line 94) | def test_get_document_not_found(self): class TestCouchChangeFeed (line 99) | class TestCouchChangeFeed(SimpleTestCase): method test_iter_changes_forever (line 101) | def test_iter_changes_forever(self): class TestMockChangeFeed (line 125) | class TestMockChangeFeed(SimpleTestCase): method test_len (line 127) | def test_len(self): method test_results (line 134) | def test_results(self): class TestRandomChangeFeed (line 141) | class TestRandomChangeFeed(SimpleTestCase): method test_len (line 143) | def test_len(self): method test_results (line 150) | def test_results(self): method test_override_fn (line 162) | def test_override_fn(self): FILE: corehq/ex-submodules/pillowtop/tests/test_checkpoints.py class PillowCheckpointTest (line 10) | class PillowCheckpointTest(SimpleTestCase): method test_get_machine_id (line 12) | def test_get_machine_id(self): method test_get_machine_id_settings (line 18) | def test_get_machine_id_settings(self): method test_checkpoint_id (line 21) | def test_checkpoint_id(self): class PillowCheckpointDbTest (line 26) | class PillowCheckpointDbTest(TestCase): method checkpoint (line 32) | def checkpoint(self): method save_checkpoint (line 35) | def save_checkpoint(self, checkpoint_id, sequence_id): method test_get_or_create_empty (line 40) | def test_get_or_create_empty(self): method test_create_initial_checkpoint (line 45) | def test_create_initial_checkpoint(self): method test_db_changes_returned (line 49) | def test_db_changes_returned(self): method test_verify_unchanged_ok (line 55) | def test_verify_unchanged_ok(self): method test_verify_unchanged_fail (line 60) | def test_verify_unchanged_fail(self): method test_update (line 66) | def test_update(self): method test_update_verify_unchanged_fail (line 72) | def test_update_verify_unchanged_fail(self): method test_touch_checkpoint_noop (line 78) | def test_touch_checkpoint_noop(self): method test_touch_checkpoint_update (line 84) | def test_touch_checkpoint_update(self): FILE: corehq/ex-submodules/pillowtop/tests/test_config.py class PillowConfigTest (line 5) | class PillowConfigTest(SimpleTestCase): method test_from_string (line 7) | def test_from_string(self): method test_from_dict (line 14) | def test_from_dict(self): FILE: corehq/ex-submodules/pillowtop/tests/test_couch.py class CachedCouchDbTest (line 7) | class CachedCouchDbTest(TestCase): method setUpClass (line 10) | def setUpClass(cls): method test_bulk_load_missing (line 15) | def test_bulk_load_missing(self): FILE: corehq/ex-submodules/pillowtop/tests/test_dao.py class _AbstractDocumentStoreTestCase (line 10) | class _AbstractDocumentStoreTestCase(SimpleTestCase): method __test__ (line 13) | def __test__(cls): method dao (line 18) | def dao(self): method save (line 22) | def save(self, dao, doc_id, doc): method test_get_missing (line 25) | def test_get_missing(self): method test_save_and_get (line 29) | def test_save_and_get(self): class MockDocumentStoreTestCase (line 37) | class MockDocumentStoreTestCase(_AbstractDocumentStoreTestCase): method dao (line 40) | def dao(self): method save (line 43) | def save(self, dao, doc_id, doc): class CouchDbDocumentStoreTestCase (line 47) | class CouchDbDocumentStoreTestCase(_AbstractDocumentStoreTestCase): method dao (line 50) | def dao(self): method save (line 53) | def save(self, dao, doc_id, doc): FILE: corehq/ex-submodules/pillowtop/tests/test_elasticsearch.py class TestSendToElasticsearch (line 17) | class TestSendToElasticsearch(SimpleTestCase): method setUp (line 19) | def setUp(self): method test_create_doc (line 22) | def test_create_doc(self): method _send_to_es_and_check (line 28) | def _send_to_es_and_check(self, doc, update=False, es_merge_update=False, method _send_to_es (line 51) | def _send_to_es(self, doc, es_merge_update=False, delete=False): method test_update_doc (line 61) | def test_update_doc(self): method test_replace_doc (line 68) | def test_replace_doc(self): method test_merge_doc (line 75) | def test_merge_doc(self): method test_delete_doc (line 85) | def test_delete_doc(self): method test_missing_delete (line 91) | def test_missing_delete(self): method test_missing_merge (line 95) | def test_missing_merge(self): method test_connection_failure_no_error (line 100) | def test_connection_failure_no_error(self): method test_request_error (line 105) | def test_request_error(self): method _send_to_es_mock_errors (line 109) | def _send_to_es_mock_errors(self, exception, retries): method test_not_found (line 121) | def test_not_found(self): method test_conflict (line 126) | def test_conflict(self): FILE: corehq/ex-submodules/pillowtop/tests/test_form_change_providers.py class TestSqlDomainFormChangeProvider (line 11) | class TestSqlDomainFormChangeProvider(TestCase): method _create_form (line 13) | def _create_form(domain, doc_type): method setUpClass (line 18) | def setUpClass(cls): method tearDownClass (line 28) | def tearDownClass(cls): method test_change_provider (line 33) | def test_change_provider(self): method test_change_provider_empty (line 38) | def test_change_provider_empty(self): FILE: corehq/ex-submodules/pillowtop/tests/test_form_submission_metadata_tracker_processor.py class MarkLatestSubmissionTest (line 9) | class MarkLatestSubmissionTest(TestCase): method setUpClass (line 22) | def setUpClass(cls): method tearDown (line 32) | def tearDown(self): method tearDownClass (line 37) | def tearDownClass(cls): method test_mark_latest_submission_basic (line 41) | def test_mark_latest_submission_basic(self): method test_mark_latest_submission_do_not_update (line 75) | def test_mark_latest_submission_do_not_update(self): method test_mark_latest_submission_error_parsing (line 109) | def test_mark_latest_submission_error_parsing(self): method test_mark_latest_submission_multiple (line 122) | def test_mark_latest_submission_multiple(self): FILE: corehq/ex-submodules/pillowtop/tests/test_import_pillows.py class FakePillow (line 13) | class FakePillow(ConstructedPillow): method __init__ (line 14) | def __init__(self): class PillowImportTestCase (line 24) | class PillowImportTestCase(SimpleTestCase): method test_get_all_pillow_classes (line 26) | def test_get_all_pillow_classes(self): method test_get_all_pillow_instances (line 31) | def test_get_all_pillow_instances(self): method test_get_pillow_by_name (line 36) | def test_get_pillow_by_name(self): method test_get_pillow_by_name_instantiate (line 39) | def test_get_pillow_by_name_instantiate(self): method test_get_pillow_by_name_missing (line 42) | def test_get_pillow_by_name_missing(self): function make_fake_pillow (line 47) | def make_fake_pillow(pillow_id, **kwargs): class PillowFactoryFunctionTestCase (line 63) | class PillowFactoryFunctionTestCase(SimpleTestCase): method test_get_pillow_classes (line 65) | def test_get_pillow_classes(self): method test_get_pillow_instances (line 72) | def test_get_pillow_instances(self): method test_get_pillow_class_by_name (line 80) | def test_get_pillow_class_by_name(self): method test_get_pillow_by_name_instantiate (line 84) | def test_get_pillow_by_name_instantiate(self): class PillowTestCase (line 92) | class PillowTestCase(TestCase): method test_pillow_reset_checkpoint (line 94) | def test_pillow_reset_checkpoint(self): FILE: corehq/ex-submodules/pillowtop/tests/test_metrics.py class TestPillowMetrics (line 10) | class TestPillowMetrics(SimpleTestCase): method _get_metrics (line 13) | def _get_metrics(self, changes, batch=False): method test_basic_metrics (line 23) | def test_basic_metrics(self): method test_basic_metrics_with_partition (line 35) | def test_basic_metrics_with_partition(self): method test_case_type_metrics (line 48) | def test_case_type_metrics(self): method test_case_type_metrics_batch (line 53) | def test_case_type_metrics_batch(self): method _get_change (line 67) | def _get_change(self, topic='case', doc_type='CommCareCase', doc_subty... method _get_change_with_partition (line 84) | def _get_change_with_partition(self, topic='case', doc_type='CommCareC... FILE: corehq/ex-submodules/pillowtop/tests/test_pillow.py function test_process_changes (line 64) | def test_process_changes(cfg, expected_calls): function test_run_should_continue_on_checkpoint_reset (line 100) | def test_run_should_continue_on_checkpoint_reset(): FILE: corehq/ex-submodules/pillowtop/tests/test_run_pillowtop.py function test_run_pillow_by_name_single_process (line 10) | def test_run_pillow_by_name_single_process(): function test_run_pillow_by_name_dedicated_migration_process (line 23) | def test_run_pillow_by_name_dedicated_migration_process(): function test_run_pillow_by_name_with_gevent_workers_migration_process (line 36) | def test_run_pillow_by_name_with_gevent_workers_migration_process(): function test_run_pillow_by_name_with_gevent_workers (line 50) | def test_run_pillow_by_name_with_gevent_workers(): function test_run_pillow_by_name_with_gevent_workers_and_no_migration_process (line 64) | def test_run_pillow_by_name_with_gevent_workers_and_no_migration_process(): function test_run_pillow_by_name_with_gevent_workers_exclude_ucrs (line 78) | def test_run_pillow_by_name_with_gevent_workers_exclude_ucrs(): function test_run_pillow_by_name_with_too_few_gevent_workers (line 96) | def test_run_pillow_by_name_with_too_few_gevent_workers(workers): function patch_pillow_starter (line 110) | def patch_pillow_starter(exclude_ucrs=None): FILE: corehq/ex-submodules/pillowtop/tests/test_utils.py class TestEnsureDocumentExists (line 15) | class TestEnsureDocumentExists(TestCase): method _create_change (line 18) | def _create_change(self): method test_handle_existing_doc (line 31) | def test_handle_existing_doc(self): method test_handle_deleted_doc (line 38) | def test_handle_deleted_doc(self): method test_handle_missing_doc (line 46) | def test_handle_missing_doc(self): class TestBuildBulkPayload (line 63) | class TestBuildBulkPayload(SimpleTestCase): method test_build_bulk_payload_performs_delete_for__is_deleted_change (line 65) | def test_build_bulk_payload_performs_delete_for__is_deleted_change(self): method test_build_bulk_payload_performs_index_for_not__is_deleted_change (line 70) | def test_build_bulk_payload_performs_index_for_not__is_deleted_change(... method test_build_bulk_payload_discards_delete_change_for_not__is_deleted (line 75) | def test_build_bulk_payload_discards_delete_change_for_not__is_deleted... class DummyChange (line 80) | class DummyChange: method __init__ (line 82) | def __init__(self, id, doc_type, deleted): method get_document (line 87) | def get_document(self): FILE: corehq/ex-submodules/pillowtop/tests/utils.py function get_pillow_doc_adapter (line 27) | def get_pillow_doc_adapter(): function get_doc_count (line 31) | def get_doc_count(es, index, refresh_first=True): function get_index_mapping (line 39) | def get_index_mapping(es, index, doc_type): class FakeConstructedPillow (line 46) | class FakeConstructedPillow(interface.ConstructedPillow): function make_fake_constructed_pillow (line 50) | def make_fake_constructed_pillow(pillow_id, checkpoint_id): function _do_not_close_old_connections (line 63) | def _do_not_close_old_connections(sender): FILE: corehq/ex-submodules/pillowtop/utils.py function _get_pillow_instance (line 23) | def _get_pillow_instance(full_class_str): function _import_class_or_function (line 30) | def _import_class_or_function(full_class_str): function get_all_pillow_classes (line 34) | def get_all_pillow_classes(): function get_all_pillow_instances (line 38) | def get_all_pillow_instances(): function get_couch_pillow_instances (line 42) | def get_couch_pillow_instances(): function get_kafka_pillow_instances (line 50) | def get_kafka_pillow_instances(): function get_all_pillow_configs (line 58) | def get_all_pillow_configs(): function get_pillow_configs_from_settings_dict (line 62) | def get_pillow_configs_from_settings_dict(pillow_settings_dict): class PillowConfig (line 71) | class PillowConfig(namedtuple('PillowConfig', ['section', 'name', 'class... method __hash__ (line 76) | def __hash__(self): method get_class (line 79) | def get_class(self): method get_instance (line 82) | def get_instance(self, **kwargs): function get_pillow_config_from_setting (line 92) | def get_pillow_config_from_setting(section, pillow_config_string_or_dict): function get_pillow_by_name (line 113) | def get_pillow_by_name(pillow_class_name, instantiate=True, **kwargs): function get_pillow_config_by_name (line 118) | def get_pillow_config_by_name(pillow_name): function force_seq_int (line 126) | def force_seq_int(seq): function safe_force_seq_int (line 139) | def safe_force_seq_int(seq, default=None): function get_all_pillows_json (line 148) | def get_all_pillows_json(active_only=True): function get_pillow_json (line 159) | def get_pillow_json(pillow_config, consumer=None): class ErrorCollector (line 217) | class ErrorCollector(object): method __init__ (line 218) | def __init__(self): method add_error (line 221) | def add_error(self, error): function build_bulk_payload (line 225) | def build_bulk_payload(changes, error_collector=None): function ensure_matched_revisions (line 269) | def ensure_matched_revisions(change, fetched_document): function _convert_rev_to_int (line 299) | def _convert_rev_to_int(rev): function ensure_document_exists (line 306) | def ensure_document_exists(change): function bulk_fetch_changes_docs (line 318) | def bulk_fetch_changes_docs(changes, domain=None): function get_errors_with_ids (line 357) | def get_errors_with_ids(es_action_errors): function _changes_to_list (line 365) | def _changes_to_list(change_items): function change_checkpoint_id (line 370) | def change_checkpoint_id(old_id, new_id): FILE: corehq/ex-submodules/soil/__init__.py class DownloadBase (line 35) | class DownloadBase(object): method __init__ (line 50) | def __init__(self, mimetype="text/plain", method get_cache (line 73) | def get_cache(self): method get_content (line 76) | def get_content(self): method get_filename (line 79) | def get_filename(self): method get (line 92) | def get(cls, download_id): method save (line 102) | def save(self, expiry=24 * 60 * 60): method clean_content_disposition (line 105) | def clean_content_disposition(self, content_disposition): method toHttpResponse (line 116) | def toHttpResponse(self): method get_start_response (line 126) | def get_start_response(self): method __str__ (line 133) | def __str__(self): method set_task (line 136) | def set_task(self, task, timeout=ONE_DAY): method _task_key (line 139) | def _task_key(self): method task_id (line 143) | def task_id(self): method task (line 152) | def task(self): method get_progress (line 158) | def get_progress(self): method set_progress (line 169) | def set_progress(cls, task, current, total): method create (line 173) | def create(cls, payload, **kwargs): class MultipleTaskDownload (line 181) | class MultipleTaskDownload(DownloadBase): method task (line 186) | def task(self): method set_task (line 191) | def set_task(self, task_group, timeout=ONE_DAY): method get_progress (line 195) | def get_progress(self): class CachedDownload (line 199) | class CachedDownload(DownloadBase): method __init__ (line 205) | def __init__(self, cacheindex, mimetype="text/plain", method get_content (line 216) | def get_content(self): method create (line 220) | def create(cls, payload, expiry, **kwargs): class FileDownload (line 232) | class FileDownload(DownloadBase): method __init__ (line 239) | def __init__(self, filename, mimetype="text/plain", method get_content (line 249) | def get_content(self): method get_filename (line 253) | def get_filename(self): method toHttpResponse (line 256) | def toHttpResponse(self): method create (line 273) | def create(cls, payload, **kwargs): class BlobDownload (line 277) | class BlobDownload(DownloadBase): method __init__ (line 283) | def __init__(self, identifier, mimetype="text/plain", method get_filename (line 299) | def get_filename(self): method get_content (line 302) | def get_content(self): method toHttpResponse (line 305) | def toHttpResponse(self): method create (line 326) | def create(cls, payload, **kwargs): FILE: corehq/ex-submodules/soil/exceptions.py class TaskFailedError (line 3) | class TaskFailedError(Exception): method __init__ (line 5) | def __init__(self, errors=None, exception_name=None, *args, **kwargs): FILE: corehq/ex-submodules/soil/progress.py class STATES (line 17) | class STATES(object): class TaskStatus (line 25) | class TaskStatus(namedtuple('TaskStatus', ['result', 'error', 'state', '... method missing (line 26) | def missing(self): method not_started (line 29) | def not_started(self): method started (line 32) | def started(self): method success (line 35) | def success(self): method failed (line 38) | def failed(self): function get_task_progress (line 42) | def get_task_progress(task): function set_task_progress (line 77) | def set_task_progress(task, current, total, src='unknown'): class TaskProgressManager (line 84) | class TaskProgressManager(object): method __init__ (line 93) | def __init__(self, task, src='unknown_via_progress_manager', resolutio... method __enter__ (line 99) | def __enter__(self): method __exit__ (line 102) | def __exit__(self, type, value, traceback): method set_progress (line 105) | def set_progress(self, current, total): method _should_flush (line 112) | def _should_flush(self, new_value): method _quantized_value (line 115) | def _quantized_value(self, current, total): method flush (line 118) | def flush(self): function update_task_state (line 122) | def update_task_state(task, state, meta): function get_multiple_task_progress (line 133) | def get_multiple_task_progress(task): function get_task_status (line 146) | def get_task_status(task, is_multiple_download_task=False): function _is_real_task (line 212) | def _is_real_task(task): function _is_task_pending (line 232) | def _is_task_pending(task): function _get_download_context_multiple_tasks (line 239) | def _get_download_context_multiple_tasks(task): FILE: corehq/ex-submodules/soil/tests/test_download_base.py class TestBlobDownload (line 19) | class TestBlobDownload(TestCase): method setUpClass (line 23) | def setUpClass(cls): method tearDownClass (line 28) | def tearDownClass(cls): method test_expose_blob_download (line 32) | def test_expose_blob_download(self): class TestAuthenticatedDownloadBase (line 44) | class TestAuthenticatedDownloadBase(TestCase): method setUpClass (line 46) | def setUpClass(cls): method setUp (line 55) | def setUp(self): method tearDownClass (line 62) | def tearDownClass(cls): class TestAuthenticatedCachedDownload (line 69) | class TestAuthenticatedCachedDownload(TestAuthenticatedDownloadBase): method test_no_auth_needed (line 70) | def test_no_auth_needed(self): method test_user_auth_required_access_allowed (line 79) | def test_user_auth_required_access_allowed(self): method test_user_auth_required_access_denied (line 89) | def test_user_auth_required_access_denied(self): class TestAuthenticatedFileDownload (line 100) | class TestAuthenticatedFileDownload(TestAuthenticatedDownloadBase): method setUpClass (line 102) | def setUpClass(cls): method test_no_auth_needed (line 109) | def test_no_auth_needed(self): method test_user_auth_required_access_allowed (line 114) | def test_user_auth_required_access_allowed(self): method test_user_auth_required_access_denied (line 123) | def test_user_auth_required_access_denied(self): class TestAuthenticatedBlobDownload (line 133) | class TestAuthenticatedBlobDownload(TestAuthenticatedDownloadBase): method setUpClass (line 135) | def setUpClass(cls): method tearDownClass (line 140) | def tearDownClass(cls): method test_no_auth_needed (line 144) | def test_no_auth_needed(self): method test_user_auth_required_access_allowed (line 155) | def test_user_auth_required_access_allowed(self): method test_user_auth_required_access_denied (line 167) | def test_user_auth_required_access_denied(self): FILE: corehq/ex-submodules/soil/tests/test_get_task_status.py class GetTaskStatusTest (line 9) | class GetTaskStatusTest(SimpleTestCase): method test_missing (line 10) | def test_missing(self): method test_not_missing (line 36) | def test_not_missing(self): class MockTask (line 63) | class MockTask(object): method __init__ (line 64) | def __init__(self, task_meta, failed=False, successful=False): method _get_task_meta (line 69) | def _get_task_meta(self): method failed (line 72) | def failed(self): method successful (line 75) | def successful(self): method status (line 79) | def status(self): method result (line 85) | def result(self): FILE: corehq/ex-submodules/soil/tests/test_progress_manager.py class ProgressManagerTest (line 11) | class ProgressManagerTest(SimpleTestCase): method test_basic (line 13) | def test_basic(self, set_task_progress): FILE: corehq/ex-submodules/soil/util.py function expose_cached_download (line 28) | def expose_cached_download(payload, expiry, file_extension, mimetype=None, function expose_file_download (line 42) | def expose_file_download(path, expiry, **kwargs): function expose_blob_download (line 51) | def expose_blob_download( function get_download_context (line 73) | def get_download_context(download_id, message=None, require_result=False): function _is_alive (line 110) | def _is_alive(): function process_email_request (line 121) | def process_email_request(domain, download_id, email_address): function get_task (line 138) | def get_task(task_id): function get_download_file_path (line 143) | def get_download_file_path(use_transfer, filename): function expose_download (line 153) | def expose_download(use_transfer, file_path, filename, download_id, file... FILE: corehq/ex-submodules/soil/views.py function ajax_job_poll (line 15) | def ajax_job_poll(request, download_id, template="soil/partials/dl_statu... function retrieve_download (line 31) | def retrieve_download(request, download_id, template="soil/file_download... FILE: corehq/feature_previews.py class FeaturePreview (line 21) | class FeaturePreview(StaticToggle): method __init__ (line 33) | def __init__(self, slug, label, description, help_link=None, privilege... method has_privilege (line 46) | def has_privilege(self, request): function all_previews (line 58) | def all_previews(): function all_previews_by_name (line 63) | def all_previews_by_name(): function find_preview_by_slug (line 68) | def find_preview_by_slug(slug): function previews_dict (line 75) | def previews_dict(domain): function preview_values_by_name (line 81) | def preview_values_by_name(domain): function previews_enabled_for_domain (line 93) | def previews_enabled_for_domain(domain): function enable_callcenter (line 161) | def enable_callcenter(domain_name, checked): function can_enable_callcenter (line 168) | def can_enable_callcenter(request): FILE: corehq/form_processor/admin.py class XFormInstanceAdmin (line 6) | class XFormInstanceAdmin(admin.ModelAdmin): class CommCareCaseAdmin (line 14) | class CommCareCaseAdmin(admin.ModelAdmin): class LedgerValueAdmin (line 22) | class LedgerValueAdmin(admin.ModelAdmin): FILE: corehq/form_processor/app_config.py class FormProcessorAppConfig (line 4) | class FormProcessorAppConfig(AppConfig): method ready (line 7) | def ready(self): method register_renamed_model (line 44) | def register_renamed_model(self, new_name, old_name): method get_models (line 52) | def get_models(self, *args, **kw): FILE: corehq/form_processor/backends/sql/casedb.py class CaseDbCacheSQL (line 7) | class CaseDbCacheSQL(AbstractCaseDbCache): method __init__ (line 11) | def __init__(self, *args, **kw): method _validate_case (line 16) | def _validate_case(self, case): method _iter_cases (line 23) | def _iter_cases(self, case_ids): method get_cases_for_saving (line 26) | def get_cases_for_saving(self, now): method get_reverse_indexed_cases (line 41) | def get_reverse_indexed_cases(self, case_ids, case_types=None, is_clos... method filter_closed_extensions (line 45) | def filter_closed_extensions(self, extensions_to_close): FILE: corehq/form_processor/backends/sql/dbaccessors.py function iter_all_rows (line 44) | def iter_all_rows(reindex_accessor): function iter_all_ids (line 58) | def iter_all_ids(reindex_accessor): function iter_all_ids_chunked (line 62) | def iter_all_ids_chunked(reindex_accessor): class ShardAccessor (line 72) | class ShardAccessor(object): method hash_doc_ids_sql_for_testing (line 76) | def hash_doc_ids_sql_for_testing(doc_ids): method hash_doc_uuid_sql_for_testing (line 95) | def hash_doc_uuid_sql_for_testing(doc_uuid): method hash_doc_ids_python (line 113) | def hash_doc_ids_python(doc_ids): method hash_doc_id_python (line 120) | def hash_doc_id_python(doc_id): method get_database_for_docs (line 133) | def get_database_for_docs(doc_ids): method get_docs_by_database (line 141) | def get_docs_by_database(doc_ids): method _get_doc_database_map (line 149) | def _get_doc_database_map(doc_ids, by_doc=True): method get_shard_id_and_database_for_doc (line 172) | def get_shard_id_and_database_for_doc(doc_id): method get_database_for_doc (line 182) | def get_database_for_doc(doc_id): class ReindexAccessor (line 192) | class ReindexAccessor(metaclass=ABCMeta): method __init__ (line 195) | def __init__(self, limit_db_aliases=None): method is_sharded (line 198) | def is_sharded(self): method sql_db_aliases (line 206) | def sql_db_aliases(self): method model_class (line 218) | def model_class(self): method id_field (line 225) | def id_field(self): method get_doc (line 233) | def get_doc(self, doc_id): method doc_to_json (line 240) | def doc_to_json(self, doc): method filters (line 247) | def filters(self, last_doc_pk=None, for_count=False): method query (line 254) | def query(self, from_db, last_doc_pk=None, for_count=False): method get_doc_ids (line 261) | def get_doc_ids(self, from_db, last_doc_pk=None, limit=500): method get_docs (line 277) | def get_docs(self, from_db, last_doc_pk=None, limit=500): method extra_filters (line 287) | def extra_filters(self, for_count=False): method get_approximate_doc_count (line 295) | def get_approximate_doc_count(self, from_db): class FormReindexAccessor (line 304) | class FormReindexAccessor(ReindexAccessor): method __init__ (line 306) | def __init__(self, domain=None, include_attachments=True, limit_db_ali... method model_class (line 316) | def model_class(self): method id_field (line 320) | def id_field(self): method get_doc (line 323) | def get_doc(self, doc_id): method doc_to_json (line 329) | def doc_to_json(self, doc): method extra_filters (line 335) | def extra_filters(self, for_count=False): class CaseReindexAccessor (line 349) | class CaseReindexAccessor(ReindexAccessor): method __init__ (line 353) | def __init__(self, domain=None, limit_db_aliases=None, start_date=None... method model_class (line 363) | def model_class(self): method id_field (line 367) | def id_field(self): method get_doc (line 370) | def get_doc(self, doc_id): method extra_filters (line 376) | def extra_filters(self, for_count=False): class LedgerReindexAccessor (line 389) | class LedgerReindexAccessor(ReindexAccessor): method __init__ (line 391) | def __init__(self, domain=None, limit_db_aliases=None): method model_class (line 396) | def model_class(self): method id_field (line 400) | def id_field(self): method get_doc (line 406) | def get_doc(self, doc_id): method extra_filters (line 414) | def extra_filters(self, for_count=False): method doc_to_json (line 419) | def doc_to_json(self, doc): class LedgerAccessorSQL (line 425) | class LedgerAccessorSQL(AbstractLedgerAccessor): method get_ledger_values_for_cases (line 428) | def get_ledger_values_for_cases(case_ids, section_ids=None, entry_ids=... method get_ledger_values_for_case (line 444) | def get_ledger_values_for_case(case_id): method get_ledger_value (line 451) | def get_ledger_value(case_id, section_id, entry_id): method save_ledger_values (line 461) | def save_ledger_values(ledger_values, stock_result=None): method get_ledger_transactions_for_case (line 487) | def get_ledger_transactions_for_case(case_id, section_id=None, entry_i... method get_ledger_transactions_in_window (line 494) | def get_ledger_transactions_in_window(case_id, section_id, entry_id, w... method get_transactions_for_consumption (line 501) | def get_transactions_for_consumption(domain, case_id, product_id, sect... method get_latest_transaction (line 513) | def get_latest_transaction(case_id, section_id, entry_id): method get_current_ledger_state (line 523) | def get_current_ledger_state(case_ids, ensure_form_id=False): method delete_ledger_transactions_for_form (line 536) | def delete_ledger_transactions_for_form(case_ids, form_id): method delete_ledger_values (line 553) | def delete_ledger_values(case_id, section_id=None, entry_id=None): method get_ledger_transactions_for_form (line 573) | def get_ledger_transactions_for_form(form_id, limit_to_cases): FILE: corehq/form_processor/backends/sql/ledger.py class LedgerDBSQL (line 11) | class LedgerDBSQL(LedgerDBInterface): method get_ledgers_for_case (line 13) | def get_ledgers_for_case(self, case_id): method _get_ledger (line 16) | def _get_ledger(self, unique_ledger_reference): class LedgerProcessorSQL (line 23) | class LedgerProcessorSQL(LedgerProcessorInterface): method get_models_to_update (line 28) | def get_models_to_update(self, form_id, stock_report_helpers, deprecat... method _process_transaction (line 61) | def _process_transaction(stock_report_helper, stock_trans, ledger_db): method _rebuild_ledger (line 89) | def _rebuild_ledger(self, form_id, ledger_value): method rebuild_ledger_state (line 110) | def rebuild_ledger_state(self, case_id, section_id, entry_id): method hard_rebuild_ledgers (line 114) | def hard_rebuild_ledgers(cls, domain, case_id, section_id, entry_id): method _rebuild_ledger_value_from_transactions (line 127) | def _rebuild_ledger_value_from_transactions(ledger_value, transactions... method process_form_archived (line 147) | def process_form_archived(self, form): method process_form_unarchived (line 155) | def process_form_unarchived(self, form): function _compute_ledger_values (line 172) | def _compute_ledger_values(original_balance, transaction): function _get_ledger_transaction (line 187) | def _get_ledger_transaction(lazy_original_balance, stock_report_helper, ... function _report_type_to_ledger_type (line 202) | def _report_type_to_ledger_type(report_type): FILE: corehq/form_processor/backends/sql/processor.py class FormProcessorSQL (line 29) | class FormProcessorSQL(object): method store_attachments (line 32) | def store_attachments(cls, xform, attachments): method copy_attachments (line 36) | def copy_attachments(cls, from_form, to_form): method copy_form_operations (line 40) | def copy_form_operations(cls, from_form, to_form): method new_xform (line 47) | def new_xform(cls, form_data): method is_duplicate (line 59) | def is_duplicate(cls, xform_id, domain=None): method hard_delete_case_and_forms (line 63) | def hard_delete_case_and_forms(cls, domain, case, xforms): method new_form_from_old (line 69) | def new_form_from_old(cls, existing_form, xml, value_responses_map, us... method save_processed_models (line 89) | def save_processed_models(cls, processed_forms, cases=None, stock_resu... method publish_changes_to_kafka (line 145) | def publish_changes_to_kafka(processed_forms, cases, stock_result): method apply_deprecation (line 160) | def apply_deprecation(cls, existing_xform, new_xform): method deduplicate_xform (line 173) | def deduplicate_xform(cls, xform): method assign_new_id (line 180) | def assign_new_id(cls, xform): method xformerror_from_xform_instance (line 187) | def xformerror_from_xform_instance(cls, instance, error_message, with_... method submission_error_form_instance (line 202) | def submission_error_form_instance(cls, domain, instance, message): method get_cases_from_forms (line 220) | def get_cases_from_forms(case_db, xforms): method hard_rebuild_case (line 274) | def hard_rebuild_case(domain, case_id, detail, lock=True, save=True): method _rebuild_case_from_transactions (line 303) | def _rebuild_case_from_transactions(case, detail, updated_xforms=None): method get_case_forms (line 320) | def get_case_forms(case_id): method form_has_case_transactions (line 325) | def form_has_case_transactions(form_id): method get_case_with_lock (line 329) | def get_case_with_lock(case_id, lock=False, wrap=False): FILE: corehq/form_processor/backends/sql/supply.py class SupplyPointSQL (line 6) | class SupplyPointSQL: method get_or_create_by_location (line 9) | def get_or_create_by_location(cls, location): method get_by_location (line 16) | def get_by_location(cls, location): method get_closed_and_open_by_location_id_and_domain (line 20) | def get_closed_and_open_by_location_id_and_domain(domain, location_id): method get_supply_point_ids_by_location (line 24) | def get_supply_point_ids_by_location(domain): method get_supply_point (line 31) | def get_supply_point(supply_point_id): method get_supply_points (line 35) | def get_supply_points(supply_point_ids): FILE: corehq/form_processor/backends/sql/update_strategy.py function _validate_length (line 43) | def _validate_length(length): function _convert_type_check_length (line 62) | def _convert_type_check_length(property_name, value): class SqlCaseUpdateStrategy (line 69) | class SqlCaseUpdateStrategy(UpdateStrategy): method apply_action_intents (line 72) | def apply_action_intents(self, primary_intent, deprecation_intent=None): method update_from_case_update (line 96) | def update_from_case_update(self, case_update, xformdoc, other_forms=N... method add_transaction_for_form (line 101) | def add_transaction_for_form(case, case_update, form): method _apply_case_update (line 107) | def _apply_case_update(self, case_update, xformdoc): method _apply_action (line 143) | def _apply_action(self, case_update, action, xform): method _update_known_properties (line 160) | def _update_known_properties(self, action): method _apply_create_action (line 165) | def _apply_create_action(self, case_update, create_action): method _apply_update_action (line 168) | def _apply_update_action(self, update_action): method _apply_index_action (line 185) | def _apply_index_action(self, action): method _apply_attachments_action (line 210) | def _apply_attachments_action(self, attachment_action, xform): method _apply_close_action (line 238) | def _apply_close_action(self, case_update): method _reset_case_state (line 243) | def _reset_case_state(self): method rebuild_from_transactions (line 262) | def rebuild_from_transactions(self, transactions, rebuild_transaction,... method reconcile_transactions_if_necessary (line 311) | def reconcile_transactions_if_necessary(self): method reconcile_transactions (line 323) | def reconcile_transactions(self): method _delete_old_related_models (line 341) | def _delete_old_related_models(self, original_models_by_id, models_to_... method _apply_form_transaction (line 348) | def _apply_form_transaction(self, transaction): method get_transactions_for_rebuild (line 357) | def get_transactions_for_rebuild(self, updated_xforms=None): method _fetch_case_transaction_forms (line 372) | def _fetch_case_transaction_forms(self, transactions, updated_xforms=N... function _transaction_sort_key_function (line 423) | def _transaction_sort_key_function(case): FILE: corehq/form_processor/casedb_base.py function _get_id_for_case (line 9) | def _get_id_for_case(case): class AbstractCaseDbCache (line 15) | class AbstractCaseDbCache(metaclass=ABCMeta): method case_model_classes (line 30) | def case_model_classes(self): method case_update_strategy (line 37) | def case_update_strategy(self): method __init__ (line 40) | def __init__(self, domain=None, deleted_ok=False, method _populate_from_initial (line 60) | def _populate_from_initial(self, initial_cases): method __enter__ (line 67) | def __enter__(self): method __exit__ (line 74) | def __exit__(self, exc_type, exc_val, exc_tb): method _validate_case (line 84) | def _validate_case(self, case): method get (line 89) | def get(self, case_id): method set (line 103) | def set(self, case_id, case): method in_cache (line 110) | def in_cache(self, case_id): method populate (line 113) | def populate(self, case_ids): method _iter_cases (line 124) | def _iter_cases(self, case_ids): method mark_changed (line 127) | def mark_changed(self, case): method get_changed (line 131) | def get_changed(self): method clear_changed (line 134) | def clear_changed(self): method get_cached_forms (line 137) | def get_cached_forms(self): method get_cases_for_saving (line 145) | def get_cases_for_saving(self, now): method get_case_from_case_update (line 148) | def get_case_from_case_update(self, case_update, xform): method post_process_case (line 181) | def post_process_case(self, case, xform): method get_reverse_indexed_cases (line 185) | def get_reverse_indexed_cases(self, case_ids, case_types=None, is_clos... method apply_action_intents (line 188) | def apply_action_intents(self, case, primary_intent, deprecation_inten... method filter_closed_extensions (line 196) | def filter_closed_extensions(self, extensions_to_close): FILE: corehq/form_processor/change_publishers.py function publish_form_saved (line 7) | def publish_form_saved(form): function change_meta_from_sql_form (line 11) | def change_meta_from_sql_form(form): function publish_form_deleted (line 23) | def publish_form_deleted(domain, form_id): function publish_case_saved (line 34) | def publish_case_saved(case, associated_form_id=None, send_post_save_sig... function change_meta_from_sql_case (line 43) | def change_meta_from_sql_case(case, associated_form_id=None): function publish_case_deleted (line 56) | def publish_case_deleted(domain, case_id): function publish_ledger_v2_saved (line 67) | def publish_ledger_v2_saved(ledger_value): function publish_ledger_v2_deleted (line 73) | def publish_ledger_v2_deleted(domain, case_id, section_id, entry_id): function change_meta_from_ledger_v2 (line 81) | def change_meta_from_ledger_v2(ledger_ref, domain, deleted=False): FILE: corehq/form_processor/document_stores.py class UnexpectedBackend (line 22) | class UnexpectedBackend(Exception): class FormDocumentStore (line 26) | class FormDocumentStore(DocumentStore): method __init__ (line 28) | def __init__(self, domain, xmlns=None): method get_document (line 32) | def get_document(self, doc_id): method _to_json (line 40) | def _to_json(form): method iter_document_ids (line 46) | def iter_document_ids(self): method iter_documents (line 49) | def iter_documents(self, ids): class CaseDocumentStore (line 58) | class CaseDocumentStore(DocumentStore): method __init__ (line 60) | def __init__(self, domain, case_type=None): method get_document (line 64) | def get_document(self, doc_id, *, external_id=None): method iter_document_ids (line 80) | def iter_document_ids(self): method iter_documents (line 84) | def iter_documents(self, ids): class LedgerV2DocumentStore (line 90) | class LedgerV2DocumentStore(DocumentStore): method __init__ (line 92) | def __init__(self, domain): method get_document (line 96) | def get_document(self, doc_id): method iter_document_ids (line 104) | def iter_document_ids(self): method iter_documents (line 108) | def iter_documents(self, ids): class DocStoreLoadTracker (line 121) | class DocStoreLoadTracker(object): method __init__ (line 123) | def __init__(self, store, track_load): method get_document (line 127) | def get_document(self, doc_id, *args, **kwargs): method iter_documents (line 131) | def iter_documents(self, ids): method __getattr__ (line 136) | def __getattr__(self, name): method __repr__ (line 139) | def __repr__(self): FILE: corehq/form_processor/exceptions.py class StockProcessingError (line 5) | class StockProcessingError(Exception): class CaseNotFound (line 9) | class CaseNotFound(ResourceNotFound, ObjectDoesNotExist): class XFormNotFound (line 13) | class XFormNotFound(ResourceNotFound, ObjectDoesNotExist): class XFormQuestionValueNotFound (line 17) | class XFormQuestionValueNotFound(Exception): class LedgerValueNotFound (line 21) | class LedgerValueNotFound(Exception): class AttachmentNotFound (line 25) | class AttachmentNotFound(ResourceNotFound, ObjectDoesNotExist): method __init__ (line 27) | def __init__(self, form_id, attachment_name): method __str__ (line 31) | def __str__(self): class CaseSaveError (line 35) | class CaseSaveError(Exception): class XFormSaveError (line 39) | class XFormSaveError(Exception): class LedgerSaveError (line 43) | class LedgerSaveError(Exception): class InvalidAttachment (line 47) | class InvalidAttachment(Exception): class UnknownActionType (line 51) | class UnknownActionType(Exception): class PostSaveError (line 55) | class PostSaveError(Exception): class KafkaPublishingError (line 59) | class KafkaPublishingError(Exception): class XFormLockError (line 63) | class XFormLockError(Exception): class MissingFormXml (line 70) | class MissingFormXml(Exception): FILE: corehq/form_processor/interfaces/dbaccessors.py class AbstractLedgerAccessor (line 6) | class AbstractLedgerAccessor(metaclass=ABCMeta): method get_transactions_for_consumption (line 10) | def get_transactions_for_consumption(domain, case_id, product_id, sect... method get_ledger_value (line 15) | def get_ledger_value(case_id, section_id, entry_id): method get_ledger_transactions_for_case (line 20) | def get_ledger_transactions_for_case(case_id, section_id=None, entry_i... method get_latest_transaction (line 28) | def get_latest_transaction(case_id, section_id, entry_id): method get_current_ledger_state (line 33) | def get_current_ledger_state(case_ids, ensure_form_id=False): method get_ledger_values_for_cases (line 52) | def get_ledger_values_for_cases(case_ids, section_ids=None, entry_ids=... class LedgerAccessors (line 56) | class LedgerAccessors(object): method __init__ (line 61) | def __init__(self, domain=None): method db_accessor (line 66) | def db_accessor(self): method get_transactions_for_consumption (line 70) | def get_transactions_for_consumption(self, case_id, product_id, sectio... method get_ledger_value (line 75) | def get_ledger_value(self, case_id, section_id, entry_id): method get_ledger_transactions_for_case (line 78) | def get_ledger_transactions_for_case(self, case_id, section_id=None, e... method get_latest_transaction (line 81) | def get_latest_transaction(self, case_id, section_id, entry_id): method get_ledger_values_for_case (line 84) | def get_ledger_values_for_case(self, case_id): method get_current_ledger_state (line 87) | def get_current_ledger_state(self, case_ids): method get_case_ledger_state (line 92) | def get_case_ledger_state(self, case_id, ensure_form_id=False): method get_ledger_values_for_cases (line 95) | def get_ledger_values_for_cases(self, FILE: corehq/form_processor/interfaces/ledger_processor.py class StockModelUpdateResult (line 5) | class StockModelUpdateResult(namedtuple('StockModelUpdate', ['to_save', ... method __new__ (line 11) | def __new__(cls, to_save=None, to_delete=None): class LedgerDBInterface (line 20) | class LedgerDBInterface(metaclass=ABCMeta): method __init__ (line 28) | def __init__(self): method get_ledger (line 32) | def get_ledger(self, unique_ledger_reference): method set_ledger (line 38) | def set_ledger(self, ledger): method get_current_ledger_value (line 43) | def get_current_ledger_value(self, unique_ledger_reference): method get_ledgers_for_case (line 48) | def get_ledgers_for_case(self, case_id): method _get_ledger (line 52) | def _get_ledger(self, unique_ledger_reference): class LedgerProcessorInterface (line 56) | class LedgerProcessorInterface(metaclass=ABCMeta): method __init__ (line 57) | def __init__(self, domain): method get_models_to_update (line 61) | def get_models_to_update(self, form_id, stock_report_helpers, deprecat... method rebuild_ledger_state (line 68) | def rebuild_ledger_state(self, case_id, section_id, entry_id): method process_form_archived (line 72) | def process_form_archived(self, form): method process_form_unarchived (line 76) | def process_form_unarchived(self, form): FILE: corehq/form_processor/interfaces/processor.py class CaseUpdateMetadata (line 20) | class CaseUpdateMetadata(namedtuple('CaseUpdateMetadata', method merge (line 22) | def merge(self, other): method index_change (line 31) | def index_change(self): class FormProcessorInterface (line 39) | class FormProcessorInterface(object): method __init__ (line 45) | def __init__(self, domain=None): method xform_model (line 50) | def xform_model(self): method processor (line 55) | def processor(self): method casedb_cache (line 61) | def casedb_cache(self): method ledger_processor (line 67) | def ledger_processor(self): method ledger_db (line 73) | def ledger_db(self): method acquire_lock_for_xform (line 77) | def acquire_lock_for_xform(self, xform_id): method get_case_forms (line 87) | def get_case_forms(self, case_id): method form_has_case_transactions (line 90) | def form_has_case_transactions(self, form_id): method store_attachments (line 93) | def store_attachments(self, xform, attachments): method copy_attachments (line 99) | def copy_attachments(self, from_form, to_form): method copy_form_operations (line 103) | def copy_form_operations(self, from_form, to_form): method is_duplicate (line 108) | def is_duplicate(self, xform_id, domain=None): method new_xform (line 115) | def new_xform(self, form_json): method xformerror_from_xform_instance (line 118) | def xformerror_from_xform_instance(self, instance, error_message, with... method update_responses (line 121) | def update_responses(self, xform, value_responses_map, user_id): method save_processed_models (line 143) | def save_processed_models(self, forms, cases=None, stock_result=None): method hard_delete_case_and_forms (line 171) | def hard_delete_case_and_forms(self, case, xforms): method _hard_delete_case_and_forms (line 178) | def _hard_delete_case_and_forms(case, xforms): method apply_deprecation (line 185) | def apply_deprecation(self, existing_xform, new_xform): method deduplicate_xform (line 188) | def deduplicate_xform(self, xform): method assign_new_id (line 191) | def assign_new_id(self, xform): method hard_rebuild_case (line 194) | def hard_rebuild_case(self, case_id, detail, lock=True): method get_cases_from_forms (line 197) | def get_cases_from_forms(self, case_db, xforms): method submission_error_form_instance (line 204) | def submission_error_form_instance(self, instance, message): method get_case_with_lock (line 207) | def get_case_with_lock(self, case_id, lock=False, wrap=False): function _list_to_processed_forms_tuple (line 221) | def _list_to_processed_forms_tuple(forms): class XFormQuestionValueIterator (line 233) | class XFormQuestionValueIterator(object): method __init__ (line 255) | def __init__(self, path): method __iter__ (line 261) | def __iter__(self): method __next__ (line 264) | def __next__(self): method _next (line 269) | def _next(self): method last (line 277) | def last(self): FILE: corehq/form_processor/interfaces/supply.py class SupplyInterface (line 4) | class SupplyInterface(object): method __init__ (line 6) | def __init__(self, domain=None): method create_from_location (line 10) | def create_from_location(cls, domain, location): method supply_point (line 16) | def supply_point(self): method get_or_create_by_location (line 20) | def get_or_create_by_location(self, location): method get_by_location (line 23) | def get_by_location(self, location): method get_supply_point_ids_by_location (line 26) | def get_supply_point_ids_by_location(self): method get_closed_and_open_by_location_id_and_domain (line 29) | def get_closed_and_open_by_location_id_and_domain(self, domain, locati... method get_supply_point (line 36) | def get_supply_point(self, supply_point_id): method get_supply_points (line 39) | def get_supply_points(self, supply_point_ids): FILE: corehq/form_processor/management/commands/archive_all_forms_for_user_in_domain.py class Command (line 13) | class Command(BaseCommand): method __init__ (line 19) | def __init__(self, *args, **kwargs): method add_arguments (line 26) | def add_arguments(self, parser): method _get_forms_to_archive (line 30) | def _get_forms_to_archive(self): method _fetch_case_ids_to_rebuild (line 36) | def _fetch_case_ids_to_rebuild(self): method _archive_forms (line 44) | def _archive_forms(self): method _remove_ledger_transactions (line 50) | def _remove_ledger_transactions(self): method _rebuild_cases (line 64) | def _rebuild_cases(self): method handle (line 77) | def handle(self, user_id, domain, **options): FILE: corehq/form_processor/management/commands/check_forms_have_xml.py class Command (line 9) | class Command(BaseCommand): method add_arguments (line 12) | def add_arguments(self, parser): method handle (line 16) | def handle(self, domains, file_name, **options): method write_row (line 34) | def write_row(writer, domain, archived, received_on, form_id): FILE: corehq/form_processor/management/commands/create_mock_data.py class Command (line 6) | class Command(BaseCommand): method add_arguments (line 9) | def add_arguments(self, parser): method handle (line 13) | def handle(self, domain, count, **options): FILE: corehq/form_processor/management/commands/delete_form_attachments.py class Command (line 7) | class Command(BaseCommand): method add_arguments (line 10) | def add_arguments(self, parser): method handle (line 17) | def handle(self, domain, xmlns, app_id, dry_run, xform_ids, **options): FILE: corehq/form_processor/management/commands/get_case_ids_from_forms.py class Command (line 16) | class Command(BaseCommand): method add_arguments (line 19) | def add_arguments(self, parser): method handle (line 22) | def handle(self, file_path, **options): function _get_case_ids (line 36) | def _get_case_ids(form_ids): FILE: corehq/form_processor/management/commands/list_data_by_shard.py class Command (line 7) | class Command(BaseCommand): method add_arguments (line 10) | def add_arguments(self, parser): method handle (line 13) | def handle(self, domain, **options): function _print (line 38) | def _print(counter, name): FILE: corehq/form_processor/management/commands/make_sharded_sql_function.py class Command (line 13) | class Command(LabelCommand): method add_arguments (line 16) | def add_arguments(self, parser): method handle_label (line 19) | def handle_label(self, sql_function_name, **options): method _create_accessor_function (line 25) | def _create_accessor_function(self, sql_function_name, accessor_dir): FILE: corehq/form_processor/management/commands/populate_form_date_modified.py class Command (line 11) | class Command(BaseCommand): method add_arguments (line 14) | def add_arguments(self, parser): method handle (line 17) | def handle(self, db_name, **options): function _update_forms_in_db (line 38) | def _update_forms_in_db(db_name): function _update_forms (line 53) | def _update_forms(db_name, form_ids): function confirm (line 76) | def confirm(msg): FILE: corehq/form_processor/management/commands/run_sql.py class Command (line 23) | class Command(BaseCommand): method add_arguments (line 26) | def add_arguments(self, parser): method handle (line 39) | def handle(self, name, dbname, chunk_size, yes, print_rows, **options): function confirm (line 68) | def confirm(msg): function timer (line 73) | def timer(dbname): function fetch_dicts (line 82) | def fetch_dicts(cursor): function run_once (line 95) | def run_once(sql, dbname, print_rows): FILE: corehq/form_processor/management/commands/run_submission_reprocessing_queue.py function _record_datadog_metrics (line 19) | def _record_datadog_metrics(): class SubmissionReprocessingEnqueuingOperation (line 29) | class SubmissionReprocessingEnqueuingOperation(BaseCommand): method handle (line 32) | def handle(self, **options): method create_tasks (line 43) | def create_tasks(self): method get_items_to_be_processed (line 49) | def get_items_to_be_processed(self): function get_unfinished_stub_ids_to_process (line 59) | def get_unfinished_stub_ids_to_process(): class Command (line 81) | class Command(SubmissionReprocessingEnqueuingOperation): FILE: corehq/form_processor/migrations/0001_initial.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0002_xformattachmentsql.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0003_auto_20151104_2226.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0004_create_commcarecasesql.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0005_make_case_uuid_unique_indexed.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0006_commcarecaseindexsql.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0007_index_case_uuid_on_commcarecaseindex.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0008_add_index_for_caseforms_case_uuid.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0009_add_xform_operation_model_and_state.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0010_add_auth_and_openrosa_fields.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0011_add_fields_for_deprecation.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0012_xforminstancesql_problem.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0013_caseattachmentsql.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0014_caseattachmentsql_index_on_foreign_key.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0015_change_related_names_for_form_attachment.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0016_index_case_attachment_uuid.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0017_problem_to_text_field.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0018_xforminstancesql_user_id.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0019_allow_closed_by_null.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0020_rename_index_relationship.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0021_change_case_forms_related_name.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0022_set_default_value_for_case_json.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0023_make_case_name_top_level.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0024_rename_case_type.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0025_add_dict_defaults_for_xform.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0025_caseforms_server_date.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0026_caseforms_to_casetransaction.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0026_xforminstancesql_initial_processing_complete.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0027_allow_null_form_uuid_in_case_transaction.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0028_merge.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0029_drop_not_null_from_opened_on_by.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0030_casetransaction_revoked.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0031_add_details_field_to_case_transaction.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0032_change_transaction_related_name.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0033_commcarecasesql_location_uuid.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0034_location_id_index.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0035_remove_varchar_pattern_ops_indexes.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0036_cleanup_models.py function _alter_to_uuid_sql_forawd (line 8) | def _alter_to_uuid_sql_forawd(model, field): function _alter_to_uuid_sql_reverse (line 14) | def _alter_to_uuid_sql_reverse(model, field): function migrate_field_to_uuid (line 20) | def migrate_field_to_uuid(model, field, unique=True, db_index=True, null... class Migration (line 40) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0037_get_form_by_id_fn.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0038_form_functions.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0039_auto_20151130_1748.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0039_case_functions.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0040_save_functions.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0041_noop_specify_table_names.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0042_change_choice_values.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0043_rename_to_match.py function _rename_index (line 6) | def _rename_index(old_name, new_name): class Migration (line 13) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0044_remove_foreign_key_to_case.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0045_casetransaction_sync_log_id.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0046_add_not_null_constraint_to_owner_id.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0047_add_deleted_state.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0048_attachment_content_length_blob_id.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0049_case_attachment_props.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0050_allow_null_content_type.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0051_auto_20160224_0922.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0052_auto_20160224_1011.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0053_add_deletion_fields.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0054_ledgertransaction.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0055_daily_consumption.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0056_last_modified_form_id.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0057_ledger_value_domain_location.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0058_update_indexes.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0059_remove_ledgervalue_location_id.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0060_convert_case_ids_to_foreign_keys.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0061_blob_bucket.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0062_auto_20160905_0938.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0063_auto_20160908_0954.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0064_auto_20170725_0943.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0065_auto_20170725_1339.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0066_auto_20170818_2020.py class Migration (line 16) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0067_auto_20170915_1506.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0068_xforminstancesql_modified_on.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0069_add_metafields.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0070_auto_20180329_1016.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0071_case_attachment_refactor.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0072_case_attachment_drops.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0073_drop_case_uuid_like_index.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0074_casetransaction__client_date.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0075_auto_20181026_0951.py class Migration (line 16) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0076_form_attachment_fk.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0077_null_properties.py class Migration (line 12) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0078_blobmeta_migrated_check.py function get_num_attachments (line 25) | def get_num_attachments(connection): function _assert_blobmetas_migrated (line 33) | def _assert_blobmetas_migrated(apps, schema_editor): class Migration (line 64) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0079_add_xmlns_index.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0080_migrate_delta_1_add_column.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0081_migrate_delta_2_create_trigger.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0082_migrate_delta_3_backfill_notnull.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0083_migrate_delta_4_switch_columns.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0084_migrate_delta_5_alter_field.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0085_migrate_balance_1_add_column.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0086_migrate_balance_2_create_trigger.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0087_migrate_balance_3_backfill_notnull.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0088_migrate_balance_4_switch_columns.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0089_migrate_balance_5_alter_field.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0090_auto_20190523_0833.py class Migration (line 15) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0091_auto_20190603_2023.py class Migration (line 15) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0092_auto_20200924_1753.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0093_rename_models.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0094_add_partial_index_xforms.py class Migration (line 14) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0095_remove_xforminstance_deleted_state.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0096_add_partial_index_cases.py class Migration (line 14) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0097_case_domain_type_id_index.py class Migration (line 22) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0098_rename_caseattachment_case_name_form_proces_case_id_2fd259_idx_and_more.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/0099_xforminstance_form_proces_domain_3bcfdd_idx_and_more.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/form_processor/migrations/sql_templates/migrate_balance_2_create_trigger.sql function copy_balance (line 1) | CREATE FUNCTION copy_balance() RETURNS trigger AS $copy_balance$ FILE: corehq/form_processor/migrations/sql_templates/migrate_delta_2_create_trigger.sql function copy_delta (line 2) | CREATE FUNCTION copy_delta() RETURNS trigger AS $copy_delta$ FILE: corehq/form_processor/models/attachment.py class Attachment (line 20) | class Attachment(IsImageMixin): method __attrs_post_init__ (line 32) | def __attrs_post_init__(self): method has_size (line 50) | def has_size(self): method content_length (line 58) | def content_length(self): method content (line 77) | def content(self): method open (line 95) | def open(self): method content_md5 (line 110) | def content_md5(self): method type_code (line 115) | def type_code(self): method write (line 118) | def write(self, blob_db, xform): class AttachmentContent (line 147) | class AttachmentContent: method content_body (line 153) | def content_body(self): class AttachmentMixin (line 161) | class AttachmentMixin(SaveStateMixin): method attachments_list (line 170) | def attachments_list(self): method attachments_list (line 178) | def attachments_list(self, value): method copy_attachments (line 182) | def copy_attachments(self, xform): method has_unsaved_attachments (line 191) | def has_unsaved_attachments(self): method attachment_writer (line 195) | def attachment_writer(self): method get_attachments (line 243) | def get_attachments(self): method get_attachment (line 252) | def get_attachment(self, attachment_name): method get_attachment_meta (line 262) | def get_attachment_meta(self, attachment_name): method _get_attachment_from_db (line 277) | def _get_attachment_from_db(self, attachment_name): method _get_attachments_from_db (line 280) | def _get_attachments_from_db(self): FILE: corehq/form_processor/models/cases.py class CommCareCaseManager (line 56) | class CommCareCaseManager(RequireDBManager): method get_case (line 58) | def get_case(self, case_id, domain=None): method get_cases (line 69) | def get_cases(self, case_ids, ordered=False, prefetched_indices=None): method iter_cases (line 95) | def iter_cases(self, case_ids): method get_case_by_external_id (line 102) | def get_case_by_external_id(self, domain, external_id, case_type=None,... method get_case_ids_that_exist (line 127) | def get_case_ids_that_exist(self, domain, case_ids): method get_case_ids_in_domain (line 136) | def get_case_ids_in_domain(self, domain, type=None): method get_open_case_ids_in_domain_by_type (line 139) | def get_open_case_ids_in_domain_by_type(self, domain, case_type, owner... method get_deleted_case_ids_in_domain (line 143) | def get_deleted_case_ids_in_domain(self, domain): method get_deleted_case_ids_by_owner (line 146) | def get_deleted_case_ids_by_owner(self, domain, owner_id): method get_case_ids_in_domain_by_owners (line 149) | def get_case_ids_in_domain_by_owners(self, domain, owner_ids, closed=N... method _get_case_ids_in_domain (line 163) | def _get_case_ids_in_domain(self, domain, case_type=None, owner_ids=No... method get_closed_and_deleted_ids (line 172) | def get_closed_and_deleted_ids(self, domain, case_ids): method get_modified_case_ids (line 187) | def get_modified_case_ids(self, domain, case_ids, sync_log): method get_last_modified_dates (line 201) | def get_last_modified_dates(self, domain, case_ids): method get_case_xform_ids (line 215) | def get_case_xform_ids(self, case_id): method get_reverse_indexed_cases (line 223) | def get_reverse_indexed_cases(self, domain, case_ids, case_types=None,... method get_case_by_location (line 242) | def get_case_by_location(self, domain, location_id): method soft_delete_cases (line 251) | def soft_delete_cases(self, domain, case_ids, deletion_date=None, dele... method soft_undelete_cases (line 266) | def soft_undelete_cases(self, domain, case_ids): method hard_delete_cases (line 280) | def hard_delete_cases(self, domain, case_ids, *, publish_changes=True): method publish_deleted_cases (line 298) | def publish_deleted_cases(domain, case_ids): class CommCareCase (line 304) | class CommCareCase(PartitionedModel, models.Model, RedisLockableMixIn, method __init__ (line 339) | def __init__(self, *args, **kwargs): method natural_key (line 344) | def natural_key(self): method doc_type (line 357) | def doc_type(self): method get_id (line 364) | def get_id(self): method set_case_id (line 367) | def set_case_id(self, case_id): method xform_ids (line 372) | def xform_ids(self): method location (line 377) | def location(self): method sql_location (line 388) | def sql_location(self): method user_id (line 397) | def user_id(self): method user_id (line 401) | def user_id(self, value): method is_deleted (line 405) | def is_deleted(self): method dynamic_case_properties (line 408) | def dynamic_case_properties(self): method get_properties_in_api_format (line 411) | def get_properties_in_api_format(self): method to_api_json (line 421) | def to_api_json(self, lite=False): method to_json (line 426) | def to_json(self): method dumps (line 445) | def dumps(self, pretty=False): method pprint (line 449) | def pprint(self): method reverse_indices (line 454) | def reverse_indices(self): method get_subcases (line 458) | def get_subcases(self, index_identifier=None): method get_reverse_index_map (line 465) | def get_reverse_index_map(self): method _saved_indices (line 469) | def _saved_indices(self): method _set_indices (line 475) | def _set_indices(self, value): method indices (line 489) | def indices(self): method live_indices (line 503) | def live_indices(self): method has_indices (line 507) | def has_indices(self): method has_index (line 510) | def has_index(self, index_id): method get_index (line 513) | def get_index(self, index_id): method _get_attachment_from_db (line 521) | def _get_attachment_from_db(self, name): method _get_attachments_from_db (line 524) | def _get_attachments_from_db(self): method transactions (line 529) | def transactions(self): method check_transaction_order (line 534) | def check_transaction_order(self): method actions (line 538) | def actions(self): method _get_unsaved_transaction_for_form (line 542) | def _get_unsaved_transaction_for_form(self, form_id): method get_transaction_by_form_id (line 547) | def get_transaction_by_form_id(self, form_id): method non_revoked_transactions (line 555) | def non_revoked_transactions(self): method case_attachments (line 560) | def case_attachments(self): method serialized_attachments (line 565) | def serialized_attachments(self): method get_closing_transactions (line 573) | def get_closing_transactions(self): method get_opening_transactions (line 577) | def get_opening_transactions(self): method get_form_transactions (line 581) | def get_form_transactions(self): method _transactions_by_type (line 584) | def _transactions_by_type(self, transaction_type): method modified_since_sync (line 595) | def modified_since_sync(self, sync_log): method get_actions_for_form (line 602) | def get_actions_for_form(self, xform): method get_case_property (line 615) | def get_case_property(self, property, dynamic_only=False): method on_tracked_models_cleared (line 629) | def on_tracked_models_cleared(self, model_class=None): method resolve_case_property (line 632) | def resolve_case_property(self, property_name): method _resolve_case_property (line 649) | def _resolve_case_property(self, property_name, result): method get_index_map (line 673) | def get_index_map(self, reversed=False): method get_attachment_map (line 678) | def get_attachment_map(self): method to_xml (line 687) | def to_xml(self, version, include_case_on_closed=False): method get_attachment_server_url (line 700) | def get_attachment_server_url(self, name): method get_obj_id (line 719) | def get_obj_id(cls, obj): method get_obj_by_id (line 723) | def get_obj_by_id(cls, case_id): method get_parents (line 727) | def get_parents(self, identifier=None, relationship=None): method get_indices (line 730) | def get_indices(self, identifier=None, relationship=None): method parent (line 749) | def parent(self): method host (line 763) | def host(self): method save (line 767) | def save(self, *args, with_tracked_models=False, **kw): method __str__ (line 813) | def __str__(self): class Meta (line 823) | class Meta(object): function get_index_map (line 839) | def get_index_map(indices): class CaseAttachmentManager (line 849) | class CaseAttachmentManager(RequireDBManager): method get_attachments (line 851) | def get_attachments(self, case_id): method get_attachment_by_name (line 854) | def get_attachment_by_name(self, case_id, name): class CaseAttachment (line 864) | class CaseAttachment(PartitionedModel, models.Model, SaveStateMixin, IsI... method key (line 897) | def key(self): method key (line 911) | def key(self, value): method natural_key (line 915) | def natural_key(self): method from_form_attachment (line 920) | def from_form_attachment(self, attachment, attachment_src): method new (line 939) | def new(cls, name): method get_content (line 943) | def get_content(cls, case_id, name): method __str__ (line 947) | def __str__(self): method open (line 959) | def open(self): method content_md5 (line 966) | def content_md5(self): class Meta (line 971) | class Meta(object): class CommCareCaseIndexManager (line 979) | class CommCareCaseIndexManager(RequireDBManager): method get_indices (line 981) | def get_indices(self, domain, case_id): method get_related_indices (line 985) | def get_related_indices(self, domain, case_ids, exclude_indices): method get_reverse_indices (line 1001) | def get_reverse_indices(self, domain, case_id): method get_all_reverse_indices_info (line 1013) | def get_all_reverse_indices_info(self, domain, case_ids): method get_extension_case_ids (line 1032) | def get_extension_case_ids( method get_extension_chain (line 1061) | def get_extension_chain(self, domain, case_ids, include_closed=True, e... class CommCareCaseIndex (line 1080) | class CommCareCaseIndex(PartitionedModel, models.Model, SaveStateMixin): method __init__ (line 1105) | def __init__(self, *args, **kwargs): method natural_key (line 1116) | def natural_key(self): method is_deleted (line 1122) | def is_deleted(self): method referenced_case (line 1127) | def referenced_case(self): method relationship (line 1141) | def relationship(self): method relationship (line 1145) | def relationship(self, relationship): method relationship_id_to_name (line 1149) | def relationship_id_to_name(relationship_id): method to_json (line 1152) | def to_json(self): method __eq__ (line 1156) | def __eq__(self, other): method __hash__ (line 1165) | def __hash__(self): method __str__ (line 1168) | def __str__(self): class Meta (line 1179) | class Meta(object): class CaseTransactionManager (line 1189) | class CaseTransactionManager(RequireDBManager): method get_transactions (line 1191) | def get_transactions(self, case_id): method get_transaction_by_form_id (line 1198) | def get_transaction_by_form_id(self, case_id, form_id): method get_most_recent_form_transaction (line 1206) | def get_most_recent_form_transaction(self, case_id): method get_last_n_recent_form_transaction (line 1216) | def get_last_n_recent_form_transaction(self, case_id, limit): method get_transactions_by_type (line 1225) | def get_transactions_by_type(self, case_id, transaction_type): method get_transactions_for_case_rebuild (line 1231) | def get_transactions_for_case_rebuild(self, case_id): method case_has_transactions_since_sync (line 1234) | def case_has_transactions_since_sync(self, case_id, sync_log_id, sync_... method check_order_for_case (line 1243) | def check_order_for_case(self, case_id): method exists_for_form (line 1257) | def exists_for_form(self, form_id): class CaseTransaction (line 1264) | class CaseTransaction(PartitionedModel, SaveStateMixin, models.Model): method client_date (line 1319) | def client_date(self): method client_date (line 1325) | def client_date(self, value): method natural_key (line 1328) | def natural_key(self): method _should_process (line 1334) | def _should_process(transaction_type): method is_relevant (line 1341) | def is_relevant(self): method user_id (line 1349) | def user_id(self): method form (line 1355) | def form(self): method is_form_transaction (line 1364) | def is_form_transaction(self): method is_ledger_transaction (line 1368) | def is_ledger_transaction(self): method is_case_create (line 1372) | def is_case_create(self): method is_case_close (line 1376) | def is_case_close(self): method is_case_index (line 1380) | def is_case_index(self): method is_case_attachment (line 1384) | def is_case_attachment(self): method is_case_rebuild (line 1388) | def is_case_rebuild(self): method xmlns (line 1392) | def xmlns(self): method device_id (line 1396) | def device_id(self): method case_rebuild_types (line 1401) | def case_rebuild_types(cls): method readable_type (line 1413) | def readable_type(self): method __eq__ (line 1420) | def __eq__(self, other): method __hash__ (line 1430) | def __hash__(self): method form_transaction (line 1434) | def form_transaction(cls, case, xform, client_date, action_types=None): method _valid_action_type (line 1453) | def _valid_action_type(cls, action_type): method ledger_transaction (line 1463) | def ledger_transaction(cls, case, xform): method _from_form (line 1473) | def _from_form(cls, case, xform, transaction_type): method type_from_action_type_slug (line 1493) | def type_from_action_type_slug(cls, action_type_slug): method rebuild_transaction (line 1503) | def rebuild_transaction(cls, case, detail): method __str__ (line 1511) | def __str__(self): method __repr__ (line 1519) | def __repr__(self): class Meta (line 1530) | class Meta(object): class CaseTransactionDetail (line 1541) | class CaseTransactionDetail(JsonObject): method type (line 1545) | def type(self): method __eq__ (line 1548) | def __eq__(self, other): class FormSubmissionDetail (line 1554) | class FormSubmissionDetail(CaseTransactionDetail): class RebuildWithReason (line 1560) | class RebuildWithReason(CaseTransactionDetail): class UserRequestedRebuild (line 1565) | class UserRequestedRebuild(CaseTransactionDetail): class UserArchivedRebuild (line 1570) | class UserArchivedRebuild(CaseTransactionDetail): class FormArchiveRebuild (line 1575) | class FormArchiveRebuild(FormSubmissionDetail): class FormEditRebuild (line 1581) | class FormEditRebuild(CaseTransactionDetail): class FormReprocessRebuild (line 1586) | class FormReprocessRebuild(CaseTransactionDetail): FILE: corehq/form_processor/models/forms.py class XFormInstanceManager (line 53) | class XFormInstanceManager(RequireDBManager): method get_form (line 55) | def get_form(self, form_id, domain=None): method form_exists (line 70) | def form_exists(self, form_id, domain=None): method get_forms (line 76) | def get_forms(self, form_ids, ordered=False): method iter_forms (line 90) | def iter_forms(self, form_ids): method get_attachments (line 98) | def get_attachments(form_id): method get_with_attachments (line 101) | def get_with_attachments(self, form_id, domain=None): method get_attachment_by_name (line 111) | def get_attachment_by_name(self, form_id, attachment_name): method get_attachment_content (line 122) | def get_attachment_content(self, form_id, attachment_name): method get_forms_with_attachments_meta (line 126) | def get_forms_with_attachments_meta(self, form_ids, ordered=False): method modify_attachment_xml_and_metadata (line 144) | def modify_attachment_xml_and_metadata(self, form_data, form_attachmen... method get_forms_by_type (line 155) | def get_forms_by_type(self, domain, type_, limit, recent_first=False): method get_form_ids_in_domain (line 167) | def get_form_ids_in_domain(self, domain, doc_type="XFormInstance"): method get_form_ids_in_domain_by_state (line 175) | def get_form_ids_in_domain_by_state(self, domain, state): method get_deleted_form_ids_in_domain (line 184) | def get_deleted_form_ids_in_domain(self, domain): method hard_delete_forms_before_cutoff (line 194) | def hard_delete_forms_before_cutoff(self, cutoff, dry_run=True): method iter_form_ids_by_xmlns (line 213) | def iter_form_ids_by_xmlns(self, domain, xmlns=None): method get_form_ids_for_user (line 221) | def get_form_ids_for_user(self, domain, user_id): method get_deleted_form_ids_for_user (line 224) | def get_deleted_form_ids_for_user(self, domain, user_id): method _get_form_ids_for_user (line 227) | def _get_form_ids_for_user(self, domain, user_id, is_deleted): method set_archived_state (line 236) | def set_archived_state(self, form, archive, user_id): method do_archive (line 247) | def do_archive(form, archive, user_id, trigger_signals): method _do_archive (line 259) | def _do_archive(form, archive, user_id, trigger_signals): method publish_archive_action_to_kafka (line 275) | def publish_archive_action_to_kafka(cls, form, user_id, archive): method _unfinished_archive (line 281) | def _unfinished_archive(form, archive, user_id, trigger_signals=True): method save_new_form (line 291) | def save_new_form(form): method update_form_problem_and_state (line 316) | def update_form_problem_and_state(self, form): method update_form (line 323) | def update_form(self, form, publish_changes=True): method soft_delete_forms (line 356) | def soft_delete_forms(self, domain, form_ids, deletion_date=None, dele... method soft_undelete_forms (line 371) | def soft_undelete_forms(self, domain, form_ids): method hard_delete_forms (line 390) | def hard_delete_forms( method publish_deleted_forms (line 431) | def publish_deleted_forms(domain, form_ids): class XFormOperationManager (line 437) | class XFormOperationManager(RequireDBManager): method get_form_operations (line 439) | def get_form_operations(self, form_id): class XFormInstance (line 443) | class XFormInstance(PartitionedModel, models.Model, RedisLockableMixIn, method __init__ (line 522) | def __init__(self, *args, **kwargs): method form_id_updated (line 527) | def form_id_updated(self): method original_form_id (line 531) | def original_form_id(self): method original_operations (line 537) | def original_operations(self): method natural_key (line 544) | def natural_key(self): method get_obj_id (line 557) | def get_obj_id(cls, obj): method get_obj_by_id (line 561) | def get_obj_by_id(cls, form_id): method get_id (line 565) | def get_id(self): method is_normal (line 569) | def is_normal(self): method is_archived (line 573) | def is_archived(self): method is_deprecated (line 577) | def is_deprecated(self): method is_duplicate (line 581) | def is_duplicate(self): method is_error (line 585) | def is_error(self): method is_submission_error_log (line 589) | def is_submission_error_log(self): method is_deleted (line 593) | def is_deleted(self): method doc_type (line 597) | def doc_type(self): method attachments (line 605) | def attachments(self): method serialized_attachments (line 611) | def serialized_attachments(self): method form_data (line 620) | def form_data(self): method history (line 637) | def history(self): method metadata (line 645) | def metadata(self): method type (line 651) | def type(self): method name (line 655) | def name(self): method device_id (line 659) | def device_id(self): method get_sync_token (line 666) | def get_sync_token(self): method soft_delete (line 676) | def soft_delete(self): method to_json (line 681) | def to_json(self, include_attachments=False): method _get_attachment_from_db (line 692) | def _get_attachment_from_db(self, attachment_name): method _get_attachments_from_db (line 695) | def _get_attachments_from_db(self): method get_xml_element (line 698) | def get_xml_element(self): method get_data (line 704) | def get_data(self, path): method get_xml (line 713) | def get_xml(self): method xml_md5 (line 719) | def xml_md5(self): method archive (line 725) | def archive(self, user_id=None, trigger_signals=True): method unarchive (line 729) | def unarchive(self, user_id=None, trigger_signals=True): method __str__ (line 733) | def __str__(self): class Meta (line 742) | class Meta(object): class DeprecatedXFormAttachmentSQL (line 757) | class DeprecatedXFormAttachmentSQL(models.Model): class Meta (line 773) | class Meta(object): class XFormOperation (line 781) | class XFormOperation(PartitionedModel, SaveStateMixin, models.Model): method natural_key (line 797) | def natural_key(self): method user (line 803) | def user(self): class Meta (line 806) | class Meta(object): class XFormPhoneMetadata (line 811) | class XFormPhoneMetadata(jsonobject.JsonObject): method commcare_version (line 843) | def commcare_version(self): FILE: corehq/form_processor/models/ledgers.py class LedgerValue (line 14) | class LedgerValue(PartitionedModel, SaveStateMixin, models.Model, TrackR... method natural_key (line 33) | def natural_key(self): method last_modified_date (line 39) | def last_modified_date(self): method product_id (line 43) | def product_id(self): method stock_on_hand (line 47) | def stock_on_hand(self): method ledger_reference (line 51) | def ledger_reference(self): method ledger_id (line 58) | def ledger_id(self): method location (line 63) | def location(self): method sql_location (line 68) | def sql_location(self): method sql_product (line 73) | def sql_product(self): method location_id (line 81) | def location_id(self): method to_json (line 84) | def to_json(self, include_location_id=True): method __repr__ (line 89) | def __repr__(self): class Meta (line 96) | class Meta(object): class LedgerTransaction (line 102) | class LedgerTransaction(PartitionedModel, SaveStateMixin, models.Model): method natural_key (line 129) | def natural_key(self): method get_consumption_transactions (line 134) | def get_consumption_transactions(self, exclude_inferred_receipts=False): method readable_type (line 166) | def readable_type(self): method ledger_reference (line 172) | def ledger_reference(self): method stock_on_hand (line 179) | def stock_on_hand(self): method __str__ (line 182) | def __str__(self): class Meta (line 197) | class Meta(object): class ConsumptionTransaction (line 208) | class ConsumptionTransaction(namedtuple('ConsumptionTransaction', ['type... method is_stockout (line 211) | def is_stockout(self): method is_checkpoint (line 216) | def is_checkpoint(self): FILE: corehq/form_processor/models/mixin.py class IsImageMixin (line 3) | class IsImageMixin: method is_image (line 6) | def is_image(self): class SaveStateMixin (line 12) | class SaveStateMixin: method is_saved (line 14) | def is_saved(self): class CaseToXMLMixin (line 18) | class CaseToXMLMixin: method to_xml (line 19) | def to_xml(self, version, include_case_on_closed=False): FILE: corehq/form_processor/models/util.py function fetchall_as_namedtuple (line 8) | def fetchall_as_namedtuple(cursor): function _get_result_tuple (line 15) | def _get_result_tuple(names): function sort_with_id_list (line 20) | def sort_with_id_list(object_list, id_list, id_property): function attach_prefetch_models (line 36) | def attach_prefetch_models(objects_by_id, prefetched_models, link_field_... FILE: corehq/form_processor/parsers/form.py function locked_form (line 19) | def locked_form(xform, interface): class FormProcessingResult (line 44) | class FormProcessingResult(object): method __init__ (line 46) | def __init__(self, submitted_form): method get_locked_forms (line 50) | def get_locked_forms(self): function process_xform_xml (line 61) | def process_xform_xml(domain, instance_xml, attachments=None, auth_conte... function _create_new_xform (line 82) | def _create_new_xform(domain, instance_xml, attachments=None, auth_conte... function _get_submission_error (line 124) | def _get_submission_error(domain, instance_xml, error, auth_context): function _handle_id_conflict (line 139) | def _handle_id_conflict(xform, domain): function _handle_duplicate (line 166) | def _handle_duplicate(new_doc): function apply_deprecation (line 253) | def apply_deprecation(existing_xform, new_xform, interface=None): FILE: corehq/form_processor/parsers/ledgers/form.py class LedgerFormat (line 22) | class LedgerFormat(object): function get_case_ids_from_stock_transactions (line 43) | def get_case_ids_from_stock_transactions(xform): function get_ledger_references_from_stock_transactions (line 51) | def get_ledger_references_from_stock_transactions(xform): function get_stock_actions (line 59) | def get_stock_actions(xform): function _empty_actions (line 88) | def _empty_actions(): function get_ledger_case_action_intents (line 92) | def get_ledger_case_action_intents(xform, case_ids): function get_all_stock_report_helpers_from_form (line 110) | def get_all_stock_report_helpers_from_form(xform): function _ledger_json_to_stock_report_helper (line 140) | def _ledger_json_to_stock_report_helper(form, report_type, ledger_json): function _get_ledger_instructions_from_individual_format (line 183) | def _get_ledger_instructions_from_individual_format(ledger_json, common_... function _get_ledger_instructions_from_per_entry_format (line 207) | def _get_ledger_instructions_from_per_entry_format(ledger_json, common_a... function _get_transaction_helpers_from_balance_instruction (line 232) | def _get_transaction_helpers_from_balance_instruction(ledger_instruction): function _get_transaction_helpers_from_transfer_instruction (line 243) | def _get_transaction_helpers_from_transfer_instruction(ledger_instruction): function _make_transaction_helper (line 258) | def _make_transaction_helper(ledger_instruction, action, case_id): function _get_and_validate_date (line 273) | def _get_and_validate_date(ledger_json, form): function _get_quantity_or_none (line 283) | def _get_quantity_or_none(value, section_id, domain): function _coerce_to_list (line 294) | def _coerce_to_list(obj_or_list): FILE: corehq/form_processor/parsers/ledgers/helpers.py class UniqueLedgerReference (line 13) | class UniqueLedgerReference(namedtuple('UniqueLedgerReference', ['case_i... method as_id (line 14) | def as_id(self): method from_id (line 18) | def from_id(cls, id_string): class StockReportHelper (line 22) | class StockReportHelper(jsonobject.JsonObject): method report_type (line 36) | def report_type(self): method make_from_form (line 41) | def make_from_form(cls, form, timestamp, tag, transactions): method validate (line 53) | def validate(self): class StockTransactionHelper (line 61) | class StockTransactionHelper(jsonobject.JsonObject): method ledger_reference (line 78) | def ledger_reference(self): method relative_quantity (line 84) | def relative_quantity(self): method action_config (line 94) | def action_config(self, commtrack_config): method date (line 102) | def date(self): method to_xml (line 106) | def to_xml(self, E=None, **kwargs): method category (line 117) | def category(self): method fragment (line 120) | def fragment(self): method __repr__ (line 133) | def __repr__(self): FILE: corehq/form_processor/reprocess.py class ReprocessingError (line 24) | class ReprocessingError(Exception): function reprocess_unfinished_stub (line 28) | def reprocess_unfinished_stub(stub, save=True): function reprocess_unfinished_stub_with_form (line 48) | def reprocess_unfinished_stub_with_form(stub, form, save=True, lock=True): function _perform_post_save_actions (line 73) | def _perform_post_save_actions(form, save=True): function reprocess_xform_error (line 99) | def reprocess_xform_error(form): function reprocess_xform_error_by_id (line 117) | def reprocess_xform_error_by_id(form_id, domain=None): function reprocess_form (line 124) | def reprocess_form(form, save=True, lock_form=True): function _log_changes (line 189) | def _log_changes(cases, stock_updates, stock_deletes): function _get_case_ids_needing_rebuild (line 198) | def _get_case_ids_needing_rebuild(form, cases): function _get_form (line 211) | def _get_form(form_id): FILE: corehq/form_processor/serializers.py class DeletableModelSerializer (line 13) | class DeletableModelSerializer(serializers.ModelSerializer): method __init__ (line 19) | def __init__(self, instance=None, *args, **kwargs): class XFormOperationSerializer (line 26) | class XFormOperationSerializer(serializers.ModelSerializer): class Meta (line 29) | class Meta(object): class XFormAttachmentSQLSerializer (line 34) | class XFormAttachmentSQLSerializer(serializers.ModelSerializer): class Meta (line 37) | class Meta(object): function _serialize_form_attachments (line 42) | def _serialize_form_attachments(form): function _serialize_form_history (line 46) | def _serialize_form_history(form): class XFormInstanceSerializer (line 54) | class XFormInstanceSerializer(DeletableModelSerializer): class Meta (line 61) | class Meta(object): class XFormStateField (line 66) | class XFormStateField(serializers.ChoiceField): method __init__ (line 67) | def __init__(self, **kwargs): method get_attribute (line 70) | def get_attribute(self, obj): class JsonFieldSerializerMixin (line 79) | class JsonFieldSerializerMixin(object): class XFormInstanceRawDocSerializer (line 85) | class XFormInstanceRawDocSerializer(JsonFieldSerializerMixin, DeletableM... method __init__ (line 91) | def __init__(self, instance=None, *args, **kwargs): class Meta (line 99) | class Meta(object): class CommCareCaseIndexSerializer (line 104) | class CommCareCaseIndexSerializer(serializers.ModelSerializer): class Meta (line 108) | class Meta(object): class CaseTransactionActionSerializer (line 113) | class CaseTransactionActionSerializer(serializers.ModelSerializer): class Meta (line 117) | class Meta(object): class CaseTransactionActionRawDocSerializer (line 122) | class CaseTransactionActionRawDocSerializer(JsonFieldSerializerMixin, Ca... class Meta (line 125) | class Meta(object): class CommCareCaseRawDocSerializer (line 130) | class CommCareCaseRawDocSerializer(JsonFieldSerializerMixin, DeletableMo... class Meta (line 135) | class Meta(object): class CaseAttachmentSerializer (line 140) | class CaseAttachmentSerializer(serializers.ModelSerializer): class Meta (line 141) | class Meta(object): function _serialize_case_indices (line 150) | def _serialize_case_indices(case): function _serialize_case_transactions (line 154) | def _serialize_case_transactions(case): function _serialize_case_xform_ids (line 158) | def _serialize_case_xform_ids(case): function _serialize_case_attachments (line 162) | def _serialize_case_attachments(case): class CommCareCaseSerializer (line 172) | class CommCareCaseSerializer(DeletableModelSerializer): class Meta (line 178) | class Meta(object): class CommCareCaseAPISerializer (line 183) | class CommCareCaseAPISerializer(serializers.ModelSerializer): method __init__ (line 194) | def __init__(self, *args, **kwargs): class Meta (line 200) | class Meta(object): class LedgerValueSerializer (line 218) | class LedgerValueSerializer(serializers.ModelSerializer): method __init__ (line 223) | def __init__(self, *args, **kwargs): class Meta (line 229) | class Meta(object): FILE: corehq/form_processor/submission_post.py class FormProcessingResult (line 60) | class FormProcessingResult(namedtuple('FormProcessingResult', 'response ... method case (line 62) | def case(self): class SubmissionPost (line 67) | class SubmissionPost(object): method __init__ (line 69) | def __init__(self, instance=None, attachments=None, auth_context=None, method _set_submission_properties (line 106) | def _set_submission_properties(self, xform): method _handle_known_error (line 127) | def _handle_known_error(self, error, instance, xforms): method _handle_basic_failure_modes (line 136) | def _handle_basic_failure_modes(self): method _post_process_form (line 145) | def _post_process_form(self, xform): method _get_success_message (line 149) | def _get_success_message(self, instance, cases=None): method _get_form_name (line 180) | def _get_form_name(self, instance, user): method _get_form_submission_text (line 190) | def _get_form_submission_text(self, instance, user): method _success_message_links (line 201) | def _success_message_links(self, user, instance, cases): method run (line 248) | def run(self): method _log_form_details (line 380) | def _log_form_details(self, form): method _log_form_completion (line 396) | def _log_form_completion(self, form, submission_type): method _conditionally_send_device_logs_to_sumologic (line 404) | def _conditionally_send_device_logs_to_sumologic(self, instance): method _invalidate_caches (line 410) | def _invalidate_caches(self, xform): method _invalidate_restore_payload_path_cache (line 416) | def _invalidate_restore_payload_path_cache(self, xform, device_id): method _invalidate_async_restore_task_id_cache (line 426) | def _invalidate_async_restore_task_id_cache(self, xform, device_id): method save_processed_models (line 442) | def save_processed_models(self, case_db, xforms, case_stock_result): method do_post_save_actions (line 468) | def do_post_save_actions(case_db, xforms, case_stock_result, *, timing... method index_case_search (line 498) | def index_case_search(instance, case_models): method process_xforms_for_cases (line 526) | def process_xforms_for_cases(xforms, case_db, timing_context=None): method get_response (line 553) | def get_response(self): method _fire_post_save_signals (line 557) | def _fire_post_save_signals(instance, cases, timing_context): method _get_open_rosa_response (line 572) | def _get_open_rosa_response(self, instance, success_message=None, erro... method get_v2_submit_error_response (line 595) | def get_v2_submit_error_response(doc): method get_v3_error_response (line 601) | def get_v3_error_response(message, nature): method get_exception_response_and_log (line 611) | def get_exception_response_and_log(msg, error_instance, path): method handle_system_action (line 630) | def handle_system_action(self, form): method process_device_log (line 637) | def process_device_log(self, device_log_form): function _transform_instance_to_error (line 655) | def _transform_instance_to_error(interface, exception, instance): function handle_unexpected_error (line 660) | def handle_unexpected_error(interface, instance, exception): function notify_submission_error (line 676) | def notify_submission_error(instance, message, exec_info=None): function _get_form_name_info (line 690) | def _get_form_name_info(domain, build_id): function _get_form_submit_notification_text_info (line 705) | def _get_form_submit_notification_text_info(domain, build_id): FILE: corehq/form_processor/submission_process_tracker.py class SubmissionProcessTracker (line 7) | class SubmissionProcessTracker(object): method __init__ (line 8) | def __init__(self, stub=None): method submission_saved (line 11) | def submission_saved(self): method submission_fully_processed (line 16) | def submission_fully_processed(self): class ArchiveProcessTracker (line 21) | class ArchiveProcessTracker(object): method __init__ (line 22) | def __init__(self, stub=None): method archive_history_updated (line 25) | def archive_history_updated(self): function unfinished_submission (line 32) | def unfinished_submission(instance): function unfinished_archive (line 49) | def unfinished_archive(instance, user_id, archive): function _get_or_create_unfinished_archive_stub (line 57) | def _get_or_create_unfinished_archive_stub(domain, form_id, user_id, arc... FILE: corehq/form_processor/system_action.py function system_action (line 6) | def system_action(name): function submit_system_action (line 30) | def submit_system_action(name, args, args_json, domain): function handle_system_action (line 55) | def handle_system_action(form, auth_context): function do_system_action (line 65) | def do_system_action(name, args): class SystemActionContext (line 81) | class SystemActionContext(object): method to_json (line 84) | def to_json(): method is_valid (line 88) | def is_valid(): class UnauthorizedSystemAction (line 92) | class UnauthorizedSystemAction(Exception): FILE: corehq/form_processor/tasks.py function reprocess_submission (line 22) | def reprocess_submission(submssion_stub_id): function _reprocess_archive_stubs (line 38) | def _reprocess_archive_stubs(): function reprocess_archive_stubs (line 43) | def reprocess_archive_stubs(): FILE: corehq/form_processor/tests/json2xml.py function convert_form_to_xml (line 8) | def convert_form_to_xml(form_data): function convert_json_to_xml (line 30) | def convert_json_to_xml(data, tag): function validate_str (line 54) | def validate_str(value): class RoundtripError (line 60) | class RoundtripError(ValueError): FILE: corehq/form_processor/tests/test_adjust_datetimes.py class AdjustDatetimesTest (line 5) | class AdjustDatetimesTest(SimpleTestCase): method test_date_no_change (line 7) | def test_date_no_change(self): method test_no_tz (line 11) | def test_no_tz(self): method test_strip_tz (line 17) | def test_strip_tz(self): method test_match_no_parse (line 23) | def test_match_no_parse(self): FILE: corehq/form_processor/tests/test_basics.py class FundamentalBaseTests (line 40) | class FundamentalBaseTests(TestCase): method setUpClass (line 42) | def setUpClass(cls): method tearDownClass (line 48) | def tearDownClass(cls): method setUp (line 53) | def setUp(self): class FundamentalFormTests (line 60) | class FundamentalFormTests(FundamentalBaseTests): method test_modified_on (line 61) | def test_modified_on(self): method test_modified_on_archive (line 70) | def test_modified_on_archive(self): method test_modified_on_delete (line 86) | def test_modified_on_delete(self): method test_deleted_on_value (line 106) | def test_deleted_on_value(self): class FundamentalCaseTests (line 120) | class FundamentalCaseTests(FundamentalBaseTests): method test_create_case (line 121) | def test_create_case(self): method test_create_case_unicode_name (line 156) | def test_create_case_unicode_name(self): method test_update_case (line 175) | def test_update_case(self): method test_close_case (line 205) | def test_close_case(self): method test_empty_update (line 228) | def test_empty_update(self): method test_case_with_index (line 246) | def test_case_with_index(self): method test_update_index (line 270) | def test_update_index(self): method test_delete_index (line 296) | def test_delete_index(self): method test_invalid_index (line 323) | def test_invalid_index(self): method test_invalid_index_cross_domain (line 336) | def test_invalid_index_cross_domain(self): method test_case_with_attachment (line 356) | def test_case_with_attachment(self): method test_date_opened_coercion (line 360) | def test_date_opened_coercion(self): method _submit_dummy_form (line 384) | def _submit_dummy_form(domain, user_id, device_id='', sync_log_id=None... method test_restore_caches_cleared (line 401) | def test_restore_caches_cleared(self): method test_update_case_without_creating_triggers_soft_assert (line 420) | def test_update_case_without_creating_triggers_soft_assert(self): method test_duplicate_with_attachment (line 454) | def test_duplicate_with_attachment(self): method test_long_value_validation (line 482) | def test_long_value_validation(self): method test_caching_form_attachment_during_submission (line 498) | def test_caching_form_attachment_during_submission(self): class CaseSearchTests (line 506) | class CaseSearchTests(FundamentalBaseTests): method setUp (line 507) | def setUp(self): method test_create_case_and_update_elasticsearch (line 515) | def test_create_case_and_update_elasticsearch(self, user_mock): function _submit_case_block (line 534) | def _submit_case_block(create, case_id, xmlns=SYSTEM_FORM_XMLNS, device_... class IteratorTests (line 550) | class IteratorTests(TestCase): method test_iterator (line 551) | def test_iterator(self): FILE: corehq/form_processor/tests/test_cases.py class BaseCaseManagerTest (line 33) | class BaseCaseManagerTest(TestCase): method tearDown (line 35) | def tearDown(self): method get_case_and_indices (line 42) | def get_case_and_indices(self, mother_id, task_id): class TestCommCareCaseManager (line 68) | class TestCommCareCaseManager(BaseCaseManagerTest): method test_get_case_by_id (line 70) | def test_get_case_by_id(self): method test_get_case_with_empty_id (line 79) | def test_get_case_with_empty_id(self): method test_get_case_with_wrong_domain (line 84) | def test_get_case_with_wrong_domain(self): method test_get_case_by_id_missing (line 89) | def test_get_case_by_id_missing(self): method test_get_cases (line 93) | def test_get_cases(self): method test_iter_cases (line 109) | def test_iter_cases(self): method test_get_case_by_external_id (line 117) | def test_get_case_by_external_id(self): method test_get_case_by_external_id_with_multiple_results (line 132) | def test_get_case_by_external_id_with_multiple_results(self): method test_get_case_ids_that_exist (line 150) | def test_get_case_ids_that_exist(self): method test_get_last_modified_dates (line 160) | def test_get_last_modified_dates(self): method test_get_case_xform_ids (line 172) | def test_get_case_xform_ids(self): method test_get_reverse_indexed_cases (line 182) | def test_get_reverse_indexed_cases(self): method test_get_case_by_location (line 203) | def test_get_case_by_location(self): method test_get_case_ids_in_domain (line 212) | def test_get_case_ids_in_domain(self): method test_get_open_case_ids_in_domain_by_type (line 229) | def test_get_open_case_ids_in_domain_by_type(self): method test_get_deleted_case_ids_in_domain (line 242) | def test_get_deleted_case_ids_in_domain(self): method test_get_deleted_case_ids_by_owner (line 253) | def test_get_deleted_case_ids_by_owner(self): method test_get_case_ids_in_domain_by_owners (line 264) | def test_get_case_ids_in_domain_by_owners(self): method test_get_case_ids_in_domain_by_owners_closed (line 273) | def test_get_case_ids_in_domain_by_owners_closed(self): method test_save_case_update_index (line 287) | def test_save_case_update_index(self): method test_save_case_delete_index (line 315) | def test_save_case_delete_index(self): method test_save_case_delete_attachment (line 332) | def test_save_case_delete_attachment(self): method test_save_case_update_attachment (line 350) | def test_save_case_update_attachment(self): method test_soft_delete_and_undelete (line 372) | def test_soft_delete_and_undelete(self): method test_hard_delete_cases (line 402) | def test_hard_delete_cases(self): class TestCommCareCase (line 435) | class TestCommCareCase(BaseCaseManagerTest): method test_closed_transactions (line 437) | def test_closed_transactions(self): method test_closed_transactions_with_tracked (line 444) | def test_closed_transactions_with_tracked(self): method test_get_index_map (line 465) | def test_get_index_map(self): method test_get_index_map_reversed (line 486) | def test_get_index_map_reversed(self): class TestCaseAttachmentManager (line 496) | class TestCaseAttachmentManager(BaseCaseManagerTest): method setUp (line 498) | def setUp(self): method test_get_attachments (line 502) | def test_get_attachments(self): method test_get_attachment_by_name (line 533) | def test_get_attachment_by_name(self): class TestCommCareCaseIndexManager (line 566) | class TestCommCareCaseIndexManager(BaseCaseManagerTest): method test_get_indices (line 568) | def test_get_indices(self): method test_get_reverse_indices (line 580) | def test_get_reverse_indices(self): method test_get_all_reverse_indices_info (line 588) | def test_get_all_reverse_indices_info(self): method test_get_extension_case_ids (line 625) | def test_get_extension_case_ids(self): class TestCaseTransactionManager (line 648) | class TestCaseTransactionManager(BaseCaseManagerTest): method test_get_transactions (line 650) | def test_get_transactions(self): method test_get_transaction_by_form_id (line 663) | def test_get_transaction_by_form_id(self): method test_get_most_recent_form_transaction (line 674) | def test_get_most_recent_form_transaction(self): method test_get_transactions_for_case_rebuild (line 721) | def test_get_transactions_for_case_rebuild(self): method test_case_has_transactions_since_sync (line 730) | def test_case_has_transactions_since_sync(self): method test_exists_for_form (line 738) | def test_exists_for_form(self): function _create_case (line 746) | def _create_case(domain=DOMAIN, **kw): function _create_case_with_index (line 750) | def _create_case_with_index(*args, **kw): function _create_case_transactions (line 754) | def _create_case_transactions(case, all_forms=False): class CaseTransactionTrace (line 776) | class CaseTransactionTrace: FILE: corehq/form_processor/tests/test_dbcache.py class CaseDbCacheTest (line 13) | class CaseDbCacheTest(TestCase): method setUp (line 18) | def setUp(self): method testDomainCheck (line 22) | def testDomainCheck(self): method testGetPopulatesCache (line 40) | def testGetPopulatesCache(self): method testSetPopulatesCache (line 53) | def testSetPopulatesCache(self): method testPopulate (line 67) | def testPopulate(self): class CaseDbCacheNoDbTest (line 83) | class CaseDbCacheNoDbTest(SimpleTestCase): method test_sql_wrap_support (line 85) | def test_sql_wrap_support(self): function _make_some_cases (line 92) | def _make_some_cases(howmany, domain='dbcache-test'): FILE: corehq/form_processor/tests/test_doc_types.py class FormDocTypesTest (line 5) | class FormDocTypesTest(SimpleTestCase): method test_doc_types (line 7) | def test_doc_types(self): method test_deleted (line 11) | def test_deleted(self): FILE: corehq/form_processor/tests/test_extension_cases.py class TestExtensionCaseIds (line 14) | class TestExtensionCaseIds(TestCase): method setUp (line 16) | def setUp(self): method tearDown (line 22) | def tearDown(self): method test_no_extensions (line 28) | def test_no_extensions(self): method test_simple_extension_returned (line 46) | def test_simple_extension_returned(self): method test_extension_of_multiple_hosts_returned (line 70) | def test_extension_of_multiple_hosts_returned(self): method test_host_with_multiple_extensions (line 97) | def test_host_with_multiple_extensions(self): method test_host_with_multiple_extension_types (line 126) | def test_host_with_multiple_extension_types(self): method test_extensions_from_list (line 168) | def test_extensions_from_list(self): FILE: corehq/form_processor/tests/test_form_dbaccessor.py class FormSubmissionBuilderTests (line 17) | class FormSubmissionBuilderTests(TestCase, TestXmlMixin): method tearDown (line 19) | def tearDown(self): method test_update_responses (line 23) | def test_update_responses(self): method test_update_responses_error (line 100) | def test_update_responses_error(self): method test_update_responses_preserves_build_id (line 108) | def test_update_responses_preserves_build_id(self): FILE: corehq/form_processor/tests/test_forms.py class XFormInstanceManagerTest (line 27) | class XFormInstanceManagerTest(TestCase): method tearDown (line 29) | def tearDown(self): method test_get_form (line 35) | def test_get_form(self): method test_get_form_with_wrong_domain (line 41) | def test_get_form_with_wrong_domain(self): method test_get_form_without_domain (line 46) | def test_get_form_without_domain(self): method test_get_form_missing (line 53) | def test_get_form_missing(self): method test_form_exists (line 57) | def test_form_exists(self): method test_get_forms (line 66) | def test_get_forms(self): method test_get_with_attachments (line 79) | def test_get_with_attachments(self): method test_get_attachment_by_name (line 100) | def test_get_attachment_by_name(self): method test_get_forms_with_attachments_meta (line 118) | def test_get_forms_with_attachments_meta(self): method test_get_forms_by_type (line 149) | def test_get_forms_by_type(self): method test_get_form_ids_in_domain (line 180) | def test_get_form_ids_in_domain(self): method test_iter_form_ids_by_xmlns (line 199) | def test_iter_form_ids_by_xmlns(self): method test_archive_unarchive_form (line 216) | def test_archive_unarchive_form(self): method test_save_new_form_and_get_attachments (line 254) | def test_save_new_form_and_get_attachments(self): method test_save_new_form_db_error (line 260) | def test_save_new_form_db_error(self): method test_save_form_deprecated (line 274) | def test_save_form_deprecated(self): method test_save_processed_models_deprecated (line 282) | def test_save_processed_models_deprecated(self): method test_update_form_problem_and_state (line 291) | def test_update_form_problem_and_state(self): method test_update_form (line 307) | def test_update_form(self): method test_soft_delete (line 323) | def test_soft_delete(self): method test_hard_delete_forms (line 343) | def test_hard_delete_forms(self): method test_hard_delete_forms_returns_forms_found (line 357) | def test_hard_delete_forms_returns_forms_found(self): method test_hard_delete_forms_does_not_include_missing_form_ids (line 365) | def test_hard_delete_forms_does_not_include_missing_form_ids(self): method assert_form_xml_attachment (line 373) | def assert_form_xml_attachment(self, form): method _validate_deprecation (line 377) | def _validate_deprecation(self, existing_form, new_form): method _check_simple_form (line 385) | def _check_simple_form(self, form): class TestHardDeleteFormsBeforeCutoff (line 393) | class TestHardDeleteFormsBeforeCutoff(TestCase): method test_form_is_hard_deleted_if_deleted_on_is_before_cutoff (line 395) | def test_form_is_hard_deleted_if_deleted_on_is_before_cutoff(self): method test_form_is_not_hard_deleted_if_deleted_on_is_cutoff (line 403) | def test_form_is_not_hard_deleted_if_deleted_on_is_cutoff(self): method test_form_is_not_hard_deleted_if_deleted_on_is_after_cutoff (line 411) | def test_form_is_not_hard_deleted_if_deleted_on_is_after_cutoff(self): method test_form_is_not_hard_deleted_if_deleted_on_is_null (line 419) | def test_form_is_not_hard_deleted_if_deleted_on_is_null(self): method test_returns_deleted_counts (line 427) | def test_returns_deleted_counts(self): method test_nothing_is_deleted_if_dry_run_is_true (line 436) | def test_nothing_is_deleted_if_dry_run_is_true(self): method setUp (line 447) | def setUp(self): class DeleteAttachmentsFSDBTests (line 452) | class DeleteAttachmentsFSDBTests(TestCase): method setUp (line 453) | def setUp(self): method tearDown (line 457) | def tearDown(self): method test_hard_delete_forms_and_attachments (line 461) | def test_hard_delete_forms_and_attachments(self): class DeleteAtachmentsS3DBTests (line 493) | class DeleteAtachmentsS3DBTests(DeleteAttachmentsFSDBTests): method setUp (line 494) | def setUp(self): method tearDown (line 502) | def tearDown(self): class XFormOperationManagerTest (line 508) | class XFormOperationManagerTest(TestCase): method tearDown (line 510) | def tearDown(self): method test_get_form_operations (line 516) | def test_get_form_operations(self): function archive_form (line 540) | def archive_form(form, user_id): function unarchive_form (line 544) | def unarchive_form(form, user_id): function _simulate_form_edit (line 548) | def _simulate_form_edit(): FILE: corehq/form_processor/tests/test_gdpr_scrub_user_from_forms.py class UpdateFormTests (line 44) | class UpdateFormTests(TestCase): method test_update_form_data (line 46) | def test_update_form_data(self): class GDPRScrubUserFromFormsTests (line 55) | class GDPRScrubUserFromFormsTests(TestCase): method setUp (line 56) | def setUp(self): method tearDown (line 60) | def tearDown(self): method test_modify_attachment_xml_and_metadata_couch (line 64) | def test_modify_attachment_xml_and_metadata_couch(self): FILE: corehq/form_processor/tests/test_kafka.py class KafkaPublishingTest (line 16) | class KafkaPublishingTest(TestCase): method setUp (line 20) | def setUp(self): method setUpClass (line 26) | def setUpClass(cls): method tearDown (line 47) | def tearDown(self): method test_form_is_published (line 50) | def test_form_is_published(self): method test_form_soft_deletions (line 59) | def test_form_soft_deletions(self): method test_case_is_published (line 69) | def test_case_is_published(self): method test_case_deletions (line 78) | def test_case_deletions(self): FILE: corehq/form_processor/tests/test_ledger_dbaccessor.py class LedgerDBAccessorTest (line 14) | class LedgerDBAccessorTest(TestCase): method setUpClass (line 17) | def setUpClass(cls): method tearDownClass (line 26) | def tearDownClass(cls): method setUp (line 34) | def setUp(self): method tearDown (line 40) | def tearDown(self): method _submit_ledgers (line 44) | def _submit_ledgers(self, ledger_blocks): method _set_balance (line 47) | def _set_balance(self, balance, case_id, product_id): method test_delete_ledger_transactions_for_form (line 53) | def test_delete_ledger_transactions_for_form(self): method test_delete_ledger_values_case_section_entry (line 75) | def test_delete_ledger_values_case_section_entry(self): method test_delete_ledger_values_case_section (line 92) | def test_delete_ledger_values_case_section(self): method test_delete_ledger_values_case_section_1 (line 108) | def test_delete_ledger_values_case_section_1(self): method test_delete_ledger_values_case (line 125) | def test_delete_ledger_values_case(self): class LedgerAccessorErrorTests (line 144) | class LedgerAccessorErrorTests(TestCase): method setUpClass (line 146) | def setUpClass(cls): method setUp (line 151) | def setUp(self): method tearDownClass (line 167) | def tearDownClass(cls): method test_delete_ledger_values_raise_error_case_section_entry (line 172) | def test_delete_ledger_values_raise_error_case_section_entry(self): method test_delete_ledger_values_raise_error_case_section (line 176) | def test_delete_ledger_values_raise_error_case_section(self): method test_delete_ledger_values_raise_error_case (line 180) | def test_delete_ledger_values_raise_error_case(self): FILE: corehq/form_processor/tests/test_ledgers.py class LedgerTests (line 22) | class LedgerTests(TestCase): method setUpClass (line 25) | def setUpClass(cls): method tearDownClass (line 32) | def tearDownClass(cls): method setUp (line 39) | def setUp(self): method _submit_ledgers (line 45) | def _submit_ledgers(self, ledger_blocks): method _set_balance (line 48) | def _set_balance(self, balance): method _transfer_in (line 54) | def _transfer_in(self, amount): method _transfer_out (line 60) | def _transfer_out(self, amount): method test_balance_submission (line 66) | def test_balance_submission(self): method test_balance_submission_multiple (line 76) | def test_balance_submission_multiple(self): method test_balance_submission_with_prior_balance (line 103) | def test_balance_submission_with_prior_balance(self): method test_transfer_submission (line 117) | def test_transfer_submission(self): method test_transfer_submission_with_prior_balance (line 128) | def test_transfer_submission_with_prior_balance(self): method test_full_combination (line 138) | def test_full_combination(self): method test_ledger_update_with_case_update (line 158) | def test_ledger_update_with_case_update(self): method _assert_ledger_state (line 180) | def _assert_ledger_state(self, expected_balance): method _assert_transactions (line 189) | def _assert_transactions(self, values, ignore_ordering=False): method _expected_val (line 202) | def _expected_val(self, delta, updated_balance, type_=LedgerTransactio... method test_edit_form_that_removes_ledgers (line 206) | def test_edit_form_that_removes_ledgers(self): method test_edit_form_with_ledgers (line 242) | def test_edit_form_with_ledgers(self): FILE: corehq/form_processor/tests/test_models.py class AttachmentHasSizeTests (line 16) | class AttachmentHasSizeTests(SimpleTestCase): method test_handles_no_size_property (line 17) | def test_handles_no_size_property(self): method test_handles_None (line 22) | def test_handles_None(self): method test_handles_valid_size (line 27) | def test_handles_valid_size(self): method create_attachment_with_content (line 33) | def create_attachment_with_content(content): class CommCareCaseTests (line 37) | class CommCareCaseTests(SimpleTestCase): method test_sets_index (line 38) | def test_sets_index(self): method test_sets_index_with_doc_type (line 48) | def test_sets_index_with_doc_type(self): class CommCareCaseIndexTests (line 60) | class CommCareCaseIndexTests(SimpleTestCase): method test_fields (line 61) | def test_fields(self): method test_relationship_id_is_set_by_relationship (line 75) | def test_relationship_id_is_set_by_relationship(self): method test_constructor_ignores_doc_type (line 79) | def test_constructor_ignores_doc_type(self): class TestIndices (line 91) | class TestIndices(TestCase): method setUpClass (line 98) | def setUpClass(cls): method tearDownClass (line 104) | def tearDownClass(cls): method setUp (line 108) | def setUp(self): method test_case_indices (line 175) | def test_case_indices(self): function are_cases_equal (line 182) | def are_cases_equal(a, b): # or at least equal enough for our test function test_case_to_json (line 187) | def test_case_to_json(): function test_case_index_to_json (line 256) | def test_case_index_to_json(): FILE: corehq/form_processor/tests/test_reindex_accessors.py class BaseReindexAccessorTest (line 19) | class BaseReindexAccessorTest(object): method setUpClass (line 24) | def setUpClass(cls): method setup_reindexers (line 37) | def setup_reindexers(cls): method _analyse (line 55) | def _analyse(cls): method tearDownClass (line 61) | def tearDownClass(cls): method _get_docs (line 67) | def _get_docs(self, last_doc_pk=None, limit=500): method _get_docs_for_domain (line 70) | def _get_docs_for_domain(self, domain, last_doc_pk=None, limit=500): method test_get_docs (line 73) | def test_get_docs(self): method test_get_docs_for_domain (line 86) | def test_get_docs_for_domain(self): method test_ids_only (line 99) | def test_ids_only(self): method test_limit (line 103) | def test_limit(self): method test_last_doc_pk (line 108) | def test_last_doc_pk(self): method test_get_doc_count (line 116) | def test_get_doc_count(self): method test_get_doc_count_domain (line 119) | def test_get_doc_count_domain(self): method test_doc_store (line 122) | def test_doc_store(self): class UnshardedCaseReindexAccessorTests (line 128) | class UnshardedCaseReindexAccessorTests(BaseReindexAccessorTest, TestCase): method setUpClass (line 133) | def setUpClass(cls): method _create_docs (line 138) | def _create_docs(cls, domain, count): method _get_doc_ids (line 144) | def _get_doc_ids(cls, docs): class UnshardedFormReindexAccessorTests (line 149) | class UnshardedFormReindexAccessorTests(BaseReindexAccessorTest, TestCase): method setUpClass (line 154) | def setUpClass(cls): method _create_docs (line 159) | def _create_docs(cls, domain, count): method _get_doc_ids (line 163) | def _get_doc_ids(cls, docs): class UnshardedLedgerReindexAccessorTests (line 168) | class UnshardedLedgerReindexAccessorTests(BaseReindexAccessorTest, TestC... method setUpClass (line 173) | def setUpClass(cls): method _create_docs (line 178) | def _create_docs(cls, domain, count): method _get_doc_ids (line 182) | def _get_doc_ids(cls, docs): function _create_ledger (line 186) | def _create_ledger(domain, entry_id, balance, case_id=None, section_id='... FILE: corehq/form_processor/tests/test_reprocess_errors.py class ReprocessXFormErrorsTest (line 31) | class ReprocessXFormErrorsTest(TestCase): method setUpClass (line 33) | def setUpClass(cls): method tearDownClass (line 39) | def tearDownClass(cls): method test_reprocess_xform_error (line 43) | def test_reprocess_xform_error(self): method _validate_case (line 90) | def _validate_case(self, case): class ReprocessSubmissionStubTests (line 99) | class ReprocessSubmissionStubTests(TestCase): method setUpClass (line 101) | def setUpClass(cls): method tearDownClass (line 107) | def tearDownClass(cls): method setUp (line 111) | def setUp(self): method tearDown (line 117) | def tearDown(self): method test_reprocess_unfinished_submission_case_create (line 121) | def test_reprocess_unfinished_submission_case_create(self): method test_reprocess_unfinished_submission_case_update (line 156) | def test_reprocess_unfinished_submission_case_update(self): method test_reprocess_unfinished_submission_ledger_create (line 197) | def test_reprocess_unfinished_submission_ledger_create(self): method test_reprocess_unfinished_submission_ledger_rebuild (line 237) | def test_reprocess_unfinished_submission_ledger_rebuild(self): method test_fire_signals (line 292) | def test_fire_signals(self): method test_reprocess_normal_form (line 317) | def test_reprocess_normal_form(self): method test_processing_skipped_when_migrations_are_in_progress (line 332) | def test_processing_skipped_when_migrations_are_in_progress(self): method test_processing_retuns_error_for_missing_form (line 349) | def test_processing_retuns_error_for_missing_form(self): class TestReprocessDuringSubmission (line 368) | class TestReprocessDuringSubmission(TestCase): method setUpClass (line 370) | def setUpClass(cls): method setUp (line 374) | def setUp(self): method tearDown (line 380) | def tearDown(self): method test_error_saving (line 384) | def test_error_saving(self): method test_processing_error (line 418) | def test_processing_error(self): class TestTransactionErrors (line 465) | class TestTransactionErrors(TransactionTestCase): method tearDown (line 468) | def tearDown(self): method test_error_saving_case (line 472) | def test_error_saving_case(self): method test_error_saving_case_during_edit (line 488) | def test_error_saving_case_during_edit(self): method test_error_reprocessing_ledgers_after_borked_save (line 511) | def test_error_reprocessing_ledgers_after_borked_save(self): function _patch_save_to_raise_error (line 547) | def _patch_save_to_raise_error(test_class): FILE: corehq/form_processor/tests/test_reprocessing_queue.py function _create_stub (line 13) | def _create_stub(timestamp_offset_mins=31, date_queued_offset_hours=None... class TestReprocessingQueue (line 25) | class TestReprocessingQueue(TestCase): method tearDown (line 29) | def tearDown(self): method test_get_stubs_early_cutoff (line 32) | def test_get_stubs_early_cutoff(self): method test_get_stubs_backoff (line 40) | def test_get_stubs_backoff(self): method test_get_stubs_max_attempts (line 53) | def test_get_stubs_max_attempts(self): method test_get_stubs_max_backoff (line 59) | def test_get_stubs_max_backoff(self): method test_large_attempts (line 71) | def test_large_attempts(self): FILE: corehq/form_processor/tests/test_serialization.py class SerializationTests (line 17) | class SerializationTests(TestCase): method setUpClass (line 20) | def setUpClass(cls): method tearDownClass (line 27) | def tearDownClass(cls): method test_serialize_attachments (line 31) | def test_serialize_attachments(self): FILE: corehq/form_processor/tests/test_sharding.py class ShardingTests (line 20) | class ShardingTests(TestCase): method setUpClass (line 23) | def setUpClass(cls): method tearDown (line 30) | def tearDown(self): method test_objects_only_in_one_db (line 35) | def test_objects_only_in_one_db(self): method test_objects_distributed_to_all_dbs (line 53) | def test_objects_distributed_to_all_dbs(self): method test_python_hashing_gives_correct_db (line 78) | def test_python_hashing_gives_correct_db(self): method test_get_docs_by_database (line 87) | def test_get_docs_by_database(self): method test_same_dbalias_util (line 97) | def test_same_dbalias_util(self): function _mock_databases (line 108) | def _mock_databases(): class ShardAccessorTests (line 138) | class ShardAccessorTests(TestCase): method setUpClass (line 141) | def setUpClass(cls): method tearDownClass (line 151) | def tearDownClass(cls): method test_hash_doc_ids (line 157) | def test_hash_doc_ids(self): method test_get_database_for_docs (line 164) | def test_get_database_for_docs(self): method test_hash_in_python (line 182) | def test_hash_in_python(self): method test_hash_uuid (line 201) | def test_hash_uuid(self): FILE: corehq/form_processor/tests/test_sql_update_strategy.py class SqlUpdateStrategyTest (line 28) | class SqlUpdateStrategyTest(TestCase): method setUpClass (line 33) | def setUpClass(cls): method tearDownClass (line 39) | def tearDownClass(cls): method test_reconcile_transactions (line 45) | def test_reconcile_transactions(self, soft_assert_mock): method test_reconcile_not_necessary (line 69) | def test_reconcile_not_necessary(self): method test_ignores_before_rebuild_transaction (line 82) | def test_ignores_before_rebuild_transaction(self): method test_first_transaction_not_create (line 105) | def test_first_transaction_not_create(self): method test_reconcile_transactions_within_fudge_factor (line 121) | def test_reconcile_transactions_within_fudge_factor(self, soft_assert_... method _create_form (line 150) | def _create_form(self, user_id=None, received_on=None): method _create_case_transaction (line 168) | def _create_case_transaction(self, case, form=None, submitted_on=None,... method _create_case (line 174) | def _create_case(self, case_type=None, user_id=None, case_id=None): method _save (line 196) | def _save(self, form, case, transaction): method _check_for_reconciliation_error_soft_assert (line 203) | def _check_for_reconciliation_error_soft_assert(self, soft_assert_mock): function test_update_known_properties_with_empty_values (line 210) | def test_update_known_properties_with_empty_values(prop): function test_at_least_one_property_will_be_tested (line 220) | def test_at_least_one_property_will_be_tested(): FILE: corehq/form_processor/tests/test_system_action.py class TestSystemActions (line 18) | class TestSystemActions(TestCase): method test_unauthorized_system_action (line 20) | def test_unauthorized_system_action(self): function test_system_action_constants (line 35) | def test_system_action_constants(actual, expected): FILE: corehq/form_processor/tests/test_usercase_dbaccessor.py class UsercaseAccessorsTests (line 11) | class UsercaseAccessorsTests(TestCase): method setUpClass (line 14) | def setUpClass(cls): method setUp (line 22) | def setUp(self): method test_get_usercase (line 32) | def test_get_usercase(self): FILE: corehq/form_processor/tests/test_utils.py class FormSubmissionBuilderTest (line 10) | class FormSubmissionBuilderTest(SimpleTestCase): method test_property_dict_to_xml_empty (line 12) | def test_property_dict_to_xml_empty(self): method test_property_dict_to_xml_single_item (line 15) | def test_property_dict_to_xml_single_item(self): method test_property_dict_to_xml_multiple_item (line 21) | def test_property_dict_to_xml_multiple_item(self): method test_invalid_tag (line 30) | def test_invalid_tag(self): method test_property_dict_to_xml_group (line 34) | def test_property_dict_to_xml_group(self): method test_property_dict_to_xml_repeat_group (line 47) | def test_property_dict_to_xml_repeat_group(self): method test_get_node (line 66) | def test_get_node(self): class TestDateTimeRegexMatch (line 87) | class TestDateTimeRegexMatch(SimpleTestCase): method test_datetime_match (line 88) | def test_datetime_match(self): FILE: corehq/form_processor/tests/utils.py class FormProcessorTestUtils (line 37) | class FormProcessorTestUtils(object): method delete_all_cases_forms_ledgers (line 41) | def delete_all_cases_forms_ledgers(cls, domain=None): method delete_all_cases (line 48) | def delete_all_cases(cls, domain=None): method delete_all_ledgers (line 56) | def delete_all_ledgers(domain=None): method delete_all_xforms (line 75) | def delete_all_xforms(cls, domain=None): method delete_all_sync_logs (line 89) | def delete_all_sync_logs(cls): method _delete_all_sql_sharded_models (line 94) | def _delete_all_sql_sharded_models(model_class, domain=None): function sharded (line 105) | def sharded(cls): function only_run_with_non_partitioned_database (line 118) | def only_run_with_non_partitioned_database(cls): function only_run_with_partitioned_database (line 128) | def only_run_with_partitioned_database(cls): function patch_testcase_databases (line 138) | def patch_testcase_databases(): function patch_shard_db_transactions (line 201) | def patch_shard_db_transactions(cls): function create_form_for_test (line 223) | def create_form_for_test( function create_case (line 301) | def create_case( function create_case_with_index (line 348) | def create_case_with_index( function delete_all_xforms_and_cases (line 374) | def delete_all_xforms_and_cases(domain): FILE: corehq/form_processor/track_related.py class TrackRelatedChanges (line 4) | class TrackRelatedChanges(object): method __init__ (line 6) | def __init__(self): method has_tracked_models (line 11) | def has_tracked_models(self, model_class=None): method has_tracked_models_to_delete (line 18) | def has_tracked_models_to_delete(self, model_class=None): method has_tracked_models_to_update (line 21) | def has_tracked_models_to_update(self, model_class=None): method has_tracked_models_to_create (line 24) | def has_tracked_models_to_create(self, model_class=None): method _has_tracked_models (line 27) | def _has_tracked_models(self, storage, model_class=None): method clear_tracked_models (line 32) | def clear_tracked_models(self, model_class=None): method on_tracked_models_cleared (line 43) | def on_tracked_models_cleared(self, model_class=None): method track_create (line 50) | def track_create(self, model): method track_update (line 53) | def track_update(self, model): method track_delete (line 56) | def track_delete(self, model): method get_live_tracked_models (line 59) | def get_live_tracked_models(self, model_class): method get_tracked_models_to_create (line 64) | def get_tracked_models_to_create(self, model_class): method get_tracked_models_to_update (line 67) | def get_tracked_models_to_update(self, model_class): method get_tracked_models_to_delete (line 70) | def get_tracked_models_to_delete(self, model_class): FILE: corehq/form_processor/update_strategy_base.py class UpdateStrategy (line 4) | class UpdateStrategy(metaclass=ABCMeta): method case_implementation_class (line 6) | def case_implementation_class(self): method __init__ (line 9) | def __init__(self, case): method case_from_case_update (line 13) | def case_from_case_update(cls, case_update, xformdoc): method update_from_case_update (line 31) | def update_from_case_update(self, case_update, xformdoc, other_forms=N... method apply_action_intents (line 35) | def apply_action_intents(self, primary_intent, deprecation_intent=None): FILE: corehq/form_processor/utils/general.py function use_sqlite_backend (line 1) | def use_sqlite_backend(domain_name): function is_commcarecase (line 5) | def is_commcarecase(obj): FILE: corehq/form_processor/utils/metadata.py function scrub_meta (line 11) | def scrub_meta(xform): function scrub_form_meta (line 22) | def scrub_form_meta(form_id, form_data): function clean_metadata (line 67) | def clean_metadata(_meta_block): function _flatten_dict (line 84) | def _flatten_dict(dictionary): function _remove_unused_meta_attributes (line 88) | def _remove_unused_meta_attributes(meta_block): function _parse_meta_times (line 96) | def _parse_meta_times(meta_block): function _get_text_attribute (line 121) | def _get_text_attribute(node): FILE: corehq/form_processor/utils/sql.py function form_adapter (line 23) | def form_adapter(form): function form_operation_adapter (line 52) | def form_operation_adapter(operation): function case_adapter (line 63) | def case_adapter(case): function case_attachment_adapter (line 89) | def case_attachment_adapter(attachment): function case_index_adapter (line 105) | def case_index_adapter(index): function case_transaction_adapter (line 118) | def case_transaction_adapter(transaction): function ledger_value_adapter (line 133) | def ledger_value_adapter(ledger_value): function ledger_transaction_adapter (line 148) | def ledger_transaction_adapter(ledger_transaction): class ObjectAdapter (line 165) | class ObjectAdapter(object): method __init__ (line 166) | def __init__(self, fields, table_name): method getquoted (line 172) | def getquoted(self): method prepare (line 178) | def prepare(self, conn): FILE: corehq/form_processor/utils/xform.py class TestFormMetadata (line 58) | class TestFormMetadata(jsonobject.JsonObject): class FormSubmissionBuilder (line 73) | class FormSubmissionBuilder(object): method __init__ (line 78) | def __init__(self, form_id, metadata=None, case_blocks=None, form_prop... method as_xml_string (line 85) | def as_xml_string(self): function _build_node_list_from_dict (line 97) | def _build_node_list_from_dict(form_properties, separator=''): function build_form_xml_from_property_dict (line 117) | def build_form_xml_from_property_dict(form_properties, separator=''): function get_simple_form_xml (line 124) | def get_simple_form_xml(form_id, case_id=None, metadata=None, simple_for... function get_simple_wrapped_form (line 136) | def get_simple_wrapped_form(form_id, metadata=None, save=True, simple_fo... function extract_meta_instance_id (line 153) | def extract_meta_instance_id(form): function extract_meta_user_id (line 174) | def extract_meta_user_id(form): function convert_xform_to_json (line 183) | def convert_xform_to_json(xml_string): function adjust_text_to_datetime (line 199) | def adjust_text_to_datetime(text): function adjust_datetimes (line 204) | def adjust_datetimes(data, parent=None, key=None): function resave_form (line 230) | def resave_form(domain, form): function get_node (line 235) | def get_node(root, question, xmlns=''): function update_response (line 258) | def update_response(root, question, response, xmlns=None): FILE: corehq/messaging/__init__.py class MessagingAppConfig (line 4) | class MessagingAppConfig(AppConfig): FILE: corehq/messaging/fcm/exceptions.py class FCMUtilException (line 4) | class FCMUtilException(Exception): class DevicesLimitExceeded (line 8) | class DevicesLimitExceeded(FCMUtilException): method __init__ (line 9) | def __init__(self, message): class EmptyData (line 13) | class EmptyData(FCMUtilException): method __init__ (line 14) | def __init__(self): class FCMNotSetup (line 18) | class FCMNotSetup(FCMUtilException): method __init__ (line 19) | def __init__(self): class FCMTokenValidationException (line 23) | class FCMTokenValidationException(Exception): method __init__ (line 24) | def __init__(self, error_type, additional_text=None): FILE: corehq/messaging/ivrbackends/kookoo/models.py class SQLKooKooBackend (line 4) | class SQLKooKooBackend(SQLIVRBackend): class Meta (line 10) | class Meta(object): FILE: corehq/messaging/management/commands/export_conditional_alerts.py class MatchPropertyCriterion (line 24) | class MatchPropertyCriterion(jsonobject.JsonObject): class SimpleSchedulingRule (line 30) | class SimpleSchedulingRule(jsonobject.JsonObject): class ExtraSchedulingOptions (line 41) | class ExtraSchedulingOptions(jsonobject.JsonObject): class SimpleSMSDailyScheduleWithTime (line 51) | class SimpleSMSDailyScheduleWithTime(jsonobject.JsonObject): class SimpleSMSAlertSchedule (line 62) | class SimpleSMSAlertSchedule(jsonobject.JsonObject): class Command (line 68) | class Command(BaseCommand): method add_arguments (line 71) | def add_arguments(self, parser): method get_json_rule (line 77) | def get_json_rule(self, rule): method get_json_scheduling_options (line 141) | def get_json_scheduling_options(self, schedule): method get_json_timed_schedule (line 152) | def get_json_timed_schedule(self, schedule): method get_json_alert_schedule (line 190) | def get_json_alert_schedule(self, schedule): method handle (line 215) | def handle(self, domain, **options): FILE: corehq/messaging/management/commands/import_conditional_alerts.py class Command (line 26) | class Command(BaseCommand): method add_arguments (line 29) | def add_arguments(self, parser): method handle (line 39) | def handle(self, domain, filename, **options): FILE: corehq/messaging/management/commands/manage_rule_run.py class Command (line 6) | class Command(BaseCommand): method add_arguments (line 13) | def add_arguments(self, parser): method get_rule (line 29) | def get_rule(self, domain, rule_id): method print_status (line 44) | def print_status(self, rule): method handle (line 64) | def handle(self, rule_id=None, domain=None, cancel=False, **options): FILE: corehq/messaging/management/commands/queue_schedule_instances.py function skip_domain (line 26) | def skip_domain(domain): class Command (line 30) | class Command(BaseCommand): method get_task (line 40) | def get_task(self, cls): method get_enqueue_lock (line 53) | def get_enqueue_lock(self, cls, schedule_instance_id, next_event_due): method create_tasks (line 67) | def create_tasks(self): method handle (line 91) | def handle(self, **options): FILE: corehq/messaging/management/commands/resync_case_type.py class Command (line 8) | class Command(BaseCommand): method add_arguments (line 11) | def add_arguments(self, parser): method handle (line 16) | def handle(self, domain, case_type, start_from_db=None, **options): FILE: corehq/messaging/management/commands/run_rule.py class Command (line 11) | class Command(BaseCommand): method add_arguments (line 14) | def add_arguments(self, parser): method get_rule (line 18) | def get_rule(self, domain, rule_id): method handle (line 32) | def handle(self, **options): FILE: corehq/messaging/pillow.py class CaseRules (line 19) | class CaseRules(object): method expired (line 23) | def expired(self): class CaseMessagingSyncProcessor (line 27) | class CaseMessagingSyncProcessor(BulkPillowProcessor): method __init__ (line 38) | def __init__(self): method _get_rules (line 41) | def _get_rules(self, domain, case_type): method process_change (line 51) | def process_change(self, change): method process_changes_chunk (line 56) | def process_changes_chunk(self, changes_chunk): function get_case_messaging_sync_pillow (line 66) | def get_case_messaging_sync_pillow(pillow_id='case_messaging_sync_pillow... FILE: corehq/messaging/scheduling/async_handlers.py function get_visit_scheduler_forms (line 17) | def get_visit_scheduler_forms(domain, timestamp): class MessagingRecipientHandler (line 37) | class MessagingRecipientHandler(BaseAsyncHandler): method schedule_user_recipients_response (line 49) | def schedule_user_recipients_response(self): method schedule_user_group_recipients_response (line 77) | def schedule_user_group_recipients_response(self): method _get_user_group_response (line 80) | def _get_user_group_response(self, case_sharing_only=False): method schedule_user_organization_recipients_response (line 86) | def schedule_user_organization_recipients_response(self): method _get_user_organization_response (line 89) | def _get_user_organization_response(self, case_sharing_only=False): method schedule_location_types_response (line 98) | def schedule_location_types_response(self): method schedule_case_group_recipients_response (line 114) | def schedule_case_group_recipients_response(self): method _fmt_success (line 122) | def _fmt_success(self, data): class ConditionalAlertAsyncHandler (line 127) | class ConditionalAlertAsyncHandler(MessagingRecipientHandler): method schedule_visit_scheduler_app_and_form_unique_id_response (line 139) | def schedule_visit_scheduler_app_and_form_unique_id_response(self): class SMSSettingsAsyncHandler (line 155) | class SMSSettingsAsyncHandler(MessagingRecipientHandler): method sms_case_registration_user_id_response (line 164) | def sms_case_registration_user_id_response(self): method sms_case_registration_owner_id_response (line 168) | def sms_case_registration_owner_id_response(self): FILE: corehq/messaging/scheduling/custom_recipients.py function host_case_owner_location_from_case (line 6) | def host_case_owner_location_from_case(domain, case): function host_case_owner_location_parent_from_case (line 29) | def host_case_owner_location_parent_from_case(domain, case): function host_case_owner_location (line 41) | def host_case_owner_location(case_schedule_instance): function host_case_owner_location_parent (line 45) | def host_case_owner_location_parent(case_schedule_instance): FILE: corehq/messaging/scheduling/exceptions.py class EmailValidationException (line 1) | class EmailValidationException(Exception): method __init__ (line 2) | def __init__(self, error_type, additional_text=None): class NoAvailableContent (line 7) | class NoAvailableContent(Exception): class RuleUpdateError (line 11) | class RuleUpdateError(Exception): class UnknownContentType (line 15) | class UnknownContentType(Exception): class UnknownRecipientType (line 19) | class UnknownRecipientType(Exception): class InvalidMonthlyScheduleConfiguration (line 23) | class InvalidMonthlyScheduleConfiguration(Exception): class ImmediateMessageEditAttempt (line 27) | class ImmediateMessageEditAttempt(Exception): class UnsupportedScheduleError (line 31) | class UnsupportedScheduleError(Exception): FILE: corehq/messaging/scheduling/filters.py class ScheduleInstanceFilter (line 5) | class ScheduleInstanceFilter(BaseReportFilter): method filter_context (line 17) | def filter_context(self): method get_conditional_alert_choices (line 24) | def get_conditional_alert_choices(self): method get_value (line 32) | def get_value(cls, request, domain): FILE: corehq/messaging/scheduling/forms.py function validate_time (line 116) | def validate_time(value): function validate_date (line 130) | def validate_date(value): function validate_int (line 144) | def validate_int(value, min_value): class RelaxedMultipleChoiceField (line 158) | class RelaxedMultipleChoiceField(MultipleChoiceField): method validate (line 159) | def validate(self, value): function get_system_admin_label (line 163) | def get_system_admin_label(data_bind=""): class ContentForm (line 174) | class ContentForm(Form): method __init__ (line 238) | def __init__(self, *args, **kwargs): method set_app_and_form_unique_id_choices (line 248) | def set_app_and_form_unique_id_choices(self): method set_message_template (line 251) | def set_message_template(self): method clean_subject (line 257) | def clean_subject(self): method clean_message (line 263) | def clean_message(self): method clean_html_message (line 277) | def clean_html_message(self): method _clean_message_field (line 282) | def _clean_message_field(self, field_name): method clean_app_and_form_unique_id (line 296) | def clean_app_and_form_unique_id(self): method clean_survey_expiration_in_hours (line 308) | def clean_survey_expiration_in_hours(self): method clean_survey_reminder_intervals (line 319) | def clean_survey_reminder_intervals(self): method clean_custom_sms_content_id (line 354) | def clean_custom_sms_content_id(self): method clean_ivr_intervals (line 364) | def clean_ivr_intervals(self): method clean_max_question_attempts (line 370) | def clean_max_question_attempts(self): method clean_sms_callback_intervals (line 376) | def clean_sms_callback_intervals(self): method distill_content (line 382) | def distill_content(self): method _distill_rich_text_email (line 432) | def _distill_rich_text_email(self): method get_layout_fields (line 460) | def get_layout_fields(self): method compute_initial (line 598) | def compute_initial(domain, content): method current_values (line 665) | def current_values(self): class CustomEventForm (line 672) | class CustomEventForm(ContentForm): method is_deleted (line 712) | def is_deleted(self): method clean_day (line 715) | def clean_day(self): method clean_time (line 726) | def clean_time(self): method clean_window_length (line 737) | def clean_window_length(self): method clean_case_property_name (line 751) | def clean_case_property_name(self): method clean_minutes_to_wait (line 763) | def clean_minutes_to_wait(self): method compute_initial (line 775) | def compute_initial(domain, event): method distill_event (line 800) | def distill_event(self): method get_layout_fields (line 827) | def get_layout_fields(self): method __init__ (line 899) | def __init__(self, *args, **kwargs): class BaseCustomEventFormSet (line 917) | class BaseCustomEventFormSet(BaseFormSet): method __init__ (line 919) | def __init__(self, *args, **kwargs): method non_deleted_forms (line 924) | def non_deleted_forms(self): method validate_alert_schedule_min_tick (line 930) | def validate_alert_schedule_min_tick(self, custom_event_forms): method validate_timed_schedule_order (line 940) | def validate_timed_schedule_order(self, schedule_form, custom_event_fo... method validate_random_timed_events_do_not_overlap (line 985) | def validate_random_timed_events_do_not_overlap(self, schedule_form, c... method validate_timed_schedule_min_tick (line 1026) | def validate_timed_schedule_min_tick(self, schedule_form, custom_event... method validate_repeat_every_on_schedule_form (line 1067) | def validate_repeat_every_on_schedule_form(self, schedule_form, custom... method clean (line 1088) | def clean(self): class ScheduleForm (line 1111) | class ScheduleForm(Form): method get_send_frequency_by_ui_type (line 1356) | def get_send_frequency_by_ui_type(cls, ui_type): method is_valid (line 1367) | def is_valid(self): method update_send_frequency_choices (line 1380) | def update_send_frequency_choices(self, initial_value): method set_default_language_code_choices (line 1401) | def set_default_language_code_choices(self): method add_initial_for_immediate_schedule (line 1417) | def add_initial_for_immediate_schedule(self, initial): method add_initial_for_daily_schedule (line 1420) | def add_initial_for_daily_schedule(self, initial): method add_initial_for_weekly_schedule (line 1423) | def add_initial_for_weekly_schedule(self, initial): method add_initial_for_monthly_schedule (line 1428) | def add_initial_for_monthly_schedule(self, initial): method add_initial_for_custom_daily_schedule (line 1432) | def add_initial_for_custom_daily_schedule(self, initial): method add_initial_for_custom_immediate_schedule (line 1439) | def add_initial_for_custom_immediate_schedule(self, initial): method add_initial_for_send_time (line 1446) | def add_initial_for_send_time(self, initial): method add_initial_for_timed_schedule (line 1458) | def add_initial_for_timed_schedule(self, initial): method add_initial_recipients (line 1487) | def add_initial_recipients(self, recipients, initial): method add_initial_for_content (line 1516) | def add_initial_for_content(self, initial): method compute_initial (line 1553) | def compute_initial(self, domain): method editing_custom_immediate_schedule (line 1614) | def editing_custom_immediate_schedule(self): method get_form_and_app (line 1632) | def get_form_and_app(self, app_and_form_unique_id): method get_latest_released_form_and_app (line 1648) | def get_latest_released_form_and_app(self, app_id, form_unique_id): method __init__ (line 1664) | def __init__(self, domain, schedule, can_use_sms_surveys, *args, **kwa... method create_form_helper (line 1733) | def create_form_helper(): method form_choices (line 1739) | def form_choices(self): method can_use_connect (line 1743) | def can_use_connect(self): method add_additional_content_types (line 1746) | def add_additional_content_types(self): method enable_json_user_data_filter (line 1772) | def enable_json_user_data_filter(self, initial): method scheduling_fieldset_legend (line 1779) | def scheduling_fieldset_legend(self): method get_before_content_layout_fields (line 1782) | def get_before_content_layout_fields(self): method get_after_content_layout_fields (line 1811) | def get_after_content_layout_fields(self): method get_start_date_layout_fields (line 1828) | def get_start_date_layout_fields(self): method get_extra_timing_fields (line 1831) | def get_extra_timing_fields(self): method get_scheduling_layout_fields (line 1834) | def get_scheduling_layout_fields(self): method get_recipients_layout_fields (line 1989) | def get_recipients_layout_fields(self): method display_utc_timezone_option (line 2073) | def display_utc_timezone_option(self): method get_advanced_layout_fields (line 2085) | def get_advanced_layout_fields(self): method get_advanced_survey_layout_fields (line 2124) | def get_advanced_survey_layout_fields(self): method language_list (line 2139) | def language_list(self): method html_message_template (line 2151) | def html_message_template(self): method use_case (line 2158) | def use_case(self): method current_values (line 2162) | def current_values(self): method current_select2_user_recipients (line 2173) | def current_select2_user_recipients(self): method current_select2_user_group_recipients (line 2193) | def current_select2_user_group_recipients(self): method current_select2_user_organization_recipients (line 2210) | def current_select2_user_organization_recipients(self): method current_select2_location_types (line 2228) | def current_select2_location_types(self): method current_select2_case_group_recipients (line 2246) | def current_select2_case_group_recipients(self): method current_visit_scheduler_form (line 2263) | def current_visit_scheduler_form(self): method uses_sms_survey (line 2270) | def uses_sms_survey(self): method clean_active (line 2273) | def clean_active(self): method clean_user_recipients (line 2276) | def clean_user_recipients(self): method clean_recipient_types (line 2310) | def clean_recipient_types(self): method clean_user_group_recipients (line 2327) | def clean_user_group_recipients(self): method clean_user_organization_recipients (line 2354) | def clean_user_organization_recipients(self): method clean_location_types (line 2376) | def clean_location_types(self): method clean_case_group_recipients (line 2413) | def clean_case_group_recipients(self): method clean_weekdays (line 2442) | def clean_weekdays(self): method clean_days_of_month (line 2452) | def clean_days_of_month(self): method cleaned_data_uses_custom_event_definitions (line 2462) | def cleaned_data_uses_custom_event_definitions(self): method cleaned_data_uses_alert_schedule (line 2465) | def cleaned_data_uses_alert_schedule(self): method cleaned_data_uses_timed_schedule (line 2468) | def cleaned_data_uses_timed_schedule(self): method clean_send_time (line 2476) | def clean_send_time(self): method clean_window_length (line 2488) | def clean_window_length(self): method clean_start_date (line 2502) | def clean_start_date(self): method clean_repeat (line 2508) | def clean_repeat(self): method clean_repeat_every (line 2518) | def clean_repeat_every(self): method clean_stop_type (line 2527) | def clean_stop_type(self): method clean_occurrences (line 2540) | def clean_occurrences(self): method clean_use_user_case_for_filter (line 2550) | def clean_use_user_case_for_filter(self): method clean_user_data_property_name (line 2553) | def clean_user_data_property_name(self): method clean_user_data_property_value (line 2563) | def clean_user_data_property_value(self): method clean_user_data_property_json (line 2574) | def clean_user_data_property_json(self): method distill_recipients (line 2616) | def distill_recipients(self): method distill_total_iterations (line 2629) | def distill_total_iterations(self): method distill_repeat_every (line 2638) | def distill_repeat_every(self): method distill_default_language_code (line 2644) | def distill_default_language_code(self): method distill_extra_scheduling_options (line 2651) | def distill_extra_scheduling_options(self): method distill_user_data_filter (line 2666) | def distill_user_data_filter(self): method distill_start_offset (line 2677) | def distill_start_offset(self): method distill_start_day_of_week (line 2680) | def distill_start_day_of_week(self): method distill_model_timed_event (line 2683) | def distill_model_timed_event(self): method save_immediate_schedule (line 2700) | def save_immediate_schedule(self): method save_daily_schedule (line 2714) | def save_daily_schedule(self): method save_weekly_schedule (line 2744) | def save_weekly_schedule(self): method save_monthly_schedule (line 2777) | def save_monthly_schedule(self): method save_custom_daily_schedule (line 2812) | def save_custom_daily_schedule(self): method save_custom_immediate_schedule (line 2849) | def save_custom_immediate_schedule(self): method save_schedule (line 2866) | def save_schedule(self): class BroadcastForm (line 2878) | class BroadcastForm(ScheduleForm): method __init__ (line 2888) | def __init__(self, domain, schedule, can_use_sms_surveys, broadcast, *... method clean_active (line 2892) | def clean_active(self): method get_after_content_layout_fields (line 2900) | def get_after_content_layout_fields(self): method get_start_date_layout_fields (line 2914) | def get_start_date_layout_fields(self): method get_scheduling_layout_fields (line 2929) | def get_scheduling_layout_fields(self): method compute_initial (line 2936) | def compute_initial(self, domain): method distill_start_offset (line 2946) | def distill_start_offset(self): method distill_start_day_of_week (line 2949) | def distill_start_day_of_week(self): method save_immediate_broadcast (line 2955) | def save_immediate_broadcast(self, schedule): method save_scheduled_broadcast (line 2969) | def save_scheduled_broadcast(self, schedule): method save_broadcast_and_schedule (line 2989) | def save_broadcast_and_schedule(self): class ConditionalAlertScheduleForm (line 3011) | class ConditionalAlertScheduleForm(ScheduleForm): method __init__ (line 3168) | def __init__(self, domain, schedule, can_use_sms_surveys, rule, criter... method get_extra_timing_fields (line 3178) | def get_extra_timing_fields(self): method add_additional_content_types (line 3187) | def add_additional_content_types(self): method current_visit_scheduler_form (line 3204) | def current_visit_scheduler_form(self): method scheduling_fieldset_legend (line 3218) | def scheduling_fieldset_legend(self): method set_read_only_fields_during_editing (line 3221) | def set_read_only_fields_during_editing(self): method requires_system_admin_to_edit (line 3232) | def requires_system_admin_to_edit(self): method requires_system_admin_to_save (line 3241) | def requires_system_admin_to_save(self): method update_send_time_type_choices (line 3249) | def update_send_time_type_choices(self): method update_recipient_types_choices (line 3254) | def update_recipient_types_choices(self): method update_start_date_type_choices (line 3279) | def update_start_date_type_choices(self): method add_initial_for_send_time (line 3288) | def add_initial_for_send_time(self, initial): method add_initial_recipients (line 3298) | def add_initial_recipients(self, recipients, initial): method add_initial_for_custom_metadata (line 3311) | def add_initial_for_custom_metadata(self, result): method compute_initial (line 3324) | def compute_initial(self, domain): method get_start_date_layout_fields (line 3382) | def get_start_date_layout_fields(self): method get_recipients_layout_fields (line 3459) | def get_recipients_layout_fields(self): method get_advanced_layout_fields (line 3490) | def get_advanced_layout_fields(self): method clean_start_offset_type (line 3566) | def clean_start_offset_type(self): method clean_start_offset (line 3586) | def clean_start_offset(self): method clean_start_date_type (line 3596) | def clean_start_date_type(self): method clean_start_date (line 3606) | def clean_start_date(self): method clean_start_day_of_week (line 3612) | def clean_start_day_of_week(self): method clean_custom_recipient (line 3632) | def clean_custom_recipient(self): method clean_reset_case_property_enabled (line 3644) | def clean_reset_case_property_enabled(self): method clean_reset_case_property_name (line 3657) | def clean_reset_case_property_name(self): method clean_stop_date_case_property_name (line 3671) | def clean_stop_date_case_property_name(self): method clean_start_date_case_property (line 3680) | def clean_start_date_case_property(self): method clean_send_time_case_property_name (line 3692) | def clean_send_time_case_property_name(self): method clean_visit_scheduler_app_and_form_unique_id (line 3705) | def clean_visit_scheduler_app_and_form_unique_id(self): method validate_visit (line 3721) | def validate_visit(self, form, visit_index): method clean_visit_number (line 3741) | def clean_visit_number(self): method clean_visit_window_position (line 3759) | def clean_visit_window_position(self): method clean_custom_metadata_item_name (line 3769) | def clean_custom_metadata_item_name(self): method clean_custom_metadata_item_value (line 3779) | def clean_custom_metadata_item_value(self): method clean (line 3789) | def clean(self): method distill_start_offset (line 3800) | def distill_start_offset(self): method distill_start_day_of_week (line 3822) | def distill_start_day_of_week(self): method distill_scheduler_module_info (line 3831) | def distill_scheduler_module_info(self): method distill_recipients (line 3849) | def distill_recipients(self): method distill_model_timed_event (line 3879) | def distill_model_timed_event(self): method distill_extra_scheduling_options (line 3891) | def distill_extra_scheduling_options(self): method create_rule_action (line 3905) | def create_rule_action(self, rule, schedule): method edit_rule_action (line 3923) | def edit_rule_action(self, rule, schedule): method validate_existing_action_definition (line 3935) | def validate_existing_action_definition(self, action_definition, sched... method save_rule_action (line 3948) | def save_rule_action(self, rule, schedule): method save_rule_action_and_schedule (line 3957) | def save_rule_action_and_schedule(self, rule): class ConditionalAlertForm (line 3963) | class ConditionalAlertForm(Form): method __init__ (line 3974) | def __init__(self, domain, rule, *args, **kwargs): method compute_initial (line 3996) | def compute_initial(self, domain): method rule_name (line 4002) | def rule_name(self): class ConditionalAlertCriteriaForm (line 4006) | class ConditionalAlertCriteriaForm(CaseRuleCriteriaForm): method show_fieldset_title (line 4009) | def show_fieldset_title(self): method fieldset_help_text (line 4013) | def fieldset_help_text(self): method allow_parent_case_references (line 4018) | def allow_parent_case_references(self): method allow_case_modified_filter (line 4022) | def allow_case_modified_filter(self): method allow_case_property_filter (line 4026) | def allow_case_property_filter(self): method allow_date_case_property_filter (line 4030) | def allow_date_case_property_filter(self): method allow_regex_case_property_match (line 4034) | def allow_regex_case_property_match(self): method set_read_only_fields_during_editing (line 4037) | def set_read_only_fields_during_editing(self): method set_case_type_choices (line 4046) | def set_case_type_choices(self, initial): method __init__ (line 4056) | def __init__(self, *args, **kwargs): FILE: corehq/messaging/scheduling/migrations/0001_initial.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0002_add__custom_content__is_test.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0003_add_custom_metadata.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0004_timedschedule_start_offset.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0005_timedschedule_start_day_of_week.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0006_add_broadcast_recipients.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0007_add_schedule_ui_type.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0008_timedschedule_event_type.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0009_randomtimedevent.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0010_casepropertytimedevent.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0011_add_broadcast_deleted_flag.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0012_add_schedule_deleted_flag.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0013_advanced_survey_options.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0014_remove_is_test.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0015_rename_schedule_length_to_repeat_every.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0016_location_type_filter.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0017_update_ui_type.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0018_minutes_to_wait.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0019_add_use_utc_as_default_timezone.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0020_migratedreminder.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0021_add_user_data_filter.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0022_add_stop_date_case_property_name.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0023_add_remaining_content_models.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0024_app_id.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0025_schedule_and_broadcast_deleted_on.py function set_deleted_on_field (line 12) | def set_deleted_on_field(apps, schema_editor): class Migration (line 19) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0026_add_model_fcm_notification_content.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0027_emailcontent_html_message.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0028_alertschedule_use_user_case_for_filter_and_more.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/migrations/0029_connectmessagecontent_connectmessagesurveycontent_and_more.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/models/abstract.py function no_op_context_manager (line 52) | def no_op_context_manager(): class Schedule (line 56) | class Schedule(models.Model): class Meta (line 125) | class Meta(object): method assert_is (line 129) | def assert_is(cls, schedule): method set_first_event_due_timestamp (line 133) | def set_first_event_due_timestamp(self, instance, start_date=None): method get_current_event_content (line 136) | def get_current_event_content(self, instance): method total_iterations_complete (line 139) | def total_iterations_complete(self, instance): method move_to_next_event (line 146) | def move_to_next_event(self, instance): method set_next_event_due_timestamp (line 156) | def set_next_event_due_timestamp(self, instance): method move_to_next_event_not_in_the_past (line 159) | def move_to_next_event_not_in_the_past(self, instance): method get_extra_scheduling_options (line 163) | def get_extra_scheduling_options(self): method set_extra_scheduling_options (line 173) | def set_extra_scheduling_options(self, options): method memoized_language_set (line 182) | def memoized_language_set(self): method memoized_uses_sms_survey (line 199) | def memoized_uses_sms_survey(self): method memoized_uses_ivr_survey (line 213) | def memoized_uses_ivr_survey(self): method memoized_uses_sms_callback (line 227) | def memoized_uses_sms_callback(self): method references_parent_case (line 241) | def references_parent_case(self): method delete_related_events (line 247) | def delete_related_events(self): method delete (line 253) | def delete(self, *args, **kwargs): class ContentForeignKeyMixin (line 259) | class ContentForeignKeyMixin(models.Model): class Meta (line 273) | class Meta(object): method content (line 277) | def content(self): method memoized_content (line 301) | def memoized_content(self): method content (line 309) | def content(self, value): class Event (line 345) | class Event(ContentForeignKeyMixin): class Meta (line 351) | class Meta(object): class Content (line 355) | class Content(models.Model): class Meta (line 369) | class Meta(object): method set_context (line 372) | def set_context(self, case=None, schedule_instance=None, critical_sect... method get_workflow (line 382) | def get_workflow(logged_event): method case_rendering_context (line 396) | def case_rendering_context(self): method get_template_renderer (line 408) | def get_template_renderer(self, recipient): method get_two_way_entry_or_phone_number (line 418) | def get_two_way_entry_or_phone_number(cls, recipient, try_usercase=Tru... method get_cleaned_message (line 453) | def get_cleaned_message(message_dict, language_code): method get_default_lang (line 457) | def get_default_lang(self, domain): method get_translation_from_message_dict (line 460) | def get_translation_from_message_dict(self, domain_obj, message_dict, ... method send (line 500) | def send(self, recipient, logged_event, phone_entry=None): method get_sms_message_metadata (line 507) | def get_sms_message_metadata(self, logged_subevent): method send_sms_message (line 521) | def send_sms_message(self, domain, recipient, phone_entry_or_number, m... class SurveyContent (line 535) | class SurveyContent(Content): class Meta (line 546) | class Meta: method get_critical_section (line 549) | def get_critical_section(self, recipient): method get_memoized_app_module_form (line 556) | def get_memoized_app_module_form(self, domain): method start_smsforms_session (line 566) | def start_smsforms_session(self, domain, recipient, case_id, phone_ent... class Broadcast (line 619) | class Broadcast(models.Model): class Meta (line 629) | class Meta(object): method soft_delete (line 632) | def soft_delete(self): method domain_has_broadcasts (line 636) | def domain_has_broadcasts(cls, domain): FILE: corehq/messaging/scheduling/models/alert_schedule.py class AlertSchedule (line 11) | class AlertSchedule(Schedule): class Meta (line 13) | class Meta: method memoized_events (line 24) | def memoized_events(self): method set_first_event_due_timestamp (line 31) | def set_first_event_due_timestamp(self, instance, start_date=None): method set_next_event_due_timestamp (line 35) | def set_next_event_due_timestamp(self, instance): method get_current_event_content (line 39) | def get_current_event_content(self, instance): method delete_related_events (line 43) | def delete_related_events(self): method total_iterations_complete (line 49) | def total_iterations_complete(self, instance): method create_simple_alert (line 54) | def create_simple_alert(cls, domain, content, extra_options=None): method set_simple_alert (line 59) | def set_simple_alert(self, content, extra_options=None): method create_custom_alert (line 79) | def create_custom_alert(cls, domain, event_and_content_objects, extra_... method set_custom_alert (line 84) | def set_custom_alert(self, event_and_content_objects, extra_options=No... class AlertEvent (line 113) | class AlertEvent(Event): class ImmediateBroadcast (line 118) | class ImmediateBroadcast(Broadcast): class Meta (line 121) | class Meta: method soft_delete (line 130) | def soft_delete(self): FILE: corehq/messaging/scheduling/models/content.py class SMSContent (line 43) | class SMSContent(Content): method render_message (line 46) | def render_message(self, message, recipient, logged_subevent): method send (line 58) | def send(self, recipient, logged_event, phone_entry=None): class EmailContent (line 82) | class EmailContent(Content): method render_subject_and_message (line 89) | def render_subject_and_message(self, subject, message, html_message, r... method send (line 93) | def send(self, recipient, logged_event, phone_entry=None): method get_recipient_email (line 188) | def get_recipient_email(self, recipient): class SMSSurveyContent (line 201) | class SMSSurveyContent(SurveyContent): method phone_has_opted_out (line 203) | def phone_has_opted_out(self, phone_entry_or_number): method send (line 211) | def send(self, recipient, logged_event, phone_entry=None): class IVRSurveyContent (line 283) | class IVRSurveyContent(Content): method send (line 314) | def send(self, recipient, logged_event, phone_entry=None): class SMSCallbackContent (line 318) | class SMSCallbackContent(Content): method send (line 345) | def send(self, recipient, logged_event, phone_entry=None): class CustomContent (line 349) | class CustomContent(Content): method get_list_of_messages (line 355) | def get_list_of_messages(self, recipient): method send (line 375) | def send(self, recipient, logged_event, phone_entry=None): class FCMNotificationContent (line 400) | class FCMNotificationContent(Content): method render_subject_and_message (line 418) | def render_subject_and_message(self, subject, message, recipient): method build_fcm_data_field (line 422) | def build_fcm_data_field(self, recipient): method send (line 433) | def send(self, recipient, logged_event, phone_entry=None): method get_recipient_devices_fcm_tokens (line 442) | def get_recipient_devices_fcm_tokens(self, recipient): function _meta_property (line 449) | def _meta_property(name): class EmailImage (line 455) | class EmailImage(object): method __init__ (line 465) | def __init__(self, meta): method get (line 469) | def get(cls, domain, pk): method get_by_key (line 473) | def get_by_key(cls, domain, key): method get_by_keys (line 477) | def get_by_keys(cls, keys, domain=None): method meta_query (line 486) | def meta_query(domain): method db_meta_query (line 495) | def db_meta_query(db): method get_all (line 504) | def get_all(cls, domain=None): method get_all_blob_ids (line 513) | def get_all_blob_ids(cls): method get_total_size (line 520) | def get_total_size(cls, domain): method save_blob (line 524) | def save_blob(cls, file_obj, domain, filename, content_type, delete_af... method get_blob (line 536) | def get_blob(self): method bulk_delete (line 545) | def bulk_delete(cls, keys): method delete (line 548) | def delete(self): method get_url (line 551) | def get_url(self): class ConnectMessageContent (line 557) | class ConnectMessageContent(Content): method send (line 560) | def send(self, recipient, logged_event, phone_entry=None): class ConnectMessageSurveyContent (line 587) | class ConnectMessageSurveyContent(SurveyContent): method send (line 589) | def send(self, recipient, logged_event, phone_entry=None): FILE: corehq/messaging/scheduling/models/migration.py class MigratedReminder (line 4) | class MigratedReminder(models.Model): FILE: corehq/messaging/scheduling/models/timed_schedule.py class TimedSchedule (line 21) | class TimedSchedule(Schedule): class Meta (line 56) | class Meta: method get_schedule_revision (line 65) | def get_schedule_revision(self, case=None): method memoized_events (line 88) | def memoized_events(self): method event_set (line 96) | def event_set(self): method is_monthly (line 107) | def is_monthly(self): method get_weekdays (line 116) | def get_weekdays(self): method set_first_event_due_timestamp (line 126) | def set_first_event_due_timestamp(self, instance, start_date=None): method get_start_date_with_start_offsets (line 165) | def get_start_date_with_start_offsets(self, instance): method get_case_or_none (line 178) | def get_case_or_none(self, instance): method get_local_next_event_due_timestamp (line 186) | def get_local_next_event_due_timestamp(self, instance): method get_local_next_event_due_timestamp_for_monthly_schedule (line 203) | def get_local_next_event_due_timestamp_for_monthly_schedule(self, inst... method set_next_event_due_timestamp (line 246) | def set_next_event_due_timestamp(self, instance): method get_current_event_content (line 259) | def get_current_event_content(self, instance): method total_iterations_complete (line 263) | def total_iterations_complete(self, instance): method delete_related_events (line 269) | def delete_related_events(self): method get_event_type_from_model_event (line 275) | def get_event_type_from_model_event(self, model_event): method create_event_from_model_event (line 285) | def create_event_from_model_event(self, model_event): method check_positive_repeat_every (line 305) | def check_positive_repeat_every(self, repeat_every): method create_simple_daily_schedule (line 318) | def create_simple_daily_schedule(cls, domain, model_event, content, to... method set_simple_daily_schedule (line 326) | def set_simple_daily_schedule(self, model_event, content, total_iterat... method create_custom_daily_schedule (line 352) | def create_custom_daily_schedule(cls, domain, event_and_content_object... method set_custom_daily_schedule (line 360) | def set_custom_daily_schedule(self, event_and_content_objects, total_i... method validate_day_of_week (line 419) | def validate_day_of_week(self, day): method create_simple_weekly_schedule (line 424) | def create_simple_weekly_schedule(cls, domain, model_event, content, d... method set_simple_weekly_schedule (line 431) | def set_simple_weekly_schedule(self, model_event, content, days_of_wee... method create_simple_monthly_schedule (line 486) | def create_simple_monthly_schedule(cls, domain, model_event, days, con... method set_simple_monthly_schedule (line 493) | def set_simple_monthly_schedule(self, model_event, days, content, tota... method references_parent_case (line 530) | def references_parent_case(self): class AbstractTimedEvent (line 541) | class AbstractTimedEvent(Event): class Meta (line 542) | class Meta(object): method get_time (line 548) | def get_time(self, case=None): method get_scheduling_info (line 561) | def get_scheduling_info(self, case=None): class TimedEvent (line 565) | class TimedEvent(AbstractTimedEvent): method get_time (line 568) | def get_time(self, case=None): method get_scheduling_info (line 571) | def get_scheduling_info(self, case=None): class RandomTimedEvent (line 575) | class RandomTimedEvent(AbstractTimedEvent): method get_time (line 586) | def get_time(self, case=None): method get_scheduling_info (line 595) | def get_scheduling_info(self, case=None): class CasePropertyTimedEvent (line 599) | class CasePropertyTimedEvent(AbstractTimedEvent): method get_time (line 606) | def get_time(self, case=None): method get_scheduling_info (line 623) | def get_scheduling_info(self, case=None): class ScheduledBroadcast (line 633) | class ScheduledBroadcast(Broadcast): class Meta (line 637) | class Meta: method soft_delete (line 646) | def soft_delete(self): FILE: corehq/messaging/scheduling/scheduling_partitioned/dbaccessors.py function _validate_class (line 12) | def _validate_class(obj, cls): function _validate_uuid (line 20) | def _validate_uuid(value): function get_alert_schedule_instance (line 24) | def get_alert_schedule_instance(schedule_instance_id): function get_timed_schedule_instance (line 31) | def get_timed_schedule_instance(schedule_instance_id): function save_alert_schedule_instance (line 38) | def save_alert_schedule_instance(instance): function save_timed_schedule_instance (line 46) | def save_timed_schedule_instance(instance): function delete_alert_schedule_instance (line 54) | def delete_alert_schedule_instance(instance): function delete_timed_schedule_instance (line 62) | def delete_timed_schedule_instance(instance): function get_count_of_active_schedule_instances_due (line 70) | def get_count_of_active_schedule_instances_due(domain, due_before): function get_active_schedule_instance_ids (line 93) | def get_active_schedule_instance_ids(cls, due_before, due_after=None): function get_active_case_schedule_instance_ids (line 121) | def get_active_case_schedule_instance_ids(cls, due_before, due_after=None): function _paginate_query_across_partitioned_databases (line 148) | def _paginate_query_across_partitioned_databases(model_class, q_expressi... function _paginate_query (line 173) | def _paginate_query(db_name, model_class, q_expression, load_source, que... function get_alert_schedule_instances_for_schedule (line 223) | def get_alert_schedule_instances_for_schedule(schedule): function get_timed_schedule_instances_for_schedule (line 235) | def get_timed_schedule_instances_for_schedule(schedule): function get_case_alert_schedule_instances_for_schedule_id (line 247) | def get_case_alert_schedule_instances_for_schedule_id(case_id, schedule_... function get_case_timed_schedule_instances_for_schedule_id (line 255) | def get_case_timed_schedule_instances_for_schedule_id(case_id, schedule_... function get_case_alert_schedule_instances_for_schedule (line 263) | def get_case_alert_schedule_instances_for_schedule(case_id, schedule): function get_case_timed_schedule_instances_for_schedule (line 270) | def get_case_timed_schedule_instances_for_schedule(case_id, schedule): function get_case_schedule_instance (line 277) | def get_case_schedule_instance(cls, case_id, schedule_instance_id): function save_case_schedule_instance (line 290) | def save_case_schedule_instance(instance): function delete_case_schedule_instance (line 301) | def delete_case_schedule_instance(instance): function delete_alert_schedule_instances_for_schedule (line 311) | def delete_alert_schedule_instances_for_schedule(cls, schedule_uuid): function delete_timed_schedule_instances_for_schedule (line 326) | def delete_timed_schedule_instances_for_schedule(cls, schedule_uuid): function delete_schedule_instances_by_case_id (line 341) | def delete_schedule_instances_by_case_id(domain, case_id): FILE: corehq/messaging/scheduling/scheduling_partitioned/migrations/0001_initial.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/scheduling_partitioned/migrations/0002_case_schedule_instances.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/scheduling_partitioned/migrations/0003_add_last_reset_case_property_value.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/scheduling_partitioned/migrations/0004_case_schedule_instance_unique_together.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/scheduling_partitioned/migrations/0005_timed_schedule_instance_schedule_revision.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/scheduling_partitioned/migrations/0006_unique_indexes.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/scheduling_partitioned/migrations/0007_index_cleanup.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/scheduling_partitioned/migrations/0008_track_attempts.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/scheduling_partitioned/migrations/0009_rename_alertscheduleinstance_active_next_event_due_scheduling__active_c8422f_idx_and_more.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/messaging/scheduling/scheduling_partitioned/models.py class ScheduleInstance (line 42) | class ScheduleInstance(PartitionedModel): class Meta (line 61) | class Meta(object): method get_today_for_recipient (line 69) | def get_today_for_recipient(self, schedule): method recipient (line 74) | def recipient(self): method recipient_is_an_individual_contact (line 131) | def recipient_is_an_individual_contact(recipient): method domain_timezone (line 140) | def domain_timezone(self): method get_timezone (line 146) | def get_timezone(self, schedule): method create_for_recipient (line 164) | def create_for_recipient(cls, schedule, recipient_type, recipient_id, ... method expand_group (line 186) | def expand_group(group): method expand_location_ids (line 194) | def expand_location_ids(domain, location_ids): method _expand_recipient (line 209) | def _expand_recipient(self, recipient): method convert_to_set (line 248) | def convert_to_set(self, value): method _get_filter_value (line 254) | def _get_filter_value(self, filter_value_or_property_name): method _passes_user_data_filter (line 261) | def _passes_user_data_filter(self, contact): method expand_recipients (line 287) | def expand_recipients(self, handle_filtered_recipient=None): method get_content_send_lock (line 304) | def get_content_send_lock(self, recipient): method send_current_event_content_to_recipients (line 326) | def send_current_event_content_to_recipients(self): method is_stale (line 392) | def is_stale(self): method handle_current_event (line 395) | def handle_current_event(self): method schedule (line 405) | def schedule(self): method schedule (line 409) | def schedule(self, value): method memoized_schedule (line 414) | def memoized_schedule(self): method additional_deactivation_condition_reached (line 421) | def additional_deactivation_condition_reached(self): method should_be_active (line 430) | def should_be_active(self): method check_active_flag_against_schedule (line 433) | def check_active_flag_against_schedule(self): class AbstractAlertScheduleInstance (line 455) | class AbstractAlertScheduleInstance(ScheduleInstance): class Meta (line 458) | class Meta(ScheduleInstance.Meta): method schedule (line 462) | def schedule(self): method schedule (line 466) | def schedule(self, value): method copy_for_recipient (line 473) | def copy_for_recipient(instance, recipient_type, recipient_id): method reset_schedule (line 493) | def reset_schedule(self, schedule=None): class AbstractTimedScheduleInstance (line 505) | class AbstractTimedScheduleInstance(ScheduleInstance): class Meta (line 510) | class Meta(ScheduleInstance.Meta): method schedule (line 514) | def schedule(self): method schedule (line 518) | def schedule(self, value): method recalculate_schedule (line 524) | def recalculate_schedule(self, schedule=None, new_start_date=None): class AlertScheduleInstance (line 543) | class AlertScheduleInstance(AbstractAlertScheduleInstance): class Meta (line 546) | class Meta(AbstractAlertScheduleInstance.Meta): class TimedScheduleInstance (line 554) | class TimedScheduleInstance(AbstractTimedScheduleInstance): class Meta (line 557) | class Meta(AbstractTimedScheduleInstance.Meta): class EmailAddressRecipient (line 566) | class EmailAddressRecipient(object): method doc_type (line 571) | def doc_type(self): method get_id (line 575) | def get_id(self): method get_email (line 578) | def get_email(self): method get_language_code (line 581) | def get_language_code(self): method get_time_zone (line 584) | def get_time_zone(self): class CaseScheduleInstanceMixin (line 588) | class CaseScheduleInstanceMixin(object): method case (line 602) | def case(self): method case_owner (line 610) | def case_owner(self): method additional_deactivation_condition_reached (line 616) | def additional_deactivation_condition_reached(self): method recipient (line 648) | def recipient(self): class CaseAlertScheduleInstance (line 687) | class CaseAlertScheduleInstance(CaseScheduleInstanceMixin, AbstractAlert... class Meta (line 698) | class Meta(AbstractAlertScheduleInstance.Meta): class CaseTimedScheduleInstance (line 706) | class CaseTimedScheduleInstance(CaseScheduleInstanceMixin, AbstractTimed... class Meta (line 717) | class Meta(AbstractTimedScheduleInstance.Meta): method additional_deactivation_condition_reached (line 724) | def additional_deactivation_condition_reached(self): FILE: corehq/messaging/scheduling/scheduling_partitioned/tests/test_access_restricted.py class TestAccessRestricted (line 6) | class TestAccessRestricted(TestCase): method test_access_restricted (line 8) | def test_access_restricted(self): FILE: corehq/messaging/scheduling/scheduling_partitioned/tests/test_dbaccessors_both.py class SchedulingDBAccessorsTest (line 16) | class SchedulingDBAccessorsTest(TestCase): method create_case_alert_schedule_instance (line 21) | def create_case_alert_schedule_instance(self, domain, case_id): method create_case_timed_schedule_instance (line 36) | def create_case_timed_schedule_instance(self, domain, case_id): method get_case_schedule_instances_for_domain (line 52) | def get_case_schedule_instances_for_domain(self, domain): method test_delete_schedule_instances_for_cases (line 57) | def test_delete_schedule_instances_for_cases(self): FILE: corehq/messaging/scheduling/scheduling_partitioned/tests/test_dbaccessors_non_partitioned.py class BaseSchedulingNontPartitionedDBAccessorsTest (line 31) | class BaseSchedulingNontPartitionedDBAccessorsTest(TestCase): method setUpClass (line 34) | def setUpClass(cls): method make_alert_schedule_instance (line 40) | def make_alert_schedule_instance(cls, schedule_instance_id=None, sched... method make_timed_schedule_instance (line 54) | def make_timed_schedule_instance(cls, schedule_instance_id=None, sched... class TestSchedulingNonPartitionedDBAccessorsGetAndSave (line 69) | class TestSchedulingNonPartitionedDBAccessorsGetAndSave(BaseSchedulingNo... method tearDown (line 71) | def tearDown(self): method test_save_alert_schedule_instance (line 75) | def test_save_alert_schedule_instance(self): method test_save_timed_schedule_instance (line 83) | def test_save_timed_schedule_instance(self): method test_get_alert_schedule_instance (line 91) | def test_get_alert_schedule_instance(self): method test_get_timed_schedule_instance (line 102) | def test_get_timed_schedule_instance(self): class TestSchedulingNonPartitionedDBAccessorsDeleteAndFilter (line 114) | class TestSchedulingNonPartitionedDBAccessorsDeleteAndFilter(BaseSchedul... method setUpClass (line 117) | def setUpClass(cls): method setUp (line 128) | def setUp(self): method tearDown (line 149) | def tearDown(self): method test_delete_alert_schedule_instance (line 153) | def test_delete_alert_schedule_instance(self): method test_delete_timed_schedule_instance (line 164) | def test_delete_timed_schedule_instance(self): method test_get_active_alert_schedule_instance_ids (line 175) | def test_get_active_alert_schedule_instance_ids(self): method test_get_active_timed_schedule_instance_ids (line 195) | def test_get_active_timed_schedule_instance_ids(self): method test_get_alert_schedule_instances_for_schedule (line 215) | def test_get_alert_schedule_instances_for_schedule(self): method test_get_timed_schedule_instances_for_schedule (line 221) | def test_get_timed_schedule_instances_for_schedule(self): FILE: corehq/messaging/scheduling/scheduling_partitioned/tests/test_dbaccessors_partitioned.py class BaseSchedulingPartitionedDBAccessorsTest (line 31) | class BaseSchedulingPartitionedDBAccessorsTest(DefaultShardingTestConfig... method __test__ (line 34) | def __test__(cls): method setUpClass (line 38) | def setUpClass(cls): method make_alert_schedule_instance (line 43) | def make_alert_schedule_instance(cls, schedule_instance_id, schedule_i... method make_timed_schedule_instance (line 58) | def make_timed_schedule_instance(cls, schedule_instance_id, schedule_i... class TestSchedulingPartitionedDBAccessorsGetAndSave (line 73) | class TestSchedulingPartitionedDBAccessorsGetAndSave(BaseSchedulingParti... method setUpClass (line 76) | def setUpClass(cls): method tearDown (line 81) | def tearDown(self): method test_uuids_used (line 86) | def test_uuids_used(self): method test_save_alert_schedule_instance (line 90) | def test_save_alert_schedule_instance(self): method test_save_timed_schedule_instance (line 100) | def test_save_timed_schedule_instance(self): method test_get_alert_schedule_instance (line 110) | def test_get_alert_schedule_instance(self): method test_get_timed_schedule_instance (line 119) | def test_get_timed_schedule_instance(self): class TestSchedulingPartitionedDBAccessorsDeleteAndFilter (line 129) | class TestSchedulingPartitionedDBAccessorsDeleteAndFilter(BaseScheduling... method setUpClass (line 132) | def setUpClass(cls): method setUp (line 143) | def setUp(self): method tearDown (line 164) | def tearDown(self): method test_uuids_used (line 169) | def test_uuids_used(self): method test_delete_alert_schedule_instance (line 177) | def test_delete_alert_schedule_instance(self): method test_delete_timed_schedule_instance (line 192) | def test_delete_timed_schedule_instance(self): method test_get_active_alert_schedule_instance_ids (line 207) | def test_get_active_alert_schedule_instance_ids(self): method test_get_active_timed_schedule_instance_ids (line 231) | def test_get_active_timed_schedule_instance_ids(self): method test_get_alert_schedule_instances_for_schedule (line 255) | def test_get_alert_schedule_instances_for_schedule(self): method test_get_timed_schedule_instances_for_schedule (line 261) | def test_get_timed_schedule_instances_for_schedule(self): FILE: corehq/messaging/scheduling/static/scheduling/js/conditional_alert_main.js function BasicInformationTab (line 15) | function BasicInformationTab(name) { FILE: corehq/messaging/scheduling/tasks.py class ScheduleInstanceRefresher (line 49) | class ScheduleInstanceRefresher(object): method __init__ (line 51) | def __init__(self, schedule, new_recipients, existing_instances): method _get_any_value_or_none (line 64) | def _get_any_value_or_none(from_dict): method _recipient_instance_dict (line 71) | def _recipient_instance_dict(instances): method _get_reset_case_property_value (line 78) | def _get_reset_case_property_value(case, action_definition): method _convert_to_tuple_of_tuples (line 88) | def _convert_to_tuple_of_tuples(list_of_lists): method create_new_instance_for_recipient (line 92) | def create_new_instance_for_recipient(self, recipient_type, recipient_... method handle_existing_instance (line 102) | def handle_existing_instance(self, instance): method delete_instance (line 115) | def delete_instance(instance): method save_instance (line 126) | def save_instance(instance): method refresh (line 136) | def refresh(self): class AlertScheduleInstanceRefresher (line 166) | class AlertScheduleInstanceRefresher(ScheduleInstanceRefresher): method create_new_instance_for_recipient (line 168) | def create_new_instance_for_recipient(self, recipient_type, recipient_... method handle_existing_instance (line 179) | def handle_existing_instance(self, instance): class TimedScheduleInstanceRefresher (line 183) | class TimedScheduleInstanceRefresher(ScheduleInstanceRefresher): method __init__ (line 185) | def __init__(self, schedule, new_recipients, existing_instances, start... method create_new_instance_for_recipient (line 190) | def create_new_instance_for_recipient(self, recipient_type, recipient_... method handle_existing_instance (line 200) | def handle_existing_instance(self, instance): class CaseAlertScheduleInstanceRefresher (line 212) | class CaseAlertScheduleInstanceRefresher(ScheduleInstanceRefresher): method __init__ (line 214) | def __init__(self, case, action_definition, rule, schedule, new_recipi... method create_new_instance_for_recipient (line 221) | def create_new_instance_for_recipient(self, recipient_type, recipient_... method handle_existing_instance (line 241) | def handle_existing_instance(self, instance): class CaseTimedScheduleInstanceRefresher (line 252) | class CaseTimedScheduleInstanceRefresher(ScheduleInstanceRefresher): method __init__ (line 254) | def __init__(self, case, action_definition, rule, schedule, method create_new_instance_for_recipient (line 264) | def create_new_instance_for_recipient(self, recipient_type, recipient_... method handle_existing_instance (line 281) | def handle_existing_instance(self, instance): function refresh_alert_schedule_instances (line 300) | def refresh_alert_schedule_instances(schedule_id, recipients): function refresh_timed_schedule_instances (line 317) | def refresh_timed_schedule_instances(schedule_id, recipients, start_date... function delete_alert_schedule_instances (line 344) | def delete_alert_schedule_instances(self, schedule_id): function delete_timed_schedule_instances (line 364) | def delete_timed_schedule_instances(self, schedule_id): function delete_case_alert_schedule_instances (line 384) | def delete_case_alert_schedule_instances(self, schedule_id): function delete_case_timed_schedule_instances (line 403) | def delete_case_timed_schedule_instances(self, schedule_id): function handle_case_alert_schedule_instance_reset (line 414) | def handle_case_alert_schedule_instance_reset(instance, schedule, reset_... function refresh_case_alert_schedule_instances (line 423) | def refresh_case_alert_schedule_instances(case, schedule, action_definit... function refresh_case_timed_schedule_instances (line 442) | def refresh_case_timed_schedule_instances(case, schedule, action_definit... function _handle_schedule_instance (line 463) | def _handle_schedule_instance(instance, save_function): function update_broadcast_last_sent_timestamp (line 504) | def update_broadcast_last_sent_timestamp(broadcast_class, schedule_id): function handle_alert_schedule_instance (line 509) | def handle_alert_schedule_instance(schedule_instance_id, domain): function handle_timed_schedule_instance (line 522) | def handle_timed_schedule_instance(schedule_instance_id, domain): function handle_case_alert_schedule_instance (line 535) | def handle_case_alert_schedule_instance(case_id, schedule_instance_id, d... function handle_case_timed_schedule_instance (line 549) | def handle_case_timed_schedule_instance(case_id, schedule_instance_id, d... function delete_schedule_instances_for_cases (line 563) | def delete_schedule_instances_for_cases(domain, case_ids): function delete_unused_messaging_images (line 569) | def delete_unused_messaging_images(): FILE: corehq/messaging/scheduling/tests/test_bulk_conditional_alerts.py class TestBulkConditionalAlerts (line 36) | class TestBulkConditionalAlerts(TestCase): method setUpClass (line 52) | def setUpClass(cls): method setUp (line 64) | def setUp(self): method tearDown (line 129) | def tearDown(self): method _get_rule (line 139) | def _get_rule(self, type): method _assertPatternIn (line 142) | def _assertPatternIn(self, pattern, collection): method _assertAlertScheduleEventsEqual (line 145) | def _assertAlertScheduleEventsEqual(self, schedule1, schedule2): method _assertTimedScheduleEventsEqual (line 154) | def _assertTimedScheduleEventsEqual(self, schedule1, schedule2): method _assertContent (line 164) | def _assertContent(self, schedule, message): method _assertCustomContent (line 168) | def _assertCustomContent(self, schedule, messages): method _add_immediate_rule (line 174) | def _add_immediate_rule(self, content): method _add_daily_rule (line 178) | def _add_daily_rule(self, content): method _add_weekly_rule (line 186) | def _add_weekly_rule(self, content): method _add_monthly_rule (line 198) | def _add_monthly_rule(self, content): method _add_custom_immediate_rule (line 208) | def _add_custom_immediate_rule(self, content_list): method _add_custom_daily_rule (line 216) | def _add_custom_daily_rule(self, content_list): method _add_rule (line 228) | def _add_rule(self, alert_schedule_id=None, timed_schedule_id=None): method test_download (line 242) | def test_download(self, language_list_patch): method _upload (line 281) | def _upload(self, data, headers=None): method test_upload (line 299) | def test_upload(self, language_list_patch): method test_upload_custom_schedule (line 388) | def test_upload_custom_schedule(self, language_list_patch): method test_upload_custom_schedule_both_sheets (line 431) | def test_upload_custom_schedule_both_sheets(self, language_list_patch): method test_upload_custom_schedule_both_sheets_swap (line 470) | def test_upload_custom_schedule_both_sheets_swap(self, language_list_p... method test_upload_custom_schedule_message_count_mismatch (line 531) | def test_upload_custom_schedule_message_count_mismatch(self, language_... method test_upload_custom_schedule_name_mismatch (line 556) | def test_upload_custom_schedule_name_mismatch(self, language_list_patch): method test_upload_blank_content (line 576) | def test_upload_blank_content(self, language_list_patch): method test_partial_upload (line 616) | def test_partial_upload(self, language_list_patch): method test_upload_missing_id_column (line 655) | def test_upload_missing_id_column(self, language_list_patch): method test_upload_blank_translated_message_should_fail (line 684) | def test_upload_blank_translated_message_should_fail(self, language_li... method test_upload_blank_untranslated_message_should_fail (line 714) | def test_upload_blank_untranslated_message_should_fail(self, language_... FILE: corehq/messaging/scheduling/tests/test_content.py function custom_content_handler (line 31) | def custom_content_handler(recipient, schedule_instance): class TestContent (line 35) | class TestContent(TestCase): method setUpClass (line 38) | def setUpClass(cls): method tearDownClass (line 49) | def tearDownClass(cls): method test_custom_content (line 55) | def test_custom_content(self): method test_get_translation_empty_message (line 66) | def test_get_translation_empty_message(self): method test_get_translation_general_default (line 80) | def test_get_translation_general_default(self): method test_get_translation_domain_default (line 96) | def test_get_translation_domain_default(self): method test_get_translation_schedule_default (line 113) | def test_get_translation_schedule_default(self): method test_get_translation_user_preferred (line 133) | def test_get_translation_user_preferred(self): method test_sms_language_fallback (line 154) | def test_sms_language_fallback(self): method test_email_validation_valid (line 215) | def test_email_validation_valid(self): method test_email_validation_empty_email (line 219) | def test_email_validation_empty_email(self): method test_email_validation_no_email (line 225) | def test_email_validation_no_email(self): method test_email_validation_invalid_email (line 231) | def test_email_validation_invalid_email(self): class Content (line 239) | class Content(AbstractContent): class Schedule (line 244) | class Schedule(AbstractSchedule): class MockRecipient (line 248) | class MockRecipient: method __init__ (line 249) | def __init__(self, email_address): method get_email (line 252) | def get_email(self): FILE: corehq/messaging/scheduling/tests/test_recipients.py class GetFilterValueTest (line 53) | class GetFilterValueTest(TestCase): method setUpClass (line 57) | def setUpClass(cls): method tearDownClass (line 62) | def tearDownClass(cls): method testNoBracesJustReturnValue (line 66) | def testNoBracesJustReturnValue(self): method testBracesReturnProperty (line 71) | def testBracesReturnProperty(self): method testIgnoreSpacesBracesReturnProperty (line 77) | def testIgnoreSpacesBracesReturnProperty(self): class PassesUserDataFilterTest (line 84) | class PassesUserDataFilterTest(TestCase): method setUpClass (line 89) | def setUpClass(cls): method tearDownClass (line 99) | def tearDownClass(cls): method test_passes_with_user_data_filters_if_no_user_data_filter (line 103) | def test_passes_with_user_data_filters_if_no_user_data_filter(self): method test_passes_with_user_data_filter (line 108) | def test_passes_with_user_data_filter(self): method test_fails_with_user_data_filter_because_value_does_not_match (line 116) | def test_fails_with_user_data_filter_because_value_does_not_match(self): method test_fails_with_user_data_filter_because_one_value_does_not_match (line 125) | def test_fails_with_user_data_filter_because_one_value_does_not_match(... method test_passes_with_user_case_filter (line 134) | def test_passes_with_user_case_filter(self): method test_empty_string_matches_unset_property (line 143) | def test_empty_string_matches_unset_property(self): method test_empty_string_matches_unset_property_user_case (line 150) | def test_empty_string_matches_unset_property_user_case(self): method test_fails_if_filter_on_case_but_no_case (line 157) | def test_fails_if_filter_on_case_but_no_case(self): class SchedulingRecipientTest (line 168) | class SchedulingRecipientTest(TestCase): method setUpClass (line 172) | def setUpClass(cls): method tearDownClass (line 260) | def tearDownClass(cls): method tearDown (line 264) | def tearDown(self): method user_ids (line 269) | def user_ids(self, users): method _create_schedule (line 272) | def _create_schedule(self, method test_specific_case_recipient (line 289) | def test_specific_case_recipient(self): method test_specific_mobile_worker_recipient (line 305) | def test_specific_mobile_worker_recipient(self): method test_specific_web_user_recipient (line 328) | def test_specific_web_user_recipient(self): method test_specific_case_group_recipient (line 351) | def test_specific_case_group_recipient(self): method test_specific_group_recipient (line 367) | def test_specific_group_recipient(self): method test_specific_location_recipient (line 383) | def test_specific_location_recipient(self): method test_case_recipient (line 399) | def test_case_recipient(self): method test_owner_recipient (line 405) | def test_owner_recipient(self): method test_last_submitting_user_recipient (line 430) | def test_last_submitting_user_recipient(self): method test_parent_case_recipient (line 448) | def test_parent_case_recipient(self): method test_child_case_recipient (line 459) | def test_child_case_recipient(self): method test_host_case_owner_location (line 479) | def test_host_case_owner_location(self): method test_host_case_owner_location_parent (line 529) | def test_host_case_owner_location_parent(self): method test_expand_location_recipients_without_descendants (line 590) | def test_expand_location_recipients_without_descendants(self): method test_expand_location_recipients_with_descendants (line 615) | def test_expand_location_recipients_with_descendants(self): method test_expand_location_recipients_with_location_type_filter (line 629) | def test_expand_location_recipients_with_location_type_filter(self): method test_expand_location_recipients_secondary_does_not_match (line 646) | def test_expand_location_recipients_secondary_does_not_match(self): method test_expand_location_recipients_secondary_matches (line 661) | def test_expand_location_recipients_secondary_matches(self): method test_expand_group_recipients (line 675) | def test_expand_group_recipients(self): method test_mobile_worker_recipients_with_user_data_filter (line 688) | def test_mobile_worker_recipients_with_user_data_filter(self): method test_web_user_recipient_with_user_data_filter (line 712) | def test_web_user_recipient_with_user_data_filter(self): method test_case_group_recipient_with_user_data_filter (line 734) | def test_case_group_recipient_with_user_data_filter(self): method test_username_case_property_recipient (line 754) | def test_username_case_property_recipient(self): method test_user_id_case_property_recipient (line 799) | def test_user_id_case_property_recipient(self): method test_email_case_property_recipient (line 830) | def test_email_case_property_recipient(self): method create_usercase (line 863) | def create_usercase(self, user): method update_case_and_process_change (line 871) | def update_case_and_process_change(self, *args, **kwargs): method assertPhoneEntryCount (line 875) | def assertPhoneEntryCount(self, count, only_count_two_way=False): method assertTwoWayEntry (line 881) | def assertTwoWayEntry(self, entry, expected_phone_number): method test_one_way_numbers (line 886) | def test_one_way_numbers(self): method test_ignoring_entries (line 925) | def test_ignoring_entries(self): method test_two_way_numbers (line 946) | def test_two_way_numbers(self): method test_not_using_phone_entries (line 984) | def test_not_using_phone_entries(self): method test_phone_number_preference (line 1022) | def test_phone_number_preference(self): class ScheduleInstance (line 1042) | class ScheduleInstance(AbstractScheduleInstance): method __init__ (line 1044) | def __init__(self, *args, **kwargs): method schedule (line 1050) | def schedule(self): FILE: corehq/messaging/scheduling/tests/test_schedules.py class BaseScheduleTest (line 42) | class BaseScheduleTest(TestCase): method setUpClass (line 45) | def setUpClass(cls): method tearDownClass (line 54) | def tearDownClass(cls): method assertTimedScheduleInstance (line 58) | def assertTimedScheduleInstance(self, instance, current_event_num, sch... method assertRandomTimedScheduleInstance (line 70) | def assertRandomTimedScheduleInstance(self, instance, current_event_nu... method assertNumInstancesForSchedule (line 83) | def assertNumInstancesForSchedule(self, num): class TimedScheduleActiveFlagTest (line 90) | class TimedScheduleActiveFlagTest(BaseScheduleTest): method setUp (line 92) | def setUp(self): method tearDown (line 101) | def tearDown(self): method test_deactivate (line 106) | def test_deactivate(self, utcnow_patch, send_patch): method test_activate_without_moving_to_next_event (line 136) | def test_activate_without_moving_to_next_event(self, utcnow_patch, sen... method test_activate_with_moving_to_next_event (line 168) | def test_activate_with_moving_to_next_event(self, utcnow_patch, send_p... method test_activate_when_total_iterations_are_done (line 200) | def test_activate_when_total_iterations_are_done(self, utcnow_patch, s... class StopDateCasePropertyTest (line 238) | class StopDateCasePropertyTest(TestCase): method setUpClass (line 241) | def setUpClass(cls): method tearDownClass (line 248) | def tearDownClass(cls): method test_condition_reached_when_not_enabled (line 252) | def test_condition_reached_when_not_enabled(self): method test_condition_reached_when_case_property_not_a_date (line 269) | def test_condition_reached_when_case_property_not_a_date(self): method test_condition_reached_with_domain_timezone (line 298) | def test_condition_reached_with_domain_timezone(self): method test_condition_reached_with_utc_option (line 327) | def test_condition_reached_with_utc_option(self): method test_condition_reached_with_timezone_from_timestamp (line 359) | def test_condition_reached_with_timezone_from_timestamp(self): class DeleteScheduleInstancesTest (line 390) | class DeleteScheduleInstancesTest(BaseScheduleTest): method setUp (line 392) | def setUp(self): method tearDown (line 409) | def tearDown(self): method count (line 421) | def count(generator): method test_delete_alert_schedule_instances_for_schedule (line 424) | def test_delete_alert_schedule_instances_for_schedule(self): method test_delete_timed_schedule_instances_for_schedule (line 440) | def test_delete_timed_schedule_instances_for_schedule(self): class DailyScheduleTest (line 460) | class DailyScheduleTest(BaseScheduleTest): method setUpClass (line 463) | def setUpClass(cls): method tearDownClass (line 473) | def tearDownClass(cls): method tearDown (line 477) | def tearDown(self): method test_schedule_start_to_finish (line 481) | def test_schedule_start_to_finish(self, utcnow_patch, send_patch): method test_recalculate_schedule (line 515) | def test_recalculate_schedule(self, utcnow_patch, send_patch): method test_keep_in_sync_with_recipients (line 559) | def test_keep_in_sync_with_recipients(self, utcnow_patch, send_patch): class CustomDailyScheduleTest (line 611) | class CustomDailyScheduleTest(BaseScheduleTest): method setUpClass (line 614) | def setUpClass(cls): method tearDownClass (line 627) | def tearDownClass(cls): method tearDown (line 631) | def tearDown(self): method test_schedule_start_to_finish (line 635) | def test_schedule_start_to_finish(self, utcnow_patch, send_patch): class RandomTimedEventTest (line 691) | class RandomTimedEventTest(BaseScheduleTest): method setUpClass (line 694) | def setUpClass(cls): method tearDownClass (line 704) | def tearDownClass(cls): method tearDown (line 708) | def tearDown(self): method test_schedule_start_to_finish (line 712) | def test_schedule_start_to_finish(self, utcnow_patch, send_patch): class RandomTimedEventSpanningTwoDaysTest (line 750) | class RandomTimedEventSpanningTwoDaysTest(BaseScheduleTest): method setUpClass (line 753) | def setUpClass(cls): method tearDownClass (line 763) | def tearDownClass(cls): method tearDown (line 767) | def tearDown(self): method test_schedule (line 771) | def test_schedule(self, utcnow_patch, send_patch): class StartDayOfWeekTest (line 791) | class StartDayOfWeekTest(BaseScheduleTest): method setUpClass (line 794) | def setUpClass(cls): method tearDownClass (line 805) | def tearDownClass(cls): method tearDown (line 809) | def tearDown(self): method test_setting_first_event_for_next_monday (line 813) | def test_setting_first_event_for_next_monday(self, utcnow_patch, send_... method test_setting_first_event_using_explicit_start_date (line 826) | def test_setting_first_event_using_explicit_start_date(self, utcnow_pa... method test_setting_first_event_for_today_when_time_has_passed (line 843) | def test_setting_first_event_for_today_when_time_has_passed(self, utcn... method test_setting_first_event_for_today_when_time_has_not_yet_passed (line 856) | def test_setting_first_event_for_today_when_time_has_not_yet_passed(se... method test_setting_first_event_for_past_schedule (line 869) | def test_setting_first_event_for_past_schedule(self, utcnow_patch, sen... method test_schedule_start_to_finish (line 886) | def test_schedule_start_to_finish(self, utcnow_patch, send_patch): class StartDayOfWeekWithStartOffsetTest (line 920) | class StartDayOfWeekWithStartOffsetTest(BaseScheduleTest): method setUpClass (line 923) | def setUpClass(cls): method tearDownClass (line 935) | def tearDownClass(cls): method tearDown (line 939) | def tearDown(self): method test_schedule_start_to_finish (line 943) | def test_schedule_start_to_finish(self, utcnow_patch, send_patch): class MonthlyScheduleTest (line 982) | class MonthlyScheduleTest(TestCase): method setUpClass (line 985) | def setUpClass(cls): method tearDownClass (line 1000) | def tearDownClass(cls): method tearDown (line 1005) | def tearDown(self): method assertTimedScheduleInstance (line 1009) | def assertTimedScheduleInstance(self, instance, current_event_num, sch... method assertNumInstancesForSchedule (line 1021) | def assertNumInstancesForSchedule(self, num): method test_schedule_start_to_finish (line 1024) | def test_schedule_start_to_finish(self, utcnow_patch, send_patch): method test_recalculate_schedule (line 1071) | def test_recalculate_schedule(self, utcnow_patch, send_patch): class EndOfMonthScheduleTest (line 1116) | class EndOfMonthScheduleTest(TestCase): method setUpClass (line 1119) | def setUpClass(cls): method tearDownClass (line 1134) | def tearDownClass(cls): method tearDown (line 1139) | def tearDown(self): method assertTimedScheduleInstance (line 1143) | def assertTimedScheduleInstance(self, instance, current_event_num, sch... method assertNumInstancesForSchedule (line 1155) | def assertNumInstancesForSchedule(self, num): method test_schedule_start_to_finish (line 1158) | def test_schedule_start_to_finish(self, utcnow_patch, send_patch): class DailyRepeatEveryTest (line 1193) | class DailyRepeatEveryTest(BaseScheduleTest): method setUpClass (line 1196) | def setUpClass(cls): method tearDownClass (line 1208) | def tearDownClass(cls): method tearDown (line 1212) | def tearDown(self): method test_schedule_start_to_finish (line 1216) | def test_schedule_start_to_finish(self, utcnow_patch, send_patch): class WeeklyRepeatEveryTest (line 1263) | class WeeklyRepeatEveryTest(BaseScheduleTest): method setUpClass (line 1266) | def setUpClass(cls): method tearDownClass (line 1280) | def tearDownClass(cls): method tearDown (line 1284) | def tearDown(self): method test_schedule_start_to_finish (line 1288) | def test_schedule_start_to_finish(self, utcnow_patch, send_patch): class MonthlyRepeatEveryTest (line 1362) | class MonthlyRepeatEveryTest(BaseScheduleTest): method setUpClass (line 1365) | def setUpClass(cls): method tearDownClass (line 1378) | def tearDownClass(cls): method tearDown (line 1382) | def tearDown(self): method test_schedule_start_to_finish (line 1386) | def test_schedule_start_to_finish(self, utcnow_patch, send_patch): class AlertTest (line 1442) | class AlertTest(TestCase): method setUp (line 1444) | def setUp(self): method tearDown (line 1453) | def tearDown(self): method assertAlertScheduleInstance (line 1459) | def assertAlertScheduleInstance(self, instance, current_event_num, sch... method assertNumInstancesForSchedule (line 1470) | def assertNumInstancesForSchedule(self, num): method test_alert (line 1473) | def test_alert(self, utcnow_patch, send_patch): method test_stale_alert (line 1498) | def test_stale_alert(self, utcnow_patch, send_patch): method test_inactive_schedule (line 1517) | def test_inactive_schedule(self, utcnow_patch, send_patch): method test_deactivating_schedule (line 1546) | def test_deactivating_schedule(self, utcnow_patch, send_patch): method test_multi_event_alert (line 1566) | def test_multi_event_alert(self, utcnow_patch, send_patch): class TestParentCaseReferences (line 1605) | class TestParentCaseReferences(BaseScheduleTest): method test_alert_event (line 1607) | def test_alert_event(self): method test_timed_event (line 1612) | def test_timed_event(self): method test_case_property_timed_event (line 1621) | def test_case_property_timed_event(self): FILE: corehq/messaging/scheduling/tests/test_templating.py class TemplatingTestCase (line 11) | class TemplatingTestCase(TestCase): method setUpClass (line 14) | def setUpClass(cls): method tearDownClass (line 62) | def tearDownClass(cls): method create_child_case (line 71) | def create_child_case(self, owner=None, modified_by=None): method create_parent_case (line 78) | def create_parent_case(self, owner=None, modified_by=None): method test_case_template_params (line 84) | def test_case_template_params(self): method test_parent_case_template_params (line 122) | def test_parent_case_template_params(self): method test_host_case_template_params (line 151) | def test_host_case_template_params(self): method test_owner_template_params (line 180) | def test_owner_template_params(self): method test_modified_by_template_params (line 214) | def test_modified_by_template_params(self): FILE: corehq/messaging/scheduling/tests/test_util.py class TestMessagingModelLookups (line 14) | class TestMessagingModelLookups(TestCase): method test_domain_has_conditional_alerts (line 18) | def test_domain_has_conditional_alerts(self): method test_domain_has_scheduled_broadcasts (line 28) | def test_domain_has_scheduled_broadcasts(self): method test_domain_has_immediate_broadcasts (line 42) | def test_domain_has_immediate_broadcasts(self): FILE: corehq/messaging/scheduling/tests/test_views.py class MessagingImageUploadTest (line 12) | class MessagingImageUploadTest(TestCase): method test_delete_unused_messaging_images (line 13) | def test_delete_unused_messaging_images(self): FILE: corehq/messaging/scheduling/tests/util.py function delete_alert_schedules (line 6) | def delete_alert_schedules(domain): function delete_timed_schedules (line 13) | def delete_timed_schedules(domain): FILE: corehq/messaging/scheduling/util.py function utcnow (line 4) | def utcnow(): function domain_has_reminders (line 11) | def domain_has_reminders(domain): FILE: corehq/messaging/scheduling/view_helpers.py function get_conditional_alerts_queryset_by_domain (line 17) | def get_conditional_alerts_queryset_by_domain(domain, query_string=''): function get_conditional_alert_headers (line 29) | def get_conditional_alert_headers(domain): function get_conditional_alert_rows (line 38) | def get_conditional_alert_rows(domain): function upload_conditional_alert_workbook (line 64) | def upload_conditional_alert_workbook(domain, workbook): class ConditionalAlertUploader (line 70) | class ConditionalAlertUploader(object): method __init__ (line 73) | def __init__(self, domain): method event_is_relevant (line 80) | def event_is_relevant(cls, event): method get_worksheet_errors (line 88) | def get_worksheet_errors(self, worksheet): method upload (line 95) | def upload(self, workbook): method update_rule (line 191) | def update_rule(self, rule, rows): method update_rule_name (line 196) | def update_rule_name(self, rule, rows): method save_rule_messages (line 206) | def save_rule_messages(self, rule, rows): method update_message (line 252) | def update_message(self, message, row): method _save_immediate_schedule (line 258) | def _save_immediate_schedule(self, schedule, messages): method _save_daily_schedule (line 265) | def _save_daily_schedule(self, schedule, messages): method _save_weekly_schedule (line 278) | def _save_weekly_schedule(self, schedule, messages): method _save_monthly_schedule (line 292) | def _save_monthly_schedule(self, schedule, messages): method _save_custom_immediate_schedule (line 309) | def _save_custom_immediate_schedule(self, schedule, messages): method _save_custom_daily_schedule (line 317) | def _save_custom_daily_schedule(self, schedule, messages): class TranslatedConditionalAlertUploader (line 332) | class TranslatedConditionalAlertUploader(ConditionalAlertUploader): method event_is_relevant (line 336) | def event_is_relevant(cls, event): method update_message (line 343) | def update_message(self, message, row): class UntranslatedConditionalAlertUploader (line 354) | class UntranslatedConditionalAlertUploader(ConditionalAlertUploader): method event_is_relevant (line 358) | def event_is_relevant(cls, event): method update_message (line 365) | def update_message(self, message, row): FILE: corehq/messaging/scheduling/views.py function get_broadcast_edit_critical_section (line 97) | def get_broadcast_edit_critical_section(broadcast_type, broadcast_id): function get_conditional_alert_edit_critical_section (line 101) | def get_conditional_alert_edit_critical_section(rule_id): class MessagingDashboardView (line 105) | class MessagingDashboardView(BaseMessagingSectionView): method get_messaging_history_errors_url (line 110) | def get_messaging_history_errors_url(self, messaging_history_url): method page_context (line 126) | def page_context(self): method timezone (line 156) | def timezone(self): method domain_now (line 160) | def domain_now(self): method add_sms_status_info (line 163) | def add_sms_status_info(self, result): method add_reminder_status_info (line 188) | def add_reminder_status_info(self, result): method add_sms_count_info (line 192) | def add_sms_count_info(self, result, days): method add_event_count_info (line 225) | def add_event_count_info(self, result, days): method get_error_message (line 257) | def get_error_message(self, error_code): method add_error_count_info (line 265) | def add_error_count_info(self, result, days): method get_ajax_response (line 285) | def get_ajax_response(self): method get (line 297) | def get(self, request, *args, **kwargs): class BroadcastListView (line 304) | class BroadcastListView(BaseMessagingSectionView): method dispatch (line 316) | def dispatch(self, *args, **kwargs): method project_timezone (line 320) | def project_timezone(self): method _format_time (line 323) | def _format_time(self, time): method get_scheduled_ajax_response (line 330) | def get_scheduled_ajax_response(self): method _fmt_scheduled_broadcast (line 348) | def _fmt_scheduled_broadcast(self, broadcast): method get_immediate_ajax_response (line 358) | def get_immediate_ajax_response(self): method get_scheduled_broadcast (line 380) | def get_scheduled_broadcast(self, broadcast_id): method get_scheduled_broadcast_activate_ajax_response (line 386) | def get_scheduled_broadcast_activate_ajax_response(self, active_flag, ... method get_scheduled_broadcast_delete_ajax_response (line 406) | def get_scheduled_broadcast_delete_ajax_response(self, broadcast_id): method get (line 414) | def get(self, request, *args, **kwargs): method post (line 423) | def post(self, request, *args, **kwargs): class CreateScheduleView (line 438) | class CreateScheduleView(BaseMessagingSectionView, AsyncHandlerMixin): method dispatch (line 446) | def dispatch(self, *args, **kwargs): method parent_pages (line 450) | def parent_pages(self): method broadcast (line 459) | def broadcast(self): method schedule (line 463) | def schedule(self): method schedule_form (line 467) | def schedule_form(self): method page_context (line 476) | def page_context(self): method post (line 484) | def post(self, request, *args, **kwargs): class EditScheduleView (line 512) | class EditScheduleView(CreateScheduleView): method page_url (line 520) | def page_url(self): method broadcast_type (line 524) | def broadcast_type(self): method broadcast_class (line 528) | def broadcast_class(self): method broadcast_id (line 537) | def broadcast_id(self): method broadcast (line 541) | def broadcast(self): method schedule (line 553) | def schedule(self): method read_only_mode (line 557) | def read_only_mode(self): method dispatch (line 567) | def dispatch(self, request, *args, **kwargs): class ConditionalAlertBaseView (line 578) | class ConditionalAlertBaseView(BaseMessagingSectionView): method dispatch (line 580) | def dispatch(self, *args, **kwargs): method get_conditional_alerts_queryset (line 583) | def get_conditional_alerts_queryset(self, query_string=''): class ConditionalAlertListView (line 587) | class ConditionalAlertListView(ConditionalAlertBaseView): method limit_rule_restarts (line 618) | def limit_rule_restarts(self): method page_context (line 628) | def page_context(self): method schedule_is_editable (line 633) | def schedule_is_editable(self, schedule): method _format_rule_for_json (line 640) | def _format_rule_for_json(self, rule): method get_conditional_alerts_ajax_response (line 652) | def get_conditional_alerts_ajax_response(self, request): method get (line 668) | def get(self, request, *args, **kwargs): method get_rule (line 675) | def get_rule(self, rule_id): method get_activate_ajax_response (line 686) | def get_activate_ajax_response(self, active_flag, rule): method get_delete_ajax_response (line 723) | def get_delete_ajax_response(self, rule): method get_restart_ajax_response (line 730) | def get_restart_ajax_response(self, rule): method post (line 742) | def post(self, request, *args, **kwargs): class CreateConditionalAlertView (line 763) | class CreateConditionalAlertView(BaseMessagingSectionView, AsyncHandlerM... method help_text (line 771) | def help_text(self): method dispatch (line 777) | def dispatch(self, *args, **kwargs): method parent_pages (line 781) | def parent_pages(self): method page_context (line 790) | def page_context(self): method schedule_form (line 819) | def schedule_form(self): method schedule (line 837) | def schedule(self): method rule (line 841) | def rule(self): method basic_info_form (line 845) | def basic_info_form(self): method criteria_form (line 852) | def criteria_form(self): method post (line 863) | def post(self, request, *args, **kwargs): class EditConditionalAlertView (line 911) | class EditConditionalAlertView(CreateConditionalAlertView): method page_url (line 916) | def page_url(self): method help_text (line 920) | def help_text(self): method rule_id (line 928) | def rule_id(self): method read_only_mode (line 932) | def read_only_mode(self): method rule (line 954) | def rule(self): method schedule (line 966) | def schedule(self): method dispatch (line 969) | def dispatch(self, request, *args, **kwargs): class DownloadConditionalAlertView (line 1016) | class DownloadConditionalAlertView(ConditionalAlertBaseView): method dispatch (line 1020) | def dispatch(self, *args, **kwargs): method get (line 1023) | def get(self, request, domain): class UploadConditionalAlertView (line 1037) | class UploadConditionalAlertView(BaseMessagingSectionView): method dispatch (line 1043) | def dispatch(self, *args, **kwargs): method page_context (line 1047) | def page_context(self): method parent_pages (line 1063) | def parent_pages(self): method post (line 1069) | def post(self, request, *args, **kwargs): function messaging_image_upload_view (line 1086) | def messaging_image_upload_view(request, domain): function messaging_image_download_view (line 1118) | def messaging_image_download_view(request, domain, image_key): function messaging_image_delete_view (line 1136) | def messaging_image_delete_view(request, domain, image_key): FILE: corehq/messaging/smsbackends/airtel_tcl/exceptions.py class AirtelTCLError (line 3) | class AirtelTCLError(Exception): class InvalidDestinationNumber (line 7) | class InvalidDestinationNumber(Exception): FILE: corehq/messaging/smsbackends/airtel_tcl/forms.py class AirtelTCLBackendForm (line 13) | class AirtelTCLBackendForm(BackendForm): method gateway_specific_fields (line 40) | def gateway_specific_fields(self): method clean_host_and_port (line 51) | def clean_host_and_port(self): FILE: corehq/messaging/smsbackends/airtel_tcl/models.py class AirtelTCLBackend (line 21) | class AirtelTCLBackend(SQLSMSBackend): class Meta (line 25) | class Meta(object): method get_api_id (line 30) | def get_api_id(cls): method get_generic_name (line 34) | def get_generic_name(cls): method get_available_extra_fields (line 38) | def get_available_extra_fields(cls): method get_form_class (line 51) | def get_form_class(cls): method unicode_to_decimal_ncr (line 55) | def unicode_to_decimal_ncr(text): method get_text_and_lang_id (line 66) | def get_text_and_lang_id(msg_obj): method get_timestamp (line 74) | def get_timestamp(): method get_formatted_timestamp (line 78) | def get_formatted_timestamp(timestamp): method get_json_payload (line 81) | def get_json_payload(self, msg_obj): method url (line 105) | def url(self): method get_phone_number (line 109) | def get_phone_number(phone_number): method send (line 120) | def send(self, msg_obj, *args, **kwargs): method handle_response (line 140) | def handle_response(response_status_code, response_text): FILE: corehq/messaging/smsbackends/airtel_tcl/tests/test_airtel_tcl.py class AirtelTCLBackendTest (line 9) | class AirtelTCLBackendTest(TestCase): method unicode_to_decimal_ncr (line 11) | def unicode_to_decimal_ncr(self): method test_get_text_and_lang_id (line 19) | def test_get_text_and_lang_id(self): method test_get_formatted_timestamp (line 29) | def test_get_formatted_timestamp(self): method test_get_json_payload_unicode (line 36) | def test_get_json_payload_unicode(self, get_timestamp_mock): method test_get_json_payload_ascii (line 70) | def test_get_json_payload_ascii(self, get_timestamp_mock): method test_get_url (line 102) | def test_get_url(self): method test_get_phone_number (line 112) | def test_get_phone_number(self): method test_handle_response (line 125) | def test_handle_response(self): FILE: corehq/messaging/smsbackends/amazon_pinpoint/forms.py class PinpointBackendForm (line 7) | class PinpointBackendForm(BackendForm): method gateway_specific_fields (line 26) | def gateway_specific_fields(self): FILE: corehq/messaging/smsbackends/amazon_pinpoint/models.py class PinpointBackend (line 9) | class PinpointBackend(SQLSMSBackend): class Meta (line 11) | class Meta(object): method get_available_extra_fields (line 16) | def get_available_extra_fields(cls): method get_api_id (line 26) | def get_api_id(cls): method get_generic_name (line 30) | def get_generic_name(cls): method get_form_class (line 34) | def get_form_class(cls): method send (line 37) | def send(self, msg, *args, **kwargs): FILE: corehq/messaging/smsbackends/amazon_pinpoint/views.py class PinpointIncomingMessageView (line 10) | class PinpointIncomingMessageView(IncomingBackendView): method backend_class (line 14) | def backend_class(self): method post (line 17) | def post(self, request, api_key, *args, **kwargs): FILE: corehq/messaging/smsbackends/apposit/forms.py class AppositBackendForm (line 13) | class AppositBackendForm(BackendForm): method gateway_specific_fields (line 28) | def gateway_specific_fields(self): method clean_host (line 37) | def clean_host(self): FILE: corehq/messaging/smsbackends/apposit/models.py class AppositException (line 15) | class AppositException(Exception): class SQLAppositBackend (line 19) | class SQLAppositBackend(SQLSMSBackend): class Meta (line 21) | class Meta(object): method get_opt_in_keywords (line 26) | def get_opt_in_keywords(cls): method get_opt_out_keywords (line 30) | def get_opt_out_keywords(cls): method get_available_extra_fields (line 34) | def get_available_extra_fields(cls): method url (line 45) | def url(self): method get_api_id (line 49) | def get_api_id(cls): method get_generic_name (line 53) | def get_generic_name(cls): method get_form_class (line 57) | def get_form_class(cls): method response_is_error (line 60) | def response_is_error(self, response_json): method is_ethiopia_number (line 63) | def is_ethiopia_number(self, msg): method handle_error (line 67) | def handle_error(self, response, response_json, msg): method handle_success (line 76) | def handle_success(self, response, response_json, msg): method send (line 79) | def send(self, msg, *args, **kwargs): FILE: corehq/messaging/smsbackends/apposit/tests/test_models.py class TestSqlAppositBackend (line 11) | class TestSqlAppositBackend(SimpleTestCase): method test_sends_message (line 12) | def test_sends_message(self): method test_rejects_ssrf_exceptions (line 27) | def test_rejects_ssrf_exceptions(self): method setUp (line 36) | def setUp(self): method _set_post_success_id (line 46) | def _set_post_success_id(self, id): method _create_backend (line 54) | def _create_backend(self, host='www.dimagi.com', from_number='123'): method _create_message (line 62) | def _create_message(self, FILE: corehq/messaging/smsbackends/apposit/views.py class AppositIncomingView (line 8) | class AppositIncomingView(IncomingBackendView): method backend_class (line 12) | def backend_class(self): method post (line 15) | def post(self, request, api_key, *args, **kwargs): FILE: corehq/messaging/smsbackends/connectid/backend.py class ConnectBackend (line 13) | class ConnectBackend: method send (line 18) | def send(self, message): method create_channel (line 43) | def create_channel(self, user_link): FILE: corehq/messaging/smsbackends/connectid/views.py function receive_message (line 19) | def receive_message(request, *args, **kwargs): function connectid_messaging_key (line 53) | def connectid_messaging_key(request, *args, **kwargs): function update_connectid_messaging_consent (line 71) | def update_connectid_messaging_consent(request, *args, **kwargs): function messaging_callback_url (line 84) | def messaging_callback_url(request, *args, **kwargs): FILE: corehq/messaging/smsbackends/grapevine/forms.py class GrapevineBackendForm (line 7) | class GrapevineBackendForm(BackendForm): method gateway_specific_fields (line 16) | def gateway_specific_fields(self): FILE: corehq/messaging/smsbackends/grapevine/models.py class GrapevineException (line 35) | class GrapevineException(Exception): class SQLGrapevineBackend (line 39) | class SQLGrapevineBackend(SQLSMSBackend): class Meta (line 44) | class Meta(object): method get_available_extra_fields (line 49) | def get_available_extra_fields(cls): method get_opt_in_keywords (line 56) | def get_opt_in_keywords(cls): method get_opt_out_keywords (line 60) | def get_opt_out_keywords(cls): method get_api_id (line 64) | def get_api_id(cls): method get_generic_name (line 68) | def get_generic_name(cls): method get_form_class (line 72) | def get_form_class(cls): method handle_response (line 75) | def handle_response(self, response): method send (line 97) | def send(self, msg, *args, **kwargs): class SmsMessage (line 119) | class SmsMessage(object): method __init__ (line 123) | def __init__(self, phonenumber=None, text=None): method is_complete (line 128) | def is_complete(self): class UrlencodedDeserializer (line 132) | class UrlencodedDeserializer(Serializer): method from_urlencode (line 144) | def from_urlencode(self, data, options=None): method to_urlencode (line 151) | def to_urlencode(self, content): class SimpleApiAuthentication (line 155) | class SimpleApiAuthentication(Authentication): method is_authenticated (line 157) | def is_authenticated(self, request, **kwargs): method get_identifier (line 166) | def get_identifier(self, request): class GrapevineResource (line 170) | class GrapevineResource(Resource): class Meta (line 213) | class Meta(object): method detail_uri_kwargs (line 222) | def detail_uri_kwargs(self, bundle_or_obj): method full_hydrate (line 225) | def full_hydrate(self, bundle): method obj_create (line 250) | def obj_create(self, bundle, request=None, **kwargs): method post_list (line 258) | def post_list(self, request, **kwargs): FILE: corehq/messaging/smsbackends/http/form_handling.py function form_clean_url (line 7) | def form_clean_url(url): FILE: corehq/messaging/smsbackends/http/forms.py class HttpBackendForm (line 16) | class HttpBackendForm(BackendForm): method __init__ (line 42) | def __init__(self, *args, **kwargs): method clean_url (line 51) | def clean_url(self): method clean_additional_params (line 55) | def clean_additional_params(self): method gateway_specific_fields (line 69) | def gateway_specific_fields(self): FILE: corehq/messaging/smsbackends/http/models.py class SQLHttpBackend (line 17) | class SQLHttpBackend(SQLSMSBackend): class Meta (line 19) | class Meta(object): method get_available_extra_fields (line 24) | def get_available_extra_fields(cls): method get_api_id (line 41) | def get_api_id(cls): method get_generic_name (line 45) | def get_generic_name(cls): method get_form_class (line 49) | def get_form_class(cls): method url (line 53) | def url(self): method extra_urlopen_kwargs (line 57) | def extra_urlopen_kwargs(self): method send (line 60) | def send(self, msg, *args, **kwargs): method _encode_http_message (line 98) | def _encode_http_message(text): FILE: corehq/messaging/smsbackends/http/sms_sending.py function verify_sms_url (line 11) | def verify_sms_url(url, msg, backend): FILE: corehq/messaging/smsbackends/http/tests/test_models.py class TestHttpBackend (line 11) | class TestHttpBackend(SimpleTestCase): method test_sends_without_error (line 15) | def test_sends_without_error(self, mock_urlopen): method test_throws_error_when_url_is_ssrf (line 25) | def test_throws_error_when_url_is_ssrf(self, mock_save): method _create_backend (line 32) | def _create_backend(self, url='http://www.dimagi.com', method _create_message (line 42) | def _create_message(self, FILE: corehq/messaging/smsbackends/http/tests/test_sms_sending.py class TestVerifySmsUrl (line 14) | class TestVerifySmsUrl(SimpleTestCase): method setUp (line 15) | def setUp(self): method test_passes_valid_urls (line 20) | def test_passes_valid_urls(self): method test_correctly_handles_ssrf (line 26) | def test_correctly_handles_ssrf(self, mock_save, mock_metrics_counter): FILE: corehq/messaging/smsbackends/infobip/forms.py class InfobipBackendForm (line 7) | class InfobipBackendForm(BackendForm): method clean_scenario_key (line 27) | def clean_scenario_key(self): method gateway_specific_fields (line 32) | def gateway_specific_fields(self): FILE: corehq/messaging/smsbackends/infobip/models.py class InfobipRetry (line 21) | class InfobipRetry(Exception): class InfobipBackend (line 25) | class InfobipBackend(SQLSMSBackend): class Meta (line 27) | class Meta(object): method get_available_extra_fields (line 34) | def get_available_extra_fields(cls): method get_api_id (line 44) | def get_api_id(cls): method get_generic_name (line 48) | def get_generic_name(cls): method get_form_class (line 52) | def get_form_class(cls): method get_opt_in_keywords (line 56) | def get_opt_in_keywords(cls): method get_pass_through_opt_in_keywords (line 60) | def get_pass_through_opt_in_keywords(cls): method get_opt_out_keywords (line 64) | def get_opt_out_keywords(cls): method url (line 68) | def url(self): method send (line 71) | def send(self, msg, orig_phone_number=None, *args, **kwargs): method _send_omni_failover_message (line 88) | def _send_omni_failover_message(self, config, to, msg, headers): method _send_sms (line 136) | def _send_sms(self, config, to, msg, headers): method handle_response (line 148) | def handle_response(self, response, msg): method get_all_templates (line 161) | def get_all_templates(self): method download_incoming_media (line 172) | def download_incoming_media(self, media_url): method generate_template_string (line 187) | def generate_template_string(cls, template): method get_message (line 196) | def get_message(self, backend_message_id): method _get_message_details (line 220) | def _get_message_details(self, api_channel, api_suffix, config, header... method get_provider_charges (line 225) | def get_provider_charges(self, backend_message_id): FILE: corehq/messaging/smsbackends/infobip/views.py class InfobipIncomingMessageView (line 8) | class InfobipIncomingMessageView(IncomingBackendView): method backend_class (line 12) | def backend_class(self): method post (line 15) | def post(self, request, api_key, *args, **kwargs): FILE: corehq/messaging/smsbackends/ivory_coast_mtn/exceptions.py class IvoryCoastMTNError (line 3) | class IvoryCoastMTNError(Exception): FILE: corehq/messaging/smsbackends/ivory_coast_mtn/forms.py class IvoryCoastMTNBackendForm (line 7) | class IvoryCoastMTNBackendForm(BackendForm): method gateway_specific_fields (line 26) | def gateway_specific_fields(self): FILE: corehq/messaging/smsbackends/ivory_coast_mtn/models.py class IvoryCoastMTNBackend (line 14) | class IvoryCoastMTNBackend(SQLSMSBackend): class Meta (line 18) | class Meta(object): method get_api_id (line 23) | def get_api_id(cls): method get_generic_name (line 27) | def get_generic_name(cls): method get_available_extra_fields (line 31) | def get_available_extra_fields(cls): method get_form_class (line 40) | def get_form_class(cls): method get_ivory_coast_timestamp (line 44) | def get_ivory_coast_timestamp(): method get_params (line 47) | def get_params(self, msg_obj): method phone_number_is_valid (line 67) | def phone_number_is_valid(phone_number): method send (line 73) | def send(self, msg_obj, *args, **kwargs): method get_result_and_transaction_id (line 86) | def get_result_and_transaction_id(response_text): method handle_response (line 96) | def handle_response(self, msg_obj, response_status_code, response_text): FILE: corehq/messaging/smsbackends/ivory_coast_mtn/tests/test_response.py class TestIvoryCoastMTNBackendResponse (line 23) | class TestIvoryCoastMTNBackendResponse(TestCase): method test_handle_success (line 25) | def test_handle_success(self): method test_handle_failure (line 32) | def test_handle_failure(self): method test_get_result_and_transaction_id (line 40) | def test_get_result_and_transaction_id(self): FILE: corehq/messaging/smsbackends/mach/forms.py class MachBackendForm (line 9) | class MachBackendForm(BackendForm): method clean_max_sms_per_second (line 23) | def clean_max_sms_per_second(self): method gateway_specific_fields (line 33) | def gateway_specific_fields(self): FILE: corehq/messaging/smsbackends/mach/models.py class SyniverseException (line 12) | class SyniverseException(Exception): class SQLMachBackend (line 16) | class SQLMachBackend(SQLSMSBackend): class Meta (line 20) | class Meta(object): method get_available_extra_fields (line 25) | def get_available_extra_fields(cls): method get_api_id (line 36) | def get_api_id(cls): method get_generic_name (line 40) | def get_generic_name(cls): method get_form_class (line 44) | def get_form_class(cls): method get_sms_rate_limit (line 47) | def get_sms_rate_limit(self): method handle_error_response (line 50) | def handle_error_response(self, msg, response): method handle_response (line 70) | def handle_response(self, msg, response): method send (line 88) | def send(self, msg, *args, **kwargs): FILE: corehq/messaging/smsbackends/megamobile/forms.py class MegamobileBackendForm (line 7) | class MegamobileBackendForm(BackendForm): method gateway_specific_fields (line 16) | def gateway_specific_fields(self): FILE: corehq/messaging/smsbackends/megamobile/models.py class MegamobileException (line 11) | class MegamobileException(Exception): class SQLMegamobileBackend (line 15) | class SQLMegamobileBackend(SQLSMSBackend): class Meta (line 19) | class Meta(object): method get_available_extra_fields (line 24) | def get_available_extra_fields(cls): method get_api_id (line 31) | def get_api_id(cls): method get_generic_name (line 35) | def get_generic_name(cls): method get_form_class (line 39) | def get_form_class(cls): method send (line 42) | def send(self, msg, *args, **kwargs): FILE: corehq/messaging/smsbackends/push/forms.py class PushBackendForm (line 7) | class PushBackendForm(BackendForm): method gateway_specific_fields (line 19) | def gateway_specific_fields(self): FILE: corehq/messaging/smsbackends/push/models.py class PushException (line 44) | class PushException(Exception): class PushBackend (line 48) | class PushBackend(SQLSMSBackend): class Meta (line 50) | class Meta(object): method get_available_extra_fields (line 55) | def get_available_extra_fields(cls): method get_api_id (line 65) | def get_api_id(cls): method get_generic_name (line 69) | def get_generic_name(cls): method get_form_class (line 73) | def get_form_class(cls): method response_is_error (line 76) | def response_is_error(self, response): method handle_error (line 79) | def handle_error(self, response, msg): method handle_success (line 82) | def handle_success(self, response, msg): method get_outbound_payload (line 103) | def get_outbound_payload(self, msg): method send (line 113) | def send(self, msg, *args, **kwargs): FILE: corehq/messaging/smsbackends/push/views.py class PushIncomingView (line 12) | class PushIncomingView(IncomingBackendView): method backend_class (line 16) | def backend_class(self): method clean_value (line 19) | def clean_value(self, value): method get_number_and_message (line 26) | def get_number_and_message(self, request): method post (line 44) | def post(self, request, api_key, *args, **kwargs): FILE: corehq/messaging/smsbackends/sislog/models.py class SQLSislogBackend (line 5) | class SQLSislogBackend(SQLHttpBackend): class Meta (line 7) | class Meta(object): method get_api_id (line 12) | def get_api_id(cls): method get_generic_name (line 16) | def get_generic_name(cls): method _encode_http_message (line 20) | def _encode_http_message(text): method extra_urlopen_kwargs (line 24) | def extra_urlopen_kwargs(self): FILE: corehq/messaging/smsbackends/sislog/tests/__init__.py class GSM0338Portuguese (line 5) | class GSM0338Portuguese(TestCase): method test_decode (line 7) | def test_decode(self): FILE: corehq/messaging/smsbackends/sislog/tests/test_backend.py class TestSQLSislogBackend (line 8) | class TestSQLSislogBackend(TestHttpBackend): method test_sends_without_error (line 12) | def test_sends_without_error(self, mock_urlopen): FILE: corehq/messaging/smsbackends/sislog/util.py function looks_like_gsm (line 306) | def looks_like_gsm(text): function gsm_to_unicode (line 313) | def gsm_to_unicode(text): function convert_raw_string (line 339) | def convert_raw_string(text): FILE: corehq/messaging/smsbackends/sislog/views.py function sms_in (line 8) | def sms_in(request, backend_id=None): class SislogIncomingSMSView (line 25) | class SislogIncomingSMSView(IncomingBackendView): method backend_class (line 29) | def backend_class(self): method get (line 32) | def get(self, request, api_key, *args, **kwargs): FILE: corehq/messaging/smsbackends/smsgh/forms.py class SMSGHBackendForm (line 7) | class SMSGHBackendForm(BackendForm): method gateway_specific_fields (line 19) | def gateway_specific_fields(self): FILE: corehq/messaging/smsbackends/smsgh/models.py class SMSGHException (line 11) | class SMSGHException(Exception): class SQLSMSGHBackend (line 15) | class SQLSMSGHBackend(SQLSMSBackend): class Meta (line 17) | class Meta(object): method get_available_extra_fields (line 22) | def get_available_extra_fields(cls): method get_api_id (line 32) | def get_api_id(cls): method get_generic_name (line 36) | def get_generic_name(cls): method get_form_class (line 40) | def get_form_class(cls): method response_is_error (line 43) | def response_is_error(self, response): method get_additional_data (line 46) | def get_additional_data(self, response): method handle_error (line 52) | def handle_error(self, response, msg): method handle_success (line 79) | def handle_success(self, response, msg): method send (line 83) | def send(self, msg, *args, **kwargs): FILE: corehq/messaging/smsbackends/smsgh/views.py class SMSGHIncomingView (line 7) | class SMSGHIncomingView(IncomingBackendView): method backend_class (line 11) | def backend_class(self): method get (line 14) | def get(self, request, api_key, *args, **kwargs): method post (line 27) | def post(self, request, api_key, *args, **kwargs): FILE: corehq/messaging/smsbackends/starfish/models.py class StarfishException (line 11) | class StarfishException(Exception): class StarfishBackend (line 15) | class StarfishBackend(SQLSMSBackend): class Meta (line 17) | class Meta(object): method get_available_extra_fields (line 22) | def get_available_extra_fields(cls): method get_api_id (line 28) | def get_api_id(cls): method get_generic_name (line 32) | def get_generic_name(cls): method get_form_class (line 36) | def get_form_class(cls): method response_is_error (line 39) | def response_is_error(self, response): method handle_error (line 45) | def handle_error(self, response, msg): method send (line 57) | def send(self, msg, *args, **kwargs): FILE: corehq/messaging/smsbackends/starfish/tests/test_incoming.py class IncomingTest (line 12) | class IncomingTest(TestCase): method setUpClass (line 15) | def setUpClass(cls): method tearDownClass (line 30) | def tearDownClass(cls): method setUp (line 36) | def setUp(self): method receiveMessage (line 39) | def receiveMessage(self, message): method testIncomingAscii (line 49) | def testIncomingAscii(self): method testIncomingUtf8 (line 52) | def testIncomingUtf8(self): function fake_request (line 56) | def fake_request(data, backend): FILE: corehq/messaging/smsbackends/starfish/tests/test_outgoing.py class TestStarfishBackend (line 11) | class TestStarfishBackend(SimpleTestCase): method mock_send (line 13) | def mock_send(self, **kwargs): method test_success (line 24) | def test_success(self): method test_invalid (line 29) | def test_invalid(self): method test_error (line 34) | def test_error(self): method test_500 (line 40) | def test_500(self): FILE: corehq/messaging/smsbackends/starfish/views.py class StarfishIncomingView (line 7) | class StarfishIncomingView(IncomingBackendView): method backend_class (line 11) | def backend_class(self): method clean_value (line 14) | def clean_value(self, value): method get (line 19) | def get(self, request, api_key, *args, **kwargs): method post (line 34) | def post(self, request, api_key, *args, **kwargs): FILE: corehq/messaging/smsbackends/start_enterprise/exceptions.py class StartEnterpriseBackendException (line 3) | class StartEnterpriseBackendException(Exception): FILE: corehq/messaging/smsbackends/start_enterprise/forms.py class StartEnterpriseBackendForm (line 7) | class StartEnterpriseBackendForm(BackendForm): method gateway_specific_fields (line 22) | def gateway_specific_fields(self): FILE: corehq/messaging/smsbackends/start_enterprise/migrations/0001_initial.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/messaging/smsbackends/start_enterprise/models.py class StartEnterpriseDeliveryReceipt (line 23) | class StartEnterpriseDeliveryReceipt(models.Model): class StartEnterpriseBackend (line 42) | class StartEnterpriseBackend(SQLSMSBackend): class Meta (line 46) | class Meta(object): method get_api_id (line 51) | def get_api_id(cls): method get_generic_name (line 55) | def get_generic_name(cls): method get_available_extra_fields (line 59) | def get_available_extra_fields(cls): method get_form_class (line 67) | def get_form_class(cls): method get_params (line 70) | def get_params(self, msg_obj): method phone_number_is_valid (line 90) | def phone_number_is_valid(cls, phone_number): method send (line 96) | def send(self, msg_obj, *args, **kwargs): method record_message_ids (line 108) | def record_message_ids(self, msg_obj, response_text): method handle_response (line 120) | def handle_response(self, msg_obj, response_status_code, response_text): method handle_failure (line 126) | def handle_failure(self, msg_obj, response_status_code, response_text): FILE: corehq/messaging/smsbackends/start_enterprise/tests/test_request.py class TestStartEnterpriseBackendRequest (line 18) | class TestStartEnterpriseBackendRequest(TestCase): method setUp (line 20) | def setUp(self): method test_ascii (line 28) | def test_ascii(self): method test_unicode (line 45) | def test_unicode(self): method test_phone_number_is_valid (line 62) | def test_phone_number_is_valid(self): FILE: corehq/messaging/smsbackends/start_enterprise/tests/test_response.py class TestStartEnterpriseBackendResponse (line 17) | class TestStartEnterpriseBackendResponse(TestCase): method test_handle_success (line 19) | def test_handle_success(self): method test_handle_failure (line 29) | def test_handle_failure(self): FILE: corehq/messaging/smsbackends/start_enterprise/views.py class StartEnterpriseDeliveryReceiptView (line 11) | class StartEnterpriseDeliveryReceiptView(IncomingBackendView): method backend_class (line 15) | def backend_class(self): method get (line 18) | def get(self, request, api_key, *args, **kwargs): FILE: corehq/messaging/smsbackends/telerivet/admin.py class IncomingRequestAdmin (line 5) | class IncomingRequestAdmin(admin.ModelAdmin): FILE: corehq/messaging/smsbackends/telerivet/exceptions.py class TelerivetException (line 3) | class TelerivetException(Exception): FILE: corehq/messaging/smsbackends/telerivet/forms.py class TelerivetBackendForm (line 16) | class TelerivetBackendForm(BackendForm): method __init__ (line 30) | def __init__(self, *args, **kwargs): method gateway_specific_fields (line 39) | def gateway_specific_fields(self): method clean_webhook_secret (line 48) | def clean_webhook_secret(self): class TelerivetOutgoingSMSForm (line 58) | class TelerivetOutgoingSMSForm(Form): method __init__ (line 72) | def __init__(self, *args, **kwargs): class TelerivetPhoneNumberForm (line 126) | class TelerivetPhoneNumberForm(Form): method __init__ (line 132) | def __init__(self, *args, **kwargs): method clean_test_phone_number (line 167) | def clean_test_phone_number(self): class FinalizeGatewaySetupForm (line 175) | class FinalizeGatewaySetupForm(Form): method __init__ (line 194) | def __init__(self, *args, **kwargs): FILE: corehq/messaging/smsbackends/telerivet/migrations/0001_initial.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/messaging/smsbackends/telerivet/migrations/0002_add_index_on_webhook_secret.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/messaging/smsbackends/telerivet/models.py class SQLTelerivetBackend (line 14) | class SQLTelerivetBackend(SQLSMSBackend): class Meta (line 19) | class Meta(object): method get_available_extra_fields (line 24) | def get_available_extra_fields(cls): method get_api_id (line 40) | def get_api_id(cls): method get_generic_name (line 44) | def get_generic_name(cls): method get_form_class (line 48) | def get_form_class(cls): method get_phone_info (line 51) | def get_phone_info(self): method get_phone_number_or_none (line 64) | def get_phone_number_or_none(self): method send (line 72) | def send(self, msg, *args, **kwargs): method by_webhook_secret (line 118) | def by_webhook_secret(cls, webhook_secret): class IncomingRequest (line 133) | class IncomingRequest(models.Model): method get_last_sms_by_webhook_secret (line 154) | def get_last_sms_by_webhook_secret(cls, webhook_secret): FILE: corehq/messaging/smsbackends/telerivet/tasks.py function process_incoming_message (line 29) | def process_incoming_message(*args, **kwargs): function process_message_status (line 60) | def process_message_status(sms: SMS, status: str, **kwargs): FILE: corehq/messaging/smsbackends/telerivet/tests/test_log_call.py class TelerivetLogCallTestCase (line 7) | class TelerivetLogCallTestCase(util.LogCallTestCase): method setUp (line 9) | def setUp(self): method simulate_inbound_call (line 22) | def simulate_inbound_call(self, phone_number): method check_response (line 31) | def check_response(self, response): FILE: corehq/messaging/smsbackends/telerivet/tests/test_tasks.py class TestProcessMessageStatus (line 8) | class TestProcessMessageStatus(TestCase): method setUp (line 10) | def setUp(self): method tearDown (line 28) | def tearDown(self): method test_status_delivered (line 32) | def test_status_delivered(self): method test_error_status (line 38) | def test_error_status(self): FILE: corehq/messaging/smsbackends/telerivet/tests/test_view.py class TelerivetViewTestCase (line 7) | class TelerivetViewTestCase(TestCase): method setUp (line 11) | def setUp(self): method tearDown (line 28) | def tearDown(self): method test_message_status_successful_without_prior_metadata (line 32) | def test_message_status_successful_without_prior_metadata(self): method test_message_status_successful_with_metadata (line 42) | def test_message_status_successful_with_metadata(self): method test_message_status_with_wrong_message_id (line 58) | def test_message_status_with_wrong_message_id(self): method test_message_status_with_invalid_secret (line 70) | def test_message_status_with_invalid_secret(self): FILE: corehq/messaging/smsbackends/telerivet/tests/test_webhook_lookup.py class TelerivetWebhookLookupTestCase (line 5) | class TelerivetWebhookLookupTestCase(TestCase): method setUp (line 7) | def setUp(self): method test_webhook_lookup (line 33) | def test_webhook_lookup(self): FILE: corehq/messaging/smsbackends/telerivet/views.py function incoming_message (line 50) | def incoming_message(request): function message_status (line 59) | def message_status(request, message_id): class TelerivetSetupView (line 84) | class TelerivetSetupView(BaseMessagingSectionView): method page_url (line 90) | def page_url(self): method get_cache_key (line 94) | def get_cache_key(cls, request_token): method set_cached_webhook_secret (line 98) | def set_cached_webhook_secret(cls, request_token, webhook_secret): method get_cached_webhook_secret (line 105) | def get_cached_webhook_secret(cls, request_token): method get_error_message (line 111) | def get_error_message(cls, form, field_name): method unexpected_error (line 115) | def unexpected_error(self): method page_context (line 122) | def page_context(self): function get_last_inbound_sms (line 166) | def get_last_inbound_sms(request, domain): function send_sample_sms (line 192) | def send_sample_sms(request, domain): function create_backend (line 242) | def create_backend(request, domain): FILE: corehq/messaging/smsbackends/test/models.py class SQLTestSMSBackend (line 9) | class SQLTestSMSBackend(SQLSMSBackend): class Meta (line 11) | class Meta(object): method get_available_extra_fields (line 16) | def get_available_extra_fields(cls): method get_api_id (line 20) | def get_api_id(cls): method get_generic_name (line 24) | def get_generic_name(cls): method get_form_class (line 28) | def get_form_class(cls): method send (line 31) | def send(self, msg, *args, **kwargs): method download_incoming_media (line 42) | def download_incoming_media(self, media_url): FILE: corehq/messaging/smsbackends/tropo/forms.py class TropoBackendForm (line 7) | class TropoBackendForm(BackendForm): method gateway_specific_fields (line 13) | def gateway_specific_fields(self): FILE: corehq/messaging/smsbackends/tropo/models.py class SQLTropoBackend (line 9) | class SQLTropoBackend(SQLSMSBackend): class Meta (line 13) | class Meta(object): method get_available_extra_fields (line 18) | def get_available_extra_fields(cls): method get_api_id (line 24) | def get_api_id(cls): method get_generic_name (line 28) | def get_generic_name(cls): method get_form_class (line 32) | def get_form_class(cls): method get_sms_rate_limit (line 35) | def get_sms_rate_limit(self): method get_opt_in_keywords (line 39) | def get_opt_in_keywords(cls): method get_opt_out_keywords (line 43) | def get_opt_out_keywords(cls): method send (line 46) | def send(self, msg, *args, **kwargs): FILE: corehq/messaging/smsbackends/tropo/views.py function sms_in (line 14) | def sms_in(request, backend_id=None): function ivr_in (line 50) | def ivr_in(request): class TropoIncomingSMSView (line 85) | class TropoIncomingSMSView(IncomingBackendView): method backend_class (line 89) | def backend_class(self): method post (line 92) | def post(self, request, api_key, *args, **kwargs): class TropoIncomingIVRView (line 96) | class TropoIncomingIVRView(IncomingBackendView): method backend_class (line 100) | def backend_class(self): method post (line 103) | def post(self, request, api_key, *args, **kwargs): FILE: corehq/messaging/smsbackends/trumpia/forms.py class TrumpiaBackendForm (line 11) | class TrumpiaBackendForm(BackendForm): method gateway_specific_fields (line 16) | def gateway_specific_fields(self): FILE: corehq/messaging/smsbackends/trumpia/models.py class TrumpiaRetry (line 10) | class TrumpiaRetry(Exception): class TrumpiaBackend (line 14) | class TrumpiaBackend(SQLSMSBackend): class Meta (line 16) | class Meta(object): method get_available_extra_fields (line 21) | def get_available_extra_fields(cls): method get_api_id (line 30) | def get_api_id(cls): method get_generic_name (line 34) | def get_generic_name(cls): method get_form_class (line 38) | def get_form_class(cls): method send (line 41) | def send(self, msg, *args, **kwargs): method handle_response (line 57) | def handle_response(self, response, msg): method get_message_details (line 82) | def get_message_details(self, request_id): function is_success (line 103) | def is_success(data): FILE: corehq/messaging/smsbackends/trumpia/tests/test_incoming.py class IncomingTest (line 12) | class IncomingTest(TestCase): method setUpClass (line 15) | def setUpClass(cls): method tearDownClass (line 30) | def tearDownClass(cls): method setUp (line 36) | def setUp(self): method test_activity_check (line 40) | def test_activity_check(self): method test_incoming (line 45) | def test_incoming(self): method test_incoming_non_nanp_number (line 53) | def test_incoming_non_nanp_number(self): method test_incoming_non_nanp_number2 (line 58) | def test_incoming_non_nanp_number2(self): method test_incoming_with_keyword (line 63) | def test_incoming_with_keyword(self): method make_request (line 70) | def make_request(self, message, keyword="", phone=None): method path (line 81) | def path(self): FILE: corehq/messaging/smsbackends/trumpia/tests/test_outgoing.py class TestTrumpiaBackend (line 21) | class TestTrumpiaBackend(SimpleTestCase): method setUpClass (line 29) | def setUpClass(cls): method test_success (line 34) | def test_success(self): method test_success_status_pending (line 41) | def test_success_status_pending(self): method test_fail_missing_requestID (line 51) | def test_fail_missing_requestID(self): method test_fail_missing_statuscode (line 57) | def test_fail_missing_statuscode(self): method test_generic_failure (line 64) | def test_generic_failure(self): method test_fail_MRME0201 (line 74) | def test_fail_MRME0201(self): method test_errorcode_16 (line 84) | def test_errorcode_16(self): method test_status_without_message (line 98) | def test_status_without_message(self): method test_405 (line 108) | def test_405(self): method test_500 (line 113) | def test_500(self): method test_get_message_details (line 118) | def test_get_message_details(self): method mock_send (line 125) | def mock_send(self, status_code=200, response=None, report=None): method mock_report (line 153) | def mock_report(self, mock, request_id, report): function querystring (line 170) | def querystring(data): FILE: corehq/messaging/smsbackends/trumpia/views.py class TrumpiaIncomingView (line 10) | class TrumpiaIncomingView(IncomingBackendView): method backend_class (line 14) | def backend_class(self): method get (line 17) | def get(self, request, api_key, *args, **kwargs): method post (line 42) | def post(self, request, api_key, *args, **kwargs): function parse_incoming (line 46) | def parse_incoming(xml): function add_nanp_prefix (line 86) | def add_nanp_prefix(number, region_code="1"): FILE: corehq/messaging/smsbackends/turn/forms.py class TurnBackendForm (line 12) | class TurnBackendForm(BackendForm): method gateway_specific_fields (line 20) | def gateway_specific_fields(self): FILE: corehq/messaging/smsbackends/turn/models.py class SQLTurnWhatsAppBackend (line 17) | class SQLTurnWhatsAppBackend(SQLSMSBackend): class Meta (line 21) | class Meta(object): method get_api_id (line 26) | def get_api_id(cls): method get_generic_name (line 30) | def get_generic_name(cls): method get_available_extra_fields (line 34) | def get_available_extra_fields(cls): method get_form_class (line 44) | def get_form_class(cls): method send (line 47) | def send(self, msg, orig_phone_number=None, *args, **kwargs): method _send_template_message (line 65) | def _send_template_message(self, client, wa_id, msg): method _send_text_message (line 84) | def _send_text_message(self, client, wa_id, msg): method _send_fallback_message (line 87) | def _send_fallback_message(self, msg): method get_all_templates (line 106) | def get_all_templates(self): method generate_template_string (line 116) | def generate_template_string(cls, template): FILE: corehq/messaging/smsbackends/turn/tests/test_template_messages.py class TurnWhatsAppTemplateTest (line 9) | class TurnWhatsAppTemplateTest(SimpleTestCase): method test_is_whatsapp_template (line 11) | def test_is_whatsapp_template(self): method test_parse_template_parts (line 18) | def test_parse_template_parts(self): FILE: corehq/messaging/smsbackends/turn/tests/test_views.py class TurnIncomingSMSViewTests (line 6) | class TurnIncomingSMSViewTests(SimpleTestCase): method test_handles_unexpected_message_types (line 8) | def test_handles_unexpected_message_types(self, mock_incoming_sms): method _create_message (line 18) | def _create_message(self, id='5', from_='+111111111111', type='text'): FILE: corehq/messaging/smsbackends/turn/views.py class TurnIncomingSMSView (line 8) | class TurnIncomingSMSView(IncomingBackendView): method backend_class (line 12) | def backend_class(self): method post (line 15) | def post(self, request, api_key, *args, **kwargs): FILE: corehq/messaging/smsbackends/twilio/forms.py class TwilioBackendForm (line 7) | class TwilioBackendForm(BackendForm, LoadBalancingBackendFormMixin): method gateway_specific_fields (line 16) | def gateway_specific_fields(self): method validate_phone_number (line 23) | def validate_phone_number(self, phone_number: str) -> None: FILE: corehq/messaging/smsbackends/twilio/models.py class SQLTwilioBackend (line 21) | class SQLTwilioBackend(SQLSMSBackend, PhoneLoadBalancingMixin): method url (line 24) | def url(cls): class Meta (line 29) | class Meta(object): method get_available_extra_fields (line 36) | def get_available_extra_fields(cls): method get_api_id (line 43) | def get_api_id(cls): method get_generic_name (line 47) | def get_generic_name(cls): method get_form_class (line 51) | def get_form_class(cls): method get_opt_in_keywords (line 55) | def get_opt_in_keywords(cls): method get_pass_through_opt_in_keywords (line 59) | def get_pass_through_opt_in_keywords(cls): method get_opt_out_keywords (line 63) | def get_opt_out_keywords(cls): method send (line 66) | def send(self, msg, orig_phone_number=None, *args, **kwargs): method from_or_messaging_service_sid (line 103) | def from_or_messaging_service_sid(self, phone_number: str) -> (Optiona... method phone_number_is_messaging_service_sid (line 110) | def phone_number_is_messaging_service_sid(phone_number): method _get_twilio_client (line 113) | def _get_twilio_client(self): method get_message (line 117) | def get_message(self, backend_message_id): method get_provider_charges (line 123) | def get_provider_charges(self, backend_message_id): FILE: corehq/messaging/smsbackends/twilio/tests/test_log_call.py class TwilioLogCallTestCase (line 8) | class TwilioLogCallTestCase(util.LogCallTestCase): method setUp (line 10) | def setUp(self): method tearDown (line 18) | def tearDown(self): method test_401_response (line 22) | def test_401_response(self): method simulate_inbound_call (line 35) | def simulate_inbound_call(self, phone_number): method check_response (line 42) | def check_response(self, response): FILE: corehq/messaging/smsbackends/twilio/views.py class TwilioIncomingSMSView (line 18) | class TwilioIncomingSMSView(IncomingBackendView): method backend_class (line 22) | def backend_class(self): method post (line 25) | def post(self, request, api_key, *args, **kwargs): class TwilioIncomingIVRView (line 40) | class TwilioIncomingIVRView(IncomingBackendView): method backend_class (line 44) | def backend_class(self): method post (line 47) | def post(self, request, api_key, *args, **kwargs): FILE: corehq/messaging/smsbackends/vertex/exceptions.py class VertexBackendException (line 1) | class VertexBackendException(Exception): FILE: corehq/messaging/smsbackends/vertex/forms.py class VertexBackendForm (line 7) | class VertexBackendForm(BackendForm): method gateway_specific_fields (line 22) | def gateway_specific_fields(self): FILE: corehq/messaging/smsbackends/vertex/models.py class VertexBackend (line 22) | class VertexBackend(SQLSMSBackend): class Meta (line 26) | class Meta(object): method get_api_id (line 31) | def get_api_id(cls): method get_generic_name (line 35) | def get_generic_name(cls): method get_available_extra_fields (line 39) | def get_available_extra_fields(cls): method get_form_class (line 47) | def get_form_class(cls): method populate_params (line 50) | def populate_params(self, msg_obj): method phone_number_is_valid (line 71) | def phone_number_is_valid(self, phone_number): method send (line 77) | def send(self, msg_obj, *args, **kwargs): method handle_response (line 86) | def handle_response(self, msg_obj, resp_status_code, resp_text): method handle_failure (line 95) | def handle_failure(self, msg_obj, resp_status_code, error_message): FILE: corehq/messaging/smsbackends/vertex/tests/test_request.py class TestVertexBackendRequestContent (line 19) | class TestVertexBackendRequestContent(TestCase): method setUp (line 20) | def setUp(self): method test_params (line 31) | def test_params(self): method test_phone_number_is_valid (line 47) | def test_phone_number_is_valid(self): FILE: corehq/messaging/smsbackends/vertex/tests/test_response.py class TestVertexBackendResponseHandling (line 16) | class TestVertexBackendResponseHandling(TestCase): method setUp (line 17) | def setUp(self): method test_handle_success (line 21) | def test_handle_success(self): method test_handle_failure (line 26) | def test_handle_failure(self): FILE: corehq/messaging/smsbackends/yo/models.py class SQLYoBackend (line 4) | class SQLYoBackend(SQLHttpBackend): class Meta (line 6) | class Meta(object): method get_api_id (line 11) | def get_api_id(cls): method get_generic_name (line 15) | def get_generic_name(cls): FILE: corehq/messaging/smsbackends/yo/views.py function sms_in (line 7) | def sms_in(request, backend_id=None): class YoIncomingSMSView (line 15) | class YoIncomingSMSView(IncomingBackendView): method backend_class (line 19) | def backend_class(self): method get (line 22) | def get(self, request, api_key, *args, **kwargs): FILE: corehq/messaging/tasks.py function get_sync_key (line 28) | def get_sync_key(case_id): function sync_case_for_messaging_task (line 34) | def sync_case_for_messaging_task(self, domain, case_id): function sync_case_for_messaging_rule (line 44) | def sync_case_for_messaging_rule(self, domain, case_id, rule_id): function sync_case_chunk_for_messaging_rule (line 53) | def sync_case_chunk_for_messaging_rule(domain, case_id_chunk, rule_id): function sync_case_for_messaging (line 62) | def sync_case_for_messaging(domain, case_id, get_rules=None): function update_messaging_for_case (line 74) | def update_messaging_for_case(domain, case_id, case): function clear_messaging_for_case (line 81) | def clear_messaging_for_case(domain, case_id): function run_auto_update_rules_for_case (line 86) | def run_auto_update_rules_for_case(case, get_rules=None): function get_cached_rule (line 97) | def get_cached_rule(domain, rule_id): function _sync_case_for_messaging_rule (line 104) | def _sync_case_for_messaging_rule(domain, case_id, rule_id): function initiate_messaging_rule_run (line 117) | def initiate_messaging_rule_run(rule): function paginated_case_ids (line 125) | def paginated_case_ids(domain, case_type, db_alias=None): function get_case_ids_for_messaging_rule (line 140) | def get_case_ids_for_messaging_rule(domain, case_type): function set_rule_complete (line 145) | def set_rule_complete(rule_id): function run_messaging_rule (line 153) | def run_messaging_rule(domain, rule_id): function run_messaging_rule_for_shard (line 169) | def run_messaging_rule_for_shard(domain, rule_id, db_alias): FILE: corehq/messaging/templating.py function _get_case_template_info (line 12) | def _get_case_template_info(case): function _get_web_user_template_info (line 16) | def _get_web_user_template_info(user): function _get_mobile_user_template_info (line 25) | def _get_mobile_user_template_info(user): function _get_system_user_template_info (line 34) | def _get_system_user_template_info(): function _get_group_template_info (line 43) | def _get_group_template_info(group): function _get_location_template_info (line 49) | def _get_location_template_info(location): function _get_obj_template_info (line 56) | def _get_obj_template_info(obj): class MessagingTemplateRenderer (line 71) | class MessagingTemplateRenderer(object): method __init__ (line 74) | def __init__(self): method set_context_param (line 77) | def set_context_param(self, name, value): method render (line 80) | def render(self, message): class SimpleMessagingTemplateParam (line 84) | class SimpleMessagingTemplateParam(object): method __init__ (line 86) | def __init__(self, value): method __format__ (line 91) | def __format__(self, format_spec): method __getattr__ (line 98) | def __getattr__(self, item): class SimpleDictTemplateParam (line 112) | class SimpleDictTemplateParam(object): method __init__ (line 114) | def __init__(self, dict_of_values): method __format__ (line 119) | def __format__(self, format_spec): method __getattr__ (line 129) | def __getattr__(self, item): class NestedDictTemplateParam (line 145) | class NestedDictTemplateParam(SimpleDictTemplateParam): method __init__ (line 147) | def __init__(self, dict_of_values): method __getattr__ (line 150) | def __getattr__(self, item): class CaseMessagingTemplateParam (line 161) | class CaseMessagingTemplateParam(SimpleDictTemplateParam): method __init__ (line 163) | def __init__(self, case): method __get_owner_result (line 175) | def __get_owner_result(self): method __get_parent_result (line 194) | def __get_parent_result(self): method __get_host_result (line 210) | def __get_host_result(self): method __get_last_modified_by_result (line 226) | def __get_last_modified_by_result(self): method __getattr__ (line 250) | def __getattr__(self, item): FILE: corehq/messaging/tests/test_smsbackends.py function test_iter_sms_endpoints (line 8) | def test_iter_sms_endpoints(): function test_sms_urls (line 26) | def test_sms_urls(model_class): FILE: corehq/messaging/util.py class MessagingRuleProgressHelper (line 6) | class MessagingRuleProgressHelper(object): method __init__ (line 8) | def __init__(self, rule_id): method key_expiry (line 13) | def key_expiry(self): method current_key (line 17) | def current_key(self): method total_key (line 21) | def total_key(self): method rule_initiation_key (line 25) | def rule_initiation_key(self): method rule_cancellation_key (line 29) | def rule_cancellation_key(self): method completed_shards_key (line 33) | def completed_shards_key(self): method shard_count_key (line 37) | def shard_count_key(self): method set_rule_initiation_key (line 40) | def set_rule_initiation_key(self): method clear_rule_initiation_key (line 43) | def clear_rule_initiation_key(self): method rule_initiation_key_is_set (line 46) | def rule_initiation_key_is_set(self): method rule_initiation_key_minutes_remaining (line 49) | def rule_initiation_key_minutes_remaining(self): method set_initial_progress (line 52) | def set_initial_progress(self, shard_count=0): method set_total_cases_to_be_processed (line 62) | def set_total_cases_to_be_processed(self, total_cases): method mark_shard_complete (line 65) | def mark_shard_complete(self, db_alias): method set_rule_complete (line 79) | def set_rule_complete(self): method increment_current_case_count (line 82) | def increment_current_case_count(self, fail_hard=False): method update_total_key_expiry (line 90) | def update_total_key_expiry(self): method cancel (line 93) | def cancel(self): method is_canceled (line 101) | def is_canceled(self): method _int_or_zero (line 106) | def _int_or_zero(value): method get_progress_pct (line 112) | def get_progress_pct(self): method get_cases_processed (line 124) | def get_cases_processed(self): method get_total_cases_to_process (line 127) | def get_total_cases_to_process(self): FILE: corehq/messaging/whatsapputil.py class WhatsAppTemplateStringException (line 9) | class WhatsAppTemplateStringException(Exception): function is_whatsapp_template_message (line 13) | def is_whatsapp_template_message(message_text): function is_multimedia_message (line 17) | def is_multimedia_message(msg): function get_multimedia_urls (line 23) | def get_multimedia_urls(msg): function extract_error_message_from_template_string (line 37) | def extract_error_message_from_template_string(message_text): function get_template_hsm_parts (line 44) | def get_template_hsm_parts(message_text): FILE: corehq/middleware.py class OpenRosaMiddleware (line 40) | class OpenRosaMiddleware(MiddlewareMixin): method process_request (line 46) | def process_request(self, request): method process_response (line 55) | def process_response(self, request, response): class MemoryUsageMiddleware (line 63) | class MemoryUsageMiddleware(object): method _check_psutil (line 71) | def _check_psutil(self): method process_request (line 80) | def process_request(self, request): method process_response (line 84) | def process_response(self, request, response): class TimingMiddleware (line 92) | class TimingMiddleware(object): method process_request (line 94) | def process_request(self, request): method process_response (line 97) | def process_response(self, request, response): class LogLongRequestMiddleware (line 104) | class LogLongRequestMiddleware(MiddlewareMixin): method process_request (line 112) | def process_request(self, request): method process_view (line 115) | def process_view(self, request, view_fn, view_args, view_kwargs): method process_response (line 120) | def process_response(self, request, response): class TimeoutMiddleware (line 137) | class TimeoutMiddleware(MiddlewareMixin): method update_secure_session (line 140) | def update_secure_session(cls, session, is_secure, user, domain=None): method _get_timeout (line 148) | def _get_timeout(cls, session, is_secure, user, domain=None): method _get_relevant_domains (line 164) | def _get_relevant_domains(cls, couch_user, domain=None): method _session_expired (line 184) | def _session_expired(timeout, activity): method _should_use_secure_session (line 192) | def _should_use_secure_session(self, session, user, domain): method process_view (line 209) | def process_view(self, request, view_func, view_args, view_kwargs): function always_allow_browser_caching (line 233) | def always_allow_browser_caching(fn): class NoCacheMiddleware (line 242) | class NoCacheMiddleware(MiddlewareMixin): method process_response (line 244) | def process_response(self, request, response): method _explicitly_marked_safe (line 262) | def _explicitly_marked_safe(response): class SentryContextMiddleware (line 266) | class SentryContextMiddleware(MiddlewareMixin): method __init__ (line 270) | def __init__(self, get_response): method process_view (line 280) | def process_view(self, request, view_func, view_args, view_kwargs): class SelectiveSessionMiddleware (line 291) | class SelectiveSessionMiddleware(SessionMiddleware): method __init__ (line 293) | def __init__(self, get_response=None): method _bypass_sessions (line 310) | def _bypass_sessions(self, request): method process_request (line 313) | def process_request(self, request): function get_view_func (line 320) | def get_view_func(view_fn, view_kwargs): class SecureCookiesMiddleware (line 343) | class SecureCookiesMiddleware(MiddlewareMixin): method process_response (line 349) | def process_response(self, request, response): class HqHtmxActionMiddleware (line 356) | class HqHtmxActionMiddleware: method __init__ (line 371) | def __init__(self, get_response): method __call__ (line 374) | def __call__(self, request): class SyncUserLanguageMiddleware (line 382) | class SyncUserLanguageMiddleware: method __init__ (line 388) | def __init__(self, get_response): method __call__ (line 391) | def __call__(self, request): FILE: corehq/motech/admin.py class ConnectionSettingsAdmin (line 6) | class ConnectionSettingsAdmin(admin.ModelAdmin): method has_add_permission (line 22) | def has_add_permission(self, request, obj=None): method has_change_permission (line 25) | def has_change_permission(self, request, obj=None): method has_delete_permission (line 28) | def has_delete_permission(self, request, obj=None): FILE: corehq/motech/auth.py class OAuth1ApiEndpoints (line 26) | class OAuth1ApiEndpoints: class HTTPBearerAuth (line 52) | class HTTPBearerAuth(AuthBase): method __init__ (line 53) | def __init__(self, username, plaintext_password): method _find_bearer_base (line 57) | def _find_bearer_base(self, r): method _get_auth_token (line 64) | def _get_auth_token(self, r): method __call__ (line 83) | def __call__(self, r): class AuthManager (line 89) | class AuthManager: method get_auth (line 91) | def get_auth(self) -> Optional[AuthBase]: method get_session (line 98) | def get_session(self, domain_name: str) -> Session: class BasicAuthManager (line 108) | class BasicAuthManager(AuthManager): method __init__ (line 110) | def __init__(self, username, password): method get_auth (line 114) | def get_auth(self): class DigestAuthManager (line 118) | class DigestAuthManager(AuthManager): method __init__ (line 120) | def __init__(self, username, password): method get_auth (line 124) | def get_auth(self): class OAuth1Manager (line 128) | class OAuth1Manager(AuthManager): method __init__ (line 130) | def __init__( method last_token (line 143) | def last_token(self) -> Optional[dict]: method get_auth (line 146) | def get_auth(self): class BearerAuthManager (line 163) | class BearerAuthManager(AuthManager): method __init__ (line 169) | def __init__(self, username, password): method get_auth (line 173) | def get_auth(self): class OAuth2ClientGrantManager (line 177) | class OAuth2ClientGrantManager(AuthManager): method __init__ (line 182) | def __init__( method last_token (line 205) | def last_token(self) -> Optional[dict]: method last_token (line 209) | def last_token(self, value: dict): method get_session (line 217) | def get_session(self, domain_name: str) -> Session: method _check_last_token (line 279) | def _check_last_token(self, domain_name): class OAuth2PasswordGrantManager (line 293) | class OAuth2PasswordGrantManager(AuthManager): method __init__ (line 299) | def __init__( method last_token (line 326) | def last_token(self) -> Optional[dict]: method last_token (line 330) | def last_token(self, value: dict): method get_session (line 338) | def get_session(self, domain_name: str) -> Session: class ApiKeyAuthManager (line 391) | class ApiKeyAuthManager(AuthManager): method __init__ (line 392) | def __init__(self, header_name, api_key): method get_auth (line 396) | def get_auth(self): class CustomValueAuth (line 400) | class CustomValueAuth(AuthBase): method __init__ (line 401) | def __init__(self, header_name, header_value): method __call__ (line 405) | def __call__(self, r): FILE: corehq/motech/const.py class OAuth2ApiSettings (line 56) | class OAuth2ApiSettings: FILE: corehq/motech/dhis2/dbaccessors.py function get_dataset_maps (line 5) | def get_dataset_maps(domain_name): FILE: corehq/motech/dhis2/dhis2_config.py class FormDataValueMap (line 23) | class FormDataValueMap(DocumentSchema): class Dhis2FormConfig (line 28) | class Dhis2FormConfig(DocumentSchema): method wrap (line 52) | def wrap(cls, data): class Dhis2Config (line 63) | class Dhis2Config(DocumentSchema): class FinderConfig (line 67) | class FinderConfig(DocumentSchema): class RelationshipConfig (line 72) | class RelationshipConfig(DocumentSchema): class Dhis2CaseConfig (line 85) | class Dhis2CaseConfig(DocumentSchema): class Dhis2EntityConfig (line 114) | class Dhis2EntityConfig(DocumentSchema): FILE: corehq/motech/dhis2/entities_helpers.py class RelationshipSpec (line 36) | class RelationshipSpec: method as_dict (line 41) | def as_dict(self): function send_dhis2_entities (line 57) | def send_dhis2_entities(requests, repeater, case_trigger_infos): function _update_or_register_teis (line 84) | def _update_or_register_teis(requests, repeater, case_trigger_infos, err... function _create_all_relationships (line 119) | def _create_all_relationships( function _get_tracked_entity_relationship_specs (line 146) | def _get_tracked_entity_relationship_specs(tracked_entity): function _get_info_config_pairs (line 163) | def _get_info_config_pairs(repeater, case_trigger_infos): function get_case_config_for_case_type (line 178) | def get_case_config_for_case_type(case_type, dhis2_entity_config): function get_tracked_entity_and_etag (line 185) | def get_tracked_entity_and_etag(requests, case_trigger_info, case_config): function get_tracked_entity_instance_id (line 214) | def get_tracked_entity_instance_id(case_trigger_info, case_config): function get_tracked_entity_instance_and_etag_by_id (line 223) | def get_tracked_entity_instance_and_etag_by_id(requests, tei_id, case_tr... function find_tracked_entity_instances (line 243) | def find_tracked_entity_instances(requests, case_trigger_info, case_conf... function update_tracked_entity_instance (line 248) | def update_tracked_entity_instance( function _build_tracked_entity (line 289) | def _build_tracked_entity( function update_enrollments (line 315) | def update_enrollments( function register_tracked_entity_instance (line 335) | def register_tracked_entity_instance(requests, case_trigger_info, case_c... function create_relationships (line 374) | def create_relationships( function ensure_relationship_exists (line 447) | def ensure_relationship_exists(requests, relationship_spec, existing_rel... function get_supercase (line 455) | def get_supercase(case_trigger_info, relationship_config): function create_relationship (line 468) | def create_relationship(requests, relationship_spec): function get_or_generate_value (line 479) | def get_or_generate_value(requests, attr_id, value_source_config, case_t... function is_blank (line 502) | def is_blank(value): function generate_value (line 506) | def generate_value(requests, attr_id, generator_params, case_trigger_info): function get_enrollments (line 533) | def get_enrollments(case_trigger_info, case_config): function get_programs_by_id (line 560) | def get_programs_by_id(case_trigger_info, case_config): function get_program_dates (line 576) | def get_program_dates(form_config, case_trigger_info): function save_case_updates (line 589) | def save_case_updates(domain, case_id, case_updates): function set_te_attr (line 606) | def set_te_attr( function validate_tracked_entity (line 631) | def validate_tracked_entity(tracked_entity): function get_tracked_entity_type (line 642) | def get_tracked_entity_type(requests, entity_type_id): function get_geo_json (line 648) | def get_geo_json(form_config, case_trigger_info): FILE: corehq/motech/dhis2/events_helpers.py function send_dhis2_event (line 13) | def send_dhis2_event(request, form_config, payload): function get_event (line 22) | def get_event(domain, config, form_json=None, info=None): function _get_program (line 53) | def _get_program(config, case_trigger_info): function _get_program_stage (line 57) | def _get_program_stage(config, case_trigger_info): function _get_org_unit (line 66) | def _get_org_unit(config, case_trigger_info): function _get_event_date (line 75) | def _get_event_date(config, case_trigger_info): function _get_event_status (line 80) | def _get_event_status(config, case_trigger_info): function _get_completed_date (line 85) | def _get_completed_date(config, case_trigger_info): function _get_datavalues (line 94) | def _get_datavalues(config, case_trigger_info): function _get_coordinate (line 106) | def _get_coordinate(config, case_trigger_info): function _dhis2_geolocation (line 121) | def _dhis2_geolocation(location_string): function validate_event_schema (line 130) | def validate_event_schema(event): FILE: corehq/motech/dhis2/exceptions.py class Dhis2Exception (line 1) | class Dhis2Exception(Exception): class BadTrackedEntityInstanceID (line 5) | class BadTrackedEntityInstanceID(Dhis2Exception): class MultipleInstancesFound (line 13) | class MultipleInstancesFound(Dhis2Exception): FILE: corehq/motech/dhis2/finders.py class TrackedEntityInstanceFinder (line 15) | class TrackedEntityInstanceFinder: method __init__ (line 17) | def __init__(self, requests, case_config): method property_weights (line 22) | def property_weights(self): method confidence_margin (line 26) | def confidence_margin(self): method attr_type_id_value_source_by_case_property (line 30) | def attr_type_id_value_source_by_case_property(self): method find_tracked_entity_instances (line 36) | def find_tracked_entity_instances(self, case_trigger_info): method fetch_query_results (line 67) | def fetch_query_results(self, case_trigger_info): method get_query_filters (line 82) | def get_query_filters(self, case_trigger_info): method get_score (line 92) | def get_score(self, candidate, case_trigger_info): method get_weights (line 95) | def get_weights(self, candidate, case_trigger_info): function get_tei_attr (line 111) | def get_tei_attr(instance, attr_type_id): function is_a_value (line 117) | def is_a_value(value): FILE: corehq/motech/dhis2/forms.py class DataSetMapForm (line 38) | class DataSetMapForm(forms.ModelForm): class Meta (line 91) | class Meta: method __init__ (line 109) | def __init__(self, domain, *args, **kwargs): method save (line 152) | def save(self, commit=True): method clean (line 156) | def clean(self): function add_initial_properties (line 264) | def add_initial_properties(instance, kwargs_initial): function ucr_has_field (line 275) | def ucr_has_field(ucr: ReportConfiguration, field): function valid_ucr_date_column (line 279) | def valid_ucr_date_column(ucr, column_name): function get_connection_settings_field (line 295) | def get_connection_settings_field(domain): function get_ucr_field (line 309) | def get_ucr_field(domain): class DataValueMapBaseForm (line 327) | class DataValueMapBaseForm(forms.ModelForm): class Meta (line 347) | class Meta: method __init__ (line 356) | def __init__(self, dataset_map, *args, **kwargs): method get_form_helper (line 361) | def get_form_helper(self): method save (line 364) | def save(self, commit=True): class DataValueMapCreateForm (line 369) | class DataValueMapCreateForm(DataValueMapBaseForm): method get_form_helper (line 371) | def get_form_helper(self): class DataValueMapUpdateForm (line 390) | class DataValueMapUpdateForm(DataValueMapBaseForm): class Meta (line 393) | class Meta: method get_form_helper (line 403) | def get_form_helper(self): class Dhis2ConfigForm (line 429) | class Dhis2ConfigForm(forms.Form): method __init__ (line 432) | def __init__(self, *args, **kwargs): method clean_form_configs (line 437) | def clean_form_configs(self): class Dhis2EntityConfigForm (line 444) | class Dhis2EntityConfigForm(forms.Form): method clean_case_config (line 451) | def clean_case_config(self): function _validate_form_configs (line 483) | def _validate_form_configs(form_configs): function _int_in_range (line 513) | def _int_in_range(value: Any, lower: int, upper: int) -> bool: FILE: corehq/motech/dhis2/management/commands/populate_couch_datasetmap.py class Command (line 6) | class Command(BaseCommand): method handle (line 8) | def handle(self, **options): FILE: corehq/motech/dhis2/management/commands/populate_sqldatasetmap.py class Command (line 9) | class Command(PopulateSQLCommand): method couch_doc_type (line 11) | def couch_doc_type(cls): method sql_class (line 15) | def sql_class(cls): method update_or_create_sql_object (line 19) | def update_or_create_sql_object(self, doc): method diff_couch_and_sql (line 51) | def diff_couch_and_sql(cls, couch, sql): function get_connection_settings (line 74) | def get_connection_settings(domain, pk): function as_date_or_none (line 83) | def as_date_or_none(date_str): FILE: corehq/motech/dhis2/management/commands/send_datasets.py class Command (line 8) | class Command(BaseCommand): method add_arguments (line 12) | def add_arguments(self, parser): method handle (line 16) | def handle(self, domain_name, **options): FILE: corehq/motech/dhis2/migrations/0001_initial.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/motech/dhis2/migrations/0002_auto_20170322_1323.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/motech/dhis2/migrations/0003_jsonapilog_log_level.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/dhis2/migrations/0004_auto_20171122_0827.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/dhis2/migrations/0005_delete_jsonapilog.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/dhis2/migrations/0006_sqldhis2connection.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/motech/dhis2/migrations/0007_populate_sqldhis2connection.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/motech/dhis2/migrations/0008_rename_sqldhis2connection.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/motech/dhis2/migrations/0009_sqldatasetmap_sqldatavaluemap.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/motech/dhis2/migrations/0010_populate_sqldatasetmap.py function _migrate_from_migration (line 8) | def _migrate_from_migration(apps, schema_editor): class Migration (line 12) | class Migration(migrations.Migration): FILE: corehq/motech/dhis2/migrations/0011_delete_dhis2connection.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/dhis2/migrations/0012_add_complete_date_column_to_sql_dataset_map.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/dhis2/models.py class DataValueMap (line 43) | class DataValueMap(DocumentSchema): class DataSetMap (line 50) | class DataSetMap(Document): method connection_settings (line 78) | def connection_settings(self): method pk (line 83) | def pk(self): class SQLDataSetMap (line 87) | class SQLDataSetMap(models.Model): method __str__ (line 123) | def __str__(self): method ucr (line 127) | def ucr(self) -> Optional[ReportConfiguration]: class SQLDataValueMap (line 134) | class SQLDataValueMap(models.Model): method __str__ (line 144) | def __str__(self): function get_info_for_columns (line 149) | def get_info_for_columns( function _datavalue_map_to_dict (line 184) | def _datavalue_map_to_dict(datavalue_map): function _iter_datavalue_maps (line 191) | def _iter_datavalue_maps(dataset_map): function get_datavalues (line 198) | def get_datavalues( function parse_dataset_for_request (line 272) | def parse_dataset_for_request( function evaluate_complete_date (line 308) | def evaluate_complete_date( function group_dataset_datavalues (line 325) | def group_dataset_datavalues( function _group_data_by_keys (line 366) | def _group_data_by_keys(data: List[dict], keys: list): function get_grouped_datavalues_sets (line 382) | def get_grouped_datavalues_sets( function get_date_range (line 401) | def get_date_range(frequency: str, send_date: date) -> DateSpan: function get_period (line 412) | def get_period(frequency: str, startdate: date) -> str: function as_iso_week (line 423) | def as_iso_week(startdate: date) -> str: function as_iso_quarter (line 428) | def as_iso_quarter(startdate: date) -> str: function should_send_on_date (line 433) | def should_send_on_date( function get_date_filter (line 448) | def get_date_filter(report_config): function get_previous_week (line 462) | def get_previous_week(send_date: date) -> DateSpan: function get_previous_month (line 476) | def get_previous_month(send_date): function get_previous_quarter (line 482) | def get_previous_quarter(send_date): function get_quarter_start_month (line 491) | def get_quarter_start_month(month): function get_date_params (line 495) | def get_date_params(slug, date_span): function get_ucr_data (line 508) | def get_ucr_data(report_config, date_filter, date_span): function get_end_of_period (line 519) | def get_end_of_period(frequency, period): FILE: corehq/motech/dhis2/parse_response.py function get_errors (line 10) | def get_errors(response: dict) -> dict: function get_entity_errors (line 24) | def get_entity_errors(response: dict) -> dict: function get_enrollments_errors (line 37) | def get_enrollments_errors(response: dict) -> dict: function get_events_errors (line 47) | def get_events_errors(response: dict) -> dict: function get_diagnosis_message (line 58) | def get_diagnosis_message(error: str) -> str: FILE: corehq/motech/dhis2/repeaters.py class Dhis2Instance (line 43) | class Dhis2Instance(object): method get_api_version (line 48) | def get_api_version(self) -> int: method update_dhis2_version (line 59) | def update_dhis2_version(self): class Dhis2Repeater (line 84) | class Dhis2Repeater(FormRepeater, Dhis2Instance): class Meta (line 85) | class Meta: method __eq__ (line 97) | def __eq__(self, other): method __hash__ (line 103) | def __hash__(self): method allowed_to_forward (line 106) | def allowed_to_forward(self, payload): method payload_doc (line 115) | def payload_doc(self, repeat_record): method form_class_name (line 119) | def form_class_name(self): method available_for_domain (line 126) | def available_for_domain(cls, domain): method get_payload (line 129) | def get_payload(self, repeat_record): method send_request (line 133) | def send_request(self, repeat_record, payload): method _validate_dhis2_form_config (line 158) | def _validate_dhis2_form_config(self): method save (line 162) | def save(self, *args, **kwargs): class Dhis2EntityRepeater (line 168) | class Dhis2EntityRepeater(CaseRepeater, Dhis2Instance): class Meta (line 169) | class Meta(): method allowed_to_forward (line 181) | def allowed_to_forward(self, payload): method payload_doc (line 187) | def payload_doc(self, repeat_record): method form_class_name (line 191) | def form_class_name(self): method available_for_domain (line 195) | def available_for_domain(cls, domain): method get_payload (line 198) | def get_payload(self, repeat_record): method send_request (line 202) | def send_request(self, repeat_record, payload): method _validate_dhis2_entity_config (line 231) | def _validate_dhis2_entity_config(self): method save (line 235) | def save(self, *args, **kwargs): function get_api_version (line 241) | def get_api_version(dhis2_version): function fetch_system_metadata (line 261) | def fetch_system_metadata(requests): function create_dhis2_event_repeat_records (line 275) | def create_dhis2_event_repeat_records(sender, xform, **kwargs): function create_dhis2_entity_repeat_records (line 279) | def create_dhis2_entity_repeat_records(sender, xform, **kwargs): FILE: corehq/motech/dhis2/schema.py function get_attribute_schema (line 17) | def get_attribute_schema() -> dict: function get_event_schema (line 30) | def get_event_schema() -> dict: function get_note_schema (line 104) | def get_note_schema() -> dict: function get_relationship_schema (line 113) | def get_relationship_schema() -> dict: function get_tracked_entity_schema (line 130) | def get_tracked_entity_schema() -> dict: function get_coordinate_schema (line 191) | def get_coordinate_schema(): function get_geometry_schema (line 198) | def get_geometry_schema(): function get_user_info_schema (line 205) | def get_user_info_schema(): function get_program_owner_schema (line 214) | def get_program_owner_schema(): function get_tracked_entity_instance_schema (line 222) | def get_tracked_entity_instance_schema(): FILE: corehq/motech/dhis2/static/dhis2/js/dataset_map_create.js function showCompleteDateColumnInput (line 5) | function showCompleteDateColumnInput(shouldShow) { function evaluateCompleteDateSelection (line 18) | function evaluateCompleteDateSelection() { FILE: corehq/motech/dhis2/static/dhis2/js/dataset_map_update.js function showCompleteDateColumnInput (line 6) | function showCompleteDateColumnInput(shouldShow) { function evaluateCompleteDateSelection (line 19) | function evaluateCompleteDateSelection() { FILE: corehq/motech/dhis2/static/dhis2/js/json_syntax_parse.js class JSONParseError (line 87) | class JSONParseError extends SyntaxError { method constructor (line 88) | constructor(error, text, context, caller, editor) { FILE: corehq/motech/dhis2/tasks.py function send_datasets_for_all_domains (line 29) | def send_datasets_for_all_domains(): function send_datasets (line 37) | def send_datasets(domain_name, send_now=False, send_date=None): function send_dataset (line 47) | def send_dataset( FILE: corehq/motech/dhis2/tests/test_dhis_config.py class TestDhisConfigValidation (line 14) | class TestDhisConfigValidation(TestCase): method setUp (line 16) | def setUp(self): method test_form_validation (line 20) | def test_form_validation(self): method test_empty_json (line 34) | def test_empty_json(self): method test_missing_program_id (line 50) | def test_missing_program_id(self): method test_minimal_config (line 65) | def test_minimal_config(self): method test_config_empty_datavalue_map (line 91) | def test_config_empty_datavalue_map(self): method test_full_config (line 125) | def test_full_config(self): method test_org_unit_id_migration (line 160) | def test_org_unit_id_migration(self): class TestDhis2CaseConfig (line 194) | class TestDhis2CaseConfig(SimpleTestCase): method test_default (line 196) | def test_default(self): method test_one_relationship_given (line 209) | def test_one_relationship_given(self): method test_index_given_twice (line 225) | def test_index_given_twice(self): FILE: corehq/motech/dhis2/tests/test_entities_helpers.py class ValidateTrackedEntityTests (line 46) | class ValidateTrackedEntityTests(SimpleTestCase): method test_valid (line 48) | def test_valid(self): method test_extra_key (line 58) | def test_extra_key(self): method test_missing_key (line 67) | def test_missing_key(self): method test_bad_data_type (line 74) | def test_bad_data_type(self): class TestDhis2EntitiesHelpers (line 83) | class TestDhis2EntitiesHelpers(TestCase): method setUpClass (line 86) | def setUpClass(cls): method tearDownClass (line 106) | def tearDownClass(cls): method test_get_programs_by_id (line 112) | def test_get_programs_by_id(self): class TestCreateRelationships (line 186) | class TestCreateRelationships(TestCase): method setUpClass (line 189) | def setUpClass(cls): method tearDownClass (line 195) | def tearDownClass(cls): method setUp (line 199) | def setUp(self): method test_no_relationships (line 214) | def test_no_relationships(self): method test_one_relationship_given (line 247) | def test_one_relationship_given(self): method test_index_given_twice (line 288) | def test_index_given_twice(self): method test_both_relationships_given (line 341) | def test_both_relationships_given(self): method test_existing_relationship_not_created_again (line 391) | def test_existing_relationship_not_created_again(self): class TestRegisterTrackedEntityInstance (line 448) | class TestRegisterTrackedEntityInstance(TestCase): method setUpClass (line 450) | def setUpClass(cls): method tearDownClass (line 456) | def tearDownClass(cls): method setUp (line 460) | def setUp(self): method test_register_tracked_entity_instance_errors (line 492) | def test_register_tracked_entity_instance_errors(self): class TestUpdateTrackedEntityInstance (line 512) | class TestUpdateTrackedEntityInstance(TestCase): method setUpClass (line 514) | def setUpClass(cls): method tearDownClass (line 520) | def tearDownClass(cls): method setUp (line 524) | def setUp(self): method test_update_tracked_entity_instance_errors (line 553) | def test_update_tracked_entity_instance_errors(self): class TestNothingToSend (line 564) | class TestNothingToSend(TestCase): method setUp (line 566) | def setUp(self): method tearDown (line 573) | def tearDown(self): method test_204_response (line 576) | def test_204_response(self): class TestRequests (line 592) | class TestRequests(TestCase): method setUpClass (line 595) | def setUpClass(cls): method tearDownClass (line 601) | def tearDownClass(cls): method setUp (line 605) | def setUp(self): method test_requests (line 661) | def test_requests(self): function set_up_cases (line 731) | def set_up_cases(factory, with_dhis2_id=True): class TestGetSupercase (line 775) | class TestGetSupercase(TestCase): method setUpClass (line 778) | def setUpClass(cls): method tearDownClass (line 784) | def tearDownClass(cls): method setUp (line 788) | def setUp(self): method test_happy_path (line 791) | def test_happy_path(self): function test_doctests (line 804) | def test_doctests(): function are_cases_equal (line 809) | def are_cases_equal(a, b): # or at least equal enough for our test class Response (line 814) | class Response: method __init__ (line 816) | def __init__(self, data): method json (line 819) | def json(self): FILE: corehq/motech/dhis2/tests/test_events_helpers.py class TestDhis2EventsHelpers (line 21) | class TestDhis2EventsHelpers(TestCase): method setUpClass (line 24) | def setUpClass(cls): method tearDownClass (line 44) | def tearDownClass(cls): method setUp (line 50) | def setUp(self): method test_form_processing_with_owner (line 105) | def test_form_processing_with_owner(self): class TestNothingToSend (line 136) | class TestNothingToSend(TestCase): method setUp (line 138) | def setUp(self): method tearDown (line 145) | def tearDown(self): method test_204_response (line 148) | def test_204_response(self): function test_doctests (line 178) | def test_doctests(): FILE: corehq/motech/dhis2/tests/test_finders.py function test_doctests (line 6) | def test_doctests(): FILE: corehq/motech/dhis2/tests/test_forms.py function test_int_in_range (line 8) | def test_int_in_range(): function test_doctests (line 19) | def test_doctests(): FILE: corehq/motech/dhis2/tests/test_models.py function test_should_send_on_date (line 47) | def test_should_send_on_date(): function test_get_previous_week (line 86) | def test_get_previous_week(): function test_get_previous_month (line 99) | def test_get_previous_month(): function test_get_previous_quarter (line 111) | def test_get_previous_quarter(): function test_get_quarter_start_month (line 125) | def test_get_quarter_start_month(): function test_get_period (line 133) | def test_get_period(): function test_get_date_range (line 146) | def test_get_date_range(): function _remove_doc_types (line 159) | def _remove_doc_types(dict_): class GetInfoForColumnsTests (line 171) | class GetInfoForColumnsTests(TestCase): method setUp (line 212) | def setUp(self): method tearDown (line 249) | def tearDown(self): method test_couch (line 254) | def test_couch(self): method test_sql (line 258) | def test_sql(self): class TestDifferentDataSetMaps (line 263) | class TestDifferentDataSetMaps(TestCase): method setUp (line 266) | def setUp(self): method tearDown (line 290) | def tearDown(self): method test_caching (line 294) | def test_caching(self): class TestGetGroupedDatasets (line 318) | class TestGetGroupedDatasets(TestCase): method test_group_data_by_keys (line 320) | def test_group_data_by_keys(self): method test_group_by_period (line 367) | def test_group_by_period(self): method test_group_by_orgUnit (line 413) | def test_group_by_orgUnit(self): method test_group_by_orgUnit_and_period (line 449) | def test_group_by_orgUnit_and_period(self): class TestGetEndOfPeriod (line 482) | class TestGetEndOfPeriod(TestCase): method test_end_of_week_period (line 484) | def test_end_of_week_period(self): method test_end_of_month_period (line 491) | def test_end_of_month_period(self): method test_end_of_quarter_period (line 498) | def test_end_of_quarter_period(self): class TestParseDatasetForRequest (line 506) | class TestParseDatasetForRequest(TestCase): method create_sqldataset_map (line 508) | def create_sqldataset_map( method create_datavalues (line 534) | def create_datavalues(self, dataset_map, ucr_data): method tearDown (line 544) | def tearDown(self): method test_no_dataset_map_grouping (line 553) | def test_no_dataset_map_grouping(self, get_date_filter, get_ucr_data, ... method test_no_dataset_map_grouping__complete_date_specified (line 578) | def test_no_dataset_map_grouping__complete_date_specified(self, get_da... method test_dataset_map_grouping__complete_date_column_specified (line 605) | def test_dataset_map_grouping__complete_date_column_specified(self, ge... method test_dataset_map_grouping__org_unit_complete_date_columns (line 643) | def test_dataset_map_grouping__org_unit_complete_date_columns(self, ge... method test_no_dataset_map_grouping__complete_date_on_period_end (line 681) | def test_no_dataset_map_grouping__complete_date_on_period_end(self, ge... method test_dataset_map_grouping__complete_date_on_period_end (line 708) | def test_dataset_map_grouping__complete_date_on_period_end(self, get_d... class TestGetDataValues (line 739) | class TestGetDataValues(TestCase): method test_get_datavalues_serializes_datetimes (line 741) | def test_get_datavalues_serializes_datetimes(self): function get_dataset_map (line 789) | def get_dataset_map(): function generate_id (line 815) | def generate_id(): function mock_ucr_data_basic (line 823) | def mock_ucr_data_basic(): function mock_ucr_data (line 862) | def mock_ucr_data( FILE: corehq/motech/dhis2/tests/test_parse_response.py class GetErrorTests (line 9) | class GetErrorTests(SimpleTestCase, TestFileMixin): method test_imported (line 13) | def test_imported(self): method test_ignored (line 18) | def test_ignored(self): FILE: corehq/motech/dhis2/tests/test_repeaters.py class Dhis2ApiTests (line 43) | class Dhis2ApiTests(SimpleTestCase): method setUp (line 49) | def setUp(self): method test_get_index (line 53) | def test_get_index(self): method test_query (line 63) | def test_query(self): method test_grid_query (line 81) | def test_grid_query(self): method test_create (line 95) | def test_create(self): method test_update (line 122) | def test_update(self): function _is_attr_equal (line 133) | def _is_attr_equal(entity, attr_id, value): function _update_attr (line 137) | def _update_attr(entity, attr_id, value): function _assert_status_2xx (line 148) | def _assert_status_2xx(response): function get_tracked_entity (line 156) | def get_tracked_entity(requests, te_id): class ApiVersionTests (line 170) | class ApiVersionTests(SimpleTestCase): method __init__ (line 172) | def __init__(self, *args, **kwargs): method test_major_minor_patch (line 176) | def test_major_minor_patch(self): method test_major_minor (line 183) | def test_major_minor(self): method test_major_raises_exception (line 190) | def test_major_raises_exception(self): method test_blank_raises_exception (line 198) | def test_blank_raises_exception(self): class SlowApiVersionTest (line 207) | class SlowApiVersionTest(TestCase): method setUp (line 209) | def setUp(self): method test_none_fetches_metadata (line 222) | def test_none_fetches_metadata(self): method test_max_version_exceeded_notifies_admins (line 229) | def test_max_version_exceeded_notifies_admins(self): class TestAllowedToForward (line 241) | class TestAllowedToForward(SimpleTestCase): method test_entity_repeater_dhis2_form (line 243) | def test_entity_repeater_dhis2_form(self): method test_event_repeater_dhis2_form (line 248) | def test_event_repeater_dhis2_form(self): method test_event_repeater_whitelist_blocked (line 253) | def test_event_repeater_whitelist_blocked(self): method test_event_repeater_whitelist_ok (line 260) | def test_event_repeater_whitelist_ok(self): method test_event_repeater_ok (line 267) | def test_event_repeater_ok(self): FILE: corehq/motech/dhis2/tests/test_schema.py function test_tracked_entity_instance_1 (line 13) | def test_tracked_entity_instance_1(): function test_doctests (line 21) | def test_doctests(): FILE: corehq/motech/dhis2/tests/test_tasks.py class TestSendDatasetsForAllDomains (line 7) | class TestSendDatasetsForAllDomains(TestCase): method setUp (line 11) | def setUp(self): method tearDown (line 18) | def tearDown(self): method test_check_domain_exists (line 25) | def test_check_domain_exists(self): FILE: corehq/motech/dhis2/tests/test_views.py class BaseViewTest (line 21) | class BaseViewTest(TestCase): method setUpClass (line 23) | def setUpClass(cls): method setUp (line 33) | def setUp(self): method _create_data (line 38) | def _create_data(cls): method tearDownClass (line 74) | def tearDownClass(cls): class TestDataSetMapUpdateView (line 80) | class TestDataSetMapUpdateView(BaseViewTest): method test_user_from_other_domain_404 (line 83) | def test_user_from_other_domain_404(self): method test_flag_not_enabled (line 111) | def test_flag_not_enabled(self): method test_update_ok (line 133) | def test_update_ok(self): method test_invalid_data_element_id_update (line 159) | def test_invalid_data_element_id_update(self): method tearDownClass (line 184) | def tearDownClass(cls): class TestConfigDhis2RepeaterView (line 190) | class TestConfigDhis2RepeaterView(BaseViewTest): method _create_data (line 193) | def _create_data(cls): method test_config_get (line 210) | def test_config_get(self): method test_config_post_with_correct_data (line 214) | def test_config_post_with_correct_data(self): method test_config_post_with_incorrect_data (line 233) | def test_config_post_with_incorrect_data(self): class TestConfigDhis2EntityRepeaterView (line 253) | class TestConfigDhis2EntityRepeaterView(BaseViewTest): method _create_data (line 256) | def _create_data(cls): method test_config_get (line 273) | def test_config_get(self): method test_config_post_with_correct_data (line 277) | def test_config_post_with_correct_data(self): FILE: corehq/motech/dhis2/views.py class DataSetMapListView (line 43) | class DataSetMapListView(BaseProjectSettingsView, CRUDPaginatedViewMixin): method total (line 53) | def total(self): method base_query (line 57) | def base_query(self): method page_context (line 61) | def page_context(self): method paginated_list (line 65) | def paginated_list(self): method column_names (line 74) | def column_names(self): method refresh_item (line 84) | def refresh_item(self, item_id): method _get_item_data (line 87) | def _get_item_data(self, dataset_map): method delete_item (line 106) | def delete_item(self, item_id): method post (line 114) | def post(self, *args, **kwargs): class DataSetMapJsonCreateView (line 121) | class DataSetMapJsonCreateView(BaseProjectSettingsView): method get_context_data (line 126) | def get_context_data(self, **kwargs): method post (line 131) | def post(self, request, domain, **kwargs): class DataSetMapJsonEditView (line 140) | class DataSetMapJsonEditView(BaseProjectSettingsView): method page_url (line 146) | def page_url(self): method get_context_data (line 149) | def get_context_data(self, **kwargs): method post (line 163) | def post(self, request, domain, **kwargs): function _dsm_to_dict (line 169) | def _dsm_to_dict(dataset_map): function _save_dsm_dict (line 181) | def _save_dsm_dict(domain, dsm_dict): class DataSetMapCreateView (line 198) | class DataSetMapCreateView(BaseCreateView, BaseProjectSettingsView): method dispatch (line 208) | def dispatch(self, request, *args, **kwargs): method get_queryset (line 211) | def get_queryset(self): method get_form_kwargs (line 214) | def get_form_kwargs(self): method get_success_url (line 219) | def get_success_url(self): class DataSetMapUpdateView (line 226) | class DataSetMapUpdateView(BaseUpdateView, BaseProjectSettingsView, method dispatch (line 241) | def dispatch(self, request, *args, **kwargs): method get_queryset (line 244) | def get_queryset(self): method get_form_kwargs (line 247) | def get_form_kwargs(self): method get_success_url (line 252) | def get_success_url(self): method page_url (line 259) | def page_url(self): method post (line 262) | def post(self, request, *args, **kwargs): method total (line 275) | def total(self): method base_query (line 279) | def base_query(self): method page_context (line 283) | def page_context(self): method paginated_list (line 290) | def paginated_list(self): method refresh_item (line 298) | def refresh_item(self, item_id): method get_create_item_data (line 301) | def get_create_item_data(self, create_form): method get_updated_item_data (line 308) | def get_updated_item_data(self, update_form): method delete_item (line 315) | def delete_item(self, item_id): method column_names (line 325) | def column_names(self): method _get_item_data (line 335) | def _get_item_data(self, datavalue_map): method get_create_form (line 350) | def get_create_form(self, is_blank=False): method get_update_form (line 355) | def get_update_form(self, instance=None): function send_dataset_now (line 369) | def send_dataset_now(request, domain, pk): function config_dhis2_repeater (line 379) | def config_dhis2_repeater(request, domain, repeater_id): function config_dhis2_entity_repeater (line 408) | def config_dhis2_entity_repeater(request, domain, repeater_id): class AddDhis2RepeaterView (line 444) | class AddDhis2RepeaterView(AddRepeaterView): method page_url (line 451) | def page_url(self): class EditDhis2RepeaterView (line 455) | class EditDhis2RepeaterView(EditRepeaterView, AddDhis2RepeaterView): class AddDhis2EntityRepeaterView (line 460) | class AddDhis2EntityRepeaterView(AddDhis2RepeaterView): class EditDhis2EntityRepeaterView (line 467) | class EditDhis2EntityRepeaterView(EditRepeaterView, AddDhis2EntityRepeat... FILE: corehq/motech/exceptions.py class ConfigurationError (line 1) | class ConfigurationError(Exception): class RemoteAPIError (line 5) | class RemoteAPIError(Exception): class JsonpathError (line 9) | class JsonpathError(Exception): FILE: corehq/motech/fhir/admin.py class FHIRResourcePropertyInline (line 15) | class FHIRResourcePropertyInline(admin.TabularInline): method calculated_value_source (line 21) | def calculated_value_source(self, obj): class FHIRResourceTypeAdmin (line 35) | class FHIRResourceTypeAdmin(admin.ModelAdmin): method has_add_permission (line 53) | def has_add_permission(self, request): class FHIRImportConfigAdmin (line 59) | class FHIRImportConfigAdmin(admin.ModelAdmin): class FHIRImportResourcePropertyInline (line 75) | class FHIRImportResourcePropertyInline(admin.TabularInline): class FHIRImportResourceTypeAdmin (line 81) | class FHIRImportResourceTypeAdmin(admin.ModelAdmin): method domain (line 97) | def domain(self, obj): class ResourceTypeRelationshipAdmin (line 101) | class ResourceTypeRelationshipAdmin(admin.ModelAdmin): method domain (line 116) | def domain(self, obj): FILE: corehq/motech/fhir/apps.py class FHIRAppConfig (line 4) | class FHIRAppConfig(AppConfig): method ready (line 7) | def ready(self): FILE: corehq/motech/fhir/bundle.py function get_bundle (line 13) | def get_bundle(requests, endpoint=None, *, url=None, **kwargs) -> dict: function iter_bundle (line 32) | def iter_bundle(bundle: dict) -> Generator: function get_next_url (line 52) | def get_next_url(bundle: dict) -> Optional[str]: FILE: corehq/motech/fhir/forms.py class FHIRRepeaterForm (line 9) | class FHIRRepeaterForm(GenericRepeaterForm): method get_ordered_crispy_form_fields (line 28) | def get_ordered_crispy_form_fields(self): FILE: corehq/motech/fhir/matchers.py class DuplicateWarning (line 15) | class DuplicateWarning(Warning): class ResourceMatcher (line 19) | class ResourceMatcher: method __init__ (line 35) | def __init__(self, resource: dict): method find_match (line 38) | def find_match(self, candidates: Iterable[dict]): method find_matches (line 46) | def find_matches(self, candidates: Iterable[dict], *, keep_dups=True): method get_score (line 71) | def get_score(self, candidate): method iter_weights (line 74) | def iter_weights(self, candidate): class ComparisonMethod (line 83) | class ComparisonMethod: method __init__ (line 88) | def __init__(self, jsonpath: str): method is_match (line 91) | def is_match(self, resource: dict, candidate: dict) -> Optional[bool]: method compare (line 99) | def compare(a, b) -> bool: class IsEqual (line 103) | class IsEqual(ComparisonMethod): method compare (line 106) | def compare(a, b): class GivenName (line 110) | class GivenName(ComparisonMethod): method compare (line 113) | def compare(a, b): class AnyGivenName (line 117) | class AnyGivenName(ComparisonMethod): method compare (line 130) | def compare(a, b): class Age (line 134) | class Age(ComparisonMethod): method compare (line 137) | def compare(a, b): class OrganizationName (line 142) | class OrganizationName(ComparisonMethod): method compare (line 145) | def compare(a, b): class NegativeIdentifier (line 150) | class NegativeIdentifier(ComparisonMethod): method compare (line 160) | def compare(a, b): function _value_ge_zero (line 169) | def _value_ge_zero(instance, attrib, value): class PropertyWeight (line 174) | class PropertyWeight: method method (line 187) | def method(self): class PersonMatcher (line 191) | class PersonMatcher(ResourceMatcher): class PatientMatcher (line 230) | class PatientMatcher(ResourceMatcher): class OrganizationMatcher (line 239) | class OrganizationMatcher(ResourceMatcher): FILE: corehq/motech/fhir/migrations/0001_initial.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/fhir/migrations/0002_fhirresourcetype.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/motech/fhir/migrations/0003_auto_20210319_0948.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/motech/fhir/migrations/0004_remove_fhirresourcetype_template.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/fhir/migrations/0005_fhirimportconfig.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/motech/fhir/migrations/0006_fhirimportresourcetype_resourcetyperelationship.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/fhir/migrations/0007_fhirimportresourceproperty.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/fhir/migrations/0008_blank_search_params.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/motech/fhir/migrations/0009_resourcetyperelationship_related_resource_is_parent.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/motech/fhir/migrations/0010_fhirimportconfig_frequency_choices.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/fhir/migrations/0011_fhirimportconfig_owner_type.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/motech/fhir/models.py class FHIRResourceType (line 72) | class FHIRResourceType(models.Model): class Meta (line 81) | class Meta: method __str__ (line 84) | def __str__(self): method get_json_schema (line 87) | def get_json_schema(self) -> dict: method get_names (line 110) | def get_names(cls, version=FHIR_VERSION_4_0_1): method validate_resource (line 115) | def validate_resource(self, fhir_resource): method _schema_file (line 127) | def _schema_file(self): method _schema_dir (line 131) | def _schema_dir(self): function get_schema_dir (line 135) | def get_schema_dir(version): class FHIRResourceProperty (line 141) | class FHIRResourceProperty(models.Model): method __str__ (line 159) | def __str__(self): method save (line 165) | def save(self, *args, **kwargs): method case_type (line 185) | def case_type(self) -> CaseType: method value_source_jsonpath (line 189) | def value_source_jsonpath(self) -> str: method get_value_source (line 196) | def get_value_source(self) -> ValueSource: function build_fhir_resource (line 216) | def build_fhir_resource( function build_fhir_resource_for_info (line 233) | def build_fhir_resource_for_info( function _build_fhir_resource (line 246) | def _build_fhir_resource( function get_case_trigger_info (line 268) | def get_case_trigger_info( function _get_case_property_names (line 313) | def _get_case_property_names(resource_type): function _str_or_none (line 327) | def _str_or_none(value): function get_resource_type_or_none (line 331) | def get_resource_type_or_none(case, fhir_version) -> Optional[FHIRResour... class FHIRImportConfig (line 347) | class FHIRImportConfig(models.Model): class Meta (line 367) | class Meta: method __str__ (line 373) | def __str__(self): method clean (line 376) | def clean(self): method get_owner (line 383) | def get_owner(self): class FHIRImportResourceType (line 404) | class FHIRImportResourceType(models.Model): method __str__ (line 441) | def __str__(self): method domain (line 445) | def domain(self): method iter_case_property_value_sources (line 448) | def iter_case_property_value_sources(self): class ResourceTypeRelationship (line 459) | class ResourceTypeRelationship(models.Model): method __str__ (line 520) | def __str__(self): class FHIRImportResourceProperty (line 528) | class FHIRImportResourceProperty(models.Model): method __str__ (line 536) | def __str__(self): method case_type (line 543) | def case_type(self) -> CaseType: method value_source_jsonpath (line 547) | def value_source_jsonpath(self) -> str: method get_value_source (line 550) | def get_value_source(self) -> ValueSource: method save (line 553) | def save(self, *args, **kwargs): FILE: corehq/motech/fhir/repeater_helpers.py function register_patients (line 19) | def register_patients( function find_patient (line 51) | def find_patient(requests, resource): function register_patient (line 63) | def register_patient(requests, resource): function _check_id (line 70) | def _check_id(patient): function get_info_resource_list (line 79) | def get_info_resource_list( function send_resources (line 97) | def send_resources( function send_resource (line 115) | def send_resource( function send_bundle (line 142) | def send_bundle( function get_bundle_entries (line 153) | def get_bundle_entries( function create_bundle (line 185) | def create_bundle( function _set_external_id (line 200) | def _set_external_id(info, external_id, repeater_id): FILE: corehq/motech/fhir/repeaters.py class FHIRRepeater (line 35) | class FHIRRepeater(CaseRepeater): class Meta (line 36) | class Meta: method payload_doc (line 50) | def payload_doc(self, repeat_record): method form_class_name (line 54) | def form_class_name(self): method available_for_domain (line 59) | def available_for_domain(cls, domain): method allowed_to_forward (line 63) | def allowed_to_forward(self, payload): method send_request (line 69) | def send_request(self, repeat_record, payload): method get_infos_resource_types (line 103) | def get_infos_resource_types( function _get_cases_by_id (line 144) | def _get_cases_by_id(domain, case_blocks): function _get_resource_types_by_case_type (line 150) | def _get_resource_types_by_case_type(domain, fhir_version, cases): FILE: corehq/motech/fhir/searchers.py class ResourceSearcher (line 13) | class ResourceSearcher: method __init__ (line 23) | def __init__(self, requests: Requests, resource: dict): method iter_searches (line 27) | def iter_searches(self) -> Generator['Search', None, None]: class Search (line 35) | class Search: method __init__ (line 40) | def __init__( method iter_candidates (line 50) | def iter_candidates(self) -> Generator: method _get_request_params (line 69) | def _get_request_params(self) -> List[dict]: class ParamHelper (line 82) | class ParamHelper: method __init__ (line 90) | def __init__(self, jsonpath: str): method get_value (line 93) | def get_value(self, resource: dict) -> Union[None, str, List[str]]: method prepare_value (line 98) | def prepare_value(value) -> Union[str, List[str]]: class GivenName (line 104) | class GivenName(ParamHelper): method prepare_value (line 107) | def prepare_value(value): class EachUniqueValue (line 117) | class EachUniqueValue(ParamHelper): method prepare_value (line 120) | def prepare_value(value): class SystemCode (line 134) | class SystemCode: method __str__ (line 145) | def __str__(self): class SystemCodeParam (line 151) | class SystemCodeParam(ParamHelper): method prepare_value (line 154) | def prepare_value(value): class SearchParam (line 163) | class SearchParam: method param (line 174) | def param(self): class PatientSearcher (line 178) | class PatientSearcher(ResourceSearcher): function update_all (line 216) | def update_all(dicts: List[dict], key, value): function multiply (line 221) | def multiply(dicts: List[dict], key, values: list) -> List[dict]: FILE: corehq/motech/fhir/serializers.py function join_strings (line 9) | def join_strings(value: List[str]) -> str: function split_string (line 16) | def split_string(value: str) -> List[str]: FILE: corehq/motech/fhir/signals.py function create_fhir_repeat_records (line 9) | def create_fhir_repeat_records(sender, xform, **kwargs): FILE: corehq/motech/fhir/tasks.py function run_daily_importers (line 40) | def run_daily_importers(): function run_weekly_importers (line 53) | def run_weekly_importers(): function run_monthly_importers (line 66) | def run_monthly_importers(): function run_importer (line 76) | def run_importer(importer_id): function import_resource_type (line 103) | def import_resource_type( function iter_resources (line 115) | def iter_resources( function import_resource (line 133) | def import_resource( function claim_service_request (line 176) | def claim_service_request(requests, service_request, case_id, attempt=0): function build_case_block (line 209) | def build_case_block(resource_type, resource, suggested_case_id): function get_case_id_or_none (line 248) | def get_case_id_or_none(resource): function get_case_by_id (line 261) | def get_case_by_id(domain, case_id): function get_case_by_external_id (line 269) | def get_case_by_external_id(domain, external_id, case_type): function get_caseblock_kwargs (line 278) | def get_caseblock_kwargs(resource_type, resource): function get_name (line 294) | def get_name(resource): function import_related (line 305) | def import_related( function validate_parent_ref (line 334) | def validate_parent_ref(parent_ref, parent_resource_type): function get_resource (line 349) | def get_resource(requests, reference): function create_parent_indices (line 359) | def create_parent_indices( class ServiceRequestNotActive (line 397) | class ServiceRequestNotActive(Exception): FILE: corehq/motech/fhir/tests/test_bundle.py function test_doctests (line 6) | def test_doctests(): FILE: corehq/motech/fhir/tests/test_fhir_views.py class BaseFHIRViewTest (line 31) | class BaseFHIRViewTest(TestCase): method setUpClass (line 33) | def setUpClass(cls): method setUp (line 45) | def setUp(self): method tearDownClass (line 50) | def tearDownClass(cls): function delete_username (line 57) | def delete_username(domain, username): class TestFHIRGetView (line 63) | class TestFHIRGetView(BaseFHIRViewTest): method test_flag_not_enabled (line 64) | def test_flag_not_enabled(self): method test_unsupported_fhir_version (line 70) | def test_unsupported_fhir_version(self): method test_missing_case_id (line 81) | def test_missing_case_id(self): method test_auth_bad_resource (line 87) | def test_auth_bad_resource(self): method test_get (line 98) | def test_get(self): class TestFHIRSearchView (line 112) | class TestFHIRSearchView(BaseFHIRViewTest): method test_flag_not_enabled (line 113) | def test_flag_not_enabled(self): method test_unsupported_fhir_version (line 119) | def test_unsupported_fhir_version(self): method test_no_patient_id (line 130) | def test_no_patient_id(self): method test_deleted_case (line 140) | def test_deleted_case(self): method test_missing_case_id (line 150) | def test_missing_case_id(self): method test_no_case_types_for_resource_type (line 160) | def test_no_case_types_for_resource_type(self): method test_search (line 171) | def test_search(self): method test_search_patient_using_patient_id (line 191) | def test_search_patient_using_patient_id(self): method test_no_resource_provided (line 211) | def test_no_resource_provided(self): function _setup_cases (line 221) | def _setup_cases(owner_id): function _get_caseblock (line 243) | def _get_caseblock(case_id, case_type, owner_id, updates=None): function _setup_mappings (line 253) | def _setup_mappings(): FILE: corehq/motech/fhir/tests/test_matchers.py function test_given_name_method (line 35) | def test_given_name_method(resource, candidate, expected): function test_organization_name_method (line 52) | def test_organization_name_method(resource, candidate, expected): function check_method (line 63) | def check_method(method, a, b, expected): function test_negative_identifier (line 74) | def test_negative_identifier(a, b, expected): class TestPatientCandidates (line 79) | class TestPatientCandidates(SimpleTestCase): method test_with_commcare_id (line 81) | def test_with_commcare_id(self): function test_doctests (line 138) | def test_doctests(): FILE: corehq/motech/fhir/tests/test_model_functions.py class TestGetCaseTriggerInfo (line 21) | class TestGetCaseTriggerInfo(TestCase): method setUp (line 23) | def setUp(self): method tearDown (line 41) | def tearDown(self): method test_case_properties (line 44) | def test_case_properties(self): class TestBuildFHIRResource (line 62) | class TestBuildFHIRResource(TestCase): method setUpClass (line 65) | def setUpClass(cls): method tearDownClass (line 101) | def tearDownClass(cls): method test_build_fhir_resource (line 105) | def test_build_fhir_resource(self): method test_num_queries (line 118) | def test_num_queries(self): FILE: corehq/motech/fhir/tests/test_models.py class TestCaseWithConnectionSettings (line 38) | class TestCaseWithConnectionSettings(TestCase): method setUpClass (line 41) | def setUpClass(cls): method tearDownClass (line 50) | def tearDownClass(cls): class TestFHIRImportConfig (line 55) | class TestFHIRImportConfig(TestCaseWithConnectionSettings): method setUpClass (line 58) | def setUpClass(cls): method tearDownClass (line 67) | def tearDownClass(cls): method test_connection_settings_null (line 71) | def test_connection_settings_null(self): method test_connection_settings_protected (line 83) | def test_connection_settings_protected(self): method test_fhir_version_good (line 94) | def test_fhir_version_good(self): method test_fhir_version_bad (line 104) | def test_fhir_version_bad(self): method test_frequency_good (line 115) | def test_frequency_good(self): method test_frequency_bad (line 125) | def test_frequency_bad(self): method test_owner_id_missing (line 136) | def test_owner_id_missing(self): method test_owner_id_too_long (line 145) | def test_owner_id_too_long(self): class TestFHIRImportConfigGetOwner (line 163) | class TestFHIRImportConfigGetOwner(TestCaseWithConnectionSettings): method test_owner_type_missing (line 165) | def test_owner_type_missing(self): method test_owner_type_bad (line 174) | def test_owner_type_bad(self): method test_user_does_not_exist (line 184) | def test_user_does_not_exist(self): method test_group_does_not_exist (line 194) | def test_group_does_not_exist(self): method test_location_does_not_exist (line 204) | def test_location_does_not_exist(self): class TestCaseWithReferral (line 215) | class TestCaseWithReferral(TestCaseWithConnectionSettings): method setUpClass (line 218) | def setUpClass(cls): method tearDownClass (line 231) | def tearDownClass(cls): class TestFHIRImportResourceType (line 237) | class TestFHIRImportResourceType(TestCaseWithReferral): method setUpClass (line 240) | def setUpClass(cls): method tearDownClass (line 248) | def tearDownClass(cls): method test_search_params_empty (line 252) | def test_search_params_empty(self): method test_related_resource_types (line 260) | def test_related_resource_types(self): method test_domain (line 283) | def test_domain(self): class TestFHIRImportResourceProperty (line 292) | class TestFHIRImportResourceProperty(TestCaseWithReferral): method setUpClass (line 295) | def setUpClass(cls): method tearDownClass (line 325) | def tearDownClass(cls): method test_related_name (line 332) | def test_related_name(self): method test_case_type (line 341) | def test_case_type(self): method test_jsonpath_set (line 346) | def test_jsonpath_set(self): method test_jsonpath_notset (line 352) | def test_jsonpath_notset(self): method test_value_source_good (line 361) | def test_value_source_good(self): method test_value_source_bad (line 366) | def test_value_source_bad(self): method test_iter_case_property_value_sources (line 373) | def test_iter_case_property_value_sources(self): class TestConfigurationErrors (line 425) | class TestConfigurationErrors(TestCase): method setUpClass (line 428) | def setUpClass(cls): method tearDownClass (line 444) | def tearDownClass(cls): method setUp (line 450) | def setUp(self): method test_resource_type_name (line 453) | def test_resource_type_name(self): method test_case_types_dont_match (line 461) | def test_case_types_dont_match(self): method test_value_source_config (line 477) | def test_value_source_config(self): method test_no_jsonpath (line 495) | def test_no_jsonpath(self): method test_ok (line 507) | def test_ok(self): class TestModelIntegrity (line 521) | class TestModelIntegrity(TestCase): method setUpClass (line 524) | def setUpClass(cls): method tearDownClass (line 537) | def tearDownClass(cls): method test_two_resource_types_one_case_type_bad (line 542) | def test_two_resource_types_one_case_type_bad(self): method test_two_case_types_one_resource_type_ok (line 553) | def test_two_case_types_one_resource_type_ok(self): class TestResourceValidation (line 571) | class TestResourceValidation(TestCase): method setUpClass (line 574) | def setUpClass(cls): method tearDownClass (line 587) | def tearDownClass(cls): method test_minimal (line 592) | def test_minimal(self): method test_required_property (line 596) | def test_required_property(self): method test_bad_data_type (line 602) | def test_bad_data_type(self): method test_bad_format (line 611) | def test_bad_format(self): method test_bad_scalar (line 620) | def test_bad_scalar(self): method test_bad_vector (line 629) | def test_bad_vector(self): function test_names (line 639) | def test_names(): function test_doctests (line 644) | def test_doctests(): function case_type_context (line 650) | def case_type_context(name): function case_property_context (line 662) | def case_property_context(case_type, name): FILE: corehq/motech/fhir/tests/test_patient_reg.py class TestPatientRegistration (line 36) | class TestPatientRegistration(TestCase, DomainSubscriptionMixin): method __new__ (line 43) | def __new__(cls, *args, **kwargs): method setUpClass (line 48) | def setUpClass(cls): method set_up_domain (line 59) | def set_up_domain(cls): method set_up_case_type (line 64) | def set_up_case_type(cls): method set_up_repeater (line 85) | def set_up_repeater(cls): method tearDownClass (line 98) | def tearDownClass(cls): method tear_down_fhir_patient (line 113) | def tear_down_fhir_patient(cls): method test_external_id (line 126) | def test_external_id(self): method test_remote_search (line 130) | def test_remote_search(self): function post_xform (line 137) | def post_xform(): FILE: corehq/motech/fhir/tests/test_repeater_helpers.py class TestGetInfoResourcesListOneCase (line 33) | class TestGetInfoResourcesListOneCase(TestCase, DomainSubscriptionMixin): method setUpClass (line 36) | def setUpClass(cls): method tearDownClass (line 55) | def tearDownClass(cls): method setUp (line 62) | def setUp(self): method tearDown (line 76) | def tearDown(self): method test_get_info_resource_list (line 79) | def test_get_info_resource_list(self): class TestGetInfoResourcesListSubCases (line 94) | class TestGetInfoResourcesListSubCases(TestCase, DomainSubscriptionMixin): method setUpClass (line 97) | def setUpClass(cls): method tearDownClass (line 139) | def tearDownClass(cls): method setUp (line 146) | def setUp(self): method tearDown (line 198) | def tearDown(self): method test_get_info_resource_list (line 203) | def test_get_info_resource_list(self): class TestGetInfoResourcesListResources (line 219) | class TestGetInfoResourcesListResources(TestCase, DomainSubscriptionMixin): method setUpClass (line 225) | def setUpClass(cls): method tearDownClass (line 317) | def tearDownClass(cls): method setUp (line 325) | def setUp(self): method tearDown (line 358) | def tearDown(self): method test_get_info_resource_list (line 362) | def test_get_info_resource_list(self): class TestWhenToBundle (line 410) | class TestWhenToBundle(TestCase): method setUp (line 412) | def setUp(self): method test_nothing_to_send (line 415) | def test_nothing_to_send(self): method test_one_to_send (line 426) | def test_one_to_send(self): method test_many_to_send (line 447) | def test_many_to_send(self): function add_case_index (line 480) | def add_case_index(child_case, **props): FILE: corehq/motech/fhir/tests/test_searchers.py function test_param_helper (line 33) | def test_param_helper(resource, expected_valueset): function test_given_name (line 52) | def test_given_name(resource, expected_valueset): function test_each_unique_value_given_names (line 99) | def test_each_unique_value_given_names(resource, expected_valueset): function test_each_unique_value_countries (line 131) | def test_each_unique_value_countries(resource, expected_valueset): function test_each_unique_value_phones (line 164) | def test_each_unique_value_phones(resource, expected_valueset): function check_param_helper (line 170) | def check_param_helper(search_param, resource, expected_valueset): function test_get_request_params_multiplies (line 177) | def test_get_request_params_multiplies(): function test_get_request_params_incomplete_data (line 197) | def test_get_request_params_incomplete_data(): function test_paginated_bundle (line 227) | def test_paginated_bundle(): FILE: corehq/motech/fhir/tests/test_signals.py function test_create_fhir_repeat_records_in_receivers (line 5) | def test_create_fhir_repeat_records_in_receivers(): FILE: corehq/motech/fhir/tests/test_tasks.py class TestRunImporter (line 50) | class TestRunImporter(TestCase): method setUpClass (line 53) | def setUpClass(cls): method tearDownClass (line 75) | def tearDownClass(cls): method test_import_related_only (line 83) | def test_import_related_only(self): class TestClaimServiceRequest (line 105) | class TestClaimServiceRequest(TestCase): method test_service_request_404 (line 113) | def test_service_request_404(self): method test_service_request_500 (line 119) | def test_service_request_500(self): method test_service_request_on_hold (line 125) | def test_service_request_on_hold(self): method test_service_request_completed (line 132) | def test_service_request_completed(self): method test_service_request_claimed (line 139) | def test_service_request_claimed(self): method test_service_request_412 (line 151) | def test_service_request_412(self): method test_service_request_always_412 (line 165) | def test_service_request_always_412(self): method test_service_request_has_case_id (line 176) | def test_service_request_has_case_id(self): class ServiceRequestResponse (line 198) | class ServiceRequestResponse: method __init__ (line 203) | def __init__(self, status='active'): method json (line 210) | def json(self): method raise_for_status (line 215) | def raise_for_status(self): class TestImportResource (line 220) | class TestImportResource(SimpleTestCase): method test_bad_resource (line 222) | def test_bad_resource(self): method test_bad_resource_type (line 231) | def test_bad_resource_type(self): class FooResourceType (line 241) | class FooResourceType: class TestCaseWithResourceType (line 245) | class TestCaseWithResourceType(TestCase): method setUpClass (line 248) | def setUpClass(cls): method tearDownClass (line 271) | def tearDownClass(cls): class TestCaseWithFHIRResources (line 278) | class TestCaseWithFHIRResources(TestCaseWithResourceType): method setUpClass (line 281) | def setUpClass(cls): method tearDownClass (line 310) | def tearDownClass(cls): class TestImportRelated (line 315) | class TestImportRelated(TestCaseWithFHIRResources): method test_import_related_calls_get_resource_with_reference (line 317) | def test_import_related_calls_get_resource_with_reference(self): method test_import_related_is_parent (line 337) | def test_import_related_is_parent(self): method test_import_related_is_not_parent (line 362) | def test_import_related_is_not_parent(self): class TestGetCaseIDOrNone (line 383) | class TestGetCaseIDOrNone(SimpleTestCase): method test_no_identifier (line 385) | def test_no_identifier(self): method test_identifier_not_case_id (line 389) | def test_identifier_not_case_id(self): method test_identifier_is_case_id (line 396) | def test_identifier_is_case_id(self): class TestGetCaseById (line 407) | class TestGetCaseById(TestCase): method setUpClass (line 410) | def setUpClass(cls): method tearDownClass (line 416) | def tearDownClass(cls): method setUp (line 420) | def setUp(self): method test_case_id_not_found (line 432) | def test_case_id_not_found(self): method test_domain_is_different (line 436) | def test_domain_is_different(self): method test_case_is_deleted (line 440) | def test_case_is_deleted(self): method test_happy_path (line 447) | def test_happy_path(self): class TestGetCaseByExternalId (line 452) | class TestGetCaseByExternalId(TestCase): method setUpClass (line 455) | def setUpClass(cls): method tearDownClass (line 461) | def tearDownClass(cls): method setUp (line 465) | def setUp(self): method test_external_id_not_found (line 479) | def test_external_id_not_found(self): method test_domain_is_different (line 483) | def test_domain_is_different(self): method test_case_type_is_different (line 487) | def test_case_type_is_different(self): method test_case_is_deleted (line 491) | def test_case_is_deleted(self): method test_happy_path (line 498) | def test_happy_path(self): class TestGetName (line 503) | class TestGetName(SimpleTestCase): method test_name_text (line 505) | def test_name_text(self): method test_name_no_text (line 509) | def test_name_no_text(self): method test_code_text (line 513) | def test_code_text(self): method test_code_no_text (line 522) | def test_code_no_text(self): method test_got_nothing (line 529) | def test_got_nothing(self): class TestGetCaseBlockKwargs (line 534) | class TestGetCaseBlockKwargs(TestCaseWithResourceType): method test_update_case_name (line 536) | def test_update_case_name(self): method test_update_name (line 558) | def test_update_name(self): method test_default_case_name (line 580) | def test_default_case_name(self): method test_missing_value (line 593) | def test_missing_value(self): method test_non_case_property (line 613) | def test_non_case_property(self): method test_case_id (line 639) | def test_case_id(self): method test_external_id (line 658) | def test_external_id(self): method test_readonly (line 674) | def test_readonly(self): class TestBuildCaseBlock (line 751) | class TestBuildCaseBlock(TestCaseWithResourceType): method setUpClass (line 754) | def setUpClass(cls): method tearDownClass (line 760) | def tearDownClass(cls): method tearDown (line 764) | def tearDown(self): method test_resource_has_case_id (line 767) | def test_resource_has_case_id(self): method test_resource_has_case_id_in_other_domain (line 798) | def test_resource_has_case_id_in_other_domain(self): method test_resource_has_external_id (line 828) | def test_resource_has_external_id(self): method test_resource_has_external_id_in_other_domain (line 856) | def test_resource_has_external_id_in_other_domain(self): method test_same_external_id_different_case_type (line 885) | def test_same_external_id_different_case_type(self): method test_resource_is_new (line 912) | def test_resource_is_new(self): class TestValidateParentRef (line 962) | class TestValidateParentRef(TestCaseWithFHIRResources): method test_bad_parent_ref (line 964) | def test_bad_parent_ref(self): method test_none_parent_ref (line 969) | def test_none_parent_ref(self): method test_bad_resource_type (line 974) | def test_bad_resource_type(self): method test_list_parent_ref (line 979) | def test_list_parent_ref(self): method test_good_parent_ref (line 984) | def test_good_parent_ref(self): class TestCreateParentIndices (line 989) | class TestCreateParentIndices(TestCaseWithFHIRResources): method setUpClass (line 992) | def setUpClass(cls): method tearDownClass (line 998) | def tearDownClass(cls): method run (line 1002) | def run(self, result=None): method test_no_child_cases (line 1017) | def test_no_child_cases(self): method test_parent_case_missing (line 1024) | def test_parent_case_missing(self): method test_submit_case_blocks (line 1032) | def test_submit_case_blocks(self): function other_domain_factory (line 1053) | def other_domain_factory(other_domain_name): FILE: corehq/motech/fhir/tests/test_utils.py class TestUpdateFHIRResourceProperty (line 19) | class TestUpdateFHIRResourceProperty(TestCase): method setUpClass (line 21) | def setUpClass(cls): method tearDownClass (line 37) | def tearDownClass(cls): method test_delete_if_deprecated (line 43) | def test_delete_if_deprecated(self): method test_delete_if_to_be_removed (line 78) | def test_delete_if_to_be_removed(self): method test_simply_update (line 108) | def test_simply_update(self): class TestLoadFHIRResourceType (line 147) | class TestLoadFHIRResourceType(SimpleTestCase): method test_load_fhir_resource_types_default (line 149) | def test_load_fhir_resource_types_default(self): function test_resource_url (line 155) | def test_resource_url(): class TestHeaderDecorators (line 161) | class TestHeaderDecorators(TestCase): method setUp (line 163) | def setUp(self): method _do_get_request (line 166) | def _do_get_request(self, view, params=None, headers={}): method test_validate_format_param (line 170) | def test_validate_format_param(self): method test_validate_accept_header (line 187) | def test_validate_accept_header(self): method test_format_param_overwrites_accept_header (line 202) | def test_format_param_overwrites_accept_header(self): method _do_post_request (line 210) | def _do_post_request(self, view, content_type=None): method test_require_fhir_json_content_type_headers (line 214) | def test_require_fhir_json_content_type_headers(self): FILE: corehq/motech/fhir/tests/test_validators.py class TestValidateSupportedFHIRTypes (line 7) | class TestValidateSupportedFHIRTypes(SimpleTestCase): method test_valid_fhir_type (line 8) | def test_valid_fhir_type(self): method test_invalid_fhir_type (line 16) | def test_invalid_fhir_type(self): FILE: corehq/motech/fhir/tests/utils.py function add_case_type_with_resource_type (line 6) | def add_case_type_with_resource_type(domain, case_type, resource_type): function add_case_property_with_resource_property_path (line 17) | def add_case_property_with_resource_property_path(case_type, case_proper... FILE: corehq/motech/fhir/utils.py function resource_url (line 16) | def resource_url(domain, fhir_version_name, resource_type, case_id): function load_fhir_case_type_mapping (line 21) | def load_fhir_case_type_mapping(domain): function load_fhir_case_properties_mapping (line 29) | def load_fhir_case_properties_mapping(domain): function update_fhir_resource_type (line 39) | def update_fhir_resource_type(domain, case_type, fhir_resource_type): function remove_fhir_resource_type (line 50) | def remove_fhir_resource_type(domain, case_type): function update_fhir_resource_property (line 54) | def update_fhir_resource_property(case_property, fhir_resource_type, fhi... function load_fhir_resource_types (line 74) | def load_fhir_resource_types(fhir_version=FHIR_VERSION_4_0_1, exclude_re... function validate_accept_header_and_format_param (line 86) | def validate_accept_header_and_format_param(view_func): function require_fhir_json_content_type_headers (line 109) | def require_fhir_json_content_type_headers(view_func): FILE: corehq/motech/fhir/validators.py function validate_supported_type (line 5) | def validate_supported_type(value): FILE: corehq/motech/fhir/views.py class AddFHIRRepeaterView (line 25) | class AddFHIRRepeaterView(AddRepeaterView): method page_url (line 32) | def page_url(self): method set_repeater_attr (line 35) | def set_repeater_attr(self, repeater, cleaned_data): class EditFHIRRepeaterView (line 47) | class EditFHIRRepeaterView(EditRepeaterView, AddFHIRRepeaterView): function get_view (line 57) | def get_view(request, domain, fhir_version_name, resource_type, resource... function search_view (line 84) | def search_view(request, domain, fhir_version_name, resource_type=None): function _get_fhir_version (line 139) | def _get_fhir_version(fhir_version_name): FILE: corehq/motech/finders.py function le_days_diff (line 15) | def le_days_diff(max_days, date1, date2): function le_levenshtein_percent (line 36) | def le_levenshtein_percent(percent, string1, string2): class PropertyWeight (line 71) | class PropertyWeight(DocumentSchema): FILE: corehq/motech/forms.py class ConnectionSettingsForm (line 28) | class ConnectionSettingsForm(forms.ModelForm): class Meta (line 100) | class Meta: method __init__ (line 120) | def __init__(self, domain, *args, **kwargs): method helper (line 151) | def helper(self): method custom_headers_supported (line 201) | def custom_headers_supported(domain): method test_connection_button (line 205) | def test_connection_button(self): method clean_notify_addresses_str (line 221) | def clean_notify_addresses_str(self): method clean (line 238) | def clean(self): method clean_url (line 251) | def clean_url(self): method clean_token_url (line 254) | def clean_token_url(self): method clean_refresh_url (line 257) | def clean_refresh_url(self): method _clean_url (line 260) | def _clean_url(self, url): method save (line 274) | def save(self, commit=True): method _update_api_settings (line 299) | def _update_api_settings(self): class UnrecognizedHost (line 306) | class UnrecognizedHost: method __init__ (line 307) | def __init__(self, hostname): method __repr__ (line 310) | def __repr__(self): FILE: corehq/motech/generic_inbound/backend/base.py class BaseApiBackend (line 15) | class BaseApiBackend: method get_basic_error_response (line 22) | def get_basic_error_response(cls, request_id, status_code, message): method __init__ (line 29) | def __init__(self, configurable_api, request_data): method run (line 33) | def run(self): method get_context (line 61) | def get_context(self): method get_success_response (line 71) | def get_success_response(self, response_json): method _get_body_for_eval_context (line 75) | def _get_body_for_eval_context(self): method _get_generic_error (line 81) | def _get_generic_error(self, status_code, message): method _get_submission_error_response (line 85) | def _get_submission_error_response(self, status_code, form_id, message): method _get_validation_error (line 89) | def _get_validation_error(self, status_code, message, errors): function _execute_generic_api (line 94) | def _execute_generic_api(domain, couch_user, device_id, context, configu... function _apply_api_filter (line 122) | def _apply_api_filter(api, eval_context): function _validate_api_request (line 134) | def _validate_api_request(api, eval_context): FILE: corehq/motech/generic_inbound/backend/hl7.py class Hl7Backend (line 15) | class Hl7Backend(BaseApiBackend): method get_basic_error_response (line 19) | def get_basic_error_response(cls, request_id, status_code, message): method __init__ (line 32) | def __init__(self, configurable_api, request_data): method _get_body_for_eval_context (line 36) | def _get_body_for_eval_context(self): method get_success_response (line 52) | def get_success_response(self, response_json): method _get_generic_error (line 55) | def _get_generic_error(self, status_code, message): method _get_submission_error_response (line 58) | def _get_submission_error_response(self, status_code, form_id, message): method _get_validation_error (line 64) | def _get_validation_error(self, status_code, message, errors): method _make_response (line 70) | def _make_response(self, status_code, message, internal_response, erro... method _get_ack (line 81) | def _get_ack(self, ack_text, status_code, errors=None): function _status_code_to_hl7_status (line 103) | def _status_code_to_hl7_status(status_code): function hl7_str_to_dict (line 111) | def hl7_str_to_dict(raw_hl7, use_long_name=True): function hl7_message_to_dict (line 122) | def hl7_message_to_dict(message, use_long_name=True): function parse_hl7 (line 134) | def parse_hl7(raw_hl7): function _hl7_message_to_dict (line 140) | def _hl7_message_to_dict(message_part, base_datatypes, use_long_name=True): FILE: corehq/motech/generic_inbound/backend/json.py class JsonBackend (line 13) | class JsonBackend(BaseApiBackend): method get_basic_error_response (line 17) | def get_basic_error_response(cls, request_id, status_code, message): method get_success_response (line 20) | def get_success_response(self, response_json): method _get_body_for_eval_context (line 23) | def _get_body_for_eval_context(self): method _get_generic_error (line 29) | def _get_generic_error(self, status_code, message): method _get_submission_error_response (line 32) | def _get_submission_error_response(self, status_code, form_id, message): method _get_validation_error (line 38) | def _get_validation_error(self, status_code, message, errors): function _make_response (line 45) | def _make_response(status_code, internal_response): FILE: corehq/motech/generic_inbound/exceptions.py class GenericInboundApiError (line 1) | class GenericInboundApiError(Exception): class GenericInboundUserError (line 5) | class GenericInboundUserError(Exception): class GenericInboundRequestFiltered (line 9) | class GenericInboundRequestFiltered(GenericInboundApiError): class GenericInboundValidationError (line 13) | class GenericInboundValidationError(GenericInboundApiError): method __init__ (line 14) | def __init__(self, errors): method __str__ (line 17) | def __str__(self): FILE: corehq/motech/generic_inbound/forms.py class ConfigurableAPICreateForm (line 17) | class ConfigurableAPICreateForm(forms.ModelForm): class Meta (line 20) | class Meta: method __init__ (line 37) | def __init__(self, request, *args, **kwargs): method add_to_helper (line 57) | def add_to_helper(self): method save (line 62) | def save(self, commit=True): class ConfigurableAPIUpdateForm (line 67) | class ConfigurableAPIUpdateForm(ConfigurableAPICreateForm): method add_to_helper (line 70) | def add_to_helper(self): function _expression_link (line 80) | def _expression_link(domain): FILE: corehq/motech/generic_inbound/migrations/0001_initial.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/motech/generic_inbound/migrations/0002_configurableapivalidation.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/motech/generic_inbound/migrations/0003_add_logging_models.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/motech/generic_inbound/migrations/0004_add_filter_expression.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/motech/generic_inbound/migrations/0005_remove_requestlog_unused_fields.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/motech/generic_inbound/migrations/0006_backend_external_response.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/generic_inbound/models.py class ApiBackendOptions (line 20) | class ApiBackendOptions(models.TextChoices): class ConfigurableAPI (line 26) | class ConfigurableAPI(models.Model): class Meta (line 45) | class Meta: method __init__ (line 48) | def __init__(self, *args, **kwargs): method __repr__ (line 53) | def __repr__(self): method save (line 56) | def save(self, *args, **kwargs): method parsed_expression (line 72) | def parsed_expression(self): method parsed_filter (line 77) | def parsed_filter(self): method backend_class (line 83) | def backend_class(self): method absolute_url (line 94) | def absolute_url(self): method get_validations (line 97) | def get_validations(self): class ConfigurableApiValidation (line 101) | class ConfigurableApiValidation(models.Model): method __repr__ (line 107) | def __repr__(self): method parsed_expression (line 112) | def parsed_expression(self): method get_error_context (line 115) | def get_error_context(self): method to_json (line 121) | def to_json(self): class RequestLog (line 131) | class RequestLog(models.Model): class Status (line 133) | class Status(models.TextChoices): method from_status_code (line 141) | def from_status_code(cls, code): class RequestMethod (line 148) | class RequestMethod(models.TextChoices): class Meta (line 169) | class Meta: method __repr__ (line 176) | def __repr__(self): class ProcessingAttempt (line 180) | class ProcessingAttempt(models.Model): method __repr__ (line 191) | def __repr__(self): FILE: corehq/motech/generic_inbound/reports.py class RequestStatusFilter (line 24) | class RequestStatusFilter(BaseMultipleOptionFilter): method options (line 29) | def options(self): class ApiFilter (line 33) | class ApiFilter(BaseMultipleOptionFilter): method options (line 38) | def options(self): class ApiRequestLogReport (line 43) | class ApiRequestLogReport(DatespanMixin, GenericTabularReport): method allow_access (line 61) | def allow_access(cls, request): method total_records (line 65) | def total_records(self): method shared_pagination_GET_params (line 69) | def shared_pagination_GET_params(self): method headers (line 76) | def headers(self): method _queryset (line 86) | def _queryset(self): method rows (line 101) | def rows(self): function _to_link (line 112) | def _to_link(log): class ApiLogDetailView (line 122) | class ApiLogDetailView(BaseProjectSettingsView): method log (line 128) | def log(self): method page_url (line 132) | def page_url(self): method page_context (line 136) | def page_context(self): FILE: corehq/motech/generic_inbound/static/generic_inbound/js/api_edit.js constant VALIDATION_DEFAULTS (line 9) | const VALIDATION_DEFAULTS = { FILE: corehq/motech/generic_inbound/tests/test_api.py class GenericInboundAPIViewBaseTest (line 36) | class GenericInboundAPIViewBaseTest(TestCase): method setUpClass (line 40) | def setUpClass(cls): method _make_api (line 48) | def _make_api(self, property_expressions, filter_expression=None, vali... method _make_expression (line 66) | def _make_expression(self, property_expressions): method _make_filter (line 74) | def _make_filter(self, filter_expression): method _get_ucr_case_expression (line 84) | def _get_ucr_case_expression(self, property_expressions): method _call_api (line 102) | def _call_api( method _call_api_advanced (line 115) | def _call_api_advanced(self, api, query_params=None): method _get_post_data (line 127) | def _get_post_data(self): method tearDownClass (line 132) | def tearDownClass(cls): class TestGenericInboundAPIView (line 139) | class TestGenericInboundAPIView(GenericInboundAPIViewBaseTest): method _get_post_data (line 142) | def _get_post_data(self): method test_post_denied (line 148) | def test_post_denied(self): method test_post_not_supported_type (line 154) | def test_post_not_supported_type(self): method test_post_results_in_bad_type (line 163) | def test_post_results_in_bad_type(self): method test_post_body_too_large (line 178) | def test_post_body_too_large(self): method test_post (line 189) | def test_post(self): method test_post_with_query (line 199) | def test_post_with_query(self): method _test_generic_api (line 210) | def _test_generic_api(self, properties_expression, query_params=None): method test_logging (line 218) | def test_logging(self): method test_logging_filtered_request (line 250) | def test_logging_filtered_request(self): method test_logging_validated_request (line 277) | def test_logging_validated_request(self): method test_request_data (line 304) | def test_request_data(self): method test_retry (line 325) | def test_retry(self): method test_retry_bad_json (line 357) | def test_retry_bad_json(self): method test_archive_forms (line 381) | def test_archive_forms(self): method test_revert_log (line 397) | def test_revert_log(self): method test_create_duplicate_cases_with_external_id_create (line 410) | def test_create_duplicate_cases_with_external_id_create(self): method test_create_case_with_external_id_update (line 440) | def test_create_case_with_external_id_update(self): method test_does_not_create_duplicate_cases_with_external_id_update (line 464) | def test_does_not_create_duplicate_cases_with_external_id_update(self): method _expression_definition_with_external_id (line 494) | def _expression_definition_with_external_id(self, should_create): FILE: corehq/motech/generic_inbound/tests/test_api_hl7.py class TestGenericInboundAPIViewHL7 (line 14) | class TestGenericInboundAPIViewHL7(GenericInboundAPIViewBaseTest): method _get_post_data (line 17) | def _get_post_data(self): method tearDownClass (line 26) | def tearDownClass(cls): method test_post_hl7 (line 31) | def test_post_hl7(self): method test_post_not_supported_type (line 47) | def test_post_not_supported_type(self): method test_validation_errors (line 60) | def test_validation_errors(self): method _check_logging (line 85) | def _check_logging(self, log, response_data): method _check_data (line 104) | def _check_data(self, log, expected_properties): method _test_generic_api (line 116) | def _test_generic_api(self, properties_expression): FILE: corehq/motech/generic_inbound/tests/test_api_processing.py class MockUser (line 27) | class MockUser: class TestGenericInboundAPI (line 35) | class TestGenericInboundAPI(SimpleTestCase): method test_spec_error (line 38) | def test_spec_error(self): method test_no_filter (line 57) | def test_no_filter(self): method test_filter_pass (line 75) | def test_filter_pass(self): method test_filter_fail (line 88) | def test_filter_fail(self): method test_validation_pass (line 102) | def test_validation_pass(self): method test_validation_errors (line 115) | def test_validation_errors(self): class TestGenericInboundAPINamedExpression (line 151) | class TestGenericInboundAPINamedExpression(TestCase): method setUpTestData (line 156) | def setUpTestData(cls): method test_named_filter (line 176) | def test_named_filter(self): method test_named_expression (line 187) | def test_named_expression(self): method test_named_expression_in_validation (line 198) | def test_named_expression_in_validation(self): function _get_api_with_validation (line 213) | def _get_api_with_validation(domain_name, expression=None): function _get_api_with_filter (line 241) | def _get_api_with_filter(domain_name): FILE: corehq/motech/generic_inbound/tests/test_hl7_json_conversion.py class TestHL7ToJson (line 9) | class TestHL7ToJson(SimpleTestCase, TestFileMixin): method test_oru_ro1 (line 16) | def test_oru_ro1(self): method test_adt_ao1 (line 19) | def test_adt_ao1(self): method _test_message_conversion (line 22) | def _test_message_conversion(self, name): FILE: corehq/motech/generic_inbound/tests/test_models.py class TestGenericInboundModels (line 12) | class TestGenericInboundModels(TestCase): method setUpTestData (line 14) | def setUpTestData(cls): method test_key_created (line 17) | def test_key_created(self): method test_key_read_only (line 21) | def test_key_read_only(self): method test_transform (line 27) | def test_transform(self): class TestConfigurableApiAuditing (line 33) | class TestConfigurableApiAuditing(TestCase): method setUpTestData (line 44) | def setUpTestData(cls): method setUp (line 71) | def setUp(self): method get_test_audit_events (line 78) | def get_test_audit_events(self): method test_audit_fields_for_api_create (line 81) | def test_audit_fields_for_api_create(self): method test_audit_fields_for_api_update (line 91) | def test_audit_fields_for_api_update(self): method test_audit_fields_for_api_delete (line 111) | def test_audit_fields_for_api_delete(self): function _make_api_for_test (line 125) | def _make_api_for_test(domain, name, expression=None): FILE: corehq/motech/generic_inbound/utils.py function get_headers_for_api_context (line 37) | def get_headers_for_api_context(request): function make_url_key (line 41) | def make_url_key(): class ApiRequest (line 47) | class ApiRequest: method from_request (line 58) | def from_request(cls, request, request_id=None): method from_log (line 79) | def from_log(cls, log): method restore_user (line 92) | def restore_user(self): class ApiResponse (line 98) | class ApiResponse: method get_http_response (line 106) | def get_http_response(self): method _get_http_response (line 111) | def _get_http_response(self): function make_processing_attempt (line 115) | def make_processing_attempt(response, request_log, is_retry=False): function get_evaluation_context (line 131) | def get_evaluation_context(domain, restore_user, method, query, headers,... function reprocess_api_request (line 144) | def reprocess_api_request(request_log): function process_api_request (line 160) | def process_api_request(configurable_api, request_id, get_request_data): function archive_api_request (line 175) | def archive_api_request(request_log, user_id): function _revert_api_request_log (line 183) | def _revert_api_request_log(request_log): function revert_api_request_from_form (line 190) | def revert_api_request_from_form(form_id): function log_api_request (line 199) | def log_api_request(request_id, api, request, response): function _request_too_large (line 220) | def _request_too_large(request): FILE: corehq/motech/generic_inbound/views.py function can_administer_generic_inbound (line 44) | def can_administer_generic_inbound(view_fn): class ConfigurableAPIListView (line 52) | class ConfigurableAPIListView(BaseProjectSettingsView, CRUDPaginatedView... method base_query (line 59) | def base_query(self): method total (line 63) | def total(self): method post (line 66) | def post(self, *args, **kwargs): method column_names (line 70) | def column_names(self): method page_context (line 79) | def page_context(self): method paginated_list (line 83) | def paginated_list(self): method _item_data (line 90) | def _item_data(self, api): method get_create_form (line 99) | def get_create_form(self, is_blank=False): method get_create_item_data (line 104) | def get_create_item_data(self, create_form): class ConfigurableAPIEditView (line 114) | class ConfigurableAPIEditView(BaseProjectSettingsView): method api_id (line 120) | def api_id(self): method configurable_api (line 125) | def configurable_api(self): method page_url (line 132) | def page_url(self): method get_form (line 135) | def get_form(self): method main_context (line 141) | def main_context(self): method post (line 160) | def post(self, request, domain, **kwargs): function generic_inbound_api (line 183) | def generic_inbound_api(request, domain, api_id): function retry_api_request (line 201) | def retry_api_request(request, domain, log_id): function revert_api_request (line 208) | def revert_api_request(request, domain, log_id): FILE: corehq/motech/management/commands/create_repeat_records.py class Command (line 16) | class Command(BaseCommand): method add_arguments (line 20) | def add_arguments(self, parser): method handle (line 32) | def handle(self, *args, **options): function get_repeaters_for_type_in_domain (line 102) | def get_repeaters_for_type_in_domain(domain, repeater_types): FILE: corehq/motech/migrations/0001_initial.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/motech/migrations/0002_requestlog_payload_id.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/motech/migrations/0003_auto_20200102_1006.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/motech/migrations/0004_connectionsettings.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/motech/migrations/0005_requestlog_request_body.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/motech/migrations/0006_connection_settings.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/motech/migrations/0007_auto_20200909_2138.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/migrations/0008_requestlog_response_headers.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/motech/migrations/0009_auto_20211122_2011.py function migrate_api_settings (line 11) | def migrate_api_settings(apps, schema_editor): class Migration (line 20) | class Migration(migrations.Migration): FILE: corehq/motech/migrations/0010_auto_20211124_1931.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/migrations/0011_connectionsettings_is_deleted.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/migrations/0012_alter_connectionsettings_auth_type.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/motech/migrations/0013_alter_connectionsettings_auth_type.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/migrations/0014_alter_connectionsettings_password.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/migrations/0015_requestlog_duration.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/migrations/0016_connectionsettings_include_client_id_and_more.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/migrations/0017_connectionsettings_use_aes_cbc_encryption.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/motech/migrations/0018_openmrsimporter_use_aes_cbc_encryption.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/motech/migrations/0019_connectionsettings_custom_headers.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/migrations/0020_alter_connectionsettings_increase_max_url_lengths.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/migrations/0021_alter_requestlog_request_url.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/models.py class RequestLogEntry (line 46) | class RequestLogEntry: class ConnectionQuerySet (line 61) | class ConnectionQuerySet(models.QuerySet): method delete (line 63) | def delete(self): class ConnectionSoftDeleteManager (line 74) | class ConnectionSoftDeleteManager(models.Manager): method get_queryset (line 76) | def get_queryset(self): class ConnectionSettings (line 80) | class ConnectionSettings(models.Model): method __str__ (line 128) | def __str__(self): method repeaters (line 132) | def repeaters(self): method plaintext_password (line 137) | def plaintext_password(self): method plaintext_password (line 144) | def plaintext_password(self, plaintext): method plaintext_client_secret (line 150) | def plaintext_client_secret(self): method plaintext_client_secret (line 157) | def plaintext_client_secret(self, plaintext): method plaintext_custom_headers (line 163) | def plaintext_custom_headers(self): method set_custom_headers (line 174) | def set_custom_headers(self, headers): method get_custom_headers_display (line 194) | def get_custom_headers_display(self): method last_token (line 200) | def last_token(self) -> Optional[dict]: method last_token (line 208) | def last_token(self, token: Optional[dict]): method notify_addresses (line 217) | def notify_addresses(self): method get_requests (line 220) | def get_requests( method get_auth_manager (line 238) | def get_auth_manager(self): method _get_oauth1_api_endpoints (line 298) | def _get_oauth1_api_endpoints(self): method used_by (line 308) | def used_by(self): method delete (line 324) | def delete(self): method soft_delete (line 332) | def soft_delete(self): method clear_caches (line 336) | def clear_caches(self): class RequestLog (line 343) | class RequestLog(models.Model): class Meta (line 367) | class Meta: method log (line 371) | def log(level: int, log_entry: RequestLogEntry): FILE: corehq/motech/openmrs/atom_feed.py class CaseAttrs (line 67) | class CaseAttrs(NamedTuple): function get_feed_xml (line 73) | def get_feed_xml(requests, feed_name, page: str): function get_timestamp (line 132) | def get_timestamp(element, xpath='./atom:updated'): function get_patient_uuid (line 152) | def get_patient_uuid(element): function get_encounter_uuid (line 178) | def get_encounter_uuid(element): function get_feed_updates (line 206) | def get_feed_updates(repeater, feed_name): function get_addpatient_caseblock (line 270) | def get_addpatient_caseblock( function get_updatepatient_caseblock (line 295) | def get_updatepatient_caseblock(case, patient, repeater): function get_case_block_kwargs_from_patient (line 304) | def get_case_block_kwargs_from_patient(patient, repeater, case=None): function update_patient (line 335) | def update_patient(repeater, patient_uuid): function import_encounter (line 395) | def import_encounter(repeater, encounter_uuid): function get_case_block_kwargs_from_encounter (line 422) | def get_case_block_kwargs_from_encounter( function get_encounter (line 475) | def get_encounter(repeater, encounter_uuid): function get_case_id_owner_id_case_block (line 491) | def get_case_id_owner_id_case_block( function get_case (line 511) | def get_case( function create_case (line 532) | def create_case( function get_observation_mappings (line 544) | def get_observation_mappings( function get_diagnosis_mappings (line 567) | def get_diagnosis_mappings( function get_encounter_datetime_value_sources (line 583) | def get_encounter_datetime_value_sources( function update_case (line 598) | def update_case(repeater, case_id, case_block_kwargs, case_blocks): function get_case_block_kwargs_from_observations (line 612) | def get_case_block_kwargs_from_observations( function get_case_block_kwargs_from_encounter_meta (line 642) | def get_case_block_kwargs_from_encounter_meta( function get_case_block_kwargs_from_bahmni_diagnoses (line 660) | def get_case_block_kwargs_from_bahmni_diagnoses( function get_case_block_kwargs_from_concepts (line 678) | def get_case_block_kwargs_from_concepts( function get_case_block_kwargs_for_case_property (line 708) | def get_case_block_kwargs_for_case_property( function get_case_block_for_indexed_case (line 726) | def get_case_block_for_indexed_case( function has_case_updates (line 769) | def has_case_updates(case_block_kwargs): function deep_update (line 786) | def deep_update(dict_by_ref: dict, other: dict): FILE: corehq/motech/openmrs/dbaccessors.py function get_openmrs_importers_by_domain (line 6) | def get_openmrs_importers_by_domain(domain_name): FILE: corehq/motech/openmrs/exceptions.py class OpenmrsException (line 4) | class OpenmrsException(Exception): class OpenmrsConfigurationError (line 11) | class OpenmrsConfigurationError(OpenmrsException): class OpenmrsFeedRuntimeException (line 18) | class OpenmrsFeedRuntimeException(OpenmrsException): class OpenmrsFeedSyntaxError (line 22) | class OpenmrsFeedSyntaxError(OpenmrsException): class OpenmrsHtmlUiChanged (line 26) | class OpenmrsHtmlUiChanged(OpenmrsException): class DuplicateCaseMatch (line 33) | class DuplicateCaseMatch(ConfigurationError): FILE: corehq/motech/openmrs/finders.py class PatientFinder (line 45) | class PatientFinder(DocumentSchema): method wrap (line 83) | def wrap(cls, data): method find_patients (line 98) | def find_patients(self, requests, case, case_config): class WeightedPropertyPatientFinder (line 110) | class WeightedPropertyPatientFinder(PatientFinder): method __init__ (line 156) | def __init__(self, *args, **kwargs): method get_score (line 160) | def get_score(self, patient, case): method find_patients (line 183) | def find_patients(self, requests, case, case_config): FILE: corehq/motech/openmrs/forms.py class OpenmrsConfigForm (line 25) | class OpenmrsConfigForm(forms.Form): method __init__ (line 30) | def __init__(self, *args, **kwargs): method clean_patient_config (line 35) | def clean_patient_config(self): class OpenmrsImporterForm (line 76) | class OpenmrsImporterForm(forms.Form): class OpenmrsRepeaterForm (line 112) | class OpenmrsRepeaterForm(CaseRepeaterForm): method __init__ (line 130) | def __init__(self, *args, **kwargs): method get_ordered_crispy_form_fields (line 137) | def get_ordered_crispy_form_fields(self): method clean (line 144) | def clean(self): FILE: corehq/motech/openmrs/jsonpath.py class Cmp (line 6) | class Cmp(JSONPath): method __init__ (line 16) | def __init__(self, jsonpath, operator, operand): method find (line 23) | def find(self, data): method __str__ (line 26) | def __str__(self): method __eq__ (line 31) | def __eq__(self, other): method __hash__ (line 39) | def __hash__(self): class WhereNot (line 43) | class WhereNot(JSONPath): method __init__ (line 56) | def __init__(self, left, right): method find (line 60) | def find(self, data): method __str__ (line 63) | def __str__(self): method __eq__ (line 66) | def __eq__(self, other): method __hash__ (line 69) | def __hash__(self): FILE: corehq/motech/openmrs/models.py class ColumnMapping (line 42) | class ColumnMapping(DocumentSchema): function deserialize (line 52) | def deserialize(mapping, external_value, timezone=None): class OpenmrsImporter (line 73) | class OpenmrsImporter(Document): method __str__ (line 126) | def __str__(self): method notify_addresses (line 131) | def notify_addresses(self): method plaintext_password (line 135) | def plaintext_password(self): method get_timezone (line 142) | def get_timezone(self): method should_import_today (line 148) | def should_import_today(self): FILE: corehq/motech/openmrs/openmrs_config.py class OpenmrsCaseConfig (line 28) | class OpenmrsCaseConfig(DocumentSchema): method wrap (line 133) | def wrap(cls, data): class IndexedCaseMapping (line 161) | class IndexedCaseMapping(DocumentSchema): class ObservationMapping (line 172) | class ObservationMapping(DocumentSchema): method __eq__ (line 209) | def __eq__(self, other): class OpenmrsFormConfig (line 218) | class OpenmrsFormConfig(DocumentSchema): class OpenmrsConfig (line 234) | class OpenmrsConfig(DocumentSchema): function get_property_map (line 251) | def get_property_map(case_config): FILE: corehq/motech/openmrs/repeater_helpers.py function get_case_location_ancestor_repeaters (line 43) | def get_case_location_ancestor_repeaters(case): function get_ancestor_location_openmrs_uuid (line 66) | def get_ancestor_location_openmrs_uuid(case): function search_patients (line 72) | def search_patients(requests, search_string): function get_patient_by_uuid (line 77) | def get_patient_by_uuid(requests, uuid): function get_patient_by_identifier (line 87) | def get_patient_by_identifier(requests, identifier_type_uuid, value): function get_patient_by_id (line 109) | def get_patient_by_id(requests, patient_identifier_type, patient_identif... function save_match_ids (line 132) | def save_match_ids(case, case_config, patient): function check_duplicate_case_match (line 165) | def check_duplicate_case_match(case, external_id): function create_patient (line 195) | def create_patient(requests, info, case_config): function authenticate_session (line 255) | def authenticate_session(requests): function get_identifier_source_id (line 277) | def get_identifier_source_id(requests, identifier_type): function generate_identifier (line 314) | def generate_identifier(requests, identifier_type): function find_or_create_patient (line 369) | def find_or_create_patient(requests, domain, info, openmrs_config): function get_patient (line 402) | def get_patient(requests, domain, info, openmrs_config): function delete_case_property (line 425) | def delete_case_property( function get_export_data (line 443) | def get_export_data(config, properties, case_trigger_info): function get_unknown_encounter_role (line 457) | def get_unknown_encounter_role(requests): function get_unknown_location_uuid (line 473) | def get_unknown_location_uuid(requests): function get_patient_identifier_types (line 485) | def get_patient_identifier_types(requests): function get_person_attribute_types (line 489) | def get_person_attribute_types(requests): FILE: corehq/motech/openmrs/repeaters.py class AtomFeedStatus (line 56) | class AtomFeedStatus(DocumentSchema): class OpenmrsRepeater (line 64) | class OpenmrsRepeater(CaseRepeater): class Meta (line 84) | class Meta(object): method requests (line 106) | def requests(self): method first_user (line 113) | def first_user(self): method payload_doc (line 117) | def payload_doc(self, repeat_record): method form_class_name (line 121) | def form_class_name(self): method available_for_domain (line 128) | def available_for_domain(cls, domain): method allowed_to_forward (line 131) | def allowed_to_forward(self, payload): method get_payload (line 167) | def get_payload(self, repeat_record): method send_request (line 171) | def send_request(self, repeat_record, payload): method _validate_openmrs_config (line 198) | def _validate_openmrs_config(self): method save (line 203) | def save(self, *args, **kwargs): function send_openmrs_data (line 208) | def send_openmrs_data(requests, domain, form_json, openmrs_config, case_... function create_openmrs_repeat_records (line 290) | def create_openmrs_repeat_records(sender, xform, **kwargs): FILE: corehq/motech/openmrs/serializers.py function to_omrs_date (line 20) | def to_omrs_date(value): function to_omrs_datetime (line 36) | def to_omrs_datetime(value): function omrs_datetime_to_date (line 54) | def omrs_datetime_to_date(value): function omrs_boolean_to_text (line 67) | def omrs_boolean_to_text(value): function omrs_timestamp_to_datetime (line 71) | def omrs_timestamp_to_datetime(value, tz=None): function omrs_timestamp_to_date (line 105) | def omrs_timestamp_to_date(value, tz=None): FILE: corehq/motech/openmrs/tasks.py function parse_params (line 55) | def parse_params(params, location=None): function get_openmrs_patients (line 71) | def get_openmrs_patients(requests, importer, location=None): function get_case_properties (line 102) | def get_case_properties(patient, importer): function get_addpatient_caseblock (line 134) | def get_addpatient_caseblock(patient, importer, owner_id): function get_updatepatient_caseblock (line 151) | def get_updatepatient_caseblock(case, patient, importer): function import_patients_of_owner (line 164) | def import_patients_of_owner(requests, importer, domain_name, owner_id, ... function import_patients_to_domain (line 216) | def import_patients_to_domain(domain_name, force=False): function import_patients_with_importer (line 255) | def import_patients_with_importer(importer_json): function is_valid_owner (line 315) | def is_valid_owner(owner_id): function import_patients (line 328) | def import_patients(): function poll_openmrs_atom_feeds (line 337) | def poll_openmrs_atom_feeds(domain_name): function track_changes (line 366) | def track_changes(): function clean_spaces (line 375) | def clean_spaces(string): FILE: corehq/motech/openmrs/tests/test_atom_feed.py class CaseMock (line 44) | class CaseMock: class GetTimestampTests (line 51) | class GetTimestampTests(SimpleTestCase): method setUp (line 53) | def setUp(self): method test_no_node (line 64) | def test_no_node(self): method test_xpath (line 70) | def test_xpath(self): method test_bad_date (line 76) | def test_bad_date(self): method test_timezone (line 82) | def test_timezone(self): class GetPatientUuidTests (line 89) | class GetPatientUuidTests(SimpleTestCase): method setUp (line 91) | def setUp(self): method test_no_content_node (line 103) | def test_no_content_node(self): method test_bad_cdata (line 110) | def test_bad_cdata(self): method test_success (line 117) | def test_success(self): class GetEncounterUuidTests (line 124) | class GetEncounterUuidTests(SimpleTestCase): method test_bed_assignment (line 126) | def test_bed_assignment(self): method test_unknown_entry (line 136) | def test_unknown_entry(self): class ImportEncounterTest (line 147) | class ImportEncounterTest(TestCase, TestFileMixin): method setUp (line 151) | def setUp(self): method tearDown (line 160) | def tearDown(self): method setUpRepeater (line 163) | def setUpRepeater(self): method setUpRepeaterForExtCase (line 219) | def setUpRepeaterForExtCase(self): method get_repeater_dict (line 300) | def get_repeater_dict(self, observations, diagnoses): method test_import_encounter (line 324) | def test_import_encounter(self): method test_get_case_block_kwargs_from_observations (line 357) | def test_get_case_block_kwargs_from_observations(self): method test_get_case_block_kwargs_from_bahmni_diagnoses (line 369) | def test_get_case_block_kwargs_from_bahmni_diagnoses(self): method test_get_case_blocks_from_observations (line 387) | def test_get_case_blocks_from_observations(self): method test_get_case_blocks_from_bahmni_diagnoses (line 418) | def test_get_case_blocks_from_bahmni_diagnoses(self): function test_get_feed_xml_feed_does_not_exist (line 452) | def test_get_feed_xml_feed_does_not_exist(): function test_get_feed_xml_feedid_zero (line 481) | def test_get_feed_xml_feedid_zero(): function test_get_feed_xml_500 (line 509) | def test_get_feed_xml_500(): function test_get_feed_xml_bad_xml (line 532) | def test_get_feed_xml_bad_xml(): function test_get_feed_updates (line 554) | def test_get_feed_updates(): function test_status_defaults (line 577) | def test_status_defaults(): function test_doctests (line 583) | def test_doctests(): class TestPollOpenmrsAtomFeeds (line 588) | class TestPollOpenmrsAtomFeeds(TestCase, TestFileMixin): method setUp (line 593) | def setUp(self): method test_poll_openmrs_atom_feeds (line 613) | def test_poll_openmrs_atom_feeds(self, get_encounter, get_patient, get... FILE: corehq/motech/openmrs/tests/test_finders.py class CaseMock (line 51) | class CaseMock(dict): method get_case_property (line 52) | def get_case_property(self, prop): class PatientFinderTests (line 56) | class PatientFinderTests(SimpleTestCase): method test_wrap_subclass (line 61) | def test_wrap_subclass(self): method test_create_missing_default (line 72) | def test_create_missing_default(self): method test_create_missing_true (line 89) | def test_create_missing_true(self): method test_create_missing_false (line 104) | def test_create_missing_false(self): function test_constant_false (line 120) | def test_constant_false(): class WeightedPropertyPatientFinderTests (line 125) | class WeightedPropertyPatientFinderTests(SimpleTestCase): method setUp (line 130) | def setUp(self): method test_person_properties_jsonpath (line 186) | def test_person_properties_jsonpath(self): method test_person_preferred_name_jsonpath (line 198) | def test_person_preferred_name_jsonpath(self): method test_person_preferred_address_jsonpath (line 210) | def test_person_preferred_address_jsonpath(self): method test_person_attributes_jsonpath (line 222) | def test_person_attributes_jsonpath(self): method test_patient_identifiers_jsonpath (line 234) | def test_patient_identifiers_jsonpath(self): method test_get_score_ge_1 (line 246) | def test_get_score_ge_1(self): method test_get_score_lt_1 (line 257) | def test_get_score_lt_1(self): FILE: corehq/motech/openmrs/tests/test_importer.py class ImporterTests (line 17) | class ImporterTests(SimpleTestCase): method test_import_daily (line 19) | def test_import_daily(self): method test_import_weekly_tuesday (line 26) | def test_import_weekly_tuesday(self): method test_import_weekly_not_tuesday (line 35) | def test_import_weekly_not_tuesday(self): method test_import_monthly_first (line 44) | def test_import_monthly_first(self): method test_import_monthly_not_first (line 53) | def test_import_monthly_not_first(self): FILE: corehq/motech/openmrs/tests/test_jsonpath.py class CmpTests (line 11) | class CmpTests(TestCase): method test_str (line 25) | def test_str(self): method test_equal (line 29) | def test_equal(self): method test_not_equal (line 34) | def test_not_equal(self): method test_find_one (line 39) | def test_find_one(self): method test_find_many (line 45) | def test_find_many(self): method test_find_where (line 51) | def test_find_where(self): method test_cmp_list (line 60) | def test_cmp_list(self): class WhereNotTests (line 66) | class WhereNotTests(TestCase): method get_jsonpath (line 98) | def get_jsonpath(self, attr_type_uuid): method test_where_not (line 120) | def test_where_not(self): method test_union (line 126) | def test_union(self): class DocTests (line 133) | class DocTests(TestCase): method test_doctests (line 134) | def test_doctests(self): FILE: corehq/motech/openmrs/tests/test_repeaters.py function mock_get_cases (line 144) | def mock_get_cases(self, case_ids, domain=None, ordered=False): class OpenmrsRepeaterTest (line 157) | class OpenmrsRepeaterTest(SimpleTestCase, TestFileMixin): method test_get_case_updates_for_registration (line 161) | def test_get_case_updates_for_registration(self): method test_get_case_updates_for_followup (line 196) | def test_get_case_updates_for_followup(self): class GetPatientByUuidTests (line 234) | class GetPatientByUuidTests(SimpleTestCase): method setUpClass (line 237) | def setUpClass(cls): method test_none (line 248) | def test_none(self): method test_empty (line 252) | def test_empty(self): method test_invalid_uuid (line 256) | def test_invalid_uuid(self): method test_valid_uuid (line 261) | def test_valid_uuid(self): class ExportOnlyTests (line 266) | class ExportOnlyTests(SimpleTestCase): method test_create_patient (line 268) | def test_create_patient(self): class AllowedToForwardTests (line 298) | class AllowedToForwardTests(TestCase): method setUpClass (line 301) | def setUpClass(cls): method tearDownClass (line 306) | def tearDownClass(cls): method test_update_from_openmrs (line 310) | def test_update_from_openmrs(self): method test_excluded_case_type (line 321) | def test_excluded_case_type(self): method test_allowed_to_forward (line 333) | def test_allowed_to_forward(self): method test_update_from_sqlopenmrs (line 343) | def test_update_from_sqlopenmrs(self): method test_excluded_case_type_sqlopenmrs (line 354) | def test_excluded_case_type_sqlopenmrs(self): method test_allowed_to_forward_sqlopenmrs (line 366) | def test_allowed_to_forward_sqlopenmrs(self): class CaseLocationTests (line 377) | class CaseLocationTests(LocationHierarchyTestCase): method setUpClass (line 393) | def setUpClass(cls): method tearDown (line 402) | def tearDown(self): method tearDownClass (line 407) | def tearDownClass(cls): method test_owner_is_location (line 411) | def test_owner_is_location(self): method test_owner_has_primary_location (line 420) | def test_owner_has_primary_location(self): method test_owner_has_no_locations (line 430) | def test_owner_has_no_locations(self): method test_no_owner (line 439) | def test_no_owner(self): method test_openmrs_location_uuid_set (line 447) | def test_openmrs_location_uuid_set(self): method test_openmrs_location_uuid_ancestor (line 461) | def test_openmrs_location_uuid_ancestor(self): method test_openmrs_location_uuid_none (line 477) | def test_openmrs_location_uuid_none(self): method test_get_case_location_ancestor_repeaters_same (line 491) | def test_get_case_location_ancestor_repeaters_same(self): method test_get_case_location_ancestor_repeaters_multi (line 507) | def test_get_case_location_ancestor_repeaters_multi(self): method test_get_case_location_ancestor_repeaters_none (line 533) | def test_get_case_location_ancestor_repeaters_none(self): method test_sql_get_case_location_ancestor_repeaters_same (line 543) | def test_sql_get_case_location_ancestor_repeaters_same(self): method test_get_sql_case_location_ancestor_repeaters_multi (line 559) | def test_get_sql_case_location_ancestor_repeaters_multi(self): method test_get_sql_case_location_ancestor_repeaters_none (line 584) | def test_get_sql_case_location_ancestor_repeaters_none(self): class GetPatientTest (line 595) | class GetPatientTest(SimpleTestCase): method test_get_patient_by_identifier (line 597) | def test_get_patient_by_identifier(self): class FindPatientTest (line 608) | class FindPatientTest(SimpleTestCase): method test_create_missing (line 610) | def test_create_missing(self): class SaveMatchIdsTests (line 647) | class SaveMatchIdsTests(SimpleTestCase): method setUp (line 649) | def setUp(self): method test_save_openmrs_uuid (line 660) | def test_save_openmrs_uuid(self, case_block_mock, _): method test_save_external_id (line 672) | def test_save_external_id(self, importer_util_mock, case_block_mock, _): method test_save_duplicate_external_id (line 685) | def test_save_duplicate_external_id(self, importer_util_mock, _): method test_save_multiple_external_id (line 694) | def test_save_multiple_external_id(self, importer_util_mock, _): class DeleteCasePropertyTests (line 701) | class DeleteCasePropertyTests(SimpleTestCase): method test_delete_case_block_arg (line 703) | def test_delete_case_block_arg(self): method test_delete_case_block_update_key (line 716) | def test_delete_case_block_update_key(self): method test_deletable_kwargs_1 (line 729) | def test_deletable_kwargs_1(self): method test_deletable_kwargs_2 (line 742) | def test_deletable_kwargs_2(self): method assert_expected_case_block (line 755) | def assert_expected_case_block(self, case_property, case_block_re): class VoidedPatientTests (line 762) | class VoidedPatientTests(TestCase, TestFileMixin): method setUp (line 766) | def setUp(self): method test_identifier_case_property_deleted (line 780) | def test_identifier_case_property_deleted(self, get_patient_mock, case... function test_observation_mappings (line 827) | def test_observation_mappings(): function test_doctests (line 892) | def test_doctests(): FILE: corehq/motech/openmrs/tests/test_serializers.py class SerializerTests (line 13) | class SerializerTests(SimpleTestCase): method test_to_timestamp_datetime (line 15) | def test_to_timestamp_datetime(self): method test_to_timestamp_datetime_str (line 29) | def test_to_timestamp_datetime_str(self): method test_to_timestamp_date (line 34) | def test_to_timestamp_date(self): method test_to_timestamp_day_str (line 39) | def test_to_timestamp_day_str(self): method test_to_timestamp_day_num (line 44) | def test_to_timestamp_day_num(self): method test_to_timestamp_int (line 49) | def test_to_timestamp_int(self): method test_omrs_timestamp_to_date_none (line 54) | def test_omrs_timestamp_to_date_none(self): function test_doctests (line 59) | def test_doctests(): FILE: corehq/motech/openmrs/tests/test_tasks.py function get_importer (line 36) | def get_importer(column_mapping=None): function get_patient (line 111) | def get_patient(): function test_get_case_properties (line 148) | def test_get_case_properties(): function test_bad_data_type (line 186) | def test_bad_data_type(): function test_get_domain_timezone (line 211) | def test_get_domain_timezone(get_timezone_for_domain_mock): function test_get_importer_timezone (line 224) | def test_get_importer_timezone(get_timezone_for_domain_mock): class TestTimeout (line 237) | class TestTimeout(SimpleTestCase): method setUp (line 239) | def setUp(self): method test_timeout (line 242) | def test_timeout(self): method test_connection (line 257) | def test_connection(self): method test_success (line 272) | def test_success(self): class Importer (line 295) | class Importer: class Response (line 300) | class Response: method json (line 306) | def json(self): class OwnerTests (line 310) | class OwnerTests(LocationHierarchyTestCase): method setUpClass (line 320) | def setUpClass(cls): method setUp (line 337) | def setUp(self): method tearDown (line 345) | def tearDown(self): method tearDownClass (line 351) | def tearDownClass(cls): method test_location_owner (line 358) | def test_location_owner(self): method test_commcare_user_owner (line 367) | def test_commcare_user_owner(self): method test_web_user_owner (line 376) | def test_web_user_owner(self): method test_group_owner (line 385) | def test_group_owner(self): method test_bad_owner (line 394) | def test_bad_owner(self): method test_bad_group (line 429) | def test_bad_group(self): function test_doctests (line 466) | def test_doctests(): FILE: corehq/motech/openmrs/tests/test_views.py class TestOpenmrsRepeaterViews (line 12) | class TestOpenmrsRepeaterViews(BaseViewTest): method _create_data (line 14) | def _create_data(cls): method test_config_openmrs_repeater_get (line 31) | def test_config_openmrs_repeater_get(self): method test_config_openmrs_repeater_post (line 35) | def test_config_openmrs_repeater_post(self): method test_config_openmrs_repeater_post_with_errors (line 54) | def test_config_openmrs_repeater_post_with_errors(self): FILE: corehq/motech/openmrs/tests/test_workflow.py class WorkflowTests (line 12) | class WorkflowTests(unittest.TestCase): method test_workflow_class_str (line 14) | def test_workflow_class_str(self): method test_workflow_runs (line 22) | def test_workflow_runs(self): method test_rollback_runs (line 48) | def test_rollback_runs(self): class WorkflowErrorTests (line 101) | class WorkflowErrorTests(unittest.TestCase): method test_str (line 103) | def test_str(self): FILE: corehq/motech/openmrs/tests/test_workflow_tasks.py function test_concept_directions (line 17) | def test_concept_directions(): function test_start_stop_datetime_export (line 46) | def test_start_stop_datetime_export(): function test_start_stop_datetime_import (line 75) | def test_start_stop_datetime_import(): class GetValuesForConceptTests (line 99) | class GetValuesForConceptTests(SimpleTestCase): method test_get_values_for_all_concepts (line 101) | def test_get_values_for_all_concepts(self): method test_get_values_for_different_concepts (line 111) | def test_get_values_for_different_concepts(self): method test_get_values_for_the_same_concept (line 144) | def test_get_values_for_the_same_concept(self): method test_get_values_for_import_concept (line 173) | def test_get_values_for_import_concept(self): function get_form_config_dict (line 188) | def get_form_config_dict(): function get_task (line 237) | def get_task(info, form_json, form_config_dict): FILE: corehq/motech/openmrs/tests/utils.py function strip_xml (line 4) | def strip_xml(xmlstr: str) -> str: FILE: corehq/motech/openmrs/views.py function config_openmrs_repeater (line 47) | def config_openmrs_repeater(request, domain, repeater_id): class OpenmrsModelListViewHelper (line 79) | class OpenmrsModelListViewHelper(object): method __init__ (line 80) | def __init__(self, request, domain, repeater_id): method repeater (line 86) | def repeater(self): function _filter_out_links (line 92) | def _filter_out_links(json): function openmrs_patient_identifier_types (line 102) | def openmrs_patient_identifier_types(request, domain, repeater_id): function openmrs_person_attribute_types (line 109) | def openmrs_person_attribute_types(request, domain, repeater_id): function openmrs_raw_api (line 116) | def openmrs_raw_api(request, domain, repeater_id, rest_uri): function openmrs_test_fire (line 128) | def openmrs_test_fire(request, domain, repeater_id, record_id): function openmrs_import_now (line 139) | def openmrs_import_now(request, domain): class OpenmrsImporterView (line 147) | class OpenmrsImporterView(BaseProjectSettingsView): method _update_importer (line 152) | def _update_importer(self, importer, data): method post (line 167) | def post(self, request, *args, **kwargs): method page_context (line 189) | def page_context(self): class AddOpenmrsRepeaterView (line 213) | class AddOpenmrsRepeaterView(AddCaseRepeaterView): method set_repeater_attr (line 219) | def set_repeater_attr(self, repeater, cleaned_data): class EditOpenmrsRepeaterView (line 228) | class EditOpenmrsRepeaterView(EditRepeaterView, AddOpenmrsRepeaterView): FILE: corehq/motech/openmrs/workflow.py class WorkflowTask (line 4) | class WorkflowTask(object): method __str__ (line 14) | def __str__(self): method run (line 17) | def run(self): method rollback (line 20) | def rollback(self): class WorkflowError (line 24) | class WorkflowError(namedtuple('WorkflowError', 'task error is_rollback_... method __str__ (line 26) | def __str__(self): function execute_workflow (line 35) | def execute_workflow(workflow): FILE: corehq/motech/openmrs/workflow_tasks.py class SyncPersonAttributesTask (line 25) | class SyncPersonAttributesTask(WorkflowTask): method __init__ (line 27) | def __init__(self, requests, info, openmrs_config, person_uuid, attrib... method run (line 34) | def run(self): class SyncPatientIdentifiersTask (line 73) | class SyncPatientIdentifiersTask(WorkflowTask): method __init__ (line 75) | def __init__(self, requests, info, openmrs_config, patient): method run (line 81) | def run(self): class CreateVisitsEncountersObsTask (line 127) | class CreateVisitsEncountersObsTask(WorkflowTask): method __init__ (line 129) | def __init__(self, requests, domain, info, form_json, openmrs_config, ... method _get_start_stop_datetime (line 137) | def _get_start_stop_datetime(self, form_config): method run (line 172) | def run(self): function get_values_for_concept (line 205) | def get_values_for_concept(form_config, info): class CreatePersonAttributeTask (line 222) | class CreatePersonAttributeTask(WorkflowTask): method __init__ (line 224) | def __init__(self, requests, person_uuid, attribute_type_uuid, value): method run (line 231) | def run(self): method rollback (line 239) | def rollback(self): class DeletePersonAttributeTask (line 250) | class DeletePersonAttributeTask(WorkflowTask): method __init__ (line 252) | def __init__(self, requests, person_uuid, attribute_uuid, attribute_ty... method run (line 259) | def run(self): method rollback (line 267) | def rollback(self): class UpdatePersonAttributeTask (line 275) | class UpdatePersonAttributeTask(WorkflowTask): method __init__ (line 277) | def __init__(self, requests, person_uuid, attribute_uuid, attribute_ty... method run (line 285) | def run(self): method rollback (line 297) | def rollback(self): class CreatePatientIdentifierTask (line 310) | class CreatePatientIdentifierTask(WorkflowTask): method __init__ (line 312) | def __init__(self, requests, patient_uuid, identifier_type_uuid, ident... method run (line 319) | def run(self): method rollback (line 327) | def rollback(self): class UpdatePatientIdentifierTask (line 337) | class UpdatePatientIdentifierTask(WorkflowTask): method __init__ (line 339) | def __init__(self, requests, patient_uuid, identifier_uuid, identifier... method run (line 348) | def run(self): method rollback (line 360) | def rollback(self): class CreateOptionalVisitTask (line 373) | class CreateOptionalVisitTask(WorkflowTask): method __init__ (line 379) | def __init__(self, requests, person_uuid, provider_uuid, start_datetim... method run (line 393) | def run(self): method rollback (line 415) | def rollback(self): class CreateEncounterTask (line 420) | class CreateEncounterTask(WorkflowTask): method __init__ (line 422) | def __init__(self, requests, person_uuid, provider_uuid, start_datetim... method run (line 435) | def run(self): method rollback (line 467) | def rollback(self): class CreateObsTask (line 474) | class CreateObsTask(WorkflowTask): method __init__ (line 476) | def __init__(self, requests, encounter_uuid, concept_uuid, person_uuid... method run (line 487) | def run(self): method rollback (line 500) | def rollback(self): class UpdatePersonNameTask (line 505) | class UpdatePersonNameTask(WorkflowTask): method __init__ (line 507) | def __init__(self, requests, info, openmrs_config, person): method run (line 515) | def run(self): method rollback (line 531) | def rollback(self): class CreatePersonAddressTask (line 553) | class CreatePersonAddressTask(WorkflowTask): method __init__ (line 555) | def __init__(self, requests, info, openmrs_config, person): method run (line 563) | def run(self): method rollback (line 577) | def rollback(self): class UpdatePersonAddressTask (line 588) | class UpdatePersonAddressTask(WorkflowTask): method __init__ (line 590) | def __init__(self, requests, info, openmrs_config, person): method run (line 598) | def run(self): method rollback (line 614) | def rollback(self): class UpdatePersonPropertiesTask (line 631) | class UpdatePersonPropertiesTask(WorkflowTask): method __init__ (line 633) | def __init__(self, requests, info, openmrs_config, person): method run (line 639) | def run(self): method rollback (line 652) | def rollback(self): function is_blank (line 672) | def is_blank(value): FILE: corehq/motech/rate_limiter.py function _get_per_user_repeater_wait_milliseconds_rate_definition (line 20) | def _get_per_user_repeater_wait_milliseconds_rate_definition(domain): function rate_limit_repeater (line 79) | def rate_limit_repeater(domain, repeater_id): function _allow_repeater (line 83) | def _allow_repeater(domain, repeater_id): function _is_under_attempt_limit (line 102) | def _is_under_attempt_limit(domain, repeater_id): function _track_repeater_rate_limited (line 108) | def _track_repeater_rate_limited(domain): function report_repeater_usage (line 117) | def report_repeater_usage(domain, milliseconds): function report_repeater_attempt (line 126) | def report_repeater_attempt(repeater_id): function _report_current_global_repeater_thresholds (line 131) | def _report_current_global_repeater_thresholds(): FILE: corehq/motech/repeater_helpers.py class RepeaterResponse (line 12) | class RepeaterResponse: function get_relevant_case_updates_from_form_json (line 24) | def get_relevant_case_updates_from_form_json( FILE: corehq/motech/repeaters/apps.py class RepeaterAppConfig (line 10) | class RepeaterAppConfig(AppConfig): method ready (line 14) | def ready(self): FILE: corehq/motech/repeaters/const.py class State (line 30) | class State(IntegerChoices): method state_for_key (line 41) | def state_for_key(key): class UCRRestrictionFFStatus (line 56) | class UCRRestrictionFFStatus(IntegerChoices): FILE: corehq/motech/repeaters/exceptions.py class RequestConnectionError (line 1) | class RequestConnectionError(Exception): class ReferralError (line 5) | class ReferralError(Exception): class DataRegistryCaseUpdateError (line 9) | class DataRegistryCaseUpdateError(Exception): class UnknownRepeater (line 13) | class UnknownRepeater(Exception): method __init__ (line 20) | def __init__(self, repeater_type): method __str__ (line 24) | def __str__(self): class BulkActionMissingParameters (line 28) | class BulkActionMissingParameters(Exception): FILE: corehq/motech/repeaters/expression/forms.py class BaseExpressionRepeaterForm (line 20) | class BaseExpressionRepeaterForm(GenericRepeaterForm): method set_extra_django_form_fields (line 52) | def set_extra_django_form_fields(self): method get_ordered_crispy_form_fields (line 63) | def get_ordered_crispy_form_fields(self): method clean_configured_expression (line 70) | def clean_configured_expression(self): method clean_configured_filter (line 73) | def clean_configured_filter(self): method clean_case_action_expression (line 76) | def clean_case_action_expression(self): method clean_case_action_filter_expression (line 79) | def clean_case_action_filter_expression(self): method clean (line 85) | def clean(self): method _clean_expression (line 108) | def _clean_expression(self, field_name): method _clean_filter (line 120) | def _clean_filter(self, raw_expression): FILE: corehq/motech/repeaters/expression/repeater_generators.py class ExpressionPayloadGenerator (line 13) | class ExpressionPayloadGenerator(BasePayloadGenerator): method content_type (line 15) | def content_type(self): method get_payload (line 18) | def get_payload(self, repeat_record, payload_doc, parsed_expression): method get_url (line 22) | def get_url(self, repeat_record, url_template, payload_doc): class ArcGISFormExpressionPayloadGenerator (line 46) | class ArcGISFormExpressionPayloadGenerator(ExpressionPayloadGenerator): method get_url (line 48) | def get_url(self, repeat_record, url_template, payload_doc): method content_type (line 54) | def content_type(self): method get_payload (line 57) | def get_payload(self, repeat_record, payload_doc, parsed_expression): function _generate_payload (line 69) | def _generate_payload(payload_doc, parsed_expression): FILE: corehq/motech/repeaters/expression/repeaters.py class BaseExpressionRepeater (line 40) | class BaseExpressionRepeater(Repeater): class Meta (line 43) | class Meta: method parsed_filter (line 58) | def parsed_filter(self): method parsed_expression (line 63) | def parsed_expression(self): method parsed_case_action_filter (line 68) | def parsed_case_action_filter(self): method parsed_case_action_expression (line 75) | def parsed_case_action_expression(self): method available_for_domain (line 81) | def available_for_domain(cls, domain): method allowed_to_forward (line 84) | def allowed_to_forward(self, payload): method get_payload (line 89) | def get_payload(self, repeat_record): method get_url (line 99) | def get_url(self, repeat_record): method handle_response (line 109) | def handle_response(self, response, repeat_record): method _process_response_as_case_update (line 121) | def _process_response_as_case_update(self, response, repeat_record): method _perform_case_update (line 130) | def _perform_case_update(self, domain, context): method device_id (line 145) | def device_id(self): class CaseExpressionRepeater (line 149) | class CaseExpressionRepeater(BaseExpressionRepeater): class Meta (line 153) | class Meta: method form_class_name (line 158) | def form_class_name(self): method payload_doc (line 162) | def payload_doc(self, repeat_record): method allowed_to_forward (line 165) | def allowed_to_forward(self, payload): class FormExpressionRepeater (line 187) | class FormExpressionRepeater(BaseExpressionRepeater): class Meta (line 191) | class Meta: method form_class_name (line 196) | def form_class_name(self): method payload_doc (line 200) | def payload_doc(self, repeat_record): class ArcGISFormExpressionRepeater (line 207) | class ArcGISFormExpressionRepeater(FormExpressionRepeater): class Meta (line 212) | class Meta: method form_class_name (line 217) | def form_class_name(self): method available_for_domain (line 221) | def available_for_domain(cls, domain): method send_request (line 227) | def send_request(self, repeat_record, payload): method _error_response (line 235) | def _error_response(error_json): function get_evaluation_context (line 278) | def get_evaluation_context(domain, repeat_record, payload_doc, response): FILE: corehq/motech/repeaters/expression/tests.py class MockResponse (line 35) | class MockResponse: method json (line 41) | def json(self): class BaseExpressionRepeaterTest (line 48) | class BaseExpressionRepeaterTest(TestCase, DomainSubscriptionMixin): method setUpClass (line 52) | def setUpClass(cls): method setUp (line 67) | def setUp(self): method _create_repeater (line 70) | def _create_repeater(self): method repeat_records (line 74) | def repeat_records(cls, domain_name): method _create_case_block (line 79) | def _create_case_block(self, case_id): method _create_case (line 87) | def _create_case(self, xmlns): class CaseExpressionRepeaterTest (line 95) | class CaseExpressionRepeaterTest(BaseExpressionRepeaterTest): method _create_repeater (line 97) | def _create_repeater(self): method test_filter_cases (line 147) | def test_filter_cases(self): method test_payload (line 159) | def test_payload(self): method test_payload_empty_expression (line 167) | def test_payload_empty_expression(self): method test_custom_url (line 175) | def test_custom_url(self): method test_process_response_filter (line 208) | def test_process_response_filter(self): method test_process_response (line 231) | def test_process_response(self): method test_allowed_to_forward (line 296) | def test_allowed_to_forward(self, transaction_details, can_forward): class FormExpressionRepeaterTest (line 311) | class FormExpressionRepeaterTest(BaseExpressionRepeaterTest): method _create_repeater (line 324) | def _create_repeater(self): method expected_payload (line 358) | def expected_payload(self, case_id): method test_filter_forms (line 366) | def test_filter_forms(self): method test_payload (line 373) | def test_payload(self): method test_process_response (line 385) | def test_process_response(self): method test_custom_url (line 430) | def test_custom_url(self): class ArcGISExpressionRepeaterTest (line 470) | class ArcGISExpressionRepeaterTest(FormExpressionRepeaterTest): method _create_repeater (line 488) | def _create_repeater(self): method expected_payload (line 547) | def expected_payload(self, case_id): method test_send_request_error_handling (line 565) | def test_send_request_error_handling(self): method test_error_response_with_message_code (line 601) | def test_error_response_with_message_code(self): method test_error_response_without_message_code (line 625) | def test_error_response_without_message_code(self): method test_error_response_with_empty_error (line 636) | def test_error_response_with_empty_error(self): method test_custom_url (line 645) | def test_custom_url(self): function test_doctests (line 684) | def test_doctests(): FILE: corehq/motech/repeaters/expression/views.py class BaseExpressionRepeaterView (line 8) | class BaseExpressionRepeaterView(AddRepeaterView): method page_url (line 12) | def page_url(self): method set_repeater_attr (line 15) | def set_repeater_attr(self, repeater, cleaned_data): class AddCaseExpressionRepeaterView (line 33) | class AddCaseExpressionRepeaterView(BaseExpressionRepeaterView): class EditCaseExpressionRepeaterView (line 37) | class EditCaseExpressionRepeaterView(EditRepeaterView, BaseExpressionRep... class AddFormExpressionRepeaterView (line 42) | class AddFormExpressionRepeaterView(BaseExpressionRepeaterView): class EditFormExpressionRepeaterView (line 46) | class EditFormExpressionRepeaterView(EditRepeaterView, BaseExpressionRep... class AddArcGISFormExpressionRepeaterView (line 51) | class AddArcGISFormExpressionRepeaterView(BaseExpressionRepeaterView): class EditArcGISFormExpressionRepeaterView (line 55) | class EditArcGISFormExpressionRepeaterView(EditRepeaterView, BaseExpress... FILE: corehq/motech/repeaters/forms.py class GenericRepeaterForm (line 21) | class GenericRepeaterForm(forms.Form): method __init__ (line 23) | def __init__(self, *args, **kwargs): method set_extra_django_form_fields (line 40) | def set_extra_django_form_fields(self): method _initialize_crispy_layout (line 73) | def _initialize_crispy_layout(self): method get_ordered_crispy_form_fields (line 90) | def get_ordered_crispy_form_fields(self): method clean (line 99) | def clean(self): class FormRepeaterForm (line 107) | class FormRepeaterForm(GenericRepeaterForm): method __init__ (line 132) | def __init__(self, *args, **kwargs): method user_choices (line 142) | def user_choices(self): method set_extra_django_form_fields (line 146) | def set_extra_django_form_fields(self): method get_ordered_crispy_form_fields (line 150) | def get_ordered_crispy_form_fields(self): class CaseRepeaterForm (line 159) | class CaseRepeaterForm(GenericRepeaterForm): method case_type_choices (line 175) | def case_type_choices(self): method user_choices (line 180) | def user_choices(self): method set_extra_django_form_fields (line 184) | def set_extra_django_form_fields(self): method get_ordered_crispy_form_fields (line 189) | def get_ordered_crispy_form_fields(self): method clean (line 193) | def clean(self): FILE: corehq/motech/repeaters/management/commands/delete_duplicate_cancelled_records.py class Command (line 13) | class Command(BaseCommand): method add_arguments (line 21) | def add_arguments(self, parser): method most_recent_success (line 31) | def most_recent_success(self): method handle (line 40) | def handle(self, domain, repeater_id, *args, **options): method resolve_duplicates (line 84) | def resolve_duplicates(self, records_by_payload_id): method delete_already_successful_records (line 95) | def delete_already_successful_records(self, redundant_records): class RepeatRecordDeleter (line 104) | class RepeatRecordDeleter: method __enter__ (line 106) | def __enter__(self): method delete (line 110) | def delete(self, record): method flush (line 115) | def flush(self): method __exit__ (line 120) | def __exit__(self, *exc_info): FILE: corehq/motech/repeaters/management/commands/generate_repeaters_summary.py class Command (line 6) | class Command(BaseCommand): method handle (line 11) | def handle(self, *args, **options): FILE: corehq/motech/repeaters/management/commands/repeater.py class Command (line 9) | class Command(BaseCommand): method add_arguments (line 43) | def add_arguments(self, parser): method _get_repeater (line 53) | def _get_repeater(self, domain, repeater_id): method _get_repeater_info (line 61) | def _get_repeater_info(self, repeater): method _set_max_workers (line 65) | def _set_max_workers(self, repeater, max_workers): method handle (line 78) | def handle(self, domain, repeater_id, *args, **options): function pformat (line 93) | def pformat(http_status_codes): function title_case (line 101) | def title_case(const_case): FILE: corehq/motech/repeaters/management/commands/update_cancelled_records.py class Command (line 12) | class Command(BaseCommand): method add_arguments (line 22) | def add_arguments(self, parser): method handle (line 68) | def handle(self, domain, repeater_id, *args, **options): method _succeed_record (line 136) | def _succeed_record(self, record, success_message, response_status): FILE: corehq/motech/repeaters/migration_utils.py function repair_repeaters_with_whitelist_bug (line 8) | def repair_repeaters_with_whitelist_bug(): FILE: corehq/motech/repeaters/migrations/0001_adjust_auth_field_format_squashed_0015_drop_connection_settings_fk.py class RepeaterDbSQL (line 26) | class RepeaterDbSQL(migrations.RunSQL): method database_forwards (line 28) | def database_forwards(self, app_label, schema_editor, from_state, to_s... method database_backwards (line 32) | def database_backwards(self, app_label, schema_editor, from_state, to_... method should_apply (line 36) | def should_apply(self, schema_editor): class Migration (line 41) | class Migration(migrations.Migration): FILE: corehq/motech/repeaters/migrations/0002_repeaters_db.py class RepeatersMigration (line 123) | class RepeatersMigration(migrations.RunSQL): method database_forwards (line 126) | def database_forwards(self, app_label, schema_editor, from_state, to_s... method database_backwards (line 133) | def database_backwards(self, app_label, schema_editor, from_state, to_... method should_apply (line 139) | def should_apply(self, schema_editor): method context (line 144) | def context(self): function repeaters_db (line 150) | def repeaters_db(): function count_records (line 154) | def count_records(connection, table): class Migration (line 160) | class Migration(migrations.Migration): FILE: corehq/motech/repeaters/migrations/0003_id_fields.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/motech/repeaters/migrations/0004_fix_whitelist_bug_repeaters.py function _fix_broken_repeaters (line 8) | def _fix_broken_repeaters(apps, schema_editor): class Migration (line 12) | class Migration(migrations.Migration): FILE: corehq/motech/repeaters/migrations/0005_datasourcerepeater.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/repeaters/migrations/0006_int_state_add_next_check_rm_repeater_id.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/motech/repeaters/migrations/0007_lengthen_payload_id.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/repeaters/migrations/0008_sqlrepeatrecords.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/motech/repeaters/migrations/0009_add_domain_to_indexes.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/repeaters/migrations/0010_rm_couch_artifacts.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/repeaters/migrations/0011_remove_obsolete_entities.py class RepeatersFdwMigration (line 11) | class RepeatersFdwMigration(migrations.RunSQL): method database_forwards (line 13) | def database_forwards(self, app_label, schema_editor, from_state, to_s... method database_backwards (line 17) | def database_backwards(self, app_label, schema_editor, from_state, to_... method should_apply (line 21) | def should_apply(self, schema_editor): method context (line 26) | def context(self): function repeaters_db (line 32) | def repeaters_db(): class Migration (line 36) | class Migration(migrations.Migration): FILE: corehq/motech/repeaters/migrations/0012_formexpressionrepeater_arcgisformexpressionrepeater.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/repeaters/migrations/0013_alter_repeatrecord_state_and_more.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/motech/repeaters/migrations/0014_alter_repeater_request_method.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/repeaters/migrations/0015_drop_receiverwrapper_couchdb.py function _delete_receiverwrapper_couchdb (line 11) | def _delete_receiverwrapper_couchdb(apps, schema_editor): class Migration (line 19) | class Migration(migrations.Migration): FILE: corehq/motech/repeaters/migrations/0016_repeater_max_workers.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/motech/repeaters/migrations/0017_add_indexes.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/motech/repeaters/migrations/0018_datasourceupdate.py function add_partitions (line 9) | def add_partitions(apps, schema_editor): class Migration (line 13) | class Migration(migrations.Migration): FILE: corehq/motech/repeaters/migrations/0019_connectformrepeater.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/motech/repeaters/migrations/0020_repeater_extra_backoff_codes.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/motech/repeaters/migrations/0021_alter_repeatrecord_state_and_more.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/motech/repeaters/migrations/0022_delete_cowin_repeaters.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/motech/repeaters/models.py function log_repeater_timeout_in_datadog (line 172) | def log_repeater_timeout_in_datadog(domain): function log_repeater_error_in_datadog (line 176) | def log_repeater_error_in_datadog(domain, status_code, repeater_type): function log_repeater_success_in_datadog (line 184) | def log_repeater_success_in_datadog(domain, status_code, repeater_type): class RepeaterSuperProxy (line 192) | class RepeaterSuperProxy(models.Model): class Meta (line 198) | class Meta: method clear_caches (line 201) | def clear_caches(self): method save (line 205) | def save(self, *args, **kwargs): method delete (line 213) | def delete(self, *args, **kwargs): method __new__ (line 217) | def __new__(cls, *args, **kwargs): class RepeaterManager (line 244) | class RepeaterManager(models.Manager): method get_all_ready_ids_by_domain (line 246) | def get_all_ready_ids_by_domain(self): method get_all_ready_next_attempt_null (line 263) | def get_all_ready_next_attempt_null(self): method get_all_ready_next_attempt_now (line 274) | def get_all_ready_next_attempt_now(self): method get_queryset (line 285) | def get_queryset(self): method by_domain (line 292) | def by_domain(self, domain): class Repeater (line 297) | class Repeater(RepeaterSuperProxy): class Meta (line 323) | class Meta: method __str__ (line 344) | def __str__(self): method _get_connection_settings (line 347) | def _get_connection_settings(self, id_): method repeater_id (line 353) | def repeater_id(self): method _optionvalue_fields (line 357) | def _optionvalue_fields(self): method to_json (line 364) | def to_json(self): method _convert_to_serializable (line 391) | def _convert_to_serializable(self, repeater_dict): method get_url (line 406) | def get_url(self, record): method _repeater_type (line 410) | def _repeater_type(cls): # noqa: N805 method repeat_records_ready (line 414) | def repeat_records_ready(self): method num_workers (line 433) | def num_workers(self): method backoff_codes (line 440) | def backoff_codes(self): method add_backoff_code (line 453) | def add_backoff_code(self, code): method remove_backoff_code (line 464) | def remove_backoff_code(self, code): method set_backoff (line 475) | def set_backoff(self): method reset_backoff (line 486) | def reset_backoff(self): method _get_next_attempt_at (line 501) | def _get_next_attempt_at(last_attempt_at): method verify (line 523) | def verify(self): method register (line 526) | def register(self, payload, fire_synchronously=False): method allowed_to_forward (line 545) | def allowed_to_forward(self, payload): method pause (line 551) | def pause(self): method resume (line 556) | def resume(self): method retire (line 560) | def retire(self): method _time_request (line 564) | def _time_request(self, repeat_record, payload, timing_context): method fire_for_record (line 568) | def fire_for_record(self, repeat_record, timing_context=None): method get_payload (line 587) | def get_payload(self, repeat_record): method send_request (line 590) | def send_request(self, repeat_record, payload): method handle_response (line 602) | def handle_response(self, result, repeat_record): method get_headers (line 625) | def get_headers(self, repeat_record): method generator (line 631) | def generator(self): method _get_payload_generator (line 634) | def _get_payload_generator(self, payload_format): method _format_or_default_format (line 644) | def _format_or_default_format(self): method payload_doc (line 650) | def payload_doc(self, repeat_record): method allow_retries (line 653) | def allow_retries(self, response): method available_for_domain (line 660) | def available_for_domain(cls, domain): method form_class_name (line 666) | def form_class_name(self): class FormRepeater (line 676) | class FormRepeater(Repeater): class Meta (line 682) | class Meta: method payload_doc (line 690) | def payload_doc(self, repeat_record): method form_class_name (line 694) | def form_class_name(self): method allowed_to_forward (line 700) | def allowed_to_forward(self, payload): method get_url (line 710) | def get_url(self, repeat_record): method get_headers (line 725) | def get_headers(self, repeat_record): class ConnectFormRepeater (line 733) | class ConnectFormRepeater(FormRepeater): class Meta (line 737) | class Meta: method form_class_name (line 744) | def form_class_name(self): method available_for_domain (line 749) | def available_for_domain(cls, domain): class CaseRepeater (line 755) | class CaseRepeater(Repeater): class Meta (line 764) | class Meta: method register (line 771) | def register(self, payload, fire_synchronously=False): method form_class_name (line 786) | def form_class_name(self): method allowed_to_forward (line 792) | def allowed_to_forward(self, payload): method _allowed_case_type (line 795) | def _allowed_case_type(self, payload): method _allowed_user (line 798) | def _allowed_user(self, payload): method payload_user_id (line 801) | def payload_user_id(self, payload): method payload_doc (line 806) | def payload_doc(self, repeat_record): method get_headers (line 809) | def get_headers(self, repeat_record): class CreateCaseRepeater (line 817) | class CreateCaseRepeater(CaseRepeater): class Meta (line 818) | class Meta: method register (line 823) | def register(self, payload, fire_synchronously=False): method allowed_to_forward (line 828) | def allowed_to_forward(self, payload): class UpdateCaseRepeater (line 833) | class UpdateCaseRepeater(CaseRepeater): class Meta (line 838) | class Meta: method allowed_to_forward (line 843) | def allowed_to_forward(self, payload): class ReferCaseRepeater (line 847) | class ReferCaseRepeater(CreateCaseRepeater): class Meta (line 852) | class Meta: method form_class_name (line 859) | def form_class_name(self): method available_for_domain (line 864) | def available_for_domain(cls, domain): method get_url (line 869) | def get_url(self, repeat_record): method send_request (line 873) | def send_request(self, repeat_record, payload): class DataRegistryCaseUpdateRepeater (line 880) | class DataRegistryCaseUpdateRepeater(CreateCaseRepeater): class Meta (line 885) | class Meta: method form_class_name (line 891) | def form_class_name(self): method available_for_domain (line 895) | def available_for_domain(cls, domain): method get_url (line 898) | def get_url(self, repeat_record): method send_request (line 902) | def send_request(self, repeat_record, payload): method allowed_to_forward (line 907) | def allowed_to_forward(self, payload): class ShortFormRepeater (line 926) | class ShortFormRepeater(Repeater): class Meta (line 933) | class Meta: method payload_doc (line 941) | def payload_doc(self, repeat_record): method allowed_to_forward (line 944) | def allowed_to_forward(self, payload): method get_headers (line 947) | def get_headers(self, repeat_record): class AppStructureRepeater (line 955) | class AppStructureRepeater(Repeater): class Meta (line 957) | class Meta: method payload_doc (line 964) | def payload_doc(self, repeat_record): class UserRepeater (line 968) | class UserRepeater(Repeater): class Meta (line 970) | class Meta: method payload_doc (line 978) | def payload_doc(self, repeat_record): class LocationRepeater (line 982) | class LocationRepeater(Repeater): class Meta (line 984) | class Meta: method payload_doc (line 992) | def payload_doc(self, repeat_record): function get_repeater_response_from_submission_response (line 996) | def get_repeater_response_from_submission_response(response): function get_all_repeater_types (line 1018) | def get_all_repeater_types(): class DataSourceUpdateManager (line 1022) | class DataSourceUpdateManager(models.Manager): method get_oldest_date (line 1024) | def get_oldest_date(self): class DataSourceUpdate (line 1035) | class DataSourceUpdate(models.Model): class Meta (line 1049) | class Meta: method get_id (line 1055) | def get_id(self): method to_json (line 1058) | def to_json(self): class DataSourceRepeater (line 1070) | class DataSourceRepeater(Repeater): class Meta (line 1077) | class Meta: method allowed_to_forward (line 1086) | def allowed_to_forward(self, payload): method payload_doc (line 1089) | def payload_doc(self, repeat_record): method clear_caches (line 1137) | def clear_caches(self): method datasource_is_subscribed_to (line 1142) | def datasource_is_subscribed_to(domain, data_source_id): class RepeatRecordManager (line 1155) | class RepeatRecordManager(models.Manager): method count_by_repeater_and_state (line 1157) | def count_by_repeater_and_state(self, domain): method count_overdue (line 1175) | def count_overdue(self, threshold=timedelta(minutes=10)): method count_all_ready (line 1187) | def count_all_ready(): method iterate (line 1195) | def iterate(self, domain, repeater_id=None, state=None, chunk_size=1000): method page (line 1204) | def page(self, domain, skip, limit, repeater_id=None, state=None): method iter_partition (line 1218) | def iter_partition(self, start, partition, total_partitions): method get_domains_with_records (line 1236) | def get_domains_with_records(self): method get_repeat_record_ids (line 1239) | def get_repeat_record_ids(self, domain, repeater_id=None, state=None, ... class RepeatRecord (line 1251) | class RepeatRecord(models.Model): class Meta (line 1270) | class Meta: method requeue (line 1297) | def requeue(self): method add_success_attempt (line 1312) | def add_success_attempt(self, response): method add_client_failure_attempt (line 1332) | def add_client_failure_attempt(self, message, retry=True): method add_server_failure_attempt (line 1340) | def add_server_failure_attempt(self, message): method _add_failure_attempt (line 1353) | def _add_failure_attempt(self, message, max_attempts, retry=True): method add_payload_rejected_attempt (line 1365) | def add_payload_rejected_attempt(self, message, traceback_str): method add_error_generating_payload_attempt (line 1376) | def add_error_generating_payload_attempt(self, message, traceback_str): method attempts (line 1388) | def attempts(self): method num_attempts (line 1397) | def num_attempts(self): method get_numbered_attempts (line 1402) | def get_numbered_attempts(self): method last_checked (line 1407) | def last_checked(self): method url (line 1415) | def url(self): method failure_reason (line 1420) | def failure_reason(self): method last_message (line 1427) | def last_message(self): method succeeded (line 1434) | def succeeded(self): method is_queued (line 1446) | def is_queued(self): method exceeded_max_retries (line 1454) | def exceeded_max_retries(self): method repeater_type (line 1458) | def repeater_type(self): method fire (line 1461) | def fire(self, force_send=False, timing_context=None): method attempt_forward_now (line 1473) | def attempt_forward_now(self, *, is_retry=False, fire_synchronously=Fa... method handle_success (line 1525) | def handle_success(self, response): method handle_server_failure (line 1538) | def handle_server_failure(self, response): method handle_exception (line 1542) | def handle_exception(self, exception): method handle_timeout (line 1546) | def handle_timeout(self, exception): method handle_payload_rejection (line 1550) | def handle_payload_rejection(self, message, traceback_str=''): method handle_generate_payload_error (line 1554) | def handle_generate_payload_error(self, message, traceback_str=''): method cancel (line 1558) | def cancel(self): method get_payload (line 1562) | def get_payload(self): method postpone_by (line 1565) | def postpone_by(self, duration): class RepeatRecordAttempt (line 1570) | class RepeatRecordAttempt(models.Model): class Meta (line 1578) | class Meta: function _register_new_attempt_to_clear_cache (line 1583) | def _register_new_attempt_to_clear_cache(sender, instance, **kwargs): function _clear_attempts_cache_after_save_new_attempt (line 1590) | def _clear_attempts_cache_after_save_new_attempt(sender, instance, **kwa... function _get_retry_interval (line 1600) | def _get_retry_interval(last_checked, now): function format_response (line 1619) | def format_response(response): function is_success_response (line 1631) | def is_success_response(response): function is_response (line 1643) | def is_response(duck): function is_server_failure (line 1651) | def is_server_failure(repeater, result): function domain_can_forward (line 1659) | def domain_can_forward(domain): function domain_can_forward_now (line 1672) | def domain_can_forward_now(domain): function forwards_to_commcare_connect (line 1685) | def forwards_to_commcare_connect(repeater): FILE: corehq/motech/repeaters/optionvalue.py class DateTimeCoder (line 50) | class DateTimeCoder: method to_json (line 52) | def to_json(value): method from_json (line 61) | def from_json(value): class OptionValue (line 65) | class OptionValue(property): method __init__ (line 69) | def __init__( method __set_name__ (line 83) | def __set_name__(self, owner, name): method __get__ (line 86) | def __get__(self, obj, objtype=None): method __set__ (line 100) | def __set__(self, obj, value): method get_default_value (line 114) | def get_default_value(self): function _assert_options (line 120) | def _assert_options(obj): FILE: corehq/motech/repeaters/repeater_generators.py function _get_test_form (line 33) | def _get_test_form(domain): class BasePayloadGenerator (line 40) | class BasePayloadGenerator(object): method __init__ (line 50) | def __init__(self, repeater): method content_type (line 54) | def content_type(self): method enabled_for_domain (line 58) | def enabled_for_domain(domain): method get_payload (line 61) | def get_payload(self, repeat_record, payload_doc): method get_headers (line 64) | def get_headers(self): class GeneratorCollection (line 71) | class GeneratorCollection(object): method __init__ (line 78) | def __init__(self, repeater_class): method add_new_format (line 83) | def add_new_format(self, generator_class, is_default=False): method get_default_format (line 111) | def get_default_format(self): method get_default_generator (line 115) | def get_default_generator(self): method get_all_formats (line 119) | def get_all_formats(self, for_domain=None): method get_generator_by_format (line 124) | def get_generator_by_format(self, format): class RegisterGenerator (line 135) | class RegisterGenerator(object): method __init__ (line 149) | def __init__(self, repeater_cls, format_name, format_label, is_default... method __call__ (line 156) | def __call__(self, generator_class): method register_generator (line 168) | def register_generator(cls, generator_class, repeater_class, is_default): method get_collection (line 172) | def get_collection(cls, repeater_class): method generator_class_by_repeater_format (line 187) | def generator_class_by_repeater_format(cls, repeater_class, format_name): method all_formats_by_repeater (line 192) | def all_formats_by_repeater(cls, repeater_class, for_domain=None): method default_format_by_repeater (line 197) | def default_format_by_repeater(cls, repeater_class): class FormRepeaterXMLPayloadGenerator (line 202) | class FormRepeaterXMLPayloadGenerator(BasePayloadGenerator): method get_payload (line 206) | def get_payload(self, repeat_record, payload_doc): class CaseRepeaterXMLPayloadGenerator (line 210) | class CaseRepeaterXMLPayloadGenerator(BasePayloadGenerator): method get_payload (line 214) | def get_payload(self, repeat_record, payload_doc): class CaseRepeaterJsonPayloadGenerator (line 218) | class CaseRepeaterJsonPayloadGenerator(BasePayloadGenerator): method get_payload (line 222) | def get_payload(self, repeat_record, payload_doc): method content_type (line 227) | def content_type(self): class CaseTypeReferralConfig (line 232) | class CaseTypeReferralConfig(object): class ReferCasePayloadGenerator (line 239) | class ReferCasePayloadGenerator(BasePayloadGenerator): method get_headers (line 241) | def get_headers(self): method get_payload (line 246) | def get_payload(self, repeat_record, payload_doc): method _get_case_blocks (line 297) | def _get_case_blocks(self, cases_to_forward, case_ids_to_forward, case... method _get_updated_case_id (line 323) | def _get_updated_case_id(self, original_case_id, case_id_map): method _update_case_properties_with_blacklist (line 331) | def _update_case_properties_with_blacklist(self, case, config): method _update_case_properties_with_whitelist (line 336) | def _update_case_properties_with_whitelist(self, case, config): method _set_constant_properties (line 343) | def _set_constant_properties(self, case, config): method _set_referral_properties (line 347) | def _set_referral_properties(self, case, original_case_id, original_ca... method submission_username (line 367) | def submission_username(self): method submission_user_id (line 370) | def submission_user_id(self): class CaseUpdateConfig (line 375) | class CaseUpdateConfig: method from_payload (line 432) | def from_payload(cls, payload_doc): method validate (line 450) | def validate(self): method _check_index_relationship (line 463) | def _check_index_relationship(self, attribute, value): method get_case_block (line 467) | def get_case_block(self, registry_helper, repeat_record, couch_user, c... method _get_target_case (line 493) | def _get_target_case(self, couch_user, registry_helper, repeat_record): method get_case_updates (line 499) | def get_case_updates(self, couch_user, registry_helper, repeat_record): method _get_case_updates_from_source (line 512) | def _get_case_updates_from_source(self, from_case, includes, excludes): method get_case_indices (line 531) | def get_case_indices(self, target_domain, target_case, configs_by_case... method get_create_case_index (line 541) | def get_create_case_index(self, target_domain, configs_by_case_id): method get_remove_case_index (line 571) | def get_remove_case_index(self, target_case): method _get_registry_case (line 590) | def _get_registry_case(domain, case_id, case_type, for_create, registr... class DataRegistryCaseUpdatePayloadGenerator (line 609) | class DataRegistryCaseUpdatePayloadGenerator(BasePayloadGenerator): method get_headers (line 613) | def get_headers(self): method get_payload (line 618) | def get_payload(self, repeat_record, payload_doc): method submission_username (line 637) | def submission_username(self): method submission_user_id (line 640) | def submission_user_id(self): method _get_configs (line 643) | def _get_configs(self, payload_doc): method _recursive_get_configs (line 650) | def _recursive_get_configs(self, payload_doc): method _get_case_blocks (line 660) | def _get_case_blocks(self, repeat_record, configs, couch_user): class AppStructureGenerator (line 673) | class AppStructureGenerator(BasePayloadGenerator): method get_payload (line 677) | def get_payload(self, repeat_record, payload_doc): class ShortFormRepeaterJsonPayloadGenerator (line 682) | class ShortFormRepeaterJsonPayloadGenerator(BasePayloadGenerator): method get_payload (line 686) | def get_payload(self, repeat_record, form): method content_type (line 693) | def content_type(self): class FormRepeaterJsonPayloadGenerator (line 697) | class FormRepeaterJsonPayloadGenerator(BasePayloadGenerator): method get_payload (line 702) | def get_payload(self, repeat_record, form): method content_type (line 710) | def content_type(self): class ConnectFormRepeaterPayloadGenerator (line 714) | class ConnectFormRepeaterPayloadGenerator(FormRepeaterJsonPayloadGenerat... method get_payload (line 716) | def get_payload(self, repeat_record, form): class FormDictPayloadGenerator (line 755) | class FormDictPayloadGenerator(BasePayloadGenerator): method get_payload (line 759) | def get_payload(self, repeat_record, form) -> dict: method content_type (line 763) | def content_type(self): class UserPayloadGenerator (line 767) | class UserPayloadGenerator(BasePayloadGenerator): method content_type (line 770) | def content_type(self): method get_payload (line 773) | def get_payload(self, repeat_record, user): class LocationPayloadGenerator (line 780) | class LocationPayloadGenerator(BasePayloadGenerator): method content_type (line 783) | def content_type(self): method get_payload (line 786) | def get_payload(self, repeat_record, location): class DataSourcePayloadGenerator (line 790) | class DataSourcePayloadGenerator(BasePayloadGenerator): method content_type (line 795) | def content_type(self): method get_payload (line 798) | def get_payload(self, repeat_record, payload_doc): FILE: corehq/motech/repeaters/signals.py function create_form_repeat_records (line 27) | def create_form_repeat_records(sender, xform, **kwargs): function create_case_repeat_records (line 37) | def create_case_repeat_records(sender, case, **kwargs): function create_short_form_repeat_records (line 47) | def create_short_form_repeat_records(sender, xform, **kwargs): function create_repeat_records (line 53) | def create_repeat_records(repeater_cls, payload): function _create_repeat_records (line 76) | def _create_repeat_records(repeater_cls, payload, fire_synchronously=Fal... function create_user_repeat_records (line 89) | def create_user_repeat_records(sender, couch_user, **kwargs): function create_location_repeat_records (line 95) | def create_location_repeat_records(sender, raw=False, **kwargs): function fire_synchronous_case_repeaters (line 103) | def fire_synchronous_case_repeaters(sender, case, **kwargs): function create_data_source_updated_repeat_record (line 110) | def create_data_source_updated_repeat_record(sender, datasource_update, ... FILE: corehq/motech/repeaters/static/repeaters/js/bootstrap3/repeat_record_report.js function getCheckedRecords (line 202) | function getCheckedRecords() { function getRequestBody (line 206) | function getRequestBody() { function getBulkSelectionProperties (line 214) | function getBulkSelectionProperties() { function getRecordIds (line 222) | function getRecordIds() { function postResend (line 230) | function postResend(btn, data) { function postOther (line 256) | function postOther(btn, data, action) { function setAction (line 275) | function setAction(action) { function getAction (line 279) | function getAction() { function checkAllRows (line 283) | function checkAllRows() { function uncheckAllRows (line 291) | function uncheckAllRows() { function updateActionButtons (line 299) | function updateActionButtons() { function selectionContainsQueuedRecords (line 324) | function selectionContainsQueuedRecords() { function resetTableSelections (line 330) | function resetTableSelections() { function resetPage (line 337) | function resetPage() { FILE: corehq/motech/repeaters/static/repeaters/js/bootstrap5/repeat_record_report.js function getCheckedRecords (line 202) | function getCheckedRecords() { function getRequestBody (line 206) | function getRequestBody() { function getBulkSelectionProperties (line 214) | function getBulkSelectionProperties() { function getRecordIds (line 222) | function getRecordIds() { function postResend (line 230) | function postResend(btn, data) { function postOther (line 256) | function postOther(btn, data, action) { function setAction (line 275) | function setAction(action) { function getAction (line 279) | function getAction() { function checkAllRows (line 283) | function checkAllRows() { function uncheckAllRows (line 291) | function uncheckAllRows() { function updateActionButtons (line 299) | function updateActionButtons() { function selectionContainsQueuedRecords (line 324) | function selectionContainsQueuedRecords() { function resetTableSelections (line 330) | function resetTableSelections() { function resetPage (line 337) | function resetPage() { FILE: corehq/motech/repeaters/tasks.py function delete_old_request_logs (line 142) | def delete_old_request_logs(): function check_repeaters (line 161) | def check_repeaters(): function check_repeaters_in_partition (line 169) | def check_repeaters_in_partition(partition): function process_repeat_record (line 207) | def process_repeat_record(repeat_record_id, domain): function retry_process_repeat_record (line 216) | def retry_process_repeat_record(repeat_record_id, domain): function process_datasource_repeat_record (line 225) | def process_datasource_repeat_record(repeat_record_id, domain): function retry_process_datasource_repeat_record (line 234) | def retry_process_datasource_repeat_record(repeat_record_id, domain): function _process_repeat_record (line 242) | def _process_repeat_record(repeat_record): function process_repeaters (line 312) | def process_repeaters(): function iter_ready_repeater_ids (line 329) | def iter_ready_repeater_ids(): function get_repeater_ids_by_domain (line 356) | def get_repeater_ids_by_domain(): function process_repeater (line 370) | def process_repeater(repeater, lock_token): function process_pending_repeat_record (line 394) | def process_pending_repeat_record(repeat_record_id, domain): function process_failed_repeat_record (line 401) | def process_failed_repeat_record(repeat_record_id, domain): function process_ready_repeat_record (line 407) | def process_ready_repeat_record(repeat_record_id): function is_repeat_record_ready (line 433) | def is_repeat_record_ready(repeat_record): function _metrics_wait_duration (line 450) | def _metrics_wait_duration(repeat_record): function _get_wait_duration_seconds (line 473) | def _get_wait_duration_seconds(repeat_record): function update_repeater (line 484) | def update_repeater(repeat_record_states, repeater_id, lock_token, more): class RepeaterLock (line 523) | class RepeaterLock: method __init__ (line 530) | def __init__(self, repeater_id, lock_token=None): method acquire (line 534) | def acquire(self): method reacquire (line 544) | def reacquire(self): method release (line 550) | def release(self): method _get_lock (line 554) | def _get_lock(self, repeater_id): function purge_old_datasourceupdates (line 566) | def purge_old_datasourceupdates(): FILE: corehq/motech/repeaters/tests/test_commcare_submission_response_handling.py class CommCareSubmissionResponseTests (line 35) | class CommCareSubmissionResponseTests(SimpleTestCase): function test_get_response (line 45) | def test_get_response(self, status_code, text, expected_response): FILE: corehq/motech/repeaters/tests/test_connect_repeater.py function test_connect_repeater (line 62) | def test_connect_repeater(mocked_super): FILE: corehq/motech/repeaters/tests/test_data_registry_case_update_payload_generator.py function test_generator_empty_update (line 30) | def test_generator_empty_update(): function test_generator_fail_if_case_domain_mismatch (line 34) | def test_generator_fail_if_case_domain_mismatch(): function test_generator_include_list (line 41) | def test_generator_include_list(): function test_generator_exclude_list (line 47) | def test_generator_exclude_list(): function test_generator_create_case (line 60) | def test_generator_create_case(): function test_generator_create_case_with_index (line 69) | def test_generator_create_case_with_index(): function test_generator_create_case_with_index_to_another_case_being_created (line 83) | def test_generator_create_case_with_index_to_another_case_being_created(): function test_generator_create_case_target_exists (line 107) | def test_generator_create_case_target_exists(): function test_generator_create_close (line 114) | def test_generator_create_close(): function test_generator_update_create_index_to_parent (line 123) | def test_generator_update_create_index_to_parent(): function test_generator_update_create_index_to_host (line 135) | def test_generator_update_create_index_to_host(): function test_generator_update_create_index_custom_identifier (line 147) | def test_generator_update_create_index_custom_identifier(): function test_generator_update_create_index_not_found (line 159) | def test_generator_update_create_index_not_found(): function test_generator_update_create_index_domain_mismatch (line 167) | def test_generator_update_create_index_domain_mismatch(): function test_generator_update_create_index_case_type_mismatch (line 179) | def test_generator_update_create_index_case_type_mismatch(): function test_generator_update_create_index_bad_relationship (line 191) | def test_generator_update_create_index_bad_relationship(): function test_generator_update_remove_index_bad_relationship (line 198) | def test_generator_update_remove_index_bad_relationship(): function test_generator_update_remove_index (line 205) | def test_generator_update_remove_index(): function test_generator_update_remove_index_extension (line 212) | def test_generator_update_remove_index_extension(): function test_generator_update_remove_index_check_relationship (line 219) | def test_generator_update_remove_index_check_relationship(): function test_generator_update_create_and_remove_index (line 226) | def test_generator_update_create_and_remove_index(): function test_generator_update_create_and_remove_same_index (line 243) | def test_generator_update_create_and_remove_same_index(): function test_generator_update_multiple_nested_cases (line 259) | def test_generator_update_multiple_nested_cases(): function test_generator_update_multiple_cases_multiple_domains (line 308) | def test_generator_update_multiple_cases_multiple_domains(): function test_generator_required_fields (line 322) | def test_generator_required_fields(): function test_generator_required_fields_create_missing_owner (line 330) | def test_generator_required_fields_create_missing_owner(): function test_generator_required_fields_create_missing_case_type (line 342) | def test_generator_required_fields_create_missing_case_type(): function test_generator_copy_from_other_case (line 355) | def test_generator_copy_from_other_case(): function _test_payload_generator (line 378) | def _test_payload_generator(intent_case, registry_mock_cases=None, class DataRegistryUpdateForm (line 420) | class DataRegistryUpdateForm: method __init__ (line 421) | def __init__(self, form, primary_intent_case): method _get_intent_cases (line 432) | def _get_intent_cases(self, intent_case): method _get_form_value (line 439) | def _get_form_value(self, name): method assert_case_updates (line 442) | def assert_case_updates(self, expected_updates): method assert_case_index (line 451) | def assert_case_index(self, expected_indices): method assert_form_props (line 460) | def assert_form_props(self, expected, device_id=None): method assert_case_create (line 469) | def assert_case_create(self, expected_creates): method assert_case_close (line 477) | def assert_case_close(self, case_ids): class IntentCaseBuilder (line 482) | class IntentCaseBuilder: method __init__ (line 485) | def __init__(self, registry="registry1"): method target_case (line 492) | def target_case(self, domain=TARGET_DOMAIN, case_id="1"): method create_case (line 499) | def create_case(self, owner_id, case_type="patient"): method close_case (line 507) | def close_case(self): method create_index (line 513) | def create_index(self, case_id, case_type, relationship="child", ident... method remove_index (line 523) | def remove_index(self, case_id, identifier, relationship=None): method include_props (line 532) | def include_props(self, include): method exclude_props (line 536) | def exclude_props(self, exclude): method case_properties (line 540) | def case_properties(self, **kwargs): method copy_props_from (line 544) | def copy_props_from(self, domain, case_id, case_type, includes=None, e... method set_subcases (line 554) | def set_subcases(self, subcases): method get_case (line 557) | def get_case(self, case_json=None, case_type=None): function _mock_registry (line 578) | def _mock_registry(): function _mock_case (line 584) | def _mock_case(case_id, props=None, domain=TARGET_DOMAIN, case_type="pat... FILE: corehq/motech/repeaters/tests/test_data_registry_case_update_repeater.py class DataRegistryCaseUpdateRepeaterTest (line 25) | class DataRegistryCaseUpdateRepeaterTest(TestCase, TestXmlMixin, DomainS... method setUpClass (line 30) | def setUpClass(cls): method test_update_cases (line 83) | def test_update_cases(self): method test_prevention_of_update_chaining (line 126) | def test_prevention_of_update_chaining(self): method repeat_records (line 147) | def repeat_records(cls, domain_name): FILE: corehq/motech/repeaters/tests/test_dbaccessors.py class TestRepeatRecordDBAccessors (line 10) | class TestRepeatRecordDBAccessors(TestCase): method setUpClass (line 16) | def setUpClass(cls): method test_get_paged_repeat_records (line 109) | def test_get_paged_repeat_records(self): method test_get_paged_repeat_records_with_repeater_id (line 113) | def test_get_paged_repeat_records_with_repeater_id(self): method test_get_paged_repeat_records_with_state (line 117) | def test_get_paged_repeat_records_with_state(self): method test_get_paged_repeat_records_wrong_domain (line 121) | def test_get_paged_repeat_records_wrong_domain(self): method test_get_all_paged_repeat_records (line 125) | def test_get_all_paged_repeat_records(self): method test_get_all_repeat_records_by_domain_wrong_domain (line 129) | def test_get_all_repeat_records_by_domain_wrong_domain(self): method test_get_all_repeat_records_by_domain_with_repeater_id (line 133) | def test_get_all_repeat_records_by_domain_with_repeater_id(self): method test_get_all_repeat_records_by_domain (line 137) | def test_get_all_repeat_records_by_domain(self): method test_get_repeat_records_by_payload_id (line 141) | def test_get_repeat_records_by_payload_id(self): FILE: corehq/motech/repeaters/tests/test_display.py class RepeaterTestCase (line 17) | class RepeaterTestCase(TestCase): method setUp (line 19) | def setUp(self): method test_record_display_sql (line 31) | def test_record_display_sql(self): method test_record_display_backoff_repeaters (line 45) | def test_record_display_backoff_repeaters(self): method test_record_display_succeeded (line 57) | def test_record_display_succeeded(self): method test_record_display_repeater_paused (line 69) | def test_record_display_repeater_paused(self): class ResponseDuck (line 76) | class ResponseDuck: FILE: corehq/motech/repeaters/tests/test_forms.py function test_doctests (line 6) | def test_doctests(): FILE: corehq/motech/repeaters/tests/test_migration_utils.py class TestRepairRepeatersWithWhitelistBug (line 10) | class TestRepairRepeatersWithWhitelistBug(TestCase): method test_properly_configured_repeater_is_ignored (line 15) | def test_properly_configured_repeater_is_ignored(self): method test_impacted_repeater_is_fixed (line 29) | def test_impacted_repeater_is_fixed(self): method test_impacted_but_deleted_repeater_is_fixed (line 43) | def test_impacted_but_deleted_repeater_is_fixed(self): method setUpClass (line 59) | def setUpClass(cls): FILE: corehq/motech/repeaters/tests/test_models.py function test_get_all_repeater_types (line 46) | def test_get_all_repeater_types(): class RepeaterTestCase (line 53) | class RepeaterTestCase(TestCase): method setUp (line 55) | def setUp(self): class TestSoftDeleteRepeaters (line 66) | class TestSoftDeleteRepeaters(RepeaterTestCase): method setUp (line 67) | def setUp(self) -> None: method test_soft_deletion (line 78) | def test_soft_deletion(self): method test_repeatrs_retired_from_sql (line 90) | def test_repeatrs_retired_from_sql(self): class TestRepeaterName (line 97) | class TestRepeaterName(RepeaterTestCase): method test_repeater_name (line 99) | def test_repeater_name(self): class TestRepeatRecordOrdering (line 103) | class TestRepeatRecordOrdering(RepeaterTestCase): method setUp (line 105) | def setUp(self): method test_earlier_record_created_later (line 113) | def test_earlier_record_created_later(self): method test_later_record_created_later (line 127) | def test_later_record_created_later(self): class TestConnectionSettingsSoftDelete (line 138) | class TestConnectionSettingsSoftDelete(TestCase): method setUp (line 140) | def setUp(self): method test_soft_delete (line 145) | def test_soft_delete(self): class RepeaterManagerTests (line 151) | class RepeaterManagerTests(RepeaterTestCase): method test_all_ready_no_repeat_records (line 153) | def test_all_ready_no_repeat_records(self): method test_all_ready_pending_repeat_record (line 157) | def test_all_ready_pending_repeat_record(self): method test_all_ready_failed_repeat_record (line 165) | def test_all_ready_failed_repeat_record(self): method test_all_ready_succeeded_repeat_record (line 173) | def test_all_ready_succeeded_repeat_record(self): method test_all_ready_cancelled_repeat_record (line 178) | def test_all_ready_cancelled_repeat_record(self): method test_all_ready_paused (line 183) | def test_all_ready_paused(self): method test_all_ready_next_future (line 191) | def test_all_ready_next_future(self): method test_all_ready_next_past (line 200) | def test_all_ready_next_past(self): method test_all_ready_ids (line 212) | def test_all_ready_ids(self): method test_distinct (line 220) | def test_distinct(self): function make_repeat_record (line 234) | def make_repeat_record(repeater, state): function pause (line 244) | def pause(repeater): function set_next_attempt_at (line 255) | def set_next_attempt_at(repeater, when): class Unknown (line 265) | class Unknown: class IsResponseTests (line 269) | class IsResponseTests(SimpleTestCase): method test_has_text (line 271) | def test_has_text(self): method test_has_status_code (line 276) | def test_has_status_code(self): method test_has_reason (line 281) | def test_has_reason(self): method test_has_status_code_and_reason (line 286) | def test_has_status_code_and_reason(self): class ResponseMock (line 293) | class ResponseMock: class FormatResponseTests (line 300) | class FormatResponseTests(SimpleTestCase): method test_non_response (line 302) | def test_non_response(self): method test_no_text (line 306) | def test_no_text(self): method test_with_text (line 312) | def test_with_text(self): method test_with_url (line 319) | def test_with_url(self): class AttemptsTests (line 328) | class AttemptsTests(RepeaterTestCase): method setUp (line 330) | def setUp(self): method test_add_success_attempt_true (line 338) | def test_add_success_attempt_true(self): method test_add_success_attempt_200 (line 345) | def test_add_success_attempt_200(self): method test_add_server_failure_attempt_fail (line 356) | def test_add_server_failure_attempt_fail(self): method test_add_server_failure_attempt_cancel (line 365) | def test_add_server_failure_attempt_cancel(self): method test_add_client_failure_attempt_fail (line 378) | def test_add_client_failure_attempt_fail(self): method test_add_client_failure_attempt_cancel (line 387) | def test_add_client_failure_attempt_cancel(self): method test_add_client_failure_attempt_no_retry (line 399) | def test_add_client_failure_attempt_no_retry(self): method test_add_payload_error_attempt (line 408) | def test_add_payload_error_attempt(self): method test_cached_attempts (line 421) | def test_cached_attempts(self): class TestRepeaterHandleResponse (line 437) | class TestRepeaterHandleResponse(RepeaterTestCase): method get_repeat_record (line 439) | def get_repeat_record(self): method test_handle_response_success (line 446) | def test_handle_response_success(self): method test_handle_response_429 (line 456) | def test_handle_response_429(self): method test_handle_response_server_failure (line 465) | def test_handle_response_server_failure(self): method test_handle_response_incl_code (line 475) | def test_handle_response_incl_code(self): method test_handle_response_excl_code (line 485) | def test_handle_response_excl_code(self): method test_handle_payload_errors (line 495) | def test_handle_payload_errors(self): class TestConnectionSettingsUsedBy (line 511) | class TestConnectionSettingsUsedBy(TestCase): method setUp (line 513) | def setUp(self): method test_connection_settings_used_by_data_forwarding (line 522) | def test_connection_settings_used_by_data_forwarding(self): method test_conn_with_no_used_by (line 530) | def test_conn_with_no_used_by(self): class TestRepeaterConnectionSettings (line 534) | class TestRepeaterConnectionSettings(RepeaterTestCase): method test_connection_settings_are_accessible (line 536) | def test_connection_settings_are_accessible(self): method test_used_connection_setting_cannot_be_deleted (line 539) | def test_used_connection_setting_cannot_be_deleted(self): class TestAttemptForwardNow (line 550) | class TestAttemptForwardNow(RepeaterTestCase): method test_future_next_check (line 553) | def test_future_next_check(self, process, retry_process): method test_success_state (line 559) | def test_success_state(self, process, retry_process): method test_cancelled_state (line 565) | def test_cancelled_state(self, process, retry_process): method test_delayed_task (line 571) | def test_delayed_task(self, process, retry_process): method test_fire_synchronously (line 578) | def test_fire_synchronously(self, process, retry_process): method test_process_repeaters_enabled (line 586) | def test_process_repeaters_enabled(self, process, retry_process): method test_fire_synchronously_process_repeaters_enabled (line 593) | def test_fire_synchronously_process_repeaters_enabled( method test_retry (line 604) | def test_retry(self, process, retry_process): method test_optimistic_lock (line 611) | def test_optimistic_lock(self, process, retry_process): method assert_not_called (line 622) | def assert_not_called(self, *tasks): method new_record (line 630) | def new_record(self, next_check=before_now, state=State.Pending): class TestRepeaterModelMethods (line 643) | class TestRepeaterModelMethods(RepeaterTestCase): method test_register (line 645) | def test_register(self): method test_send_request (line 657) | def test_send_request(self): class TestFormRepeaterAllowedToForward (line 675) | class TestFormRepeaterAllowedToForward(RepeaterTestCase): method test_white_list_empty (line 677) | def test_white_list_empty(self): method test_payload_white_listed (line 682) | def test_payload_white_listed(self): method test_payload_not_white_listed (line 689) | def test_payload_not_white_listed(self): method test_payload_user_blocked (line 696) | def test_payload_user_blocked(self): class TestRepeatRecordManager (line 702) | class TestRepeatRecordManager(RepeaterTestCase): method test_count_by_repeater_and_state (line 705) | def test_count_by_repeater_and_state(self): method test_count_overdue (line 724) | def test_count_overdue(self): method pause_repeater (line 739) | def pause_repeater(self): method test_one_partition (line 750) | def test_one_partition(self): method test_four_partitions (line 757) | def test_four_partitions(self): method test_partition_start (line 769) | def test_partition_start(self): method test_get_domains_with_records (line 777) | def test_get_domains_with_records(self): method test_get_domains_with_records_with_filter (line 783) | def test_get_domains_with_records_with_filter(self): method test_get_repeat_record_ids_for_domain (line 792) | def test_get_repeat_record_ids_for_domain(self): method test_get_repeat_record_ids_for_repeater (line 799) | def test_get_repeat_record_ids_for_repeater(self): method test_get_repeat_record_ids_for_state (line 810) | def test_get_repeat_record_ids_for_state(self): method test_get_repeat_record_ids_for_payload (line 816) | def test_get_repeat_record_ids_for_payload(self): method test_get_repeat_record_ids_with_all_filters (line 822) | def test_get_repeat_record_ids_with_all_filters(self): method test_count (line 836) | def test_count(self): method new_record (line 845) | def new_record(self, next_check=before_now, state=State.Pending, domai... method new_record_for_repeater (line 850) | def new_record_for_repeater( method make_records (line 862) | def make_records(self, n, domain=DOMAIN, state=State.Pending, payload_... class TestRepeatRecordMethods (line 876) | class TestRepeatRecordMethods(TestCase): method test_repeater_returns_active_repeater (line 878) | def test_repeater_returns_active_repeater(self): method test_repeater_returns_deleted_repeater (line 893) | def test_repeater_returns_deleted_repeater(self): method test_repeater_raises_if_not_found (line 908) | def test_repeater_raises_if_not_found(self): method setUpClass (line 920) | def setUpClass(cls): method test_requeue (line 933) | def test_requeue(self): method test_get_payload (line 947) | def test_get_payload(self): method test_postpone_by (line 957) | def test_postpone_by(self): class TestRepeatRecordMethodsNoDB (line 971) | class TestRepeatRecordMethodsNoDB(SimpleTestCase): method test_exceeded_max_retries_returns_false_if_fewer_tries_than_possible (line 974) | def test_exceeded_max_retries_returns_false_if_fewer_tries_than_possib... method test_exceeded_max_retries_returns_true_if_equal (line 988) | def test_exceeded_max_retries_returns_true_if_equal(self): method test_exceeded_max_retries_returns_true_if_more_tries_than_possible (line 1002) | def test_exceeded_max_retries_returns_true_if_more_tries_than_possible... method test_exceeded_max_retries_returns_false_if_not_failure_state (line 1016) | def test_exceeded_max_retries_returns_false_if_not_failure_state( class TestIsSuccessResponse (line 1032) | class TestIsSuccessResponse(SimpleTestCase): method test_true_response (line 1034) | def test_true_response(self): method test_status_201_response (line 1037) | def test_status_201_response(self): method test_status_404_response (line 1041) | def test_status_404_response(self): method test_none_response (line 1045) | def test_none_response(self): class TestDataSourceUpdateManager (line 1049) | class TestDataSourceUpdateManager(TestCase): method test_get_oldest_date (line 1051) | def test_get_oldest_date(self): method test_get_oldest_date_none (line 1067) | def test_get_oldest_date_none(self): function connect_conn_fixture (line 1074) | def connect_conn_fixture(): function test_forwards_to_connect (line 1084) | def test_forwards_to_connect(): function other_conn_fixture (line 1092) | def other_conn_fixture(): function test_doesnt_forward_to_connect (line 1102) | def test_doesnt_forward_to_connect(): FILE: corehq/motech/repeaters/tests/test_optionvalue.py function test_basic_option_value (line 11) | def test_basic_option_value(): function test_get_default_value (line 18) | def test_get_default_value(): function test_option_value_not_set (line 22) | def test_option_value_not_set(): function test_default_option_value (line 29) | def test_default_option_value(): function test_setting_value_in_default_option_value (line 37) | def test_setting_value_in_default_option_value(): function test_raises_on_invalid_choice (line 45) | def test_raises_on_invalid_choice(): function test_datetime_coder_with_datetime (line 52) | def test_datetime_coder_with_datetime(): function test_datetime_coder_with_str_datetime (line 59) | def test_datetime_coder_with_str_datetime(): function test_datetime_coder_with_invalid_str (line 66) | def test_datetime_coder_with_invalid_str(): function test_instance_of_optionvalue (line 72) | def test_instance_of_optionvalue(): function test_option_with_callable_default (line 76) | def test_option_with_callable_default(): function test_raises_on_no_options (line 82) | def test_raises_on_no_options(): function test_raises_on_bad_options_type (line 88) | def test_raises_on_bad_options_type(): function test_doctests (line 94) | def test_doctests(): class FoodOptions (line 101) | class FoodOptions: class BadFoodOptions (line 109) | class BadFoodOptions: class AlsoBadFoodOptions (line 113) | class AlsoBadFoodOptions: FILE: corehq/motech/repeaters/tests/test_payload_generators.py class TestSqlDataTypes (line 34) | class TestSqlDataTypes(TestCase): method setUpClass (line 42) | def setUpClass(cls): method tearDownClass (line 49) | def tearDownClass(cls): method set_up_form (line 55) | def set_up_form(cls): method get_payload_info (line 95) | def get_payload_info( method test_string_values_in_common (line 112) | def test_string_values_in_common(self): method check_payload_info_type (line 122) | def check_payload_info_type(self, payload, info, question, expected_ty... method test_string_values_in_sql (line 128) | def test_string_values_in_sql(self): function create_sql_domain (line 145) | def create_sql_domain(name): FILE: corehq/motech/repeaters/tests/test_proxy_models.py class RepeaterProxyTests (line 24) | class RepeaterProxyTests(TestCase): method setUp (line 25) | def setUp(self): class TestRepeaterCreatesCorrectRepeaterObjects (line 39) | class TestRepeaterCreatesCorrectRepeaterObjects(RepeaterProxyTests): method setUp (line 40) | def setUp(self): method test_repeater_all_returns_correct_instance (line 51) | def test_repeater_all_returns_correct_instance(self): class TestCreateCaseRepeaterSubModels (line 59) | class TestCreateCaseRepeaterSubModels(RepeaterProxyTests): method setUp (line 60) | def setUp(self): method test_model_instance_is_correct (line 71) | def test_model_instance_is_correct(self): method test_repeat_records_refer_correct_model_class (line 77) | def test_repeat_records_refer_correct_model_class(self): method test_query_results_are_correct (line 99) | def test_query_results_are_correct(self): FILE: corehq/motech/repeaters/tests/test_refer_case_repeater.py function test_refer_case_payload_generator_no_previous_transfer (line 14) | def test_refer_case_payload_generator_no_previous_transfer(): function test_refer_case_payload_generator_previous_transfer_prior_to_history (line 18) | def test_refer_case_payload_generator_previous_transfer_prior_to_history(): function test_refer_case_payload_generator_one_previous_transfer (line 27) | def test_refer_case_payload_generator_one_previous_transfer(): function test_refer_case_payload_generator_multiple_previous_transfer (line 34) | def test_refer_case_payload_generator_multiple_previous_transfer(): function _test_refer_case_payload_generator (line 41) | def _test_refer_case_payload_generator(initial_case_properties, expected... function _get_referral_props (line 77) | def _get_referral_props(case_id_history, domain_history): FILE: corehq/motech/repeaters/tests/test_repeater.py class BaseRepeaterTest (line 93) | class BaseRepeaterTest(TestCase, DomainSubscriptionMixin): method setUpClass (line 97) | def setUpClass(cls): method enqueued_repeat_records (line 135) | def enqueued_repeat_records(self): class RepeaterTest (line 141) | class RepeaterTest(BaseRepeaterTest): method setUp (line 144) | def setUp(self): method tearDown (line 179) | def tearDown(self): method _create_additional_repeat_records (line 184) | def _create_additional_repeat_records(self, count): method test_initial_repeat_records (line 200) | def test_initial_repeat_records(self): method test_skip_device_logs (line 204) | def test_skip_device_logs(self): method test_skip_duplicates (line 210) | def test_skip_duplicates(self): method test_server_failure_resends (line 220) | def test_server_failure_resends(self): method test_bad_payload_rejected (line 253) | def test_bad_payload_rejected(self): method test_error_generating_payload (line 264) | def test_error_generating_payload(self): method test_bad_request_fail (line 276) | def test_bad_request_fail(self): method test_update_failure_next_check (line 290) | def test_update_failure_next_check(self): method test_repeater_successful_send (line 304) | def test_repeater_successful_send(self): method test_check_repeat_records (line 332) | def test_check_repeat_records(self): method test_repeat_record_status_check (line 340) | def test_repeat_record_status_check(self): method test_retry_process_repeat_record_locking (line 372) | def test_retry_process_repeat_record_locking(self): method test_automatic_cancel_repeat_record (line 388) | def test_automatic_cancel_repeat_record(self): method test_check_repeat_records_ignores_future_retries_using_multiple_partitions (line 403) | def test_check_repeat_records_ignores_future_retries_using_multiple_pa... method test_repeat_record_status_check_using_multiple_partitions (line 413) | def test_repeat_record_status_check_using_multiple_partitions(self): method test_check_repeaters_successfully_retries_using_multiple_partitions (line 448) | def test_check_repeaters_successfully_retries_using_multiple_partition... class FormPayloadGeneratorTest (line 468) | class FormPayloadGeneratorTest(BaseRepeaterTest, TestXmlMixin): method setUpClass (line 472) | def setUpClass(cls): method tearDown (line 488) | def tearDown(self): method test_get_payload (line 492) | def test_get_payload(self): class FormRepeaterTest (line 499) | class FormRepeaterTest(BaseRepeaterTest, TestXmlMixin): method setUpClass (line 503) | def setUpClass(cls): method tearDown (line 516) | def tearDown(self): method test_payload (line 520) | def test_payload(self): class ShortFormRepeaterTest (line 527) | class ShortFormRepeaterTest(BaseRepeaterTest, TestXmlMixin): method setUpClass (line 531) | def setUpClass(cls): method tearDown (line 544) | def tearDown(self): method test_payload (line 548) | def test_payload(self): class CaseRepeaterTest (line 559) | class CaseRepeaterTest(BaseRepeaterTest, TestXmlMixin): method setUp (line 562) | def setUp(self): method tearDown (line 575) | def tearDown(self): method test_case_close_format (line 579) | def test_case_close_format(self): method test_excluded_case_types_are_not_forwarded (line 596) | def test_excluded_case_types_are_not_forwarded(self): method test_black_listed_user_cases_do_not_forward (line 616) | def test_black_listed_user_cases_do_not_forward(self): method test_register_duplicate (line 689) | def test_register_duplicate(self): class RepeaterFailureTest (line 725) | class RepeaterFailureTest(BaseRepeaterTest): method setUp (line 728) | def setUp(self): method tearDown (line 747) | def tearDown(self): method test_payload_exception_on_fire (line 751) | def test_payload_exception_on_fire(self): method test_payload_exception_on_register (line 765) | def test_payload_exception_on_register(self): method test_failure (line 775) | def test_failure(self): method test_unexpected_failure (line 786) | def test_unexpected_failure(self): method test_success (line 796) | def test_success(self): method test_empty (line 807) | def test_empty(self): class IgnoreDocumentTest (line 819) | class IgnoreDocumentTest(BaseRepeaterTest): method setUpClass (line 823) | def setUpClass(cls): method setUp (line 835) | def setUp(self): method tearDown (line 848) | def tearDown(self): method test_ignore_document (line 851) | def test_ignore_document(self): class TestRepeaterFormat (line 863) | class TestRepeaterFormat(BaseRepeaterTest): method setUpClass (line 867) | def setUpClass(cls): method setUp (line 882) | def setUp(self): method tearDown (line 896) | def tearDown(self): method test_new_format_same_name (line 900) | def test_new_format_same_name(self): method test_new_format_second_default (line 911) | def test_new_format_second_default(self): method test_new_format_payload (line 922) | def test_new_format_payload(self): method test_get_format_by_deprecated_name (line 945) | def test_get_format_by_deprecated_name(self): class UserRepeaterTest (line 956) | class UserRepeaterTest(TestCase, DomainSubscriptionMixin): method setUpClass (line 959) | def setUpClass(cls): method setUp (line 968) | def setUp(self): method tearDownClass (line 981) | def tearDownClass(cls): method enqueued_repeat_records (line 987) | def enqueued_repeat_records(self): method make_user (line 992) | def make_user(self, username): method test_trigger (line 1003) | def test_trigger(self): class LocationRepeaterTest (line 1026) | class LocationRepeaterTest(TestCase, DomainSubscriptionMixin): method setUpClass (line 1029) | def setUpClass(cls): method setUp (line 1038) | def setUp(self): method tearDownClass (line 1055) | def tearDownClass(cls): method enqueued_repeat_records (line 1061) | def enqueued_repeat_records(self): method make_location (line 1066) | def make_location(self, name): method test_trigger (line 1076) | def test_trigger(self): class TestRepeaterPause (line 1103) | class TestRepeaterPause(BaseRepeaterTest): method setUp (line 1106) | def setUp(self): method tearDown (line 1121) | def tearDown(self): method test_trigger_when_paused (line 1125) | def test_trigger_when_paused(self): class TestRepeaterDeleted (line 1153) | class TestRepeaterDeleted(BaseRepeaterTest): method setUp (line 1156) | def setUp(self): method tearDown (line 1170) | def tearDown(self): method test_trigger_when_deleted (line 1174) | def test_trigger_when_deleted(self): class Response (line 1185) | class Response(object): method text (line 1192) | def text(self): class DummyRepeater (line 1196) | class DummyRepeater(Repeater): class Meta (line 1198) | class Meta: method generator (line 1202) | def generator(self): method payload_doc (line 1205) | def payload_doc(self, repeat_record): class HandleResponseTests (line 1209) | class HandleResponseTests(SimpleTestCase): method setUp (line 1212) | def setUp(self): method test_handle_ok_response (line 1220) | def test_handle_ok_response(self): method test_handle_true_response (line 1228) | def test_handle_true_response(self): method test_handle_none_response (line 1236) | def test_handle_none_response(self): method test_handle_bad_gateway_response (line 1244) | def test_handle_bad_gateway_response(self): method test_handle_exception (line 1252) | def test_handle_exception(self): class FormatResponseTests (line 1261) | class FormatResponseTests(SimpleTestCase): method test_content_is_ascii (line 1263) | def test_content_is_ascii(self): method test_encoding_is_not_ascii (line 1272) | def test_encoding_is_not_ascii(self): method test_content_is_None (line 1283) | def test_content_is_None(self): class TestGetRetryInterval (line 1289) | class TestGetRetryInterval(SimpleTestCase): method test_no_last_checked (line 1291) | def test_no_last_checked(self): method test_min_interval (line 1297) | def test_min_interval(self): method test_max_interval (line 1303) | def test_max_interval(self): method test_three_times_interval (line 1309) | def test_three_times_interval(self): method test_five_retries (line 1315) | def test_five_retries(self): class DataSourceRepeaterTest (line 1328) | class DataSourceRepeaterTest(BaseRepeaterTest): method setUpClass (line 1332) | def setUpClass(cls): method test_datasource_is_subscribed_to (line 1355) | def test_datasource_is_subscribed_to(self): method test_payload (line 1366) | def test_payload(self): method test_payload_format (line 1373) | def test_payload_format(self): method _create_payload (line 1398) | def _create_payload(self): class TestSetBackoff (line 1415) | class TestSetBackoff(TestCase): method setUpClass (line 1419) | def setUpClass(cls): method tearDownClass (line 1433) | def tearDownClass(cls): method test_race_condition (line 1438) | def test_race_condition(self): method test_initial_get_next_attempt_at (line 1451) | def test_initial_get_next_attempt_at(self): method test_get_next_attempt_at (line 1456) | def test_get_next_attempt_at(self): method test_max_get_next_attempt_at (line 1463) | def test_max_get_next_attempt_at(self): method test_reset_on_pause (line 1469) | def test_reset_on_pause(self): class TestRepeatRecordsReady (line 1476) | class TestRepeatRecordsReady(TestCase): method setUpClass (line 1480) | def setUpClass(cls): method _create_repeat_records_just_now (line 1493) | def _create_repeat_records_just_now(self): method test_returns_only_overdue_records_ordered_by_next_check (line 1528) | def test_returns_only_overdue_records_ordered_by_next_check(self): method test_returns_all_queued_records_ordered_by_registered_at (line 1536) | def test_returns_all_queued_records_ordered_by_registered_at(self): method test_returns_only_overdue_records_if_process_repeaters_disabled (line 1544) | def test_returns_only_overdue_records_if_process_repeaters_disabled(se... method test_states (line 1550) | def test_states(self): class TestBackoffCodes (line 1606) | class TestBackoffCodes(TestCase): method setUpClass (line 1610) | def setUpClass(cls): method setUp (line 1618) | def setUp(self): method test_assumptions (line 1625) | def test_assumptions(self): method test_default_value (line 1631) | def test_default_value(self): method test_add_existing (line 1634) | def test_add_existing(self): method test_add_missing (line 1642) | def test_add_missing(self): method test_add_excluded (line 1651) | def test_add_excluded(self): method test_remove_missing (line 1661) | def test_remove_missing(self): method test_remove_existing (line 1669) | def test_remove_existing(self): method test_remove_included (line 1678) | def test_remove_included(self): function str_seconds (line 1689) | def str_seconds(dt): FILE: corehq/motech/repeaters/tests/test_server_errors.py function domain_obj_fixture (line 23) | def domain_obj_fixture(): function repeater_fixture (line 37) | def repeater_fixture(): function test_success_on_200 (line 58) | def test_success_on_200(): function test_backoff_on_status_code (line 75) | def test_backoff_on_status_code(status_code, reason): function test_backoff_on_connection_error (line 88) | def test_backoff_on_connection_error(): function submit_xform (line 99) | def submit_xform(domain): FILE: corehq/motech/repeaters/tests/test_tasks.py class TestDeleteOldRequestLogs (line 34) | class TestDeleteOldRequestLogs(TestCase): method test_raw_delete_logs_old (line 36) | def test_raw_delete_logs_old(self): method test_raw_delete_logs_new (line 45) | def test_raw_delete_logs_new(self): method test_num_queries_per_chunk (line 54) | def test_num_queries_per_chunk(self): method test_num_queries_chunked (line 62) | def test_num_queries_chunked(self): class TestProcessRepeatRecord (line 76) | class TestProcessRepeatRecord(TestCase): method test_returns_if_record_is_cancelled (line 78) | def test_returns_if_record_is_cancelled(self): method test_cancels_and_returns_if_domain_cannot_forward (line 93) | def test_cancels_and_returns_if_domain_cannot_forward(self): method test_cancels_and_returns_if_repeat_record_exceeds_max_retries (line 110) | def test_cancels_and_returns_if_repeat_record_exceeds_max_retries(self): method test_deletes_repeat_record_cancels_and_returns_if_repeater_deleted (line 128) | def test_deletes_repeat_record_cancels_and_returns_if_repeater_deleted... method test_postpones_record_if_repeater_is_paused (line 149) | def test_postpones_record_if_repeater_is_paused(self): method test_fires_record_if_repeater_is_not_paused (line 168) | def test_fires_record_if_repeater_is_not_paused(self): method test_payload_error_metrics (line 187) | def test_payload_error_metrics(self): method test_paused_and_deleted_repeater_does_not_fire_or_postpone (line 206) | def test_paused_and_deleted_repeater_does_not_fire_or_postpone(self): method setUpClass (line 227) | def setUpClass(cls): method setUp (line 240) | def setUp(self): method patch (line 243) | def patch(self): function test_iter_ready_repeater_ids (line 258) | def test_iter_ready_repeater_ids(): function test_get_repeater_ids_by_domain (line 289) | def test_get_repeater_ids_by_domain(): class TestUpdateRepeater (line 316) | class TestUpdateRepeater(SimpleTestCase): method test_update_repeater_resets_backoff_on_success (line 320) | def test_update_repeater_resets_backoff_on_success(self, mock_get_repe... method test_update_repeater_resets_backoff_on_invalid (line 331) | def test_update_repeater_resets_backoff_on_invalid(self, mock_get_repe... method test_does_not_reset_backoff_on_success_if_backoff_disabled (line 343) | def test_does_not_reset_backoff_on_success_if_backoff_disabled(self, m... method test_does_not_set_backoff_on_invalid_if_backoff_disabled (line 355) | def test_does_not_set_backoff_on_invalid_if_backoff_disabled(self, moc... method test_update_repeater_backs_off_on_failure (line 367) | def test_update_repeater_backs_off_on_failure( method test_update_repeater_does_nothing_on_empty (line 387) | def test_update_repeater_does_nothing_on_empty(self, mock_get_repeater... method test_update_repeater_does_nothing_on_none (line 398) | def test_update_repeater_does_nothing_on_none(self, mock_get_repeater,... method test_update_repeater_calls_process_repeater_on_more (line 410) | def test_update_repeater_calls_process_repeater_on_more( method test_update_repeater_releases_lock_on_no_more (line 427) | def test_update_repeater_releases_lock_on_no_more( class TestGetWaitDurationSeconds (line 443) | class TestGetWaitDurationSeconds(TestCase): method setUpClass (line 446) | def setUpClass(cls): method test_repeat_record_no_attempts (line 456) | def test_repeat_record_no_attempts(self): method test_repeat_record_one_attempt (line 467) | def test_repeat_record_one_attempt(self): method test_repeat_record_two_attempts (line 483) | def test_repeat_record_two_attempts(self): class TestRepeaterLock (line 505) | class TestRepeaterLock(TestCase): method test_lock_name (line 507) | def test_lock_name(self): method test_acquire (line 511) | def test_acquire(self): method test_acquire_assert (line 517) | def test_acquire_assert(self): method test_reacquire_assert (line 522) | def test_reacquire_assert(self): method test_release_assert (line 527) | def test_release_assert(self): method _get_repeater (line 533) | def _get_repeater(): class TestRepeaterFeatureFlags (line 544) | class TestRepeaterFeatureFlags(TestCase): method setUpClass (line 551) | def setUpClass(cls): method test_process_repeaters_is_noop_when_process_and_backoff_disabled (line 560) | def test_process_repeaters_is_noop_when_process_and_backoff_disabled(s... method test_process_repeaters_is_noop_when_process_disabled_but_backoff_enabled (line 579) | def test_process_repeaters_is_noop_when_process_disabled_but_backoff_e... method test_check_repeaters_is_noop_when_process_enabled_and_backoff_disabled (line 598) | def test_check_repeaters_is_noop_when_process_enabled_and_backoff_disa... method test_check_repeaters_is_noop_when_process_and_backoff_enabled (line 617) | def test_check_repeaters_is_noop_when_process_and_backoff_enabled(self): FILE: corehq/motech/repeaters/tests/test_views.py class TestRepeaterViews (line 12) | class TestRepeaterViews(BaseViewTest): method _create_data (line 15) | def _create_data(cls): method test_drop_repeater (line 25) | def test_drop_repeater(self): method test_pause_repeater (line 41) | def test_pause_repeater(self): method test_resume_repeater (line 56) | def test_resume_repeater(self): method test_no_access_to_repeater_from_outside_domain (line 72) | def test_no_access_to_repeater_from_outside_domain(self): FILE: corehq/motech/repeaters/views/repeat_record_display.py class RepeatRecordDisplay (line 10) | class RepeatRecordDisplay: method __init__ (line 11) | def __init__( method record_id (line 24) | def record_id(self): method last_checked (line 28) | def last_checked(self): method next_check (line 32) | def next_check(self): method url (line 44) | def url(self): method remote_service (line 51) | def remote_service(self): method state (line 57) | def state(self): method _format_date (line 61) | def _format_date(self, date): function _get_state_tuple (line 67) | def _get_state_tuple(record): FILE: corehq/motech/repeaters/views/repeat_records.py class DomainForwardingRepeatRecords (line 47) | class DomainForwardingRepeatRecords(GenericTabularReport): method __init__ (line 64) | def __init__(self, *args, **kwargs): method _make_view_payload_button (line 70) | def _make_view_payload_button(self, record_id): method _make_view_attempts_button (line 83) | def _make_view_attempts_button(self, record_id): method total_records (line 94) | def total_records(self): method shared_pagination_GET_params (line 105) | def shared_pagination_GET_params(self): method _get_all_records_by_payload (line 113) | def _get_all_records_by_payload(self): method payload_id (line 125) | def payload_id(self): method repeater_id (line 129) | def repeater_id(self): method state (line 133) | def state(self): method rows (line 137) | def rows(self): method _payload_id_and_search_link (line 152) | def _payload_id_and_search_link(self, payload_id): method _make_row (line 164) | def _make_row(self, record): method headers (line 190) | def headers(self): method report_context (line 208) | def report_context(self): class RepeatRecordView (line 231) | class RepeatRecordView(View): method get_record_or_404 (line 236) | def get_record_or_404(domain, record_id): method get (line 247) | def get(self, request, domain): method post (line 296) | def post(self, request, domain): function cancel_repeat_record (line 311) | def cancel_repeat_record(request, domain): function requeue_repeat_record (line 326) | def requeue_repeat_record(request, domain): function _missing_parameters_response (line 338) | def _missing_parameters_response(): function _get_record_ids_from_request (line 348) | def _get_record_ids_from_request(request): function _get_state (line 353) | def _get_state(request: HttpRequest) -> str: function _schedule_task_with_state (line 363) | def _schedule_task_with_state( function _schedule_task_without_state (line 379) | def _schedule_task_without_state( FILE: corehq/motech/repeaters/views/repeaters.py class DomainForwardingOptionsView (line 40) | class DomainForwardingOptionsView(BaseAdminProjectSettingsView): method dispatch (line 48) | def dispatch(self, request, *args, **kwargs): method get_repeater_types_info (line 51) | def get_repeater_types_info(self, state_counts): method page_context (line 79) | def page_context(self): class BaseRepeaterView (line 97) | class BaseRepeaterView(BaseAdminProjectSettingsView): method dispatch (line 105) | def dispatch(self, request, *args, **kwargs): method page_url (line 109) | def page_url(self): method parent_pages (line 113) | def parent_pages(self): method repeater_type (line 120) | def repeater_type(self): method page_name (line 124) | def page_name(self): method repeater_class (line 129) | def repeater_class(self): method add_repeater_form (line 140) | def add_repeater_form(self): method page_context (line 144) | def page_context(self): method initialize_repeater (line 150) | def initialize_repeater(self): method make_repeater (line 153) | def make_repeater(self): method set_repeater_attr (line 157) | def set_repeater_attr(self, repeater, cleaned_data): method post_save (line 170) | def post_save(self, request, repeater): method post (line 173) | def post(self, request, *args, **kwargs): class AddRepeaterView (line 181) | class AddRepeaterView(BaseRepeaterView): method add_repeater_form (line 186) | def add_repeater_form(self): method initialize_repeater (line 198) | def initialize_repeater(self): method post_save (line 201) | def post_save(self, request, repeater): class EditRepeaterView (line 209) | class EditRepeaterView(BaseRepeaterView): method repeater_id (line 214) | def repeater_id(self): method page_url (line 218) | def page_url(self): method add_repeater_form (line 228) | def add_repeater_form(self): method dispatch (line 251) | def dispatch(self, request, *args, **kwargs): method initialize_repeater (line 256) | def initialize_repeater(self): method post_save (line 259) | def post_save(self, request, repeater): class AddFormRepeaterView (line 268) | class AddFormRepeaterView(AddRepeaterView): method page_url (line 273) | def page_url(self): method set_repeater_attr (line 276) | def set_repeater_attr(self, repeater, cleaned_data): method make_repeater (line 288) | def make_repeater(self): class EditFormRepeaterView (line 300) | class EditFormRepeaterView(EditRepeaterView, AddFormRepeaterView): method page_url (line 305) | def page_url(self): class EditConnectFormRepeaterView (line 309) | class EditConnectFormRepeaterView(EditFormRepeaterView): class AddCaseRepeaterView (line 313) | class AddCaseRepeaterView(AddRepeaterView): method page_url (line 318) | def page_url(self): method set_repeater_attr (line 321) | def set_repeater_attr(self, repeater, cleaned_data): class EditCaseRepeaterView (line 330) | class EditCaseRepeaterView(EditRepeaterView, AddCaseRepeaterView): method page_url (line 335) | def page_url(self): class EditReferCaseRepeaterView (line 339) | class EditReferCaseRepeaterView(EditCaseRepeaterView): class EditDataRegistryCaseUpdateRepeater (line 343) | class EditDataRegistryCaseUpdateRepeater(EditCaseRepeaterView): function drop_repeater (line 350) | def drop_repeater(request, domain, repeater_id): function pause_repeater (line 362) | def pause_repeater(request, domain, repeater_id): function resume_repeater (line 374) | def resume_repeater(request, domain, repeater_id): FILE: corehq/motech/repeaters/views/tests/test_repeat_records.py class TestUtilities (line 14) | class TestUtilities(SimpleTestCase): method test__get_records (line 16) | def test__get_records(self): method test__get_state (line 37) | def test__get_state(self): method test__get_state_raises_key_error (line 46) | def test__get_state_raises_key_error(self): class TestDomainForwardingOptionsView (line 54) | class TestDomainForwardingOptionsView(TestCase): method setUpClass (line 57) | def setUpClass(cls): method test_get_repeater_types_info (line 72) | def test_get_repeater_types_info(self): class TestRepeatRecordView (line 94) | class TestRepeatRecordView(TestCase): method setUpClass (line 97) | def setUpClass(cls): method setUp (line 106) | def setUp(self): method test_get_record_or_404 (line 114) | def test_get_record_or_404(self): method test_get_record_or_404_with_int (line 119) | def test_get_record_or_404_with_int(self): method test_get_record_or_404_not_found (line 124) | def test_get_record_or_404_not_found(self): method test_get_record_or_404_with_wrong_domain (line 129) | def test_get_record_or_404_with_wrong_domain(self): FILE: corehq/motech/requests.py function log_request (line 41) | def log_request(self, func, logger): class Requests (line 87) | class Requests(object): method __init__ (line 98) | def __init__( method __enter__ (line 134) | def __enter__(self): method __exit__ (line 138) | def __exit__(self, *args): method send_request_unlogged (line 142) | def send_request_unlogged(self, method, url, *args, **kwargs): method delete (line 161) | def delete(self, endpoint, **kwargs): method get (line 166) | def get(self, endpoint, *args, **kwargs): method post (line 172) | def post(self, endpoint, data=None, json=None, *args, **kwargs): method put (line 181) | def put(self, endpoint, data=None, json=None, *args, **kwargs): method notify_exception (line 190) | def notify_exception(self, message=None, details=None): method notify_error (line 194) | def notify_error(self, message, details=None): function get_basic_requests (line 232) | def get_basic_requests(domain_name, base_url, username, password, **kwar... function parse_request_exception (line 240) | def parse_request_exception(err): function simple_request (line 258) | def simple_request(domain, url, data, *, headers, auth_manager, verify, function simple_post (line 302) | def simple_post(domain, url, data, *, headers, auth_manager, verify, function json_or_http_error (line 321) | def json_or_http_error(response): function validate_user_input_url_for_repeaters (line 331) | def validate_user_input_url_for_repeaters(url, domain, src): FILE: corehq/motech/serializers.py function to_boolean (line 32) | def to_boolean(value: Any) -> bool: function to_decimal (line 48) | def to_decimal(value): function to_integer (line 55) | def to_integer(value): function to_text (line 62) | def to_text(value): function to_date_str (line 70) | def to_date_str(value): function to_datetime_str (line 86) | def to_datetime_str(value): FILE: corehq/motech/tests/test_api_settings_migration.py class TestApiSettingsMigration (line 8) | class TestApiSettingsMigration(TestCase): method setUp (line 12) | def setUp(self): method test_dhis2_connection_updated (line 25) | def test_dhis2_connection_updated(self): FILE: corehq/motech/tests/test_auth.py class ConnectionSettingsAuthManagerTests (line 8) | class ConnectionSettingsAuthManagerTests(TestCase): method setUp (line 12) | def setUp(self): method tearDown (line 24) | def tearDown(self): method test_connection_settings_auth_manager (line 27) | def test_connection_settings_auth_manager(self): FILE: corehq/motech/tests/test_finders.py function test_doctests (line 6) | def test_doctests(): FILE: corehq/motech/tests/test_forms.py class ConnectionSettingsFormTests (line 11) | class ConnectionSettingsFormTests(SimpleTestCase): method create_form (line 13) | def create_form(self, url=None, notify_emails='test@user.com'): method test_normal_host_is_not_labelled_unreachable (line 25) | def test_normal_host_is_not_labelled_unreachable(self): method test_unreachable_host_is_wrapped_as_valid (line 32) | def test_unreachable_host_is_wrapped_as_valid(self): method test_helper_does_not_change_between_references (line 39) | def test_helper_does_not_change_between_references(self): method test_clean_notify_addresses_str (line 45) | def test_clean_notify_addresses_str(self): method test_clean_notify_addresses_str_validation_error (line 51) | def test_clean_notify_addresses_str_validation_error(self): FILE: corehq/motech/tests/test_models.py class UnpackRequestArgsTests (line 27) | class UnpackRequestArgsTests(SimpleTestCase): method setUp (line 29) | def setUp(self): method tearDown (line 64) | def tearDown(self): method assert_create_called_with_request_body_and_params (line 68) | def assert_create_called_with_request_body_and_params( method test_post_with_no_args (line 87) | def test_post_with_no_args(self): method test_post_with_data_kwarg (line 93) | def test_post_with_data_kwarg(self): method test_post_with_json_kwarg (line 99) | def test_post_with_json_kwarg(self): method test_post_with_data_arg (line 105) | def test_post_with_data_arg(self): method test_post_with_json_arg (line 111) | def test_post_with_json_arg(self): method test_post_with_data_and_json (line 117) | def test_post_with_data_and_json(self): method test_get_with_params (line 123) | def test_get_with_params(self): method test_delete (line 139) | def test_delete(self): class ConnectionSettingsPropertiesTests (line 155) | class ConnectionSettingsPropertiesTests(SimpleTestCase): method test_password_placeholder (line 157) | def test_password_placeholder(self): method test_client_secret_placeholder (line 162) | def test_client_secret_placeholder(self): method test_last_token_setter_none (line 167) | def test_last_token_setter_none(self): method test_password_setter (line 172) | def test_password_setter(self): method test_client_secret_setter (line 177) | def test_client_secret_setter(self): method test_last_token_setter (line 182) | def test_last_token_setter(self): method test_password_getter_decrypts (line 188) | def test_password_getter_decrypts(self): method test_client_secret_getter_decrypts (line 193) | def test_client_secret_getter_decrypts(self): method test_last_token_getter_decrypts_cbc (line 198) | def test_last_token_getter_decrypts_cbc(self): method test_password_getter_returns (line 204) | def test_password_getter_returns(self): method test_client_secret_getter_returns (line 209) | def test_client_secret_getter_returns(self): method test_last_token_getter_returns (line 214) | def test_last_token_getter_returns(self): method test_set_custom_headers_encrypts_no_ff (line 219) | def test_set_custom_headers_encrypts_no_ff(self): method test_set_custom_headers_encrypts (line 225) | def test_set_custom_headers_encrypts(self): method test_get_custom_headers_decrypts_no_ff (line 230) | def test_get_custom_headers_decrypts_no_ff(self): method test_get_custom_headers_decrypts (line 236) | def test_get_custom_headers_decrypts(self): method test_get_custom_header_display_hides_header_values_no_ff (line 241) | def test_get_custom_header_display_hides_header_values_no_ff(self): method test_get_custom_header_display_hides_header_values (line 247) | def test_get_custom_header_display_hides_header_values(self): method test_remove_a_custom_header (line 253) | def test_remove_a_custom_header(self): class NotifyAddressesTests (line 268) | class NotifyAddressesTests(SimpleTestCase): method test_default (line 270) | def test_default(self): method test_empty (line 274) | def test_empty(self): method test_one (line 279) | def test_one(self): method test_comma (line 284) | def test_comma(self): method test_space (line 290) | def test_space(self): method test_commaspace (line 296) | def test_commaspace(self): method test_mess (line 302) | def test_mess(self): class TestRequestLogFormatting (line 309) | class TestRequestLogFormatting(TestCase): method test_request_body_dict (line 315) | def test_request_body_dict(self): method test_request_body_str (line 321) | def test_request_body_str(self): method test_request_body_unserializable (line 327) | def test_request_body_unserializable(self): method test_request_body_none (line 333) | def test_request_body_none(self): method get_entry (line 340) | def get_entry(request_body): FILE: corehq/motech/tests/test_rate_limiter.py class TestRateLimitRepeater (line 12) | class TestRateLimitRepeater(TestCase): method setUpClass (line 14) | def setUpClass(cls): method test_rate_limited_by_all (line 19) | def test_rate_limited_by_all(self, global_allowed, repeater_attempts_a... method test_not_global_rate_limited_and_no_attempts_check (line 27) | def test_not_global_rate_limited_and_no_attempts_check(self, global_al... method test_not_global_rate_limited_and_not_attempts_overlimit (line 46) | def test_not_global_rate_limited_and_not_attempts_overlimit(self, glob... method test_not_global_rate_limited_but_attempts_overlimit (line 58) | def test_not_global_rate_limited_but_attempts_overlimit(self, global_a... method test_rate_limiting_by_repeater_rate_limits (line 74) | def test_rate_limiting_by_repeater_rate_limits(self, global_allowed, r... FILE: corehq/motech/tests/test_repeater_helpers.py class TestRepeaterHelpers (line 10) | class TestRepeaterHelpers(TestCase): method setUp (line 12) | def setUp(self): method tearDown (line 37) | def tearDown(self): method test__get_relevant_case_updates_from_form_json_with_case_types (line 42) | def test__get_relevant_case_updates_from_form_json_with_case_types(sel... method test__get_relevant_case_updates_from_form_json_without_case_types (line 54) | def test__get_relevant_case_updates_from_form_json_without_case_types(... function create_commcare_case (line 66) | def create_commcare_case(data): function _get_form_json (line 81) | def _get_form_json(): FILE: corehq/motech/tests/test_requests.py function noop_logger (line 26) | def noop_logger(*args, **kwargs): class SendRequestTests (line 30) | class SendRequestTests(SimpleTestCase): method setUp (line 32) | def setUp(self): method test_send_payload (line 36) | def test_send_payload(self): method test_verify_ssl (line 53) | def test_verify_ssl(self): method test_bad_url (line 69) | def test_bad_url(self): method test_unknown_url (line 78) | def test_unknown_url(self): class SessionTests (line 88) | class SessionTests(SimpleTestCase): method setUp (line 90) | def setUp(self): method tearDown (line 97) | def tearDown(self): method test_with_session (line 101) | def test_with_session(self): method test_without_session (line 114) | def test_without_session(self): method test_with_and_without_session (line 127) | def test_with_and_without_session(self): class NotifyErrorTests (line 142) | class NotifyErrorTests(SimpleTestCase): method setUp (line 144) | def setUp(self): method tearDown (line 148) | def tearDown(self): method test_notify_error_no_address (line 151) | def test_notify_error_no_address(self): method test_notify_error_address_list (line 159) | def test_notify_error_address_list(self): class AuthClassTests (line 191) | class AuthClassTests(SimpleTestCase): method test_no_auth (line 193) | def test_no_auth(self): method test_basic_auth (line 198) | def test_basic_auth(self): method test_digest_auth (line 203) | def test_digest_auth(self): class RequestsOAuth2Tests (line 210) | class RequestsOAuth2Tests(TestCase): method setUp (line 217) | def setUp(self): method tearDown (line 237) | def tearDown(self): method add_dhis2_oauth2_client (line 241) | def add_dhis2_oauth2_client(self, client_name, client_id, client_secret): method delete_dhis2_oauth2_client (line 254) | def delete_dhis2_oauth2_client(self): method test_oauth2_0_password (line 260) | def test_oauth2_0_password(self): class TestOAuth2CustomHeaders (line 276) | class TestOAuth2CustomHeaders(TestCase): method setUp (line 278) | def setUp(self): method test_session_with_custom_headers (line 292) | def test_session_with_custom_headers(self): function mkpasswd (line 306) | def mkpasswd(length): FILE: corehq/motech/tests/test_serializers.py class SerializerTests (line 8) | class SerializerTests(SimpleTestCase): method test_to_date_str_datetime (line 10) | def test_to_date_str_datetime(self): method test_to_date_str_date (line 15) | def test_to_date_str_date(self): method test_to_date_str_datetime_str (line 20) | def test_to_date_str_datetime_str(self): method test_to_date_str_int (line 25) | def test_to_date_str_int(self): method test_to_integer_none (line 30) | def test_to_integer_none(self): method test_to_integer_valid_str (line 34) | def test_to_integer_valid_str(self): method test_to_integer_invalid_str (line 38) | def test_to_integer_invalid_str(self): method test_to_integer_float (line 42) | def test_to_integer_float(self): FILE: corehq/motech/tests/test_simple_post.py class Response (line 19) | class Response: method text (line 28) | def text(self): function test_simple_request_with_PUT (line 32) | def test_simple_request_with_PUT(): function test_simple_request_DELETE (line 61) | def test_simple_request_DELETE(): function test_simple_request_get (line 89) | def test_simple_request_get(): function test_simple_post (line 117) | def test_simple_post(): function test_simple_post_400 (line 149) | def test_simple_post_400(): FILE: corehq/motech/tests/test_utils.py class SimplePadTests (line 17) | class SimplePadTests(SimpleTestCase): method test_assertion (line 19) | def test_assertion(self): method test_ascii_bytestring_default_char (line 23) | def test_ascii_bytestring_default_char(self): method test_nonascii (line 27) | def test_nonascii(self): class UnpadTests (line 35) | class UnpadTests(SimpleTestCase): method test_unpad_simple (line 37) | def test_unpad_simple(self): method test_unpad_crypto (line 41) | def test_unpad_crypto(self): method test_unpad_empty (line 45) | def test_unpad_empty(self): class DecryptTests (line 51) | class DecryptTests(SimpleTestCase): method test_crypto_padded (line 53) | def test_crypto_padded(self): class PFormatJSONTests (line 59) | class PFormatJSONTests(SimpleTestCase): method test_valid_json_string (line 61) | def test_valid_json_string(self): method test_dict (line 67) | def test_dict(self): method test_valid_json_bytes (line 73) | def test_valid_json_bytes(self): method test_invalid_json_string (line 79) | def test_invalid_json_string(self): method test_invalid_json_bytes (line 85) | def test_invalid_json_bytes(self): method test_nonascii_json_string (line 91) | def test_nonascii_json_string(self): method test_nonascii_json_bytes (line 102) | def test_nonascii_json_bytes(self): method test_nonascii_dict (line 113) | def test_nonascii_dict(self): method test_empty_string (line 125) | def test_empty_string(self): method test_none (line 131) | def test_none(self): class EncryptionTests (line 138) | class EncryptionTests(SimpleTestCase): method assert_message_equals_plaintext_using_cbc (line 140) | def assert_message_equals_plaintext_using_cbc(self, message): method test_encrypt_decrypt_cbc_ascii (line 148) | def test_encrypt_decrypt_cbc_ascii(self): method test_encrypt_decrypt_cbc_utf8 (line 152) | def test_encrypt_decrypt_cbc_utf8(self): class GetEndpointUrlTests (line 157) | class GetEndpointUrlTests(SimpleTestCase): method test_base_url_none (line 159) | def test_base_url_none(self): method test_trailing_slash (line 163) | def test_trailing_slash(self): method test_no_urls_given (line 167) | def test_no_urls_given(self): class DocTests (line 172) | class DocTests(SimpleTestCase): method test_doctests (line 174) | def test_doctests(self): FILE: corehq/motech/tests/test_value_source.py class GetFormQuestionValuesTests (line 49) | class GetFormQuestionValuesTests(SimpleTestCase): method test_unicode_answer (line 51) | def test_unicode_answer(self): method test_unicode_question (line 55) | def test_unicode_question(self): method test_received_on (line 59) | def test_received_on(self): method test_metadata (line 71) | def test_metadata(self): class CaseTriggerInfoTests (line 94) | class CaseTriggerInfoTests(SimpleTestCase): method test_default_attr (line 96) | def test_default_attr(self): method test_factory_attr (line 103) | def test_factory_attr(self): method test_required_attr (line 110) | def test_required_attr(self): class CasePropertyValidationTests (line 117) | class CasePropertyValidationTests(SimpleTestCase): method test_valid_case_property (line 119) | def test_valid_case_property(self): method test_blank_case_property (line 124) | def test_blank_case_property(self): method test_missing_case_property (line 128) | def test_missing_case_property(self): method test_null_case_property (line 132) | def test_null_case_property(self): method test_doc_type (line 136) | def test_doc_type(self): class ConstantValueTests (line 147) | class ConstantValueTests(SimpleTestCase): method test_get_commcare_value (line 149) | def test_get_commcare_value(self): method test_serialize (line 162) | def test_serialize(self): method test_deserialize (line 175) | def test_deserialize(self): class JsonPathCasePropertyTests (line 189) | class JsonPathCasePropertyTests(SimpleTestCase): method test_blank_path (line 191) | def test_blank_path(self): method test_no_values (line 200) | def test_no_values(self): method test_one_value (line 209) | def test_one_value(self): method test_many_values (line 218) | def test_many_values(self): class CasePropertyConstantValueTests (line 228) | class CasePropertyConstantValueTests(SimpleTestCase): method test_one_value (line 230) | def test_one_value(self): class DirectionTests (line 241) | class DirectionTests(SimpleTestCase): method test_direction_in_true (line 243) | def test_direction_in_true(self): method test_direction_in_false (line 247) | def test_direction_in_false(self): method test_direction_out_true (line 251) | def test_direction_out_true(self): method test_direction_out_false (line 255) | def test_direction_out_false(self): method test_direction_both_true (line 259) | def test_direction_both_true(self): class TestAsValueSourceSchema (line 265) | class TestAsValueSourceSchema(SimpleTestCase): method test_as_constant_value (line 267) | def test_as_constant_value(self): method test_as_case_property_constant_value (line 273) | def test_as_case_property_constant_value(self): method test_type_error (line 280) | def test_type_error(self): class FormUserAncestorLocationFieldTests (line 285) | class FormUserAncestorLocationFieldTests(SimpleTestCase): method test_with_form_user_ancestor_location_field (line 287) | def test_with_form_user_ancestor_location_field(self): method test_with_form_user_ancestor_location_field_doc_type (line 292) | def test_with_form_user_ancestor_location_field_doc_type(self): method test_with_location_field_doc_type (line 300) | def test_with_location_field_doc_type(self): method test_with_location (line 308) | def test_with_location(self): class CaseOwnerAncestorLocationFieldTests (line 313) | class CaseOwnerAncestorLocationFieldTests(SimpleTestCase): method test_with_form_user_ancestor_location_field (line 315) | def test_with_form_user_ancestor_location_field(self): method test_with_form_user_ancestor_location_field_doc_type (line 320) | def test_with_form_user_ancestor_location_field_doc_type(self): method test_with_location_field_doc_type (line 328) | def test_with_location_field_doc_type(self): method test_with_location (line 336) | def test_with_location(self): class TestSupercaseValueSourceValidation (line 341) | class TestSupercaseValueSourceValidation(SimpleTestCase): method test_supercase_value_source (line 343) | def test_supercase_value_source(self): method test_identifier (line 349) | def test_identifier(self): method test_referenced_type (line 356) | def test_referenced_type(self): method test_relationship (line 363) | def test_relationship(self): method test_relationship_invalid (line 370) | def test_relationship_invalid(self): method test_supercase_value_source_empty (line 377) | def test_supercase_value_source_empty(self): class TestSubcaseValueSourceValidation (line 384) | class TestSubcaseValueSourceValidation(SimpleTestCase): method test_subcase_value_source (line 386) | def test_subcase_value_source(self): method test_case_types (line 392) | def test_case_types(self): method test_is_closed (line 399) | def test_is_closed(self): method test_subcase_value_source_empty (line 406) | def test_subcase_value_source_empty(self): class AsValueSourceTests (line 413) | class AsValueSourceTests(SimpleTestCase): method test_as_value_source (line 415) | def test_as_value_source(self): class TestSubcaseValueSourceSetExternalValue (line 435) | class TestSubcaseValueSourceSetExternalValue(TestCase): method setUp (line 439) | def setUp(self): method tearDown (line 495) | def tearDown(self): method test_set_external_data (line 498) | def test_set_external_data(self): class TestSupercaseValueSourceSetExternalValue (line 533) | class TestSupercaseValueSourceSetExternalValue(TestCase): method setUp (line 537) | def setUp(self): method tearDown (line 593) | def tearDown(self): method test_set_external_data (line 596) | def test_set_external_data(self): function test_doctests (line 650) | def test_doctests(): function create_case (line 655) | def create_case(case) -> CommCareCase: function create_case_with_index (line 676) | def create_case_with_index(case, index) -> CommCareCase: FILE: corehq/motech/utils.py function simple_pad (line 20) | def simple_pad(bytestring, block_size, char=PAD_CHAR): function b64_aes_cbc_encrypt (line 34) | def b64_aes_cbc_encrypt(message): function b64_aes_cbc_decrypt (line 58) | def b64_aes_cbc_decrypt(message): function unpad (line 84) | def unpad(bytestring): function pformat_json (line 113) | def pformat_json(data): function unpack_request_args (line 129) | def unpack_request_args(request_method, args, kwargs): function get_endpoint_url (line 148) | def get_endpoint_url( function simplify_list (line 175) | def simplify_list(seq: Sequence): function copy_api_auth_settings (line 194) | def copy_api_auth_settings(connection): function api_setting_matches_preset (line 207) | def api_setting_matches_preset(connection): FILE: corehq/motech/value_source.py class CaseTriggerInfo (line 32) | class CaseTriggerInfo: method __str__ (line 45) | def __str__(self): function recurse_subclasses (line 51) | def recurse_subclasses(cls): class ValueSource (line 59) | class ValueSource: method wrap (line 89) | def wrap(cls, data: dict): method get_schema_params (line 98) | def get_schema_params(cls) -> Tuple[Tuple, Dict]: method can_import (line 110) | def can_import(self): method can_export (line 114) | def can_export(self): method get_value (line 117) | def get_value(self, case_trigger_info: CaseTriggerInfo) -> Any: method get_import_value (line 125) | def get_import_value(self, external_data): method get_commcare_value (line 129) | def get_commcare_value(self, case_trigger_info: CaseTriggerInfo) -> Any: method get_external_value (line 132) | def get_external_value(self, external_data): method set_external_value (line 144) | def set_external_value(self, external_data: dict, info: CaseTriggerInfo): method serialize (line 164) | def serialize(self, value: Any) -> Any: method deserialize (line 178) | def deserialize(self, external_value: Any) -> Any: class CaseProperty (line 195) | class CaseProperty(ValueSource): method get_schema_params (line 209) | def get_schema_params(cls) -> Tuple[Tuple, Dict]: method get_commcare_value (line 214) | def get_commcare_value(self, case_trigger_info: CaseTriggerInfo) -> Any: class FormQuestion (line 221) | class FormQuestion(ValueSource): method get_schema_params (line 254) | def get_schema_params(cls) -> Tuple[Tuple, Dict]: method get_commcare_value (line 259) | def get_commcare_value(self, case_trigger_info: CaseTriggerInfo) -> Any: class ConstantValue (line 266) | class ConstantValue(ValueSource): method __eq__ (line 303) | def __eq__(self, other): method get_schema_params (line 311) | def get_schema_params(cls) -> Tuple[Tuple, Dict]: method get_commcare_value (line 319) | def get_commcare_value(self, case_trigger_info: CaseTriggerInfo) -> Any: method get_external_value (line 326) | def get_external_value(self, external_data): method deserialize (line 333) | def deserialize(self, external_value: Any) -> Any: class CaseOwnerAncestorLocationField (line 348) | class CaseOwnerAncestorLocationField(ValueSource): method wrap (line 365) | def wrap(cls, data): method get_schema_params (line 371) | def get_schema_params(cls) -> Tuple[Tuple, Dict]: method get_commcare_value (line 387) | def get_commcare_value(self, case_trigger_info: CaseTriggerInfo) -> Any: class FormUserAncestorLocationField (line 396) | class FormUserAncestorLocationField(ValueSource): method wrap (line 413) | def wrap(cls, data): method get_schema_params (line 419) | def get_schema_params(cls) -> Tuple[Tuple, Dict]: method get_commcare_value (line 435) | def get_commcare_value(self, case_trigger_info: CaseTriggerInfo) -> Any: class CasePropertyConstantValue (line 445) | class CasePropertyConstantValue(ConstantValue, CaseProperty): class SupercaseValueSource (line 450) | class SupercaseValueSource(ValueSource): method get_schema_params (line 465) | def get_schema_params(cls) -> Tuple[Tuple, Dict]: method get_commcare_value (line 475) | def get_commcare_value(self, info): method get_import_value (line 483) | def get_import_value(self, external_data): method set_external_value (line 488) | def set_external_value(self, external_data, info): method _iter_supercase_info (line 494) | def _iter_supercase_info(self, info: CaseTriggerInfo): class SubcaseValueSource (line 514) | class SubcaseValueSource(ValueSource): method get_schema_params (line 525) | def get_schema_params(cls) -> Tuple[Tuple, Dict]: method get_commcare_value (line 534) | def get_commcare_value(self, info: CaseTriggerInfo) -> Any: method get_import_value (line 542) | def get_import_value(self, external_data): method set_external_value (line 547) | def set_external_value(self, external_data, info): method _iter_subcase_info (line 553) | def _iter_subcase_info(self, info: CaseTriggerInfo): function as_value_source (line 567) | def as_value_source( function get_value (line 584) | def get_value( function get_import_value (line 596) | def get_import_value( function deserialize (line 608) | def deserialize(value_source_config: JsonDict, external_value: Any) -> Any: function get_form_question_values (line 618) | def get_form_question_values(form_json): function get_ancestor_location_metadata_value (line 666) | def get_ancestor_location_metadata_value(location, metadata_key): function get_case_location (line 674) | def get_case_location(case): function get_owner_location (line 683) | def get_owner_location(domain, owner_id): function get_case_trigger_info_for_case (line 688) | def get_case_trigger_info_for_case(case, value_source_configs): function _subs_counters (line 703) | def _subs_counters(value_source, counter0): FILE: corehq/motech/views.py class Http409 (line 34) | class Http409(Http400): class MotechLogListView (line 42) | class MotechLogListView(BaseProjectSettingsView, ListView): method get_queryset (line 49) | def get_queryset(self): method get_context_data (line 59) | def get_context_data(self, **kwargs): method object_list (line 72) | def object_list(self): class MotechLogDetailView (line 78) | class MotechLogDetailView(BaseProjectSettingsView, DetailView): method get_queryset (line 84) | def get_queryset(self): method get_context_data (line 87) | def get_context_data(self, **kwargs): method object (line 112) | def object(self): method page_url (line 117) | def page_url(self): function motech_log_export_view (line 124) | def motech_log_export_view(request, domain): class ConnectionSettingsListView (line 185) | class ConnectionSettingsListView(BaseProjectSettingsView, CRUDPaginatedV... method dispatch (line 192) | def dispatch(self, request, *args, **kwargs): method total (line 198) | def total(self): method base_query (line 202) | def base_query(self): method column_names (line 206) | def column_names(self): method page_context (line 215) | def page_context(self): method paginated_list (line 219) | def paginated_list(self): method _get_item_data (line 227) | def _get_item_data(self, connection_settings): method delete_item (line 244) | def delete_item(self, item_id): method post (line 258) | def post(self, *args, **kwargs): class ConnectionSettingsDetailView (line 262) | class ConnectionSettingsDetailView(BaseProjectSettingsView, ModelFormMix... method dispatch (line 271) | def dispatch(self, request, *args, **kwargs): method get_queryset (line 276) | def get_queryset(self): method get (line 279) | def get(self, request, *args, **kwargs): method post (line 284) | def post(self, request, *args, **kwargs): method get_form_kwargs (line 288) | def get_form_kwargs(self): method get_success_url (line 293) | def get_success_url(self): method form_valid (line 299) | def form_valid(self, form): function test_connection_settings (line 306) | def test_connection_settings(request, domain): class PseudoBuffer (line 366) | class PseudoBuffer: method write (line 367) | def write(self, value): function _get_request_log_queryset (line 371) | def _get_request_log_queryset(request, domain): function _a_week_ago (line 402) | def _a_week_ago() -> str: FILE: corehq/pillows/app_submission_tracker.py function get_form_submission_metadata_tracker_pillow (line 19) | def get_form_submission_metadata_tracker_pillow(pillow_id='FormSubmissio... class AppFormSubmissionReindexDocProcessor (line 46) | class AppFormSubmissionReindexDocProcessor(BaseDocProcessor): method __init__ (line 47) | def __init__(self, pillow_processor, data_source_type, data_source_name): method process_doc (line 52) | def process_doc(self, doc): method handle_skip (line 61) | def handle_skip(self, doc): method _doc_to_change (line 69) | def _doc_to_change(doc, data_source_type, data_source_name): class AppFormSubmissionReindexer (line 87) | class AppFormSubmissionReindexer(Reindexer): method __init__ (line 90) | def __init__(self, doc_provider, data_source_type, data_source_name, c... method reindex (line 100) | def reindex(self): class SqlAppFormSubmissionTrackerReindexerFactory (line 110) | class SqlAppFormSubmissionTrackerReindexerFactory(ReindexerFactory): method build (line 116) | def build(self): class UserAppFormSubmissionDocProcessor (line 127) | class UserAppFormSubmissionDocProcessor(BaseDocProcessor): method __init__ (line 128) | def __init__(self, pillow_processor): method process_doc (line 131) | def process_doc(self, doc): method handle_skip (line 140) | def handle_skip(self, doc): method _doc_to_changes (line 146) | def _doc_to_changes(self, doc): class UserAppFormSubmissionReindexer (line 172) | class UserAppFormSubmissionReindexer(Reindexer): method __init__ (line 173) | def __init__(self, doc_provider, chunk_size=1000, reset=False): method reindex (line 179) | def reindex(self): class UserAppFormSubmissionReindexerFactory (line 189) | class UserAppFormSubmissionReindexerFactory(ReindexerFactory): method build (line 195) | def build(self): FILE: corehq/pillows/application.py function get_app_to_elasticsearch_pillow (line 25) | def get_app_to_elasticsearch_pillow(pillow_id='ApplicationToElasticsearc... class AppReindexerFactory (line 49) | class AppReindexerFactory(ReindexerFactory): method build (line 56) | def build(self): FILE: corehq/pillows/base.py function is_couch_change_for_sql_domain (line 4) | def is_couch_change_for_sql_domain(change): FILE: corehq/pillows/cacheinvalidate.py class FakeCheckpoint (line 16) | class FakeCheckpoint(PillowCheckpoint): method __init__ (line 17) | def __init__(self, checkpoint_id, couch_db): method get_or_create_wrapped (line 21) | def get_or_create_wrapped(self, verify_unchanged=False): method get_current_sequence_id (line 27) | def get_current_sequence_id(self): method update_to (line 30) | def update_to(self, seq): method reset (line 33) | def reset(self): method touch (line 36) | def touch(self, min_interval): class CacheInvalidateProcessor (line 40) | class CacheInvalidateProcessor(PillowProcessor): method __init__ (line 50) | def __init__(self): method get_generations (line 53) | def get_generations(self): method process_change (line 56) | def process_change(self, change): method process_doc (line 59) | def process_doc(self, doc, is_deleted): function get_main_cache_invalidation_pillow (line 86) | def get_main_cache_invalidation_pillow(pillow_id, **kwargs): function get_user_groups_cache_invalidation_pillow (line 91) | def get_user_groups_cache_invalidation_pillow(pillow_id, **kwargs): function _get_cache_invalidation_pillow (line 96) | def _get_cache_invalidation_pillow(pillow_id, couch_db, couch_filter=None): FILE: corehq/pillows/case.py function get_case_to_elasticsearch_pillow (line 42) | def get_case_to_elasticsearch_pillow(pillow_id='CaseToElasticsearchPillo... function get_case_pillow (line 70) | def get_case_pillow( class SqlCaseReindexerFactory (line 145) | class SqlCaseReindexerFactory(ReindexerFactory): method build (line 155) | def build(self): FILE: corehq/pillows/case_search.py function _domains_needing_search_index (line 46) | def _domains_needing_search_index(): function domain_needs_search_index (line 57) | def domain_needs_search_index(domain): function _format_property (line 61) | def _format_property(key, value, case_id): function _get_case_properties (line 71) | def _get_case_properties(doc_dict): function _add_smart_types (line 87) | def _add_smart_types(dynamic_properties, domain, case_type): function _add_gps_smart_types (line 97) | def _add_gps_smart_types(dynamic_properties, gps_props): class CaseSearchPillowProcessor (line 107) | class CaseSearchPillowProcessor(BulkElasticProcessor): method __init__ (line 109) | def __init__(self, adapter): function get_case_search_processor (line 117) | def get_case_search_processor(): function _fail_gracefully_and_tell_admins (line 129) | def _fail_gracefully_and_tell_admins(): function domain_args (line 144) | def domain_args(parser): class CaseSearchReindexerFactory (line 151) | class CaseSearchReindexerFactory(ReindexerFactory): method build (line 158) | def build(self): function get_case_search_to_elasticsearch_pillow (line 187) | def get_case_search_to_elasticsearch_pillow(pillow_id='CaseSearchToElast... class ResumableCaseSearchReindexerFactory (line 213) | class ResumableCaseSearchReindexerFactory(ReindexerFactory): method add_arguments (line 226) | def add_arguments(cls, parser): method build (line 234) | def build(self): FILE: corehq/pillows/domain.py function get_domain_kafka_to_elasticsearch_pillow (line 12) | def get_domain_kafka_to_elasticsearch_pillow(pillow_id='KafkaDomainPillo... class DomainReindexerFactory (line 36) | class DomainReindexerFactory(ReindexerFactory): method build (line 43) | def build(self): FILE: corehq/pillows/group.py function get_group_to_elasticsearch_processor (line 13) | def get_group_to_elasticsearch_processor(): function get_group_pillow_old (line 26) | def get_group_pillow_old(pillow_id='GroupPillow', num_processes=1, proce... class GroupReindexerFactory (line 50) | class GroupReindexerFactory(ReindexerFactory): method build (line 57) | def build(self): FILE: corehq/pillows/groups_to_user.py class GroupsToUsersProcessor (line 16) | class GroupsToUsersProcessor(PillowProcessor): method process_change (line 27) | def process_change(self, change): function get_group_to_user_pillow (line 34) | def get_group_to_user_pillow(pillow_id='GroupToUserPillow', num_processe... function get_group_pillow (line 58) | def get_group_pillow(pillow_id='group-pillow', num_processes=1, process_... function remove_group_from_users (line 85) | def remove_group_from_users(group_doc): function update_es_user_with_groups (line 102) | def update_es_user_with_groups(group_doc): function stream_user_sources (line 121) | def stream_user_sources(user_ids): class GroupToUserReindexerFactory (line 136) | class GroupToUserReindexerFactory(ReindexerFactory): method build (line 139) | def build(self): FILE: corehq/pillows/ledger.py function _location_id_for_case (line 21) | def _location_id_for_case(case_id): function _get_daily_consumption_for_ledger (line 28) | def _get_daily_consumption_for_ledger(ledger): function _update_ledger_section_entry_combinations (line 40) | def _update_ledger_section_entry_combinations(ledger): function _get_ledger_section_combinations (line 57) | def _get_ledger_section_combinations(domain): class LedgerProcessor (line 61) | class LedgerProcessor(PillowProcessor): method process_change (line 73) | def process_change(self, change): function get_ledger_to_elasticsearch_pillow (line 91) | def get_ledger_to_elasticsearch_pillow(pillow_id='LedgerToElasticsearchP... FILE: corehq/pillows/management/commands/print_elastic_mappings.py class Command (line 22) | class Command(BaseCommand): method create_parser (line 36) | def create_parser(self, prog_name, subcommand, **kwargs): method add_arguments (line 42) | def add_arguments(self, parser): method handle (line 60) | def handle(self, mapping_ident, **options): function transform_multi_field (line 84) | def transform_multi_field(mapping, key=None): function transform_string_to_text_and_keyword (line 124) | def transform_string_to_text_and_keyword(mapping, key=None): FILE: corehq/pillows/management/commands/tests/test_utils.py class TestMappingUtils (line 13) | class TestMappingUtils(SimpleTestCase): method test_print_formatted (line 30) | def test_print_formatted(self): method test_print_formatted_with_namespace (line 61) | def test_print_formatted_with_namespace(self): method test_print_formatted_with_namespace_and_mapping_sort (line 88) | def test_print_formatted_with_namespace_and_mapping_sort(self): FILE: corehq/pillows/management/commands/utils.py function print_formatted (line 5) | def print_formatted(obj, namespace={}, dict_sort_key=None, stream=sys.st... class SortingPythonEncoder (line 29) | class SortingPythonEncoder(json.JSONEncoder): method __init__ (line 41) | def __init__(self, namespace={}, scalars=SCALARS, dict_sort_key=None, ... method default (line 66) | def default(self, obj): method iterencode (line 73) | def iterencode(self, o, *args, **kw): method inject_proxies (line 80) | def inject_proxies(self, obj, reg): class ProxyRegistry (line 104) | class ProxyRegistry: method __init__ (line 110) | def __init__(self): method verify (line 114) | def verify(self): method make_proxy (line 120) | def make_proxy(self, name): method extract (line 130) | def extract(self, chunk): class PythonLiteralProxy (line 160) | class PythonLiteralProxy: method __init__ (line 162) | def __init__(self, value): FILE: corehq/pillows/sms.py function get_sql_sms_pillow (line 23) | def get_sql_sms_pillow(pillow_id='SqlSMSPillow', num_processes=1, proces... class SMSReindexAccessor (line 49) | class SMSReindexAccessor(ReindexAccessor): method model_class (line 51) | def model_class(self): method id_field (line 55) | def id_field(self): method get_doc (line 58) | def get_doc(self, doc_id): class SmsReindexerFactory (line 62) | class SmsReindexerFactory(ReindexerFactory): method build (line 69) | def build(self): FILE: corehq/pillows/synclog.py function _synclog_pillow_dbs (line 42) | def _synclog_pillow_dbs(): function get_user_sync_history_pillow (line 46) | def get_user_sync_history_pillow( class UserSyncHistoryProcessor (line 68) | class UserSyncHistoryProcessor(PillowProcessor): method process_change (line 84) | def process_change(self, change): function mark_last_synclog (line 122) | def mark_last_synclog(domain, user, app_id, build_id, sync_date, latest_... class UserSyncHistoryReindexerDocProcessor (line 145) | class UserSyncHistoryReindexerDocProcessor(BaseDocProcessor): method __init__ (line 147) | def __init__(self, pillow_processor): method process_doc (line 150) | def process_doc(self, doc): method handle_skip (line 159) | def handle_skip(self, doc): method _doc_to_changes (line 165) | def _doc_to_changes(self, doc): class UserSyncHistoryReindexer (line 179) | class UserSyncHistoryReindexer(Reindexer): method __init__ (line 181) | def __init__(self, doc_provider, chunk_size=1000, reset=False): method reindex (line 187) | def reindex(self): class UpdateUserSyncHistoryReindexerFactory (line 197) | class UpdateUserSyncHistoryReindexerFactory(ReindexerFactory): method build (line 203) | def build(self): FILE: corehq/pillows/tasks.py function send_unknown_user_type_stats (line 21) | def send_unknown_user_type_stats(): function fix_user_types (line 31) | def fix_user_types(): function resave_es_forms_with_unknown_user_type (line 40) | def resave_es_forms_with_unknown_user_type(user_id): function _get_unknown_user_type_user_ids (line 50) | def _get_unknown_user_type_user_ids(): function _get_unknown_user_type_user_ids_approx_count (line 55) | def _get_unknown_user_type_user_ids_approx_count(): FILE: corehq/pillows/tests/test_case_search.py class TestCaseSearchPillowProcessor (line 10) | class TestCaseSearchPillowProcessor: method test_process_changes_chunk_excludes_irrelevant_changes (line 12) | def test_process_changes_chunk_excludes_irrelevant_changes(self): class FakeChange (line 36) | class FakeChange: method metadata (line 41) | def metadata(self): class FakeMetadata (line 46) | class FakeMetadata: class FakeAdapter (line 51) | class FakeAdapter: method bulk (line 55) | def bulk(self, actions, raise_errors): FILE: corehq/pillows/tests/test_xform_date_formats.py class TestIsValidDate (line 6) | class TestIsValidDate: method test_is_valid_date (line 18) | def test_is_valid_date(self, date_str, expected): class TestNormalizeDateForEs (line 22) | class TestNormalizeDateForEs: method test_normalize_date_for_es (line 43) | def test_normalize_date_for_es(self, input_date, expected): FILE: corehq/pillows/user.py function update_unknown_user_from_form_if_necessary (line 19) | def update_unknown_user_from_form_if_necessary(doc_dict): function _user_exists_in_couch (line 45) | def _user_exists_in_couch(user_id): function _get_user_fields_from_form_doc (line 49) | def _get_user_fields_from_form_doc(form_doc): class UnknownUsersProcessor (line 58) | class UnknownUsersProcessor(PillowProcessor): method process_change (line 69) | def process_change(self, change): function add_demo_user_to_user_index (line 73) | def add_demo_user_to_user_index(): function get_user_es_processor (line 79) | def get_user_es_processor(): function get_user_pillow_old (line 83) | def get_user_pillow_old(pillow_id='UserPillow', num_processes=1, process... function get_user_pillow (line 107) | def get_user_pillow( function get_unknown_users_pillow (line 151) | def get_unknown_users_pillow(pillow_id='unknown-users-pillow', num_proce... class UserReindexerFactory (line 174) | class UserReindexerFactory(ReindexerFactory): method build (line 181) | def build(self): FILE: corehq/pillows/utils.py function get_deleted_doc_types (line 40) | def get_deleted_doc_types(doc_type): function get_user_type (line 50) | def get_user_type(user_id): function get_user_type_deep_cache_for_unknown_users (line 75) | def get_user_type_deep_cache_for_unknown_users(user_id): function get_all_expected_es_indices (line 85) | def get_all_expected_es_indices(ignore_subindices=False): function format_form_meta_for_es (line 92) | def format_form_meta_for_es(form_metadata): FILE: corehq/pillows/xform.py function is_valid_date (line 40) | def is_valid_date(txt): function normalize_date_for_es (line 58) | def normalize_date_for_es(txt): function flatten (line 77) | def flatten(d, parent_key='', delimiter='/'): function xform_pillow_filter (line 90) | def xform_pillow_filter(doc_dict): function get_xform_to_elasticsearch_pillow (line 101) | def get_xform_to_elasticsearch_pillow(pillow_id='XFormToElasticsearchPil... function get_xform_pillow (line 129) | def get_xform_pillow( class SqlFormReindexerFactory (line 207) | class SqlFormReindexerFactory(ReindexerFactory): method build (line 216) | def build(self): FILE: corehq/preindex/accessors.py function _is_eligible_for_default_plugin (line 8) | def _is_eligible_for_default_plugin(app_config): function get_preindex_plugins (line 16) | def get_preindex_plugins(): function get_preindex_plugin (line 25) | def get_preindex_plugin(app_label): function get_preindex_designs (line 35) | def get_preindex_designs(): function copy_design_doc (line 47) | def copy_design_doc(design, temp=None, delete=True): function sync_design_doc (line 56) | def sync_design_doc(design, temp=None): function index_design_doc (line 65) | def index_design_doc(design, wait=True): FILE: corehq/preindex/apps.py class Config (line 6) | class Config(AppConfig): method autodetect_migrations (line 9) | def autodetect_migrations(self, add_operation): FILE: corehq/preindex/default_plugin.py class DefaultPreindexPlugin (line 9) | class DefaultPreindexPlugin(PreindexPlugin): method __init__ (line 11) | def __init__(self, app_label): method _get_designs (line 16) | def _get_designs(self): FILE: corehq/preindex/django_migrations.py function iter_couch_lock_lines (line 35) | def iter_couch_lock_lines(preamble=LOCK_PREAMBLE): function designs_did_change (line 54) | def designs_did_change(lines, lock_path=LOCK_PATH): function write_designs_lock_file (line 61) | def write_designs_lock_file(lines, lock_path=LOCK_PATH): function sha256sum (line 67) | def sha256sum(filename): class RequestReindex (line 78) | class RequestReindex(RunPython): method __init__ (line 89) | def __init__(self): method deconstruct (line 92) | def deconstruct(self): method run (line 95) | def run(self, apps, schema_editor): function run_reindex (line 103) | def run_reindex(): FILE: corehq/preindex/management/commands/fast_index_couch_views.py class Command (line 6) | class Command(BaseCommand): method handle (line 8) | def handle(self, **options): FILE: corehq/preindex/management/commands/sync_couch_views.py class Command (line 5) | class Command(BaseCommand): method handle (line 8) | def handle(self, **options): FILE: corehq/preindex/management/commands/sync_finish_couchdb_hq.py class Command (line 5) | class Command(BaseCommand): method handle (line 8) | def handle(self, **options): FILE: corehq/preindex/management/commands/sync_prepare_couchdb_multi.py class Command (line 15) | class Command(BaseCommand): method add_arguments (line 18) | def add_arguments(self, parser): method handle (line 37) | def handle(self, num_pool, username, **options): method handle_sync (line 59) | def handle_sync(self): FILE: corehq/preindex/migrations/0001_initial.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/preindex/migrations/0002_initial.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/preindex/migrations/0003_initial.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/preindex/migrations/0004_initial.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/preindex/migrations/0005_initial.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/preindex/migrations/0006_initial.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/preindex/preindex_plugins.py function register_preindex_plugin (line 11) | def register_preindex_plugin(plugin): class PreindexPlugin (line 15) | class PreindexPlugin(metaclass=ABCMeta): method _get_designs (line 20) | def _get_designs(self): method get_designs (line 23) | def get_designs(self): method register (line 34) | def register(cls, *args, **kwargs): method sync_design_docs (line 37) | def sync_design_docs(self, temp=None): method copy_designs (line 48) | def copy_designs(self, temp=None, delete=True): method __repr__ (line 53) | def __repr__(self): method __init__ (line 59) | def __init__(self, app_label, file): function get_dbs_from_app_label_and_map (line 64) | def get_dbs_from_app_label_and_map(app_label, app_db_map): class CouchAppsPreindexPlugin (line 74) | class CouchAppsPreindexPlugin(PreindexPlugin): method __init__ (line 91) | def __init__(self, app_label, file, app_db_map=None): method get_couchapps (line 95) | def get_couchapps(self): method _get_designs (line 99) | def _get_designs(self): method get_dbs (line 107) | def get_dbs(self, app_label): class ExtraPreindexPlugin (line 111) | class ExtraPreindexPlugin(PreindexPlugin): method __init__ (line 116) | def __init__(self, app_label, file, db_names=None): method _get_designs (line 120) | def _get_designs(self): method get_dbs (line 130) | def get_dbs(self, app_label): FILE: corehq/preindex/tasks.py function run_continuous_indexing_task (line 15) | def run_continuous_indexing_task(): function preindex_couch_views (line 24) | def preindex_couch_views(): FILE: corehq/preindex/tests/test_django_migrations.py function handle_migrate (line 12) | def handle_migrate(*args, **kw): class TestMigrateWithReindex (line 17) | class TestMigrateWithReindex(SimpleTestCase): method test_migrate_does_reindex (line 19) | def test_migrate_does_reindex(self): method test_migrate_multi_does_reindex (line 28) | def test_migrate_multi_does_reindex(self): method test_migrate_multi_does_reindex_on_migration_error (line 37) | def test_migrate_multi_does_reindex_on_migration_error(self): method assert_reindex_done (line 57) | def assert_reindex_done(self, log): FILE: corehq/privileges.py class Titles (line 221) | class Titles(object): method get_name_from_privilege (line 224) | def get_name_from_privilege(cls, privilege): FILE: corehq/project_limits/admin.py class DynamicRateDefinitionAdmin (line 12) | class DynamicRateDefinitionAdmin(admin.ModelAdmin): class RateLimitedTwoFactorLogAdmin (line 19) | class RateLimitedTwoFactorLogAdmin(admin.ModelAdmin): class PillowThrottleDefinitionAdmin (line 26) | class PillowThrottleDefinitionAdmin(admin.ModelAdmin): class SystemLimitAdmin (line 34) | class SystemLimitAdmin(admin.ModelAdmin): FILE: corehq/project_limits/exceptions.py class SystemLimitIllegalScopeChange (line 1) | class SystemLimitIllegalScopeChange(Exception): FILE: corehq/project_limits/gauge.py function get_pillow_throttle_definition (line 14) | def get_pillow_throttle_definition(kafka_topic): class Gauge (line 21) | class Gauge: method __init__ (line 29) | def __init__(self, feature_key, scope_fn, timeout=8 * 60): method report (line 39) | def report(self, tracked_key, observerd_value): method get_values (line 52) | def get_values(self): method _tracked_event_cache_key (line 61) | def _tracked_event_cache_key(self, tracked_key): method _last_reported_timestamp_key (line 65) | def _last_reported_timestamp_key(self): method get_last_reported_time (line 68) | def get_last_reported_time(self): method max (line 72) | def max(self): method min (line 79) | def min(self): method avg (line 86) | def avg(self): class GaugeLimiter (line 97) | class GaugeLimiter: method __init__ (line 99) | def __init__(self, gauge, get_gauge_definition): method wait (line 109) | def wait(self): method allow_usage (line 113) | def allow_usage(self): method gauge_definition (line 130) | def gauge_definition(self): class PillowLagGaugeLimiter (line 137) | class PillowLagGaugeLimiter(GaugeLimiter): method _has_pillow_reported_recently (line 139) | def _has_pillow_reported_recently(self): method allow_usage (line 144) | def allow_usage(self): method _is_ideal_throttle_condition (line 150) | def _is_ideal_throttle_condition(self): FILE: corehq/project_limits/migrations/0001_initial.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/project_limits/migrations/0002_ratelimitedtwofactorlog.py function add_partitions (line 7) | def add_partitions(apps, schema_editor): class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/project_limits/migrations/0003_pillowlaggaugedefinition.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/project_limits/migrations/0004_systemlimit.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/project_limits/migrations/0005_systemlimit_owneriddefault.py function _update_owner_id_system_limit (line 9) | def _update_owner_id_system_limit(limit): function make_migration_fn (line 21) | def make_migration_fn(limit): class Migration (line 28) | class Migration(migrations.Migration): FILE: corehq/project_limits/models.py class DynamicRateDefinition (line 20) | class DynamicRateDefinition(models.Model): method save (line 28) | def save(self, *args, **kwargs): method delete (line 32) | def delete(self, *args, **kwargs): method _clear_caches (line 36) | def _clear_caches(self): class GaugeDefinition (line 42) | class GaugeDefinition(models.Model): class Meta (line 54) | class Meta: method save (line 57) | def save(self, *args, **kwargs): method delete (line 61) | def delete(self, *args, **kwargs): method _clear_caches (line 65) | def _clear_caches(self): class PillowLagGaugeDefinition (line 69) | class PillowLagGaugeDefinition(GaugeDefinition): method _clear_caches (line 73) | def _clear_caches(self): class RateLimitedTwoFactorLog (line 80) | class RateLimitedTwoFactorLog(models.Model): class SystemLimit (line 94) | class SystemLimit(models.Model): class Meta (line 100) | class Meta: method __str__ (line 103) | def __str__(self): method save (line 107) | def save(self, *args, **kwargs): method delete (line 113) | def delete(self, *args, **kwargs): method _prevent_changing_from_global_to_domain_scope (line 118) | def _prevent_changing_from_global_to_domain_scope(self): method get_limit_for_key (line 130) | def get_limit_for_key(cls, key, default, *, domain=''): method _get_global_limit (line 141) | def _get_global_limit(key, default): method _get_domain_specific_limit (line 147) | def _get_domain_specific_limit(key, domain): FILE: corehq/project_limits/rate_counter/interfaces.py class AbstractRateCounter (line 4) | class AbstractRateCounter(metaclass=abc.ABCMeta): method get (line 6) | def get(self, scope): method increment (line 10) | def increment(self, scope, delta): method increment_and_get (line 14) | def increment_and_get(self, scope, delta): FILE: corehq/project_limits/rate_counter/rate_counter.py class SlidingWindowRateCounter (line 12) | class SlidingWindowRateCounter(AbstractRateCounter): method __init__ (line 29) | def __init__(self, key, window_duration, window_offset=0, grains_per_w... method __repr__ (line 56) | def __repr__(self): method get (line 59) | def get(self, scope, timestamp=None): method retry_after (line 74) | def retry_after(self): method increment (line 81) | def increment(self, scope, delta=1, timestamp=None): method increment_and_get (line 86) | def increment_and_get(self, scope, delta=1, timestamp=None): class FixedWindowRateCounter (line 91) | class FixedWindowRateCounter(AbstractRateCounter): method __init__ (line 92) | def __init__(self, key, window_duration, window_offset=0, keep_windows=1, method __repr__ (line 109) | def __repr__(self): method _digest (line 113) | def _digest(string): method _cache_key (line 116) | def _cache_key(self, scope, timestamp=None): method get (line 127) | def get(self, scope, timestamp=None, key_is_active=True): method increment_and_get (line 130) | def increment_and_get(self, scope, delta=1, timestamp=None): method increment (line 133) | def increment(self, scope, delta=1, timestamp=None): class CounterCache (line 137) | class CounterCache(object): method __init__ (line 138) | def __init__(self, memoized_timeout, timeout, local_cache=LOCMEM, shar... method incr (line 144) | def incr(self, key, delta=1): method get (line 151) | def get(self, key, key_is_active=True): FILE: corehq/project_limits/rate_limiter.py class RateLimiter (line 19) | class RateLimiter(object): method __init__ (line 32) | def __init__(self, feature_key, get_rate_limits): method report_usage (line 36) | def report_usage(self, scope='', delta=1): method get_window_of_first_exceeded_limit (line 41) | def get_window_of_first_exceeded_limit(self, scope=''): method allow_usage (line 49) | def allow_usage(self, scope=''): method get_retry_after (line 62) | def get_retry_after(self, scope): method iter_rates (line 75) | def iter_rates(self, scope=''): method wait (line 97) | def wait(self, scope, timeout, windows_not_to_wait_on=('hour', 'day', ... function get_n_users_in_domain (line 128) | def get_n_users_in_domain(domain): function get_n_users_in_subscription (line 138) | def get_n_users_in_subscription(domain): function _get_account_name (line 150) | def _get_account_name(domain): class PerUserRateDefinition (line 159) | class PerUserRateDefinition(object): method __init__ (line 160) | def __init__(self, per_user_rate_definition, constant_rate_definition=... method get_rate_limits (line 164) | def get_rate_limits(self, domain): class RateDefinition (line 183) | class RateDefinition(object): method times (line 190) | def times(self, multiplier): method plus (line 193) | def plus(self, other): method map (line 197) | def map(self, math_func, other=None): method get_rate_limits (line 214) | def get_rate_limits(self, scope=''): function get_dynamic_rate_definition (line 226) | def get_dynamic_rate_definition(key, default): function rate_definition_from_db_object (line 232) | def rate_definition_from_db_object(dynamic_rate_definition): function _get_rate_definition_dict (line 236) | def _get_rate_definition_dict(rate_definition): FILE: corehq/project_limits/shortcuts.py function get_standard_ratio_rate_definition (line 16) | def get_standard_ratio_rate_definition(events_per_day): function delay_and_report_rate_limit (line 20) | def delay_and_report_rate_limit(domain, max_wait, delay_rather_than_reje... FILE: corehq/project_limits/tests/test_dynamic_rate_definition.py class DynamicRateDefinitionTest (line 9) | class DynamicRateDefinitionTest(TestCase): method setUpClass (line 11) | def setUpClass(cls): method test_get_dynamic_rate_definition (line 17) | def test_get_dynamic_rate_definition(self): method test_conversion (line 55) | def test_conversion(self): FILE: corehq/project_limits/tests/test_gauge.py class TestKafkaPillowGauge (line 19) | class TestKafkaPillowGauge(SimpleTestCase): method setUpClass (line 22) | def setUpClass(cls): method _report_usage_for_multiple_partitions (line 29) | def _report_usage_for_multiple_partitions(self, gauge, partitions, lag... method test_report_usage (line 35) | def test_report_usage(self): method test_get_values_for_single_partition (line 47) | def test_get_values_for_single_partition(self): method test_get_values_for_multiple_partitons (line 60) | def test_get_values_for_multiple_partitons(self, mock_get_all_kafka_pa... method test_max (line 80) | def test_max(self, mock_get_all_kafka_partitons_for_topic): method test_avg (line 95) | def test_avg(self, mock_get_all_kafka_partitons_for_topic): class TestPillowLagGaugeLimiter (line 110) | class TestPillowLagGaugeLimiter(TestCase): method setUpClass (line 113) | def setUpClass(cls): method setUp (line 132) | def setUp(self): method _set_gauge_defintion (line 137) | def _set_gauge_defintion(self, max_value, average_value): method test_allow_usage_when_below_limits (line 142) | def test_allow_usage_when_below_limits(self): method test_allow_usage_when_limit_breach_on_max_only (line 148) | def test_allow_usage_when_limit_breach_on_max_only(self): method test_allow_usage_when_limit_breach_on_avg_only (line 154) | def test_allow_usage_when_limit_breach_on_avg_only(self): method test_allow_usage_when_limit_breach_on_avg_and_max (line 160) | def test_allow_usage_when_limit_breach_on_avg_and_max(self): method test_allow_usage_with_average_not_set (line 166) | def test_allow_usage_with_average_not_set(self): method test_allow_usage_with_max_not_set (line 180) | def test_allow_usage_with_max_not_set(self): method test_allow_usage_with_single_partition (line 194) | def test_allow_usage_with_single_partition(self): method test_allow_usage_with_no_reported_values (line 199) | def test_allow_usage_with_no_reported_values(self): method tearDown (line 202) | def tearDown(self): method tearDownClass (line 210) | def tearDownClass(cls): FILE: corehq/project_limits/tests/test_get_n_users_for_rate_limiting.py class GetNUsersForRateLimitingTest (line 11) | class GetNUsersForRateLimitingTest(TestCase, DomainSubscriptionMixin): method test_no_subscription (line 13) | def test_no_subscription(self): method test_with_subscription (line 24) | def test_with_subscription(self): method test_no_user_limit (line 66) | def test_no_user_limit(self): method test_paid_web_users (line 71) | def test_paid_web_users(self): method _setup_domain (line 83) | def _setup_domain(self, domain, software_plan=SoftwarePlanEdition.ADVA... method _assert_domain_value_equals (line 90) | def _assert_domain_value_equals(self, domain, value): method _assert_subscription_value_equals (line 94) | def _assert_subscription_value_equals(self, domain, value): method _set_n_users (line 98) | def _set_n_users(self, domain, n_users, user_cls=CommCareUser): FILE: corehq/project_limits/tests/test_rate_counter.py function test_fixed_window_rate_counter (line 23) | def test_fixed_window_rate_counter(): function float_eq (line 41) | def float_eq(f1, f2, text=None): function test_sliding_window_with_grains_rate_counter (line 47) | def test_sliding_window_with_grains_rate_counter(): FILE: corehq/project_limits/tests/test_rate_definition.py function test_rate_definition_times (line 11) | def test_rate_definition_times(_): function test_rate_definition_with_minimum (line 34) | def test_rate_definition_with_minimum(_): function test_rate_definition_map (line 70) | def test_rate_definition_map(_): function test_rate_definition_map_with_other (line 91) | def test_rate_definition_map_with_other(_): function _get_random_rate_def (line 108) | def _get_random_rate_def(): function test_rate_definition_against_fixed_user_table (line 134) | def test_rate_definition_against_fixed_user_table(n_users, per_second, p... FILE: corehq/project_limits/tests/test_rate_limiter.py function test_rate_limit_interface (line 19) | def test_rate_limit_interface(): function test_get_window_of_first_exceeded_limit (line 35) | def test_get_window_of_first_exceeded_limit(): function test_get_window_of_first_exceeded_limit_none (line 49) | def test_get_window_of_first_exceeded_limit_none(): function test_get_window_of_first_exceeded_limit_priority (line 63) | def test_get_window_of_first_exceeded_limit_priority(): FILE: corehq/project_limits/tests/test_shortcuts.py function test_get_standard_ratio_rate_definition (line 7) | def test_get_standard_ratio_rate_definition(): FILE: corehq/project_limits/tests/test_system_limit.py class TestSystemLimitMethods (line 8) | class TestSystemLimitMethods(TestCase): method test_creates_limit_if_does_not_exist (line 10) | def test_creates_limit_if_does_not_exist(self): method test_only_one_limit_created (line 15) | def test_only_one_limit_created(self): method test_existing_limit_is_not_updated_if_default_changes (line 21) | def test_existing_limit_is_not_updated_if_default_changes(self): method test_global_limit_used_if_no_domain_limit_exists (line 26) | def test_global_limit_used_if_no_domain_limit_exists(self): method test_domain_specific_limit (line 30) | def test_domain_specific_limit(self): method test_raises_error_if_changing_scope_from_global_to_domain (line 36) | def test_raises_error_if_changing_scope_from_global_to_domain(self): method test_no_error_is_raised_if_changing_scope_from_domain_to_global (line 42) | def test_no_error_is_raised_if_changing_scope_from_domain_to_global(se... method test_raises_db_error_if_conflicting_global_scopes (line 48) | def test_raises_db_error_if_conflicting_global_scopes(self): FILE: corehq/reports.py function REPORTS (line 82) | def REPORTS(project): function _safely_get_report_configs (line 160) | def _safely_get_report_configs(project_name): function _safely_get_report_configs_generic (line 168) | def _safely_get_report_configs_generic(project_name, report_class): function _safely_get_static_report_configs (line 184) | def _safely_get_static_report_configs(project_name): function _make_report_class (line 191) | def _make_report_class(config, show_in_dropdown=False, show_in_nav=False): function _get_configurable_reports (line 226) | def _get_configurable_reports(project): function _get_report_builder_reports (line 240) | def _get_report_builder_reports(project): function get_report_builder_count (line 267) | def get_report_builder_count(domain): function EDIT_DATA_INTERFACES (line 273) | def EDIT_DATA_INTERFACES(domain_obj): FILE: corehq/sql_accessors/migrations/0001_initial.py class Migration (line 16) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0002_add_sync_functions.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0003_get_forms_by_user_id_functions.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0004_get_modified_since_functions.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0005_add_fields_to_attachments.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0006_add_fields_to_case_attachments.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0007_rename_get_case_attachment_by_name.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0008_get_case_by_external_id.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0009_ledger_accessors.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0010_update_state_type_values.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0011_get_case_types_for_domain.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0012_get_case_transactions_by_type.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0012_soft_deletion.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0013_merge.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0014_ledger_transactions.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0015_get_form_ids_in_domain.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0015_ledger_transactions_update.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0016_ledger_values_by_product_ids.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0017_merge.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0018_save_ledger_values_rebuild.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0019_get_case_ids_in_domain_by_owners.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0020_soft_delete_cases.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0021_get_ledger_values_for_cases.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0022_last_modified_form_id.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0023_update_get_case_form_ids.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0024_delete_ledgers.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0024_update_save_ledger_values.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0025_update_get_ledger_values_for_cases.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0026_get_all_ledger_values_since.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0027_audit_fixups.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0028_rename_get_multiple_forms_attachments.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0029_get_case_ids_in_domain.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0030_index_changes.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0031_remove_get_ledger_values_for_product_ids.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0032_exclude_deleted_cases.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0033_remove_location_id_from_ledgers.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0034_update_reindex_functions.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0035_add_undelete_functions.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0036_exclude_deleted.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0037_delete_ledgers_with_case.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0038_attachment_bucket.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0038_save_case_deletion_fields.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0039_update_reindex_queries.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0040_fix_case_reindex_query.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0041_latest_ledger_transactions_fix.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0042_write_blob_bucket.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0043_faster_get_reverse_indexed_cases.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0044_remove_get_case_types_for_domain.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0045_drop_case_modified_since.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0046_livequery_sql.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0047_livequery_sql.py class Migration (line 10) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0048_livequery_sql.py class Migration (line 10) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0049_remove_save_case.py class Migration (line 10) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0050_faster_get_reverse_indexed_cases.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0050_remove_get_extension_case_ids.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0051_merge_20170724_1255.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0052_save_ledgers_fix.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0053_drop_unused_sql.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0054_drop_reindexa_accessor_functions.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0055_set_form_modified_on.py class Migration (line 16) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0056_add_hashlib_functions.py class Migration (line 9) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0057_filter_get_reverse_indexed_cases.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0058_drop_old_reverse_indexed_fn.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0059_case_attachment_refactor.py class Migration (line 10) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0060_case_attachment_drops.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0061_check_transaction_sort_order.py class Migration (line 10) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0062_form_attachments.py class Migration (line 10) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0063_get_ledger_values_for_cases_2.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0064_remove_get_case_models_functions.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0065_get_ledger_values_for_cases_3.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0066_drop_unused_function.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0067_livequery_sql.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0067_livequery_sql_include_deleted_indices.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0068_remove_deleted_state.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/migrations/0069_drop_DELETED_references_fn.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/sql_accessors/sql_templates/case_has_transactions_since_sync.sql function case_has_transactions_since_sync (line 3) | CREATE FUNCTION case_has_transactions_since_sync(p_case_id text, p_sync_... FILE: corehq/sql_accessors/sql_templates/compare_server_client_case_transaction_order.sql function compare_server_client_case_transaction_order (line 3) | CREATE FUNCTION compare_server_client_case_transaction_order( FILE: corehq/sql_accessors/sql_templates/get_all_reverse_indices_1.sql function get_all_reverse_indices (line 3) | CREATE FUNCTION get_all_reverse_indices(domain_name TEXT, case_ids TEXT[... FILE: corehq/sql_accessors/sql_templates/get_case_attachment_by_name.sql function get_case_attachment_by_name (line 3) | CREATE FUNCTION get_case_attachment_by_name(p_case_id TEXT, p_name TEXT)... FILE: corehq/sql_accessors/sql_templates/get_case_by_location_id_1.sql function get_case_by_location_id (line 3) | CREATE FUNCTION get_case_by_location_id(domain_name TEXT, p_location_id ... FILE: corehq/sql_accessors/sql_templates/get_case_ids_modified_with_owner_since_1.sql function get_case_ids_modified_with_owner_since (line 3) | CREATE FUNCTION get_case_ids_modified_with_owner_since(domain_name TEXT,... FILE: corehq/sql_accessors/sql_templates/get_case_indices_reverse_2.sql function get_case_indices_reverse (line 3) | CREATE FUNCTION get_case_indices_reverse(domain_name TEXT, p_case_id TEX... FILE: corehq/sql_accessors/sql_templates/get_case_last_modified_dates.sql function get_case_last_modified_dates (line 3) | CREATE FUNCTION get_case_last_modified_dates(domain_name text, case_ids ... FILE: corehq/sql_accessors/sql_templates/get_case_transaction_by_form_id.sql function get_case_transaction_by_form_id (line 3) | CREATE FUNCTION get_case_transaction_by_form_id(p_case_id TEXT, p_form_i... FILE: corehq/sql_accessors/sql_templates/get_case_transactions_by_type.sql function get_case_transactions_by_type (line 3) | CREATE FUNCTION get_case_transactions_by_type(p_case_id TEXT, p_transact... FILE: corehq/sql_accessors/sql_templates/get_cases_by_id.sql function get_cases_by_id (line 3) | CREATE FUNCTION get_cases_by_id(case_ids TEXT[]) RETURNS SETOF form_proc... FILE: corehq/sql_accessors/sql_templates/get_closed_and_deleted_ids.sql function get_closed_and_deleted_ids (line 3) | CREATE FUNCTION get_closed_and_deleted_ids( FILE: corehq/sql_accessors/sql_templates/get_form_attachment_by_name.sql function get_form_attachment_by_name (line 3) | CREATE FUNCTION get_form_attachment_by_name(p_form_id TEXT, attachment_n... FILE: corehq/sql_accessors/sql_templates/get_form_ids_for_user_2.sql function get_form_ids_for_user_2 (line 3) | CREATE FUNCTION get_form_ids_for_user_2( FILE: corehq/sql_accessors/sql_templates/get_form_ids_in_domain_by_type.sql function get_form_ids_in_domain_by_type (line 5) | CREATE FUNCTION get_form_ids_in_domain_by_type(domain_name TEXT, p_state... FILE: corehq/sql_accessors/sql_templates/get_forms_by_id.sql function get_forms_by_id (line 3) | CREATE FUNCTION get_forms_by_id(form_ids TEXT[]) RETURNS SETOF form_proc... FILE: corehq/sql_accessors/sql_templates/get_forms_by_state.sql function get_forms_by_state (line 3) | CREATE FUNCTION get_forms_by_state( FILE: corehq/sql_accessors/sql_templates/get_latest_ledger_transaction.sql function get_latest_ledger_transaction (line 3) | CREATE FUNCTION get_latest_ledger_transaction( FILE: corehq/sql_accessors/sql_templates/get_ledger_value.sql function get_ledger_value (line 3) | CREATE FUNCTION get_ledger_value(p_case_id TEXT, p_section_id TEXT, p_en... FILE: corehq/sql_accessors/sql_templates/get_modified_case_ids.sql function get_modified_case_ids (line 4) | CREATE FUNCTION get_modified_case_ids( FILE: corehq/sql_accessors/sql_templates/get_multiple_cases_indices.sql function get_multiple_cases_indices (line 3) | CREATE FUNCTION get_multiple_cases_indices(domain_name TEXT, case_ids TE... FILE: corehq/sql_accessors/sql_templates/get_multiple_forms_attachments.sql function get_multiple_forms_attachments (line 3) | CREATE FUNCTION get_multiple_forms_attachments(form_ids TEXT[]) RETURNS ... FILE: corehq/sql_accessors/sql_templates/get_related_indices.sql function get_related_indices (line 3) | CREATE FUNCTION get_related_indices( FILE: corehq/sql_accessors/sql_templates/revoke_restore_case_transactions_for_form.sql function revoke_restore_case_transactions_for_form (line 3) | CREATE FUNCTION revoke_restore_case_transactions_for_form(case_ids TEXT[... FILE: corehq/sql_accessors/sql_templates/update_form_problem_and_state.sql function update_form_problem_and_state (line 3) | CREATE FUNCTION update_form_problem_and_state( FILE: corehq/sql_db/__init__.py function custom_db_checks (line 10) | def custom_db_checks(app_configs, **kwargs): function check_plproxy_config (line 27) | def check_plproxy_config(app_configs, **kwargs): function check_standby_configs (line 48) | def check_standby_configs(app_configs, **kwargs): function check_standby_databases (line 86) | def check_standby_databases(app_configs, **kwargs): function check_db_tables (line 106) | def check_db_tables(app_configs, **kwargs): FILE: corehq/sql_db/app_config.py class SqlDbAppConfig (line 4) | class SqlDbAppConfig(AppConfig): method ready (line 7) | def ready(self): FILE: corehq/sql_db/config.py class LooslyEqualJsonObject (line 29) | class LooslyEqualJsonObject(object): method __eq__ (line 31) | def __eq__(self, other): method __hash__ (line 35) | def __hash__(self): class ShardMeta (line 39) | class ShardMeta(JsonObject, LooslyEqualJsonObject): method get_server_option_string (line 45) | def get_server_option_string(self): class DbShard (line 49) | class DbShard(object): method __init__ (line 51) | def __init__(self, shard_id, django_dbname): method to_shard_meta (line 55) | def to_shard_meta(self, host_map): class PlProxyConfig (line 67) | class PlProxyConfig(object): method form_processing_dbs (line 77) | def form_processing_dbs(self): method _get_django_shards (line 81) | def _get_django_shards(self): method get_shards (line 89) | def get_shards(self): method get_shards_on_db (line 96) | def get_shards_on_db(self, db): method get_django_shard_map (line 106) | def get_django_shard_map(self): method from_settings (line 111) | def from_settings(cls): method from_dict (line 119) | def from_dict(cls, config_dict): method from_legacy_dict (line 169) | def from_legacy_dict(cls, legacy_config): method validate (line 198) | def validate(self): function _is_power_of_2 (line 220) | def _is_power_of_2(num): function _get_shard_count (line 224) | def _get_shard_count(shard_ranges): function _get_standby_plproxy_config (line 231) | def _get_standby_plproxy_config(primary_config: PlProxyConfig) -> Option... FILE: corehq/sql_db/connections.py function get_db_alias_or_none (line 22) | def get_db_alias_or_none(enigne_id): function create_engine (line 29) | def create_engine(connection_url: str, connect_args: dict = None): class SessionHelper (line 43) | class SessionHelper(object): method __init__ (line 48) | def __init__(self, connection_url: str, connect_args: dict = None): method session_context (line 56) | def session_context(self): class ConnectionManager (line 73) | class ConnectionManager(object): method __init__ (line 81) | def __init__(self): method _get_or_create_helper (line 87) | def _get_or_create_helper(self, connection_url: str): method get_django_db_alias (line 93) | def get_django_db_alias(self, engine_id): method engine_id_is_available (line 96) | def engine_id_is_available(self, engine_id): method get_session_helper (line 99) | def get_session_helper(self, engine_id=DEFAULT_ENGINE_ID, readonly=Fal... method get_scoped_session (line 108) | def get_scoped_session(self, engine_id=DEFAULT_ENGINE_ID): method get_engine (line 114) | def get_engine(self, engine_id=DEFAULT_ENGINE_ID): method get_load_balanced_read_db_alias (line 121) | def get_load_balanced_read_db_alias(self, engine_id): method close_scoped_sessions (line 133) | def close_scoped_sessions(self): method dispose_engine (line 137) | def dispose_engine(self, engine_id): method _dispose_engine (line 145) | def _dispose_engine(self, connection_url): method dispose_all (line 151) | def dispose_all(self): method get_connection_string (line 158) | def get_connection_string(self, engine_id_or_db_alias): method _populate_connection_map (line 162) | def _populate_connection_map(self): method _connection_string_from_django (line 186) | def _connection_string_from_django(self, django_alias): method resolves_to_unique_dbs (line 196) | def resolves_to_unique_dbs(self, engine_ids): function _close_connections (line 208) | def _close_connections(**kwargs): function cleanup_connections (line 216) | def cleanup_connections(sender): function override_engine (line 228) | def override_engine(engine_id, connection_url, db_alias=None): FILE: corehq/sql_db/exceptions.py class PartitionValidationError (line 1) | class PartitionValidationError(Exception): class NotPowerOf2Error (line 5) | class NotPowerOf2Error(PartitionValidationError): class NonContinuousShardsError (line 9) | class NonContinuousShardsError(PartitionValidationError): class NotZeroStartError (line 13) | class NotZeroStartError(PartitionValidationError): class NoSuchShardDatabaseError (line 17) | class NoSuchShardDatabaseError(Exception): FILE: corehq/sql_db/fields.py class CharIdField (line 6) | class CharIdField(CharField): method db_type (line 16) | def db_type(self, connection): function _get_caller_name (line 23) | def _get_caller_name(): FILE: corehq/sql_db/functions.py class MakeInterval (line 4) | class MakeInterval(models.Func): method __init__ (line 12) | def __init__(self, unit, value): class UnquotedValue (line 18) | class UnquotedValue(models.Value): method as_sql (line 21) | def as_sql(self, compiler, connection): FILE: corehq/sql_db/jsonops.py class JsonDelete (line 35) | class JsonDelete(Func): method __init__ (line 49) | def __init__(self, expression, *keys): class JsonGet (line 58) | class JsonGet(Func): method __init__ (line 71) | def __init__(self, expression, field): class JsonSet (line 75) | class JsonSet(Func): method __init__ (line 90) | def __init__(self, expression, path, new_value, create_missing=True): function _validate (line 104) | def _validate(values, types): function _int_str (line 112) | def _int_str(arg): FILE: corehq/sql_db/management/commands/configure_pl_proxy_cluster.py class Command (line 32) | class Command(BaseCommand): method add_arguments (line 35) | def add_arguments(self, parser): method handle (line 49) | def handle(self, **options): function create_or_update_cluster (line 59) | def create_or_update_cluster(cluster_config, verbose, create_only): function parse_existing_shard (line 73) | def parse_existing_shard(shard_option): function _get_current_shards (line 84) | def _get_current_shards(existing_config): function _is_shard_option (line 92) | def _is_shard_option(option): function _update_pl_proxy_cluster (line 96) | def _update_pl_proxy_cluster(cluster_config, existing_config, verbose): function _get_alter_server_sql (line 128) | def _get_alter_server_sql(cluster_name, shards_to_update): function create_pl_proxy_cluster (line 140) | def create_pl_proxy_cluster(cluster_config, verbose=False): function get_sql_to_create_pl_proxy_cluster (line 152) | def get_sql_to_create_pl_proxy_cluster(cluster_config): function get_drop_server_sql (line 159) | def get_drop_server_sql(cluster_name): function _get_existing_cluster_config (line 163) | def _get_existing_cluster_config(cluster_config): function get_pl_proxy_server_config_sql (line 172) | def get_pl_proxy_server_config_sql(cluster_name, shards): function get_user_mapping_sql (line 183) | def get_user_mapping_sql(cluster_config): function _confirm (line 190) | def _confirm(msg): function get_shards_to_update (line 195) | def get_shards_to_update(existing_shards, new_shards): FILE: corehq/sql_db/management/commands/locate_invalid_shard_data.py class Command (line 6) | class Command(BaseCommand): method handle (line 9) | def handle(self, **options): FILE: corehq/sql_db/management/commands/migrate.py class Command (line 7) | class Command(migrate.Command): method add_arguments (line 9) | def add_arguments(self, parser): method handle (line 16) | def handle(self, *args, should_reindex, **options): FILE: corehq/sql_db/management/commands/migrate_multi.py class Command (line 13) | class Command(BaseCommand): method add_arguments (line 16) | def add_arguments(self, parser): method handle (line 30) | def handle(self, app_label, migration_name, **options): FILE: corehq/sql_db/management/commands/print_approximate_doc_distribution.py class DocCountInfo (line 12) | class DocCountInfo(namedtuple('DocCountInfo', 'total by_db by_host')): method by_db_table (line 14) | def by_db_table(self): method by_host_table (line 21) | def by_host_table(self): class Command (line 28) | class Command(BaseCommand): method add_arguments (line 35) | def add_arguments(self, parser): method handle (line 43) | def handle(self, **options): function _write_info (line 58) | def _write_info(title, info, row_formatter, out=None): function _get_counts (line 72) | def _get_counts(accessor): FILE: corehq/sql_db/management/commands/print_database_shard_data.py class Command (line 6) | class Command(BaseCommand): method add_arguments (line 9) | def add_arguments(self, parser): method handle (line 23) | def handle(self, **options): FILE: corehq/sql_db/management/commands/print_max_id_of_pg_tables.py function get_sequences (line 5) | def get_sequences(cursor): function get_last_values (line 10) | def get_last_values(sequences, cursor): class Command (line 23) | class Command(BaseCommand): method add_arguments (line 28) | def add_arguments(self, parser): method handle (line 34) | def handle(self, **options): FILE: corehq/sql_db/migrations.py function partitioned (line 10) | def partitioned(cls_or_op=None, apply_to_proxy=True): function is_partition_alias (line 52) | def is_partition_alias(db, apply_to_proxy): function partitioned_override (line 60) | def partitioned_override(method, apply_to_proxy): FILE: corehq/sql_db/models.py function raise_access_restricted (line 12) | def raise_access_restricted(queryset): class RequireDBManager (line 19) | class RequireDBManager(models.Manager): method get_queryset (line 25) | def get_queryset(self): method get_db (line 31) | def get_db(partition_value): method partitioned_get (line 35) | def partitioned_get(self, partition_value, **kwargs): method partitioned_query (line 57) | def partitioned_query(self, partition_value=None): method using (line 66) | def using(self, alias): method raw (line 69) | def raw(self, raw_query, params=None, translations=None, using=None): method plproxy_raw (line 76) | def plproxy_raw(self, raw_query, params=None): function _get_cursor (line 80) | def _get_cursor(cls, readonly=False, hints=None): class PartitionedModel (line 87) | class PartitionedModel(models.Model): method get_plproxy_cursor (line 100) | def get_plproxy_cursor(cls, readonly=False): method get_cursor_for_partition_value (line 104) | def get_cursor_for_partition_value(cls, partition_value, readonly=False): method get_cursor_for_partition_db (line 108) | def get_cursor_for_partition_db(cls, db_alias, readonly=False): method partition_attr (line 112) | def partition_attr(self): method partition_value (line 116) | def partition_value(self): method db (line 124) | def db(self): class Meta (line 129) | class Meta(object): FILE: corehq/sql_db/operations.py class IndexRenameOperationException (line 16) | class IndexRenameOperationException(Exception): class RunSqlLazy (line 20) | class RunSqlLazy(RunSQL): method __init__ (line 28) | def __init__(self, sql_template_path, reverse_sql_template_path, templ... method database_forwards (line 34) | def database_forwards(self, app_label, schema_editor, from_state, to_s... method database_backwards (line 41) | def database_backwards(self, app_label, schema_editor, from_state, to_... method _render_template (line 49) | def _render_template(self, path): class SQL (line 65) | class SQL(object): class RawSQLMigration (line 70) | class RawSQLMigration(object): method __init__ (line 92) | def __init__(self, base_path_tuple, template_context=None): method get_migration (line 96) | def get_migration(self, forward_template, reverse_template=NOOP, testi... function _validate_old_index_name (line 121) | def _validate_old_index_name(index_name, table_name): function _validate_identifier (line 128) | def _validate_identifier(name): function _rename_table_indexes (line 134) | def _rename_table_indexes(from_table, to_table): function rename_table_indexes (line 149) | def rename_table_indexes(from_table, to_table): FILE: corehq/sql_db/routers.py class MultiDBRouter (line 25) | class MultiDBRouter(object): method db_for_read (line 27) | def db_for_read(self, model, **hints): method db_for_write (line 30) | def db_for_write(self, model, **hints): method allow_migrate (line 33) | def allow_migrate(self, db, app_label, model=None, model_name=None, **... method allow_relation (line 36) | def allow_relation(self, obj1, obj2, **hints): function allow_migrate (line 55) | def allow_migrate(db, app_label, model_name=None): function db_for_read_write (line 103) | def db_for_read_write(model, write=True, hints=None): function get_db_for_partitioned_model (line 137) | def get_db_for_partitioned_model(model, hints): function get_load_balanced_app_db (line 166) | def get_load_balanced_app_db(app_name: str, default: str) -> str: FILE: corehq/sql_db/shard_data_management.py class DatabaseShardInfo (line 8) | class DatabaseShardInfo(object): method __init__ (line 10) | def __init__(self, db): method add_model_data (line 18) | def add_model_data(self, model, shard_data): method __str__ (line 25) | def __str__(self): method to_csv (line 41) | def to_csv(self): method _get_formatted_expected_data (line 54) | def _get_formatted_expected_data(self): method _get_formatted_unexpected_data (line 57) | def _get_formatted_unexpected_data(self): method _get_formatted_data (line 60) | def _get_formatted_data(self, data): function get_database_shard_info_for_testing (line 72) | def get_database_shard_info_for_testing(database): function get_count_of_unmatched_models_by_shard (line 81) | def get_count_of_unmatched_models_by_shard(database, model): function get_count_of_models_by_shard_for_testing (line 100) | def get_count_of_models_by_shard_for_testing(database, model): function _get_unmatched_shard_count_query_for_testing (line 108) | def _get_unmatched_shard_count_query_for_testing(model): function _get_counts_by_shard_query_for_testing (line 122) | def _get_counts_by_shard_query_for_testing(model): function _is_a_string_field (line 152) | def _is_a_string_field(field_type): FILE: corehq/sql_db/tests/test_checks.py function test_check_standby_configs (line 53) | def test_check_standby_configs(config, is_error): FILE: corehq/sql_db/tests/test_connections.py function _get_db_config (line 25) | def _get_db_config(db_name, master=None, delay=None): class ConnectionManagerTests (line 56) | class ConnectionManagerTests(SimpleTestCase): method setUp (line 57) | def setUp(self): method test_new_settings_empty (line 62) | def test_new_settings_empty(self): method test_new_settings (line 70) | def test_new_settings(self): method test_read_load_balancing (line 80) | def test_read_load_balancing(self, *args): method test_read_load_balancing_session (line 116) | def test_read_load_balancing_session(self, *args): method test_standby_filtering (line 148) | def test_standby_filtering(self, *args): method test_get_databases_for_read_query_filter (line 165) | def test_get_databases_for_read_query_filter(self, *args): method test_get_databases_for_read_query_pass (line 173) | def test_get_databases_for_read_query_pass(self, *args): class TestReadsFromShardStandbys (line 182) | class TestReadsFromShardStandbys(SimpleTestCase): method setUp (line 183) | def setUp(self): method test_get_replication_delay_for_shard_standbys (line 187) | def test_get_replication_delay_for_shard_standbys(self): method test_get_standbys_with_acceptible_delay (line 192) | def test_get_standbys_with_acceptible_delay(self): method mock_standby_delay (line 198) | def mock_standby_delay(self, replication_results=None): FILE: corehq/sql_db/tests/test_fields.py function test_CharIdField_without_indexes (line 12) | def test_CharIdField_without_indexes(): function test_CharIdField_primary_key (line 22) | def test_CharIdField_primary_key(): function test_CharIdField_with_index (line 33) | def test_CharIdField_with_index(): function test_CharField_has_pattern_ops_index (line 43) | def test_CharField_has_pattern_ops_index(): function schema_editor (line 57) | def schema_editor(): function assert_no_pattern_ops_index (line 65) | def assert_no_pattern_ops_index(editor): function has_pattern_ops_index (line 72) | def has_pattern_ops_index(statements): FILE: corehq/sql_db/tests/test_jsonops.py function test_JsonDelete_sql (line 20) | def test_JsonDelete_sql(): function test_JsonDelete_illegal_field (line 25) | def test_JsonDelete_illegal_field(): function test_JsonGet_sql (line 30) | def test_JsonGet_sql(): function test_JsonSet_sql (line 35) | def test_JsonSet_sql(): function test_JsonSet_do_not_create_missing (line 40) | def test_JsonSet_do_not_create_missing(): function test_JsonSet_with_expression (line 45) | def test_JsonSet_with_expression(): function test_nested_operations (line 51) | def test_nested_operations(): function test_nested_delete (line 60) | def test_nested_delete(): class TestJsonOpsEvaluation (line 65) | class TestJsonOpsEvaluation(TestCase): method test_JsonDelete (line 67) | def test_JsonDelete(self): method test_JsonDelete_fields_with_special_characters (line 71) | def test_JsonDelete_fields_with_special_characters(self): method test_JsonSet (line 82) | def test_JsonSet(self): method test_JsonSet_with_special_characters (line 90) | def test_JsonSet_with_special_characters(self): method test_JsonGet (line 95) | def test_JsonGet(self): method test_JsonGet_quote (line 99) | def test_JsonGet_quote(self): method test_JsonGet_array_item_by_index (line 104) | def test_JsonGet_array_item_by_index(self): method test_JsonGet_backslash (line 108) | def test_JsonGet_backslash(self): method test_JsonGet_comma_quotation_mark (line 113) | def test_JsonGet_comma_quotation_mark(self): method test_nested_operations (line 118) | def test_nested_operations(self): class _UnquotedRef (line 131) | class _UnquotedRef(Ref): method as_sql (line 133) | def as_sql(self, compiler, connection): function as_sql (line 140) | def as_sql(expression): function eval_json_op (line 146) | def eval_json_op(expression, data=None): class _JsonModel (line 170) | class _JsonModel(models.Model): FILE: corehq/sql_db/tests/test_model_partitioning.py class PartitionedModelsTestMixin (line 15) | class PartitionedModelsTestMixin(object): method assertModelExists (line 17) | def assertModelExists(self, model_class, db): method assertModelDoesNotExist (line 27) | def assertModelDoesNotExist(self, model_class, db): method get_models (line 39) | def get_models(self, app_label): class TestPartitionedModelsWithMultipleDBs (line 44) | class TestPartitionedModelsWithMultipleDBs(PartitionedModelsTestMixin, T... function test_models_are_located_in_correct_dbs (line 53) | def test_models_are_located_in_correct_dbs(self, app_label, is_partition... class TestPartitionedModelsWithSingleDB (line 75) | class TestPartitionedModelsWithSingleDB(PartitionedModelsTestMixin, Test... function test_models_are_located_in_correct_db (line 84) | def test_models_are_located_in_correct_db(self, app_label): FILE: corehq/sql_db/tests/test_partition_config.py function _get_partition_config (line 39) | def _get_partition_config(shard_config): class TestPartitionConfig (line 108) | class TestPartitionConfig(SimpleTestCase): method test_num_shards (line 110) | def test_num_shards(self): method test_dbs_by_group (line 113) | def test_dbs_by_group(self): method test_shard_mapping (line 118) | def test_shard_mapping(self): method test_get_shards_on_db (line 128) | def test_get_shards_on_db(self): method test_get_shards_on_db_not_found (line 133) | def test_get_shards_on_db_not_found(self): method test_host_map (line 138) | def test_host_map(self): method test_legacy_format (line 146) | def test_legacy_format(self): method test_get_standby_plproxy_config (line 151) | def test_get_standby_plproxy_config(self): method test_get_standby_plproxy_config_missing_standby (line 160) | def test_get_standby_plproxy_config_missing_standby(self): method test_get_standby_plproxy_config_misconfigured (line 168) | def test_get_standby_plproxy_config_misconfigured(self): method test_get_standby_plproxy_config_legacy_format (line 176) | def test_get_standby_plproxy_config_legacy_format(self): function test_partition_config_validation (line 197) | def test_partition_config_validation(config, exception): class PlProxyTests (line 207) | class PlProxyTests(SimpleTestCase): method test_get_server_option_string (line 209) | def test_get_server_option_string(self): method test_parse_existing_shard (line 215) | def test_parse_existing_shard(self): method test_get_shards_to_update (line 222) | def test_get_shards_to_update(self): FILE: corehq/sql_db/tests/test_routers.py class AllowMigrateTest (line 19) | class AllowMigrateTest(SimpleTestCase): method test_synclogs_default (line 33) | def test_synclogs_default(self): method test_synclogs_db (line 49) | def test_synclogs_db(self): method test_synclogs_non_partitioned (line 54) | def test_synclogs_non_partitioned(self): function test_load_balanced_read_apps (line 63) | def test_load_balanced_read_apps(_, __): FILE: corehq/sql_db/tests/test_shard_management.py class ShardManagementTest (line 22) | class ShardManagementTest(DefaultShardingTestConfigMixIn, TestCase): method setUpClass (line 26) | def setUpClass(cls): method tearDown (line 34) | def tearDown(self): method test_uuids_used (line 39) | def test_uuids_used(self): method test_uuid_partitioning_correct (line 43) | def test_uuid_partitioning_correct(self): method test_uuid_partitioning_incorrect (line 56) | def test_uuid_partitioning_incorrect(self): method test_text_partitioning_correct (line 66) | def test_text_partitioning_correct(self): method test_text_partitioning_incorrect (line 77) | def test_text_partitioning_incorrect(self): method _make_form_instance (line 86) | def _make_form_instance(cls, form_id): FILE: corehq/sql_db/tests/test_utils.py class TestCreateUniqueIndexName (line 6) | class TestCreateUniqueIndexName(SimpleTestCase): method test_under_max_length_remains_unchanged (line 8) | def test_under_max_length_remains_unchanged(self): method test_accepts_list_of_fields (line 12) | def test_accepts_list_of_fields(self): method test_exceeds_max_length_is_truncated_with_hash (line 16) | def test_exceeds_max_length_is_truncated_with_hash(self): method test_raises_error_if_app_unspecified (line 21) | def test_raises_error_if_app_unspecified(self): method test_raises_error_if_table_unspecified (line 28) | def test_raises_error_if_table_unspecified(self): method test_raises_error_if_fields_unspecified (line 35) | def test_raises_error_if_fields_unspecified(self): method test_raises_error_if_fields_is_not_a_list (line 42) | def test_raises_error_if_fields_is_not_a_list(self): FILE: corehq/sql_db/tests/utils.py class temporary_database (line 22) | class temporary_database(ContextDecorator): method __init__ (line 25) | def __init__(self, database_name): method __enter__ (line 30) | def __enter__(self): method __exit__ (line 40) | def __exit__(self, exc_type, exc_val, exc_tb): function new_id_in_different_dbalias (line 50) | def new_id_in_different_dbalias(partition_value): class DefaultShardingTestConfigMixIn (line 66) | class DefaultShardingTestConfigMixIn(object): method test_settings (line 73) | def test_settings(self): FILE: corehq/sql_db/util.py function paginate_query_across_partitioned_databases (line 46) | def paginate_query_across_partitioned_databases(model_class, q_expressio... function paginate_query (line 71) | def paginate_query(db_name, model_class, q_expression, annotate=None, qu... function estimate_partitioned_row_count (line 127) | def estimate_partitioned_row_count(model_class, q_expression): function estimate_row_count (line 134) | def estimate_row_count(query, db_name="default"): function split_list_by_db_partition (line 165) | def split_list_by_db_partition(partition_values): function get_db_alias_for_partitioned_doc (line 177) | def get_db_alias_for_partitioned_doc(partition_value): function get_db_aliases_for_partitioned_query (line 186) | def get_db_aliases_for_partitioned_query(): function get_default_db_aliases (line 194) | def get_default_db_aliases(): function get_all_db_aliases (line 198) | def get_all_db_aliases(): function get_default_and_partitioned_db_aliases (line 202) | def get_default_and_partitioned_db_aliases(): function new_id_in_same_dbalias (line 206) | def new_id_in_same_dbalias(partition_value): function handle_connection_failure (line 220) | def handle_connection_failure(get_db_aliases=get_default_db_aliases): function get_all_sharded_models (line 248) | def get_all_sharded_models(): function _get_all_nested_subclasses (line 255) | def _get_all_nested_subclasses(cls): function get_standby_databases (line 269) | def get_standby_databases(): function get_db_version (line 281) | def get_db_version(db_alias): function get_replication_delay_for_standby (line 289) | def get_replication_delay_for_standby(db_alias): function get_replication_delay_for_shard_standbys (line 307) | def get_replication_delay_for_shard_standbys(): function _get_replication_delay_results_from_proxy (line 319) | def _get_replication_delay_results_from_proxy(): function get_acceptible_replication_delays (line 329) | def get_acceptible_replication_delays(): function get_standbys_with_acceptible_delay (line 350) | def get_standbys_with_acceptible_delay(): function get_databases_for_read_query (line 373) | def get_databases_for_read_query(candidate_dbs): function select_db_for_read (line 381) | def select_db_for_read(weighted_dbs): function create_unique_index_name (line 412) | def create_unique_index_name(app, table, fields): FILE: corehq/sql_proxy_accessors/migrations/0001_initial.py function create_update_pl_proxy_config (line 17) | def create_update_pl_proxy_config(): class Migration (line 26) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0002_add_sync_functions.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0003_get_forms_by_user_id_functions.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0004_get_modified_since_functions.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0005_rename_get_case_attachment_by_name.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0006_get_case_by_external_id.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0007_ledger_accessors.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0008_get_case_types_for_domain.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0009_get_transactions_by_type.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0009_soft_delete.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0010_merge.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0011_ledger_transactions.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0012_get_form_ids_in_domain.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0012_ledger_transactions_update.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0013_ledger_values_by_product_ids.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0014_merge.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0015_save_ledger_values_rebuild.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0016_get_case_ids_in_domain_by_owners.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0017_soft_delete_cases.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0018_get_ledger_values_for_cases.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0019_delete_ledgers.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0020_update_get_ledger_values_for_cases.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0021_get_all_ledger_values_modified_since.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0022_audit_fixups.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0023_rename_get_multiple_forms_attachments.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0024_get_case_ids_in_domain.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0025_index_changes.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0026_remove_get_ledger_values_for_product_ids.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0027_add_undelete_functions.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0030_exclude_deleted.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0031_write_blob_bucket.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0032_remove_get_cases_by_domain.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0033_drop_case_modified_since.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0034_livequery_sql.py class Migration (line 13) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0035_livequery_sql.py class Migration (line 14) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0036_remove_save_case.py class Migration (line 13) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0037_remove_get_extension_case_ids.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0038_drop_unused_sql.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0039_filter_get_reverse_indexed_cases.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0040_drop_old_reverse_indexed_fn.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0041_case_attachment_refactor.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0042_case_attachment_drops.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0043_blobmeta.py class Migration (line 13) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0044_blobmeta_form_attachments.py class Migration (line 13) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0045_form_attachments.py class Migration (line 10) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0046_get_ledger_values_for_cases_2.py class Migration (line 4) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0047_remove_get_case_models_functions.py class Migration (line 5) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0048_get_ledger_values_for_cases_3.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0049_drop_unused_function.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0050_remove_deleted_state.py class Migration (line 11) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_accessors/migrations/0051_drop_DELETED_references_fn.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_standby_accessors/migrations/0001_initial.py function create_update_pl_proxy_config (line 17) | def create_update_pl_proxy_config(): class Migration (line 26) | class Migration(migrations.Migration): FILE: corehq/sql_proxy_standby_accessors/sql_templates/get_replication_delay.sql function get_replication_delay (line 3) | CREATE FUNCTION get_replication_delay() RETURNS TABLE (database text, re... FILE: corehq/tabs/exceptions.py class TabClassError (line 1) | class TabClassError(Exception): class UrlPrefixFormatsSuggestion (line 5) | class UrlPrefixFormatsSuggestion(TabClassError): class UrlPrefixFormatError (line 9) | class UrlPrefixFormatError(TabClassError): class TabClassErrorSummary (line 13) | class TabClassErrorSummary(Exception): FILE: corehq/tabs/extension_points.py function uitab_dropdown_items (line 7) | def uitab_dropdown_items(tab_name, tab, domain, request) -> List[dict]: function uitab_sidebar_items (line 29) | def uitab_sidebar_items(tab_name, tab, domain, request) -> List[Tuple[st... function uitab_classes (line 50) | def uitab_classes(): FILE: corehq/tabs/tabclasses.py class ProjectReportsTab (line 113) | class ProjectReportsTab(UITab): method _is_viewable (line 125) | def _is_viewable(self): method sidebar_items (line 136) | def sidebar_items(self): method _get_tools_items (line 149) | def _get_tools_items(self): method _get_tableau_items (line 187) | def _get_tableau_items(self): method _get_campaign_items (line 204) | def _get_campaign_items(self): method _get_report_builder_items (line 220) | def _get_report_builder_items(self): method _get_create_report_url (line 237) | def _get_create_report_url(self): method _filter_sidebar_items (line 245) | def _filter_sidebar_items(sidebar_items): method _get_saved_reports_dropdown (line 260) | def _get_saved_reports_dropdown(self): method dropdown_items (line 286) | def dropdown_items(self): method _get_all_sidebar_items_as_dropdown (line 302) | def _get_all_sidebar_items_as_dropdown(self): class DashboardTab (line 312) | class DashboardTab(UITab): method _is_viewable (line 319) | def _is_viewable(self): method url (line 327) | def url(self): class SetupTab (line 332) | class SetupTab(UITab): method dropdown_items (line 343) | def dropdown_items(self): method _is_viewable (line 375) | def _is_viewable(self): method url (line 381) | def url(self): method sidebar_items (line 386) | def sidebar_items(self): class ProjectDataTab (line 460) | class ProjectDataTab(UITab): method url (line 477) | def url(self): method can_edit_commcare_data (line 486) | def can_edit_commcare_data(self): method can_use_data_cleanup (line 491) | def can_use_data_cleanup(self): method can_use_dedupe (line 496) | def can_use_dedupe(self): method can_export_data (line 501) | def can_export_data(self): method can_view_form_exports (line 507) | def can_view_form_exports(self): method can_view_case_exports (line 513) | def can_view_case_exports(self): method can_view_form_or_case_exports (line 519) | def can_view_form_or_case_exports(self): method can_view_sms_exports (line 524) | def can_view_sms_exports(self): method can_export_data_source (line 529) | def can_export_data_source(self): method should_see_daily_saved_export_list_view (line 538) | def should_see_daily_saved_export_list_view(self): method should_see_daily_saved_export_paywall (line 546) | def should_see_daily_saved_export_paywall(self): method should_see_dashboard_feed_list_view (line 554) | def should_see_dashboard_feed_list_view(self): method should_see_dashboard_feed_paywall (line 562) | def should_see_dashboard_feed_paywall(self): method can_only_see_deid_exports (line 570) | def can_only_see_deid_exports(self): method can_view_odata_feed (line 577) | def can_view_odata_feed(self): method can_use_lookup_tables (line 583) | def can_use_lookup_tables(self): method _can_view_geospatial (line 587) | def _can_view_geospatial(self): method _is_viewable (line 591) | def _is_viewable(self): method sidebar_items (line 599) | def sidebar_items(self): method _can_view_data_dictionary (line 664) | def _can_view_data_dictionary(self): method _get_export_data_views (line 671) | def _get_export_data_views(self): method _get_edit_section (line 945) | def _get_edit_section(self): method _can_view_case_data_cleaning (line 991) | def _can_view_case_data_cleaning(self): method _get_explore_data_views (line 996) | def _get_explore_data_views(self): method _get_geospatial_views (line 1022) | def _get_geospatial_views(self): method _get_kyc_verification_views (line 1039) | def _get_kyc_verification_views(self): method _can_view_kyc_integration (line 1057) | def _can_view_kyc_integration(self): method _can_view_payments_integration (line 1064) | def _can_view_payments_integration(self): method _get_payments_verification_views (line 1070) | def _get_payments_verification_views(self): method dropdown_items (line 1090) | def dropdown_items(self): class ApplicationsTab (line 1144) | class ApplicationsTab(UITab): method title (line 1150) | def title(self): method make_app_title (line 1154) | def make_app_title(cls, app): method dropdown_items (line 1168) | def dropdown_items(self): method sidebar_items (line 1198) | def sidebar_items(self): method _is_viewable (line 1231) | def _is_viewable(self): class CloudcareTab (line 1239) | class CloudcareTab(UITab): method view (line 1246) | def view(self): method _is_viewable (line 1251) | def _is_viewable(self): class MessagingTab (line 1259) | class MessagingTab(UITab): method _is_viewable (line 1272) | def _is_viewable(self): method can_use_outbound_sms (line 1281) | def can_use_outbound_sms(self): method can_use_inbound_sms (line 1286) | def can_use_inbound_sms(self): method can_access_reminders (line 1291) | def can_access_reminders(self): method reminders_urls (line 1296) | def reminders_urls(self): method messages_urls (line 1333) | def messages_urls(self): method supply_urls (line 1384) | def supply_urls(self): method contacts_urls (line 1398) | def contacts_urls(self): method settings_urls (line 1427) | def settings_urls(self): method whatsapp_urls (line 1469) | def whatsapp_urls(self): method connect_urls (line 1498) | def connect_urls(self): method dropdown_items (line 1510) | def dropdown_items(self): method sidebar_items (line 1543) | def sidebar_items(self): class ProjectUsersTab (line 1568) | class ProjectUsersTab(UITab): method _is_viewable (line 1581) | def _is_viewable(self): method has_project_access (line 1599) | def has_project_access(self): method _mobile_workers (line 1602) | def _mobile_workers(self): method _user_fields (line 1647) | def _user_fields(self): method _groups (line 1654) | def _groups(self): method _web_apps_permissions (line 1676) | def _web_apps_permissions(self): method _web_users (line 1684) | def _web_users(self): method _roles_and_permissions (line 1735) | def _roles_and_permissions(self): method _get_locations_menu (line 1759) | def _get_locations_menu(self): method sidebar_items (line 1836) | def sidebar_items(self): class EnterpriseSettingsTab (line 1868) | class EnterpriseSettingsTab(UITab): method sidebar_items (line 1878) | def sidebar_items(self): class TranslationsTab (line 1952) | class TranslationsTab(UITab): method sidebar_items (line 1961) | def sidebar_items(self): class ProjectSettingsTab (line 1971) | class ProjectSettingsTab(UITab): method sidebar_items (line 1987) | def sidebar_items(self): function _get_administration_section (line 2141) | def _get_administration_section(domain): function _get_manage_domain_alerts_section (line 2185) | def _get_manage_domain_alerts_section(domain): function _get_integration_section (line 2197) | def _get_integration_section(domain, couch_user): function _get_feature_flag_items (line 2288) | def _get_feature_flag_items(domain, couch_user): function _get_release_management_items (line 2320) | def _get_release_management_items(user, domain): class MySettingsTab (line 2344) | class MySettingsTab(UITab): method sidebar_items (line 2352) | def sidebar_items(self): class AccountingTab (line 2396) | class AccountingTab(UITab): method _is_viewable (line 2404) | def _is_viewable(self): method sidebar_items (line 2409) | def sidebar_items(self): class SMSAdminTab (line 2467) | class SMSAdminTab(UITab): method sidebar_items (line 2476) | def sidebar_items(self): method _is_viewable (line 2499) | def _is_viewable(self): class AdminTab (line 2503) | class AdminTab(UITab): method dropdown_items (line 2510) | def dropdown_items(self): method sidebar_items (line 2542) | def sidebar_items(self): method _is_viewable (line 2663) | def _is_viewable(self): FILE: corehq/tabs/templatetags/menu_tags.py function _get_active_tab (line 16) | def _get_active_tab(visible_tabs, request_path): function get_all_tabs (line 40) | def get_all_tabs(request, domain, couch_user, project): class MainMenuNode (line 74) | class MainMenuNode(template.Node): method render (line 76) | def render(self, context): function format_main_menu (line 129) | def format_main_menu(parser, token): function format_sidebar (line 134) | def format_sidebar(context): FILE: corehq/tabs/tests/test_tabclasses.py class TestAccessToReleaseManagementTab (line 15) | class TestAccessToReleaseManagementTab(SimpleTestCase): method setUpClass (line 18) | def setUpClass(cls): method setUp (line 22) | def setUp(self): method test_returns_none_if_user_does_not_have_access (line 38) | def test_returns_none_if_user_does_not_have_access(self): method test_returns_erm_if_user_has_full_access (line 46) | def test_returns_erm_if_user_has_full_access(self): method test_returns_mrm_if_user_has_lite_access (line 56) | def test_returns_mrm_if_user_has_lite_access(self): FILE: corehq/tabs/tests/test_uitab.py class TestUITab (line 9) | class TestUITab(SimpleTestCase): method test_header_is_cached_correctly (line 10) | def test_header_is_cached_correctly(self): method test_header_cache_is_successfully_cleared (line 18) | def test_header_cache_is_successfully_cleared(self): method test_cache_accounts_for_bootstrap_5 (line 27) | def test_cache_accounts_for_bootstrap_5(self): method test_ensure_bootstrap5_uses_different_caching_key (line 36) | def test_ensure_bootstrap5_uses_different_caching_key(self): method setUp (line 44) | def setUp(self): method _generate_context (line 62) | def _generate_context(self, method _populate_cache (line 81) | def _populate_cache(self, context): method _clear_dropdown_cache (line 84) | def _clear_dropdown_cache(self, domain=None, user_id=None, role_versio... FILE: corehq/tabs/uitab.py function url_is_location_safe (line 18) | def url_is_location_safe(url): class UITab (line 29) | class UITab(object): method __init__ (line 43) | def __init__(self, request, domain=None, couch_user=None, project=None): method divider (line 73) | def divider(self): method project (line 77) | def project(self): method request_path (line 83) | def request_path(self): method can_access_all_locations (line 87) | def can_access_all_locations(self): method dropdown_items (line 92) | def dropdown_items(self): method filtered_dropdown_items (line 97) | def filtered_dropdown_items(self): method sidebar_items (line 117) | def sidebar_items(self): method filtered_sidebar_items (line 122) | def filtered_sidebar_items(self): method _is_viewable (line 149) | def _is_viewable(self): method should_show (line 161) | def should_show(self): method url (line 185) | def url(self): method url_prefixes (line 198) | def url_prefixes(self): method get_url_prefix_formats_suggestion (line 206) | def get_url_prefix_formats_suggestion(self): method _get_inferred_urls (line 227) | def _get_inferred_urls(self): method create_compound_cache_param (line 235) | def create_compound_cache_param(cls, tab_name, domain, user_id, role_v... method clear_dropdown_cache (line 242) | def clear_dropdown_cache(cls, domain, user): method clear_dropdown_cache_impl (line 254) | def clear_dropdown_cache_impl(cls, domain, user_id, role_version, lang... method clear_dropdown_cache_for_all_domain_users (line 271) | def clear_dropdown_cache_for_all_domain_users(cls, domain): method css_id (line 278) | def css_id(self): method class_name (line 282) | def class_name(cls): FILE: corehq/tabs/utils.py function dropdown_dict (line 8) | def dropdown_dict(title, url=None, html=None, function sidebar_to_dropdown (line 20) | def sidebar_to_dropdown(sidebar_items, domain=None, current_url=None): function submenu_dropdown_dict (line 103) | def submenu_dropdown_dict(title, url, menu): function divider_and_more_menu (line 112) | def divider_and_more_menu(url): function main_menu_dropdown_dict (line 117) | def main_menu_dropdown_dict(title, url=None, html=None, function subpages_as_dropdowns (line 129) | def subpages_as_dropdowns(subpages, level, domain=None): function path_starts_with_url (line 146) | def path_starts_with_url(path, url): FILE: corehq/tests/locks.py function reentrant_redis_locks (line 15) | def reentrant_redis_locks(): function real_redis_client (line 62) | def real_redis_client(): class TestRedisClient (line 76) | class TestRedisClient: method __call__ (line 79) | def __call__(self): method client (line 83) | def client(self): class ReentrantTestLock (line 91) | class ReentrantTestLock: method acquire (line 97) | def acquire(self, **kw): method release (line 111) | def release(self): FILE: corehq/tests/nosecompat.py function create_nose_virtual_package (line 8) | def create_nose_virtual_package(): class VirtualNose (line 12) | class VirtualNose: class tools (line 14) | class tools: method assert_equal (line 18) | def assert_equal(actual, expected): method assert_false (line 21) | def assert_false(value): method assert_true (line 24) | def assert_true(value): method assert_in (line 27) | def assert_in(needle, haystack): method assert_list_equal (line 30) | def assert_list_equal(actual, expected): method assert_is_none (line 33) | def assert_is_none(value): FILE: corehq/tests/pytest_hooks.py function pytest_load_initial_conftests (line 32) | def pytest_load_initial_conftests(): function pytest_pycollect_makeitem (line 48) | def pytest_pycollect_makeitem(collector, name, obj): function pytest_report_teststatus (line 63) | def pytest_report_teststatus(report, config): function _get_wrapped (line 72) | def _get_wrapped(obj): function _dirset (line 78) | def _dirset(path): FILE: corehq/tests/pytest_plugins/dividedwerun.py function pytest_addoption (line 9) | def pytest_addoption(parser): function pytest_configure (line 21) | def pytest_configure(config): function pytest_collection_modifyitems (line 36) | def pytest_collection_modifyitems(config, items): function name_of (line 50) | def name_of(test): function get_setupclass (line 65) | def get_setupclass(cls): function get_score (line 69) | def get_score(test): FILE: corehq/tests/pytest_plugins/patches.py function pytest_sessionstart (line 5) | def pytest_sessionstart(): function patch_unittest_TestCase_doClassCleanup (line 22) | def patch_unittest_TestCase_doClassCleanup(): function patch_django_test_case (line 49) | def patch_django_test_case(): function patch_assertItemsEqual (line 64) | def patch_assertItemsEqual(): FILE: corehq/tests/pytest_plugins/redislocks.py function pytest_sessionstart (line 16) | def pytest_sessionstart(): function pytest_runtest_teardown (line 30) | def pytest_runtest_teardown(): function get_test_lock (line 38) | def get_test_lock(key, **kw): class TestLock (line 47) | class TestLock: method acquire (line 56) | def acquire(self, **kw): method release (line 67) | def release(self): method __enter__ (line 71) | def __enter__(self): method __exit__ (line 74) | def __exit__(self, *exc_info): class TimeoutError (line 78) | class TimeoutError(Exception): FILE: corehq/tests/pytest_plugins/reusedb.py function pytest_addoption (line 65) | def pytest_addoption(parser): function pytest_configure (line 80) | def pytest_configure(config): function pytest_collection_modifyitems (line 95) | def pytest_collection_modifyitems(session, items): function pytest_runtest_teardown (line 121) | def pytest_runtest_teardown(item): function filter_and_sort (line 130) | def filter_and_sort(items, key, session): function reorder (line 147) | def reorder(key): function is_still_sorted (line 166) | def is_still_sorted(items, key): function django_db_setup (line 177) | def django_db_setup(): function _django_setup_unittest (line 192) | def _django_setup_unittest(): class DeferredDatabaseContext (line 208) | class DeferredDatabaseContext: method is_setup (line 211) | def is_setup(self): method setup_databases (line 215) | def setup_databases(self, db_blocker): method teardown_databases (line 245) | def teardown_databases(self): function couch_sql_context (line 251) | def couch_sql_context(config): function sql_databases_ok (line 282) | def sql_databases_ok(): function get_sql_databases (line 292) | def get_sql_databases(*, _cache=[]): function reset_databases (line 307) | def reset_databases(verbosity): function delete_couch_databases (line 323) | def delete_couch_databases(): function delete_elastic_indexes (line 333) | def delete_elastic_indexes(): function clear_redis (line 343) | def clear_redis(): function get_all_couch_dbs (line 354) | def get_all_couch_dbs(): function close_leaked_sql_connections (line 363) | def close_leaked_sql_connections(): function flush_databases (line 369) | def flush_databases(): function bootstrap_migrated_db_state (line 386) | def bootstrap_migrated_db_state(): class HqDbBlocker (line 393) | class HqDbBlocker(DjangoDbBlocker): method __init__ (line 395) | def __init__(self, config, **kw): method _block (line 406) | def _block(self): method _unblock (line 410) | def _unblock(self): method block (line 414) | def block(self): method unblock (line 420) | def unblock(self): method restore (line 428) | def restore(self): function _setup_couch_blocker (line 433) | def _setup_couch_blocker(): class BlockedMock (line 463) | class BlockedMock(Mock): method __getattr__ (line 464) | def __getattr__(self, name): FILE: corehq/tests/pytest_plugins/timelimit.py function pytest_addoption (line 12) | def pytest_addoption(parser): function pytest_configure (line 23) | def pytest_configure(config): class MaxTestTimePlugin (line 29) | class MaxTestTimePlugin: method __init__ (line 31) | def __init__(self): method pytest_runtest_setup (line 35) | def pytest_runtest_setup(self, item): method pytest_runtest_call (line 39) | def pytest_runtest_call(self, item): method pytest_runtest_teardown (line 43) | def pytest_runtest_teardown(self, item): method enforce_limit (line 46) | def enforce_limit(self, item, event): method time (line 56) | def time(self): function get_float (line 62) | def get_float(value, default): function increase_max_test_time (line 69) | def increase_max_test_time(value): function get_max_test_time (line 87) | def get_max_test_time(obj): FILE: corehq/tests/pytest_plugins/util.py function override_fixture (line 4) | def override_fixture(old_fixture): FILE: corehq/tests/test_classcleanup.py class TestClassCleanupPlugin (line 11) | class TestClassCleanupPlugin: method run_suite (line 13) | def run_suite(self, **kwargs): method run_with_errors (line 78) | def run_with_errors(self, *errors, error_class=Exception, **kwargs): method test_cleanup_in_happy_path (line 85) | def test_cleanup_in_happy_path(self): method test_cleanup_on_error_in_set_up_class (line 96) | def test_cleanup_on_error_in_set_up_class(self): method test_cleanup_on_error_in_set_up (line 103) | def test_cleanup_on_error_in_set_up(self): method test_cleanup_on_error_in_test (line 112) | def test_cleanup_on_error_in_test(self): method test_cleanup_on_test_fail (line 123) | def test_cleanup_on_test_fail(self): method test_cleanup_on_error_in_tearDown (line 134) | def test_cleanup_on_error_in_tearDown(self): method test_cleanup_on_error_in_tearDownClass (line 145) | def test_cleanup_on_error_in_tearDownClass(self): method test_cleanup_on_error_in_tearDown_and_tearDownClass (line 156) | def test_cleanup_on_error_in_tearDown_and_tearDownClass(self): method test_error_in_classCleanup (line 167) | def test_error_in_classCleanup(self): function get_source (line 179) | def get_source(func): FILE: corehq/tests/test_dividedwerun.py function test_name_of_function_test (line 10) | def test_name_of_function_test(): function test_name_of_with_setup_module (line 18) | def test_name_of_with_setup_module(): class Test (line 39) | class Test: method test (line 41) | def test(self): class TestSubclass (line 46) | class TestSubclass(TestCase): method test (line 48) | def test(self): class TestSimpleSubclass (line 53) | class TestSimpleSubclass(SimpleTestCase): method test (line 55) | def test(self): class TestCaseClassSetup (line 60) | class TestCaseClassSetup(TestCase): method setUpClass (line 63) | def setUpClass(cls): method test (line 67) | def test(self): method other (line 72) | def other(self): class TestSimpleClassSetup (line 76) | class TestSimpleClassSetup(SimpleTestCase): method setUpClass (line 79) | def setUpClass(cls): method test (line 83) | def test(self): method other (line 88) | def other(self): class TestDbClassSetup (line 92) | class TestDbClassSetup(DatabaseTest): method setUpClass (line 95) | def setUpClass(cls): method tearDownClass (line 100) | def tearDownClass(cls): method test (line 104) | def test(self): method other (line 109) | def other(self): function make_function (line 113) | def make_function(func): FILE: corehq/tests/test_locks.py function test_redislocks_pytest_plugin (line 13) | def test_redislocks_pytest_plugin(): function test_test_lock_token (line 24) | def test_test_lock_token(): function test_nested_reentrant_redis_locks_is_not_allowed (line 33) | def test_nested_reentrant_redis_locks_is_not_allowed(): function test_reentrant_redis_locks (line 40) | def test_reentrant_redis_locks(): function test_reentrant_redis_locks_decorator (line 47) | def test_reentrant_redis_locks_decorator(): function simulate_reentrant_lock (line 51) | def simulate_reentrant_lock(): function test_unreleased_lock (line 61) | def test_unreleased_lock(): function test_decorator_name (line 80) | def test_decorator_name(): FILE: corehq/tests/test_middleware.py class SlowClassView (line 24) | class SlowClassView(View): method get (line 25) | def get(self, request): function slow_function_view (line 31) | def slow_function_view(request): class TestReportDispatcher (line 45) | class TestReportDispatcher(ReportDispatcher): method get_reports (line 51) | def get_reports(cls, domain): class TestNoDomainReportDispatcher (line 58) | class TestNoDomainReportDispatcher(ReportDispatcher): method get_reports (line 64) | def get_reports(cls, domain): class TestCustomReportDispatcher (line 70) | class TestCustomReportDispatcher(TestNoDomainReportDispatcher): method dispatch (line 75) | def dispatch(self, request, *args, **kwargs): method get_report_class_name (line 79) | def get_report_class_name(cls, domain, report_slug): class BaseReport (line 83) | class BaseReport(GenericReportView): method view_response (line 88) | def view_response(self): class SlowReport (line 93) | class SlowReport(BaseReport): method view_response (line 98) | def view_response(self): class FastReport (line 104) | class FastReport(BaseReport): class CustomReport (line 109) | class CustomReport(BaseReport): class NoDomainReport (line 114) | class NoDomainReport(BaseReport): function cookie_view (line 119) | def cookie_view(request): function secure_cookie_view (line 125) | def secure_cookie_view(request): function no_cookie_view (line 131) | def no_cookie_view(request): class TestLogLongRequestMiddleware (line 153) | class TestLogLongRequestMiddleware(SimpleTestCase): method test_middleware_reports_slow_class_view (line 155) | def test_middleware_reports_slow_class_view(self, notify_exception, ad... method test_middleware_reports_slow_function_view_with_timer (line 161) | def test_middleware_reports_slow_function_view_with_timer(self, notify... class TestLogLongRequestMiddlewareReports (line 183) | class TestLogLongRequestMiddlewareReports(TestCase): method setUpClass (line 185) | def setUpClass(cls): method setUp (line 198) | def setUp(self): method test_slow_domain_report (line 201) | def test_slow_domain_report(self, notify_exception): method test_fast_domain_report (line 206) | def test_fast_domain_report(self, notify_exception): method test_no_domain_report (line 211) | def test_no_domain_report(self, notify_exception): method test_custom_report (line 216) | def test_custom_report(self, notify_exception): class TestSecureCookiesMiddleware (line 226) | class TestSecureCookiesMiddleware(SimpleTestCase): method test_secure_if_SECURE_COOKIES_is_true (line 228) | def test_secure_if_SECURE_COOKIES_is_true(self): method test_not_secure_if_SECURE_COOKIES_is_false (line 233) | def test_not_secure_if_SECURE_COOKIES_is_false(self): method test_already_secure_cookie_remains_secure_if_SECURE_COOKIES_is_true (line 238) | def test_already_secure_cookie_remains_secure_if_SECURE_COOKIES_is_tru... method test_already_secure_cookie_remains_secure_if_SECURE_COOKIES_is_false (line 243) | def test_already_secure_cookie_remains_secure_if_SECURE_COOKIES_is_fal... method test_ignores_if_no_cookies_set (line 248) | def test_ignores_if_no_cookies_set(self): class TestSyncUserLanguageMiddleware (line 253) | class TestSyncUserLanguageMiddleware(SimpleTestCase): method setUp (line 255) | def setUp(self): method run_middleware (line 259) | def run_middleware(self): method test_user_language_sets_language_cookie (line 266) | def test_user_language_sets_language_cookie(self): method test_same_language_does_not_set_cookie (line 274) | def test_same_language_does_not_set_cookie(self): method test_no_user_language_does_not_set_cookie (line 282) | def test_no_user_language_does_not_set_cookie(self): method test_no_couch_user_does_not_set_cookie (line 290) | def test_no_couch_user_does_not_set_cookie(self): FILE: corehq/tests/test_pickle.py function test_highest_protocol (line 7) | def test_highest_protocol(): function test_pickle_5 (line 17) | def test_pickle_5(): function test_dump_and_load_all_protocols (line 22) | def test_dump_and_load_all_protocols(protocol): FILE: corehq/tests/test_reusedb.py function test_database_blocker (line 13) | def test_database_blocker(): function test_unblocked_database_blocker (line 27) | def test_unblocked_database_blocker(): FILE: corehq/tests/test_timelimit.py class TimeLimitTestCase (line 10) | class TimeLimitTestCase: method setup_method (line 12) | def setup_method(self): method create_pytester_files (line 28) | def create_pytester_files(self, pytester): class TestDefaultMaxSetupTime (line 32) | class TestDefaultMaxSetupTime(TimeLimitTestCase): method pyfile_code (line 34) | def pyfile_code(self): method test_time_limit (line 54) | def test_time_limit(self): method test_teardownclass_called_if_setupclass_limit_exceeded (line 57) | def test_teardownclass_called_if_setupclass_limit_exceeded(self): method test_setUp_not_called (line 60) | def test_setUp_not_called(self): class TestDefaultMaxTeardownTime (line 64) | class TestDefaultMaxTeardownTime(TimeLimitTestCase): method pyfile_code (line 66) | def pyfile_code(self): method test_time_limit (line 79) | def test_time_limit(self): class TestDefaultMaxTestTime (line 83) | class TestDefaultMaxTestTime(TimeLimitTestCase): method pyfile_code (line 85) | def pyfile_code(self): method test_time_limit (line 93) | def test_time_limit(self): class TestSetupExceedsMaxTestTimeLimit (line 97) | class TestSetupExceedsMaxTestTimeLimit(TimeLimitTestCase): method pyfile_code (line 99) | def pyfile_code(self): method test_time_limit (line 112) | def test_time_limit(self): class TestTeardownExceedsMaxTestTimeLimit (line 116) | class TestTeardownExceedsMaxTestTimeLimit(TimeLimitTestCase): method pyfile_code (line 118) | def pyfile_code(self): method test_time_limit (line 135) | def test_time_limit(self): class TestTimeLimitReset (line 139) | class TestTimeLimitReset(TimeLimitTestCase): method pyfile_code (line 141) | def pyfile_code(self): method test_time_limit1 (line 154) | def test_time_limit1(self): method test_time_limit2 (line 157) | def test_time_limit2(self): class TestOverrideTimeLimit (line 161) | class TestOverrideTimeLimit(TimeLimitTestCase): method pyfile_code (line 163) | def pyfile_code(self): method test_time_limit (line 173) | def test_time_limit(self): class TestNestedTimeLimits (line 177) | class TestNestedTimeLimits(TimeLimitTestCase): method pyfile_code (line 179) | def pyfile_code(self): method test_time_limit (line 192) | def test_time_limit(self): function get_source (line 196) | def get_source(method): FILE: corehq/tests/test_toggles.py function test_toggle_properties (line 5) | def test_toggle_properties(): FILE: corehq/tests/tools.py function nottest (line 2) | def nottest(fn): FILE: corehq/tests/util/artifact.py function artifact (line 11) | def artifact(filename, stream, mode="b", sub_name=None): FILE: corehq/tests/util/context.py function add_context (line 8) | def add_context(context_manager, testcase): function testcontextmanager (line 26) | def testcontextmanager(func=None, /, before_class=False): function decorate_test_class (line 78) | def decorate_test_class(context, class_, before_class=False): FILE: corehq/tests/util/htmx.py class HtmxViewTestCase (line 7) | class HtmxViewTestCase(TestCase): method get_url (line 11) | def get_url(self): method setUpTestData (line 15) | def setUpTestData(cls): method hx_action (line 23) | def hx_action(self, action, data): FILE: corehq/tests/util/tests/test_context.py function test_multi_use_testcontextmanager (line 6) | def test_multi_use_testcontextmanager(): function test_nested_testcontextmanager (line 22) | def test_nested_testcontextmanager(): function make_context (line 38) | def make_context(): FILE: corehq/tests/util/tests/test_timelimit.py function test_timelimit_pass (line 9) | def test_timelimit_pass(): function test_timelimit_fail (line 16) | def test_timelimit_fail(): function test_timelimit_default (line 24) | def test_timelimit_default(): function test_nested_timelimits (line 31) | def test_nested_timelimits(): function test_nested_timelimit_failure (line 44) | def test_nested_timelimit_failure(): function test_nested_timelimits_with_error (line 57) | def test_nested_timelimits_with_error(): function test_cannot_limit_generator (line 74) | def test_cannot_limit_generator(): FILE: corehq/tests/util/tests/test_warnings.py function verify_same_filters_before_and_after (line 13) | def verify_same_filters_before_and_after(test): function test_repr (line 32) | def test_repr(): function test_context_manager (line 40) | def test_context_manager(): function test_reentrant_context_manager (line 47) | def test_reentrant_context_manager(): function test_context_manager_with_ignored_warning (line 58) | def test_context_manager_with_ignored_warning(): function test_context_manager_with_unexpected_warning (line 65) | def test_context_manager_with_unexpected_warning(): function test_function_decorator (line 73) | def test_function_decorator(): function test_function_decorator_with_unexpected_warning (line 84) | def test_function_decorator_with_unexpected_warning(): function test_class_decorator (line 93) | def test_class_decorator(): function test_class_decorator_should_not_catch_unfiltered_setup_warning (line 118) | def test_class_decorator_should_not_catch_unfiltered_setup_warning(): function test_class_decorator_should_not_catch_unfiltered_test_warning (line 143) | def test_class_decorator_should_not_catch_unfiltered_test_warning(): function test_class_decorator_should_not_catch_unfiltered_teardown_warning (line 168) | def test_class_decorator_should_not_catch_unfiltered_teardown_warning(): FILE: corehq/tests/util/timelimit.py function timelimit (line 8) | def timelimit(limit): FILE: corehq/tests/util/warnings.py class filter_warnings (line 9) | class filter_warnings: method __init__ (line 39) | def __init__(self, action, message="", category=Warning, module="", li... method __repr__ (line 42) | def __repr__(self): method __call__ (line 45) | def __call__(self, func=None): method __enter__ (line 53) | def __enter__(self): method __exit__ (line 62) | def __exit__(self, *exc_info): FILE: corehq/tests/util/xml.py function assert_xml_equal (line 8) | def assert_xml_equal(expected, actual, normalize=True): function assert_xml_partial_equal (line 15) | def assert_xml_partial_equal(expected, actual, xpath): function assert_html_equal (line 26) | def assert_html_equal(expected, actual, normalize=True): function parse_normalize (line 33) | def parse_normalize(xml, to_string=True, is_html=False): function normalize_attributes (line 46) | def normalize_attributes(xml): function _check_shared (line 56) | def _check_shared(expected, actual, checker, extension): function extract_xml_partial (line 78) | def extract_xml_partial(xml, xpath, wrap=True): FILE: corehq/toggles/__init__.py class Tag (line 27) | class Tag: method index (line 34) | def index(self): class StaticToggle (line 87) | class StaticToggle(object): method __init__ (line 89) | def __init__( method enabled (line 142) | def enabled(self, item, namespace=Ellipsis): method enabled_for_request (line 173) | def enabled_for_request(self, request): method set (line 191) | def set(self, item, enabled, namespace=None): method required_decorator (line 201) | def required_decorator(self, plain_message=None): method get_enabled_domains (line 235) | def get_enabled_domains(self): method get_enabled_users (line 247) | def get_enabled_users(self): function was_domain_created_after (line 256) | def was_domain_created_after(domain, checkpoint): function was_user_created_after (line 272) | def was_user_created_after(username, checkpoint): class FrozenPrivilegeToggle (line 288) | class FrozenPrivilegeToggle(StaticToggle): method __init__ (line 320) | def __init__(self, privilege_slug, *args, **kwargs): class PredictablyRandomToggle (line 325) | class PredictablyRandomToggle(StaticToggle): method __init__ (line 334) | def __init__( method randomness_percent (line 357) | def randomness_percent(self): method _get_identifier (line 360) | def _get_identifier(self, item): method enabled (line 363) | def enabled(self, item, namespace=Ellipsis): function deterministic_random (line 400) | def deterministic_random(input_string): class DynamicallyPredictablyRandomToggle (line 410) | class DynamicallyPredictablyRandomToggle(PredictablyRandomToggle): method __init__ (line 416) | def __init__( method randomness (line 440) | def randomness(self): class FeatureRelease (line 454) | class FeatureRelease(DynamicallyPredictablyRandomToggle): method __init__ (line 463) | def __init__( function any_toggle_enabled (line 498) | def any_toggle_enabled(*toggles): function custom_toggle_modules (line 523) | def custom_toggle_modules() -> List[str]: function all_toggles (line 534) | def all_toggles(): function all_toggle_slugs (line 541) | def all_toggle_slugs(): function all_toggles_by_name (line 549) | def all_toggles_by_name(): function all_toggles_by_name_in_scope (line 559) | def all_toggles_by_name_in_scope(scope_dict, toggle_class=StaticToggle): function toggles_dict (line 574) | def toggles_dict(username=None, domain=None): function toggle_values_by_name (line 589) | def toggle_values_by_name(username, domain): function toggles_enabled_for_domain (line 602) | def toggles_enabled_for_domain(domain): function toggles_enabled_for_user (line 612) | def toggles_enabled_for_user(username): function toggles_enabled_for_email_domain (line 622) | def toggles_enabled_for_email_domain(email): function toggles_enabled_for_request (line 631) | def toggles_enabled_for_request(request): function _ensure_valid_namespaces (line 645) | def _ensure_valid_namespaces(namespaces): function _ensure_valid_randomness (line 650) | def _ensure_valid_randomness(randomness): function _ensure_search_index_is_enabled (line 1094) | def _ensure_search_index_is_enabled(domain, enabled): function _commtrackify (line 1268) | def _commtrackify(domain_name, toggle_is_enabled): function _handle_geospatial_es_index (line 2215) | def _handle_geospatial_es_index(domain, is_enabled): function frozen_toggles_by_privilege (line 2317) | def frozen_toggles_by_privilege(): function domain_has_privilege_from_toggle (line 2324) | def domain_has_privilege_from_toggle(privilege_slug, domain): FILE: corehq/toggles/apps.py class TogglesAppConfig (line 4) | class TogglesAppConfig(AppConfig): method ready (line 7) | def ready(self): FILE: corehq/toggles/management/commands/list_ff_domains.py class Command (line 10) | class Command(BaseCommand): method add_arguments (line 16) | def add_arguments(self, parser): method handle (line 19) | def handle(self, feature_flag, *args, **options): function toggle_exists (line 32) | def toggle_exists(toggle_slug): function get_enabled_domains (line 40) | def get_enabled_domains(toggle_slug): function get_domain_subscription (line 45) | def get_domain_subscription(domain): FILE: corehq/toggles/migrations/0001_toggle_edit_permission.py class Migration (line 7) | class Migration(migrations.Migration): FILE: corehq/toggles/migrations/0002_assign_permissions_superusers.py function _assign_all_toggle_edit_permissions_to_superusers (line 27) | def _assign_all_toggle_edit_permissions_to_superusers(apps, schema_editor): function _reverse (line 36) | def _reverse(apps, schema_editor): class Migration (line 44) | class Migration(migrations.Migration): FILE: corehq/toggles/migrations/0003_delete_web_usercase_toggle.py function _remove_feature_flag (line 11) | def _remove_feature_flag(*args, **kwargs): class Migration (line 21) | class Migration(migrations.Migration): FILE: corehq/toggles/migrations/0004_alter_toggleeditpermission_tag_slug.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/toggles/migrations/0005_alter_toggleeditpermission_tag_slug.py class Migration (line 6) | class Migration(migrations.Migration): FILE: corehq/toggles/migrations/0006_alter_toggleeditpermission_tag_slug.py function _sync_toggle_edit_permissions (line 13) | def _sync_toggle_edit_permissions(apps, schema_editor): class Migration (line 30) | class Migration(migrations.Migration): FILE: corehq/toggles/models.py class ToggleStatus (line 15) | class ToggleStatus(StrEnum): class Toggle (line 21) | class Toggle(Document): class Meta (line 31) | class Meta(object): method save (line 34) | def save(self, **params): method cached_get (line 43) | def cached_get(cls, docid): method get (line 50) | def get(cls, docid): method get_or_create (line 56) | def get_or_create(cls, docid, **kwargs): method add (line 62) | def add(self, item): method remove (line 70) | def remove(self, item): method delete (line 78) | def delete(self): method bust_cache (line 82) | def bust_cache(self): function generate_toggle_id (line 86) | def generate_toggle_id(slug): FILE: corehq/toggles/shortcuts.py function toggle_enabled (line 7) | def toggle_enabled(slug, item, namespace=None): function set_toggle (line 27) | def set_toggle(slug, item, enabled, namespace=None): function set_toggles (line 34) | def set_toggles(slugs, item, enabled, namespace=None): function _set_toggle_without_clear_cache (line 44) | def _set_toggle_without_clear_cache(slug, item, enabled, namespace=None): function namespaced_item (line 70) | def namespaced_item(item, namespace): function parse_toggle (line 76) | def parse_toggle(entry): function find_users_with_toggle_enabled (line 88) | def find_users_with_toggle_enabled(toggle): function find_domains_with_toggle_enabled (line 99) | def find_domains_with_toggle_enabled(toggle): function get_editable_toggle_tags_for_user (line 109) | def get_editable_toggle_tags_for_user(username): function can_user_edit_tag (line 121) | def can_user_edit_tag(username, tag): FILE: corehq/toggles/sql_models.py class ToggleEditPermissionManager (line 9) | class ToggleEditPermissionManager(models.Manager): method get_by_tag_slug (line 12) | def get_by_tag_slug(self, tag_slug): class ToggleEditPermission (line 19) | class ToggleEditPermission(models.Model): method save (line 29) | def save(self, *args, **kwargs): method add_users (line 34) | def add_users(self, usernames): method remove_users (line 41) | def remove_users(self, usernames): method is_user_enabled (line 49) | def is_user_enabled(self, username): FILE: corehq/toggles/tests.py class ToggleTestCase (line 35) | class ToggleTestCase(TestCase): method setUp (line 36) | def setUp(self): method tearDown (line 40) | def tearDown(self): method test_generate_id (line 49) | def test_generate_id(self): method test_save_and_get_id (line 52) | def test_save_and_get_id(self): method test_no_overwrite (line 62) | def test_no_overwrite(self): method test_toggle_enabled (line 72) | def test_toggle_enabled(self): method test_add_remove (line 81) | def test_add_remove(self): method test_set_toggle (line 110) | def test_set_toggle(self): class PredictablyRandomToggleSimpleTests (line 128) | class PredictablyRandomToggleSimpleTests(SimpleTestCase): method test_deterministic (line 130) | def test_deterministic(self): method test_all_namespaces_none_given (line 136) | def test_all_namespaces_none_given(self): method test_user_namespace_invalid (line 146) | def test_user_namespace_invalid(self): method test_domain_namespace_invalid (line 157) | def test_domain_namespace_invalid(self): method test_user_namespace_enabled (line 168) | def test_user_namespace_enabled(self): method test_domain_namespace_enabled (line 178) | def test_domain_namespace_enabled(self): class PredictablyRandomToggleTests (line 189) | class PredictablyRandomToggleTests(TestCase): method setUpClass (line 192) | def setUpClass(cls): method tearDownClass (line 205) | def tearDownClass(cls): method test_user_namespace_disabled (line 211) | def test_user_namespace_disabled(self): method test_domain_namespace_disabled (line 235) | def test_domain_namespace_disabled(self): class DynamicPredictablyRandomToggleTests (line 259) | class DynamicPredictablyRandomToggleTests(TestCase): method test_default_randomness_no_doc (line 261) | def test_default_randomness_no_doc(self): method test_default_randomness_doc_but_no_value (line 272) | def test_default_randomness_doc_but_no_value(self): method test_override_default_randomness_decimal (line 286) | def test_override_default_randomness_decimal(self): method test_override_default_randomness_float (line 289) | def test_override_default_randomness_float(self): method test_override_default_randomness_string (line 292) | def test_override_default_randomness_string(self): method test_override_default_randomness_invalid (line 295) | def test_override_default_randomness_invalid(self): method _run_toggle_overrride_test (line 300) | def _run_toggle_overrride_test(self, input_override, expected_override... class ShortcutTests (line 316) | class ShortcutTests(TestCase): method setUpClass (line 318) | def setUpClass(cls): method tearDownClass (line 332) | def tearDownClass(cls): method test_find_users_with_toggle_enabled (line 337) | def test_find_users_with_toggle_enabled(self): method test_find_domains_with_toggle_enabled (line 347) | def test_find_domains_with_toggle_enabled(self): class NamespaceTests (line 358) | class NamespaceTests(TestCase): method setUpClass (line 361) | def setUpClass(cls): method tearDownClass (line 383) | def tearDownClass(cls): method test_email_domain_namespace (line 389) | def test_email_domain_namespace(self): method test_domain_namespace (line 402) | def test_domain_namespace(self): method test_user_namespace (line 415) | def test_user_namespace(self): class TestToggleEditPermissionShortcuts (line 429) | class TestToggleEditPermissionShortcuts(TestCase): method setUpClass (line 432) | def setUpClass(cls): method test_get_tags_with_edit_permission (line 441) | def test_get_tags_with_edit_permission(self): FILE: corehq/util/__init__.py function flatten_list (line 10) | def flatten_list(elements): function flatten_non_iterable_list (line 14) | def flatten_non_iterable_list(elements): function eval_lazy (line 26) | def eval_lazy(value): function cmp (line 32) | def cmp(a, b): function as_text (line 40) | def as_text(value): function as_json_text (line 52) | def as_json_text(value): FILE: corehq/util/argparse_types.py function utc_timestamp (line 5) | def utc_timestamp(value): function date_type (line 15) | def date_type(value): function validate_range (line 36) | def validate_range(gt=None, lt=None): FILE: corehq/util/auth.py class SHA1PasswordHasher (line 12) | class SHA1PasswordHasher(BasePasswordHasher): method encode (line 23) | def encode(self, password, salt): method decode (line 28) | def decode(self, encoded): method verify (line 37) | def verify(self, password, encoded): method safe_summary (line 42) | def safe_summary(self, encoded): method must_update (line 50) | def must_update(self, encoded): method harden_runtime (line 54) | def harden_runtime(self, password, encoded): FILE: corehq/util/bitly.py class BitlyError (line 7) | class BitlyError(Exception): method __init__ (line 9) | def __init__(self, status_code, status_txt): method __str__ (line 13) | def __str__(self): function shorten (line 17) | def shorten(url): FILE: corehq/util/bounced_email_manager.py class BouncedEmailManager (line 43) | class BouncedEmailManager(object): method __init__ (line 45) | def __init__(self, delete_processed_messages=True): method __enter__ (line 48) | def __enter__(self): method __exit__ (line 56) | def __exit__(self, exc_type, exc_val, exc_tb): method _get_messages (line 60) | def _get_messages(self, header_search): method _get_message_body (line 74) | def _get_message_body(message): method _get_message_json (line 85) | def _get_message_json(self, message): method _get_aws_info (line 89) | def _get_aws_info(self, message, uid): method _delete_message_with_uid (line 135) | def _delete_message_with_uid(self, uid): method _label_problem_email (line 139) | def _label_problem_email(self, uid, extra_labels=()): method _record_permanent_bounce (line 145) | def _record_permanent_bounce(self, aws_meta, uid): method _record_transient_bounce (line 151) | def _record_transient_bounce(self, aws_meta, uid): method _handle_undetermined_bounce (line 157) | def _handle_undetermined_bounce(self, aws_meta, uid): method _record_complaint (line 165) | def _record_complaint(self, aws_meta, uid): method process_aws_notifications (line 171) | def process_aws_notifications(self): method _get_raw_bounce_recipients (line 210) | def _get_raw_bounce_recipients(message): method _handle_raw_transient_bounces (line 248) | def _handle_raw_transient_bounces(self, uid): method _handle_raw_bounced_recipients (line 256) | def _handle_raw_bounced_recipients(self, recipients, uid): method _process_raw_messages (line 303) | def _process_raw_messages(self, sender): method process_daemon_messages (line 333) | def process_daemon_messages(self): method logout (line 337) | def logout(self): FILE: corehq/util/bounced_email_utils.py function _get_blocked_emails (line 15) | def _get_blocked_emails(emails): function _get_badly_formatted_emails (line 19) | def _get_badly_formatted_emails(emails): function _get_bounced_emails (line 23) | def _get_bounced_emails(emails): function _get_permanently_bounced_emails (line 36) | def _get_permanently_bounced_emails(bounced_emails): function _get_complaint_bounced_emails (line 54) | def _get_complaint_bounced_emails(emails): function _get_legacy_bounced_emails (line 63) | def _get_legacy_bounced_emails(emails): function _get_emails_over_limit (line 73) | def _get_emails_over_limit(bounced_emails): function get_email_statuses (line 77) | def get_email_statuses(emails): FILE: corehq/util/cache_utils.py class ExponentialCache (line 5) | class ExponentialCache(object): method _get_cache_key (line 12) | def _get_cache_key(cls, key): method increment (line 19) | def increment(cls, key): method delete_key (line 28) | def delete_key(cls, key): class ExponentialBackoff (line 35) | class ExponentialBackoff(ExponentialCache): method should_backoff (line 42) | def should_backoff(cls, key): method _number_is_power_of_two (line 47) | def _number_is_power_of_two(cls, x): class ExponentialGrowth (line 53) | class ExponentialGrowth(ExponentialCache): method exponential (line 55) | def exponential(cls, key, base): function is_rate_limited (line 60) | def is_rate_limited(rate_limit_key): function get_exponential (line 65) | def get_exponential(rate_limit_key, exponential_base=2): function clear_limit (line 70) | def clear_limit(rate_limit_key): FILE: corehq/util/celery_utils.py function no_result_task (line 11) | def no_result_task(*args, **kwargs): class TaskInfo (line 34) | class TaskInfo(object): method __init__ (line 36) | def __init__(self, _id, name, time_start=None): class InvalidTaskTypeError (line 45) | class InvalidTaskTypeError(Exception): function get_active_task_info (line 49) | def get_active_task_info(tasks): function get_reserved_task_info (line 56) | def get_reserved_task_info(tasks): function get_scheduled_task_info (line 63) | def get_scheduled_task_info(tasks): function _validate_task_state (line 71) | def _validate_task_state(task_state, allow_active=True, allow_scheduled=... function _get_task_info_fcn (line 91) | def _get_task_info_fcn(task_state): function revoke_tasks (line 99) | def revoke_tasks(task_names, interval=5): function print_tasks (line 137) | def print_tasks(worker, task_state): function get_running_workers (line 177) | def get_running_workers(timeout=10): function deserialize_run_every_setting (line 189) | def deserialize_run_every_setting(run_every_setting): function run_periodic_task_again (line 210) | def run_periodic_task_again(run_every, last_run_start: datetime, last_du... FILE: corehq/util/compression.py function decompress (line 5) | def decompress(compressed): FILE: corehq/util/context_managers.py function drop_connected_signals (line 11) | def drop_connected_signals(signal): function notify_someone (line 28) | def notify_someone(email, success_message, error_message='Sorry, your HQ... function catch_signal (line 41) | def catch_signal(signal): function prevent_parallel_execution (line 51) | def prevent_parallel_execution(cache_key, timeout=DEFAULT_PARALLEL_EXECU... FILE: corehq/util/context_processors.py function base_template (line 20) | def base_template(request): function get_per_domain_context (line 34) | def get_per_domain_context(project, request=None): function domain (line 60) | def domain(request): function domain_billing_context (line 66) | def domain_billing_context(request): function current_url_name (line 86) | def current_url_name(request): function js_api_keys (line 102) | def js_api_keys(request): function js_toggles (line 128) | def js_toggles(request): function js_privileges (line 147) | def js_privileges(request): function enterprise_mode (line 163) | def enterprise_mode(request): function ai_chat_widget (line 171) | def ai_chat_widget(request): function commcare_hq_names (line 178) | def commcare_hq_names(request=None): function server_location_display (line 187) | def server_location_display(request): function emails (line 202) | def emails(request=None): function _get_cc_name (line 217) | def _get_cc_name(request, var): function subscription_banners (line 239) | def subscription_banners(request): function get_demo (line 266) | def get_demo(request): function status_page (line 277) | def status_page(request): function sentry (line 283) | def sentry(request): function bootstrap5 (line 293) | def bootstrap5(request): FILE: corehq/util/couch.py class DocumentNotFound (line 18) | class DocumentNotFound(Exception): function get_document_or_not_found_lite (line 22) | def get_document_or_not_found_lite(cls, doc_id): function _get_document_or_not_found_lite (line 29) | def _get_document_or_not_found_lite(cls, doc_id): function get_document_or_not_found (line 42) | def get_document_or_not_found(cls, domain, doc_id, additional_doc_types=... function get_document_or_404 (line 62) | def get_document_or_404(cls, domain, doc_id, additional_doc_types=None): function get_classes_by_doc_type (line 75) | def get_classes_by_doc_type(): function get_document_class_by_doc_type (line 93) | def get_document_class_by_doc_type(doc_type): function get_db_by_doc_type (line 107) | def get_db_by_doc_type(doc_type): function categorize_bulk_save_errors (line 117) | def categorize_bulk_save_errors(error): class IterDBCallback (line 126) | class IterDBCallback(object): method post_commit (line 128) | def post_commit(self, operation, committed_docs, success_ids, errors): class IterDB (line 138) | class IterDB(object): method __init__ (line 152) | def __init__(self, database, chunksize=100, throttle_secs=None, method __enter__ (line 164) | def __enter__(self): method _write (line 169) | def _write(self, op_slug, cmd, docs): method _commit_save (line 198) | def _commit_save(self): method _commit_delete (line 204) | def _commit_delete(self): method save (line 209) | def save(self, doc): method delete (line 214) | def delete(self, doc): method commit (line 219) | def commit(self): method __exit__ (line 225) | def __exit__(self, exc_type, exc_val, exc_tb): class IterUpdateError (line 229) | class IterUpdateError(Exception): method __init__ (line 231) | def __init__(self, results, *args, **kwargs): class DocUpdate (line 236) | class DocUpdate(object): method __init__ (line 238) | def __init__(self, doc, delete=False): function _is_unchanged (line 243) | def _is_unchanged(doc_or_Document, doc): function send_keys_to_couch (line 251) | def send_keys_to_couch(db, keys): function iter_update (line 264) | def iter_update(db, fn, ids, max_retries=3, verbose=False, chunksize=100): function stale_ok (line 356) | def stale_ok(): function bulk_get_revs (line 360) | def bulk_get_revs(target_db, doc_ids): function get_revisions_info (line 369) | def get_revisions_info(db, doc_id): function get_old_rev (line 382) | def get_old_rev(db, doc_id, rev): function iter_old_doc_versions (line 389) | def iter_old_doc_versions(db, doc_id): FILE: corehq/util/couch_helpers.py class CouchAttachmentsBuilder (line 8) | class CouchAttachmentsBuilder(object): method __init__ (line 51) | def __init__(self, original=None): method couch_style_digest (line 55) | def couch_style_digest(data): method no_change (line 58) | def no_change(self, name, data): method add (line 64) | def add(self, content, name=None, content_type=None): method remove (line 90) | def remove(self, name): method to_json (line 96) | def to_json(self): class NoSkipArgsProvider (line 100) | class NoSkipArgsProvider(ArgsProvider): method __init__ (line 114) | def __init__(self, initial_kwargs): method get_initial_args (line 121) | def get_initial_args(self): method adjust_results (line 124) | def adjust_results(self, results, args, kwargs): method get_next_args (line 132) | def get_next_args(self, result, *last_args, **last_kwargs): class PaginatedViewArgsProvider (line 141) | class PaginatedViewArgsProvider(ArgsProvider): method __init__ (line 142) | def __init__(self, initial_view_kwargs): method get_initial_args (line 145) | def get_initial_args(self): method get_next_args (line 148) | def get_next_args(self, result, *last_args, **last_view_kwargs): class MultiKeyViewArgsProvider (line 158) | class MultiKeyViewArgsProvider(PaginatedViewArgsProvider): method __init__ (line 163) | def __init__(self, keys, include_docs=False, chunk_size=1000): method get_next_args (line 178) | def get_next_args(self, result, *last_args, **last_view_kwargs): method _get_key_kwargs (line 200) | def _get_key_kwargs(self, key): class MultiKwargViewArgsProvider (line 213) | class MultiKwargViewArgsProvider(PaginatedViewArgsProvider): method __init__ (line 217) | def __init__(self, keys: dict, include_docs=False, chunk_size=1000): method get_next_args (line 232) | def get_next_args(self, result, *last_args, **last_view_kwargs): function paginate_view (line 257) | def paginate_view(db, view_name, chunk_size, event_handler=PaginationEve... FILE: corehq/util/couchdb_management.py class CouchConfig (line 8) | class CouchConfig(object): method __init__ (line 17) | def __init__(self, config=None): method db_uri (line 26) | def db_uri(self): method all_db_uris_by_slug (line 31) | def all_db_uris_by_slug(self): method all_dbs_by_slug (line 38) | def all_dbs_by_slug(self): method all_dbs_by_db_name (line 44) | def all_dbs_by_db_name(self): method get_db (line 48) | def get_db(self, postfix): method app_label_to_db_uri (line 56) | def app_label_to_db_uri(self): method get_db_uri_for_app_label (line 59) | def get_db_uri_for_app_label(self, app_label): method get_db_uri_for_class (line 62) | def get_db_uri_for_class(self, klass): method get_db_uri_for_doc_type (line 65) | def get_db_uri_for_doc_type(self, doc_type): method get_db_for_class (line 68) | def get_db_for_class(self, klass): method get_db_for_doc_type (line 71) | def get_db_for_doc_type(self, doc_type): method get_db_for_db_name (line 74) | def get_db_for_db_name(self, db_name): FILE: corehq/util/dates.py function unix_time (line 9) | def unix_time(dt): function unix_time_in_micros (line 15) | def unix_time_in_micros(dt): function get_timestamp (line 19) | def get_timestamp(date): function iso_string_to_datetime (line 23) | def iso_string_to_datetime(iso_string, strict=False): function iso_string_to_date (line 51) | def iso_string_to_date(iso_string): function get_timestamp_for_filename (line 63) | def get_timestamp_for_filename(): function get_first_last_days (line 67) | def get_first_last_days(year, month): function get_current_month_date_range (line 74) | def get_current_month_date_range(reference_date=None): function get_previous_month_date_range (line 80) | def get_previous_month_date_range(reference_date=None): function get_quarter_date_range (line 87) | def get_quarter_date_range(year, quarter): function get_quarter_for_date (line 98) | def get_quarter_for_date(date): function get_current_quarter_date_range (line 103) | def get_current_quarter_date_range(): function get_previous_quarter_date_range (line 107) | def get_previous_quarter_date_range(): function coerce_to_datetime (line 115) | def coerce_to_datetime(v): FILE: corehq/util/debug.py function print_return_value (line 4) | def print_return_value(fn): FILE: corehq/util/decorators.py function handle_uncaught_exceptions (line 12) | def handle_uncaught_exceptions(mail_admins=True): function silence_and_report_error (line 33) | def silence_and_report_error(message, metric_name): function run_only_when (line 51) | def run_only_when(condition): class change_log_level (line 65) | class change_log_level(ContextDecorator): method __init__ (line 71) | def __init__(self, logger, level): method __enter__ (line 76) | def __enter__(self): method __exit__ (line 79) | def __exit__(self, exc_type, exc_val, exc_tb): function ignore_warning (line 84) | def ignore_warning(warning_class): class require_debug_true (line 90) | class require_debug_true(ContextDecorator): method __enter__ (line 92) | def __enter__(self): method __exit__ (line 96) | def __exit__(self, exc_type, exc_val, exc_tb): function hqnottest (line 100) | def hqnottest(func): FILE: corehq/util/django_migrations.py function add_if_not_exists (line 17) | def add_if_not_exists(string): function add_if_not_exists_raw (line 39) | def add_if_not_exists_raw(string, name): function execute_sql_if_exists_raw (line 61) | def execute_sql_if_exists_raw(string, name): class DatabaseSchemaEditorIfNotExists (line 72) | class DatabaseSchemaEditorIfNotExists(DatabaseSchemaEditor): class AlterIndexIfNotExists (line 83) | class AlterIndexIfNotExists(migrations.AlterIndexTogether): method database_forwards (line 85) | def database_forwards(self, app_label, schema_editor, from_state, to_s... class AlterFieldCreateIndexIfNotExists (line 94) | class AlterFieldCreateIndexIfNotExists(migrations.AlterField): method database_forwards (line 96) | def database_forwards(self, app_label, schema_editor, from_state, to_s... class AlterUniqueTogetherIfNotExists (line 105) | class AlterUniqueTogetherIfNotExists(migrations.AlterUniqueTogether): method database_forwards (line 106) | def database_forwards(self, app_label, schema_editor, from_state, to_s... function skip_on_fresh_install (line 115) | def skip_on_fresh_install(migration_fn): function noop_migration (line 125) | def noop_migration(): function prompt_for_historical_migration (line 133) | def prompt_for_historical_migration(app_name, migration_name, required_c... function get_migration_name (line 183) | def get_migration_name(file_path): function patch_migration_autodetector (line 188) | def patch_migration_autodetector(makemigrations_command): function _patch (line 243) | def _patch(obj, attribute, value): FILE: corehq/util/doc_processor/couch.py class DocsIterator (line 11) | class DocsIterator: method __init__ (line 18) | def __init__(self, couch_class, chunk_size=100): method __len__ (line 24) | def __len__(self): method __iter__ (line 29) | def __iter__(self): function resumable_view_iterator (line 47) | def resumable_view_iterator(db, iteration_key, view_name, view_keys, function resumable_docs_by_type_iterator (line 85) | def resumable_docs_by_type_iterator(db, doc_types, iteration_key, chunk_... class CouchProcessorProgressLogger (line 117) | class CouchProcessorProgressLogger(ProcessorProgressLogger): method __init__ (line 121) | def __init__(self, doc_types): method progress_starting (line 125) | def progress_starting(self, total, previously_visited): class CouchDocumentProvider (line 133) | class CouchDocumentProvider(DocumentProvider): method __init__ (line 146) | def __init__(self, iteration_key, doc_type_tuples, domain=None): method get_document_iterator (line 169) | def get_document_iterator(self, chunk_size, event_handler=None): method get_total_document_count (line 176) | def get_total_document_count(self): class CouchViewDocumentProvider (line 190) | class CouchViewDocumentProvider(DocumentProvider): method __init__ (line 191) | def __init__(self, couchdb, iteration_key, view_name, view_keys): method get_document_iterator (line 197) | def get_document_iterator(self, chunk_size, event_handler=None): method get_total_document_count (line 203) | def get_total_document_count(self): function doc_type_tuples_to_dict (line 207) | def doc_type_tuples_to_dict(doc_types): function doc_type_tuples_to_list (line 213) | def doc_type_tuples_to_list(doc_types): FILE: corehq/util/doc_processor/interface.py class BulkProcessingFailed (line 9) | class BulkProcessingFailed(Exception): class BaseDocProcessor (line 13) | class BaseDocProcessor(metaclass=ABCMeta): method __enter__ (line 16) | def __enter__(self): method __exit__ (line 19) | def __exit__(self, exc_type, exc_val, exc_tb): method process_doc (line 22) | def process_doc(self, doc): method process_bulk_docs (line 31) | def process_bulk_docs(self, docs, progress_logger): method handle_skip (line 41) | def handle_skip(self, doc): method processing_complete (line 50) | def processing_complete(self, skipped): method should_process (line 53) | def should_process(self, doc): class DocumentProvider (line 61) | class DocumentProvider(metaclass=ABCMeta): method get_document_iterator (line 63) | def get_document_iterator(self, chunk_size, event_handler=None): method get_total_document_count (line 72) | def get_total_document_count(self): class DocumentProcessorController (line 79) | class DocumentProcessorController(object): method __init__ (line 94) | def __init__(self, document_provider, doc_processor, reset=False, max_... method has_started (line 109) | def has_started(self): method run (line 112) | def run(self): method _process_doc (line 126) | def _process_doc(self, doc): class UnhandledDocumentError (line 139) | class UnhandledDocumentError(Exception): class BulkDocProcessorEventHandler (line 143) | class BulkDocProcessorEventHandler(PaginationEventHandler): method __init__ (line 145) | def __init__(self, processor): method page_end (line 148) | def page_end(self, total_emitted, duration, *args, **kwargs): class BulkDocProcessor (line 156) | class BulkDocProcessor(DocumentProcessorController): method __init__ (line 179) | def __init__(self, document_provider, doc_processor, reset=False, max_... method _process_doc (line 189) | def _process_doc(self, doc): method process_chunk (line 193) | def process_chunk(self): FILE: corehq/util/doc_processor/progress.py class ProgressManager (line 16) | class ProgressManager(object): method _session_total (line 42) | def _session_total(self): method timing (line 46) | def timing(self): method __enter__ (line 56) | def __enter__(self): method add (line 70) | def add(self, num=1): method skip (line 78) | def skip(self, doc): method _state (line 88) | def _state(self): method _update (line 91) | def _update(self, num=1): method __exit__ (line 109) | def __exit__(self, exc_type, exc, tb): class ProcessorProgressLogger (line 123) | class ProcessorProgressLogger(object): method __init__ (line 124) | def __init__(self, prefix=None, stream=None): method progress_starting (line 128) | def progress_starting(self, total, previously_visited): method document_skipped (line 132) | def document_skipped(self, doc_dict): method document_processed (line 138) | def document_processed(self, doc_dict, doc_updates): method progress (line 141) | def progress(self, processed, visited, total, time_elapsed, time_remai... method progress_complete (line 148) | def progress_complete(self, processed, visited, total, previously_visi... FILE: corehq/util/doc_processor/sql.py class SqlModelArgsProvider (line 5) | class SqlModelArgsProvider(ArgsProvider): method __init__ (line 6) | def __init__(self, db_list): method get_initial_args (line 9) | def get_initial_args(self): method get_next_args (line 12) | def get_next_args(self, result, *last_args, **last_view_kwargs): function resumable_sql_model_iterator (line 29) | def resumable_sql_model_iterator(iteration_key, reindex_accessor, chunk_... class SqlDocumentProvider (line 69) | class SqlDocumentProvider(DocumentProvider): method __init__ (line 75) | def __init__(self, iteration_key, reindex_accessor): method get_document_iterator (line 82) | def get_document_iterator(self, chunk_size, event_handler=None): method get_total_document_count (line 88) | def get_total_document_count(self): FILE: corehq/util/download.py class RangedFileWrapper (line 10) | class RangedFileWrapper(object): method __init__ (line 20) | def __init__(self, filelike, start=0, stop=float("inf"), block_size=No... method __iter__ (line 28) | def __iter__(self): function get_download_response (line 49) | def get_download_response(payload, content_length, content_type, downloa... FILE: corehq/util/elastic.py function prefix_for_tests (line 11) | def prefix_for_tests(index): function ensure_index_deleted (line 17) | def ensure_index_deleted(es_index): function delete_es_index (line 25) | def delete_es_index(es_index): function ensure_active_es (line 33) | def ensure_active_es(): class DeleteProductionESIndex (line 43) | class DeleteProductionESIndex(Exception): FILE: corehq/util/email_event_utils.py function log_email_sns_event (line 18) | def log_email_sns_event(message): function handle_email_sns_event (line 30) | def handle_email_sns_event(message): function record_permanent_bounce (line 55) | def record_permanent_bounce(aws_meta): function record_complaint (line 75) | def record_complaint(aws_meta): function record_transient_bounce (line 94) | def record_transient_bounce(aws_meta): function get_relevant_aws_meta (line 107) | def get_relevant_aws_meta(message_info): function get_emails_to_never_bounce (line 146) | def get_emails_to_never_bounce(): function get_bounced_system_emails (line 173) | def get_bounced_system_emails(): FILE: corehq/util/es/testing.py function patch_es_user_signals (line 9) | def patch_es_user_signals(): function sync_users_to_es (line 16) | def sync_users_to_es(): FILE: corehq/util/exceptions.py class DocumentClassNotFound (line 3) | class DocumentClassNotFound(Exception): class DatabaseNotFound (line 7) | class DatabaseNotFound(Exception): class AccessRestricted (line 11) | class AccessRestricted(Exception): class ParallelExecutionError (line 15) | class ParallelExecutionError(Exception): FILE: corehq/util/files.py function file_extention_from_filename (line 8) | def file_extention_from_filename(filename): function safe_filename (line 15) | def safe_filename(filename, extension=None): function safe_filename_header (line 33) | def safe_filename_header(filename, extension=None): class TransientTempfile (line 45) | class TransientTempfile(object): method __enter__ (line 59) | def __enter__(self): method __exit__ (line 64) | def __exit__(self, exc_type, exc_val, exc_tb): function read_workbook_content_as_file (line 68) | def read_workbook_content_as_file(wb): FILE: corehq/util/ghdiff.py function escape (line 70) | def escape(text): function diff (line 74) | def diff(a, b, n=3, css=True): function colorize (line 82) | def colorize(diff, css=True): function _colorize (line 87) | def _colorize(diff): function _line_diff (line 122) | def _line_diff(a, b): FILE: corehq/util/global_request/api.py function get_request (line 6) | def get_request(): function set_request (line 13) | def set_request(request): function get_request_domain (line 17) | def get_request_domain(): FILE: corehq/util/global_request/middleware.py class GlobalRequestMiddleware (line 8) | class GlobalRequestMiddleware(MiddlewareMixin): method process_request (line 11) | def process_request(self, request): method process_response (line 14) | def process_response(self, request, response): FILE: corehq/util/hmac_request.py function convert_to_bytestring_if_unicode (line 16) | def convert_to_bytestring_if_unicode(shared_key): function get_hmac_digest (line 20) | def get_hmac_digest(shared_key, data): function validate_request_hmac (line 28) | def validate_request_hmac(setting_name, audit_user='system'): FILE: corehq/util/html_utils.py function strip_tags (line 8) | def strip_tags(html): class HTMLRemover (line 14) | class HTMLRemover(HTMLParser): method __init__ (line 15) | def __init__(self): method handle_data (line 21) | def handle_data(self, data): method get_data (line 24) | def get_data(self): FILE: corehq/util/htmx_action.py class HqHtmxActionMixin (line 14) | class HqHtmxActionMixin: method render_htmx_redirect (line 60) | def render_htmx_redirect(self, url, response_message=None): method _get_existing_hx_triggers (line 66) | def _get_existing_hx_triggers(response): method include_gtm_event_with_response (line 85) | def include_gtm_event_with_response(self, response, event_name, event_... method render_htmx_no_response (line 96) | def render_htmx_no_response(self, request, *args, **kwargs): method render_htmx_partial_response (line 103) | def render_htmx_partial_response(self, request, template, context): method dispatch (line 116) | def dispatch(self, request, *args, **kwargs): method _return_error_response (line 163) | def _return_error_response(self, htmx_response_error, action=None): function hq_hx_action (line 182) | def hq_hx_action(method=ANY_METHOD): class HtmxResponseForbidden (line 195) | class HtmxResponseForbidden(HttpResponseForbidden): method __init__ (line 197) | def __init__(self, error_message, *args, **kwargs): class HtmxResponseException (line 206) | class HtmxResponseException(Exception): method __init__ (line 214) | def __init__( FILE: corehq/util/htmx_debug.py class HqHtmxDebugMixin (line 7) | class HqHtmxDebugMixin: method dispatch (line 32) | def dispatch(self, request, *args, **kwargs): class FakeGatewayTimeoutResponse (line 42) | class FakeGatewayTimeoutResponse(HttpResponse): function _is_mostly_false (line 46) | def _is_mostly_false(): FILE: corehq/util/htmx_gtm.py function get_htmx_gtm_event (line 4) | def get_htmx_gtm_event(name, data=None): FILE: corehq/util/io.py class ClosingContextProxy (line 3) | class ClosingContextProxy: method __init__ (line 9) | def __init__(self, obj): method __getattr__ (line 12) | def __getattr__(self, name): method __iter__ (line 15) | def __iter__(self): method __enter__ (line 18) | def __enter__(self): method __exit__ (line 21) | def __exit__(self, *args): FILE: corehq/util/itertools.py function zip_with_gaps (line 3) | def zip_with_gaps(all_items, some_items, all_items_key=None, some_items_... FILE: corehq/util/jqueryrmi.py function allow_remote_invocation (line 16) | def allow_remote_invocation(func, method='auto'): class JSONResponseException (line 26) | class JSONResponseException(Exception): method __init__ (line 32) | def __init__(self, message=None, status=None, *args, **kwargs): class JSONResponseMixin (line 38) | class JSONResponseMixin: method get (line 51) | def get(self, request, *args, **kwargs): method post (line 54) | def post(self, request, *args, **kwargs): method _invoke_remote_method (line 62) | def _invoke_remote_method(self, request, args, kwargs, data=None): method _dispatch_super (line 79) | def _dispatch_super(self, request, *args, **kwargs): method json_response (line 86) | def json_response(self, response_data, status=200, **kwargs): FILE: corehq/util/json.py class CommCareJSONEncoder (line 8) | class CommCareJSONEncoder(DjangoJSONEncoder): method default (line 12) | def default(self, o): FILE: corehq/util/jsonattrs.py class JsonAttrsField (line 96) | class JsonAttrsField(JSONField): method __init__ (line 101) | def __init__(self, *args, builder, **kw): method get_prep_value (line 105) | def get_prep_value(self, value): method to_python (line 111) | def to_python(self, value): method from_db_value (line 124) | def from_db_value(self, value, expression, connection): method value_to_string (line 128) | def value_to_string(self, obj): method deconstruct (line 135) | def deconstruct(self): method clone (line 145) | def clone(self): method validate (line 153) | def validate(self, value, model_instance): method formfield (line 156) | def formfield(self, **kwargs): class AttrsDict (line 166) | class AttrsDict(JsonAttrsField): method __init__ (line 174) | def __init__(self, value_type, /, **jsonfield_args): class AttrsList (line 178) | class AttrsList(JsonAttrsField): method __init__ (line 184) | def __init__(self, item_type, /, **jsonfield_args): class AttrsObject (line 188) | class AttrsObject(JsonAttrsField): method __init__ (line 194) | def __init__(self, item_type, /, **jsonfield_args): class BaseBuilder (line 199) | class BaseBuilder: method attrify (line 202) | def attrify(self, value): method jsonify (line 209) | def jsonify(self, value): method _attrify (line 218) | def _attrify(self, value, from_json): method _jsonify (line 221) | def _jsonify(self, value, to_json): class AttrsListBuilder (line 226) | class AttrsListBuilder(BaseBuilder): method _attrify (line 228) | def _attrify(self, value, from_json): method _jsonify (line 231) | def _jsonify(self, value, to_json): class AttrsDictBuilder (line 236) | class AttrsDictBuilder(BaseBuilder): method _attrify (line 238) | def _attrify(self, value, from_json): method _jsonify (line 241) | def _jsonify(self, value, to_json): class AttrsObjectBuilder (line 246) | class AttrsObjectBuilder(BaseBuilder): method _attrify (line 248) | def _attrify(self, value, from_json): method _jsonify (line 251) | def _jsonify(self, value, to_json): function make_from_json (line 255) | def make_from_json(attrs_type): class BadValue (line 276) | class BadValue(ValueError): method format (line 279) | def format(cls, value, exc): class dict_of (line 286) | class dict_of: method _builder (line 292) | def _builder(self): method __jsonattrs_from_json__ (line 295) | def __jsonattrs_from_json__(self, value): method __jsonattrs_to_json__ (line 299) | def __jsonattrs_to_json__(self, value): method _check_none (line 303) | def _check_none(self, value): method __name__ (line 309) | def __name__(self): class list_of (line 316) | class list_of: method _builder (line 321) | def _builder(self): method __jsonattrs_from_json__ (line 324) | def __jsonattrs_from_json__(self, value): method __jsonattrs_to_json__ (line 328) | def __jsonattrs_to_json__(self, value): method _check_none (line 332) | def _check_none(self, value): method __name__ (line 338) | def __name__(self): class JsonAttrsFormField (line 342) | class JsonAttrsFormField(forms.JSONField): method __init__ (line 347) | def __init__(self, builder, encoder=None, decoder=None, **kwargs): method validate (line 351) | def validate(self, value): method prepare_value (line 364) | def prepare_value(self, value): FILE: corehq/util/log.py function clean_exception (line 20) | def clean_exception(exception): function get_sanitized_request_repr (line 41) | def get_sanitized_request_repr(request): class HqAdminEmailHandler (line 53) | class HqAdminEmailHandler(AdminEmailHandler): method get_context (line 64) | def get_context(self, record): method emit (line 117) | def emit(self, record): method format_details (line 130) | def format_details(self, details): method _clean_subject (line 136) | def _clean_subject(cls, subject): class HQRequestFilter (line 148) | class HQRequestFilter(Filter): method filter (line 162) | def filter(self, record): class CeleryTaskFilter (line 173) | class CeleryTaskFilter(Filter): method filter (line 179) | def filter(self, record): class SlowRequestFilter (line 189) | class SlowRequestFilter(Filter): method __init__ (line 196) | def __init__(self, name='', duration=5): method filter (line 200) | def filter(self, record): class SuppressStaticLogs (line 207) | class SuppressStaticLogs(Filter): method filter (line 208) | def filter(self, record): function display_seconds (line 216) | def display_seconds(seconds): function with_progress_bar (line 220) | def with_progress_bar(iterable, length=None, prefix='Processing', onelin... function step_calculator (line 286) | def step_calculator(length, granularity): function get_traceback_string (line 316) | def get_traceback_string(): function send_HTML_email (line 323) | def send_HTML_email(subject, recipient, html_content, is_conditional_ale... FILE: corehq/util/management/commands/check_bounced_email.py class Command (line 13) | class Command(BaseCommand): method add_arguments (line 16) | def add_arguments(self, parser): method handle (line 29) | def handle(self, bounced_email, **options): method check_bounced_email (line 48) | def check_bounced_email(self, email_string, show_details): FILE: corehq/util/management/commands/check_couchdb_replication.py class Command (line 9) | class Command(BaseCommand): method add_arguments (line 12) | def add_arguments(self, parser): method handle (line 16) | def handle(self, replication_id, cancel, **options): FILE: corehq/util/management/commands/create_couchdb_replication.py function _check_db_name (line 9) | def _check_db_name(dbname): class Command (line 15) | class Command(BaseCommand): method add_arguments (line 18) | def add_arguments(self, parser): method handle (line 26) | def handle(self, sourcedb, targetdb, **options): FILE: corehq/util/management/commands/mark_email_as_bounced.py class Command (line 12) | class Command(BaseCommand): method add_arguments (line 16) | def add_arguments(self, parser): method handle (line 28) | def handle(self, bounced_email, **options): method mark_email_as_bounced (line 34) | def mark_email_as_bounced(self, email_string): FILE: corehq/util/management/commands/process_bounced_emails.py class Command (line 7) | class Command(BaseCommand): method add_arguments (line 10) | def add_arguments(self, parser): method _print_processed_emails (line 24) | def _print_processed_emails(self, emails): method handle (line 28) | def handle(self, **options): FILE: corehq/util/management/commands/revoke_celery_tasks.py class Command (line 5) | class Command(BaseCommand): method add_arguments (line 18) | def add_arguments(self, parser): method handle (line 25) | def handle(self, task_names, **options): FILE: corehq/util/management/commands/show_celery_tasks.py class Command (line 5) | class Command(BaseCommand): method add_arguments (line 14) | def add_arguments(self, parser): method handle (line 18) | def handle(self, worker_name, task_state, **options): FILE: corehq/util/management/commands/show_celery_workers.py class Command (line 5) | class Command(BaseCommand): method add_arguments (line 16) | def add_arguments(self, parser): method handle (line 23) | def handle(self, timeout, **options): FILE: corehq/util/management/commands/unbounce_email.py class Command (line 10) | class Command(BaseCommand): method add_arguments (line 13) | def add_arguments(self, parser): method handle (line 16) | def handle(self, bounced_email, **options): method unbounce_email (line 21) | def unbounce_email(self, bounced_email): FILE: corehq/util/markup.py function _wrap_url (line 15) | def _wrap_url(url): function _get_url_segments (line 19) | def _get_url_segments(text): function mark_up_urls (line 31) | def mark_up_urls(text): function _shell_color_template (line 40) | def _shell_color_template(color_code): class SimpleTableWriter (line 49) | class SimpleTableWriter(object): method __init__ (line 52) | def __init__(self, output=None, row_formatter=None): method write_table (line 56) | def write_table(self, headers, rows): method write_headers (line 60) | def write_headers(self, headers): method write_rows (line 63) | def write_rows(self, rows): class RowFormatter (line 68) | class RowFormatter(metaclass=ABCMeta): method get_template (line 70) | def get_template(self, num_cols): method format_headers (line 73) | def format_headers(self, headers): method format_row (line 76) | def format_row(self, row): class CSVRowFormatter (line 80) | class CSVRowFormatter(RowFormatter): method get_template (line 83) | def get_template(self, num_cols): class TableRowFormatter (line 87) | class TableRowFormatter(RowFormatter): method __init__ (line 89) | def __init__(self, col_widths=None, row_color_getter=None): method get_template (line 94) | def get_template(self, num_cols): method format_headers (line 102) | def format_headers(self, headers): method format_row (line 109) | def format_row(self, row): method _highlight (line 114) | def _highlight(self, color, template): FILE: corehq/util/metrics/__init__.py function metrics_counter (line 153) | def metrics_counter(name: str, value: float = 1, tags: Dict[str, str] = ... function metrics_gauge (line 158) | def metrics_gauge(name: str, value: float, tags: Dict[str, str] = None, ... function metrics_histogram (line 169) | def metrics_histogram( function metrics_gauge_task (line 180) | def metrics_gauge_task(name, fn, run_every, multiprocess_mode=MPM_ALL): function create_metrics_event (line 206) | def create_metrics_event(title: str, text: str, alert_type: str = ALERT_... class metrics_histogram_timer (line 226) | class metrics_histogram_timer(TimingContext): method __init__ (line 254) | def __init__(self, metric: str, timing_buckets: Iterable[int], tags: D... method stop (line 263) | def stop(self, name=None): method __exit__ (line 282) | def __exit__(self, exc_type, exc_val, exc_tb): class metrics_track_errors (line 287) | class metrics_track_errors(ContextDecorator): method __init__ (line 301) | def __init__(self, name): method __enter__ (line 305) | def __enter__(self): method __exit__ (line 308) | def __exit__(self, exc_type, exc_val, exc_tb): function limit_domains (line 315) | def limit_domains(domain_name): function limit_tags (line 326) | def limit_tags(tags: Dict[str, str], domain: str): function push_metrics (line 334) | def push_metrics(): function _get_metrics_provider (line 342) | def _get_metrics_provider(): function _global_setup (line 363) | def _global_setup(): FILE: corehq/util/metrics/datadog.py function _format_tags (line 15) | def _format_tags(tag_values: Dict[str, str]): class DatadogMetrics (line 27) | class DatadogMetrics(HqMetrics): method __init__ (line 35) | def __init__(self): method _counter (line 53) | def _counter(self, name: str, value: float, tags: Dict[str, str] = Non... method _gauge (line 59) | def _gauge(self, name: str, value: float, tags: Dict[str, str] = None,... method _histogram (line 64) | def _histogram(self, name: str, value: float, method _create_event (line 99) | def _create_event(self, title: str, text: str, alert_type: str = ALERT... function _datadog_record (line 110) | def _datadog_record(fn, name, value, tags=None): function datadog_initialized (line 117) | def datadog_initialized(): FILE: corehq/util/metrics/load_counters.py function load_counter (line 4) | def load_counter(load_type, source, domain_name, extra_tags=None): function case_load_counter (line 27) | def case_load_counter(*args, **kw): function form_load_counter (line 32) | def form_load_counter(*args, **kw): function ledger_load_counter (line 37) | def ledger_load_counter(*args, **kw): function sms_load_counter (line 46) | def sms_load_counter(*args, **kw): function ucr_load_counter (line 56) | def ucr_load_counter(engine_id, *args, **kw): function dedupe_load_counter (line 65) | def dedupe_load_counter(*args, **kw): function schedule_load_counter (line 74) | def schedule_load_counter(*args, **kw): function load_counter_for_model (line 83) | def load_counter_for_model(model): FILE: corehq/util/metrics/lockmeter.py class MeteredLock (line 6) | class MeteredLock(object): method __init__ (line 15) | def __init__(self, lock, name, track_unreleased=True): method acquire (line 26) | def acquire(self, *args, **kw): method reacquire (line 37) | def reacquire(self): method release (line 46) | def release(self): method local (line 54) | def local(self): method __enter__ (line 59) | def __enter__(self): method __exit__ (line 63) | def __exit__(self, *exc_info): method __del__ (line 66) | def __del__(self): method release_failed (line 70) | def release_failed(self): method degraded (line 74) | def degraded(self): FILE: corehq/util/metrics/metrics.py function _enforce_prefix (line 21) | def _enforce_prefix(name, prefix): function _validate_tag_names (line 28) | def _validate_tag_names(tag_names): class HqMetrics (line 43) | class HqMetrics(metaclass=abc.ABCMeta): method accepted_gauge_params (line 46) | def accepted_gauge_params(self): method initialize (line 49) | def initialize(self): method counter (line 52) | def counter(self, name: str, value: float = 1, tags: Dict[str, str] = ... method gauge (line 57) | def gauge(self, name: str, value: float, tags: Dict[str, str] = None, ... method histogram (line 63) | def histogram(self, name: str, value: float, method create_event (line 73) | def create_event(self, title: str, text: str, alert_type: str = ALERT_... method push_metrics (line 78) | def push_metrics(self): method _counter (line 82) | def _counter(self, name, value, tags, documentation): method _gauge (line 86) | def _gauge(self, name, value, tags, documentation): method _histogram (line 90) | def _histogram(self, name, value, bucket_tag, buckets, bucket_unit, ta... method _create_event (line 93) | def _create_event(self, title: str, text: str, alert_type: str = ALERT... class Sample (line 99) | class Sample(namedtuple('Sample', ['type', 'name', 'tags', 'value'])): method match_tags (line 100) | def match_tags(self, tags): class DebugMetrics (line 108) | class DebugMetrics: method __init__ (line 109) | def __init__(self, capture=False): method __getattr__ (line 113) | def __getattr__(self, item): method histogram (line 125) | def histogram(self, name, value, bucket_tag, buckets, bucket_unit, tag... method push_metrics (line 129) | def push_metrics(self): method create_event (line 132) | def create_event(self, title: str, text: str, alert_type: str = ALERT_... class DelegatedMetrics (line 138) | class DelegatedMetrics: method __init__ (line 139) | def __init__(self, delegates): method __getattr__ (line 142) | def __getattr__(self, item): FILE: corehq/util/metrics/prometheus.py class NullLock (line 23) | class NullLock: method __enter__ (line 24) | def __enter__(self): method __exit__ (line 27) | def __exit__(self, exc_type, exc_val, exc_tb): class PrometheusMetrics (line 31) | class PrometheusMetrics(HqMetrics): method __init__ (line 34) | def __init__(self): method accepted_gauge_params (line 46) | def accepted_gauge_params(self): method _counter (line 49) | def _counter(self, name: str, value: float = 1, tags: Dict[str, str] =... method _gauge (line 56) | def _gauge(self, name: str, value: float, tags: Dict[str, str]=None, d... method _histogram (line 73) | def _histogram(self, name: str, value: float, bucket_tag: str, buckets... method _get_metric (line 108) | def _get_metric(self, metric_type, name, tags, documentation, **kwargs): method push_metrics (line 134) | def push_metrics(self): FILE: corehq/util/metrics/tests/test_lockmeter.py class TestMeteredLock (line 15) | class TestMeteredLock(TestCase): method test_initially_not_locked (line 17) | def test_initially_not_locked(self): method test_acquire (line 22) | def test_acquire(self): method test_not_acquired (line 30) | def test_not_acquired(self): method test_release (line 37) | def test_release(self): method test_release_not_locked (line 46) | def test_release_not_locked(self): method test_lock_as_context_manager (line 54) | def test_lock_as_context_manager(self): method test_release_failed (line 64) | def test_release_failed(self): method test_degraded (line 70) | def test_degraded(self): method test_released_after_timeout (line 76) | def test_released_after_timeout(self): method test_lock_without_timeout (line 83) | def test_lock_without_timeout(self): method test_local (line 90) | def test_local(self): method test_no_local (line 97) | def test_no_local(self): class FakeLock (line 105) | class FakeLock(object): method acquire (line 111) | def acquire(self, blocking=True): method reacquire (line 115) | def reacquire(self): method release (line 118) | def release(self): FILE: corehq/util/metrics/tests/test_metrics.py class _TestMetrics (line 13) | class _TestMetrics(SimpleTestCase): method __test__ (line 17) | def __test__(cls): method setUpClass (line 21) | def setUpClass(cls): method test_counter (line 25) | def test_counter(self): method test_gauge (line 34) | def test_gauge(self): method assertCounterMetric (line 43) | def assertCounterMetric(self, metric: str, expected: Dict[Tuple[Tuple[... method assertGaugeMetric (line 50) | def assertGaugeMetric(self, metric: str, expected: Dict[Tuple[Tuple[st... class TestDatadogMetrics (line 58) | class TestDatadogMetrics(_TestMetrics): method setUp (line 61) | def setUp(self) -> None: method tearDown (line 66) | def tearDown(self) -> None: method test_histogram (line 70) | def test_histogram(self): method assertCounterMetric (line 86) | def assertCounterMetric(self, metric_name, expected): method assertGaugeMetric (line 93) | def assertGaugeMetric(self, metric_name, expected): method assertHistogramMetric (line 100) | def assertHistogramMetric(self, metric_name, expected, bucket_tag, buc... class TestPrometheusMetrics (line 118) | class TestPrometheusMetrics(_TestMetrics): method test_histogram (line 121) | def test_histogram(self): method _samples_to_dics (line 137) | def _samples_to_dics(self, samples, filter_name=None): method assertGaugeMetric (line 145) | def assertGaugeMetric(self, metric_name, expected): method assertCounterMetric (line 152) | def assertCounterMetric(self, metric_name, expected): method assertHistogramMetric (line 160) | def assertHistogramMetric(self, metric_name, expected, buckets): FILE: corehq/util/metrics/tests/test_utils.py function test_make_buckets_from_timedeltas (line 11) | def test_make_buckets_from_timedeltas(): class MetricsUtilsTest (line 25) | class MetricsUtilsTest(SimpleTestCase): function test_bucket_value (line 38) | def test_bucket_value(self, value, buckets, unit, expected): function test_sanitize_url (line 49) | def test_sanitize_url(self, url, sanitized): function test_url_group (line 60) | def test_url_group(self, url, group): FILE: corehq/util/metrics/tests/utils.py function patch_datadog (line 10) | def patch_datadog(): class CapturedMetrics (line 22) | class CapturedMetrics: method __init__ (line 23) | def __init__(self, samples): method list (line 26) | def list(self, name: str, **tags): method sum (line 32) | def sum(self, name: str, **tags): method to_flattened_dict (line 35) | def to_flattened_dict(self): method __contains__ (line 42) | def __contains__(self, metric_name: str): method __repr__ (line 45) | def __repr__(self): function capture_metrics (line 50) | def capture_metrics(): FILE: corehq/util/metrics/utils.py function sanitize_url (line 7) | def sanitize_url(url): function get_url_group (line 23) | def get_url_group(url): function make_buckets_from_timedeltas (line 32) | def make_buckets_from_timedeltas(*timedeltas): function bucket_value (line 47) | def bucket_value(value, buckets, unit=''): FILE: corehq/util/metrics/views.py function prometheus_metrics (line 10) | def prometheus_metrics(request): FILE: corehq/util/migrations/0001_initial.py class Migration (line 8) | class Migration(migrations.Migration): FILE: corehq/util/migrations/0002_complaintbouncemeta_permanentbouncemeta_transientbounceemail.py class Migration (line 10) | class Migration(migrations.Migration): FILE: corehq/util/mixin.py class UUIDGeneratorException (line 4) | class UUIDGeneratorException(Exception): class UUIDGeneratorMixin (line 8) | class UUIDGeneratorMixin(object): method __init__ (line 21) | def __init__(self, *args, **kwargs): class ValidateModelMixin (line 38) | class ValidateModelMixin(object): method save (line 40) | def save(self, *args, **kwargs): FILE: corehq/util/models.py class NotificationType (line 20) | class NotificationType(object): class BounceType (line 26) | class BounceType(object): class BounceSubType (line 32) | class BounceSubType(object): class BouncedEmail (line 63) | class BouncedEmail(models.Model): method is_email_over_limits (line 68) | def is_email_over_limits(cls, email): method is_bad_email_format (line 87) | def is_bad_email_format(email_address): method get_hard_bounced_emails (line 109) | def get_hard_bounced_emails(cls, list_of_emails): class TransientBounceEmail (line 176) | class TransientBounceEmail(models.Model): method get_expired_query (line 183) | def get_expired_query(cls): method delete_expired_bounces (line 191) | def delete_expired_bounces(cls): method get_active_query (line 195) | def get_active_query(cls): class PermanentBounceMeta (line 202) | class PermanentBounceMeta(models.Model): class ComplaintBounceMeta (line 215) | class ComplaintBounceMeta(models.Model): class NullJsonField (line 225) | class NullJsonField(jsonfield_JSONField): method __init__ (line 232) | def __init__(self, **kw): method get_db_prep_value (line 237) | def get_db_prep_value(self, value, *args, **kw): method to_python (line 242) | def to_python(self, value): method from_db_value (line 246) | def from_db_value(self, value, expression, connection): method pre_init (line 250) | def pre_init(self, value, obj): class TruncatingCharField (line 255) | class TruncatingCharField(models.CharField): method get_prep_value (line 260) | def get_prep_value(self, value): class ForeignObject (line 267) | class ForeignObject: method __init__ (line 275) | def __init__(self, id_field, get_by_id): method __set_name__ (line 279) | def __set_name__(self, owner, name): method __get__ (line 285) | def __get__(self, obj, objtype=None): method __set__ (line 298) | def __set__(self, obj, value): method __delete__ (line 306) | def __delete__(self, obj): method get_names (line 311) | def get_names(cls): class ForeignValue (line 319) | class ForeignValue(ForeignObject): method __init__ (line 338) | def __init__(self, foreign_key: models.ForeignKey, truncate=False, cac... method __get__ (line 343) | def __get__(self, obj, objtype=None): method get_value (line 353) | def get_value(self): method __set__ (line 368) | def __set__(self, obj, value): method max_length (line 379) | def max_length(self): method get_related (line 383) | def get_related(self): method fk_path (line 402) | def fk_path(self): function foreign_init (line 407) | def foreign_init(cls): class GetOrNoneManager (line 425) | class GetOrNoneManager(models.Manager): method get_or_none (line 430) | def get_or_none(self, **kwargs): FILE: corehq/util/pagination.py class PaginationEventHandler (line 11) | class PaginationEventHandler(object): method page_start (line 12) | def page_start(self, total_emitted, *args, **kwargs): method page_exception (line 21) | def page_exception(self, exception): method page (line 30) | def page(self, results): method page_end (line 37) | def page_end(self, total_emitted, duration, *args, **kwargs): method stop (line 47) | def stop(self): class DelegatingPaginationEventHandler (line 52) | class DelegatingPaginationEventHandler(PaginationEventHandler): method __init__ (line 53) | def __init__(self, handlers=None): method add_handler (line 56) | def add_handler(self, handler): method page_start (line 59) | def page_start(self, total_emitted, *args, **kwargs): method page_exception (line 63) | def page_exception(self, exception): method page (line 66) | def page(self, results): method page_end (line 70) | def page_end(self, total_emitted, duration, *args, **kwargs): method stop (line 74) | def stop(self): class ArgsProvider (line 79) | class ArgsProvider(object): method get_initial_args (line 80) | def get_initial_args(self): method adjust_results (line 86) | def adjust_results(self, results, args, kwargs): method get_next_args (line 96) | def get_next_args(self, last_item, *last_args, **last_kwargs): class ArgsListProvider (line 105) | class ArgsListProvider(ArgsProvider): method __init__ (line 110) | def __init__(self, kwargs_list): method get_initial_args (line 113) | def get_initial_args(self): method get_next_args (line 116) | def get_next_args(self, result, *last_args, **last_kwargs): function paginate_function (line 126) | def paginate_function(data_function, args_provider, event_handler=None): class ResumableIteratorState (line 167) | class ResumableIteratorState(JsonObject): method is_resume (line 176) | def is_resume(self): function unpack_jsonobject (line 180) | def unpack_jsonobject(json_object): class ResumableArgsProvider (line 192) | class ResumableArgsProvider(ArgsProvider): method __init__ (line 193) | def __init__(self, iterator_state, args_provider): method get_initial_args (line 199) | def get_initial_args(self): method adjust_results (line 204) | def adjust_results(self, results, args, kwargs): method get_next_args (line 207) | def get_next_args(self, last_item, *last_args, **last_kwargs): class ResumableFunctionIterator (line 211) | class ResumableFunctionIterator(object): method __init__ (line 229) | def __init__(self, iteration_key, data_function, args_provider, event_... method state (line 240) | def state(self): method __iter__ (line 253) | def __iter__(self): method _get_event_handler (line 268) | def _get_event_handler(self): method get_iterator_detail (line 277) | def get_iterator_detail(self, key): method set_iterator_detail (line 282) | def set_iterator_detail(self, key, value): method _save_state (line 292) | def _save_state(self): method _save_state_json (line 299) | def _save_state_json(self, state_json): method discard_state (line 302) | def discard_state(self): class ResumableIteratorEventHandler (line 315) | class ResumableIteratorEventHandler(PaginationEventHandler): method __init__ (line 319) | def __init__(self, iterator): method page_start (line 322) | def page_start(self, total_emitted, *args, **kwargs): class StopToResume (line 328) | class StopToResume(Exception): FILE: corehq/util/public_only_requests/public_only_requests.py function get_public_only_session (line 5) | def get_public_only_session(domain_name, src): function make_session_public_only (line 11) | def make_session_public_only(session, domain_name, src): class PublicOnlyHttpAdapter (line 24) | class PublicOnlyHttpAdapter(HTTPAdapter): method __init__ (line 25) | def __init__(self, domain_name, src): method get_connection_with_tls_context (line 30) | def get_connection_with_tls_context(self, request, verify, proxies=Non... FILE: corehq/util/public_only_requests/tests/test_public_only_session.py function test_public_only_session__simple_success (line 25) | def test_public_only_session__simple_success(): function test_public_only_session__simple_invalid_url_local (line 33) | def test_public_only_session__simple_invalid_url_local(): function test_public_only_session__simple_invalid_url_private (line 39) | def test_public_only_session__simple_invalid_url_private(): function test_public_only_session__redirect_to_valid_url (line 45) | def test_public_only_session__redirect_to_valid_url(): function test_public_only_session__redirect_to_invalid_url_local (line 58) | def test_public_only_session__redirect_to_invalid_url_local(): function test_public_only_session__redirect_to_invalid_url_local_private (line 67) | def test_public_only_session__redirect_to_invalid_url_local_private(): function _set_up_session (line 76) | def _set_up_session(): function _get_redirect_response (line 82) | def _get_redirect_response(redirect_location): function _get_200_response (line 92) | def _get_200_response(): function _patch_session_with_hard_coded_response (line 102) | def _patch_session_with_hard_coded_response(session, url, response): FILE: corehq/util/queries.py function fast_distinct (line 8) | def fast_distinct(model_cls, column, using=DEFAULT_DB_ALIAS): function fast_distinct_in_domain (line 33) | def fast_distinct_in_domain(model_cls, column, domain, using=DEFAULT_DB_... function _get_table_from_model (line 64) | def _get_table_from_model(model_cls): function _assert_field_in_model (line 68) | def _assert_field_in_model(model_cls, column): function _assert_super_safe (line 72) | def _assert_super_safe(word): function _execute (line 77) | def _execute(command, params=None, using=DEFAULT_DB_ALIAS): function paginated_queryset (line 89) | def paginated_queryset(queryset, chunk_size): function queryset_to_iterator (line 102) | def queryset_to_iterator(queryset, model_cls, limit=500, ignore_ordering... FILE: corehq/util/quickcache.py function get_session_key (line 18) | def get_session_key(): function _quickcache_id (line 34) | def _quickcache_id(obj): FILE: corehq/util/sentry.py function _get_rate_limit_key (line 52) | def _get_rate_limit_key(exc_info): function is_pg_cancelled_query_exception (line 71) | def is_pg_cancelled_query_exception(e): class HQSanitzeSystemPasswords (line 76) | class HQSanitzeSystemPasswords(object): method __init__ (line 79) | def __init__(self): method __call__ (line 87) | def __call__(self, event): method sanitize (line 95) | def sanitize(self, key, value): function subtype_error (line 104) | def subtype_error(tb: TracebackType, rate_limit_key: str) -> str: function _rate_limit_exc (line 132) | def _rate_limit_exc(exc_info): function before_sentry_send (line 152) | def before_sentry_send(event, hint): FILE: corehq/util/serialization.py function deserialize_decimal (line 6) | def deserialize_decimal(serialized_value): FILE: corehq/util/signals.py function log_celery_task_exception (line 13) | def log_celery_task_exception(task_id, exception, traceback, einfo, *arg... class SignalHandlerContext (line 17) | class SignalHandlerContext(object): method __init__ (line 25) | def __init__(self, signals, handler, default_handler=signal.SIG_DFL): method __enter__ (line 36) | def __enter__(self): method __exit__ (line 40) | def __exit__(self, *args, **kwargs): function signalcommand (line 49) | def signalcommand(func): FILE: corehq/util/soft_assert/api.py function _send_message (line 11) | def _send_message(info, backend): function soft_assert (line 27) | def soft_assert(to=None, notify_admins=False, FILE: corehq/util/soft_assert/core.py function is_hard_mode (line 9) | def is_hard_mode(): class SoftAssert (line 21) | class SoftAssert(object): method __init__ (line 23) | def __init__(self, debug=False, send=None, use_exponential_backoff=True, method __call__ (line 32) | def __call__(self, assertion, msg=None, obj=None): method _call (line 37) | def _call(self, assertion, msg=None, obj=None): function get_traceback (line 64) | def get_traceback(skip=0, limit=None): FILE: corehq/util/strings.py function get_masked_string (line 1) | def get_masked_string(value, mask_character='*', reveal_length=3): FILE: corehq/util/teeout.py function tee_output (line 7) | def tee_output(stream, sys=sys): class StreamTee (line 39) | class StreamTee(object): method __init__ (line 41) | def __init__(self, stream1, stream2): method __getattr__ (line 45) | def __getattr__(self, name): FILE: corehq/util/test_utils.py class UnitTestingRequired (line 38) | class UnitTestingRequired(Exception): function unit_testing_only (line 42) | def unit_testing_only(fn): class trap_extra_setup (line 55) | class trap_extra_setup(ContextDecorator): method __init__ (line 68) | def __init__(self, *exceptions, **kw): method __enter__ (line 76) | def __enter__(self): method __exit__ (line 79) | def __exit__(self, exc_type, err, tb): function softer_assert (line 87) | def softer_assert(comment=None): class TestFileMixin (line 92) | class TestFileMixin(object): method base (line 98) | def base(self): method get_base (line 102) | def get_base(cls, override_path=None): method get_path (line 107) | def get_path(cls, name, ext, override_path=None): method get_file (line 112) | def get_file(cls, name, ext, override_path=None): method write_xml (line 117) | def write_xml(cls, name, xml, override_path=None): method get_json (line 122) | def get_json(cls, name, override_path=None): method get_xml (line 126) | def get_xml(cls, name, override_path=None): class flag_enabled (line 130) | class flag_enabled: method __init__ (line 140) | def __init__(self, toggle_name, is_preview=False): method __call__ (line 154) | def __call__(self, fn): method __enter__ (line 160) | def __enter__(self): method __exit__ (line 164) | def __exit__(self, exc_type, exc_val, exc_tb): class flag_disabled (line 169) | class flag_disabled(flag_enabled): function disable_overpatch (line 174) | def disable_overpatch(patch_obj): class privilege_enabled (line 207) | class privilege_enabled: method __init__ (line 246) | def __init__(self, *privilege_slugs): method __call__ (line 267) | def __call__(self, func): method __enter__ (line 272) | def __enter__(self): method __exit__ (line 276) | def __exit__(self, exc_type, exc_val, exc_tb): function has_permissions (line 281) | def has_permissions(**kwargs): class DocTestMixin (line 292) | class DocTestMixin(object): method assert_docs_equal (line 295) | def assert_docs_equal(self, doc1, doc2): method assert_doc_sets_equal (line 299) | def assert_doc_sets_equal(self, docs1, docs2): method assert_doc_lists_equal (line 305) | def assert_doc_lists_equal(self, docs1, docs2): class mock_out_couch (line 312) | class mock_out_couch(object): method __init__ (line 326) | def __init__(self, views=None, docs=None): method __call__ (line 342) | def __call__(self, func): method _patch_class (line 352) | def _patch_class(self, klass): method __enter__ (line 357) | def __enter__(self): method __exit__ (line 363) | def __exit__(self, exc_type, exc_val, exc_tb): function NOOP (line 368) | def NOOP(*args, **kwargs): class capture_log_output (line 372) | class capture_log_output(ContextDecorator): method __init__ (line 377) | def __init__(self, logger_name, level=logging.DEBUG): method __enter__ (line 387) | def __enter__(self): method __exit__ (line 391) | def __exit__(self, exc_type, exc_val, exc_tb): method get_output (line 398) | def get_output(self): function unregistered_django_model (line 402) | def unregistered_django_model(model_class): class generate_cases (line 418) | class generate_cases: method __init__ (line 452) | def __init__(self, argsets, cls=None): method __call__ (line 456) | def __call__(self, test_func): function patch_foreign_value_caches (line 507) | def patch_foreign_value_caches(): function get_form_ready_to_save (line 552) | def get_form_ready_to_save(metadata, is_db_test=False, form_id=None): function make_es_ready_form (line 583) | def make_es_ready_form(metadata, is_db_test=False): function create_and_save_a_form (line 592) | def create_and_save_a_form(domain): function _create_case (line 606) | def _create_case(domain, **kwargs): function create_and_save_a_case (line 620) | def create_and_save_a_case(domain, case_id, case_name, case_properties=N... function create_test_case (line 657) | def create_test_case(domain, case_type, case_name, case_properties=None,... function teardown (line 684) | def teardown(do_teardown): function set_parent_case (line 698) | def set_parent_case(domain, child_case, parent_case, relationship='child... function make_make_path (line 717) | def make_make_path(current_directory): class PatchMeta (line 734) | class PatchMeta(type): method __init__ (line 744) | def __init__(self, *args, **kwargs): class CursorDebugWrapperWithTraceback (line 749) | class CursorDebugWrapperWithTraceback(utils.CursorDebugWrapper): method execute (line 750) | def execute(self, sql, params=None): method executemany (line 765) | def executemany(self, sql, param_list): class capture_sql (line 784) | class capture_sql(ContextDecorator): method __init__ (line 794) | def __init__(self): method __enter__ (line 798) | def __enter__(self): method __exit__ (line 807) | def __exit__(self, *exc_details): method queries_by_db (line 812) | def queries_by_db(self): method print_sql (line 818) | def print_sql(self, with_traceback=False, width=150): method print_sql_chronologically (line 829) | def print_sql_chronologically(self, with_traceback=False, width=150): function new_db_connection (line 843) | def new_db_connection(alias=DEFAULT_DB_ALIAS): function disable_quickcache (line 857) | def disable_quickcache(test_case=None): function flaky_slow (line 872) | def flaky_slow(test=None, max_runs=5, min_passes=1, rerun_filter=lambda ... FILE: corehq/util/tests/test_argparse_types.py class SystemExitError (line 12) | class SystemExitError(Exception): function wrap_system_exit (line 17) | def wrap_system_exit(): class TestValidateInteger (line 26) | class TestValidateInteger(SimpleTestCase): method setUp (line 28) | def setUp(self): method add_validated_arg (line 32) | def add_validated_arg(self, type, *val_args, **val_kw): method assert_parsed_value (line 36) | def assert_parsed_value(self, argv, value): method assert_parser_error (line 41) | def assert_parser_error(self, argv, err_suffix): method test_validate_range_int_gt5 (line 48) | def test_validate_range_int_gt5(self): method test_validate_range_int_gt5_err (line 52) | def test_validate_range_int_gt5_err(self): method test_validate_range_int_lt5 (line 56) | def test_validate_range_int_lt5(self): method test_validate_range_int_lt5_err (line 60) | def test_validate_range_int_lt5_err(self): method test_validate_range_float_gt0 (line 64) | def test_validate_range_float_gt0(self): method test_validate_range_float_gt0_err (line 68) | def test_validate_range_float_gt0_err(self): FILE: corehq/util/tests/test_bounced_email_manager.py class TestBouncedEmailManager (line 13) | class TestBouncedEmailManager(SimpleTestCase, TestFileMixin): method setUp (line 17) | def setUp(self): method _get_message (line 20) | def _get_message(self, filename): method test_recipients_standard_aws_bounce (line 27) | def test_recipients_standard_aws_bounce(self): method test_recipients_email_delivery_failure (line 37) | def test_recipients_email_delivery_failure(self): method test_recipients_yahoo_qmail (line 44) | def test_recipients_yahoo_qmail(self): method test_recipients_forwarded_bounce (line 51) | def test_recipients_forwarded_bounce(self): method test_recipients_exchange_bounce (line 58) | def test_recipients_exchange_bounce(self): method test_recipients_auto_reply (line 65) | def test_recipients_auto_reply(self): method test_sns_bounce_suppressed (line 72) | def test_sns_bounce_suppressed(self): method test_sns_bounce_general (line 105) | def test_sns_bounce_general(self): method test_sns_bounce_transient (line 138) | def test_sns_bounce_transient(self): method test_sns_bounce_complaint (line 166) | def test_sns_bounce_complaint(self): FILE: corehq/util/tests/test_bounced_emails.py class TestBouncedEmails (line 24) | class TestBouncedEmails(TestCase): method _create_permanent_meta (line 41) | def _create_permanent_meta(email_address, sub_type, num_records=1): method _create_transient_meta (line 51) | def _create_transient_meta(email_address, num_records=1, timestamp=None): method setUpClass (line 62) | def setUpClass(cls): method setUp (line 113) | def setUp(self): method tearDown (line 129) | def tearDown(self): method tearDownClass (line 134) | def tearDownClass(cls): method test_hard_bounce_emails (line 147) | def test_hard_bounce_emails(self): method test_expired_transient_cleanup (line 182) | def test_expired_transient_cleanup(self): method test_get_bounced_system_emails (line 194) | def test_get_bounced_system_emails(self): method test_get_valid_recipients (line 197) | def test_get_valid_recipients(self): FILE: corehq/util/tests/test_cache_util.py class TestExponentialBackoff (line 6) | class TestExponentialBackoff(SimpleTestCase): method tearDown (line 8) | def tearDown(self): method test_backoff (line 11) | def test_backoff(self): method test_backoff_none (line 29) | def test_backoff_none(self): FILE: corehq/util/tests/test_celery_utils.py function test_deserialize_run_every_setting (line 11) | def test_deserialize_run_every_setting(): function make_cases (line 37) | def make_cases(): function test_run_periodic_task_again (line 109) | def test_run_periodic_task_again(name): FILE: corehq/util/tests/test_context_processors.py class FakeCouchUser (line 7) | class FakeCouchUser: method __init__ (line 8) | def __init__(self, analytics_enabled): class FakeProject (line 12) | class FakeProject: method __init__ (line 13) | def __init__(self, ga_opt_out): function _mock_is_hubspot_js_allowed_for_request (line 17) | def _mock_is_hubspot_js_allowed_for_request(request): class TestJsApiKeys (line 26) | class TestJsApiKeys(SimpleTestCase): method test_blocked_couch_user_returns_nothing (line 28) | def test_blocked_couch_user_returns_nothing(self): method test_settings_is_not_mutated_when_google_analytics_is_deleted (line 33) | def test_settings_is_not_mutated_when_google_analytics_is_deleted(self): method test_settings_is_not_mutated_when_hubspot_analytics_is_deleted (line 44) | def test_settings_is_not_mutated_when_hubspot_analytics_is_deleted(self): class TestServerLocationDisplay (line 60) | class TestServerLocationDisplay(SimpleTestCase): method test_environment_in_display_options (line 63) | def test_environment_in_display_options(self): method test_environment_not_in_display_options (line 75) | def test_environment_not_in_display_options(self): FILE: corehq/util/tests/test_couch.py class MockDb (line 15) | class MockDb(object): method get (line 17) | def get(self, doc_id): class MockModel (line 21) | class MockModel(object): method get_db (line 24) | def get_db(): method wrap (line 28) | def wrap(model): function mock_get_context (line 33) | def mock_get_context(): function mock_wrap_context (line 43) | def mock_wrap_context(): class GetDocMockTestCase (line 52) | class GetDocMockTestCase(SimpleTestCase): method test_get_document_or_404_not_found (line 57) | def test_get_document_or_404_not_found(self): method test_get_document_or_404_bad_domain (line 65) | def test_get_document_or_404_bad_domain(self): method test_get_document_or_404_wrapping_error (line 72) | def test_get_document_or_404_wrapping_error(self): method test_get_document_or_404_success (line 80) | def test_get_document_or_404_success(self): class TestLoggingDB (line 88) | class TestLoggingDB(object): method __init__ (line 91) | def __init__(self): method bulk_save (line 95) | def bulk_save(self, docs, use_uuids=True, new_edits=None, **params): class IterDBSimpleTest (line 103) | class IterDBSimpleTest(SimpleTestCase): method test_number_of_calls (line 105) | def test_number_of_calls(self): class IterDBTest (line 120) | class IterDBTest(TestCase): method setUp (line 122) | def setUp(self): method tearDown (line 133) | def tearDown(self): method test_normal_usage (line 137) | def test_normal_usage(self): method test_conflicted_doc (line 146) | def test_conflicted_doc(self): method test_delete (line 163) | def test_delete(self): method test_iter_update (line 181) | def test_iter_update(self): method test_iter_update_no_actual_changes (line 213) | def test_iter_update_no_actual_changes(self): method test_iter_update_bad_return (line 219) | def test_iter_update_bad_return(self): method test_no_retries (line 226) | def test_no_retries(self): class DocumentClassLookupTest (line 245) | class DocumentClassLookupTest(SimpleTestCase): method test_a_few_important_ones (line 247) | def test_a_few_important_ones(self): method test_missing (line 256) | def test_missing(self): FILE: corehq/util/tests/test_couchdb_management.py class CouchConfigTest (line 7) | class CouchConfigTest(SimpleTestCase): method _config (line 11) | def _config(self): method test_default_db_uri (line 24) | def test_default_db_uri(self): method test_default_couch_config_db_uri (line 28) | def test_default_couch_config_db_uri(self): method test_remote_db_uri (line 31) | def test_remote_db_uri(self): method test_all_db_uris_by_slug (line 35) | def test_all_db_uris_by_slug(self): method test_get_db_for_doc_type (line 44) | def test_get_db_for_doc_type(self): method test_get_db_for_db_name (line 50) | def test_get_db_for_db_name(self): method test_get_db_for_db_name_not_found (line 55) | def test_get_db_for_db_name_not_found(self): FILE: corehq/util/tests/test_dates.py class TestQuarterRanges (line 7) | class TestQuarterRanges(SimpleTestCase): function test_quarter_ranges (line 21) | def test_quarter_ranges(self, year, quarter, expected_start, expected_end): function test_invalid_quarters (line 36) | def test_invalid_quarters(self, year, quarter): function test_get_quarter_for_date (line 59) | def test_get_quarter_for_date(self, input_date, year, quarter): FILE: corehq/util/tests/test_decorators.py function test_run_only_when_true (line 6) | def test_run_only_when_true(): function test_run_only_when_false (line 19) | def test_run_only_when_false(): FILE: corehq/util/tests/test_django_migrations.py class TestMigrationAutodetector (line 13) | class TestMigrationAutodetector(TestCase): method test_patch_migration_autodetector (line 15) | def test_patch_migration_autodetector(self): FILE: corehq/util/tests/test_doc_processor.py class TestResumableDocsByTypeIterator (line 29) | class TestResumableDocsByTypeIterator(TestCase): method setUpClass (line 32) | def setUpClass(cls): method tearDownClass (line 45) | def tearDownClass(cls): method setUp (line 53) | def setUp(self): method tearDown (line 67) | def tearDown(self): method create_doc (line 71) | def create_doc(cls, doc_type, ident, domain): method get_iterator (line 84) | def get_iterator(self, chunk_size=2, domain=None): method test_iteration (line 89) | def test_iteration(self): method test_resume_iteration (line 92) | def test_resume_iteration(self): method test_resume_iteration_with_new_chunk_size (line 99) | def test_resume_iteration_with_new_chunk_size(self): method test_iteration_with_domain (line 118) | def test_iteration_with_domain(self): class SimulateDeleteReindexAccessor (line 127) | class SimulateDeleteReindexAccessor(ReindexAccessor): method __init__ (line 128) | def __init__(self, wrapped_accessor, deleted_doc_ids=None, limit_db_al... method model_class (line 137) | def model_class(self): method id_field (line 141) | def id_field(self): method get_docs (line 144) | def get_docs(self, from_db, last_doc_pk=None, limit=500): method get_doc (line 147) | def get_doc(self, doc_id): method doc_to_json (line 152) | def doc_to_json(self, doc): class BaseResumableSqlModelIteratorTest (line 156) | class BaseResumableSqlModelIteratorTest(object): method reindex_accessor (line 159) | def reindex_accessor(self): method create_docs (line 163) | def create_docs(cls, domain, count): method base_setUpClass (line 167) | def base_setUpClass(cls): method base_tearDownClass (line 174) | def base_tearDownClass(cls): method base_setUp (line 177) | def base_setUp(self): method base_tearDown (line 181) | def base_tearDown(self): method get_iterator (line 184) | def get_iterator(self, deleted_doc_ids=None, chunk_size=2): method test_iteration (line 188) | def test_iteration(self): method test_resume_iteration (line 191) | def test_resume_iteration(self): method test_resume_iteration_with_v1_persistent_state (line 198) | def test_resume_iteration_with_v1_persistent_state(self): method test_resume_iteration_with_new_chunk_size (line 210) | def test_resume_iteration_with_new_chunk_size(self): class XFormResumableSqlModelIteratorTest (line 230) | class XFormResumableSqlModelIteratorTest(BaseResumableSqlModelIteratorTe... method reindex_accessor (line 232) | def reindex_accessor(self): method create_docs (line 236) | def create_docs(cls, domain, count): method setUpClass (line 245) | def setUpClass(cls): method tearDownClass (line 250) | def tearDownClass(cls): method setUp (line 254) | def setUp(self): method tearDown (line 258) | def tearDown(self): class CaseResumableSqlModelIteratorTest (line 263) | class CaseResumableSqlModelIteratorTest(BaseResumableSqlModelIteratorTes... method reindex_accessor (line 265) | def reindex_accessor(self): method create_docs (line 269) | def create_docs(cls, domain, count): method setUpClass (line 274) | def setUpClass(cls): method tearDownClass (line 279) | def tearDownClass(cls): method setUp (line 283) | def setUp(self): method tearDown (line 287) | def tearDown(self): class LedgerResumableSqlModelIteratorTest (line 292) | class LedgerResumableSqlModelIteratorTest(BaseResumableSqlModelIteratorT... method reindex_accessor (line 294) | def reindex_accessor(self): method create_docs (line 298) | def create_docs(cls, domain, count): method setUpClass (line 320) | def setUpClass(cls): method tearDownClass (line 325) | def tearDownClass(cls): method setUp (line 330) | def setUp(self): method tearDown (line 334) | def tearDown(self): class DemoProcessor (line 339) | class DemoProcessor(BaseDocProcessor): method __init__ (line 340) | def __init__(self, ignore_docs=None, skip_docs=None): method should_process (line 345) | def should_process(self, doc): method process_doc (line 348) | def process_doc(self, doc): class Bar (line 356) | class Bar(Document): class BaseCouchDocProcessorTest (line 360) | class BaseCouchDocProcessorTest(SimpleTestCase): method _get_row (line 364) | def _get_row(ident, doc_type="Bar"): method _get_view_results (line 372) | def _get_view_results(self, total, chuck_size, doc_type="Bar"): method setUp (line 400) | def setUp(self): method tearDown (line 411) | def tearDown(self): method _get_processor (line 414) | def _get_processor(self, chunk_size=2, ignore_docs=None, skip_docs=Non... class TestCouchDocProcessor (line 432) | class TestCouchDocProcessor(BaseCouchDocProcessorTest): method _test_processor (line 435) | def _test_processor(self, expected_processed, doc_idents, ignore_docs=... method test_single_run_no_filtering (line 445) | def test_single_run_no_filtering(self): method test_filtering (line 448) | def test_filtering(self): method test_multiple_runs_no_skip (line 451) | def test_multiple_runs_no_skip(self): method test_handle_skip (line 455) | def test_handle_skip(self): method test_unhandled_skip (line 463) | def test_unhandled_skip(self): class TestBulkDocProcessor (line 471) | class TestBulkDocProcessor(BaseCouchDocProcessorTest): method setUp (line 474) | def setUp(self): method test_batch_gets_retried (line 491) | def test_batch_gets_retried(self): method test_batch_gets_retried_with_filtering (line 504) | def test_batch_gets_retried_with_filtering(self): method test_filtering (line 520) | def test_filtering(self): method test_remainder_gets_processed (line 527) | def test_remainder_gets_processed(self): method test_reset (line 538) | def test_reset(self): method test_multiple_doc_types (line 557) | def test_multiple_doc_types(self): FILE: corehq/util/tests/test_email_event_utils.py class TestSnsEmailBase (line 22) | class TestSnsEmailBase(TestCase, TestFileMixin): method tearDown (line 26) | def tearDown(self): method _get_message (line 33) | def _get_message(self, filename): class TestBouncedEmailManager (line 40) | class TestBouncedEmailManager(TestSnsEmailBase): method test_scheduled_complaint (line 42) | def test_scheduled_complaint(self): method test_scheduled_general_bounce (line 111) | def test_scheduled_general_bounce(self): method test_scheduled_suppressed_bounce (line 152) | def test_scheduled_suppressed_bounce(self): method test_scheduled_transient_bounce (line 198) | def test_scheduled_transient_bounce(self): method test_send_event (line 237) | def test_send_event(self): FILE: corehq/util/tests/test_excel.py class WorkbookJSONReaderTest (line 14) | class WorkbookJSONReaderTest(SimpleTestCase, TestFileMixin): method test_excel_formula_reading (line 18) | def test_excel_formula_reading(self): method test_get_workbook (line 25) | def test_get_workbook(self): method test_get_workbook_bad_file (line 31) | def test_get_workbook_bad_file(self): method test_get_workbook_duplicate_columns (line 36) | def test_get_workbook_duplicate_columns(self): method test_get_single_worksheet (line 41) | def test_get_single_worksheet(self): method test_get_single_worksheet_by_name (line 46) | def test_get_single_worksheet_by_name(self): method test_get_single_worksheet_missing (line 51) | def test_get_single_worksheet_missing(self): method test_get_workbook_with_file_path_closes_file (line 56) | def test_get_workbook_with_file_path_closes_file(self): FILE: corehq/util/tests/test_files.py class TestFormatFilename (line 8) | class TestFormatFilename(SimpleTestCase): method assertWorksAsHeader (line 10) | def assertWorksAsHeader(self, filename_header): method test_add_extension (line 15) | def test_add_extension(self): method test_header_format (line 19) | def test_header_format(self): function test_format_and_set_as_header (line 45) | def test_format_and_set_as_header(self, filename, expected_filename): FILE: corehq/util/tests/test_ghdiff.py class GhDiffTest (line 6) | class GhDiffTest(SimpleTestCase): method test_diff (line 8) | def test_diff(self): method test_no_css_option (line 15) | def test_no_css_option(self): FILE: corehq/util/tests/test_global_request.py class GlobalRequestTest (line 7) | class GlobalRequestTest(SimpleTestCase): method test_get_and_set (line 9) | def test_get_and_set(self): method test_get_domain (line 14) | def test_get_domain(self): method test_get_domain_null (line 20) | def test_get_domain_null(self): method tearDown (line 24) | def tearDown(self): FILE: corehq/util/tests/test_html_utils.py class StripTagsTests (line 5) | class StripTagsTests(SimpleTestCase): method test_leaves_plain_text_alone (line 6) | def test_leaves_plain_text_alone(self): method test_strips_embedded_tag (line 9) | def test_strips_embedded_tag(self): method test_removes_tags_with_attributes (line 12) | def test_removes_tags_with_attributes(self): FILE: corehq/util/tests/test_io.py class TestClosingContextProxy (line 7) | class TestClosingContextProxy(TestCase): method test_proxy_is_iterable (line 9) | def test_proxy_is_iterable(self): method test_context_identity (line 16) | def test_context_identity(self): FILE: corehq/util/tests/test_itertools.py function test_doctests (line 10) | def test_doctests(): function test_zip_with_gaps_key_funcs (line 15) | def test_zip_with_gaps_key_funcs(): function test_zip_with_gaps_missing_from_all (line 52) | def test_zip_with_gaps_missing_from_all(): function test_zip_with_gaps_not_in_all (line 62) | def test_zip_with_gaps_not_in_all(): function test_zip_with_gaps_unsorted (line 72) | def test_zip_with_gaps_unsorted(): FILE: corehq/util/tests/test_jqueryrmi.py function test_get (line 11) | def test_get(): function test_data_not_passed_to_get (line 18) | def test_data_not_passed_to_get(): function test_non_ajax_get (line 25) | def test_non_ajax_get(): function test_non_rmi_get (line 31) | def test_non_rmi_get(): function test_non_callable_get (line 37) | def test_non_callable_get(): function test_private_method_get (line 43) | def test_private_method_get(): function test_error_get (line 49) | def test_error_get(): function test_post (line 56) | def test_post(): function test_post_with_no_data (line 63) | def test_post_with_no_data(): function test_post_with_non_json_data (line 70) | def test_post_with_non_json_data(): function test_non_ajax_post (line 77) | def test_non_ajax_post(): function test_non_rmi_post (line 83) | def test_non_rmi_post(): function test_non_callable_post (line 89) | def test_non_callable_post(): function test_private_method_post (line 95) | def test_private_method_post(): function test_error_post (line 101) | def test_error_post(): function test_put (line 108) | def test_put(): function test_delete (line 114) | def test_delete(): class RmiView (line 120) | class RmiView(JSONResponseMixin, View): method rmi_endpoint (line 125) | def rmi_endpoint(self, data=None): method err_endpoint (line 129) | def err_endpoint(self, data=None): method private_method (line 132) | def private_method(self, *args, **kw): function get_response (line 136) | def get_response(method, data=None, **extra): function post_response (line 140) | def post_response(method, data=None, **extra): function make_response (line 147) | def make_response(http_method, method, data, extra): FILE: corehq/util/tests/test_json_error.py class JsonErrorTests (line 7) | class JsonErrorTests(SimpleTestCase): function test_json_exception_response_data (line 17) | def test_json_exception_response_data(self, message, expected=None): FILE: corehq/util/tests/test_jsonattrs.py function test_attrsobject (line 15) | def test_attrsobject(): function test_attrsdict (line 41) | def test_attrsdict(): function test_attrsdict_list_of (line 67) | def test_attrsdict_list_of(): function test_attrslist (line 97) | def test_attrslist(): function test_attrslist_dict_of (line 124) | def test_attrslist_dict_of(): function test_jsonattrs_to_json (line 154) | def test_jsonattrs_to_json(): function test_jsonattrs_from_json (line 163) | def test_jsonattrs_from_json(): function test_value_to_string_returns_json_serializable (line 173) | def test_value_to_string_returns_json_serializable(): function test_invalid_value_does_not_save (line 185) | def test_invalid_value_does_not_save(): function test_jsonattrs_formfield__attrdict (line 197) | def test_jsonattrs_formfield__attrdict(): function test_jsonattrs_formfield__attrdict_list_of (line 211) | def test_jsonattrs_formfield__attrdict_list_of(): function test_jsonattrs_formfield__attrslist (line 225) | def test_jsonattrs_formfield__attrslist(): function test_jsonattrs_formfield__attrslist_dict_of (line 239) | def test_jsonattrs_formfield__attrslist_dict_of(): function test_jsonattrs_formfield__attrsobject (line 253) | def test_jsonattrs_formfield__attrsobject(): function _check_jsonattrs_formfield (line 267) | def _check_jsonattrs_formfield(model, field_name, raw_value, empty_value... function get_json_value (line 279) | def get_json_value(model, field_name): function set_json_value (line 290) | def set_json_value(model, field_name, value): class Point (line 302) | class Point: class Value (line 308) | class Value: class Event (line 313) | class Event: method __jsonattrs_to_json__ (line 316) | def __jsonattrs_to_json__(self): method __jsonattrs_from_json__ (line 322) | def __jsonattrs_from_json__(cls, data): FILE: corehq/util/tests/test_jsonobject.py class JsonObjectTest (line 8) | class JsonObjectTest(SimpleTestCase): method test_ms (line 12) | def test_ms(self): method test_no_ms (line 18) | def test_no_ms(self): method test_dt (line 24) | def test_dt(self): class OurJsonObjectTest (line 31) | class OurJsonObjectTest(JsonObjectTest): method test_match (line 34) | def test_match(self): method test_ms (line 37) | def test_ms(self): FILE: corehq/util/tests/test_log.py class TestLogging (line 5) | class TestLogging(SimpleTestCase): method test_bad_traceback (line 7) | def test_bad_traceback(self): method test_that_I_didnt_break_anything (line 19) | def test_that_I_didnt_break_anything(self): FILE: corehq/util/tests/test_markup.py class TestMarkUpURLs (line 10) | class TestMarkUpURLs(SimpleTestCase): method test_handles_empty_string (line 11) | def test_handles_empty_string(self): method test_string_without_urls_returns_string (line 15) | def test_string_without_urls_returns_string(self): method test_creates_markup (line 19) | def test_creates_markup(self): method test_marksup_multiple_urls (line 23) | def test_marksup_multiple_urls(self): method test_output_with_urls_is_safe (line 29) | def test_output_with_urls_is_safe(self): FILE: corehq/util/tests/test_models.py function test_foreign_value_class_attribute (line 13) | def test_foreign_value_class_attribute(): function test_foreign_value_default_is_none (line 18) | def test_foreign_value_default_is_none(): function test_get_foreign_value (line 22) | def test_get_foreign_value(): function test_foreign_value_names (line 29) | def test_foreign_value_names(): class TestForeignValue (line 44) | class TestForeignValue(TestCase): method setUp (line 46) | def setUp(self): method test_set_foreign_value (line 49) | def test_set_foreign_value(self): method test_set_foreign_value_to_none (line 54) | def test_set_foreign_value_to_none(self): method test_set_and_truncate_foreign_value (line 60) | def test_set_and_truncate_foreign_value(self): method test_foreign_value_init (line 64) | def test_foreign_value_init(self): method test_get_foreign_value_after_save (line 68) | def test_get_foreign_value_after_save(self): method test_reuse_foreign_value (line 75) | def test_reuse_foreign_value(self): method test_lru_cache (line 83) | def test_lru_cache(self): method test_get_value (line 101) | def test_get_value(self): method test_foreign_value_duplicate (line 122) | def test_foreign_value_duplicate(self): method test_get_related_lru_cache_disabled (line 132) | def test_get_related_lru_cache_disabled(self): method test_get_value_lru_cache_disabled (line 141) | def test_get_value_lru_cache_disabled(self): function foreign_value_lru_cache_disabled (line 156) | def foreign_value_lru_cache_disabled(cached_func): function test_foreign_object_names (line 169) | def test_foreign_object_names(): function test_foreign_object_class_attribute (line 184) | def test_foreign_object_class_attribute(): function test_foreign_object_init (line 189) | def test_foreign_object_init(): function test_set_foreign_object (line 197) | def test_set_foreign_object(): class TestForeignObject (line 205) | class TestForeignObject(TestCase): method setUp (line 207) | def setUp(self): method test_foreign_object_default_does_not_exist (line 210) | def test_foreign_object_default_does_not_exist(self): method test_set_foreign_object_to_none (line 214) | def test_set_foreign_object_to_none(self): method test_get_foreign_object_after_save (line 221) | def test_get_foreign_object_after_save(self): method test_get_foreign_object_after_set_id_field (line 231) | def test_get_foreign_object_after_set_id_field(self): method test_get_foreign_object_after_set_id_field_to_none (line 239) | def test_get_foreign_object_after_set_id_field_to_none(self): method test_delete_foreign_object (line 248) | def test_delete_foreign_object(self): FILE: corehq/util/tests/test_pagination.py class TestArgsProvider (line 9) | class TestArgsProvider(ArgsProvider): method get_initial_args (line 10) | def get_initial_args(self): method get_next_args (line 13) | def get_next_args(self, last_item, *last_args, **last_kwargs): class TestResumableFunctionIterator (line 21) | class TestResumableFunctionIterator(SimpleTestCase): method setUp (line 23) | def setUp(self): method tearDown (line 33) | def tearDown(self): method get_iterator (line 36) | def get_iterator(self, missing_items=None): method test_iteration (line 47) | def test_iteration(self): method test_resume_iteration (line 50) | def test_resume_iteration(self): method test_resume_iteration_after_exhaustion (line 57) | def test_resume_iteration_after_exhaustion(self): method test_resume_iteration_after_legacy_completion (line 65) | def test_resume_iteration_after_legacy_completion(self): method test_resume_iteration_after_complete_iteration (line 77) | def test_resume_iteration_after_complete_iteration(self): method test_discard_state (line 83) | def test_discard_state(self): method test_iteration_with_iterator_detail (line 90) | def test_iteration_with_iterator_detail(self): FILE: corehq/util/tests/test_queries.py class TestQuerysetToIterator (line 7) | class TestQuerysetToIterator(TestCase): method setUpClass (line 9) | def setUpClass(cls): method tearDownClass (line 17) | def tearDownClass(cls): method test_queryset_to_iterator (line 22) | def test_queryset_to_iterator(self): method test_ordered_queryset (line 38) | def test_ordered_queryset(self): method test_ordered_queryset_ignored (line 43) | def test_ordered_queryset_ignored(self): FILE: corehq/util/tests/test_quickcache.py function test_quickcache_id (line 6) | def test_quickcache_id(): FILE: corehq/util/tests/test_sentry.py class HQSentryTest (line 6) | class HQSentryTest(SimpleTestCase): method test_couch_password (line 8) | def test_couch_password(self): FILE: corehq/util/tests/test_signals.py class SignalsTests (line 7) | class SignalsTests(TestCase): method tearDown (line 8) | def tearDown(self): method test_signals_are_handled (line 11) | def test_signals_are_handled(self): method test_returns_to_default_on_exit (line 22) | def test_returns_to_default_on_exit(self): FILE: corehq/util/tests/test_soft_assert.py class SoftAssertTest (line 11) | class SoftAssertTest(SimpleTestCase): method setUp (line 13) | def setUp(self): method send (line 20) | def send(self, info): method hypotenuse (line 23) | def hypotenuse(self, a, b): method square_root (line 26) | def square_root(self, x): method squared (line 31) | def squared(self, x): method test_soft_assert (line 37) | def test_soft_assert(self): method test_message_newlines (line 62) | def test_message_newlines(self): class SoftAssertHelpersTest (line 67) | class SoftAssertHelpersTest(SimpleTestCase): method test_number_is_power_of_two (line 69) | def test_number_is_power_of_two(self): method test_request_sanitization (line 79) | def test_request_sanitization(self): method test_send_message (line 93) | def test_send_message(self): FILE: corehq/util/tests/test_strings.py class TestGetMaskedString (line 6) | class TestGetMaskedString(SimpleTestCase): method test_handles_empty_string (line 7) | def test_handles_empty_string(self): method test_standard_case_with_defaults (line 11) | def test_standard_case_with_defaults(self): method test_with_custom_mask_character (line 15) | def test_with_custom_mask_character(self): method test_with_custom_reveal_length (line 19) | def test_with_custom_reveal_length(self): method test_string_shorter_than_reveal_length (line 23) | def test_string_shorter_than_reveal_length(self): FILE: corehq/util/tests/test_teeout.py function test_tee_output (line 9) | def test_tee_output(): function test_tee_output_with_KeyboardInterrupt (line 26) | def test_tee_output_with_KeyboardInterrupt(): function test_tee_output_with_SystemExit (line 39) | def test_tee_output_with_SystemExit(): function fakesys (line 49) | def fakesys(): function sanitize_tb (line 60) | def sanitize_tb(value): class Error (line 69) | class Error(Exception): FILE: corehq/util/tests/test_timezone_conversions.py class UIStringTest (line 11) | class UIStringTest(SimpleTestCase): method test_ui_string (line 13) | def test_ui_string(self): method test_safe_strftime (line 19) | def test_safe_strftime(self): method test_safe_strftime_abbr_year (line 24) | def test_safe_strftime_abbr_year(self): class TimezoneConversionTest (line 30) | class TimezoneConversionTest(SimpleTestCase): method test_server_to_user (line 32) | def test_server_to_user(self): method test_user_to_server (line 44) | def test_user_to_server(self): method test_server_to_phone (line 56) | def test_server_to_phone(self): method test_phone_to_server (line 68) | def test_phone_to_server(self): class CloudCareTimeTest (line 81) | class CloudCareTimeTest(SimpleTestCase): method test_utc_phonetime (line 83) | def test_utc_phonetime(self): FILE: corehq/util/tests/test_toggle.py class DeterministicRandomTestCase (line 7) | class DeterministicRandomTestCase(SimpleTestCase): method _random_string (line 9) | def _random_string(self): method _random_strings (line 12) | def _random_strings(self, count): method test_random_strings (line 15) | def test_random_strings(self): method test_consistency (line 22) | def test_consistency(self): method test_unicode (line 31) | def test_unicode(self): method test_randomness (line 36) | def test_randomness(self): FILE: corehq/util/tests/test_utils.py function test_disable_quickcache (line 13) | def test_disable_quickcache(): function test_generate_cases_for_test_method (line 39) | def test_generate_cases_for_test_method(): function test_generate_cases_for_class (line 53) | def test_generate_cases_for_class(): function test_generate_cases_for_function (line 69) | def test_generate_cases_for_function(): function check_case (line 82) | def check_case(Test): class TestFlagEnabled (line 92) | class TestFlagEnabled(TestCase): method test_flag_is_enabled (line 94) | def test_flag_is_enabled(self): method test_flag_disabled_in_class_where_it_is_enabled (line 100) | def test_flag_disabled_in_class_where_it_is_enabled(self): method test_multiple_flags_enabled_at_different_levels (line 111) | def test_multiple_flags_enabled_at_different_levels(self): FILE: corehq/util/tests/test_validation.py function sample_range (line 9) | def sample_range(start, stop): class ValidationTestCase (line 17) | class ValidationTestCase(SimpleTestCase): method testBannedHosts (line 19) | def testBannedHosts(self): method test_rejects_localhost (line 40) | def test_rejects_localhost(self): method test_rejects_ipv6_localhost (line 43) | def test_rejects_ipv6_localhost(self): method test_accepts_host_without_scheme (line 46) | def test_accepts_host_without_scheme(self): method test_rejects_localhost_without_schema (line 49) | def test_rejects_localhost_without_schema(self): method test_unresolvable_address_raises_error (line 52) | def test_unresolvable_address_raises_error(self): FILE: corehq/util/tests/test_view_utils.py function my_view (line 7) | def my_view(request, err): class NotifyExceptionTest (line 11) | class NotifyExceptionTest(SimpleTestCase): method test_notify_exception_utf8 (line 13) | def test_notify_exception_utf8(self): method test_notify_exception_unicode (line 24) | def test_notify_exception_unicode(self): FILE: corehq/util/tests/test_xml.py class XMLSerializeTest (line 8) | class XMLSerializeTest(SimpleTestCase): method test_number_serialization (line 10) | def test_number_serialization(self): method test_string_serialization (line 23) | def test_string_serialization(self): method test_none_serialization (line 26) | def test_none_serialization(self): method test_long_serialization (line 29) | def test_long_serialization(self): method test_date_serialization (line 32) | def test_date_serialization(self): method test_datetime_serialization (line 35) | def test_datetime_serialization(self): method test_time_serialization (line 38) | def test_time_serialization(self): FILE: corehq/util/timer.py class NestableTimer (line 12) | class NestableTimer(object): method __init__ (line 15) | def __init__(self, name, is_root=True): method init (line 24) | def init(self, root, parent): method start (line 28) | def start(self): method stop (line 31) | def stop(self): method append (line 34) | def append(self, timer): method duration (line 39) | def duration(self): method percent_of_total (line 47) | def percent_of_total(self): method percent_of_parent (line 54) | def percent_of_parent(self): method to_dict (line 60) | def to_dict(self): method to_list (line 75) | def to_list(self, exclude_root=False): method print (line 79) | def print(self, prefix=""): method is_leaf_node (line 91) | def is_leaf_node(self): method is_root_node (line 95) | def is_root_node(self): method full_name (line 100) | def full_name(self): method __repr__ (line 105) | def __repr__(self): class TimingContext (line 115) | class TimingContext(object): method __init__ (line 132) | def __init__(self, name=None): method __call__ (line 136) | def __call__(self, name): method peek (line 143) | def peek(self): method is_finished (line 146) | def is_finished(self): method is_started (line 149) | def is_started(self): method start (line 157) | def start(self): method stop (line 162) | def stop(self, name=None): method __enter__ (line 178) | def __enter__(self): method __exit__ (line 182) | def __exit__(self, exc_type, exc_val, exc_tb): method to_dict (line 185) | def to_dict(self): method print (line 205) | def print(self): method duration (line 209) | def duration(self): method to_list (line 212) | def to_list(self, exclude_root=False): method add_to_sentry_breadcrumbs (line 216) | def add_to_sentry_breadcrumbs(self): method __repr__ (line 233) | def __repr__(self): class TimerError (line 239) | class TimerError(Exception): function time_method (line 243) | def time_method(): function set_request_duration_reporting_threshold (line 264) | def set_request_duration_reporting_threshold(seconds): FILE: corehq/util/timezones/conversions.py class _HQTime (line 10) | class _HQTime(object): method done (line 13) | def done(self): class _HQTZTime (line 17) | class _HQTZTime(_HQTime): method __init__ (line 19) | def __init__(self, dt, tzinfo=None): class _HQUTCTime (line 29) | class _HQUTCTime(_HQTime): method __init__ (line 31) | def __init__(self, dt): class ServerTime (line 36) | class ServerTime(_HQUTCTime): method user_time (line 38) | def user_time(self, user_tz): method phone_time (line 42) | def phone_time(self, phone_tz_guess): method ui_string (line 46) | def ui_string(self, fmt=SERVER_DATETIME_FORMAT): class UserTime (line 50) | class UserTime(_HQTZTime): method server_time (line 52) | def server_time(self): method phone_time (line 56) | def phone_time(self, phone_tz_guess): method ui_string (line 59) | def ui_string(self, fmt=USER_DATETIME_FORMAT): class PhoneTime (line 63) | class PhoneTime(_HQTZTime): method server_time (line 70) | def server_time(self): method user_time (line 74) | def user_time(self, user_tz): method done (line 77) | def done(self): function _soft_assert_tz_not_string (line 83) | def _soft_assert_tz_not_string(tz): function _is_timezone_object (line 94) | def _is_timezone_object(tz): function _adjust_datetime_to_utc (line 98) | def _adjust_datetime_to_utc(value, from_tz): function _adjust_utc_datetime_to_timezone (line 118) | def _adjust_utc_datetime_to_timezone(value, to_tz): function _adjust_phone_datetime_to_utc (line 129) | def _adjust_phone_datetime_to_utc(value, phone_tz): function _adjust_utc_datetime_to_phone_datetime (line 141) | def _adjust_utc_datetime_to_phone_datetime(value, phone_tz): FILE: corehq/util/timezones/fields.py class TimeZoneField (line 14) | class TimeZoneField(models.CharField): method __init__ (line 16) | def __init__(self, *args, **kwargs): method validate (line 26) | def validate(self, value, model_instance): method run_validators (line 30) | def run_validators(self, value): method to_python (line 34) | def to_python(self, value): method get_prep_value (line 40) | def get_prep_value(self, value): method get_db_prep_save (line 45) | def get_db_prep_save(self, value, connection=None): method flatten_data (line 51) | def flatten_data(self, follow, obj=None): FILE: corehq/util/timezones/forms.py class TimeZoneChoiceField (line 6) | class TimeZoneChoiceField(forms.TypedChoiceField): method __init__ (line 8) | def __init__(self, *args, **kwargs): FILE: corehq/util/timezones/tests/test_utils.py class GetTimezoneForUserTest (line 17) | class GetTimezoneForUserTest(SimpleTestCase): method test_no_user (line 18) | def test_no_user(self, _): method test_user_with_no_domain_membership (line 21) | def test_user_with_no_domain_membership(self, domain_membership_mock): method test_user_with_domain_membership (line 26) | def test_user_with_domain_membership(self, domain_membership_mock): function test_parse_date_iso_datetime (line 41) | def test_parse_date_iso_datetime(): function test_parse_date_noniso_datetime (line 48) | def test_parse_date_noniso_datetime(): function test_parse_date_date (line 55) | def test_parse_date_date(): function test_parse_date_str (line 60) | def test_parse_date_str(): function test_parse_date_none (line 65) | def test_parse_date_none(): function test_parse_date_int (line 70) | def test_parse_date_int(): FILE: corehq/util/timezones/utils.py function coerce_timezone_value (line 16) | def coerce_timezone_value(value): function validate_timezone_max_length (line 23) | def validate_timezone_max_length(max_length, zones): function get_timezone_for_request (line 30) | def get_timezone_for_request(request=None): function get_timezone_for_domain (line 43) | def get_timezone_for_domain(domain): function get_timezone_for_user (line 53) | def get_timezone_for_user(couch_user_or_id, domain): function get_timezone (line 73) | def get_timezone(request, domain): function parse_date (line 83) | def parse_date(date_string): FILE: corehq/util/translation.py class localize (line 4) | class localize(object): method __init__ (line 15) | def __init__(self, language): method __enter__ (line 18) | def __enter__(self): method __exit__ (line 22) | def __exit__(self, exc_type, exc_val, exc_tb): FILE: corehq/util/urlvalidate/ip_resolver.py function resolve_to_ips (line 5) | def resolve_to_ips(hostname, port=80): function extract_ip (line 18) | def extract_ip(addr_info): class CannotResolveHost (line 22) | class CannotResolveHost(Exception): FILE: corehq/util/urlvalidate/test/mockipinfo.py function hostname_resolving_to_ips (line 8) | def hostname_resolving_to_ips(hostname, ips): function unresolvable_hostname (line 16) | def unresolvable_hostname(hostname): function _create_tuple (line 26) | def _create_tuple(ip): FILE: corehq/util/urlvalidate/test/test_ip_resolver.py class ExtractIPTests (line 12) | class ExtractIPTests(SimpleTestCase): method test_extracts_single_ip (line 13) | def test_extracts_single_ip(self): method test_extracts_ipv6_ip (line 17) | def test_extracts_ipv6_ip(self): class ResolveToIPsTests (line 22) | class ResolveToIPsTests(SimpleTestCase): method test_preserves_order_of_results (line 23) | def test_preserves_order_of_results(self): FILE: corehq/util/urlvalidate/test/test_urlsanitize.py function test_example_urls (line 37) | def test_example_urls(input_url, expected): function test_dns_resolution_to_bad_address (line 55) | def test_dns_resolution_to_bad_address(mock_gethostbyname): class SanitizeIPv6Tests (line 72) | class SanitizeIPv6Tests(SimpleTestCase): method test_valid_ipv6_address_is_accepted (line 73) | def test_valid_ipv6_address_is_accepted(self): method test_recognizes_empty_ipv6_as_ssrf_attempt (line 78) | def test_recognizes_empty_ipv6_as_ssrf_attempt(self): method test_recognizes_all_zeros_as_ssrf_attempt (line 84) | def test_recognizes_all_zeros_as_ssrf_attempt(self): method test_recognizes_trailing_one_as_ssrf_attempt (line 90) | def test_recognizes_trailing_one_as_ssrf_attempt(self): method test_address_with_port_can_cause_ssrf (line 96) | def test_address_with_port_can_cause_ssrf(self): class SanitizeMultiIPTests (line 101) | class SanitizeMultiIPTests(SimpleTestCase): method test_when_all_addresses_are_valid_does_not_raise_exception (line 110) | def test_when_all_addresses_are_valid_does_not_raise_exception(self): method test_when_any_address_is_invalid_an_exception_is_raised (line 114) | def test_when_any_address_is_invalid_an_exception_is_raised(self): method test_mixed_valid_addresses_do_not_raise_exception (line 122) | def test_mixed_valid_addresses_do_not_raise_exception(self): FILE: corehq/util/urlvalidate/urlvalidate.py function validate_user_input_url (line 6) | def validate_user_input_url(url): function sanitize_ip (line 26) | def sanitize_ip(ip_address): class PossibleSSRFAttempt (line 43) | class PossibleSSRFAttempt(Exception): method __init__ (line 44) | def __init__(self, reason): class InvalidURL (line 49) | class InvalidURL(Exception): FILE: corehq/util/validation.py function is_url_or_host_banned (line 20) | def is_url_or_host_banned(url_or_host): function has_scheme (line 37) | def has_scheme(url): class JSONSchemaValidator (line 43) | class JSONSchemaValidator: method __init__ (line 46) | def __init__(self, schema): method __call__ (line 51) | def __call__(self, value): method __eq__ (line 69) | def __eq__(self, other): FILE: corehq/util/view_utils.py function set_file_download (line 25) | def set_file_download(response, filename): class BadRequest (line 29) | class BadRequest(Exception): function json_error (line 48) | def json_error(f): function _get_json_exception_response (line 83) | def _get_json_exception_response(code, request, exception, log_message=N... function _json_exception_response_data (line 101) | def _json_exception_response_data(code, exception): function get_request (line 115) | def get_request(): function reverse (line 119) | def reverse(viewname, params=None, absolute=False, **kwargs): function absolute_reverse (line 132) | def absolute_reverse(*args, **kwargs): function get_case_or_404 (line 136) | def get_case_or_404(domain, case_id): function get_form_or_404 (line 148) | def get_form_or_404(domain, id): function request_as_dict (line 160) | def request_as_dict(request): function is_ajax (line 192) | def is_ajax(request): function get_date_param (line 201) | def get_date_param(request, param_name, timezone=None): function set_language_cookie (line 210) | def set_language_cookie(response, lang_code): FILE: corehq/util/workbook_json/excel.py class IteratorJSONReader (line 21) | class IteratorJSONReader(object): method __init__ (line 37) | def __init__(self, rows): method row_to_json (line 46) | def row_to_json(self, row): method __iter__ (line 52) | def __iter__(self): method get_fieldnames (line 59) | def get_fieldnames(self): method set_field_value (line 68) | def set_field_value(cls, obj, field, value): function get_workbook (line 139) | def get_workbook(file_or_filename, max_row_count=MAX_WORKBOOK_ROWS): function get_single_worksheet (line 162) | def get_single_worksheet(file_or_filename, title=None): class WorksheetNotFound (line 175) | class WorksheetNotFound(Exception): method __init__ (line 177) | def __init__(self, title): class WorksheetJSONReader (line 182) | class WorksheetJSONReader(IteratorJSONReader): method __init__ (line 184) | def __init__(self, worksheet, title=None): class WorkbookJSONReader (line 223) | class WorkbookJSONReader(object): method __init__ (line 225) | def __init__(self, file_or_filename, max_row_count=MAX_WORKBOOK_ROWS): method get_worksheet (line 265) | def get_worksheet(self, title=None, index=None): function flatten_json_to_path (line 285) | def flatten_json_to_path(obj, path=()): function format_header (line 298) | def format_header(path, value): function flatten_json (line 312) | def flatten_json(obj): function json_to_headers (line 317) | def json_to_headers(obj): function alphanumeric_sort_key (line 321) | def alphanumeric_sort_key(key): function enforce_string_type (line 334) | def enforce_string_type(value): FILE: corehq/util/workbook_json/excel_importer.py class ExcelImporter (line 12) | class ExcelImporter(object): method __init__ (line 18) | def __init__(self, task, file_ref_id): method mark_complete (line 38) | def mark_complete(self): method add_progress (line 44) | def add_progress(self, count=1): class SingleExcelImporter (line 53) | class SingleExcelImporter(ExcelImporter): method __init__ (line 59) | def __init__(self, task, file_ref_id): class MultiExcelImporter (line 65) | class MultiExcelImporter(ExcelImporter): method __init__ (line 71) | def __init__(self, task, file_ref_id): FILE: corehq/util/workbook_json/exceptions.py class HeaderValueError (line 1) | class HeaderValueError(Exception): class InvalidExcelFileException (line 5) | class InvalidExcelFileException(Exception): class JSONReaderError (line 9) | class JSONReaderError(Exception): class StringTypeRequiredError (line 13) | class StringTypeRequiredError(Exception): class UnknownFileRefException (line 17) | class UnknownFileRefException(Exception): class WorkbookJSONError (line 21) | class WorkbookJSONError(Exception): class WorkbookTooManyRows (line 25) | class WorkbookTooManyRows(Exception): method __init__ (line 28) | def __init__(self, max_row_count, actual_row_count): FILE: corehq/util/workbook_json/export.py class WorkBook (line 4) | class WorkBook(object): method undefined (line 8) | def undefined(self): method __init__ (line 11) | def __init__(self, file, format): method open (line 17) | def open(self, table_name, headers): method write_row (line 21) | def write_row(self, table_name, row): method close (line 28) | def close(self): FILE: corehq/util/workbook_json/tests/test_spreadsheets.py class IteratorJSONReaderTest (line 5) | class IteratorJSONReaderTest(SimpleTestCase): method normalize (line 8) | def normalize(it): method test_basic (line 14) | def test_basic(self): method test_list_headers_without_number (line 29) | def test_list_headers_without_number(self): FILE: corehq/util/workbook_reading/adapters/csv.py function open_csv_workbook (line 14) | def open_csv_workbook(filename): class _CSVWorkbookAdaptor (line 31) | class _CSVWorkbookAdaptor(object): method __init__ (line 33) | def __init__(self, csv_file): method to_workbook (line 36) | def to_workbook(self): FILE: corehq/util/workbook_reading/adapters/generic.py function open_any_workbook (line 17) | def open_any_workbook(filename): FILE: corehq/util/workbook_reading/adapters/raw_data.py function make_worksheet (line 5) | def make_worksheet(rows=None, title=None): FILE: corehq/util/workbook_reading/adapters/xls.py function open_xls_workbook (line 18) | def open_xls_workbook(filename): class _XLSWorksheetAdaptor (line 33) | class _XLSWorksheetAdaptor(object): method __init__ (line 34) | def __init__(self, xlrd_sheet): method _make_cell_value (line 37) | def _make_cell_value(self, cell): method iter_rows (line 64) | def iter_rows(self): method to_worksheet (line 68) | def to_worksheet(self): class _XLSWorkbookAdaptor (line 73) | class _XLSWorkbookAdaptor(object): method __init__ (line 75) | def __init__(self, xlrd_workbook): method to_workbook (line 78) | def to_workbook(self): FILE: corehq/util/workbook_reading/adapters/xlsx.py function open_xlsx_workbook (line 28) | def open_xlsx_workbook(filename): class _XLSXWorksheetAdaptor (line 48) | class _XLSXWorksheetAdaptor(object): method __init__ (line 49) | def __init__(self, openpyxl_worksheet): method _make_cell_value (line 52) | def _make_cell_value(self, cell): method _max_row (line 59) | def _max_row(self): method iter_rows (line 78) | def iter_rows(self): method to_worksheet (line 84) | def to_worksheet(self): class _XLSXWorkbookAdaptor (line 90) | class _XLSXWorkbookAdaptor(object): method __init__ (line 92) | def __init__(self, openpyxl_workbook): method to_workbook (line 95) | def to_workbook(self): FILE: corehq/util/workbook_reading/datamodels.py class Workbook (line 9) | class Workbook(namedtuple('Workbook', ['worksheets'])): method get_sheet_by_name (line 11) | def get_sheet_by_name(self, name): class Worksheet (line 18) | class Worksheet(namedtuple('Worksheet', ['title', 'max_row', 'iter_rows'... class Cell (line 22) | class Cell(namedtuple('Cell', ['value'])): FILE: corehq/util/workbook_reading/exceptions.py class SpreadsheetFileError (line 1) | class SpreadsheetFileError(Exception): class SpreadsheetFileExtError (line 5) | class SpreadsheetFileExtError(SpreadsheetFileError): class SpreadsheetFileInvalidError (line 9) | class SpreadsheetFileInvalidError(SpreadsheetFileError): class SpreadsheetFileNotFound (line 13) | class SpreadsheetFileNotFound(SpreadsheetFileError, IOError): class SpreadsheetFileEncrypted (line 17) | class SpreadsheetFileEncrypted(SpreadsheetFileError): class CellValueError (line 21) | class CellValueError(Exception): FILE: corehq/util/workbook_reading/tests/test_errors.py class SpreadsheetErrorsTest (line 13) | class SpreadsheetErrorsTest(SimpleTestCase): method test_file_ext (line 14) | def test_file_ext(self): function test_file_not_found (line 26) | def test_file_not_found(self, open_workbook, ext): function test_empty_file (line 33) | def test_empty_file(self, open_workbook, ext): function test_broken_csv_file (line 40) | def test_broken_csv_file(self, open_workbook, ext): function test_mismatched_row_lengths (line 47) | def test_mismatched_row_lengths(self, open_workbook, ext): function test_file_encrypted (line 54) | def test_file_encrypted(self, open_workbook, ext): FILE: corehq/util/workbook_reading/tests/test_spreadsheets.py class SpreadsheetCellTypeTest (line 17) | class SpreadsheetCellTypeTest(SimpleTestCase): method assert_workbooks_equal (line 19) | def assert_workbooks_equal(self, workbook1, workbook2): method _assert_worksheets_equal (line 28) | def _assert_worksheets_equal(self, worksheet1, worksheet2): function test_xlsx_types (line 40) | def test_xlsx_types(self, open_workbook, ext): function test_csv_types (line 69) | def test_csv_types(self, open_workbook, ext): FILE: corehq/util/workbook_reading/tests/utils.py function get_file (line 12) | def get_file(name, ext): function run_on_all_adapters (line 31) | def run_on_all_adapters(test_cls): function run_on_all_adapters_except_csv (line 35) | def run_on_all_adapters_except_csv(test_cls): function run_on_csv_adapter (line 39) | def run_on_csv_adapter(test_cls): FILE: corehq/util/xml_utils.py function serialize (line 7) | def serialize(value): function indent_xml (line 23) | def indent_xml(xml_string): FILE: corehq/warnings.py function configure_warnings (line 76) | def configure_warnings(is_testing=False): function whitelist (line 88) | def whitelist(action, module, message, category=DeprecationWarning, over... function get_whitelist_action (line 103) | def get_whitelist_action(): function augment_warning_messages (line 120) | def augment_warning_messages(): FILE: custom/_legacy/mvp/commcare_extensions.py function mvp_ucr_expressions (line 5) | def mvp_ucr_expressions(): FILE: custom/_legacy/mvp/ucr/reports/expressions.py class TreatmentPlaceExpressionSpec (line 9) | class TreatmentPlaceExpressionSpec(JsonObject): method __call__ (line 12) | def __call__(self, item, evaluation_context=None): class DeathPlaceExpressionSpec (line 35) | class DeathPlaceExpressionSpec(JsonObject): method __call__ (line 38) | def __call__(self, item, evaluation_context=None): class MedicalCauseExpressionSpec (line 74) | class MedicalCauseExpressionSpec(JsonObject): method __call__ (line 77) | def __call__(self, item, evaluation_context=None): class TreatmentProviderExpressionSpec (line 145) | class TreatmentProviderExpressionSpec(JsonObject): method __call__ (line 148) | def __call__(self, item, evaluation_context=None): class NoTreatmentReasonExpressionSpec (line 214) | class NoTreatmentReasonExpressionSpec(JsonObject): method __call__ (line 217) | def __call__(self, item, evaluation_context=None): function treatment_provider_name_expression (line 267) | def treatment_provider_name_expression(spec, factory_context): function death_place_expression (line 272) | def death_place_expression(spec, factory_context): function treatment_place_name_expression (line 277) | def treatment_place_name_expression(spec, factory_context): function no_treatment_reason_expression (line 282) | def no_treatment_reason_expression(spec, factory_context): function medical_cause_expression (line 287) | def medical_cause_expression(spec, factory_context): FILE: custom/abt/commcare_extensions.py function abt_ucr_expressions (line 5) | def abt_ucr_expressions(): FILE: custom/abt/messaging/custom_recipients.py function abt_mobile_worker_case_owner_location_parent_old_framework (line 5) | def abt_mobile_worker_case_owner_location_parent_old_framework(handler, ... function abt_mobile_worker_case_owner_location_parent_new_framework (line 29) | def abt_mobile_worker_case_owner_location_parent_new_framework(case_sche... function abt_location_case_owner_parent_location_old_framework (line 45) | def abt_location_case_owner_parent_location_old_framework(handler, remin... function abt_location_case_owner_parent_location_new_framework (line 62) | def abt_location_case_owner_parent_location_new_framework(case_schedule_... FILE: custom/abt/reports/expressions.py class AbtExpressionSpec (line 11) | class AbtExpressionSpec(JsonObject): method _flag_specs (line 16) | def _flag_specs(self): method _get_val (line 25) | def _get_val(cls, item, path): method _question_answered (line 40) | def _question_answered(cls, value): method _raise_for_any_answer (line 47) | def _raise_for_any_answer(cls, danger_value): method _get_form (line 55) | def _get_form(cls, app_id, xmlns): method _get_questions (line 62) | def _get_questions(cls, app_id, xmlns, lang): method _get_question_options (line 67) | def _get_question_options(cls, item, question_path, section='data'): method _get_form_name (line 77) | def _get_form_name(cls, item): method _get_unchecked (line 86) | def _get_unchecked(cls, xform_instance, question_path, answer, ignore=... method _get_comments (line 104) | def _get_comments(cls, item, spec): method _get_language (line 125) | def _get_language(cls, item): method _get_warning (line 149) | def _get_warning(cls, spec, item): method _get_inspector_names (line 161) | def _get_inspector_names(cls, item): method _get_flag_name (line 180) | def _get_flag_name(cls, item, spec): method _get_responsible_follow_up (line 196) | def _get_responsible_follow_up(self, spec): method _get_description (line 200) | def _get_description(cls, item, spec): method _get_time_spent (line 209) | def _get_time_spent(cls, item, spec): method __call__ (line 216) | def __call__(self, item, evaluation_context=None): method _get_unchecked_flag_doc (line 266) | def _get_unchecked_flag_doc(self, item, spec, partial, names, form_val... method _get_unchecked_special_flag_doc (line 293) | def _get_unchecked_special_flag_doc(self, item, spec, partial, names, ... method _get_q3_special_flag_doc (line 321) | def _get_q3_special_flag_doc(self, item, spec, partial, names, form_va... method _get_not_selected_flag_doc (line 346) | def _get_not_selected_flag_doc(self, item, spec, partial, names, form_... method _get_answer_flag_doc (line 366) | def _get_answer_flag_doc(self, item, spec, partial, names, form_value): class AbtSupervisorExpressionSpec (line 390) | class AbtSupervisorExpressionSpec(AbtExpressionSpec): method _flagspec_filename (line 395) | def _flagspec_filename(self): class AbtSupervisorV2ExpressionSpec (line 402) | class AbtSupervisorV2ExpressionSpec(AbtExpressionSpec): class AbtSupervisorV2019ExpressionSpec (line 408) | class AbtSupervisorV2019ExpressionSpec(AbtExpressionSpec): class AbtSupervisorV2020ExpressionSpec (line 414) | class AbtSupervisorV2020ExpressionSpec(AbtExpressionSpec): function abt_supervisor_expression (line 420) | def abt_supervisor_expression(spec, factory_context): function abt_supervisor_v2_expression (line 424) | def abt_supervisor_v2_expression(spec, factory_context): function abt_supervisor_v2019_expression (line 428) | def abt_supervisor_v2019_expression(spec, factory_context): function abt_supervisor_v2020_expression (line 432) | def abt_supervisor_v2020_expression(spec, factory_context): FILE: custom/abt/reports/filters.py class FilterDataSource (line 12) | class FilterDataSource(SqlData): method __init__ (line 15) | def __init__(self, domain, loc_level): method table_name (line 21) | def table_name(self): method filters (line 25) | def filters(self): method group_by (line 30) | def group_by(self): method order_by (line 34) | def order_by(self): method columns (line 38) | def columns(self): class UserFilterDataSource (line 44) | class UserFilterDataSource(SqlData): method __init__ (line 47) | def __init__(self, domain): method table_name (line 52) | def table_name(self): method filters (line 56) | def filters(self): method group_by (line 61) | def group_by(self): method order_by (line 65) | def order_by(self): method columns (line 69) | def columns(self): class VectorLinkLocFilter (line 76) | class VectorLinkLocFilter(BaseSingleOptionFilter): method options (line 80) | def options(self): class UsernameFilter (line 86) | class UsernameFilter(VectorLinkLocFilter): method options (line 91) | def options(self): class CountryFilter (line 97) | class CountryFilter(VectorLinkLocFilter): class LevelOneFilter (line 102) | class LevelOneFilter(VectorLinkLocFilter): class LevelTwoFilter (line 107) | class LevelTwoFilter(VectorLinkLocFilter): class LevelThreeFilter (line 112) | class LevelThreeFilter(VectorLinkLocFilter): class LevelFourFilter (line 117) | class LevelFourFilter(VectorLinkLocFilter): class SubmissionStatusFilter (line 122) | class SubmissionStatusFilter(BaseSingleOptionFilter): method options (line 128) | def options(self): FILE: custom/abt/reports/filters_2020.py class VectorLinkLocFilter (line 10) | class VectorLinkLocFilter(BaseSingleOptionFilter): method get_level_2s (line 13) | def get_level_2s(self, level_1_ids): method get_level_3s (line 22) | def get_level_3s(self, level_2_ids): class LevelOneFilter (line 32) | class LevelOneFilter(VectorLinkLocFilter): method options (line 37) | def options(self): class LevelTwoFilter (line 47) | class LevelTwoFilter(VectorLinkLocFilter): method options (line 52) | def options(self): class LevelThreeFilter (line 58) | class LevelThreeFilter(VectorLinkLocFilter): method options (line 63) | def options(self): class LevelFourFilter (line 76) | class LevelFourFilter(VectorLinkLocFilter): method options (line 81) | def options(self): FILE: custom/abt/reports/fixture_utils.py function get_locations (line 23) | def get_locations(domain, filters) -> List[LocationTuple]: function get_sorted_levels (line 68) | def get_sorted_levels(domain, filters) -> Tuple[list, dict, dict, dict]: function get_data_type_ids_by_tag (line 128) | def get_data_type_ids_by_tag(domain): function get_fixture_dicts (line 139) | def get_fixture_dicts( function get_fixture_dicts_by_key (line 159) | def get_fixture_dicts_by_key( function get_fixture_items_for_data_type (line 185) | def get_fixture_items_for_data_type(domain, table_id): function fixture_data_item_to_dict (line 189) | def fixture_data_item_to_dict(data_item: LookupTableRow) -> dict: function dict_values_in (line 231) | def dict_values_in( function dict_value_not (line 261) | def dict_value_not( FILE: custom/abt/reports/late_pmt_2020.py class LatePmt2020Report (line 27) | class LatePmt2020Report(GenericTabularReport, CustomProjectReport, Dates... method report_config (line 47) | def report_config(self): method startdate (line 59) | def startdate(self): method enddate (line 63) | def enddate(self): method headers (line 67) | def headers(self): method pmts_submitted_by_date (line 80) | def pmts_submitted_by_date(self) -> Dict[datetime.date, set]: method rows (line 93) | def rows(self): function iter_forms_by_xmlns_received_on (line 122) | def iter_forms_by_xmlns_received_on( function midnight_starting (line 149) | def midnight_starting( function midnight_ending (line 164) | def midnight_ending( FILE: custom/abt/reports/tests/test_fixture_utils.py function test_dict_values_in_param_none (line 13) | def test_dict_values_in_param_none(): function test_dict_values_in_param_empty (line 19) | def test_dict_values_in_param_empty(): function test_dict_values_in_value_none (line 25) | def test_dict_values_in_value_none(): function test_fixture_data_item_to_dict (line 31) | def test_fixture_data_item_to_dict(): function test_empty_fixture_data_item_to_dict (line 64) | def test_empty_fixture_data_item_to_dict(): function test_doctests (line 76) | def test_doctests(): FILE: custom/abt/reports/tests/test_flagspecs.py function test_yaml_formatting (line 10) | def test_yaml_formatting(filename): FILE: custom/abt/reports/tests/test_late_pmt_2020.py function test_doctests (line 6) | def test_doctests(): FILE: custom/abt/reports/views.py function _invert_table (line 25) | def _invert_table(table): class FormattedSupervisoryReport (line 32) | class FormattedSupervisoryReport(CustomConfigurableReport): method export_table (line 35) | def export_table(self): method excel_response (line 64) | def excel_response(self): method email_response (line 113) | def email_response(self): class UniqueSOPSumDataSource (line 119) | class UniqueSOPSumDataSource(SqlData): method __init__ (line 121) | def __init__(self, domain, filter_values): method table_name (line 136) | def table_name(self): method filters (line 140) | def filters(self): method group_by (line 157) | def group_by(self): method columns (line 161) | def columns(self): class CombinedDataSource (line 172) | class CombinedDataSource(object): method __init__ (line 174) | def __init__(self, original_data_source, filter_values): method get_data (line 178) | def get_data(self, start=None, limit=None): method set_filter_values (line 196) | def set_filter_values(self, filter_values): method set_defer_fields (line 199) | def set_defer_fields(self, defer_fields): method set_order_by (line 202) | def set_order_by(self, columns): method column_warnings (line 206) | def column_warnings(self): method group_by (line 210) | def group_by(self): method columns (line 214) | def columns(self): method inner_columns (line 218) | def inner_columns(self): method has_total_row (line 222) | def has_total_row(self): method get_total_records (line 225) | def get_total_records(self): method get_total_row (line 228) | def get_total_row(self): method top_level_columns (line 232) | def top_level_columns(self): method config (line 236) | def config(self): class CustomReportExport (line 240) | class CustomReportExport(ReportExport): method data_source (line 244) | def data_source(self): class FormattedSprayProgressReport (line 249) | class FormattedSprayProgressReport(CustomConfigurableReport): method data_source (line 253) | def data_source(self): method report_export (line 259) | def report_export(self): FILE: custom/abt/tests/test_custom_recipients.py class CustomRecipientTest (line 9) | class CustomRecipientTest(TestCase): method setUp (line 11) | def setUp(self): method tearDown (line 47) | def tearDown(self): method test_recipient_mobile_worker_case_owner_location_parent (line 55) | def test_recipient_mobile_worker_case_owner_location_parent(self): method test_recipient_location_case_owner_parent_location (line 83) | def test_recipient_location_case_owner_parent_location(self): FILE: custom/api/utils.py function apply_updates (line 4) | def apply_updates(doc, update_dict): class EndpointMixin (line 15) | class EndpointMixin(object): method from_config (line 18) | def from_config(cls, config): method _auth (line 21) | def _auth(self): method _urlcombine (line 24) | def _urlcombine(self, base, target): FILE: custom/bha/commcare_extensions.py function bha_csql_fixture_context (line 12) | def bha_csql_fixture_context(domain, restore_user): FILE: custom/bha/tasks.py function bha_prime_formplayer_dbs (line 25) | def bha_prime_formplayer_dbs(): FILE: custom/bha/tests/test_csql_context.py class UserFacilityTests (line 7) | class UserFacilityTests(LocationHierarchyTestCase): method test_get_user_facility_ids (line 27) | def test_get_user_facility_ids(self): FILE: custom/bha/util.py function get_user_facility_ids (line 5) | def get_user_facility_ids(domain, restore_user): function get_user_clinic_ids (line 16) | def get_user_clinic_ids(domain, restore_user, facility_ids): FILE: custom/covid/management/commands/add_assignment_cases.py function needs_update (line 18) | def needs_update(case): function find_owner_id (line 23) | def find_owner_id(case, case_property): class Command (line 33) | class Command(CaseUpdateCommand): method _case_block (line 38) | def _case_block(self, case, owner_id, assignment_type): method find_case_ids (line 49) | def find_case_ids(self, domain): method case_blocks (line 57) | def case_blocks(self, case): method add_arguments (line 82) | def add_arguments(self, parser): FILE: custom/covid/management/commands/add_hq_user_id_to_case.py class Command (line 11) | class Command(CaseUpdateCommand): method case_blocks (line 16) | def case_blocks(self, case): FILE: custom/covid/management/commands/clear_owner_ids.py class Command (line 6) | class Command(CaseUpdateCommand): method case_blocks (line 11) | def case_blocks(self, case): FILE: custom/covid/management/commands/fetch_deleted_cases.py class Command (line 12) | class Command(BaseCommand): method add_arguments (line 14) | def add_arguments(self, parser): method handle (line 21) | def handle(self, **options): function _get_case_type_if_form_creates_case (line 65) | def _get_case_type_if_form_creates_case(form, case_id): function _find_case_type_using_ES (line 72) | def _find_case_type_using_ES(domain, case_id): function _find_case_type_from_transactions (line 87) | def _find_case_type_from_transactions(case): FILE: custom/covid/management/commands/fetch_form_case_counts.py class Command (line 17) | class Command(BaseCommand): method add_arguments (line 19) | def add_arguments(self, parser): method handle (line 27) | def handle(self, domains, start, end, **options): method get_rows (line 38) | def get_rows(self, domains, case_types, start, end): function _expand_domains (line 59) | def _expand_domains(domains): function _get_case_types (line 66) | def _get_case_types(domains): function _get_submissions_counts (line 73) | def _get_submissions_counts(domain, start, end): function _get_case_update_counts (line 87) | def _get_case_update_counts(domain, start, end): function _get_case_opened_counts (line 109) | def _get_case_opened_counts(domain, start, end): FILE: custom/covid/management/commands/run_all_management_command.py function run_command (line 12) | def run_command(command, *args, location=None, inactive_location=None, u... class Command (line 25) | class Command(BaseCommand): method add_arguments (line 27) | def add_arguments(self, parser): method handle (line 32) | def handle(self, csv_file, **options): FILE: custom/covid/management/commands/update_all_activity_complete_date.py class Command (line 18) | class Command(CaseUpdateCommand): method find_case_ids (line 30) | def find_case_ids(self, domain): method case_blocks (line 46) | def case_blocks(self, case): function _get_new_patient_date_value (line 67) | def _get_new_patient_date_value(case): function _get_new_contact_date_value (line 75) | def _get_new_contact_date_value(case): function _get_new_date_value (line 83) | def _get_new_date_value(case, plain_date_props, adjust_date_props): FILE: custom/covid/management/commands/update_case_index_relationship.py function should_skip (line 10) | def should_skip(case, traveler_location_id, inactive_location): function needs_update (line 22) | def needs_update(case): function get_owner_id (line 29) | def get_owner_id(case_type): class Command (line 35) | class Command(CaseUpdateCommand): method case_blocks (line 44) | def case_blocks(self, case): method add_arguments (line 63) | def add_arguments(self, parser): FILE: custom/covid/management/commands/update_cases.py class CaseUpdateCommand (line 13) | class CaseUpdateCommand(BaseCommand): method __init__ (line 19) | def __init__(self): method logger_name (line 23) | def logger_name(self): method case_blocks (line 29) | def case_blocks(self, case): method find_case_ids (line 35) | def find_case_ids(self, domain): method add_arguments (line 38) | def add_arguments(self, parser): method handle (line 44) | def handle(self, domain, case_type, **options): FILE: custom/covid/management/commands/update_owner_ids.py class Command (line 11) | class Command(CaseUpdateCommand): method get_location (line 18) | def get_location(self, owner_id): method case_blocks (line 21) | def case_blocks(self, case): FILE: custom/covid/rules/custom_actions.py function set_all_activity_complete_date_to_today (line 17) | def set_all_activity_complete_date_to_today(case, rule): function close_cases_assigned_to_checkin (line 45) | def close_cases_assigned_to_checkin(checkin_case, rule): function _get_assigned_cases (line 102) | def _get_assigned_cases(checkin_case): FILE: custom/covid/rules/custom_criteria.py function associated_usercase_closed (line 11) | def associated_usercase_closed(case, now): function get_usercase_from_checkin (line 26) | def get_usercase_from_checkin(checkin_case): FILE: custom/covid/tests/test_custom_rules.py class DeactivatedMobileWorkersTest (line 32) | class DeactivatedMobileWorkersTest(BaseCaseRuleTest): method setUp (line 33) | def setUp(self): method tearDown (line 47) | def tearDown(self): method make_checkin_case (line 52) | def make_checkin_case(self, properties=None): method close_all_usercases (line 63) | def close_all_usercases(self): method test_associated_usercase_closed (line 74) | def test_associated_usercase_closed(self): method test_checkin_case_no_username_skipped (line 79) | def test_checkin_case_no_username_skipped(self): method test_custom_action (line 84) | def test_custom_action(self): class AllActivityCompleteDateTest (line 137) | class AllActivityCompleteDateTest(BaseCaseRuleTest): method setUp (line 138) | def setUp(self): method tearDown (line 142) | def tearDown(self): method test_custom_action (line 146) | def test_custom_action(self): FILE: custom/covid/tests/test_management_commands.py class CaseCommandsTest (line 31) | class CaseCommandsTest(TestCase): method setUpClass (line 35) | def setUpClass(cls): method tearDown (line 45) | def tearDown(self): method test_invalid_username (line 50) | def test_invalid_username(self): method submit_case_block (line 54) | def submit_case_block(self, create, case_id, **kwargs): method create_active_location (line 65) | def create_active_location(self, loc_id): method create_checkin_case_with_hq_user_id (line 75) | def create_checkin_case_with_hq_user_id(self): method test_add_hq_user_id_to_case (line 84) | def test_add_hq_user_id_to_case(self): method test_update_case_index_relationship (line 117) | def test_update_case_index_relationship(self): method test_update_case_index_relationship_with_location (line 150) | def test_update_case_index_relationship_with_location(self): method test_update_case_index_relationship_with_inactive_location (line 197) | def test_update_case_index_relationship_with_inactive_location(self): method test_update_owner_ids (line 234) | def test_update_owner_ids(self): method test_add_primary_assignment_cases (line 279) | def test_add_primary_assignment_cases(self): method test_add_temp_assignment_cases (line 297) | def test_add_temp_assignment_cases(self): method test_add_primary_and_temp_assingment_cases (line 315) | def test_add_primary_and_temp_assingment_cases(self): method test_add_assignment_cases_invalid_assigned_to_ids (line 336) | def test_add_assignment_cases_invalid_assigned_to_ids(self): method test_add_assignment_cases_with_inactive_location (line 350) | def test_add_assignment_cases_with_inactive_location(self): method test_clear_owner_ids (line 364) | def test_clear_owner_ids(self): class TestUpdateAllActivityCompleteDate (line 385) | class TestUpdateAllActivityCompleteDate(TestCase): method _make_case (line 389) | def _make_case(case_type, update, inactive_owner=True): method setUpClass (line 404) | def setUpClass(cls): method tearDownClass (line 422) | def tearDownClass(cls): method test (line 427) | def test(self): FILE: custom/dfci_swasth/rules/custom_actions.py function update_counsellor_load (line 13) | def update_counsellor_load(patient_case, rule): function _get_ccuser_caseload_case (line 41) | def _get_ccuser_caseload_case(patient_case): function _get_case_updates (line 50) | def _get_case_updates(ccuser_caseload_case): function _get_updated_counsellor_load (line 64) | def _get_updated_counsellor_load(ccuser_caseload_case): function _get_updated_counsellor_closed_case_load (line 70) | def _get_updated_counsellor_closed_case_load(ccuser_caseload_case): function _get_integer_case_property_value (line 79) | def _get_integer_case_property_value(case, property_name): FILE: custom/dfci_swasth/tests/test_custom_actions.py class UpdateCounsellorPropertiesTest (line 17) | class UpdateCounsellorPropertiesTest(BaseCaseRuleTest): method setUp (line 20) | def setUp(self): method tearDown (line 27) | def tearDown(self): method test_non_patient_case (line 31) | def test_non_patient_case(self): method test_case_update_not_successful_ccuser_caseload_case_missing (line 39) | def test_case_update_not_successful_ccuser_caseload_case_missing(self): method test_case_update_not_successful_ccuser_caseload_property_missing (line 49) | def test_case_update_not_successful_ccuser_caseload_property_missing(s... method test_case_update_not_successful_when_both_properties_non_numeric (line 58) | def test_case_update_not_successful_when_both_properties_non_numeric(s... method test_case_update_not_successful_when_both_properties_invalid (line 65) | def test_case_update_not_successful_when_both_properties_invalid(self): method test_case_update_successful_ccuser_caseload_case_present (line 72) | def test_case_update_successful_ccuser_caseload_case_present(self): method test_case_update_successful_when_only_case_load_non_numeric (line 79) | def test_case_update_successful_when_only_case_load_non_numeric(self): method test_case_update_successful_when_only_coun_closed_case_load_non_numeric (line 86) | def test_case_update_successful_when_only_coun_closed_case_load_non_nu... method _create_cases (line 93) | def _create_cases(self, counsellor_load, counsellor_closed_case_load): FILE: custom/eqa/commcare_extensions.py function eqa_ucr_expressions (line 5) | def eqa_ucr_expressions(): FILE: custom/eqa/expressions.py function get_val (line 21) | def get_val(form, path, default=0, data_type=None): function get_yes_no (line 31) | def get_yes_no(val): function get_two_last_forms (line 41) | def get_two_last_forms(domain, case_id, xmlns, evaluation_context): class EQAExpressionSpec (line 60) | class EQAExpressionSpec(JsonObject): method __call__ (line 66) | def __call__(self, item, evaluation_context=None): class EQAActionItemSpec (line 83) | class EQAActionItemSpec(JsonObject): method __call__ (line 89) | def __call__(self, item, evaluation_context=None): class EQAPercentExpression (line 140) | class EQAPercentExpression(JsonObject): method __call__ (line 146) | def __call__(self, item, evaluation_context=None): function eqa_expression (line 172) | def eqa_expression(spec, factory_context): function cqi_action_item (line 177) | def cqi_action_item(spec, factory_context): function eqa_percent_expression (line 182) | def eqa_percent_expression(spec, factory_context): FILE: custom/gcc_sangath/rules/custom_actions.py function sanitize_session_peer_rating (line 16) | def sanitize_session_peer_rating(session_case, rule): function _get_peer_rating_cases (line 45) | def _get_peer_rating_cases(session_case): function _get_case_updates (line 58) | def _get_case_updates(peer_rating_cases): function _get_sum (line 90) | def _get_sum(case_property, peer_rating_cases): function _get_aggregate (line 98) | def _get_aggregate(case_property, peer_rating_cases): function _get_count (line 106) | def _get_count(case_property, peer_rating_cases): function _is_num (line 113) | def _is_num(value): function _get_latest_peer_review_date (line 134) | def _get_latest_peer_review_date(peer_rating_cases): FILE: custom/gcc_sangath/tests/test_custom_actions.py class SanitizeSessionPeerRatingTest (line 33) | class SanitizeSessionPeerRatingTest(BaseCaseRuleTest): method test_with_no_peer_rating_cases (line 37) | def test_with_no_peer_rating_cases(self, update_case_mock): method test_with_empty_peer_rating_cases (line 50) | def test_with_empty_peer_rating_cases(self): method test_with_peer_rating_cases (line 74) | def test_with_peer_rating_cases(self): method _set_up_cases (line 123) | def _set_up_cases(self, peer_ratings_case_json=None): function test_doctests (line 167) | def test_doctests(): class MockCase (line 174) | class MockCase(dict): method get_case_property (line 175) | def get_case_property(self, prop): function test_get_sum (line 187) | def test_get_sum(): function test_get_count (line 192) | def test_get_count(): function test_get_aggregate (line 197) | def test_get_aggregate(): function test_division_by_zero (line 202) | def test_division_by_zero(): FILE: custom/hmhb/management/commands/repeat_forms_by_external_id.py class Command (line 27) | class Command(BaseCommand): method add_arguments (line 31) | def add_arguments(self, parser): method handle (line 37) | def handle(self, *args, **options): FILE: custom/inddex/const.py class AgeRange (line 9) | class AgeRange: method lower_param (line 17) | def lower_param(self): method upper_param (line 21) | def upper_param(self): class FctGaps (line 43) | class FctGaps: class ConvFactorGaps (line 60) | class ConvFactorGaps: FILE: custom/inddex/example_data/data.py function populate_inddex_domain (line 29) | def populate_inddex_domain(domain): function _get_or_create_user (line 36) | def _get_or_create_user(domain, create=True): function _import_cases (line 45) | def _import_cases(domain, user): function _import_case_type (line 51) | def _import_case_type(domain, case_type, csv_filename, user): function _update_case_id_properties (line 60) | def _update_case_id_properties(domain, user): function _read_csv (line 84) | def _read_csv(filename): function _get_importer_config (line 92) | def _get_importer_config(case_type, headers, user_id): function _import_fixtures (line 105) | def _import_fixtures(domain): function _mk_fixture_data_item (line 130) | def _mk_fixture_data_item(domain, table_id, fields, vals, i): function _rebuild_datasource (line 140) | def _rebuild_datasource(domain): FILE: custom/inddex/filters.py class DateRangeFilter (line 12) | class DateRangeFilter(DatespanFilter): class AgeRangeFilter (line 16) | class AgeRangeFilter(BaseMultipleOptionFilter): method options (line 22) | def options(self): class GenderFilter (line 26) | class GenderFilter(BaseSingleOptionFilter): method options (line 32) | def options(self): class PregnancyFilter (line 39) | class PregnancyFilter(BaseSingleOptionFilter): method options (line 45) | def options(self): class SettlementAreaFilter (line 52) | class SettlementAreaFilter(BaseMultipleOptionFilter): method options (line 58) | def options(self): class BreastFeedingFilter (line 66) | class BreastFeedingFilter(BaseSingleOptionFilter): method options (line 72) | def options(self): class SupplementsFilter (line 79) | class SupplementsFilter(BaseSingleOptionFilter): method options (line 85) | def options(self): class RecallStatusFilter (line 92) | class RecallStatusFilter(BaseSingleOptionFilter): method options (line 98) | def options(self): class R2BGapFilter (line 105) | class R2BGapFilter(BaseDrilldownOptionFilter): method get_labels (line 111) | def get_labels(cls): method drilldown_map (line 119) | def drilldown_map(self): class GapTypeFilter (line 137) | class GapTypeFilter(BaseSingleOptionFilter): method options (line 143) | def options(self): class FoodTypeFilter (line 150) | class FoodTypeFilter(BaseMultipleOptionFilter): method options (line 156) | def options(self): class FaoWhoGiftFoodGroupDescriptionFilter (line 162) | class FaoWhoGiftFoodGroupDescriptionFilter(BaseMultipleOptionFilter): method options (line 168) | def options(self): FILE: custom/inddex/fixtures.py class InddexFixtureError (line 10) | class InddexFixtureError(Exception): function _wrap (line 14) | def _wrap(FixtureClass, kwargs): class RecipeIngredient (line 23) | class RecipeIngredient: class Food (line 31) | class Food: class FoodComposition (line 50) | class FoodComposition: class Nutrient (line 61) | class Nutrient: class ConversionFactor (line 68) | class ConversionFactor: class Language (line 77) | class Language: class FixtureAccessor (line 83) | class FixtureAccessor: method __init__ (line 84) | def __init__(self, domain): method _data_types_ids (line 88) | def _data_types_ids(self): method _get_fixture_dicts (line 94) | def _get_fixture_dicts(self, data_type_tag): method recipes (line 100) | def recipes(self): method _localize (line 110) | def _localize(self, col_name): method foods (line 116) | def foods(self): method foods_by_name (line 127) | def foods_by_name(self): method _nutrients (line 131) | def _nutrients(self): method nutrient_names (line 138) | def nutrient_names(self): method _nutrient_names_by_code (line 142) | def _nutrient_names_by_code(self): method food_compositions (line 146) | def food_compositions(self): method conversion_factors (line 161) | def conversion_factors(self): method lang_code (line 169) | def lang_code(self): function _to_float (line 176) | def _to_float(v): FILE: custom/inddex/food.py class Indicator (line 65) | class Indicator: method __init__ (line 66) | def __init__(self, slug, *tags): class FoodRow (line 183) | class FoodRow: method __init__ (line 185) | def __init__(self, ucr_row, fixtures, ingredient=None): method _set_ingredient_fields (line 215) | def _set_ingredient_fields(self, ingredient): method _set_composition (line 221) | def _set_composition(self): method set_fct_gap (line 246) | def set_fct_gap(self, ingredients=None): method _set_conversion_factors (line 268) | def _set_conversion_factors(self): method age_range (line 292) | def age_range(self): method get_nutrient_per_100g (line 301) | def get_nutrient_per_100g(self, nutrient_name): method get_nutrient_amt (line 305) | def get_nutrient_amt(self, nutrient_name): method __getattr__ (line 308) | def __getattr__(self, name): class FoodData (line 338) | class FoodData: method __init__ (line 343) | def __init__(self, domain, *, datespan, filter_selections): method from_request (line 362) | def from_request(cls, domain, request): method _get_owner_ids (line 372) | def _get_owner_ids(domain, request): method _matches_in_memory_filters (line 382) | def _matches_in_memory_filters(self, row): method _get_grouped_rows (line 400) | def _get_grouped_rows(self): method _get_all_rows (line 420) | def _get_all_rows(self): method rows (line 436) | def rows(self): method _non_recipe_rows (line 443) | def _non_recipe_rows(self, rows): method _recipe_rows (line 452) | def _recipe_rows(self, raw_recipe, raw_ingredients): function _insert_nsr_cols (line 481) | def _insert_nsr_cols(raw_recipe, master_recipe): function _calculate_total_grams (line 494) | def _calculate_total_grams(recipe, ingredients): function _multiply (line 514) | def _multiply(*args): function _maybe_float (line 521) | def _maybe_float(val): FILE: custom/inddex/management/commands/populate_inddex_test_domain.py class Command (line 9) | class Command(BaseCommand): method handle (line 14) | def handle(self, **options): function setup_domain (line 21) | def setup_domain(domain): FILE: custom/inddex/reports/r1_master_data.py class MasterDataReport (line 11) | class MasterDataReport(MultiTabularReport): method fields (line 21) | def fields(self): method data_providers (line 30) | def data_providers(self): class MasterData (line 35) | class MasterData: method __init__ (line 39) | def __init__(self, food_data): method headers (line 43) | def headers(self): method rows (line 47) | def rows(self): method _get_nutrient_headers (line 53) | def _get_nutrient_headers(self): method _get_nutrient_values (line 58) | def _get_nutrient_values(self, row): FILE: custom/inddex/reports/r2a_gaps_summary.py class GapsSummaryReport (line 19) | class GapsSummaryReport(MultiTabularReport): method fields (line 31) | def fields(self): method data_providers (line 40) | def data_providers(self): function get_gaps_data (line 45) | def get_gaps_data(domain, request): class GapsData (line 59) | class GapsData: method __init__ (line 60) | def __init__(self, gaps): method rows (line 64) | def rows(self): class ConvFactorGapsData (line 72) | class ConvFactorGapsData(GapsData): method headers (line 78) | def headers(self): class FctGapsData (line 82) | class FctGapsData(GapsData): method headers (line 88) | def headers(self): FILE: custom/inddex/reports/r2b_gaps_detail.py class GapsDetailReport (line 11) | class GapsDetailReport(MultiTabularReport): method fields (line 26) | def fields(self): method data_providers (line 37) | def data_providers(self): function _matches_filters (line 50) | def _matches_filters(row, gap_class, gap_code, selected_gap_type, select... function get_gaps_data (line 63) | def get_gaps_data(food_data, selected_gap_type=None, selected_gap_code=N... class GapsByItemSummaryData (line 80) | class GapsByItemSummaryData: method __init__ (line 89) | def __init__(self, gaps_data): method rows (line 93) | def rows(self): class GapsDetailsData (line 107) | class GapsDetailsData: method __init__ (line 131) | def __init__(self, gaps_data): method rows (line 135) | def rows(self): FILE: custom/inddex/reports/r3_nutrient_intake.py class NutrientIntakeReport (line 11) | class NutrientIntakeReport(MultiTabularReport): method fields (line 25) | def fields(self): method data_providers (line 40) | def data_providers(self): class IntakeData (line 48) | class IntakeData: method __init__ (line 65) | def __init__(self, food_data): method headers (line 70) | def headers(self): method rows (line 74) | def rows(self): class DailyIntakeData (line 82) | class DailyIntakeData: method __init__ (line 104) | def __init__(self, food_data): method headers (line 109) | def headers(self): method rows (line 113) | def rows(self): function _sum (line 130) | def _sum(items): FILE: custom/inddex/reports/r4_nutrient_stats.py class NutrientStatsReport (line 13) | class NutrientStatsReport(MultiTabularReport): method fields (line 23) | def fields(self): method data_providers (line 37) | def data_providers(self): class NutrientStatsData (line 42) | class NutrientStatsData: method __init__ (line 46) | def __init__(self, food_data): method headers (line 51) | def headers(self): method rows (line 58) | def rows(self): method _get_recall_totals (line 71) | def _get_recall_totals(self): function percentile (line 83) | def percentile(items, q): FILE: custom/inddex/reports/utils.py class MultiTabularReport (line 12) | class MultiTabularReport(DatespanMixin, CustomProjectReport, GenericTabu... method data_providers (line 21) | def data_providers(self): method fixed_cols_spec (line 26) | def fixed_cols_spec(self): method report_context (line 35) | def report_context(self): method export_table (line 62) | def export_table(self): function na_for_None (line 69) | def na_for_None(val): function _format_val (line 73) | def _format_val(val): function format_row (line 89) | def format_row(row): FILE: custom/inddex/tests/test_doctests.py function test_doctests (line 6) | def test_doctests(): FILE: custom/inddex/tests/test_master_report.py function get_expected_report (line 41) | def get_expected_report(filename): function _overwrite_report (line 53) | def _overwrite_report(filename, actual_report): function inddex_domain (line 70) | def inddex_domain(): function setup_module (line 103) | def setup_module(): function get_food_data (line 113) | def get_food_data(*args, **kwargs): function _get_case_ids_by_external_id (line 119) | def _get_case_ids_by_external_id(): function sort_rows (line 124) | def sort_rows(rows): function food_names (line 129) | def food_names(rows): class TestSetupUtils (line 133) | class TestSetupUtils(TestCase): method test_cases_created (line 134) | def test_cases_created(self): method test_fixtures_created (line 144) | def test_fixtures_created(self): class TestUcrAdapter (line 149) | class TestUcrAdapter(TestCase): method test_data_source (line 150) | def test_data_source(self): method test_data_source_filter (line 159) | def test_data_source_filter(self): method test_age_filter (line 171) | def test_age_filter(self): method test_urban_rural (line 180) | def test_urban_rural(self): class TestFixtures (line 190) | class TestFixtures(TestCase): method fixtures_accessor (line 192) | def fixtures_accessor(self): # `fixtures` is a reserved property on T... method test_recipes (line 195) | def test_recipes(self): method test_food_list (line 203) | def test_food_list(self): method test_food_compositions (line 208) | def test_food_compositions(self): method test_conversion_factors (line 213) | def test_conversion_factors(self): method test_languages (line 217) | def test_languages(self): class TestMasterReport (line 221) | class TestMasterReport(TestCase): method test_master_report (line 224) | def test_master_report(self): method run_new_report (line 241) | def run_new_report(self): method assert_columns_equal (line 246) | def assert_columns_equal(self, expected_rows, actual_rows, column): class TestInddexReports (line 261) | class TestInddexReports(TestCase): method assert_reports_match (line 264) | def assert_reports_match(self, csv_filename, actual_report): method test_2a_gaps_summary (line 285) | def test_2a_gaps_summary(self): method test_2b_gaps_reports (line 292) | def test_2b_gaps_reports(self): method test_3_intake (line 297) | def test_3_intake(self): method test_3_daily_intake (line 301) | def test_3_daily_intake(self): method test_4_nutrient_stats (line 305) | def test_4_nutrient_stats(self): method test_sharing_filtered_food_data (line 309) | def test_sharing_filtered_food_data(self): FILE: custom/inddex/ucr_data.py class FoodCaseData (line 13) | class FoodCaseData(SqlData): method columns (line 34) | def columns(self): method table_name (line 40) | def table_name(self): method filters (line 44) | def filters(self): method _age_ranges (line 58) | def _age_ranges(self): method _get_age_range_filter (line 62) | def _get_age_range_filter(self): method _get_age_range_filter_values (line 70) | def _get_age_range_filter_values(self): method filter_values (line 78) | def filter_values(self): FILE: custom/mgh_epic/sync_epic_appointments.py function handle_response (line 23) | def handle_response(response): function generate_epic_jwt (line 29) | def generate_epic_jwt(): function request_epic_access_token (line 49) | def request_epic_access_token(): function get_patient_fhir_id (line 65) | def get_patient_fhir_id(given_name, family_name, birthdate, access_token): function filter_appointments_by_date (line 88) | def filter_appointments_by_date(appointments_entries_json, study_start_d... function get_epic_appointments_for_patient (line 111) | def get_epic_appointments_for_patient(fhir_id, access_token, opened_on, ... function convert_utc_timestamp_to_date_and_time (line 138) | def convert_utc_timestamp_to_date_and_time(utc_timestamp): function sync_all_appointments_domain (line 149) | def sync_all_appointments_domain(domain): FILE: custom/mgh_epic/tasks.py function sync_all_epic_appointments (line 17) | def sync_all_epic_appointments(): FILE: custom/nutrition_project/commcare_extensions.py function ucr_data_sources (line 8) | def ucr_data_sources(): function ucr_reports (line 15) | def ucr_reports(): FILE: custom/nutrition_project/ucr/sum_when_templates.py class ChildDeliverySpec (line 7) | class ChildDeliverySpec(SumWhenTemplateSpec): class ChildWeighedSpec (line 12) | class ChildWeighedSpec(SumWhenTemplateSpec): class ChildLowBirthWeightSpec (line 17) | class ChildLowBirthWeightSpec(SumWhenTemplateSpec): class ChildDeathSpec (line 23) | class ChildDeathSpec(SumWhenTemplateSpec): class WomanDeathSpec (line 28) | class WomanDeathSpec(SumWhenTemplateSpec): class WomanDeathTypeSpec (line 33) | class WomanDeathTypeSpec(SumWhenTemplateSpec): class GenderAndResidentTypeSpec (line 38) | class GenderAndResidentTypeSpec(SumWhenTemplateSpec): class NutritionCenterOpenTodaySpec (line 43) | class NutritionCenterOpenTodaySpec(SumWhenTemplateSpec): class OnTimeVisitCheckSpec (line 48) | class OnTimeVisitCheckSpec(SumWhenTemplateSpec): class BreastfeedingSpec (line 53) | class BreastfeedingSpec(SumWhenTemplateSpec): class ImmediateBreastfeedingInitiatedSpec (line 58) | class ImmediateBreastfeedingInitiatedSpec(SumWhenTemplateSpec): class ComplementaryFeedingStartedCheckSpec (line 63) | class ComplementaryFeedingStartedCheckSpec(SumWhenTemplateSpec): class LatestBMICategorySpec (line 68) | class LatestBMICategorySpec(SumWhenTemplateSpec): FILE: custom/onse/management/commands/fetch_onse_data_set_ids.py class Command (line 10) | class Command(BaseCommand): method handle (line 15) | def handle(self, *args, **options): function set_data_set_ids (line 23) | def set_data_set_ids( FILE: custom/onse/management/commands/update_onse_facility_cases.py class Command (line 12) | class Command(BaseCommand): method add_arguments (line 16) | def add_arguments(self, parser): method handle (line 23) | def handle(self, *args, **options): FILE: custom/onse/models.py class CasePropertyMap (line 13) | class CasePropertyMap: method __str__ (line 19) | def __str__(self): function iter_mappings (line 24) | def iter_mappings() -> Iterator[CasePropertyMap]: function write_mappings (line 32) | def write_mappings(mappings: Iterable[CasePropertyMap]): FILE: custom/onse/tasks.py class CassiusMarcellus (line 45) | class CassiusMarcellus: # TODO: Come up with a better name. Please! method case_block (line 55) | def case_block(self): function update_facility_cases_from_dhis2_data_elements (line 71) | def update_facility_cases_from_dhis2_data_elements(): function _update_facility_cases_from_dhis2_data_elements (line 76) | def _update_facility_cases_from_dhis2_data_elements( function check_server_status (line 99) | def check_server_status(dhis2_server: ConnectionSettings): function execute_update_facility_cases_from_dhis2_data_elements (line 118) | def execute_update_facility_cases_from_dhis2_data_elements( function get_dhis2_server (line 150) | def get_dhis2_server( function get_clays (line 167) | def get_clays() -> Iterable[CassiusMarcellus]: function set_case_updates (line 176) | def set_case_updates( function get_periods (line 225) | def get_periods( function previous_quarters_up_to (line 236) | def previous_quarters_up_to(some_date: date) -> Iterable[str]: function five_years_ago (line 249) | def five_years_ago(): function fetch_data_set (line 256) | def fetch_data_set( function previous_quarter (line 297) | def previous_quarter(some_date: date) -> str: function get_data_element_total (line 312) | def get_data_element_total( function save_cases (line 354) | def save_cases(clays: List[CassiusMarcellus]): function handle_error (line 364) | def handle_error( function handle_success (line 373) | def handle_success( function _notify_message (line 381) | def _notify_message(print_notifications, message, connection_settings, e... FILE: custom/onse/tests.py function test_previous_quarter (line 14) | def test_previous_quarter(): function test_doctests (line 29) | def test_doctests(): class TestUpdateFromDhis2Task (line 34) | class TestUpdateFromDhis2Task(TestCase): method test_retry (line 39) | def test_retry(self, *args): FILE: custom/reports/mc/reports/fields.py class DistrictField (line 5) | class DistrictField(AsyncDrillableFilter): class HealthFacilityField (line 11) | class HealthFacilityField(AsyncDrillableFilter): FILE: custom/reports/mc/reports/models.py class AsyncDrillableFilter (line 7) | class AsyncDrillableFilter(BaseReportFilter): method fdi_to_json (line 20) | def fdi_to_json(self, fdi): method data_types (line 30) | def data_types(self, index=None): method api_root (line 39) | def api_root(self): method full_hierarchy (line 45) | def full_hierarchy(self): method generate_lineage (line 53) | def generate_lineage(self, leaf_type, leaf_item_id): method filter_context (line 82) | def filter_context(self): FILE: custom/reports/mc/reports/sql.py function _int (line 27) | def _int(str): function _missing (line 36) | def _missing(fraction): function _messages (line 44) | def _messages(hf_user_data): function hf_message_content (line 73) | def hf_message_content(report): function add_all (line 87) | def add_all(*args): function percent_format (line 91) | def percent_format(x, y): class McMixin (line 97) | class McMixin(object): method group_by (line 101) | def group_by(self): method first_column (line 109) | def first_column(self): method filters (line 124) | def filters(self): class BaseReport (line 133) | class BaseReport(McMixin, SqlTabularReport, DatespanMixin, CustomProject... method engine_id (line 140) | def engine_id(self): method table_name (line 144) | def table_name(self): method config (line 148) | def config(self): method _get_loc (line 165) | def _get_loc(self, loc_id): method records (line 177) | def records(self): method headers (line 182) | def headers(self): method rows (line 201) | def rows(self): method export_rows (line 244) | def export_rows(self): class DistrictWeekly (line 253) | class DistrictWeekly(BaseReport): method columns (line 263) | def columns(self): class DistrictMonthly (line 400) | class DistrictMonthly(BaseReport): method columns (line 410) | def columns(self): class WeeklyForms (line 567) | class WeeklyForms(SqlData): method table_name (line 570) | def table_name(self): method engine_id (line 574) | def engine_id(self): method group_by (line 578) | def group_by(self): method filters (line 601) | def filters(self): method columns (line 610) | def columns(self): method get_data (line 632) | def get_data(self): class HeathFacilityMonthly (line 651) | class HeathFacilityMonthly(DistrictMonthly): class HealthFacilityWeekly (line 661) | class HealthFacilityWeekly(DistrictWeekly): method columns (line 673) | def columns(self): FILE: custom/reports/mc/static/mc/js/main.js function api_get_children (line 6) | function api_get_children(fdi_uuid, depth, callback) { function FixtureSelectViewModel (line 35) | function FixtureSelectViewModel() { function FixtureModel (line 107) | function FixtureModel(data, root, depth) { FILE: custom/samveg/case_importer/exceptions.py class UnexpectedFileError (line 6) | class UnexpectedFileError(Exception): class RequiredValueMissingError (line 10) | class RequiredValueMissingError(CaseRowError): class CallValuesMissingError (line 14) | class CallValuesMissingError(CaseRowError): class OwnerNameMissingError (line 18) | class OwnerNameMissingError(CaseRowError): class CallValueInvalidError (line 22) | class CallValueInvalidError(CaseRowError): class MobileNumberInvalidError (line 26) | class MobileNumberInvalidError(CaseRowError): class CallNotInLastMonthError (line 30) | class CallNotInLastMonthError(CaseRowError): class UploadLimitReachedError (line 34) | class UploadLimitReachedError(CaseRowError): class UnexpectedSkipCallValidatorValueError (line 38) | class UnexpectedSkipCallValidatorValueError(CaseRowError): FILE: custom/samveg/case_importer/operations.py class BaseRowOperation (line 6) | class BaseRowOperation(object): method __init__ (line 11) | def __init__(self, **kwargs): method run (line 23) | def run(self): class AddCustomCaseProperties (line 27) | class AddCustomCaseProperties(BaseRowOperation): method run (line 29) | def run(self): method _get_visit_type (line 37) | def _get_visit_type(self): function _get_today_date (line 51) | def _get_today_date(): FILE: custom/samveg/case_importer/validators.py class BaseSheetValidator (line 35) | class BaseSheetValidator: method run (line 37) | def run(cls, spreadsheet): class RequiredColumnsValidator (line 47) | class RequiredColumnsValidator(BaseSheetValidator): method run (line 49) | def run(cls, spreadsheet): method _validate_required_columns (line 55) | def _validate_required_columns(cls, spreadsheet): class CallColumnsValidator (line 76) | class CallColumnsValidator(BaseSheetValidator): method run (line 78) | def run(cls, spreadsheet): method _validate_call_columns (line 84) | def _validate_call_columns(cls, spreadsheet): class RequiredValueValidator (line 96) | class RequiredValueValidator(BaseRowOperation): method __init__ (line 98) | def __init__(self, row_num=None, raw_row=None, **kwargs): method run (line 103) | def run(self): method _validate_required_columns (line 107) | def _validate_required_columns(self): class CallValidator (line 129) | class CallValidator(BaseRowOperation): method __init__ (line 131) | def __init__(self, raw_row=None, **kwargs): method run (line 135) | def run(self): class FormatValidator (line 166) | class FormatValidator(BaseRowOperation): method run (line 168) | def run(self): class UploadLimitValidator (line 175) | class UploadLimitValidator(BaseRowOperation): method __init__ (line 177) | def __init__(self, import_context=None, domain=None, **kwargs): method run (line 182) | def run(self): method _upload_limit_reached (line 197) | def _upload_limit_reached(self, owner_name, call_number): method _update_counter (line 201) | def _update_counter(self, owner_name, call_number): method _counter (line 204) | def _counter(self): function get_required_columns (line 210) | def get_required_columns(columns): function _get_latest_call_value_and_number (line 220) | def _get_latest_call_value_and_number(fields_to_update): FILE: custom/samveg/commcare_extensions.py function samveg_case_upload_checks (line 34) | def samveg_case_upload_checks(domain, case_upload): function samveg_case_upload_row_operations (line 43) | def samveg_case_upload_row_operations(domain, row_num, raw_row, fields_t... FILE: custom/samveg/tests/case_importer/operations.py class TestAddCustomCaseProperties (line 9) | class TestAddCustomCaseProperties(SimpleTestCase): method test_added_case_properties (line 10) | def test_added_case_properties(self): FILE: custom/samveg/tests/case_importer/validators.py class TestRequiredColumnsValidator (line 32) | class TestRequiredColumnsValidator(SimpleTestCase, TestFileMixin): method test_unexpected_sheet (line 36) | def test_unexpected_sheet(self): method test_validate_required_columns (line 44) | def test_validate_required_columns(self): class TestCallColumnsValidator (line 67) | class TestCallColumnsValidator(SimpleTestCase, TestFileMixin): method test_validate_call_columns (line 71) | def test_validate_call_columns(self): class TestRequiredValueValidator (line 80) | class TestRequiredValueValidator(SimpleTestCase, TestFileMixin): method _assert_missing_values_for_sheet (line 84) | def _assert_missing_values_for_sheet(self, spreadsheet_name, required_... method test_validate_required_values (line 105) | def test_validate_required_values(self): class TestCallValidator (line 115) | class TestCallValidator(SimpleTestCase): method test_missing_call_column (line 116) | def test_missing_call_column(self): method test_invalid_call_value (line 130) | def test_invalid_call_value(self): method test_call_value_not_in_last_month (line 143) | def test_call_value_not_in_last_month(self): method test_skipping_call_validator (line 155) | def test_skipping_call_validator(self): method test_skipping_call_validator_unexpected_value (line 167) | def test_skipping_call_validator_unexpected_value(self): class TestFormatValidator (line 180) | class TestFormatValidator(SimpleTestCase): method test_mobile_number (line 181) | def test_mobile_number(self): class TestUploadLimitValidator (line 195) | class TestUploadLimitValidator(TestCase): method setUp (line 197) | def setUp(self): method tearDown (line 202) | def tearDown(self): method test_update_counter (line 206) | def test_update_counter(self): method test_upload_limit (line 222) | def test_upload_limit(self): method test_missing_call_column (line 238) | def test_missing_call_column(self): class TestSuccessfulUpload (line 255) | class TestSuccessfulUpload(TestCase): method setUp (line 257) | def setUp(self): method tearDown (line 262) | def tearDown(self): method test_successful_upload (line 266) | def test_successful_upload(self): function _sample_valid_rch_upload (line 277) | def _sample_valid_rch_upload(): FILE: custom/ucla/api.py function notify_dimagi_project_admins (line 11) | def notify_dimagi_project_admins(domain, message): function general_health_message_bank_content (line 19) | def general_health_message_bank_content(reminder, handler, recipient): function mental_health_message_bank_content (line 23) | def mental_health_message_bank_content(reminder, handler, recipient): function sexual_health_message_bank_content (line 27) | def sexual_health_message_bank_content(reminder, handler, recipient): function med_adherence_message_bank_content (line 31) | def med_adherence_message_bank_content(reminder, handler, recipient): function substance_use_message_bank_content (line 35) | def substance_use_message_bank_content(reminder, handler, recipient): function _generic_message_bank_content (line 39) | def _generic_message_bank_content(fixture_name, reminder, handler, recip... function general_health_message_bank_content_new (line 50) | def general_health_message_bank_content_new(recipient, schedule_instance): function mental_health_message_bank_content_new (line 54) | def mental_health_message_bank_content_new(recipient, schedule_instance): function sexual_health_message_bank_content_new (line 58) | def sexual_health_message_bank_content_new(recipient, schedule_instance): function med_adherence_message_bank_content_new (line 62) | def med_adherence_message_bank_content_new(recipient, schedule_instance): function substance_use_message_bank_content_new (line 66) | def substance_use_message_bank_content_new(recipient, schedule_instance): function _get_message_bank_content_new_framework (line 70) | def _get_message_bank_content_new_framework(fixture_name, recipient, sch... function _get_message_bank_content (line 86) | def _get_message_bank_content(fixture_name, domain, schedule_iteration_n... FILE: custom/ucla/forms.py class TaskCreationForm (line 4) | class TaskCreationForm(forms.Form): FILE: custom/ucla/tests.py class TestUCLACustomHandler (line 22) | class TestUCLACustomHandler(TestCase): method setUpClass (line 28) | def setUpClass(cls): method tearDownClass (line 41) | def tearDownClass(cls): method _schedule_instance (line 47) | def _schedule_instance(self, case, iteration_num=1): method _reminder (line 58) | def _reminder(self, iteration_num=1): method _handler (line 65) | def _handler(self): method _setup_fixture_type (line 68) | def _setup_fixture_type(self): method _setup_data_item (line 82) | def _setup_data_item(self, risk='risk1', sequence='1', message='messag... method _get_current_event_messages (line 97) | def _get_current_event_messages(self, schedule_instance): method test_message_bank_doesnt_exist (line 104) | def test_message_bank_doesnt_exist(self): method test_message_bank_doesnt_have_correct_properties (line 109) | def test_message_bank_doesnt_have_correct_properties(self): method test_not_passing_case (line 121) | def test_not_passing_case(self): method test_passing_case_without_risk_profile (line 126) | def test_passing_case_without_risk_profile(self): method test_no_relevant_message_invalid_risk (line 132) | def test_no_relevant_message_invalid_risk(self): method test_no_relevant_message_invalid_seq_num (line 138) | def test_no_relevant_message_invalid_seq_num(self): method test_multiple_relevant_messages (line 145) | def test_multiple_relevant_messages(self): method test_correct_message (line 152) | def test_correct_message(self): method test_message_bank_doesnt_exist_new (line 158) | def test_message_bank_doesnt_exist_new(self): method test_message_bank_doesnt_have_correct_properties_new (line 165) | def test_message_bank_doesnt_have_correct_properties_new(self): method test_not_passing_case_new (line 179) | def test_not_passing_case_new(self): method test_passing_case_without_risk_profile_new (line 190) | def test_passing_case_without_risk_profile_new(self): method test_no_relevant_message_invalid_risk_new (line 198) | def test_no_relevant_message_invalid_risk_new(self): method test_no_relevant_message_invalid_seq_num_new (line 206) | def test_no_relevant_message_invalid_seq_num_new(self): method test_multiple_relevant_messages_new (line 214) | def test_multiple_relevant_messages_new(self): method test_correct_message_new (line 223) | def test_correct_message_new(self): FILE: custom/ucla/views.py function task_creation (line 22) | def task_creation(request, domain, app_id, module_id, form_id): function _ucla_form_modifier (line 59) | def _ucla_form_modifier(form, question_ids): FILE: custom/utils/utils.py function clean_IN_filter_value (line 4) | def clean_IN_filter_value(filter_values, filter_value_name): FILE: deployment/gunicorn/gunicorn_conf.py function post_fork (line 16) | def post_fork(server, worker): function on_starting (line 23) | def on_starting(server): function _on_starting (line 28) | def _on_starting(server, path=None): function _remove_prometheus_metric_files (line 36) | def _remove_prometheus_metric_files(path, worker=None): function child_exit (line 51) | def child_exit(server, worker): function _child_exit (line 55) | def _child_exit(server, worker, path=None): FILE: eslint/lib/rules/no-unblessed-new.js method NewExpression (line 41) | NewExpression(node) { FILE: get_resource_versions.py function get_resource_versions (line 6) | def get_resource_versions(path=None): FILE: hqscripts/management/commands/check_couchdb_auth.py class Command (line 5) | class Command(BaseCommand): method handle (line 8) | def handle(self, **options): FILE: hqscripts/management/commands/compilejsi18n.py class Command (line 5) | class Command(compilejsi18n.Command): method add_arguments (line 7) | def add_arguments(self, parser): method handle (line 10) | def handle(self, **options): FILE: hqscripts/management/commands/createsuperuser.py class Command (line 6) | class Command(CreatesuperuserCommand): method add_arguments (line 7) | def add_arguments(self, parser): method handle (line 12) | def handle(self, *args, **options): FILE: hqscripts/management/commands/list_couchdbs.py class Command (line 5) | class Command(BaseCommand): method handle (line 8) | def handle(self, **options): FILE: hqscripts/management/commands/makemessages.py class Command (line 4) | class Command(makemessages.Command): method add_arguments (line 5) | def add_arguments(self, parser): method handle (line 9) | def handle(self, *args, **options): FILE: hqscripts/management/commands/makemigrations.py class Command (line 13) | class Command(makemigrations.Command): method add_arguments (line 37) | def add_arguments(self, parser): method handle (line 53) | def handle(self, *app_labels, **options): method write_migration_files (line 74) | def write_migration_files(self, *args): method get_migrations_list (line 79) | def get_migrations_list(self, preamble=LOCK_PREAMBLE): method write_migrations_lock (line 104) | def write_migrations_lock(self): method check_migrations_lock (line 109) | def check_migrations_lock(self): FILE: hqscripts/management/commands/pull_exports.py class Command (line 15) | class Command(BaseCommand): method add_arguments (line 18) | def add_arguments(self, parser): method handle (line 22) | def handle(self, *args, **options): function process_requests (line 27) | def process_requests(requests, path_prefix): function process_request (line 37) | def process_request(request, path_prefix, current_time): function process_export (line 69) | def process_export(domain, export_type, export_id, end_date, path_prefix): function process_form_data (line 84) | def process_form_data(domain, form_id, path_prefix): function sanitize_filename (line 99) | def sanitize_filename(filename): function get_domain_start_date (line 103) | def get_domain_start_date(domain): function parse_requests (line 107) | def parse_requests(filename): FILE: hqscripts/management/commands/upload_to_s3.py class Command (line 9) | class Command(BaseCommand): method add_arguments (line 12) | def add_arguments(self, parser): method handle (line 17) | def handle(self, *args, **options): method get_profile (line 26) | def get_profile(self): method is_valid_profile (line 41) | def is_valid_profile(self, profile): method upload_to_s3 (line 45) | def upload_to_s3(self, filename, bucket_name, target_name, profile): FILE: manage.py function main (line 10) | def main(): class GeventCommand (line 56) | class GeventCommand(object): method should_include (line 62) | def should_include(self, args): function _patch_gevent_if_required (line 69) | def _patch_gevent_if_required(args, gevent_commands): function init_hq_python_path (line 90) | def init_hq_python_path(): function _set_source_root_parent (line 97) | def _set_source_root_parent(source_root_parent): function _set_source_root (line 128) | def _set_source_root(source_root): function run_patches (line 133) | def run_patches(): function patch_jsonfield (line 138) | def patch_jsonfield(): function unpatch_sys_modules (line 160) | def unpatch_sys_modules(): function set_default_settings_path (line 168) | def set_default_settings_path(argv): FILE: scripts/cloudant/manage_cloudant.py class AskRun (line 11) | class AskRun(namedtuple('AskRun', 'ask run')): method ask_and_run (line 12) | def ask_and_run(self): class CloudantInstance (line 17) | class CloudantInstance(Auth): method create_database (line 19) | def create_database(self, db_name): method database_exists (line 22) | def database_exists(self, db_name): method get_db (line 25) | def get_db(self, db_name): method generate_api_key (line 28) | def generate_api_key(self): class CloudantDatabase (line 42) | class CloudantDatabase(namedtuple('CloudantInstance', 'instance db_name')): method _get_db_uri (line 43) | def _get_db_uri(self): method _get_security_url (line 49) | def _get_security_url(self): method create (line 55) | def create(self): method exists (line 66) | def exists(self): method grant_api_key_access (line 71) | def grant_api_key_access(self, api_key, admin=False): method revoke_api_key_access (line 94) | def revoke_api_key_access(self, api_key): function get_cloudant_password (line 115) | def get_cloudant_password(username): function ask_user (line 120) | def ask_user(statement): function run_ask_runs (line 127) | def run_ask_runs(ask_runs): function authenticate_cloudant_instance (line 135) | def authenticate_cloudant_instance(username): FILE: scripts/kafka-administer.py function get_num_partitions (line 13) | def get_num_partitions(client, broker): function print_broker_info (line 19) | def print_broker_info(client): function print_topics (line 27) | def print_topics(client): function main (line 39) | def main(): FILE: scripts/tmp-disappearing-form-poller.py function form_blob (line 15) | def form_blob(app_id, form_key): function app_details (line 23) | def app_details(domain, app_id, form_key): function run (line 30) | def run(domain, app_id, form_key, dir="form_blobs", interval_in_seconds=... FILE: scripts/yaml_static_strings.py function format_string (line 35) | def format_string(value, prefix): FILE: settings.py function _pkce_required (line 878) | def _pkce_required(client_id): FILE: settingshelper.py function is_testing (line 13) | def is_testing(): class SharedDriveConfiguration (line 17) | class SharedDriveConfiguration(object): method __init__ (line 18) | def __init__(self, shared_drive_path, restore_dir, transfer_dir, temp_... method _init_dir (line 30) | def _init_dir(self, name): method get_unset_reason (line 42) | def get_unset_reason(self, name): method restore_dir (line 53) | def restore_dir(self): method transfer_enabled (line 57) | def transfer_enabled(self): method get_temp_file (line 61) | def get_temp_file(self, suffix="", prefix="tmp"): function get_server_url (line 66) | def get_server_url(http_method, server_root, username, password): function get_dynamic_db_settings (line 81) | def get_dynamic_db_settings(server_root, username, password, dbname, function get_db_name (line 101) | def get_db_name(dbname, is_test): function assign_test_db_names (line 112) | def assign_test_db_names(dbs): class CouchSettingsHelper (line 124) | class CouchSettingsHelper(namedtuple('CouchSettingsHelper', method make_couchdb_tuples (line 126) | def make_couchdb_tuples(self): method _make_couchdb_tuple (line 134) | def _make_couchdb_tuple(self, row): method get_extra_couchdbs (line 148) | def get_extra_couchdbs(self): method main_db_url (line 172) | def main_db_url(self): method db_urls_by_prefix (line 176) | def db_urls_by_prefix(self): method _get_db_url (line 187) | def _get_db_url(self, config): function celery_failure_handler (line 197) | def celery_failure_handler(task, exc, task_id, args, kwargs, einfo): function fix_logger_obfuscation (line 204) | def fix_logger_obfuscation(fix_logger_obfuscation_, logging_config): function configure_sentry (line 223) | def configure_sentry(server_env, dsn, release): function get_release_name (line 257) | def get_release_name(base_dir, server_env): function get_git_commit (line 268) | def get_git_commit(base_dir): function update_redis_location_for_tests (line 276) | def update_redis_location_for_tests(settings_caches): FILE: testapps/test_elasticsearch/tests/test_prod_es_indices.py class ProdIndexManagementTest (line 13) | class ProdIndexManagementTest(SimpleTestCase): method setUpClass (line 18) | def setUpClass(cls): method tearDownClass (line 28) | def tearDownClass(cls): method test_prod_config (line 32) | def test_prod_config(self): FILE: testapps/test_elasticsearch/tests/test_require_elastic.py class RequireElasticsearchTest (line 9) | class RequireElasticsearchTest(SimpleTestCase): method test_fail_on_assert_errors (line 12) | def test_fail_on_assert_errors(self): method test_fail_on_random_errors (line 18) | def test_fail_on_random_errors(self): method test_no_fail_on_elasticsearch_errors (line 25) | def test_no_fail_on_elasticsearch_errors(self): FILE: testapps/test_elasticsearch/tests/test_xform_es.py class XFormESTestCase (line 18) | class XFormESTestCase(SimpleTestCase): method setUpClass (line 21) | def setUpClass(cls): method setUp (line 25) | def setUp(self): method _ship_forms_to_es (line 30) | def _ship_forms_to_es(cls, metadatas): method tearDownClass (line 41) | def tearDownClass(cls): method test_forms_are_in_index (line 45) | def test_forms_are_in_index(self): method test_query_by_domain (line 53) | def test_query_by_domain(self): method test_query_by_user (line 63) | def test_query_by_user(self): method test_query_completed_date (line 80) | def test_query_completed_date(self): FILE: testapps/test_elasticsearch/tests/utils.py function require_elasticsearch (line 6) | def require_elasticsearch(fn): FILE: testapps/test_gunicorn/tests.py class Logger (line 9) | class Logger: method __init__ (line 10) | def __init__(self): method exception (line 13) | def exception(self, *args, **kwargs): class Server (line 17) | class Server: method __init__ (line 18) | def __init__(self): function setup (line 22) | def setup(): function test_on_starting (line 30) | def test_on_starting(path): function test_on_starting_error (line 34) | def test_on_starting_error(): function test_child_exit (line 42) | def test_child_exit(): FILE: testapps/test_pillowtop/tests/base.py class BasePillowTestCase (line 7) | class BasePillowTestCase(CallCenterDomainMockTest): method setUpClass (line 10) | def setUpClass(cls): method tearDownClass (line 23) | def tearDownClass(cls): FILE: testapps/test_pillowtop/tests/test_app_pillow.py class AppPillowTest (line 31) | class AppPillowTest(TestCase): method setUp (line 35) | def setUp(self): method tearDown (line 39) | def tearDown(self): method test_app_pillow_kafka (line 43) | def test_app_pillow_kafka(self): method _create_app (line 74) | def _create_app(self, name, cleanup=True): method refresh_elasticsearch (line 84) | def refresh_elasticsearch(self, kafka_seq, couch_seq): method test_prune_autogenerated_builds (line 94) | def test_prune_autogenerated_builds(self): method test_hard_delete_app (line 125) | def test_hard_delete_app(self): FILE: testapps/test_pillowtop/tests/test_case_pillow.py class CasePillowTest (line 23) | class CasePillowTest(TestCase): method setUpClass (line 27) | def setUpClass(cls): method setUp (line 32) | def setUp(self): method tearDown (line 38) | def tearDown(self): method test_case_pillow (line 43) | def test_case_pillow(self): method test_case_pillow_error_in_case_es (line 54) | def test_case_pillow_error_in_case_es(self): method test_case_soft_deletion (line 74) | def test_case_soft_deletion(self): method test_case_hard_deletion (line 95) | def test_case_hard_deletion(self): method _create_case_and_sync_to_es (line 115) | def _create_case_and_sync_to_es(self): FILE: testapps/test_pillowtop/tests/test_case_search_pillow.py class CaseSearchPillowTest (line 27) | class CaseSearchPillowTest(TestCase): method setUp (line 32) | def setUp(self): method tearDown (line 37) | def tearDown(self): method test_case_search_reindex_by_domain (line 41) | def test_case_search_reindex_by_domain(self): method test_sql_case_search_pillow (line 49) | def test_sql_case_search_pillow(self): method _get_kafka_seq (line 70) | def _get_kafka_seq(self): method test_geopoint_property (line 74) | def test_geopoint_property(self): method _make_data_dictionary (line 113) | def _make_data_dictionary(self, gps_properties): method _get_prop (line 119) | def _get_prop(case_properties, key): method _make_case (line 122) | def _make_case(self, domain=None, case_properties=None): method _assert_case_in_es (line 131) | def _assert_case_in_es(self, domain, case): method _assert_index_empty (line 153) | def _assert_index_empty(self): method _bootstrap_cases_in_es_for_domain (line 158) | def _bootstrap_cases_in_es_for_domain(self, domain): FILE: testapps/test_pillowtop/tests/test_changes.py class ChangeFeedDbTest (line 12) | class ChangeFeedDbTest(TestCase): method setUp (line 14) | def setUp(self): method test_basic_functionality (line 19) | def test_basic_functionality(self): method _extract_changes_from_call_args (line 33) | def _extract_changes_from_call_args(self, call_args_list): function _make_couch_pillow (line 43) | def _make_couch_pillow(couch_db): FILE: testapps/test_pillowtop/tests/test_chunk_pillow.py class ChunkedProcessingTest (line 17) | class ChunkedProcessingTest(TestCase): method _produce_changes (line 19) | def _produce_changes(self, count): method test_basic (line 29) | def test_basic(self): FILE: testapps/test_pillowtop/tests/test_domain_pillow.py class DomainPillowTest (line 20) | class DomainPillowTest(TestCase): method setUp (line 22) | def setUp(self): method test_kafka_domain_pillow (line 26) | def test_kafka_domain_pillow(self): method test_kafka_domain_pillow_deletions (line 44) | def test_kafka_domain_pillow_deletions(self): method test_reverted_domain_pillow_deletion (line 63) | def test_reverted_domain_pillow_deletion(self): method test_no_changes (line 101) | def test_no_changes(self, mock_iter, mock_update): method _verify_domain_in_es (line 107) | def _verify_domain_in_es(self, domain_name): FILE: testapps/test_pillowtop/tests/test_form_pillow.py class FormPillowTest (line 23) | class FormPillowTest(TestCase): method setUp (line 26) | def setUp(self): method tearDown (line 34) | def tearDown(self): method test_form_pillow_sql (line 38) | def test_form_pillow_sql(self): method test_form_pillow_non_existant_build_id (line 54) | def test_form_pillow_non_existant_build_id(self): method test_form_pillow_mismatch_domains (line 70) | def test_form_pillow_mismatch_domains(self): method test_two_forms_with_same_app (line 88) | def test_two_forms_with_same_app(self): method _make_form (line 109) | def _make_form(self, build_id=None): method _get_kafka_seq (line 119) | def _get_kafka_seq(self): FILE: testapps/test_pillowtop/tests/test_group_pillow.py class GroupPillowTest (line 20) | class GroupPillowTest(TestCase): method setUp (line 22) | def setUp(self): method test_kafka_group_pillow (line 25) | def test_kafka_group_pillow(self): method _verify_group_in_es (line 49) | def _verify_group_in_es(self, group): FILE: testapps/test_pillowtop/tests/test_grouptouser_pillow.py class GroupToUserPillowTest (line 28) | class GroupToUserPillowTest(SimpleTestCase): method setUp (line 32) | def setUp(self): method _check_es_user (line 37) | def _check_es_user(self, group_ids=None, group_names=None): method _create_es_user_without_db_calls (line 42) | def _create_es_user_without_db_calls(self, *args): method test_update_es_user_with_groups (line 46) | def test_update_es_user_with_groups(self): method test_update_es_user_with_groups_remove_user (line 75) | def test_update_es_user_with_groups_remove_user(self): method test_remove_user_from_groups_partial_match (line 93) | def test_remove_user_from_groups_partial_match(self): function _assert_es_user_and_groups (line 114) | def _assert_es_user_and_groups(test_case, user_id, group_ids=None, group... function _create_es_user (line 128) | def _create_es_user(user_id, domain): class GroupToUserPillowDbTest (line 143) | class GroupToUserPillowDbTest(TestCase): method process_pillow (line 145) | def process_pillow(self): method test_pillow (line 168) | def test_pillow(self): method test_pillow_deletion (line 171) | def test_pillow_deletion(self): function _group_to_change_meta (line 187) | def _group_to_change_meta(group): class GroupsToUserReindexerTest (line 196) | class GroupsToUserReindexerTest(TestCase): method setUp (line 198) | def setUp(self): method test_groups_to_user_reindexer (line 202) | def test_groups_to_user_reindexer(self): FILE: testapps/test_pillowtop/tests/test_pillows_cases.py class TestPillows (line 294) | class TestPillows(TestCase): method testXFormPillowSingleCaseProcess (line 297) | def testXFormPillowSingleCaseProcess(self): method testXFormPillowListCaseProcess (line 308) | def testXFormPillowListCaseProcess(self): method testOwnerIDSetOnTransform (line 321) | def testOwnerIDSetOnTransform(self): FILE: testapps/test_pillowtop/tests/test_reindexer.py class PillowtopReindexerTest (line 54) | class PillowtopReindexerTest(TestCase): method test_domain_reindexer (line 57) | def test_domain_reindexer(self): method test_case_reindexer_v2 (line 70) | def test_case_reindexer_v2(self): method test_case_search_reindexer (line 79) | def test_case_search_reindexer(self): method test_xform_reindexer_v2 (line 89) | def test_xform_reindexer_v2(self): method _assert_es_empty (line 99) | def _assert_es_empty(self, esquery=CaseES()): method _assert_case_is_in_es (line 103) | def _assert_case_is_in_es(self, case, esquery=CaseES()): method _assert_form_is_in_es (line 112) | def _assert_form_is_in_es(self, form): method _assert_index_empty (line 120) | def _assert_index_empty(self, esquery=CaseES()): class CheckpointCreationTest (line 125) | class CheckpointCreationTest(CallCenterDomainMockTest): function test_checkpoint_creation (line 137) | def test_checkpoint_creation(self, reindexer_factory, pillow_name): function test_no_checkpoint_creation (line 170) | def test_no_checkpoint_creation(self, reindexer_factory, pillow_name): class UserReindexerTest (line 205) | class UserReindexerTest(TestCase): method setUp (line 207) | def setUp(self): method setUpClass (line 212) | def setUpClass(cls): method test_user_reindexer_v2 (line 216) | def test_user_reindexer_v2(self): method test_web_user_reindexer_v2 (line 222) | def test_web_user_reindexer_v2(self): method _assert_user_in_es (line 228) | def _assert_user_in_es(self, username, is_webuser=False): class GroupReindexerTest (line 241) | class GroupReindexerTest(TestCase): method setUp (line 243) | def setUp(self): method test_group_reindexer (line 247) | def test_group_reindexer(self): method _assert_group_in_es (line 253) | def _assert_group_in_es(self, group): function _create_and_save_a_case (line 263) | def _create_and_save_a_case(): FILE: testapps/test_pillowtop/tests/test_settings.py class PillowtopSettingsTest (line 12) | class PillowtopSettingsTest(TestCase, TestFileMixin): method setUp (line 17) | def setUp(self): method tearDown (line 21) | def tearDown(self): method test_instantiate_all (line 24) | def test_instantiate_all(self): method get_expected_meta (line 32) | def get_expected_meta(self): method _rewrite_file (line 39) | def _rewrite_file(self, pillow_configs): function _pillow_meta_from_config (line 48) | def _pillow_meta_from_config(pillow_config): FILE: testapps/test_pillowtop/tests/test_sms_pillow.py class SqlSMSPillowTest (line 23) | class SqlSMSPillowTest(TestCase): method _to_json (line 27) | def _to_json(self, sms_dict, sms): method test_sql_sms_pillow (line 40) | def test_sql_sms_pillow(self, mock_do_publish): FILE: testapps/test_pillowtop/tests/test_user_pillow.py class UserPillowTestBase (line 26) | class UserPillowTestBase(BasePillowTestCase): method setUp (line 27) | def setUp(self): method setUpClass (line 32) | def setUpClass(cls): class UserPillowTest (line 38) | class UserPillowTest(UserPillowTestBase): method test_kafka_user_pillow (line 40) | def test_kafka_user_pillow(self): method test_kafka_user_pillow_deletion (line 43) | def test_kafka_user_pillow_deletion(self): method _make_and_test_user_kafka_pillow (line 58) | def _make_and_test_user_kafka_pillow(self, username): method _verify_user_in_es (line 73) | def _verify_user_in_es(self, username): class UnknownUserPillowTest (line 81) | class UnknownUserPillowTest(UserPillowTestBase): method test_unknown_user_pillow (line 83) | def test_unknown_user_pillow(self): method _get_kafka_seq (line 111) | def _get_kafka_seq(self): function _user_to_change_meta (line 115) | def _user_to_change_meta(user): FILE: testapps/test_pillowtop/tests/test_xform_pillow.py class XFormPillowTest (line 27) | class XFormPillowTest(TestCase): method setUpClass (line 34) | def setUpClass(cls): method setUp (line 50) | def setUp(self): method tearDown (line 54) | def tearDown(self): method tearDownClass (line 63) | def tearDownClass(cls): method test_xform_pillow (line 67) | def test_xform_pillow(self): method test_form_soft_deletion (line 79) | def test_form_soft_deletion(self): method test_form_hard_deletion (line 95) | def test_form_hard_deletion(self): method test_app_metadata_tracker_non_batch (line 112) | def test_app_metadata_tracker_non_batch(self): method test_app_metadata_tracker (line 125) | def test_app_metadata_tracker(self): method test_app_metadata_tracker_synclog_processed (line 149) | def test_app_metadata_tracker_synclog_processed(self): method _test_heartbeat (line 171) | def _test_heartbeat(self, num_submissions): method test_app_metadata_tracker_heartbeat_processed (line 196) | def test_app_metadata_tracker_heartbeat_processed(self): method test_app_metadata_tracker_heartbeat_processed_with_sync_prior (line 200) | def test_app_metadata_tracker_heartbeat_processed_with_sync_prior(self): method test_form_pillow_error_in_form_metadata (line 209) | def test_form_pillow_error_in_form_metadata(self): method _create_form_and_sync_to_es (line 221) | def _create_form_and_sync_to_es(self): method _create_form (line 227) | def _create_form(self): class TransformXformForESTest (line 234) | class TransformXformForESTest(SimpleTestCase): method test_transform_xform_for_elasticsearch_app_versions (line 235) | def test_transform_xform_for_elasticsearch_app_versions(self): method test_transform_xform_for_elasticsearch_app_versions_none (line 250) | def test_transform_xform_for_elasticsearch_app_versions_none(self): method test_transform_xform_for_elasticsearch_location (line 265) | def test_transform_xform_for_elasticsearch_location(self): method test_transform_xform_for_elasticsearch_location_missing (line 279) | def test_transform_xform_for_elasticsearch_location_missing(self): method test_transform_xform_for_elasticsearch_location_bad (line 292) | def test_transform_xform_for_elasticsearch_location_bad(self): method test_transform_xform_base_case_dates (line 306) | def test_transform_xform_base_case_dates(self): method test_transform_xform_base_case_xmlns (line 322) | def test_transform_xform_base_case_xmlns(self): FILE: testapps/test_pillowtop/utils.py class process_pillow_changes (line 13) | class process_pillow_changes(ContextDecorator): method __init__ (line 14) | def __init__(self, pillow_name_or_instance=None, pillow_kwargs=None): method add_pillow (line 21) | def add_pillow(self, pillow_name_or_instance, pillow_kwargs=None): method _get_pillow (line 24) | def _get_pillow(self, pillow_name, pillow_kwargs): method _populate (line 28) | def _populate(self): method __enter__ (line 39) | def __enter__(self): method __exit__ (line 46) | def __exit__(self, exc_type, exc_val, exc_tb): class real_pillow_settings (line 51) | class real_pillow_settings(ContextDecorator): method __enter__ (line 52) | def __enter__(self): method __exit__ (line 58) | def __exit__(self, exc_type, exc_val, exc_tb): class capture_kafka_changes_context (line 62) | class capture_kafka_changes_context(object): method __init__ (line 63) | def __init__(self, *topics): method __enter__ (line 71) | def __enter__(self): method __exit__ (line 76) | def __exit__(self, exc_type, exc_val, exc_tb): FILE: testsettings.py function _set_logging_levels (line 90) | def _set_logging_levels(levels): FILE: webpack/appPaths.js constant BUILD_ARTIFACTS_DIR (line 7) | const BUILD_ARTIFACTS_DIR = path.resolve(__dirname, '_build'); constant TEMPLATES_DIR (line 8) | const TEMPLATES_DIR = 'templates'; constant APPS_PATH (line 9) | const APPS_PATH = path.resolve(__BASE, 'corehq', 'apps'); constant EX_SUBMODULES_PATH (line 10) | const EX_SUBMODULES_PATH = path.resolve(__BASE, 'corehq', 'ex-submodules'); constant SUBMODULES_PATH (line 11) | const SUBMODULES_PATH = path.resolve(__BASE, 'submodules'); constant MESSAGING_PATH (line 12) | const MESSAGING_PATH = path.resolve(__BASE, 'corehq', 'messaging'); constant MOTECH_PATH (line 13) | const MOTECH_PATH = path.resolve(__BASE, 'corehq', 'motech'); constant CUSTOM_PATH (line 14) | const CUSTOM_PATH = path.resolve(__BASE, 'custom'); FILE: webpack/plugins.js class EntryChunksPlugin (line 6) | class EntryChunksPlugin { method constructor (line 22) | constructor(options = {}) { method apply (line 26) | apply(compiler) { FILE: webpack/utils.js constant SETTINGS_FILE (line 7) | const SETTINGS_FILE = path.join(appPaths.BUILD_ARTIFACTS_DIR, 'settings.... constant DETAILS_FILE (line 8) | const DETAILS_FILE = path.join(appPaths.BUILD_ARTIFACTS_DIR, 'details.js... constant DETAILS (line 22) | const DETAILS = fetchJsonDataOrDefault(DETAILS_FILE, {}); constant SETTINGS (line 27) | const SETTINGS = fetchJsonDataOrDefault(SETTINGS_FILE, { constant WEBPACK_PATH (line 31) | const WEBPACK_PATH = path.join(SETTINGS.staticfilesPath, 'webpack'); constant WEBPACK_B3_PATH (line 32) | const WEBPACK_B3_PATH = path.join(SETTINGS.staticfilesPath, 'webpack_b3');