コード例 #1
0
ファイル: tests.py プロジェクト: bumyong/django-hotstorage
 def setUp(self):
     Redis().flushall()
     p1 = Person(name='Test User 1', ssn='123456789')
     p1.save()
     pn1 = PhoneNumber(person=p1, label='Test 1', phone_number='5558675309')
     pn1.save()
     from django import db
     db.reset_queries()
コード例 #2
0
ファイル: views.py プロジェクト: Vaishaal/blackout
def authorized(request):
    c = {}
    c.update(csrf(request))
    print "pre_scraper"
    addresses = scraper.genAddrList()
    print "post_scraper"
    addresses = [(k,v + '(' + k +')') for k,v in addresses.items()]


    if request.method == 'POST': # If the form has been submitted...
        form = MACAddressForm(request.POST) # A form bound to the POST data
        form.fields['addresses'].choices = addresses
        if form.is_valid():
            choices = form.cleaned_data['addresses']
            BlacklistedMAC.objects.all().delete()
            phone = form.cleaned_data['phone'].replace('(','').replace(')','').replace('-','').replace('.','')

            if len(phone) == 10:
                p = PhoneNumber(phone=phone)
                p.save()
            else:
                c['form'] = form
                return render_to_response('auth.html', c)

            for mac in choices:
                obj = BlacklistedMAC(address=mac)
                obj.save()
            return HttpResponseRedirect('/done/') # Redirect after POST
    else:
        form = MACAddressForm()
        form.fields['addresses'].choices = addresses
        if 'code' in request.GET:
            ACCESS_TOKEN_URL = 'https://dev.tendrilinc.com/oauth/access_token'
            authToken = request.GET[u'code']    
            ACCESS_TOKEN_URL += '?grant_type=authorization_code'
            ACCESS_TOKEN_URL += '&code='+str(authToken)  
            ACCESS_TOKEN_URL += '&redirect_uri=www.google.com' 
            ACCESS_TOKEN_URL += '&client_id='+API_KEY 
            ACCESS_TOKEN_URL += '&client_secret='+APP_SECRET 

            data = requests.get(ACCESS_TOKEN_URL, verify=False).text
            for obj in Data.objects.all():
                obj.delete()
            d = Data(**json.loads(data))
            d.save()


    c['form'] = form
    return render_to_response('auth.html', c)
コード例 #3
0
 def test_check_auth_redis_miss(self):
     db_handler = self.auth_handler.db_handler
     db_conn = db_handler.getEngine().connect()
     db_txn = db_conn.begin()
     try:
         db_session = Session(bind=db_conn)
         try:
             account = Account(auth_id='some_auth_id', username='******')
             db_session.add(account)
             db_session.flush()
             phonenumber = PhoneNumber(number='9740171794',
                                       account_id=account.id)
             db_session.add(phonenumber)
             db_session.commit()
             self.auth_handler.redis_client.hget.return_value = None
             self.auth_handler.redis_client.pipeline.return_value = redis_pipeline_mock = MagicMock(
             )
             status, phonenums = self.auth_handler._check_auth(
                 'some_user', 'some_auth_id', db_session)
             self.assertTrue(status)
             self.assertEquals(set(['9740171794']), phonenums)
             self.assertEquals(redis_pipeline_mock.hset.call_count, 1)
             redis_pipeline_mock.hset.assert_called_with(
                 self.auth_handler._REDIS_AUTH_HASH, 'some_user',
                 'some_auth_id')
             self.assertEquals(redis_pipeline_mock.sadd.call_count, 1)
             redis_pipeline_mock.sadd.assert_called_with(
                 'some_user', '9740171794')
             self.assertEquals(redis_pipeline_mock.execute.call_count, 1)
         finally:
             db_session.close()
     finally:
         db_txn.rollback()
         db_conn.close()
