Exemplo n.º 1
0
def table():
    stocks = StockDb.query.all()
    total = Stock.get_total(stocks)
    form = AddStockForm()

    if request.method == 'POST':
        stock_symbol = request.form['stock_symbol']
        num_of_shares = request.form['num_of_shares']
        purchase_price = request.form['purchase_price']

        stock = Stock(stock_symbol, num_of_shares, purchase_price)
        info = stock.get_stock_data()

        stock = StockDb(
            id=info['_id'],
            full_name=info['full_name'],
            stock_symbol=info['stock_symbol'],
            shares=info['shares'],
            purchase_price=info['purchase_price'],
            net_buy_price=info['net_buy_price'],
            logo=info['logo']
        )
        db.create_all()
        db.session.add(stock)
        db.session.commit()

        flash(f'{stock_symbol.upper()} stock was added successfully', 'alert-success')
        return redirect(url_for('stocks.table'))

    return render_template('stocks/table.html', stocks=stocks, Stock=Stock, total=total, form=form)
Exemplo n.º 2
0
    def run(cls):
        uber = Stock(symbol='uber', volume=5000000)
        apple = Stock(symbol='aapl', volume=5000000)

        db.session.add(uber)
        db.session.add(apple)
        db.session.commit()
Exemplo n.º 3
0
def resource_create_stock(ticker):

    stock_repository = (ApplicationContext.instance().stock_repository)

    stock = Stock.from_dataclass(
        stock_dc.StockIndicatorDataclass.from_json(request.data))

    stock_repository.create(stock)

    return ({}, StatusCode.CREATED.value, HttpHeaders.JSON_HEADER.value)
Exemplo n.º 4
0
def __create_stock_daily(request, date, indicator):
    stock_repository = ApplicationContext.instance().stock_repository

    for days in range(9):
        today = get_business_day(get_business_day(date, -8), days)
        stock = stock_repository.find_stock_by_ticker_and_timeframe_and_date(
            request.ticker, request.time_frame, str(today))

        if not stock:
            dataclass = __create_stock(request, today, indicator)
            stock = stock_repository.create(Stock.from_dataclass(dataclass))

    return stock
Exemplo n.º 5
0
def money_homepage():
    """
    使用这个api来获取资金总览页面的表格
    ---
    tags:
     - MoneyHomePage
    responses:
      200:
       description: 获取图表成功,返回库存总金额,销售金额,盈利,邮费
       schema:
         $ref: "#/definitions/MoneyPage"

    definitions:
        MoneyPage:
          properties:
            stockMoney:
              type: integer
              example: 1000
            orderSold:
              type: integer
              example: 2000
            orderProfit:
              type: integer
              example: 500
            orderPost:
              type: integer
              example: 100
            orderPurchase:
              type: integer
              example: 1400
    """
    stock = Stock()
    stock_money = StockMoney()
    order = Order()
    order_money = OrderMoney()

    stock_total_money = get_total_money(stock, stock_money,
                                        'stock')['total_money']
    order_get_money = get_total_money(order, order_money, 'order')
    order_sold = order_get_money['total_money']
    order_profit = order_get_money['total_profit']
    order_post = order_get_money['total_post']
    order_purchase = order_sold - order_profit - order_post
    back_data = {
        "stockMoney": stock_total_money,
        "orderPurchase": order_purchase,
        "orderSold": order_sold,
        "orderProfit": order_profit,
        "orderPost": order_post
    }
    return json.dumps(back_data), 200
Exemplo n.º 6
0
def stock_homepage():
    """
    使用这个api来获取库存总览图表
    ---
    tags:
     - GetStockHomePage
    responses:
      200:
       description: 获取图表成功,返回包含库存总额,总数和各个类别的库存总额和总数
       schema:
         $ref: "#/definitions/StockGraph"

    definitions:
        StockGraph:
          properties:
            overview:
              type: object
              example: {"num":85,"total":56700}
            types:
              type: array
              description: 库存类型
              example: ["Phone","Pad","Computer","Accessories","EarPhone","Other"]
            num:
              type: array
              description: 类型对应数量
              example: [10,10,1,50,10,4]
            total:
              type: array
              description: 类型对应库存金额
              example: [10000,40000,4000,2000,200,500]
    """
    stock = Stock()
    money = StockMoney()
    type_dict = {
        "overview": {
            "num": 0,
            "total": 0
        },
        "types":
        ["Phone", "Pad", "Computer", "Accessories", "EarPhones", "Other"],
        "num": [0, 0, 0, 0, 0, 0],
        "total": [0, 0, 0, 0, 0, 0]
    }
    type_dict = get_stock_page(stock, money, type_dict)
    return json.dumps(type_dict)
