То есть, в select полях не за что будет зацепиться — ссылок Resorts на Countries там нет
resort_to_country = Resorts.objects.all().values_list('pk', 'country_id')
<script type="text/javascript">
resort_to_country = [
{% for resort_id, country_id in resort_to_country %}
[{{ resort_id }}, {{ country_id }}],
]
{% endfor %}
</script>
urlpatterns = [
url(r'^dollar_evro/$', views.dollar_evro, name='dollar_evro'),
path('', ListView.as_view(queryset=posts.objects.all().order_by("-date")[:20],
template_name="pages/wrapper.html"))
]
SELENIUM_REMOTE = 'http://<ip-адрес-контейнера-docker>:4444/'
@contextmanager
def selenium_driver():
try:
LOCAL_DRIVER = settings.LOCAL_DRIVER
except AttributeError:
LOCAL_DRIVER = False
if not LOCAL_DRIVER:
wait_selenium_connection()
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('start-maximized')
capabilities = options.to_capabilities()
if LOCAL_DRIVER:
driver = webdriver.Chrome(chrome_options=options)
else:
selenium_url = '{0}/wd/hub/'.format(settings.SELENIUM_REMOTE.strip('/'))
n = 0
while True:
try:
driver = webdriver.Remote(
command_executor=selenium_url,
desired_capabilities=capabilities
)
break
except (ConnectionResetError, ConnectionRefusedError) as e:
if n >= 3:
reraise(e)
sleep(1)
driver.set_page_load_timeout(60 * 3)
def usr1(*args, **kwargs):
driver.quit()
with handle_signal(USR1=usr1):
try:
yield driver
finally:
try:
driver.quit()
except:
pass
def wait_selenium_connection():
if not settings.SELENIUM_REMOTE:
raise Exception('Нет SELENIUM_REMOTE')
p = urlparse(settings.SELENIUM_REMOTE)
host, port = p.netloc.split(':')
port = int(port)
n = 0
while True:
if test_port_open(host, port):
return
if n >= 10:
raise Exception('Таймаут ожидания соединения с selenium')
sleep(1)
n += 1
with selenium_driver() as driver:
driver.get(url)
Возможно это вам поможет https://github.com/Ars2014/FSMTelegramBotAPI
Но по идее всё просто, /start -> Buy или Sell, Buy -> How much buy?, Sell -> How much sell? - вот тут вам надо запомнить, что пользователь выбрал Buy или Sell, когда вы получите от пользователя ЧИСЛО, вы должны понимать на Buy или на Sell он это число ответил.
Внутреннее состояние бота надо сохранять для пользователя, и не забудьте, что пользователь может ответить белеберду или другую команду начать, и при этом надо состояние "обнулить".
Но вообще я не понимаю, что у вас не работает, диалог тестовый с ботом не показали ... вы handle_start второй переименовали?
Определять выбор Buy или Sell вы умеете?