コード例 #4
0
 def create(last_name, first_name, emails=None, phone_numbers=None):
     """ Create a new user """
     user = User(last_name=last_name, first_name=first_name)
     if emails:
         for email in emails:
             Email(mail=email, user_id=user.id).save()
     if phone_numbers:
         for number in phone_numbers:
             PhoneNumber(number=number, user_id=user.id).save()
     return user.save()
コード例 #5
0
    def run(self, **kwargs):
        global contacts
        global allgroups

        user = User.objects.get(email='*****@*****.**')
        contacts = []
        allgroups = []
        #print "sync google contacts"
        admin_accounts = GoogleAdminAccounts.objects.filter(enable=True).order_by('priority').reverse()
        if len(admin_accounts) > 0 :
            account = admin_accounts[0]
            gather_contacts(account.email, account.password)
            write_contacts()
            for contact in contacts:
                t = timezone.now() # offset-awared datetime
                now_aware = contact['last_changed'].replace(tzinfo=pytz.UTC)
                #t.astimezone(timezone.utc).replace(tzinfo=None)
                #print now_aware < account.last_changed
                if len(contact['phones']) > 0 :
                    p = PhoneNumber()
                    p.user = user
                    pn = phonenumbers.format_number(contact['phones'][0]['tel'], phonenumbers.PhoneNumberFormat.E164)
                    found_type = ""
                    for tel_type in tel_types:
                        if tel_type in contact['phones'][0]['type'] :
                            found_type = tel_type

                    #found = any(contact['phones'][0]['type'] in item for item in tel_types)
                    print 'fnd:', found_type
                    p.phone_type = found_type
                    p.phone_number = pn
                    p.save()
            account.last_changed = t
            account.save()
コード例 #6
0
ファイル: addressbook.py プロジェクト: fadiga/zerin_pyside
    def search(self):

        value = self.search_field.text()
        self.empty.setStyleSheet("")
        self.empty.setText(u"")
        contacts = []

        try:
            contacts = PhoneNumber.filter(number__icontains=int(value))
        except ValueError:
            contacts = PhoneNumber.filter(contact__name__icontains=value)
            pass

        try:
            value = contacts.get()
            self.parent.table_contact.refresh_(search=value)
            self.search_field.clear()
        except AttributeError:
            pass
        except:
            self.empty.setStyleSheet("font-size:20px; color: red")
            self.empty.setText(u"%s n'existe pas" % value)
コード例 #7
0
ファイル: app.py プロジェクト: mchensd/MyPhonePoll2
def create_db():
    from models import User, PhoneNumber

    upgrade()

    u = User(first_name='Michael',
             last_name='Chen',
             email='*****@*****.**',
             password='******')
    ph = PhoneNumber(number='6194933738', user=u, choices='{}', in_use=False)
    db.session.add_all([u, ph])

    db.session.commit()
コード例 #8
0
 def create_model(self, form):
     try:
         assert isinstance(form.phone.data, str) and form.phone.data != '', form.phone.data
         assert isinstance(form.verified.data, bool), form.verified.data
         model = PhoneNumber(phone=form.phone.data, verified=form.verified.data)
         self.session.add(model)
         self.session.commit()
         logger.info(f'PhoneNumber create by admin {auth_get_current_username()}: {model.to_json()}')
     except Exception as ex:
         self.session.rollback()
         flash(f'Failed to create phone number. {str(ex)}', 'error')
         logger.exception(f'PhoneNumber update by admin {auth_get_current_username()} raised exception')
         return False
     return True
コード例 #9
0
ファイル: addressbook.py プロジェクト: fadiga/zerin_pyside
    def finder(self):
        completion_values = []
        search_term = self.search_field.text()
        try:
            contacts = PhoneNumber.filter(number__icontains=int(search_term))
        except ValueError:
            contacts = Contact.filter(name__icontains=search_term)

        for contact in contacts:
            completion_values.append(contact.__unicode__())
        completer = QtGui.QCompleter(completion_values, parent=self)
        completer.setCaseSensitivity(QtCore.Qt.CaseInsensitive)
        completer.setCompletionMode(QtGui.QCompleter.UnfilteredPopupCompletion)

        self.search_field.setCompleter(completer)
