コード例 #1
0
    def handle(self, *args, **options):
        if len(args) == 0:
            raise CommandError(
                "Usage: python manage.py fix_smslog_recipient_doc_type <domain1 domain2 ...>"
            )

        for domain in args:
            print "*** Processing Domain %s ***" % domain
            user_cache = {}
            for msg in SMSLog.by_domain_asc(domain).all():
                if msg.couch_recipient:
                    if msg.couch_recipient_doc_type != "CommCareCase":
                        user = None
                        if msg.couch_recipient in user_cache:
                            user = user_cache[msg.couch_recipient]
                        else:
                            try:
                                user = CouchUser.get_by_user_id(
                                    msg.couch_recipient)
                            except Exception:
                                user = None
                            if user is None:
                                print "Could not find user %s" % msg.couch_recipient
                        user_cache[msg.couch_recipient] = user
                        if user and msg.couch_recipient_doc_type != user.doc_type:
                            msg.couch_recipient_doc_type = user.doc_type
                            msg.save()
                else:
                    if msg.couch_recipient_doc_type is not None or msg.couch_recipient is not None:
                        msg.couch_recipient = None
                        msg.couch_recipient_doc_type = None
                        msg.save()
コード例 #2
0
    def handle(self, *args, **options):
        if len(args) == 0:
            raise CommandError("Usage: python manage.py fix_smslog_recipient_doc_type <domain1 domain2 ...>")

        for domain in args:
            print "*** Processing Domain %s ***" % domain
            user_cache = {}
            for msg in SMSLog.by_domain_asc(domain).all():
                if msg.couch_recipient:
                    if msg.couch_recipient_doc_type != "CommCareCase":
                        user = None
                        if msg.couch_recipient in user_cache:
                            user = user_cache[msg.couch_recipient]
                        else:
                            try:
                                user = CouchUser.get_by_user_id(msg.couch_recipient)
                            except Exception:
                                user = None
                            if user is None:
                                print "Could not find user %s" % msg.couch_recipient
                        user_cache[msg.couch_recipient] = user
                        if user and msg.couch_recipient_doc_type != user.doc_type:
                            msg.couch_recipient_doc_type = user.doc_type
                            msg.save()
                else:
                    if msg.couch_recipient_doc_type is not None or msg.couch_recipient is not None:
                        msg.couch_recipient = None
                        msg.couch_recipient_doc_type = None
                        msg.save()
コード例 #3
0
 def tearDown(self):
     SmsBillable.objects.all().delete()
     SmsGatewayFee.objects.all().delete()
     SmsGatewayFeeCriteria.objects.all().delete()
     SmsUsageFee.objects.all().delete()
     SmsUsageFeeCriteria.objects.all().delete()
     self.currency_usd.delete()
     for log in SMSLog.by_domain_asc(generator.TEST_DOMAIN):
         log.delete()
コード例 #4
0
 def tearDown(self):
     SmsBillable.objects.all().delete()
     SmsGatewayFee.objects.all().delete()
     SmsGatewayFeeCriteria.objects.all().delete()
     SmsUsageFee.objects.all().delete()
     SmsUsageFeeCriteria.objects.all().delete()
     self.currency_usd.delete()
     self.other_currency.delete()
     for log in SMSLog.by_domain_asc(generator.TEST_DOMAIN):
         log.delete()
     for backend_instance in self.backend_ids.values():
         SMSBackend.get(backend_instance).delete()
コード例 #5
0
 def setUp(self):
     self.domain = 'mockdomain'
     all_logs = SMSLog.by_domain_asc(self.domain).all()
     for log in all_logs:
         log.delete()
     self.user = '******'
     self.password = '******'
     self.number = 5555551234
     self.couch_user = WebUser.create(self.domain, self.user, self.password)
     self.couch_user.add_phone_number(self.number)
     self.couch_user.save()
     self.dcs = '8'
     self.message_ascii = 'It Works'
     self.message_utf_hex = '0939093F0928094D092609400020091509300924093E00200939094800200907093800200938092E092F00200915093E092E002009390948003F'
