示例#1
0
    def testGetCurrentUser(self):
        user.get_current_user_key = mock(return_value=None)

        assert user.get_current_user() == None

        key = self.newUser(username='******')
        user.get_current_user_key = mock(return_value=key)

        u = user.get_current_user()
        assert u.username == 'username'
示例#2
0
def delete(id):
	"""Remove um fornecedor cadastrado.
	"""

	logging.debug("Removendo o fornecedor %d persistido na loja", id)

	#Identificando usuário da requisição
	email = user.get_current_user().email()

	logging.debug("Obtendo a entidade da loja para o usuario %s", email)

	#Obtendo marketplace como parent
	marketplaceModel = marketplace.get(email)

	logging.debug("Loja encontrada com sucesso")

	#Realizando query, selecionando o fornecedor pelo pai e id
	supplier = ndb.Key('SupplierModel', int(id), parent=marketplaceModel.key).get() 

	if supplier is None:
		raise IndexError("Fornecedor não encontrado!")

	logging.debug("Fornecedor encontrado com sucesso")

	supplier.key.delete()

	logging.debug("Fornecedor removido com sucesso")
示例#3
0
def delete(id):
    """Remove um produto cadastrado.
	"""

    logging.debug("Removendo o produto %d persistido na loja", id)

    #Identificando usuário da requisição
    email = user.get_current_user().email()

    logging.debug("Obtendo a entidade da loja para o usuario %s", email)

    #Obtendo marketplace como parent
    marketplaceModel = marketplace.get(email)

    logging.debug("Loja encontrada com sucesso")

    #Realizando query, selecionando o produto pelo pai e id
    product = ndb.Key('ProductModel', int(id),
                      parent=marketplaceModel.key).get()

    if product is None:
        raise IndexError("Produto não encontrado!")

    logging.debug("Produto encontrado com sucesso")

    product.key.delete()

    logging.debug("Produto removido com sucesso")
示例#4
0
def delete(id):
	"""Remove um produto cadastrado.
	"""

	logging.debug("Removendo o produto %d persistido na loja", id)

	#Identificando usuário da requisição
	email = user.get_current_user().email()

	logging.debug("Obtendo a entidade da loja para o usuario %s", email)

	#Obtendo marketplace como parent
	marketplaceModel = marketplace.get(email)

	logging.debug("Loja encontrada com sucesso")

	#Realizando query, selecionando o produto pelo pai e id
	product = ndb.Key('ProductModel', int(id), parent=marketplaceModel.key).get() 

	if product is None:
		raise IndexError("Produto não encontrado!")

	logging.debug("Produto encontrado com sucesso")

	product.key.delete()

	logging.debug("Produto removido com sucesso")
示例#5
0
def pick_commands():
    assert_user_signed_in()

    checkbox_prefix = 'checkbox_'
    checked = {}
    error = None
    if request.method == 'POST':
        try:
            params = get_params(request.form)

            user = get_current_user()
            for k in params.iterkeys():
                if k.startswith(checkbox_prefix):
                    command = builtin_commands.get(k[len(checkbox_prefix):])
                    if command != None:
                        checked[command.name] = True
            for k in sorted(checked.keys()):
                user.commands.add(builtin_commands.get(k))
            user.put()
            return redirect(COMMANDS)
        except ParamException as e:
            error = e.message

    return render(
        'pick_commands.html',
        builtin_command_groups=builtin_command_groups,
        checkbox_prefix=checkbox_prefix,
        checked=checked,
        error=error,
        csrf_token=get_csrf_token(),
    )
示例#6
0
def delete(id):
    """Remove uma compra cadastrada.
	"""

    logging.debug("Removendo a compra %d persistida na loja", id)

    #Identificando usuário da requisição
    email = user.get_current_user().email()

    logging.debug("Obtendo a entidade da loja para o usuario %s", email)

    #Obtendo marketplace como parent
    marketplaceModel = marketplace.get(email)

    logging.debug("Loja encontrada com sucesso")

    #Realizando query, selecionando a compra pelo pai e id
    purchase = ndb.Key('PurchaseModel', int(id),
                       parent=marketplaceModel.key).get()

    if purchase is None:
        raise IndexError("Compra não encontrada!")

    logging.debug("Compra encontrada com sucesso")

    purchase.key.delete()

    logging.debug("Compra removida com sucesso")
