def api_disconnect(request):
    # context = {}
    # print('Updating values before disconnecting')
    # update_values(request)

    # Resetting all email alerts to False
    reset_email_alerts()

    # Resetting the alarms
    saved_alarms_stocks = StockData.objects.filter(stock_alarm=True)
    for stock in saved_alarms_stocks:
        reset_alarms(stock)

    print('Stopping the IB API...')
    ib_api_wrapper(request,action=STOP_API )
    sleep(2)

    print('Stopping Yahoo scrapers...')
    indices_scrapers(stop=True)

    return 
Beispiel #2
0
def stock_alarms(request):
    user = authenticate(username='******', password='******')
    if user is not None:
        login(request, user)

    context = {}
    alarmed_stocks = StockData.objects.filter(stock_alarm=True)
    context['stocks'] = alarmed_stocks
    context['no_sidebar'] = True

    ib_api_connected = api_connection_status()
    context['ib_api_connected'] = ib_api_connected

    if request.method == 'POST':

        if 'connect_ib_api' in request.POST:

            # Connect the IB API
            api_connect(request)
            ib_api_connected = api_connection_status()
            context['ib_api_connected'] = ib_api_connected

            # Start scraping for indices data
            indices_scrapers()

            return render(request, 'kadima/stock_alarms.html', context)

        elif 'disconnect_ib_api' in request.POST:
            api_disconnect(request)
            # context = {}
            ib_api_connected = api_connection_status()
            context['ib_api_connected'] = ib_api_connected
            return render(request, 'kadima/stock_alarms.html', context)

        if 'all_alarms_set' in request.POST or 'stock_delta_set' in request.POST:

            if request.POST.get('all_alarms_set') == 'set_all':
                current_alarm_stocks = StockData.objects.filter(
                    stock_alarm=True)
                price_delta = float(request.POST.get(f'delta_select'))

                for stock in current_alarm_stocks:
                    stock.stock_initial_price = float(
                        request.POST.get(f'stock_price_{stock.pk}'))
                    stock.stock_alarm_delta = float(
                        request.POST.get(f'delta_select'))
                    stock.stock_alarm_trigger_set = True  # Turn on trigger alarm

                    # Reset alarm values
                    stock.stock_price_down_alarm = False  # reseting the up/down alerts
                    stock.stock_price_up_alarm = False
                    stock.stock_alarm_sound_on_off = False  # Resetting the alarm sound

                    stock.save()

            else:
                stock_id = request.POST.get('stock_delta_set')

                try:
                    stock_data = StockData.objects.get(id=stock_id)
                except Exception as e:
                    messages.warning(request, 'Please select a stock ticker.')
                    print('No Ticker selected.')
                    return render(request, 'kadima/stock_alarms.html', context)

                stock_data.stock_initial_price = float(
                    request.POST.get(f'stock_price_{stock_id}'))
                stock_data.stock_alarm_delta = float(
                    request.POST.get(f"delta_select"))
                stock_data.stock_alarm_trigger_set = True  # Turn on trigger alarm

                # Reset alarm values
                stock_data.stock_price_down_alarm = False  # reseting the up/down alerts
                stock_data.stock_price_up_alarm = False
                stock_data.stock_alarm_sound_on_off = False  # Resetting the alarm sound

                stock_data.save()

        elif 'stock_delta_reset' in request.POST:
            stock = StockData.objects.get(
                id=request.POST.get('stock_delta_reset'))
            reset_alarms(stock)

        elif 'stock_alarm_reset' in request.POST:
            saved_alarms_stocks = StockData.objects.filter(stock_alarm=True)
            for stock in saved_alarms_stocks:
                reset_alarms(stock)

        elif 'delete_all_alarms' in request.POST:
            alarm_stocks = StockData.objects.filter(stock_alarm=True)
            print(f'DELETING STOCKS: {request.POST}')
            for stock in alarm_stocks:
                stock.stock_alarm = False
                stock.save()

        elif 'stock_alarm_cancel' in request.POST:

            stock_id = request.POST.get('stock_alarm_cancel')
            stock = StockData.objects.get(id=stock_id)
            reset_alarms(stock)

            stock_trigger_status = False

            context['trigger_set'] = stock_trigger_status

        elif 'delete_stock' in request.POST:
            stock_id = request.POST['delete_stock']
            stock_data = StockData.objects.get(id=stock_id)
            stock_data.stock_alarm = False
            stock_data.stock_price_down_alarm = False  # reseting the up/down alerts
            stock_data.stock_price_up_alarm = False
            stock_data.stock_alarm_sound_on_off = False  # Resetting the alarm sound
            stock_data.stock_alarm_trigger_set = False  # Turn off the trigger alarm
            stock_data.stock_alarm_delta = 0.0
            stock_data.stock_initial_price = None
            stock_data.save()

            alarmed_stocks = StockData.objects.filter(stock_alarm=True)
            context['stocks'] = alarmed_stocks

        elif 'sort_gap' in request.POST:
            print('>> Gap Sorting <<')
            request.session['sort_by'] = 'gap_1'
            context['sort_by'] = request.session['sort_by']

        elif 'sort_week3' in request.POST:
            print('>> Week3 Sorting <<')
            request.session['sort_by'] = 'week_3'
            context['sort_by'] = request.session['sort_by']

        elif 'sort_week1' in request.POST:
            print('>> Week1 (90 Days) Sorting <<')
            request.session['sort_by'] = 'week_1'
            context['sort_by'] = request.session['sort_by']

        else:
            alarmed_stocks = StockData.objects.filter(stock_alarm=True)
            context['stocks'] = alarmed_stocks

            # return HttpResponseRedirect(request.path_info)

    return render(request, 'kadima/stock_alarms.html', context)
