def stock_summary(request, symbol=None):
    if symbol == None:
        symbol = request.POST['symbol']

    current_stock = Stock()
    stock = Share(symbol)
    current_stock.symbol = symbol.upper()
    current_stock.price = stock.get_price()
    current_stock.change = stock.get_change()
    current_stock.volume = stock.get_volume()
    current_stock.prev_close = stock.get_prev_close()
    current_stock.stock_open = stock.get_open()
    current_stock.avg_daily_volume = stock.get_avg_daily_volume()
    current_stock.stock_exchange = stock.get_stock_exchange()
    current_stock.market_cap = stock.get_market_cap()
    current_stock.book_value = stock.get_book_value()
    current_stock.ebitda = stock.get_ebitda()
    current_stock.dividend_share = stock.get_dividend_share()
    current_stock.dividend_yield = stock.get_dividend_yield()
    current_stock.earnings_share = stock.get_earnings_share()
    current_stock.days_high = stock.get_days_high()
    current_stock.days_low = stock.get_days_low()
    current_stock.year_high = stock.get_year_high()
    current_stock.year_low = stock.get_year_low()
    current_stock.fifty_day_moving_avg = stock.get_50day_moving_avg()
    current_stock.two_hundred_day_moving_avg = stock.get_200day_moving_avg()
    current_stock.price_earnings_ratio = stock.get_price_earnings_ratio()
    current_stock.price_earnings_growth_ratio = stock.get_price_earnings_growth_ratio()
    current_stock.price_sales = stock.get_price_sales()
    current_stock.price_book = stock.get_price_book()
    current_stock.short_ratio = stock.get_short_ratio()

    date_metrics = []
    url = 'http://chartapi.finance.yahoo.com/instrument/1.0/'+symbol+'/chartdata;type=quote;range=1y/csv'
    page = urllib2.urlopen(url).read()
    pagebreaks = page.split('\n')
    for line in pagebreaks:
        items = line.split(',')
        if 'Company-Name:' in line:
            current_stock.company_name = line[13:len(line)]
            current_stock.save()
        if 'values' not in items:
            if len(items)==6:
                hd = HistoricalData(
                    stock_id = Stock.objects.get(id=int(current_stock.id)).id,
                    date = items[0][4:6]+'/'+items[0][6:9]+'/'+items[0][0:4],
                    close = items[1][0:(len(items[1])-2)],
                    high = items[2][0:(len(items[2])-2)],
                    price_open = items[3][0:(len(items[3])-2)],
                    low = items[4][0:(len(items[4])-2)],
                    volume = items[5][0:-6]+","+items[5][-6:-3]+","+items[5][-3:len(items[5])])
                hd.save()
                date_metrics.append(hd)
    del date_metrics[0]
    return render(request, "stock_summary.html", {'current_stock': current_stock, 'date_metrics': date_metrics})
예제 #2
0
def create_stock_from_offer(offer, price=10, available=10, soft_deleted=False, booking_limit_datetime=None,
                            beginning_datetime=None, end_datetime=None):
    stock = Stock()
    stock.offer = offer
    stock.price = price
    stock.available = available
    stock.isSoftDeleted = soft_deleted
    stock.bookingLimitDatetime = booking_limit_datetime
    stock.beginningDatetime = beginning_datetime
    stock.endDatetime = end_datetime
    return stock
예제 #3
0
def stock_finviz_info(stock: Stock):
    soup = get_soup(f"https://finviz.com/quote.ashx?t={stock.ticker}")
    mult = get_finviz_table(soup)
    stock.atr = check_hash(mult['atr'])
    stock.price = check_hash(mult['price'])
    stock.beta = check_hash(mult['beta'])
    stock.atr_to_price = stock.atr / stock.price
    stock.avg_volume = get_avg_volume(mult['avg volume'])

    links = soup.find('table', class_='fullview-title').find_all(class_='tab-link')
    stock.sector = links[1].text
    stock.industry = links[2].text
예제 #4
0
def create_stock(price=10, available=10, booking_limit_datetime=None, offer=None,
                 beginning_datetime=None, end_datetime=None,
                 is_soft_deleted=False, id_at_providers=None, last_provider_id=None):
    stock = Stock()
    stock.price = price
    stock.available = available
    stock.bookingLimitDatetime = booking_limit_datetime
    stock.offer = offer
    stock.beginningDatetime = beginning_datetime
    stock.endDatetime = end_datetime
    stock.isSoftDeleted = is_soft_deleted
    stock.idAtProviders = id_at_providers
    stock.lastProviderId = last_provider_id
    return stock
예제 #5
0
def create_stock_from_event_occurrence(event_occurrence, price=10, available=10, soft_deleted=False, recap_sent=False,
                                       booking_limit_date=None):
    stock = Stock()
    stock.beginningDatetime = event_occurrence['beginningDatetime']
    stock.endDatetime = event_occurrence['endDatetime']
    stock.offerId = event_occurrence['offerId']
    stock.offer = event_occurrence['offer']
    stock.price = price
    stock.available = available
    stock.isSoftDeleted = soft_deleted
    if recap_sent:
        stock.bookingRecapSent = datetime.utcnow()
    if booking_limit_date is None:
        stock.bookingLimitDatetime = event_occurrence['beginningDatetime']
    else:
        stock.bookingLimitDatetime = booking_limit_date
    return stock
예제 #6
0
def create_stock_with_thing_offer(offerer, venue, offer=None, price=10, available=50, name='Test Book',
                                  booking_email='*****@*****.**', soft_deleted=False, url=None,
                                  booking_limit_datetime=None, thing_type=ThingType.AUDIOVISUEL) -> Stock:
    stock = Stock()
    stock.offerer = offerer
    stock.price = price
    if offer:
        stock.offer = offer
    else:
        stock.offer = create_offer_with_thing_product(venue, thing_name=name, thing_type=thing_type)
    stock.offer.bookingEmail = booking_email
    stock.bookingLimitDatetime = booking_limit_datetime

    stock.offer.url = url
    stock.offer.venue = venue
    stock.available = available
    stock.isSoftDeleted = soft_deleted
    return stock
예제 #7
0
def create_stock_with_event_offer(offerer, venue, price=10, booking_email='*****@*****.**', available=10,
                                  is_soft_deleted=False, event_type=EventType.JEUX, name='Mains, sorts et papiers',
                                  offer_id=None, beginning_datetime=datetime.utcnow() + timedelta(hours=72),
                                  end_datetime=datetime.utcnow() + timedelta(hours=74), thumb_count=0,
                                  booking_limit_datetime=datetime.utcnow() + timedelta(hours=71)):
    stock = Stock()
    stock.offerer = offerer
    stock.price = price
    stock.available = available

    stock.beginningDatetime = beginning_datetime
    stock.endDatetime = end_datetime
    stock.bookingLimitDatetime = booking_limit_datetime

    stock.offer = create_offer_with_event_product(venue, event_name=name, event_type=event_type,
                                                  booking_email=booking_email, is_national=False,
                                                  thumb_count=thumb_count)
    stock.offer.id = offer_id
    stock.isSoftDeleted = is_soft_deleted

    return stock