Пример #1
0
    def test_device(self):
        contaTeste = Conta(id = self.sampleTransactionData['idConta'], nome = 'Usuario1')
        contaTeste.put()
        Dispositivo(id='2001-1', idConta = self.sampleTransactionData['idConta'], tipo = 'celular').put()
        Dispositivo(id='2001-2', idConta = self.sampleTransactionData['idConta'], tipo = 'computador').put()

        self.assertFalse(device_check.is_fraud(self._new_transaction(100.0, False, '2001-1'), contaTeste))
        self.assertFalse(device_check.is_fraud(self._new_transaction(100.0, False, '2001-2'), contaTeste))
        self.assertTrue(device_check.is_fraud(self._new_transaction(100.0, False, 'QUALQUERCOISA'), contaTeste))
Пример #2
0
    def test_localization(self):
        contaTeste = Conta(id = self.sampleTransactionData['idConta'], nome = 'Usuario1')
        contaTeste.put()
        Dispositivo(id='2001-1', idConta = self.sampleTransactionData['idConta'], tipo = 'celular').put()
        transacao1 = self._new_transaction(45.0, 0.0, self._now, False, '2001-1')
        transacao1.put()

        self.assertTrue(localization_check.is_fraud(self._new_transaction(45.0, 1.0, self._now, False, '2001-1'), contaTeste))
        self.assertFalse(localization_check.is_fraud(self._new_transaction(45.0, 1.0, self._now + datetime.timedelta(hours=1), False, '2001-1'), contaTeste))
        self.assertTrue(localization_check.is_fraud(self._new_transaction(-45.0, -90.0, self._now + datetime.timedelta(hours=1), False, '2001-1'), contaTeste))
Пример #3
0
        def check_and_save():
            if Transacao.get_by_id(clean_data["idTransaction"]):
                raise CheckException("This transaction already exists")

            conta = Conta.get_by_id(clean_data["idAccountConsum"])
            if not conta:
                raise CheckException("Invalid account")
            conta_old_values = conta.to_dict()

            transacao = Transacao(
                idConta=clean_data["idAccountConsum"],
                idDispositivo=clean_data["idDmtConsum"],
                id=clean_data["idTransaction"],
                data=clean_data["datetime"],
                valor=clean_data["value"],
                latitude=clean_data["gpsLat"],
                longitude=clean_data["gpsLong"]
            )
            transacao.ehFraude = checks.is_fraud(transacao, conta)
            checks.learn(transacao, conta)
            if conta.to_dict() != conta_old_values:
                conta.put()
            transacao.put()

            return transacao
Пример #4
0
 def build_entities_to_put(self):
     return [
         Conta(nome="The Tale Guy {}".format(self.id),
               id="{}-conta-{}".format(self.PREFIX, self.id)),
         Dispositivo(id="{}-dispositivo-{}".format(self.PREFIX, self.id),
                     idConta="{}-conta-{}".format(self.PREFIX, self.id),
                     tipo="celular")
     ]
Пример #5
0
def conta():
    args = flask.request.args

    if not 'conta' in args:
        return 'Conta nao disponivel'

    conta = Conta.get_by_id(args['conta'])
    dispositivos = Dispositivo.query().filter(Dispositivo.idConta == args['conta'] ).fetch()

    return render_template('conta_template.html', conta = conta, dispositivos=dispositivos)
Пример #6
0
    def test_device(self):
        contaTeste = Conta(id=self.sampleTransactionData['idConta'],
                           nome='Usuario1')
        contaTeste.put()
        Dispositivo(id='2001-1',
                    idConta=self.sampleTransactionData['idConta'],
                    tipo='celular').put()
        Dispositivo(id='2001-2',
                    idConta=self.sampleTransactionData['idConta'],
                    tipo='computador').put()

        self.assertFalse(
            device_check.is_fraud(
                self._new_transaction(100.0, False, '2001-1'), contaTeste))
        self.assertFalse(
            device_check.is_fraud(
                self._new_transaction(100.0, False, '2001-2'), contaTeste))
        self.assertTrue(
            device_check.is_fraud(
                self._new_transaction(100.0, False, 'QUALQUERCOISA'),
                contaTeste))
Пример #7
0
def conta():
    args = flask.request.args

    if not 'conta' in args:
        return 'Conta nao disponivel'

    conta = Conta.get_by_id(args['conta'])
    dispositivos = Dispositivo.query().filter(
        Dispositivo.idConta == args['conta']).fetch()

    return render_template('conta_template.html',
                           conta=conta,
                           dispositivos=dispositivos)
Пример #8
0
        def check_and_save():
            if Transacao.get_by_id(clean_data["idTransaction"]):
                raise CheckException("This transaction already exists")

            conta = Conta.get_by_id(clean_data["idAccountConsum"])
            if not conta:
                raise CheckException("Invalid account")
            conta_old_values = conta.to_dict()

            transacao = Transacao(idConta=clean_data["idAccountConsum"],
                                  idDispositivo=clean_data["idDmtConsum"],
                                  id=clean_data["idTransaction"],
                                  data=clean_data["datetime"],
                                  valor=clean_data["value"],
                                  latitude=clean_data["gpsLat"],
                                  longitude=clean_data["gpsLong"])
            transacao.ehFraude = checks.is_fraud(transacao, conta)
            checks.learn(transacao, conta)
            if conta.to_dict() != conta_old_values:
                conta.put()
            transacao.put()

            return transacao
Пример #9
0
from google.appengine.ext import db
import google.appengine.ext.ndb as ndb
from dcf.models.transacao import Transacao
from dcf.models.transacao import Conta
from dcf.models.transacao import Dispositivo
import dcf.models.sample
import dcf.utils.remote_api as remote_api_utils
import dcf.models.sample as sample_models

remote_api_utils.configure(sys.argv[1] if len(sys.argv) > 1 else None)

contasData = csv.reader(open('csvs/contas.csv'))
contasData.next()

for conta in contasData:
    Conta(nome=conta[0], id=conta[1]).put()

dispositivosData = csv.reader(open('csvs/dispositivos.csv'))

dispositivosData.next()

for dispositivo in dispositivosData:
    Dispositivo(id=dispositivo[0], idConta=dispositivo[1],
                tipo=dispositivo[2]).put()

transacoesData = csv.reader(open('csvs/transacoes.csv'))
transacoesData.next()
for transacao in transacoesData:
    dataTransacao = datetime.datetime(int(transacao[7]), int(transacao[6]),
                                      int(transacao[5]), int(transacao[3]),
                                      int(transacao[4]))