Exemplo n.º 1
0
 def test_creation_duplicates(self):
   p = Portfolio(name='Avanza', currency='SEK').save()
   a_date = datetime.date(2001, 1, 3)
   pos = Position(symbol='AAPL', 
       currency='SEK', 
       currency_rate=1.0, 
       enter_date=a_date,
       enter_price=5000.0, 
       enter_commission=99.0, 
       shares=1000.0, 
       portfolio=p)
   pos.save()
   self.assertRaises(Exception, pos.save)
Exemplo n.º 2
0
def quotes(request):  
  symbols = []
  for position in Position.all():
    symbols.append(position.symbol)

  RealtimeQuote.delete_all()
  RealtimeQuote.download_all(symbols)
  
  return redirect(request)
Exemplo n.º 3
0
def fixture(request):
  Position.delete_all()
  Quote.delete_all()
  Portfolio.delete_all()
  avanza = Portfolio(name='Avanza', currency='SEK').save()
  Portfolio(name='XO', currency='GBP').save()
  Position(symbol='AAPL', 
        currency='SEK', 
        currency_rate=1.0, 
        enter_date=date.today(),
        enter_price=5000.0, 
        enter_commission=99.0, 
        shares=1000.0, 
        portfolio=avanza).save()
  Quote(symbol='AAPL', 
        close=1234.5,
        high=1234.5,
        low=1234.5,
        open=1234.5,
        date=date.today()).save()

  return HttpResponseRedirect('/')
Exemplo n.º 4
0
def historical_quotes(request):  
  symbols = []
  for position in Position.all():
    symbols.append(position.symbol)
    start_date = request.GET.get('start_date')
    stop_date = request.GET.get('stop_date')
    if start_date:
      Quote.yahoo(
          position.symbol, 
          start_date=datetime.strptime(start_date, '%Y-%m-%d').date(),
          stop_date=datetime.strptime(stop_date, '%Y-%m-%d').date())
    else:
       Quote.yahoo(position.symbol)
  
  return redirect(request)
Exemplo n.º 5
0
  def test_creation(self):
    p = Portfolio(name='Avanza', currency='SEK').save()
    a_date = datetime.date(2001, 1, 3)
    Position(symbol='AAPL', 
        currency='SEK', 
        currency_rate=1.0, 
        enter_date=a_date,
        enter_price=5000.0, 
        enter_commission=99.0, 
        shares=1000.0, 
        portfolio=p).save()

    fetched_model = Position.load(
        symbol='AAPL', 
        enter_date=a_date,
        portfolio=p)

    self.assertEquals('AAPL', fetched_model.symbol)
    self.assertEquals(a_date, fetched_model.enter_date)
    self.assertEquals(p, fetched_model.portfolio)
Exemplo n.º 6
0
def alerts(request):
  body = ''
  for position in Position.all():
    if position.exit_date is not None or not position.shares:
      continue
    if position.below_stop():
      body += '\n%s in portfolio %s below stop' % (position.symbol, position.portfolio.name)
    if position.below_ll_10():
      body += '\n%s in portfolio %s below ll10' % (position.symbol, position.portfolio.name)
  if len(body) == 0:
    return HttpResponseRedirect('/')

  body = 'The following alerts have been triggered:\n' + body
  body += '\n\nVisit http://quote-portfolio.appspot.com for details.'

  mail.send_mail(sender="*****@*****.**",
    to="*****@*****.**",
    subject="Portfolio alert",
    body=body)

  return HttpResponseRedirect('/')
Exemplo n.º 7
0
 def test_delete_all(self):
   p = Portfolio(name='Avanza', currency='SEK').save()
   a_date = datetime.date(2001, 1, 3)
   pos = Position(symbol='AAPL', 
       currency='SEK', 
       currency_rate=1.0, 
       enter_date=a_date,
       enter_price=5000.0, 
       enter_commission=99.0, 
       shares=1000.0, 
       portfolio=p)
   pos.save()
   Position.delete_all()
   fetched_model = Position.load(
       symbol='AAPL', 
       enter_date=a_date,
       portfolio=p)
   self.assertFalse(fetched_model)