コード例 #10
0
ファイル: addressbook.py プロジェクト: fadiga/zerin_pyside
    def set_data_for(self, group_id=None, search=None):

        if search:
            self.data = [("", tel.contact.name)
                          for tel in PhoneNumber.filter().group_by('contact')
                                            if search.contact == tel.contact]
        else:
            self.data = [("", contact.name) for contact in Contact.all()]

        if group_id:
            if group_id == ALL_CONTACTS:
                qs = ContactGroup.filter().group_by('contact')
            else:
                qs = ContactGroup.filter(group__id=group_id)
            self.data = [("", contact_gp.contact.name) for contact_gp in qs]
コード例 #11
0
 def test_check_auth_redis_miss_wrong_auth_id(self):
     db_handler = self.auth_handler.db_handler
     db_conn = db_handler.getEngine().connect()
     db_txn = db_conn.begin()
     try:
         db_session = Session(bind=db_conn)
         try:
             account = Account(auth_id='some_auth_id', username='******')
             db_session.add(account)
             db_session.flush()
             phonenumber = PhoneNumber(number='9740171794',
                                       account_id=account.id)
             db_session.add(phonenumber)
             db_session.commit()
             self.auth_handler.redis_client.hget.return_value = None
             status, phonenums = self.auth_handler._check_auth(
                 'some_user', 'faulty_auth_id', db_session)
             self.assertFalse(status)
             self.assertEquals(None, phonenums)
         finally:
             db_session.close()
     finally:
         db_txn.rollback()
         db_conn.close()
コード例 #12
0
def phone_number_sd():
    phone_number_sd = PhoneNumber(phone="+16555555556", verified=True)
    db.session.add(phone_number_sd)
    db.session.commit()
    yield phone_number_sd