示例#7
0
def delete(id):
    """Remove um fornecedor cadastrado.
	"""

    logging.debug("Removendo o fornecedor %d persistido na loja", id)

    #Identificando usuário da requisição
    email = user.get_current_user().email()

    logging.debug("Obtendo a entidade da loja para o usuario %s", email)

    #Obtendo marketplace como parent
    marketplaceModel = marketplace.get(email)

    logging.debug("Loja encontrada com sucesso")

    #Realizando query, selecionando o fornecedor pelo pai e id
    supplier = ndb.Key('SupplierModel', int(id),
                       parent=marketplaceModel.key).get()

    if supplier is None:
        raise IndexError("Fornecedor não encontrado!")

    logging.debug("Fornecedor encontrado com sucesso")

    supplier.key.delete()

    logging.debug("Fornecedor removido com sucesso")
示例#8
0
def home():
    params = get_params(request.args)

    query = params.get('q')
    if query == None:
        return render('home.html', sample_queries=get_sample_queries())
    default_command = params.get('default')

    try:
        commands = builtin_commands
        if user_signed_in():
            user = get_current_user()
            commands = user.commands
            default_command = user.getDefaultCommand()

        return redirect(commands.getRedirectUrl(query, default_command))
    except (NotEnoughArgumentsException, UnknownCommandException,
            UnknownDefaultCommandException) as e:
        return render(
            'command_error.html',
            exception_type=e.__class__.__name__,
            exception=e,
        )
    except MalformedQueryException:
        return redirect(HOME)
示例#9
0
    def get(self, unused_request):
        """ Get current user marketplace.
        """

        marketplaceModel = models.get(user.get_current_user().email())

        return messages.MarketplaceGetMessage(
            name=marketplaceModel.name,
            created_date=marketplaceModel.created_date)
示例#10
0
def get_marketplace():
    """ Get active user marketplace.
    """

    # Identificando usuário da requisição
    email = user.get_current_user().email()

    # Return user active marketplace by email
    return get(email)
示例#11
0
def get_marketplace():
    """ Get active user marketplace.
    """

    # Identificando usuário da requisição
    email = user.get_current_user().email()

    # Return user active marketplace by email
    return get(email)
示例#12
0
    def get(self, unused_request):
        """ Get current user marketplace.
        """

        marketplaceModel = models.get(user.get_current_user().email())

        return messages.MarketplaceGetMessage(
            name=marketplaceModel.name,
            created_date=marketplaceModel.created_date)
示例#13
0
    def save(self, request):
        """ Add or update a marketplace to current user.
        """

        marketplaceModel = models.put(email=user.get_current_user().email(),
                                      name=request.name)

        return messages.MarketplaceGetMessage(
            name=marketplaceModel.name,
            created_date=marketplaceModel.created_date)
示例#14
0
    def save(self, request):
        """ Add or update a marketplace to current user.
        """

        marketplaceModel = models.put(
            email=user.get_current_user().email(), name=request.name)

        return messages.MarketplaceGetMessage(
            name=marketplaceModel.name,
            created_date=marketplaceModel.created_date)
示例#15
0
def set_default_command():
    assert_user_signed_in()

    params = get_params(request.form)
    default_command = params.get('default_command')

    user = get_current_user()
    user.setDefaultCommand(default_command)
    user.put()

    return redirect(COMMANDS)
示例#16
0
	def put(self, request):
		"""Atualizar a loja do usuário.
		"""

		logging.debug('Executando endpoint para atualizar a marketplace (loja) do usuário')

		# Atualizar marketplace (loja) do usuário
		marketplaceModel = models.put(email=user.get_current_user().email(), name=request.name)

		#retorna a marketplace (loja) do usuário
		return messages.MarketplaceGetMessage(name=marketplaceModel.name, created_date=marketplaceModel.created_date)   
示例#17
0
	def get(self, unused_request):
		"""Retornar a loja do usuário.
		"""

		logging.debug('Executando endpoint para obter a marketplace (loja) do usuário')

		#obter marketplaces (lojas) do usuário 
		marketplaceModel = models.get(user.get_current_user().email())

		#retorna a marketplace (loja) do usuário
		return messages.MarketplaceGetMessage(name=marketplaceModel.name, created_date=marketplaceModel.created_date)
