Exemplo n.º 1
0
    def confirmar_remocao(self, *args):
        self.excluirdialog.dismiss()

        db(TransacaoModel.id == self.transacao.id).delete()
        db.commit()

        self.app.root.switch_to(TELAS.LISTA_TRANSACAO)
Exemplo n.º 2
0
 def test_valid_reset_token(self):
     u = User(password='******')
     db.session.add(u)
     db.commit()
     token = u.generate_reset_token()
     self.assertTrue(User.reset_password(token, 'dog'))
     self.assertTrue(u.verify_password('dog'))
Exemplo n.º 3
0
def edit_user(id):
    user = User.query.get(id)
    if not user:
        raise ValueError('Invalid user with identifier %s' % id)

    content = request.get_json(silent=True)
    validate(instance=content, schema=user_schema)

    user.email = content["email"]
    user.username = content["name"]

    if content["password"] and len(content["password"]):
        user.password = utils.hash_password(content["password"])

    if content["role"] == "admin":
        user_datastore.add_role_to_user(user.email, "admin")
    elif "admin" in (role.name for role in user.roles):
        user_datastore.remove_role_from_user(user.email, "admin")

    # Variable and station access config.
    user.access_stations_all = (
        content['access']['stations']['unlimited'] == True)
    user.access_variables_all = (
        content['access']['variables']['unlimited'] == True)
    user.access_variables_standard = (
        content['access']['variables']['standard'] == True)

    if content['access']['variables']['unlimited'] == False and content[
            'access']['variables']['standard'] == False:
        user.access_variable_specific = list(
            map(lambda x: AccessVariable(variable_id=int(x)),
                content['access']['variables']['specific']))
    else:
        user.access_variable_specific = []

    if content['access']['stations']['unlimited'] == False:
        user.access_stations_specific = list(
            map(lambda x: AccessStation(station_id=x),
                content['access']['stations']['specific']))
    else:
        user.access_stations_specific = []

    db.commit()
    return jsonify({"status": "success"})
Exemplo n.º 4
0
def create_user():
    content = request.get_json(silent=True)
    validate(instance=content, schema=user_schema)

    user = user_datastore.create_user(
        username=content["name"],
        email=content["email"],
        password=utils.hash_password(content["password"]),
        roles=(["admin"] if content["role"] == "admin" else []),
        access_stations_all=(
            content['access']['stations']['unlimited'] == True),
        access_variables_all=(
            content['access']['variables']['unlimited'] == True),
        access_variables_standard=(
            content['access']['variables']['standard'] == True))

    # Variable and station access config.
    user.access_stations_all = (
        content['access']['stations']['unlimited'] == True)
    user.access_variables_all = (
        content['access']['variables']['unlimited'] == True)
    user.access_variables_standard = (
        content['access']['variables']['standard'] == True)

    if content['access']['variables']['unlimited'] == False and content[
            'access']['variables']['standard'] == False:
        user.access_variable_specific = list(
            map(lambda x: AccessVariable(variable_id=int(x)),
                content['access']['variables']['specific']))
    else:
        user.access_variable_specific = []

    if content['access']['stations']['unlimited'] == False:
        user.access_stations_specific = list(
            map(lambda x: AccessStation(station_id=x),
                content['access']['stations']['specific']))
    else:
        user.access_stations_specific = []

    db.commit()
    return jsonify({"status": "success"})