コード例 #13
0
def queue_import_customers_from_usaepay(company_id, user_id):
    if not settings.TEST_MODE:
        from ppars.apps.price.models import SellingPriceLevel
        user = User.objects.get(id=user_id)
        company = CompanyProfile.objects.get(id=company_id)
        level_price = SellingPriceLevel.objects.get(level='1')
        message = ''
        added = 0
        exists = 0
        not_added = 0
        found = 0
        try:
            if company.usaepay_username and company.usaepay_password:
                payload = {
                    'username': company.usaepay_username,
                    'password': company.usaepay_password,
                    'stamp': '4159eb01db85b605b2616f384f903f84a477b1de'
                }
                s = requests.Session()

                r = s.post('https://secure.usaepay.com/login', data=payload)
                if r.url not in ['https://secure.usaepay.com/console/']:
                    raise Exception(
                        "Failed to login to USAePay, please check credentials")
                r = s.get(
                    'https://secure.usaepay.com/console/billing?limitstart=0&limit=2000&filter=&sortkey=&sortdir=&level=&type='
                )

                # r = s.post('https://sandbox.usaepay.com/login', data=payload)
                # if r.url not in ['https://sandbox.usaepay.com/console/']:
                #     raise Exception("Failed to login to USAePay, please check credentials")
                # r = s.get('https://sandbox.usaepay.com/console/billing?limitstart=0&limit=2000&filter=&sortkey=&sortdir=&level=&type=')

                soup2 = BeautifulSoup(r.text)
                forms = soup2.findAll('form')
                usaepay_customers = []
                for form in forms:
                    if form.get('name') == 'custs':
                        inputs = soup2.findAll('input')
                        for obj in inputs:
                            if obj.get('name') == 'sel[]':
                                usaepay_customers.append(obj.get('value'))
                        # for a in form.findAll('a'):
                        #     if 'javascript:editCustomer' in a.get('href'):
                        #         usaepay_customers.append(int(a.get('href').replace('javascript:editCustomer(\'', '').replace('\')', '')))
                found = len(usaepay_customers)
                system_customers = Customer.objects.filter(company=company)
                for customer in system_customers:
                    if customer.usaepay_customer_id:
                        if customer.usaepay_customer_id in usaepay_customers:
                            usaepay_customers.remove(
                                customer.usaepay_customer_id)
                exists = found - len(usaepay_customers)
                if exists + Customer.objects.filter(company=company).count(
                ) > company.customer_limit and company.customer_limit != 0:
                    raise Exception(
                        'Customer limit has been reached. Please contact administrator.'
                    )
                if usaepay_customers:
                    for usaepay_customer in usaepay_customers:
                        if company.usaepay_source_key and company.usaepay_pin:
                            try:
                                token = company.usaepay_authorization()
                                client = SoapClient(wsdl=settings.USAEPAY_WSDL,
                                                    trace=False,
                                                    ns=False)
                                response = client.getCustomer(
                                    CustNum=usaepay_customer, Token=token)
                                result = response['getCustomerReturn']
                                if result:
                                    first_name = ''
                                    last_name = ''
                                    enabled = False
                                    city = ''
                                    zip = ''
                                    state = ''
                                    address = ''
                                    primary_email = ''
                                    creditcard = ''
                                    usaepay_custid = ''
                                    company_name = ''
                                    pns = []
                                    logger.debug('Notes "%s"' %
                                                 result['Notes'])
                                    if 'Notes' in result and result['Notes']:
                                        pns = extract_phone_numbers_from_notes(
                                            result['Notes'])
                                    if 'Enabled' in result and result[
                                            'Enabled']:
                                        enabled = result['Enabled']
                                    if 'BillingAddress' in result:
                                        if 'City' in result[
                                                'BillingAddress'] and result[
                                                    'BillingAddress']['City']:
                                            city = result['BillingAddress'][
                                                'City'].strip()
                                        if 'Zip' in result[
                                                'BillingAddress'] and result[
                                                    'BillingAddress']['Zip']:
                                            zip = result['BillingAddress'][
                                                'Zip'].strip()
                                        if 'FirstName' in result[
                                                'BillingAddress'] and result[
                                                    'BillingAddress'][
                                                        'FirstName']:
                                            first_name = result[
                                                'BillingAddress'][
                                                    'FirstName'].strip()
                                        if 'LastName' in result[
                                                'BillingAddress'] and result[
                                                    'BillingAddress'][
                                                        'LastName']:
                                            last_name = result[
                                                'BillingAddress'][
                                                    'LastName'].strip()
                                        if 'Company' in result[
                                                'BillingAddress'] and result[
                                                    'BillingAddress'][
                                                        'Company']:
                                            company_name = result[
                                                'BillingAddress'][
                                                    'Company'].strip()
                                        logger.debug(
                                            'Phone "%s"' %
                                            result['BillingAddress']['Phone'])
                                        if 'Phone' in result[
                                                'BillingAddress'] and result[
                                                    'BillingAddress']['Phone']:
                                            for n in extract_phone_numbers_from_notes(
                                                    result['BillingAddress']
                                                ['Phone']
                                            ):  #.strip().replace('-', '').replace(' ', '')
                                                if n not in pns:
                                                    pns.append(n)
                                        if 'State' in result[
                                                'BillingAddress'] and result[
                                                    'BillingAddress']['State']:
                                            state = result['BillingAddress'][
                                                'State'].strip()
                                        if 'Street' in result[
                                                'BillingAddress'] and result[
                                                    'BillingAddress']['Street']:
                                            address = result['BillingAddress'][
                                                'Street'].strip()
                                        if 'Email' in result[
                                                'BillingAddress'] and result[
                                                    'BillingAddress']['Email']:
                                            primary_email = result[
                                                'BillingAddress'][
                                                    'Email'].strip()
                                    if 'PaymentMethods' in result:
                                        if len(result['PaymentMethods']) > 0:
                                            if 'item' in result[
                                                    'PaymentMethods'][0]:
                                                item = result[
                                                    'PaymentMethods'][0][
                                                        'item']
                                                creditcard = str(
                                                    item.CardNumber)
                                    if 'CustomerID' in result and result[
                                            'CustomerID']:
                                        p = result['CustomerID']
                                        for token in [
                                                ', ', '. ', ' ', ',', '.'
                                        ]:
                                            p = p.replace(token, '|')
                                        p = p.replace('|', ', ').strip()
                                        if ',' != p[-1:]:
                                            p = '%s,' % p
                                        usaepay_custid = p
                                    new_customer = Customer.objects.create(
                                        usaepay_customer_id=usaepay_customer,
                                        usaepay_custid=usaepay_custid,
                                        user=user,
                                        company=company,
                                        charge_getaway='U',
                                        charge_type='CC',
                                        save_to_usaepay=True,
                                        creditcard=creditcard,
                                        first_name=first_name or company_name
                                        or str(usaepay_customer),
                                        last_name=last_name
                                        or str(usaepay_customer),
                                        enabled=enabled,
                                        city=city,
                                        zip=zip,
                                        selling_price_level=level_price,
                                        state=state,
                                        address=address,
                                        primary_email=primary_email,
                                    )
                                    for number in pns:
                                        PhoneNumber.create(
                                            company=company,
                                            customer=new_customer,
                                            number=number)
                                    added = added + 1
                                    message = '<a href="%s">%s</a><br/>%s' % (
                                        reverse('customer_update',
                                                args=[new_customer.id]),
                                        new_customer, message)
                                if message:
                                    message = 'This is customer from USAePay. Please check them out.  %s' % (
                                        message)
                                    # messages.add_message(request, messages.SUCCESS, '%s' % message)
                            except Exception, e:
                                not_added = not_added + 1
                                message = 'Customer with ID "%s" did`t added. Error:%s<br/>%s' % (
                                    usaepay_customer, e, message)
                        else:
                            message = 'no USAePay tokens for API requests'
                            # messages.add_message(request, messages.ERROR, '%s' % message)
                else:
                    message = 'All USAePay users already exist in your system'
            else:
                message = 'no USAePay username/password for API requests'
                # messages.add_message(request, messages.ERROR, '%s' % message)
            message = (
                '%s customers added, %s customers exists, %s not added of %s<br/><br/>%s'
                % (added, exists, not_added, found, message))
