Не работает signals.py на сервере
У меня есть сайт на сервере где я работаю с помощью signals.py
Проблема заключается в том что когда я добавляю db файл через админку signals.py
не работает ИМЕННО НА СЕРВЕРЕ на моем компьютере все прекрасно работает
Но есть еще одна модель с участием signals.py
и оно работает прекрасно
models.py
Та модель которая работает
class History(models.Model):
tg_id = models.BigIntegerField(verbose_name='Telegram ID')
amount = models.FloatField(verbose_name='Кол-во')
date = models.DateTimeField(verbose_name='Дата транзакции')
Проблемная модель
class database_sqlite3(models.Model):
file = models.FileField(verbose_name='Файл', upload_to='db_file/',
help_text='Вы можете добавить сюда базу пользователей')
app.py
from django.apps import AppConfig
class MainConfig(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'main'
verbose_name = "Бот"
def ready(self):
import main.signals
signals.py
Та модель которая работает
@receiver(post_save, sender=History)
def create_profile(sender, instance, created, **kwargs):
if created:
obj = User.objects.get(tg_id=int(instance.tg_id))
wallet = obj.wallet
if wallet == None:
wallet = 0
else:
pass
User.objects.filter(tg_id=instance.tg_id).update(wallet=wallet + instance.amount)0
Проблемная модель
@receiver(post_save, sender=database_sqlite3)
def create_profile(sender, instance, created, **kwargs):
if created:
env = Env()
env.read_env()
gre = psycopg2.connect(
database=env.str('POSTGRES_DB'),
user=env.str('POSTGRES_USER'),
password=env.str('POSTGRES_PASSWORD'),
host=env.str('POSTGRES_HOST'),
port=env.str('POSTGRES_PORT')
)
cur_gre = gre.cursor()
conn = sqlite3.connect(str(instance.file))
cursor = conn.cursor()
table_names = cursor.execute("SELECT name FROM sqlite_master WHERE type='table';").fetchall()
table_name = []
for i in table_names:
table_name.append(i[0])
if 'main_admin_bot' in table_name:
cursore = conn.execute(f"SELECT * FROM main_admin_bot").fetchall()
for i in cursore:
try:
sql = f'''INSERT INTO main_admin_bot ("tg_id","name") VALUES (%s,%s)'''
date = (i[1], i[2])
try:
try:
cur_gre.execute(sql, date)
except psycopg2.errors.InvalidTextRepresentation:
pass
except psycopg2.errors.InFailedSqlTransaction:
pass
gre.commit()
except psycopg2.errors.UniqueViolation:
pass
if 'main_attempts' in table_name:
cursore = conn.execute(f"SELECT * FROM main_attempts").fetchall()
for i in cursore:
try:
sql = f'''INSERT INTO main_attempts ("ids","count") VALUES (%s,%s)'''
date = (i[1], i[2])
try:
try:
cur_gre.execute(sql, date)
except psycopg2.errors.InvalidTextRepresentation:
pass
except psycopg2.errors.InFailedSqlTransaction:
pass
gre.commit()
except psycopg2.errors.UniqueViolation:
pass
if 'main_blacklist' in table_name:
cursore = conn.execute(f"SELECT * FROM main_blacklist").fetchall()
for i in cursore:
try:
sql = f'''INSERT INTO main_blacklist ("words","job") VALUES (%s,%s)'''
bools = None
if i[2] == 0:
bools = False
else:
bools = True
date = (i[1], bools)
try:
try:
cur_gre.execute(sql, date)
except psycopg2.errors.InvalidTextRepresentation:
pass
except psycopg2.errors.InFailedSqlTransaction:
pass
gre.commit()
except psycopg2.errors.UniqueViolation:
pass
if 'main_channel' in table_name:
cursore = conn.execute(f"SELECT * FROM main_channel").fetchall()
for i in cursore:
try:
sql = f'''INSERT INTO main_channel ("channel_id","ids") VALUES (%s,%s)'''
date = (i[1], i[2])
try:
try:
cur_gre.execute(sql, date)
except psycopg2.errors.InvalidTextRepresentation:
pass
except psycopg2.errors.InFailedSqlTransaction:
pass
gre.commit()
except psycopg2.errors.UniqueViolation:
pass
if 'main_parse_user' in table_name:
cursore = conn.execute(f"SELECT * FROM main_parse_user").fetchall()
for i in cursore:
sql = f'''INSERT INTO main_parse_user ("user_id","group_id", "username","bio", "first_name") VALUES (%s,%s,%s,%s,%s) ON CONFLICT (user_id) DO UPDATE SET (group_id,username,bio,first_name) = (EXCLUDED.group_id,EXCLUDED.username,coalesce(main_parse_user.bio, EXCLUDED.bio),EXCLUDED.first_name)'''
date = (i[1], i[2], i[3], i[4], i[5])
try:
try:
cur_gre.execute(sql, date)
except psycopg2.errors.InvalidTextRepresentation:
pass
except psycopg2.errors.InFailedSqlTransaction:
pass
gre.commit()
if 'main_token' in table_name:
cursore = conn.execute(f"SELECT * FROM main_token").fetchall()
for i in cursore:
try:
sql = f'''INSERT INTO main_token ("ids","bot_token") VALUES (%s,%s)'''
date = (i[1], i[2])
try:
try:
cur_gre.execute(sql, date)
except psycopg2.errors.InvalidTextRepresentation:
pass
except psycopg2.errors.InFailedSqlTransaction:
pass
gre.commit()
except psycopg2.errors.UniqueViolation:
pass
if 'main_trycountuser' in table_name:
cursore = conn.execute(f"SELECT * FROM main_trycountuser").fetchall()
for i in cursore:
print(i)
try:
sql = f'''INSERT INTO main_trycountuser ("ids","count") VALUES (%s,%s)'''
date = (int(i[1]), int(i[2]))
try:
try:
cur_gre.execute(sql, date)
except psycopg2.errors.InvalidTextRepresentation:
pass
except psycopg2.errors.InFailedSqlTransaction:
pass
gre.commit()
except psycopg2.errors.UniqueViolation:
pass
if 'main_user' in table_name:
cursore = conn.execute(f"SELECT * FROM main_user").fetchall()
for i in cursore:
try:
sql = f'''INSERT INTO main_user ("tg_id" ,"username", "name" , "try_count", "activate","linkedin","language","wallet") VALUES (%s,%s,%s,%s,%s,%s,%s,%s)'''
bools = None
if i[5] == 0:
bools = False
else:
bools = True
date = (i[1], i[2], i[3], i[4], bools, i[6], i[7], i[8])
try:
try:
cur_gre.execute(sql, date)
except psycopg2.errors.InvalidTextRepresentation:
pass
except psycopg2.errors.InFailedSqlTransaction:
pass
gre.commit()
except psycopg2.errors.UniqueViolation:
pass
if 'main_users_db' in table_name:
cursore = conn.execute("SELECT * FROM main_users_db").fetchall()
for i in cursore:
sqlz = f'''INSERT INTO main_parse_user ("user_id","group_id", "username","bio", "first_name") VALUES (%s,%s,%s,%s,%s) ON CONFLICT (user_id) DO UPDATE SET (group_id,username,bio,first_name) = (EXCLUDED.group_id,EXCLUDED.username,coalesce(main_parse_user.bio, EXCLUDED.bio),EXCLUDED.first_name)'''
date = (i[0], i[4], i[1], str(i[2]), i[5])
try:
try:
cur_gre.execute(sqlz, date)
except psycopg2.errors.InvalidTextRepresentation:
pass
except psycopg2.errors.InFailedSqlTransaction:
pass
gre.commit()
if 'user_parse' in table_name:
cursore = conn.execute("SELECT * FROM user_parse").fetchall()
for i in cursore:
sqlz = f'''INSERT INTO main_parse_user ("user_id","group_id", "username","bio", "first_name") VALUES (%s,%s,%s,%s,%s) ON CONFLICT (user_id) DO UPDATE SET (group_id,username,bio,first_name) = (EXCLUDED.group_id,EXCLUDED.username,coalesce(main_parse_user.bio, EXCLUDED.bio),EXCLUDED.first_name)'''
date = (i[1], i[0], i[2], str(i[3]), i[4])
try:
try:
cur_gre.execute(sqlz, date)
except psycopg2.errors.InvalidTextRepresentation:
pass
except psycopg2.errors.InFailedSqlTransaction:
pass
gre.commit()
if 'main_parser' in table_name:
cursor = conn.execute("SELECT * FROM main_parser").fetchall()
for i in cursor:
sql = f'''INSERT INTO main_parse_user ("user_id","group_id", "username","bio", "first_name") VALUES (%s,%s,%s,%s,%s) ON CONFLICT (user_id) DO UPDATE SET (group_id,username,bio,first_name) = (EXCLUDED.group_id,EXCLUDED.username,coalesce(main_parse_user.bio, EXCLUDED.bio),EXCLUDED.first_name)'''
date = (i[1], i[2], i[3], i[4], i[5])
try:
try:
cur_gre.execute(sql, date)
except psycopg2.errors.InvalidTextRepresentation:
pass
except psycopg2.errors.InFailedSqlTransaction:
pass
gre.commit()
if 'bot_user' in table_name:
cursor = conn.execute("SELECT * FROM bot_user").fetchall()
for i in cursor:
try:
sql = f'''INSERT INTO main_user ("tg_id", "username", "name", "try_count", "activate") VALUES (%s,%s,%s,%s,%s)'''
bools = None
if i[4] == 0:
bools = False
else:
bools = True
date = (i[0], i[1], i[2], i[3], bools)
try:
try:
cur_gre.execute(sql, date)
except psycopg2.errors.InvalidTextRepresentation:
pass
except psycopg2.errors.InFailedSqlTransaction:
pass
gre.commit()
except psycopg2.errors.UniqueViolation:
pass
if 'main_trypricetype' in table_name:
cursor = conn.execute("SELECT * FROM main_trypricetype").fetchall()
for i in cursor:
try:
sql = f'''INSERT INTO "main_trypricetype" ("searchtype", "price") VALUES (%s,%s)'''
date = (i[1], i[2])
try:
try:
cur_gre.execute(sql, date)
except psycopg2.errors.InvalidTextRepresentation:
pass
except psycopg2.errors.InFailedSqlTransaction:
pass
gre.commit()
except psycopg2.errors.UniqueViolation:
pass
if 'main_database_sqlite3' in table_name:
cursor = conn.execute("SELECT * FROM main_database_sqlite3").fetchall()
for i in cursor:
try:
sql = f'''INSERT INTO "main_database_sqlite3" ("file") VALUES (%s)'''
date = (i[1],)
try:
try:
cur_gre.execute(sql, date)
except psycopg2.errors.InvalidTextRepresentation:
pass
except psycopg2.errors.InFailedSqlTransaction:
pass
gre.commit()
except psycopg2.errors.UniqueViolation:
pass
if 'main_history' in table_name:
cursor = conn.execute("SELECT * FROM main_history").fetchall()
for i in cursor:
try:
sql = f'''INSERT INTO "main_history" ("tg_id","amount","date") VALUES (%s,%s,%s)'''
date = (i[1], i[2], i[3])
try:
try:
cur_gre.execute(sql, date)
except psycopg2.errors.InvalidTextRepresentation:
pass
except psycopg2.errors.InFailedSqlTransaction:
pass
gre.commit()
except psycopg2.errors.UniqueViolation:
pass
if 'main_webapp' in table_name:
cursor = conn.execute("SELECT * FROM main_webapp").fetchall()
for i in cursor:
try:
sql = f'''INSERT INTO "main_webapp" ("id","image","url","name","text") VALUES (%s,%s,%s,%s,%s)'''
date = (i[0], i[1], i[2], i[3], i[4])
try:
try:
cur_gre.execute(sql, date)
except psycopg2.errors.InvalidTextRepresentation:
pass
except psycopg2.errors.InFailedSqlTransaction:
pass
gre.commit()
except psycopg2.errors.UniqueViolation:
pass
conn.close()
os.remove(str(instance.file))
Попробуй добавить:
@receiver(post_save, sender=database_sqlite3, weak=False)
должно помочь.