Beispiel #3
0
def stock_alarms(request):
    user = authenticate(username="******", password="******")
    if user is not None:
        login(request, user)

    context = {}
    alarmed_stocks = StockData.objects.filter(stock_alarm=True)
    context["stocks"] = alarmed_stocks
    context["no_sidebar"] = True

    ib_api_connected = api_connection_status()
    context["ib_api_connected"] = ib_api_connected

    if request.method == "POST":

        if "connect_ib_api" in request.POST:

            # Connect the IB API
            api_connect(request)
            ib_api_connected = api_connection_status()
            context["ib_api_connected"] = ib_api_connected

            # Start scraping for indices data
            indices_scrapers()

            return render(request, "kadima/stock_alarms.html", context)

        elif "disconnect_ib_api" in request.POST:
            api_disconnect(request)
            # context = {}
            ib_api_connected = api_connection_status()
            context["ib_api_connected"] = ib_api_connected
            return render(request, "kadima/stock_alarms.html", context)

        if "all_alarms_set" in request.POST or "stock_delta_set" in request.POST:

            if request.POST.get("all_alarms_set") == "set_all":
                current_alarm_stocks = StockData.objects.filter(
                    stock_alarm=True)
                price_delta = float(request.POST.get(f"delta_select"))

                for stock in current_alarm_stocks:
                    stock.stock_initial_price = float(
                        request.POST.get(f"stock_price_{stock.pk}"))
                    stock.stock_alarm_delta = float(
                        request.POST.get(f"delta_select"))
                    stock.stock_alarm_trigger_set = True  # Turn on trigger alarm

                    # Reset alarm values
                    stock.stock_price_down_alarm = False  # reseting the up/down alerts
                    stock.stock_price_up_alarm = False
                    stock.stock_alarm_sound_on_off = False  # Resetting the alarm sound

                    stock.save()

            else:
                stock_id = request.POST.get("stock_delta_set")

                try:
                    stock_data = StockData.objects.get(id=stock_id)
                except Exception as e:
                    messages.warning(request, "Please select a stock ticker.")
                    print("No Ticker selected.")
                    return render(request, "kadima/stock_alarms.html", context)

                stock_data.stock_initial_price = float(
                    request.POST.get(f"stock_price_{stock_id}"))
                stock_data.stock_alarm_delta = float(
                    request.POST.get(f"delta_select"))
                stock_data.stock_alarm_trigger_set = True  # Turn on trigger alarm

                # Reset alarm values
                stock_data.stock_price_down_alarm = False  # reseting the up/down alerts
                stock_data.stock_price_up_alarm = False
                stock_data.stock_alarm_sound_on_off = False  # Resetting the alarm sound

                stock_data.save()

        elif "stock_delta_reset" in request.POST:
            stock = StockData.objects.get(
                id=request.POST.get("stock_delta_reset"))
            reset_alarms(stock)

        elif "stock_alarm_reset" in request.POST:
            saved_alarms_stocks = StockData.objects.filter(stock_alarm=True)
            for stock in saved_alarms_stocks:
                reset_alarms(stock)

        elif "delete_all_alarms" in request.POST:
            alarm_stocks = StockData.objects.filter(stock_alarm=True)
            print(f"DELETING STOCKS: {request.POST}")
            for stock in alarm_stocks:
                stock.stock_alarm = False
                stock.save()

        elif "stock_alarm_cancel" in request.POST:

            stock_id = request.POST.get("stock_alarm_cancel")
            stock = StockData.objects.get(id=stock_id)
            reset_alarms(stock)

            stock_trigger_status = False

            context["trigger_set"] = stock_trigger_status

        elif "delete_stock" in request.POST:
            stock_id = request.POST["delete_stock"]
            stock_data = StockData.objects.get(id=stock_id)
            stock_data.stock_alarm = False
            stock_data.stock_price_down_alarm = False  # reseting the up/down alerts
            stock_data.stock_price_up_alarm = False
            stock_data.stock_alarm_sound_on_off = False  # Resetting the alarm sound
            stock_data.stock_alarm_trigger_set = False  # Turn off the trigger alarm
            stock_data.stock_alarm_delta = 0.0
            stock_data.stock_initial_price = None
            stock_data.save()

            alarmed_stocks = StockData.objects.filter(stock_alarm=True)
            context["stocks"] = alarmed_stocks

        elif "sort_gap" in request.POST:
            print(">> Gap Sorting <<")
            logger.info(">> Gap Sorting <<")
            request.session["sort_by"] = "gap_1"
            context["sort_by"] = request.session["sort_by"]

        elif "sort_week3" in request.POST:
            print(">> Week3 Sorting <<")
            logger.info(">> Week3 Sorting <<")
            request.session["sort_by"] = "week_3"
            context["sort_by"] = request.session["sort_by"]

        elif "sort_week1" in request.POST:
            print(">> Week1 (90 Days) Sorting <<")
            logger.info(">> Week1 (90 Days) Sorting <<")
            request.session["sort_by"] = "week_1"
            context["sort_by"] = request.session["sort_by"]

        else:
            alarmed_stocks = StockData.objects.filter(stock_alarm=True)
            context["stocks"] = alarmed_stocks

            # return HttpResponseRedirect(request.path_info)

    return render(request, "kadima/stock_alarms.html", context)