Exemplo n.º 7
0
def __create_stock_weekly(request, date, indicator):
    stock_repository = ApplicationContext.instance().stock_repository

    count = 0
    for key, value in indicator.reverse_prices.items():
        if count == 7:
            break

        key_date = datetime.strptime(key, '%Y-%m-%d').date()
        if key_date > date:
            continue

        count += 1

        stock = stock_repository.find_stock_by_ticker_and_timeframe_and_date(
            request.ticker, request.time_frame, key)

        if not stock:
            dataclass = __create_stock(request, key_date, indicator)
            stock = stock_repository.create(Stock.from_dataclass(dataclass))

    return stock_repository.find_stock_by_ticker_and_timeframe_and_date(
        request.ticker, request.time_frame, str(date))
Exemplo n.º 8
0
def add_stock():
    """
   使用这个api来添加库存
    ---
    tags:
     - AddStock
    parameters:
    parameters:
     - name: userId
       in: body
       type: integer
       required: true
       description: 创建库存人id
       example: 1
     - name: stock
       in: body
       type: object
       required: true
       description: 需要的库存数据
       properties:
            productType:
                type: array
                description: 产品类型
                example: ['Pad']
            productName:
                type: string
                description: 产品名称
                example: iPhone
            productDescription:
                type: object
                description: 机器的详细描述(颜色,外观,内存,储存)
                properties:
                    color:
                        type: string
                        description: 颜色
                        example: silver
                    outlook:
                        type: string
                        description: 外观
                        example: 新
                    memory:
                        type: string
                        description: 内存
                        example: 8G
                    storage:
                        type: string
                        description: 内存
                        example: 1024
            platform:
                type: string
                description: 收购平台
                example: vx
            money:
                type: object
                description: 钱
                properties:
                    price:
                        type: integer
                        description: 单价
                        example: 100
                    num:
                        type: integer
                        description: 数量
                        example: 20
            creator:
                type: string
                description: 创建人
                example: W
            contact:
                type: string
                description: 联系方式
                example: 182****9597
            note:
                type: string
                description: 备注
                example: admin
    responses:
      200:
       description: 创建库存成功,返回一个状态success
       schema:
         properties:
            status:
              type: string
              example: success
      502:
       description: 创建库存失败,返回一个状态failed
       schema:
         properties:
            status:
              type: string
              example: failed
    """
    get_data = request.get_json()
    # 获取stock信息
    stock_info = get_data.get('stock')
    back_data = {
        'userId': get_data.get('userId'),
        'productType': stock_info.get('productType'),
        'productName': stock_info.get('productName'),
        'productDescription': stock_info.get('productDescription'),
        'platform': stock_info.get('platform'),
        'price': stock_info.get('money')['price'],
        'num': stock_info.get('money')['num'],
        'creator': stock_info.get('creator'),
        'contact': stock_info.get('contact'),
        'note': stock_info.get('note')
    }
    stock = Stock()
    stock_money = StockMoney()
    stock_creator = Creator()
    md = MoneyDetail()

    # 配置stock_info
    stock.userId = back_data['userId']
    stock.dateTime = datetime.datetime.now()
    # 将productType 以字符串存入
    product_type = ''
    for i in range(len(back_data['productType'])):
        product_type = product_type + str(back_data['productType'][i])
        if i != len(back_data['productType']) - 1:
            product_type = product_type + '/'

    stock.productType = product_type
    stock.productName = back_data['productName']
    stock.productDescription = str(back_data['productDescription'])
    stock.platform = back_data['platform']
    stock.note = back_data['note']
    stock.isSold = 0
    # 配置stock_money
    stock_money.price = back_data['price']
    stock_money.num = back_data['num']
    stock_money.total = stock_money.price * stock_money.num
    # 配置stock_creator
    stock_creator.creator = back_data['creator']
    stock_creator.contact = back_data['contact']

    try:
        insert_stock(stock, stock_money, stock_creator)

        # 配置资金流水
        md.moneyType = 1
        md.typeId = stock.id
        md.productType = product_type
        md.productName = back_data['productName']
        md.money = stock_money.total
        md.dateTime = datetime.datetime.now()
        add_object(md)

        back_json = {"status": "success"}
        current_app.logger.info('%s insert stock successfully',
                                back_data['productName'])
    except:
        # TODO 错误之后数据库的id问题
        back_json = {"status": "failed"}
        current_app.logger.error('创建库存发生错误')
    return json.dumps(back_json), 200
Exemplo n.º 9
0
 def seed_stocks(self):
     with self.app.app_context():
         apple = Stock(symbol='aapl', volume=100)
         db.session.add(apple)
         db.session.commit()