示例#18
0
def delete_command():
    assert_user_signed_in()

    params = get_params(request.form)

    user = get_current_user()
    command = user.commands.get(params.get('delete'))
    if command != None:
        user.commands.remove(command.name)
        user.put()

    return redirect(COMMANDS)
示例#19
0
    def get(self, unused_request):
        """Retornar a loja do usuário.
		"""

        logging.debug(
            'Executando endpoint para obter a marketplace (loja) do usuário')

        #obter marketplaces (lojas) do usuário
        marketplaceModel = models.get(user.get_current_user().email())

        #retorna a marketplace (loja) do usuário
        return messages.MarketplaceGetMessage(
            name=marketplaceModel.name,
            created_date=marketplaceModel.created_date)
示例#20
0
def commands():
    if user_signed_in():
        user = get_current_user()
        return render(
            'commands.html',
            commands=user.commands.asSortedList(),
            default_command=user.getDefaultCommand(),
            command_limit=Commands.limit,
            csrf_token=get_csrf_token(),
        )

    return render(
        'builtin_commands.html',
        builtin_command_groups=builtin_command_groups,
    )
示例#21
0
def save_command(name=None,
                 description=None,
                 url_pattern=None,
                 default_url=None,
                 **kwargs):
    command = Command(
        name=name,
        description=description,
        url_pattern=url_pattern,
        default_url=default_url,
    )

    user = get_current_user()
    user.commands.add(command)
    user.put()
示例#22
0
def save(supplier):
    """Inclui ou atualiza um fornecedor.
	"""

    logging.debug("Persistindo um fornecedor na loja")

    #Identificando usuário da requisição
    email = user.get_current_user().email()

    logging.debug("Obtendo a entidade da loja para o usuario %s", email)

    #Obtendo marketplace como parent
    marketplaceModel = marketplace.get(email)

    logging.debug("Loja encontrada com sucesso")

    logging.debug(
        "Criando model para o fornecedor ou selecionando o existente para atualizá-lo"
    )

    if supplier.id is not None:
        supplierModel = ndb.Key('SupplierModel',
                                int(supplier.id),
                                parent=marketplaceModel.key).get()
    else:
        supplierModel = SupplierModel(parent=marketplaceModel.key)

    #Criando model
    supplierModel.name = supplier.name
    supplierModel.email = supplier.email
    supplierModel.phone = supplier.phone
    supplierModel.location = supplier.location

    #Persistindo fornecedor
    logging.debug("Persistindo fornecedor...")

    supplierModel.put()

    logging.debug("Persistido fornecedor %d com sucesso na loja %s",
                  supplierModel.key.id(), marketplaceModel.name)

    #Atualizando índice
    update_index(supplierModel)
    logging.debug("Índice atualizado com sucesso para o fornecedor %s",
                  supplierModel.key.id())

    #Retornando fornecedor cadastrado com o id
    return supplierModel
示例#23
0
    def put(self, request):
        """Atualizar a loja do usuário.
		"""

        logging.debug(
            'Executando endpoint para atualizar a marketplace (loja) do usuário'
        )

        # Atualizar marketplace (loja) do usuário
        marketplaceModel = models.put(email=user.get_current_user().email(),
                                      name=request.name)

        #retorna a marketplace (loja) do usuário
        return messages.MarketplaceGetMessage(
            name=marketplaceModel.name,
            created_date=marketplaceModel.created_date)
示例#24
0
def put(product):
    """Inclui ou atualiza um produto.
	"""

    logging.debug("Persistindo um produto na loja")

    #Identificando usuário da requisição
    email = user.get_current_user().email()

    logging.debug("Obtendo a entidade da loja para o usuario %s", email)

    #Obtendo marketplace como parent
    marketplaceModel = marketplace.get(email)

    logging.debug("Loja encontrada com sucesso")

    logging.debug(
        "Criando model para o produto ou selecionando o existente para atualizá-lo"
    )

    if product.id is not None:
        productModel = ndb.Key('ProductModel',
                               int(product.id),
                               parent=marketplaceModel.key).get()
    else:
        productModel = ProductModel(parent=marketplaceModel.key)

    #Criando model
    productModel.code = product.code
    productModel.name = product.name

    #Persistindo produto
    logging.debug("Persistindo produto...")

    productModel.put()

    logging.debug("Persistido produto %d com sucesso na loja %s",
                  productModel.key.id(), marketplaceModel.name)

    #Atualizando índice
    update_index(productModel)
    logging.debug("Índice atualizado com sucesso para o produto %s",
                  productModel.key.id())

    #Retornando produto cadastrado com o id
    return productModel