コード例 #6
0
    def tearDown(self):
        SmsBillable.objects.all().delete()
        SmsGatewayFee.objects.all().delete()
        SmsGatewayFeeCriteria.objects.all().delete()
        SmsUsageFee.objects.all().delete()
        SmsUsageFeeCriteria.objects.all().delete()

        self.currency_usd.delete()
        self.other_currency.delete()
        SMSLog.get_db().delete_docs(
            SMSLog.by_domain_asc(generator.TEST_DOMAIN).all())

        SMSBackend.get_db().delete_docs(SMSBackend.get_db().all_docs(
            keys=self.backend_ids.values(), include_docs=True).all())
コード例 #7
0
    def tearDown(self):
        SmsBillable.objects.all().delete()
        SmsGatewayFee.objects.all().delete()
        SmsGatewayFeeCriteria.objects.all().delete()
        SmsUsageFee.objects.all().delete()
        SmsUsageFeeCriteria.objects.all().delete()

        self.currency_usd.delete()
        self.other_currency.delete()
        SMSLog.get_db().delete_docs(
            SMSLog.by_domain_asc(generator.TEST_DOMAIN).all()
        )

        for api_id, backend_id in self.backend_ids.iteritems():
            SQLMobileBackend.load(backend_id, is_couch_id=True).delete()