コード例 #14
0
ファイル: addressbook.py プロジェクト: fadiga/zerin_pyside
    def click_item(self, row, column, *args):

        number = PhoneNumber.filter(contact__name=self.data[row][1]).get()
        self.parent.table_info.refresh_(number)
        self.parent.table_transf.refresh_(number)
コード例 #15
0
ファイル: addressbook.py プロジェクト: fadiga/zerin_pyside
 def set_data_for(self, number):
     self.data = [(tel.contact.name, tel.number)
                   for tel in PhoneNumber.all()
                                         if number.contact == tel.contact]
コード例 #16
0
def phone_number_ru():
    phone_number_ru = PhoneNumber(phone="+16555555559", verified=True)
    db.session.add(phone_number_ru)
    db.session.commit()
    yield phone_number_ru
コード例 #17
0
def phone_number_f():
    phone_number_f = PhoneNumber(phone="+16555555558", verified=True)
    db.session.add(phone_number_f)
    db.session.commit()
    yield phone_number_f
コード例 #18
0
def phone_number_2():
    new_phone_number_2 = PhoneNumber(phone="+15555555556", verified=True)
    db.session.add(new_phone_number_2)
    db.session.commit()
    yield new_phone_number_2
コード例 #19
0
ファイル: addressbook.py プロジェクト: yeleman/zerin
def addressbook_transfer(contact_id):
    numbers = PhoneNumber.filter(contact=Contact.get(id=int(contact_id)))
    data = {'transfers': [tr.to_dict() \
                          for tr in Transfer.filter(number__in=numbers)]}
    return json.dumps(data)
コード例 #20
0
def phone_number_b():
    phone_number_b = PhoneNumber(phone="+16555555557", verified=True)
    db.session.add(phone_number_b)
    db.session.commit()
    yield phone_number_b