示例#25
0
def save(supplier):
	"""Inclui ou atualiza um fornecedor.
	"""

	logging.debug("Persistindo um fornecedor na loja")

	#Identificando usuário da requisição
	email = user.get_current_user().email()

	logging.debug("Obtendo a entidade da loja para o usuario %s", email)

	#Obtendo marketplace como parent
	marketplaceModel = marketplace.get(email)

	logging.debug("Loja encontrada com sucesso")

	logging.debug("Criando model para o fornecedor ou selecionando o existente para atualizá-lo")

	if supplier.id is not None:
		supplierModel = ndb.Key('SupplierModel', int(supplier.id), 
			parent=marketplaceModel.key).get() 
	else:
		supplierModel = SupplierModel(parent=marketplaceModel.key)

	#Criando model
	supplierModel.name = supplier.name
	supplierModel.email = supplier.email
	supplierModel.phone = supplier.phone
	supplierModel.location = supplier.location

	#Persistindo fornecedor
	logging.debug("Persistindo fornecedor...")

	supplierModel.put()

	logging.debug("Persistido fornecedor %d com sucesso na loja %s", 
		supplierModel.key.id(), marketplaceModel.name)

	#Atualizando índice
	update_index(supplierModel)
	logging.debug("Índice atualizado com sucesso para o fornecedor %s", 
		supplierModel.key.id())

	#Retornando fornecedor cadastrado com o id
	return supplierModel
示例#26
0
def put(product):
	"""Inclui ou atualiza um produto.
	"""

	logging.debug("Persistindo um produto na loja")

	#Identificando usuário da requisição
	email = user.get_current_user().email()

	logging.debug("Obtendo a entidade da loja para o usuario %s", email)

	#Obtendo marketplace como parent
	marketplaceModel = marketplace.get(email)

	logging.debug("Loja encontrada com sucesso")

	logging.debug("Criando model para o produto ou selecionando o existente para atualizá-lo")

	if product.id is not None:
		productModel = ndb.Key('ProductModel', int(product.id), 
			parent=marketplaceModel.key).get() 
	else:
		productModel = ProductModel(parent=marketplaceModel.key)

	#Criando model
	productModel.code = product.code
	productModel.name = product.name

	#Persistindo produto
	logging.debug("Persistindo produto...")

	productModel.put()

	logging.debug("Persistido produto %d com sucesso na loja %s", 
		productModel.key.id(), marketplaceModel.name)

	#Atualizando índice
	update_index(productModel)
	logging.debug("Índice atualizado com sucesso para o produto %s", 
		productModel.key.id())

	#Retornando produto cadastrado com o id
	return productModel
示例#27
0
def edit_command(command_name=None):
    assert_user_signed_in()

    if command_name == None:
        return redirect(NEW_COMMAND_ONLY)

    user = get_current_user()
    command = user.commands.get(command_name)
    if command == None:
        return redirect(NEW_COMMAND_ONLY + command_name)

    params = None
    if request.method == 'POST':
        # remove command, it might be renamed
        user.commands.remove(command.name)
        params = get_params(request.form)
        try:
            save_command(**params)
            return redirect(COMMANDS)
        except ParamException as e:
            params['error'] = e.message
            # add the command back, some other code might use it
            # before response is finalized
            user.commands.add(command)
    else:
        params = {
            'name': command.name,
            'description': command.description,
            'url_pattern': command.url_pattern,
            'default_url': command.default_url,
        }

    params['action'] = EDIT_COMMAND_ONLY + command_name
    params['original_command'] = command_name
    params['csrf_token'] = get_csrf_token()
    params['modifiers'] = modifiers

    return render('new_command.html', **params)
示例#28
0
def new_command(command_name=None):
    assert_user_signed_in()

    params = {}
    if command_name != None:
        user = get_current_user()
        if user.commands.get(command_name) != None:
            return redirect(EDIT_COMMAND_ONLY + command_name)
        params['name'] = command_name

    if request.method == 'POST':
        params = get_params(request.form)
        try:
            save_command(**params)
            return redirect(COMMANDS)
        except ParamException as e:
            params['error'] = e.message

    params['action'] = NEW_COMMAND_ONLY
    params['csrf_token'] = get_csrf_token()
    params['modifiers'] = modifiers

    return render('new_command.html', **params)