コード例 #8
0
    def setUp(self):
        self.domain = "biyeun"

        self.domain_obj = Domain()
        self.domain_obj.name = self.domain
        self.domain_obj.commtrack_enabled = True
        self.domain_obj.save()

        # delete any existing test SMS logs
        all_logs = SMSLog.by_domain_asc(self.domain).all()
        for log in all_logs:
            log.delete()

        # delete any existing billable items
        all_billables = SMSBillable.by_domain(self.domain)
        for billable in all_billables:
            billable.delete()

        self.usd_rate = BillableCurrency.get_existing_or_new_by_code("USD")
        self.usd_rate.conversion = 1.000
        self.usd_rate.source = "static"
        self.usd_rate.last_updated = datetime.datetime.utcnow()
        self.usd_rate.save()

        self.eur_rate = BillableCurrency.get_existing_or_new_by_code("EUR")
        self.eur_rate.conversion = 1.800
        self.eur_rate.source = "static"
        self.eur_rate.last_updated = datetime.datetime.utcnow()
        self.eur_rate.save()

        self.dimagi_surcharge = DimagiDomainSMSRate()
        self.dimagi_surcharge.domain = self.domain
        self.dimagi_surcharge.direction = OUTGOING
        self.dimagi_surcharge.base_fee = 0.002
        self.dimagi_surcharge.currency_code = self.dimagi_surcharge._admin_crud_class.currency_code
        self.dimagi_surcharge.last_modified = datetime.datetime.utcnow()
        self.dimagi_surcharge.save()

        self.dimagi_surcharge_I = DimagiDomainSMSRate()
        self.dimagi_surcharge_I.domain = self.domain
        self.dimagi_surcharge_I.direction = INCOMING
        self.dimagi_surcharge_I.base_fee = 0.001
        self.dimagi_surcharge_I.currency_code = self.dimagi_surcharge._admin_crud_class.currency_code
        self.dimagi_surcharge_I.last_modified = datetime.datetime.utcnow()
        self.dimagi_surcharge_I.save()

        self.unicel_rate = UnicelSMSRate()
        self.unicel_rate.direction = OUTGOING
        self.unicel_rate.base_fee = 0.01
        self.unicel_rate.currency_code = self.unicel_rate._admin_crud_class.currency_code
        self.unicel_rate.last_modified = datetime.datetime.utcnow()
        self.unicel_rate.save()

        self.unicel_incoming_rate = UnicelSMSRate()
        self.unicel_incoming_rate.direction = INCOMING
        self.unicel_incoming_rate.base_fee = 0.05
        self.unicel_incoming_rate.currency_code = self.unicel_incoming_rate._admin_crud_class.currency_code
        self.unicel_incoming_rate.last_modified = datetime.datetime.utcnow()
        self.unicel_incoming_rate.save()

        self.tropo_rate_any = TropoSMSRate()
        self.tropo_rate_any.direction = OUTGOING
        self.tropo_rate_any.base_fee = 0.02
        self.tropo_rate_any.country_code = ""
        self.tropo_rate_any.currency_code = self.tropo_rate_any._admin_crud_class.currency_code
        self.tropo_rate_any.last_modified = datetime.datetime.utcnow()
        self.tropo_rate_any.save()

        self.tropo_rate_us = TropoSMSRate()
        self.tropo_rate_us.direction = OUTGOING
        self.tropo_rate_us.base_fee = 0.01
        self.tropo_rate_us.country_code = "1"
        self.tropo_rate_us.currency_code = self.tropo_rate_us._admin_crud_class.currency_code
        self.tropo_rate_us.last_modified = datetime.datetime.utcnow()
        self.tropo_rate_us.save()

        self.tropo_rate_incoming = TropoSMSRate()
        self.tropo_rate_incoming.direction = INCOMING
        self.tropo_rate_incoming.base_fee = 0.0123
        self.tropo_rate_incoming.country_code = ""
        self.tropo_rate_incoming.currency_code = self.tropo_rate_incoming._admin_crud_class.currency_code
        self.tropo_rate_incoming.last_modified = datetime.datetime.utcnow()
        self.tropo_rate_incoming.save()


        # self.mach_rate = MachSMSRate()
        # self.mach_rate.direction = OUTGOING
        # self.mach_rate.base_fee = 0.005
        # self.mach_rate.network_surcharge = 0.0075
        # self.mach_rate.currency_code = self.mach_rate._admin_crud_class.currency_code
        # self.mach_rate.last_modified = datetime.datetime.utcnow()
        # self.mach_rate.country_code = "49"
        # self.mach_rate.mcc = "262"
        # self.mach_rate.mnc = "07"
        # self.mach_rate.network = "O2"
        # self.mach_rate.iso = "de"
        # self.mach_rate.country = "Germany"
        # self.mach_rate.save()
        #
        #
        # self.mach_number = MachPhoneNumber()
        # self.mach_number.phone_number = "+4917685675599"
        # self.mach_number.country = self.mach_rate.country
        # self.mach_number.network = self.mach_rate.network
        # self.mach_number.save()


        # FOR INCOMING UNICEL
        # Couch User with Verified Phone Number
        self.unicel_couch_user = WebUser.create(self.domain, "unicel_biyeun", "test123")
        self.unicel_couch_user.add_phone_number("+919971855708")
        self.unicel_couch_user.save()
        # Verified Number for Incoming Unicel Message
        self.vn_unicel = VerifiedNumber()
        self.vn_unicel.owner_id = self.unicel_couch_user.get_id
        self.vn_unicel.owner_doc_type = self.unicel_couch_user.__class__.__name__
        self.vn_unicel.domain = self.domain
        self.vn_unicel.backend_id = None # This is not needed unless you use corehq.apps.sms.api.send_sms_to_verified_number
        self.vn_unicel.phone_number = strip_plus(clean_phone_number(self.unicel_couch_user.phone_number))
        self.vn_unicel.verified = True
        self.vn_unicel.save()


        # FOR INCOMING TROPO
        # Couch User with Verified Phone Number
        self.tropo_couch_user = WebUser.create(self.domain, "tropo_biyeun", "test123")
        self.tropo_couch_user.add_phone_number("+4917685675599")
        self.tropo_couch_user.save()
        # Verified Phone Number for Incoming Tropo Message
        self.vn_tropo = VerifiedNumber()
        self.vn_tropo.owner_id = self.tropo_couch_user.get_id
        self.vn_tropo.owner_doc_type = self.tropo_couch_user.__class__.__name__
        self.vn_tropo.domain = self.domain
        self.vn_tropo.backend_id = None # This is not needed unless you use corehq.apps.sms.api.send_sms_to_verified_number
        self.vn_tropo.phone_number = strip_plus(clean_phone_number(self.tropo_couch_user.phone_number))
        self.vn_tropo.verified = True
        self.vn_tropo.save()


        self.test_message = "Test of CommCare HQ's SMS Tracking System."
        try:
            self.sms_config = getattr(settings, "SMS_TESTING")
        except AttributeError:
            self.sms_config = None

        try:
            self.tropo_token = getattr(settings, "TROPO_MESSAGING_TOKEN")
            self.tropo_backend = TropoBackend(messaging_token=self.tropo_token)
        except AttributeError:
            self.tropo_token = None
            self.tropo_backend = None

        try:
            unicel_config = getattr(settings, "UNICEL_CONFIG")
            self.unicel_backend = UnicelBackend(
                username=unicel_config["username"],
                password=unicel_config["password"],
                sender=unicel_config["sender"],
            )
        except (AttributeError, KeyError):
            self.unicel_backend = None