def tearDownClass(cls): delete_domain_phone_numbers(TEST_DOMAIN) CommCareUser.get_by_username('stella').delete() CommCareUser.get_by_username('super').delete() FacilityInCharge.objects.all().delete() LocationType.objects.all().delete() for product in Product.by_domain(TEST_DOMAIN): product.delete() SQLProduct.objects.all().delete() EWSGhanaConfig.for_domain(TEST_DOMAIN).delete() DocDomainMapping.objects.all().delete() Domain.get_by_name(TEST_DOMAIN).delete() super(EWSScriptTest, cls).tearDownClass()
def tearDownClass(cls): delete_domain_phone_numbers(TEST_DOMAIN) CommCareUser.get_by_username('stella').delete() CommCareUser.get_by_username('super').delete() FacilityInCharge.objects.all().delete() LocationType.objects.all().delete() for product in Product.by_domain(TEST_DOMAIN): product.delete() SQLProduct.objects.all().delete() EWSGhanaConfig.for_domain(TEST_DOMAIN).delete() DocDomainMapping.objects.all().delete() Domain.get_by_name(TEST_DOMAIN).delete() super(EWSScriptTest, cls).tearDownClass()
def tearDownClass(cls): MobileBackend.load_by_name(TEST_DOMAIN, TEST_BACKEND).delete() CommCareUser.get_by_username('stella').delete() CommCareUser.get_by_username('super').delete() delete_all_locations() LocationType.objects.all().delete() for product in Product.by_domain(TEST_DOMAIN): product.delete() SQLProduct.objects.all().delete() EWSGhanaConfig.for_domain(TEST_DOMAIN).delete() DocDomainMapping.objects.all().delete() generator.delete_all_subscriptions() Domain.get_by_name(TEST_DOMAIN).delete()
def tearDownClass(cls): MobileBackend.load_by_name(TEST_DOMAIN, TEST_BACKEND).delete() CommCareUser.get_by_username('stella').delete() CommCareUser.get_by_username('super').delete() delete_all_locations() LocationType.objects.all().delete() for product in Product.by_domain(TEST_DOMAIN): product.delete() SQLProduct.objects.all().delete() EWSGhanaConfig.for_domain(TEST_DOMAIN).delete() DocDomainMapping.objects.all().delete() generator.delete_all_subscriptions() Domain.get_by_name(TEST_DOMAIN).delete()
def tearDownClass(cls): CommCareUser.get_by_username("stella").delete() CommCareUser.get_by_username("super").delete() FacilityInCharge.objects.all().delete() delete_all_locations() LocationType.objects.all().delete() for product in Product.by_domain(TEST_DOMAIN): product.delete() SQLProduct.objects.all().delete() EWSGhanaConfig.for_domain(TEST_DOMAIN).delete() DocDomainMapping.objects.all().delete() generator.delete_all_subscriptions() cls.sms_backend_mapping.delete() cls.backend.delete() Domain.get_by_name(TEST_DOMAIN).delete()
def handle(verified_contact, text, msg=None): user = verified_contact.owner if verified_contact else None domain = user.domain if not domain: return False if not EWSGhanaConfig.for_domain(domain): return False args = text.split() if not args: send_sms_to_verified_number(verified_contact, unicode(INVALID_MESSAGE)) return True keyword = args[0] args = args[1:] params = { 'user': user, 'domain': domain, 'args': args, 'msg': msg, 'verified_contact': verified_contact } def not_function(word): if args and re.match("del", word): return NotDeliveredHandler elif args and re.match("sub", word): return NotSubmittedHandler return None handlers = { ('help', ): HelpHandler, ('stop', ): StopHandler, ('start', ): StartHandler, ('language', 'lang', 'lugha'): LanguageHandler, ('yes', 'no', 'y', 'n'): RequisitionHandler, ('undo', 'replace', 'revoke'): UndoHandler, ('soh',): AlertsHandler, ('not',): not_function(args[0]) if args else None, ('rec', 'receipts', 'received'): ReceiptsHandler } def choose_handler(keyword): for k, v in handlers.iteritems(): if keyword.lower() in k: return v return None handler_class = choose_handler(keyword) handler = handler_class(**params) if handler_class else None if handler: if args: return handler.handle() else: handler.help() return True else: return AlertsHandler(**params).handle()
def handle(verified_contact, text, msg=None): user = verified_contact.owner if verified_contact else None domain = user.domain if not domain: return False if not EWSGhanaConfig.for_domain(domain): return False args = text.split() if not args: send_sms_to_verified_number(verified_contact, unicode(INVALID_MESSAGE)) return True keyword = args[0] args = args[1:] params = { 'user': user, 'domain': domain, 'args': args, 'msg': msg, 'verified_contact': verified_contact } def not_function(word): if args and re.match("del", word): return NotDeliveredHandler elif args and re.match("sub", word): return NotSubmittedHandler return None handlers = { ('help', ): HelpHandler, ('stop', ): StopHandler, ('start', ): StartHandler, ('language', 'lang', 'lugha'): LanguageHandler, ('yes', 'no', 'y', 'n'): RequisitionHandler, ('undo', 'replace', 'revoke'): UndoHandler, ('soh', ): SOHHandler, ('not', ): not_function(args[0]) if args else None, ('rec', 'receipts', 'received'): ReceiptsHandler } def choose_handler(keyword): for k, v in handlers.iteritems(): if keyword.lower() in k: return v return None handler_class = choose_handler(keyword) handler = handler_class(**params) if handler_class else None if handler: if args: return handler.handle() else: handler.help() return True else: return SOHHandler(**params).handle()
def ews_sync_stock_data(request, domain): apis = ( ('stock_transaction', sync_stock_transactions), ) config = EWSGhanaConfig.for_domain(domain) domain = config.domain endpoint = GhanaEndpoint.from_config(config) stock_data_task.delay(domain, endpoint, apis, config, EWS_FACILITIES) return HttpResponse('OK')
def ews_stock_data_task(domain): ewsghana_config = EWSGhanaConfig.for_domain(domain) domain = ewsghana_config.domain endpoint = GhanaEndpoint.from_config(ewsghana_config) commtrack_settings_sync(domain, LOCATION_TYPES) for product in endpoint.get_products(): sync_ilsgateway_product(domain, product) get_locations(domain, endpoint, EWS_FACILITIES) get_product_stock(domain, endpoint, EWS_FACILITIES) get_stock_transaction(domain, endpoint, EWS_FACILITIES)
def handle(verified_contact, text, msg=None): user = verified_contact.owner if verified_contact else None domain = user.domain if domain and not EWSGhanaConfig.for_domain(domain): return False args = text.split() if not args: return False keyword = args[0] args = args[1:] params = { 'user': user, 'domain': domain, 'args': args, 'msg': msg, 'verified_contact': verified_contact } def not_function(word): if args and re.match("del", word): return NotDeliveredHandler elif args and re.match("sub", word): return NotSubmittedHandler return None handlers = { ('language', 'lang', 'lugha'): LanguageHandler, ('reg', 'register'): RegistrationHandler, ('yes', 'no', 'y', 'n'): RequisitionHandler, ('undo', 'replace', 'revoke'): UndoHandler, ('soh'): AlertsHandler, ('not',): not_function(args[0]) if args else None } def choose_handler(keyword): for k, v in handlers.iteritems(): if keyword in k: return v return None handler_class = choose_handler(keyword) handler = handler_class(**params) if handler_class else None if handler: if args: handler.handle() else: handler.help() if keyword == 'soh': return True return False
def fix_users_with_more_than_one_phone_number(domain): config = EWSGhanaConfig.for_domain(domain) endpoint = GhanaEndpoint.from_config(config) ews_api = EWSApi(domain, endpoint) offset = 0 _, smsusers = endpoint.get_smsusers(filters={'with_more_than_one_number': True}) while smsusers: for sms_user in smsusers: ews_api.sms_user_sync(sms_user) offset += 100 _, smsusers = endpoint.get_smsusers(filters={'with_more_than_one_number': True}, offset=offset)
def migrate_email_settings(domain): config = EWSGhanaConfig.for_domain(domain) endpoint = GhanaEndpoint.from_config(config) migrate_email = EmailSettingsSync(domain) for report in endpoint.get_daily_reports()[1]: migrate_email.daily_report_sync(report) for report in endpoint.get_weekly_reports()[1]: migrate_email.weekly_report_sync(report) for report in endpoint.get_monthly_reports()[1]: migrate_email.monthly_report_sync(report)
def handle(verified_contact, text, msg): domain = msg.domain if not domain: return False if not EWSGhanaConfig.for_domain(domain): return False if not verified_contact: return False user = verified_contact.owner if not verified_contact.verified: if not process_verification(verified_contact, msg, VERIFICATION_KEYWORDS): logged_event = MessagingEvent.get_current_verification_event( domain, verified_contact.owner_id, verified_contact.phone_number) send_verification(domain, user, verified_contact.phone_number, logged_event) return True args = text.split() if not args: send_sms_to_verified_number(verified_contact, unicode(INVALID_MESSAGE)) return True keyword = args[0] args = args[1:] params = { 'user': user, 'domain': domain, 'args': args, 'msg': msg, 'verified_contact': verified_contact } def not_function(word): if args and re.match("del", word): return NotDeliveredHandler elif args and re.match("sub", word): return NotSubmittedHandler return None handlers = { ('help', ): HelpHandler, ('reminder', ): ReminderOnOffHandler, ('language', 'lang', 'lugha'): LanguageHandler, ('yes', 'no', 'y', 'n'): RequisitionHandler, ('undo', 'replace', 'revoke'): UndoHandler, ('soh',): SOHHandler, ('not',): not_function(args[0]) if args else None, ('rec', 'receipts', 'received'): ReceiptsHandler } def choose_handler(keyword): for k, v in handlers.iteritems(): if keyword.lower() in k: return v return None handler_class = choose_handler(keyword) handler = handler_class(**params) if handler_class else None if handler: if args: return handler.handle() else: handler.help() return True else: return SOHHandler(**params).handle()
def balance_migration_task(domain): endpoint = GhanaEndpoint.from_config(EWSGhanaConfig.for_domain(domain)) BalanceMigration(domain, endpoint).balance_email_reports()
def endpoint(self): return GhanaEndpoint.from_config(EWSGhanaConfig.for_domain(self.domain))
def ews_add_products_to_locs(request, domain): config = EWSGhanaConfig.for_domain(domain) endpoint = GhanaEndpoint.from_config(config) add_products_to_loc.delay(EWSApi(domain=domain, endpoint=endpoint)) return HttpResponse('OK')
def ews_fix_sms_users(request, domain): config = EWSGhanaConfig.for_domain(domain) endpoint = GhanaEndpoint.from_config(config) sms_users_fix.delay(EWSApi(domain=domain, endpoint=endpoint)) return HttpResponse('OK')
def ews_resync_passwords(request, domain): config = EWSGhanaConfig.for_domain(domain) endpoint = GhanaEndpoint.from_config(config) resync_webusers_passwords_task.delay(config, endpoint) return HttpResponse('OK')
def ews_resync_web_users(request, domain): config = EWSGhanaConfig.for_domain(domain) endpoint = GhanaEndpoint.from_config(config) resync_web_users.delay(EWSApi(domain=domain, endpoint=endpoint)) return HttpResponse('OK')
def endpoint(self): from custom.ewsghana.api import GhanaEndpoint return GhanaEndpoint.from_config(EWSGhanaConfig.for_domain(self.domain))
def ews_bootstrap_domain_task(domain): ews_config = EWSGhanaConfig.for_domain(domain) return bootstrap_domain(EWSApi(domain, GhanaEndpoint.from_config(ews_config)))
def ews_bootstrap_domain_task(domain): ews_config = EWSGhanaConfig.for_domain(domain) commtrack_settings_sync(domain, LOCATION_TYPES) return bootstrap_domain(ews_config, GhanaEndpoint.from_config(ews_config), EXTENSIONS, fetch_groups=False)
def ews_bootstrap_domain_task(domain): ews_config = EWSGhanaConfig.for_domain(domain) return bootstrap_domain( EWSApi(domain, GhanaEndpoint.from_config(ews_config)))
def handle(verified_contact, text, msg=None): user = verified_contact.owner if verified_contact else None domain = user.domain if not domain: return False if not EWSGhanaConfig.for_domain(domain): return False args = text.split() if not args: return False keyword = args[0] args = args[1:] params = { 'user': user, 'domain': domain, 'args': args, 'msg': msg, 'verified_contact': verified_contact } def not_function(word): if args and re.match("del", word): return NotDeliveredHandler elif args and re.match("sub", word): return NotSubmittedHandler return None handlers = { ('language', 'lang', 'lugha'): LanguageHandler, ('yes', 'no', 'y', 'n'): RequisitionHandler, # For now there is no easy way to fetch last report sent by user # ('undo', 'replace', 'revoke'): UndoHandler, ( 'soh', ): AlertsHandler, ('not', ): not_function(args[0]) if args else None, ('rec', 'receipts', 'received'): ReceiptsHandler } def choose_handler(keyword): for k, v in handlers.iteritems(): if keyword.lower() in k: return v return None handler_class = choose_handler(keyword) handler = handler_class(**params) if handler_class else None if handler: if args: return handler.handle() else: handler.help() return True else: return AlertsHandler(**params).handle()
def ews_sync_stock_data(request, domain): config = EWSGhanaConfig.for_domain(domain) domain = config.domain endpoint = GhanaEndpoint.from_config(config) stock_data_task.delay(EWSStockDataSynchronization(domain, endpoint)) return HttpResponse('OK')
def ews_add_products_to_locs(request, domain): config = EWSGhanaConfig.for_domain(domain) endpoint = GhanaEndpoint.from_config(config) add_products_to_loc.delay(EWSApi(domain=domain, endpoint=endpoint)) return HttpResponse('OK')
def all_stock_data(self): return EWSGhanaConfig.for_domain(self.domain).all_stock_data
def ews_sync_stock_data(request, domain): config = EWSGhanaConfig.for_domain(domain) domain = config.domain endpoint = GhanaEndpoint.from_config(config) stock_data_task.delay(EWSStockDataSynchronization(domain, endpoint)) return HttpResponse('OK')
def endpoint(self): from custom.ewsghana.api import GhanaEndpoint return GhanaEndpoint.from_config(EWSGhanaConfig.for_domain( self.domain))
def all_stock_data(self): return EWSGhanaConfig.for_domain(self.domain).all_stock_data