示例#29
0
def list():
	"""Listar os produtos cadastrados na loja do usuário.
	"""

	logging.debug("Listando os produtos cadastrados")

	#Identificando usuário da requisição
	email = user.get_current_user().email()

	logging.debug("Obtendo a entidade da loja para o usuario %s", email)

	#Obtendo marketplace como parent
	marketplaceModel = marketplace.get(email)

	#Realizando query, listando os produtos
	products = ProductModel.query(ancestor=marketplaceModel.key).order(
		ProductModel.name).fetch()

	logging.debug("Foram selecionado(s) %d produtos(s) cadastrados na loja do usuário %s", 
		len(products), email)

	#Retornando
	return products
示例#30
0
def list():
    """Listar os fornecedores cadastrados na loja do usuário.
	"""

    logging.debug("Listando os fornecedores cadastrados")

    #Identificando usuário da requisição
    email = user.get_current_user().email()

    logging.debug("Obtendo a entidade da loja para o usuario %s", email)

    #Obtendo marketplace como parent
    marketplaceModel = marketplace.get(email)

    #Realizando query, listando os fornecedores
    suppliers = SupplierModel.query(ancestor=marketplaceModel.key).order(
        SupplierModel.name).fetch()

    logging.debug(
        "Foram selecionado(s) %d fornecedores(s) cadastrados na loja do usuário %s",
        len(suppliers), email)

    #Retornando
    return suppliers
示例#31
0
def list():
    """Listar compras cadastradas para a loja do usuário.
	"""

    logging.debug("Listando compras cadastradas")

    #Identificando usuário da requisição
    email = user.get_current_user().email()

    logging.debug("Obtendo a entidade da loja para o usuario %s", email)

    #Obtendo marketplace como parent
    marketplaceModel = marketplace.get(email)

    #Realizando query, listando as compras
    purchases = PurchaseModel.query(ancestor=marketplaceModel.key).order(
        -PurchaseModel.purchase_date).fetch()

    logging.debug(
        "Foram selecionada(s) %d compra(s) para a loja do usuário %s",
        len(purchases), email)

    #Retornando
    return purchases
示例#32
0
def put(purchase):
    """Inclui ou atualiza uma compra.
	"""

    logging.debug("Persistindo uma compra na loja")

    #Identificando usuário da requisição
    email = user.get_current_user().email()

    logging.debug("Obtendo a entidade da loja para o usuario %s", email)

    #Obtendo marketplace como parent
    marketplaceModel = marketplace.get(email)

    logging.debug("Loja encontrada com sucesso")

    logging.debug(
        "Criando model para a compra ou selecionando o existente para atualizá-lo"
    )

    if purchase.id is not None:
        purchaseModel = ndb.Key('PurchaseModel',
                                int(purchase.id),
                                parent=marketplaceModel.key).get()
    else:
        purchaseModel = PurchaseModel(parent=marketplaceModel.key)

    #Selecionando models filhas
    productModel = ndb.Key('ProductModel',
                           int(purchase.product.id),
                           parent=marketplaceModel.key).get()
    if productModel is None:
        raise IndexError("Produto com o id %d não encontrado!",
                         purchase.product.id)
    purchaseModel.product = productModel

    #Criando model
    purchaseModel.supplier = purchase.supplier
    purchaseModel.quantity = purchase.quantity
    purchaseModel.purchase_date = purchase.purchase_date
    purchaseModel.received_date = purchase.received_date
    purchaseModel.cost = purchase.cost
    purchaseModel.total_cost = purchase.total_cost
    purchaseModel.exchange_dollar = purchase.exchange_dollar
    purchaseModel.cost_dollar = purchase.cost_dollar
    purchaseModel.total_cost_dollar = purchase.total_cost_dollar
    purchaseModel.shipping_cost = purchase.shipping_cost
    purchaseModel.track_code = purchase.track_code
    purchaseModel.invoice = purchase.invoice
    purchaseModel.payment_date = purchase.payment_date
    purchaseModel.purchase_link = purchase.purchase_link

    logging.debug("Persistindo compra...")

    #Persistindo
    purchaseModel.put()

    logging.debug("Persistida compra %d com sucesso na loja ",
                  purchaseModel.key.id(), marketplaceModel.name)

    return purchaseModel