У меня проблема с тестированием моих приложений из-за большого количества сообщений типа «Предупреждение, слишком много итераций сделано до следующего кадра ...». Я не могу понять, в чем причина этой ошибки!
Вот мой main.py:
# encoding=utf8
from kivy.config import Config
Config.set('kivy', 'keyboard_mode', 'systemanddock')
# from kivy.config import ConfigParser
import sys, os, datetime, ast, os.path
import webbrowser
import time
import numpy as np
from array import array
from decimal import *
from calendar import monthrange
from kivy.app import App
from kivy.uix.button import Button
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.anchorlayout import AnchorLayout
from kivy.uix.gridlayout import GridLayout
from kivy.uix.scrollview import ScrollView
from kivy.uix.popup import Popup
from kivy.lang import Builder
from kivy.uix.behaviors import ButtonBehavior
from kivy.uix.image import Image
from kivy.core.text import Label
from kivy.uix.screenmanager import ScreenManager, Screen
from kivy.uix.screenmanager import SlideTransition
from kivy.uix.screenmanager import NoTransition
from kivy.properties import ObjectProperty, NumericProperty, StringProperty, BooleanProperty, ListProperty
from kivy.utils import get_hex_from_color
from kivy.metrics import dp, sp, pt
from kivy.clock import Clock
from kivy.uix.textinput import TextInput
from kivymd.theming import ThemeManager
from kivymd.toast.kivytoast import toast
from kivymd.dialog import MDDialog
from kivymd.label import MDLabel
from kivymd.button import MDRoundFlatButton
from kivymd.button import MDRaisedButton
from kivymd.list import ILeftBodyTouch
from kivymd.popupscreen import MDPopupScreen
from newpickers import MDDatePicker
from kivymd.menus import MDDropdownMenu
from kivymd.textfields import MDTextField
import calculate_tattva as cttv
import globalvars as glvs
isdesktop = 0
monthlist = ['Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь']
year = 0
monthnum = 0
daynum = 0
selected_date = ''
selected_date_backup = ''
selyr = 1900
selmn = 1
selsex = 1
selhr = ''
selmin = ''
selsunhr = ''
selsunmin = ''
selnaksh = 0
nakshlist = ["Ашвини(1)","Бхарани(2)","Криттика(3)","Рохини(4)","Мригашира(5)","Ардра(6)","Пунарвасу(7)","Пушья(8)","Ашлеша(9)",
"Магха(10)","Пурвапхалгуни(11)","Уттарапхалгуни(12)","Хаста(13)","Читра(14)","Свати(15)","Вишакха(16)","Анурадха(17)","Джйештха(18)",
"Мула(19)","Пурвашадха(20)","Уттарашадха(21)","Шравана(22)","Дхаништха(23)","Сатабхиша(24)","Пурвабхадрапада(25)",
"Уттарабхадрапада(26)","Ревати(27)"]
class Manager(ScreenManager):
def __init__(self, **kwargs):
super(Manager, self).__init__(**kwargs)
# self.initManager()
# def initManager(self):
# global isdesktop
# if isdesktop == 1:
# pass
# else:
# pass
# self.checkregkey()
# def checkregkey(self):
# global configvalue
# key = str(configvalue.get('mainsection', 'keyreg'))
# print("Найденный ключ: " + key)
# if key == '12345678':
# self.transition = NoTransition()
# self.current = 'main_menu'
# else:
# self.transition = NoTransition()
# self.current = 'registration_menu'
# try:
# PythonActivity = jnius.autoclass('org.renpy.android.PythonActivity')
# activity = PythonActivity.mActivity
# cntxt = activity.getApplicationContext()
# prefs = cntxt.getSharedPreferences("MY_PREFS", cntxt.MODE_PRIVATE)
# myVar = prefs.getString("keyvalue", "Default String")
# except jnius.jnius.JavaException as err:
# myVar="Error Loading Prefs."
# print("KIVY, 3, error: {}".format(repr(err)))
# registeredkey = myVar
# if registeredkey != '12345678':
# self.transition = NoTransition()
# self.current = 'registration_menu'
# else:
# self.transition = NoTransition()
# self.current = 'main_menu'
class MainMenu(Screen):
pass
class InfoMenu(Screen):
pass
class ResultMenu(Screen):
def results(self):
self.ids.labelfirst.text = ("Группа накшатр - " + str(glvs.output_text_1))
self.ids.labelsecond.text = ("Разница времени рождения и восхода - " + str(glvs.output_text_2_hour) + "ч " + str(glvs.output_text_2_minute) + "м")
self.ids.labelthird.text = ("Близжайшее число пал - " + str(glvs.output_text_3))
self.ids.labelfourth.text = ("Присвоенное число - " + str(glvs.output_text_4))
self.ids.labelfifth.text = ("Общее число пал - " + str(glvs.output_text_5))
self.ids.labelsixth.text = ("Найденная таттва - " + str(glvs.output_text_6))
self.ids.labelseventh.text = str(glvs.output_text_7)
self.ids.labeleighth.text = ("Расчетное время рождения - " + str(glvs.output_text_8_hour) + ":" + str(glvs.output_text_8_minute) + "\n(совпадающее с выбранным полом)")
class ResultScrollView(ScrollView):
pass
class YearSelectButton(MDRaisedButton):
pass
class MonthSelectButton(MDRaisedButton):
pass
class TimeHourButton(MDRaisedButton):
pass
class TimeMinuteButton(MDRaisedButton):
pass
class SunTimeHourButton(MDRaisedButton):
pass
class SunTimeMinuteButton(MDRaisedButton):
pass
class NakshatraChooserButton(MDRaisedButton):
pass
class DateSetupMenu(Screen):
def __init__(self, **kwargs):
super().__init__(**kwargs)
global monthlist
self.datetxt = ''
self.year_items = [
{
"viewclass": "MDMenuItem",
"text": "%d" % i,
"callback": self.callbackforyear,
}
for i in range(1900, 2100)
]
self.month_items = [
{
"viewclass": "MDMenuItem",
"text": str(monthlist[i]),
"callback": self.callbackformonth,
}
for i in range(0, 12)
]
self.hour_items = [
{
"viewclass": "MDMenuItem",
"text": "%02d" % i,
"callback": self.callbackforhour,
}
for i in range(00, 24)
]
self.minute_items = [
{
"viewclass": "MDMenuItem",
"text": "%02d" % i,
"callback": self.callbackforminute,
}
for i in range(00, 60)
]
self.sunhour_items = [
{
"viewclass": "MDMenuItem",
"text": "%02d" % i,
"callback": self.callbackforsunhour,
}
for i in range(00, 24)
]
self.sunminute_items = [
{
"viewclass": "MDMenuItem",
"text": "%02d" % i,
"callback": self.callbackforsunminute,
}
for i in range(00, 60)
]
self.nakshatra_items = [
{
"viewclass": "MDMenuItem",
"text": str(nakshlist[i]),
"callback": self.callbackfornakshatra,
}
for i in range(0, 27)
]
self.menu_button = None
def callbackforlist(self, *args):
pass
def callbackforyear(self, *args):
global selyr
selyr = int(args[0])
def callbackformonth(self, *args):
global selmn
global monthlist
selmn = int(monthlist.index(str(args[0])))+1
def callbackforhour(self, *args):
global selhr
selhr = int(args[0])
def callbackforminute(self, *args):
global selmin
selmin = int(args[0])
def callbackforsunhour(self, *args):
global selsunhr
selsunhr = int(args[0])
def callbackforsunminute(self, *args):
global selsunmin
selsunmin = int(args[0])
def callbackfornakshatra(self, *args):
global selnaksh
global nakshlist
selnaksh = int(nakshlist.index(str(args[0])))+1
# def changetip(self):
# print('datetxt: ' + str(self.datetxt))
# self.datetxt = str(glvs.daynum)
# print('datetxt2: ' + str(self.datetxt))
# # self.date_button.text = str(glvs.daynum)
class Year_layout_popup1(GridLayout):
pass
class Year_layout_scrollview1(ScrollView):
pass
class YearButton1(MDRaisedButton):
pass
class YearSelectionButton(MDRoundFlatButton):
def on_release(self):
global year
year = int(self.text)
class DatePickPopup(Popup):
pass
class Month_layout_popup(GridLayout):
pass
class Month_layout_scrollview(ScrollView):
pass
class MonthButton(MDRaisedButton):
pass
class DatePickerWidget(MDDatePicker):
pass
class MonthSelectionButton(MDRoundFlatButton):
def on_release(self):
global monthlist
global monthnum
monthnum = int(monthlist.index(str(self.text)))
monthnum += 1
class MonthPickPopup(Popup):
pass
class yearselectbtn(Button):
pass
class monthselectbtn(Button):
pass
class keyinput(MDTextField):
pass
class RegistrationMenu(Screen):
def keycheck(self):
global configvalue
if self.keyhere.text == '12345678':
# configvalue.set('mainsection', 'keyreg', '12345678')
# configvalue.write()
toast('KEY IS CORRECT')
self.manager.transition = SlideTransition(direction='left', duration = .17)
self.manager.current = 'main_menu'
elif len(self.keyhere.text) > 8:
toast('Too much text!')
else:
toast('KEY IS INCORRECT!')
# if self.keyhere.text == '12345678':
# try:
# PythonActivity = jnius.autoclass('org.renpy.android.PythonActivity')
# activity = PythonActivity.mActivity
# cntxt = activity.getApplicationContext()
# prefs = cntxt.getSharedPreferences("MY_PREFS", cntxt.MODE_PRIVATE)
# editor = prefs.edit()
# editor.putString("keyvalue", str(self.keyhere.text))
# editor.commit()
# except Exception as err:
# print("\tKIVY, 6, error: {}".format(repr(err)))
# toast('KEY IS CORRECT')
# self.manager.transition = SlideTransition(direction='left', duration = .17)
# self.manager.current = 'main_menu'
# elif len(self.keyhere.text) > 8:
# toast('Too much text!')
# else:
# toast('KEY IS INCORRECT!')
class rt_android(App):
theme_cls = ThemeManager()
theme_cls.device_orientation == 'portrait'
title = 'Rectif Tattva Android Edition'
yearselectlabeltext = StringProperty('Выберите год рождения')
monthselectlabeltext = StringProperty('Выберите месяц рождения')
dateselectlabeltext = StringProperty('Выберите день рождения')
mlist = ['Месяц','Январь','Февраль','Март','Апрель','Май','Июнь','Июль','Август','Сентябрь','Октябрь','Ноябрь','Декабрь']
datetxt = ''
# def build_config(self, config):
# config.setdefaults('mainsection', {
# 'keyreg': 'value123'
# })
def build(self):
global isdesktop
global configvalue
self.theme_cls.theme_style = 'Light'
# self.config.read(os.path.join(self.directory, '%(appname)s.ini'))
# configvalue = self.config
if isdesktop == 1:
from kivy.core.window import Window
Window.size = (480, 854)
else:
pass
return Manager()
def ExitDialog(self):
self.dialog = MDDialog(
title='Выход из приложения', size_hint=(.8, .25), text_button_ok='Нет',
text="Вы точно хотите выйти?",
text_button_cancel='Да',
events_callback=self.CloseExitPopup)
self.dialog.open()
def CloseExitPopup(self, *args):
from kivymd.toast.kivytoast import toast
if args[0] == 'Да':
App.get_running_app().stop()
else:
pass
def OpenDatePicker(self, *args):
global selyr
global selmn
DatePickerWidget(self.set_date, selyr, selmn, 1).open()
def set_date(self, date_obj):
global selected_date
global year
global monthnum
global daynum
global selected_date_backup
self.setupdate = date_obj
selected_date = str(self.setupdate)
selected_date_backup = str(self.setupdate)
glvs.selected_date_backup = selected_date_backup
year = int(selected_date[0:4])
monthnum = int(selected_date[5:7])
daynum = int(selected_date[8:10])
month_id = monthnum-1
def callback(self, *args):
global selsex
if args[0] == 'Женский':
selsex = 2
else:
selsex = 1
def callmodulevars(self):
global selhr
global selmin
global selsunhr
global selsunmin
global year
global monthnum
global daynum
global selnaksh
glvs.selhr = selhr
glvs.selmin = selmin
glvs.selsunhr = selsunhr
glvs.selsunmin = selsunmin
glvs.year = year
glvs.monthnum = monthnum
glvs.daynum = daynum
glvs.selnaksh = selnaksh
glvs.selsex = selsex
cttv.cttvmainclass.calculateDate(self)
self.txthr = cttv.output_text_8_hour
self.txtmn = cttv.output_text_8_minute
print('Часы: ' + str(self.txthr) + ' Минуты: ' + str(self.txtmn))
class CreditsImage(Image):
pass
with open("main_interface.kv", encoding='utf8') as f:
main_interface = Builder.load_string(f.read())
if __name__ == '__main__':
rt_android().run()
Вот мой main.kv:
# encoding=utf8
#:import SlideTransition kivy.uix.screenmanager.SlideTransition
#:import Factory kivy.factory.Factory
#:import MDLabel kivymd.label.MDLabel
#:import MDRaisedButton kivymd.button.MDRaisedButton
#:import MDRectangleFlatButton kivymd.button.MDRectangleFlatButton
#:import MDToolbar kivymd.toolbar.MDToolbar
#:import MDRoundFlatButton kivymd.button.MDRoundFlatButton
#:import MDDropdownMenu kivymd.menus.MDDropdownMenu
#:import MDMenuItem kivymd.menus.MDMenuItem
#:import MDChip kivymd.chips.MDChip
#:import MDChooseChip kivymd.chips.MDChooseChip
#:import hex kivy.utils.get_color_from_hex
#:set white hex('#00a86b')
<MenuButton@MDRaisedButton>:
font_size: dp(8)
elevation_normal: 3
pos_hint: {'center_x': .5, 'center_y': .5}
size_hint_x: 0.5
height: dp(50)
<InfoMenuButton@MDRaisedButton>:
font_size: dp(8)
elevation_normal: 3
pos_hint: {'center_x': .5, 'center_y': .5}
size_hint: None, None
height: dp(50)
<DateSetupMenuButton@MDRaisedButton>:
font_size: dp(8)
elevation_normal: 3
pos_hint: {'center_x': .5, 'center_y': .5}
size_hint: None, None
height: dp(50)
halign: 'center'
valign: 'center'
<ResultMenuButton@MDRaisedButton>:
font_size: dp(8)
elevation_normal: 3
pos_hint: {'center_x': .5, 'center_y': .5}
size_hint: None, None
height: dp(50)
halign: 'center'
valign: 'center'
<RegistrationMenuButton@MDRaisedButton>:
font_size: dp(8)
elevation_normal: 3
pos_hint: {'center_x': .5, 'center_y': .5}
size_hint: None, None
height: dp(50)
halign: 'center'
valign: 'center'
<InfoMenuLabel@MDLabel>:
font_name: 'assets/Ponter.ttf'
color: (255,255,255,1)
size_hint_y: 0.2
font_size: dp(20)
halign: 'center'
valign: 'center'
text_size: self.size
<ResultMenuLabel@MDLabel>:
font_size: dp(12)
halign: 'center'
valign: 'center'
font_name: 'assets/Ponter.ttf'
<RegMenuLabel@MDLabel>:
color: (255,255,255,1)
size_hint_y: 0.2
font_size: dp(20)
halign: 'center'
valign: 'center'
text_size: self.size
<MDMenuItem>:
on_release:
app.root.ids.date_setup_menu.menu_button.text = self.text
<YearSelectButton>:
id: buttonofyear
font_size: dp(8)
pos_hint: {'center_x': .5, 'center_y': .5}
size_hint: None, None
height: dp(50)
<MonthSelectButton>:
id: buttonofmonth
font_size: dp(8)
pos_hint: {'center_x': .5, 'center_y': .5}
size_hint: None, None
height: dp(50)
<TimeHourButton>:
id: buttonofhour
font_size: dp(8)
pos_hint: {'center_x': .5, 'center_y': .5}
size_hint: None, None
height: dp(50)
<TimeMinuteButton>:
id: buttonofminute
font_size: dp(8)
pos_hint: {'center_x': .5, 'center_y': .5}
size_hint: None, None
height: dp(50)
<SunTimeHourButton>:
id: buttonofhoursun
font_size: dp(8)
pos_hint: {'center_x': .5, 'center_y': .5}
size_hint: None, None
height: dp(50)
<SunTimeMinuteButton>:
id: buttonofminutesun
font_size: dp(8)
pos_hint: {'center_x': .5, 'center_y': .5}
size_hint: None, None
height: dp(50)
<NakshatraChooserButton>:
id: buttonofnakshatra
font_size: dp(8)
pos_hint: {'center_x': .5, 'center_y': .5}
size_hint: None, None
height: dp(50)
<ResultScrollView>:
size_hint: None, None
size: Window.width, Window.height
<keyinput>:
size_hint: 0.5, None
font_size: dp(20)
halign: 'center'
pos_hint: {'center_x': .5, 'center_y': .5}
max_text_length: 8
<Manager>:
RegistrationMenu:
id: registration_menu
name: 'registration_menu'
MainMenu:
id: main_menu
name: 'main_menu'
InfoMenu:
id: info_menu
name: 'info_menu'
DateSetupMenu:
id: date_setup_menu
name: 'date_setup_menu'
ResultMenu:
id: result_menu
name: 'result_menu'
<MainMenu>:
AnchorLayout:
anchor_y: 'top'
MDToolbar:
title: app.title
elevation: 10
md_bg_color: white
AnchorLayout:
anchor_y: 'bottom'
BoxLayout:
orientation: 'vertical'
size_hint: 0.95, 0.25
spacing: dp(10)
padding: [0, 0, 0, dp(10)]
MenuButton:
text: 'Приступить'
on_press:
app.root.transition = SlideTransition(direction='left', duration = .17)
on_release:
root.manager.current = 'date_setup_menu'
MenuButton:
text: 'Инфо'
on_press:
app.root.transition = SlideTransition(direction='left', duration = .17)
on_release:
root.manager.current = 'info_menu'
MenuButton:
text: 'Выход'
on_release:
app.ExitDialog()
<InfoMenu>:
AnchorLayout:
anchor_y: 'top'
MDToolbar:
title: 'Инфо'
elevation: 10
md_bg_color: white
BoxLayout:
size_hint_y: 0.4
orientation: 'vertical'
spacing: 5
padding: [0, dp(90), 0, 0]
pos_hint: {'center_x': .5, 'center_y': 1}
CreditsImage:
source: 'assets/info_credits_table.png'
size_hint_y: 0.8
InfoMenuLabel:
text: 'версия программы: 1.0.0'
AnchorLayout:
anchor_y: 'bottom'
BoxLayout:
orientation: 'vertical'
size_hint: 0.95, 0.25
padding: [0, 0, 0, dp(15)]
InfoMenuButton:
text: 'Назад'
on_press:
app.root.transition = SlideTransition(direction='right', duration = .17)
on_release:
root.manager.current = 'main_menu'
<DateSetupMenu>:
AnchorLayout:
anchor_y: 'top'
MDToolbar:
title: 'Выбор параметров'
elevation: 10
md_bg_color: white
AnchorLayout:
anchor_y: 'center'
BoxLayout:
orientation: 'vertical'
padding: [0, 0, 0, dp(125)]
spacing: dp(5)
TimeHourButton:
id: buttonofhour
text: 'Часы'
on_release:
root.menu_button = buttonofhour
MDDropdownMenu(items=root.hour_items, width_mult=1).open(self)
TimeMinuteButton:
id: buttonofminute
text: 'Минуты'
on_release:
root.menu_button = buttonofminute
MDDropdownMenu(items=root.minute_items, width_mult=1).open(self)
YearSelectButton:
id: buttonofyear
text: 'Год'
on_release:
root.menu_button = buttonofyear
MDDropdownMenu(items=root.year_items, width_mult=1).open(self)
MonthSelectButton:
id: buttonofmonth
text: 'Месяц'
on_release:
root.menu_button = buttonofmonth
MDDropdownMenu(items=root.month_items, width_mult=2).open(self)
# YearButton1:
# text: app.yearselectlabeltext
# on_release:
# app.year_select_clicked1()
# MonthButton:
# text: app.monthselectlabeltext
# on_release:
# app.month_select_clicked()
DateSetupMenuButton:
id: dsmb
text: app.dateselectlabeltext
on_release:
root.date_button = dsmb
app.OpenDatePicker()
MDChooseChip:
pos_hint: {'center_x': .5, 'center_y': .5}
size_hint: None, None
font_size: dp(8)
halign: 'center'
valign: 'center'
MDChip:
halign: 'center'
valign: 'center'
height: dp(50)
label: 'Мужской'
icon: ''
callback: app.callback
MDChip:
halign: 'center'
valign: 'center'
height: dp(50)
label: 'Женский'
icon: ''
callback: app.callback
SunTimeHourButton:
id: buttonofhoursun
text: 'Часы восхода'
on_release:
root.menu_button = buttonofhoursun
MDDropdownMenu(items=root.sunhour_items, width_mult=1).open(self)
SunTimeMinuteButton:
id: buttonofminutesun
text: 'Минуты восхода'
on_release:
root.menu_button = buttonofminutesun
MDDropdownMenu(items=root.sunminute_items, width_mult=1).open(self)
NakshatraChooserButton:
id: buttonofnakshatra
text: 'Выбор накшатры'
on_release:
root.menu_button = buttonofnakshatra
MDDropdownMenu(items=root.nakshatra_items, width_mult=4).open(self)
MDRaisedButton:
id: newbtn
font_size: dp(8)
pos_hint: {'center_x': .5, 'center_y': .5}
size_hint: None, None
height: dp(50)
text: 'Просчет'
on_press:
app.root.transition = SlideTransition(direction='left', duration = .17)
on_release:
app.callmodulevars()
app.root.ids.result_menu.results()
# root.changetip()
root.manager.current = 'result_menu'
AnchorLayout:
anchor_y: 'bottom'
BoxLayout:
orientation: 'vertical'
size_hint: 0.95, 0.25
padding: [0, 0, 0, dp(15)]
DateSetupMenuButton:
text: 'Назад'
on_press:
app.root.transition = SlideTransition(direction='right', duration = .17)
on_release:
root.manager.current = 'main_menu'
<ResultMenu>:
AnchorLayout:
anchor_y: 'top'
MDToolbar:
title: 'Результаты'
elevation: 10
md_bg_color: white
# AnchorLayout:
# anchor_y: 'center'
BoxLayout:
# orientation: 'vertical'
# size_hint: 0.5, 0.5
# padding: [0, 0, 0, 0]
# spacing: dp(5)
# pos_hint: {'center_x': 0.5, 'center_y': 0.5}
orientation: 'vertical'
size_hint: 1, 0.5
pos_hint: {'center_x': 0.5, 'center_y': 0.5}
ResultMenuLabel:
id: labelfirst
text: 'label1'
ResultMenuLabel:
id: labelsecond
text: 'label2'
ResultMenuLabel:
id: labelthird
text: 'label3'
ResultMenuLabel:
id: labelfourth
text: 'label4'
ResultMenuLabel:
id: labelfifth
text: 'label5'
ResultMenuLabel:
id: labelsixth
text: 'label6'
ResultMenuLabel:
id: labelseventh
text: 'label7'
ResultMenuLabel:
id: labeleighth
text: 'label8'
AnchorLayout:
anchor_y: 'bottom'
BoxLayout:
orientation: 'vertical'
size_hint: 0.95, 0.25
padding: [0, 0, 0, dp(15)]
ResultMenuButton:
text: 'Назад'
on_press:
app.root.transition = SlideTransition(direction='right', duration = .17)
on_release:
# app.root.ids.date_setup_menu.changetip()
# app.root.ids.date_setup_menu.date_button.text = app.root.ids.date_setup_menu.datetxt
root.manager.current = 'date_setup_menu'
<RegistrationMenu>:
keyhere: keyhere
AnchorLayout:
anchor_y: 'top'
MDToolbar:
title: 'Регистрация ключа'
elevation: 10
md_bg_color: white
BoxLayout:
size_hint_y: 0.4
orientation: 'vertical'
spacing: 5
padding: [0, dp(90), 0, 0]
pos_hint: {'center_x': .5, 'center_y': 1}
RegMenuLabel:
text: 'Введите Ваш персональный регистрационный ключ'
keyinput:
id: keyhere
hint_text: "Ввести ключ сюда"
AnchorLayout:
anchor_y: 'bottom'
BoxLayout:
orientation: 'vertical'
size_hint: 0.95, 0.25
padding: [0, 0, 0, dp(15)]
RegistrationMenuButton:
text: 'Подтвердить'
on_press:
app.root.transition = SlideTransition(direction='right', duration = .17)
on_release:
root.keycheck()
IПротестировал это приложение перед добавлением киви конфиг и меню регистрации (и всего, что с этим связано). У меня нет никаких мыслей о возможной причине этой проблемы.