Exemplo n.º 5
0
    def salvar_transacao(self):  # todo

        # List of errors
        erros = []

        # Getting data of fields
        nome = self.ids.nome.text
        descricao = self.ids.descricao.text
        lancamento = self.ids.lancamento.text
        vencimento = self.ids.vencimento.text
        valor = Decimal(self.ids.valor.text).quantize(Decimal('1.00'),
                                                      rounding=ROUND_DOWN)
        parcelado = self.ids.parcelamento.active
        num_parcelas = int(self.ids.nparcelas.text)
        recorrente = self.ids.recorrente.active
        frequencia = self.ids.frequencia.text
        freq_qtd = self.ids.freq_qtd.text
        tipo_transacao = TIPO_TRANSACAO.RECEITA if self.ids.switch.active else TIPO_TRANSACAO.DESPESA
        tipo_pagamento = TIPO_PAGAMENTO.A_PRAZO if parcelado else TIPO_PAGAMENTO.A_VISTA
        contato = self.contato

        # Validating fields
        if nome in ['', ' ', None]:
            erros.append("O Campo 'nome' é obrigatório!")
        if lancamento in ['', ' ', None]:
            erros.append("O Campo 'data' é obrigatório!")
        else:
            try:
                lancamento = date(
                    *[int(f) for f in self.ids.lancamento.text.split('-')])
            except:
                erros.append(
                    "formato de data inválido para 'data'. \nClique no icone ao lado >>"
                )

        if vencimento in ['', ' ', None]:
            erros.append("O Campo 'validade' é obrigatório!")
        else:
            try:
                vencimento = date(
                    *[int(f) for f in self.ids.vencimento.text.split('-')])
            except:
                erros.append(
                    "Formato de data inválido para 'validade'.\nClique no icone ao lado >>"
                )

        try:
            diferenca = vencimento - lancamento
            if diferenca.days < 0:
                erros.append("A 'validade' não pode ser menor que a 'data'")
        except:
            pass

        if valor < 0:
            erros.append("O Campo 'valor' não pode ter valor negativo!")

        if recorrente and parcelado:
            erros.append(
                "A transação não pode ser parcelada e recorrente ao mesmo tempo.\n"
                "Marque apenas uma das opções.")

        if parcelado:
            if num_parcelas < 1:
                erros.append("O Campo 'parcela' não pode ser menor que 1!")
        else:
            num_parcelas = 1

        if not recorrente:
            frequencia = None
            freq_qtd = None
        else:
            if freq_qtd in ('', None) or int(freq_qtd) < 2:
                erros.append("O Campo 'nome' é obrigatório!\n"
                             "E não pode ser inferior a 2.")
        try:
            contato = ContatoModel[self.contato.id]
        except:
            pass

        # Showing dialog with errors found
        if erros:
            dialog = MDDialog(title='Errors', size_hint=(.9, .8))
            box = StackLayout(size_hint_y=None)
            for e in erros:
                box.add_widget(
                    MDLabel(text=e,
                            size_hint_y=None,
                            height='48dp',
                            font_size='18dp',
                            theme_text_color='Error'))

            dialog.content = box
            dialog.add_action_button('Close',
                                     action=lambda *x: dialog.dismiss())
            dialog.open()

        else:
            transacao_id = None

            parcel_value = (valor / num_parcelas).quantize(Decimal('1.00'),
                                                           rounding=ROUND_DOWN)
            excedent = (valor - (parcel_value * num_parcelas)).quantize(
                Decimal('1.00'), rounding=ROUND_DOWN)

            transacao_id = TransacaoModel.insert(
                nome=nome,
                descricao=descricao,
                valor=valor,
                lancamento=lancamento,
                tipo_transacao=tipo_transacao.name,
                parcelado=parcelado,
                tipo_pagamento=tipo_pagamento.name,
                recorrente=recorrente,
                frequencia=frequencia)
            db.commit()

            # Creating Parcels of the Ticket
            if not parcelado and not recorrente:
                ParcelaModel.insert(nome=nome,
                                    valor=valor,
                                    vencimento=vencimento,
                                    pago=False,
                                    transacao_id=transacao_id)
                db.commit()
            elif parcelado:
                for p in range(num_parcelas):
                    if p == num_parcelas - 1: parcel_value += excedent
                    nExpiration = vencimento + relativedelta(months=p)
                    ParcelaModel.insert(nome="{nome} {parcela}/{total}".format(
                        nome=nome, parcela=p + 1, total=num_parcelas),
                                        valor=parcel_value,
                                        vencimento=nExpiration,
                                        pago=False,
                                        transacao_id=transacao_id)
                    db.commit()
            elif recorrente:
                for req in range(int(freq_qtd)):
                    periodo = self.calcula_periodo(frequencia, req)
                    nExpiration = vencimento + periodo
                    ParcelaModel.insert(
                        nome="{nome} {mes}/{ano}".format(nome=nome,
                                                         mes=nExpiration.month,
                                                         ano=nExpiration.year),
                        valor=valor,
                        vencimento=nExpiration,
                        pago=False,
                        transacao_id=transacao_id)
                    db.commit()
            self.app.root.switch_to(TELAS.DETALHE_TRANSACAO,
                                    transacao_id=transacao_id)
Exemplo n.º 6
0
def unfollowUser(id):
    user = User.query.filter_by(id = id).first()  #friend's id
    current_user.follows.remove(user)
    db.session.add(current_user)
    db.commit()
    return {"user": user.to_user_name_to_dic() }# from flask import Blueprint, jsonify, redirect, request
Exemplo n.º 7
0
 def marcar_como_paga(self, *args):
     parcela = db(ParcelaModel.id == self.parcela_id).update(pago=True)
     db.commit()
     # parcela = session.query(Parcela).filter_by(id=self.parcela_id).first()
     # parcela.pago = True
     self.app.root.switch_to(TELAS.LISTA_TRANSACAO)