wg_index/bd_module)_OLD.py
2025-12-27 05:02:10 +03:00

1593 lines
47 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

import os
from time import strftime #Для (Time)
import random
# + Просмотор предметов. ls_item(user_id)
# + Просмотор пользователей. ls_user(user_id)
# + Информация о пользователе. user_info(user_id,user_id_rec)
# ? - Информация о предмете. item_info(user_id,item_id)
# + Редактирование пользователя. user_edit(user_id,user_id_rec, user_name, email, password, avatar, active, group_id)
# - Редактирование пользователя (Подгруппы).
# + Редактирование предмета. item_edit(user_id, item_id, user_id_1, user_id_2, name, status, icon, comments, inventory_id)
# + Создание пользователя. user_add(user_id, user_name, email, password, avatar, active, group_id)
# + Создание предмета. add_item(user_id, user_id_2, name, status, icon, comments, inventory_id)
# ! - Удоление пользователя.
# + Удоление предмета. rm_item(user_id,item_id)
# - Создание груп.
# + Просмотор груп. ls_group(user_id)
import secrets
import json
put = os.path.dirname(os.path.realpath(__file__)) + "/"#Путь- (part-1)
#import logging
#logging.basicConfig(filename="bd.log", level=logging.INFO)
with open(f"{put}settings.json", "r") as read_file:
settings = json.load(read_file)
# BEGIN mariadb
import mariadb
import sys
"""
try:
bd = mariadb.connect(
user="recording_spark",
password="",
host=IP,
port=3306
)
except mariadb.Error as e:
print(f"Error connecting to MariaDB Platform: {e}")
sys.exit(1)
sql = bd.cursor()
"""
pool = mariadb.ConnectionPool(
pool_name = "web-app",
pool_size = 3,
pool_reset_connection = False,
)
pool.set_config(
host=settings["Mariadb"]["host"],
port=settings["Mariadb"]["port"],
user=settings["Mariadb"]["user"],
password=settings["Mariadb"]["password"])
pool.add_connection()
#pool = mariadb.ConnectionPool(user="recording_spark",password="",host=IP,port=3306,pool_name="web-app",pool_size=20)
#try:
# bd = pool.get_connection()
#except mariadb.PoolError as e:
# print(f"Error opening connection from pool: {e}")
bd = pool.get_connection()
sql = bd.cursor() ## TODO SAS
def ping_db():
global bd, sql, pool
try:
bd.ping()
print("SAS_1")
except:
print("sus_1")
sql.close()
bd.close()
pool.add_connection()
bd = pool.get_connection()
sql = bd.cursor()
#bd.close()
#pool.add_connection()
#bd = pool.get_connection()
#sql = bd.cursor()
#bd, sql, pool = Start()
# BEGIN bd CREATE
sql.execute("""
CREATE TABLE IF NOT EXISTS recording_spark.group (
group_id INT NOT NULL AUTO_INCREMENT,
name TEXT,
rights INT(12) NOT NULL,
PRIMARY KEY (group_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
""")
sql.execute("""
CREATE TABLE IF NOT EXISTS recording_spark.user (
user_id INT(24) NOT NULL AUTO_INCREMENT,
user_name TEXT NOT NULL,
email TEXT,
password TEXT,
avatar tinyint(1) NOT NULL DEFAULT 0,
active tinyint(1) NOT NULL DEFAULT 0,
group_id INT NOT NULL,
PRIMARY KEY (user_id),
KEY user_FK (group_id),
CONSTRAINT user_FK FOREIGN KEY (group_id) REFERENCES recording_spark.group (group_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
""")
sql.execute("""
CREATE TABLE IF NOT EXISTS recording_spark.item (
item_id INT(24) NOT NULL AUTO_INCREMENT,
item_name TEXT NOT NULL,
status TEXT,
user_id_1 INT(24) NOT NULL,
user_id_2 INT(24) NOT NULL,
icon TEXT DEFAULT NULL,
comments TEXT,
inventory_id bigint,
PRIMARY KEY (item_id),
KEY item_FK (user_id_1),
KEY item_FK_1 (user_id_2),
CONSTRAINT item_FK FOREIGN KEY (user_id_1) REFERENCES recording_spark.user (user_id),
CONSTRAINT item_FK_1 FOREIGN KEY (user_id_2) REFERENCES recording_spark.user (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
""")
sql.execute("""
CREATE TABLE IF NOT EXISTS recording_spark.ownership_over_group (
group_id INT NOT NULL,
user_id INT(24) NOT NULL,
KEY group_id (group_id),
KEY user_id (user_id),
CONSTRAINT ownership_over_group_ibfk_1 FOREIGN KEY (group_id) REFERENCES recording_spark.group (group_id),
CONSTRAINT ownership_over_group_ibfk_2 FOREIGN KEY (user_id) REFERENCES recording_spark.user (user_id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;
""")
# END
#sql.execute("CREATE TABLE IF NOT EXISTS recording_spark.user (user_id INT, user_name TEXT, email TEXT, password TEXT, avatar TEXT, active BOOL, group_id INT)")
#sql.execute("CREATE TABLE IF NOT EXISTS recording_spark.group (group_id INT, name TEXT, user_id INT, permission BIGINT)") # group 1 - отправитель, 2 - user, 3 - admin
#sql.execute("CREATE TABLE IF NOT EXISTS recording_spark.item (item_id INT NOT NULL AUTO_INCREMENT, item_name TEXT, status TEXT, user_id_1 INT, user_id_2 INT, png_id_name TEXT, comments TEXT, inventory_id BIGINT, PRIMARY KEY (item_id))")
#sql.execute("""
#CREATE TABLE IF NOT EXISTS recording_spark.ownership_over_group (
#group_id INT NOT NULL, user_id INT NOT NULL,
#FOREIGN KEY (group_id) REFERENCES recording_spark.group(group_id),
#FOREIGN KEY (user_id) REFERENCES recording_spark.user(user_id))
#""")
#sql.execute("ALTER TABLE recording_spark.user CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci") # Смена кодировки!
#sql.execute("ALTER TABLE recording_spark.group CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci") # Смена кодировки!
#sql.execute("ALTER TABLE recording_spark.item CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci") # Смена кодировки!
#sql.execute("CREATE TABLE IF NOT EXISTS recording_spark.user_group (id INT NOT NULL AUTO_INCREMENT, group_id INT, PRIMARY KEY (id))")
#sql.execute("CREATE TABLE IF NOT EXISTS recording_spark.user_group_2 (id INT NOT NULL AUTO_INCREMENT, user_id INT, FOREIGN KEY (id) REFERENCES recording_spark.user_group(id))")
#sql.execute("CREATE TABLE IF NOT EXISTS recording_spark.user_group (group_id INT NOT NULL AUTO_INCREMENT, user_id INT NOT NULL AUTO_INCREMENT, FOREIGN KEY (group_id, user_id) REFERENCES recording_spark.group(group_id, user_id))")
#sql.execute("CREATE TABLE IF NOT EXISTS recording_spark.user_group_2 (id INT NOT NULL AUTO_INCREMENT, user_id INT, FOREIGN KEY (id) REFERENCES recording_spark.user(user_id))")
# (SELECT group_id FROM recording_spark.user_group WHERE recording_spark.user_group.user_id = ?)
user_id = 2
# SELECT group_id FROM recording_spark.group WHERE recording_spark.user_group.user_id = ?) <= group_id
# SELECT MAX(group_id) FROM recording_spark.group WHERE recording_spark.group.item = 5 AND group_id IN (SELECT group_id FROM recording_spark.user_group WHERE recording_spark.user_group.user_id = ?)
#DECLARE SSS INT(11);
# Есть пользователи.
# Есть админестраторы.
# У польователей есть группы, а у админестраторов их нет.
# У каждого есть группа и она может быть только 1.
# У также у каждого есть спиок груп которые может польователь метья и упровлять.
# У Обычных польователей неттаких груп, а у администраторов они есть.
"""
SELECT user_id FROM recording_spark.ownership_over_group WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE recording_spark.ownership_over_group.user_id = ? AND recording_spark.ownership_over_group.group_id >=
(SELECT MAX(group_id) FROM recording_spark.group WHERE recording_spark.group.item = 5 AND group_id IN (SELECT group_id FROM recording_spark.ownership_over_group WHERE recording_spark.ownership_over_group.user_id = ?)))
"""
# SELECT item_id FROM recording_spark.item WHERE user_id_1 OR user_id_2
#sql.execute(
"""SELECT recording_spark.item.item_id, recording_spark.item.item_name, recording_spark.item.status, recording_spark.item.user_id_1, SAS.user_name, recording_spark.item.user_id_2, SUS.user_name, recording_spark.item.png_id_name, recording_spark.item.comments, recording_spark.item.inventory_id
FROM recording_spark.item
JOIN recording_spark.user SAS
ON recording_spark.item.user_id_1 = SAS.user_id
JOIN recording_spark.user SUS
ON recording_spark.item.user_id_2 = SUS.user_id
WHERE recording_spark.item.user_id_1 = ?
OR recording_spark.item.user_id_2 = ?
OR recording_spark.item.user_id_2 IN
(SELECT user_id FROM recording_spark.user WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?)
)
"""
#,(user_id,user_id,user_id,))
#A = sql.fetchone()
#while A != None:
# print(A)
# A = sql.fetchone()
# CONSTRAINT recording_spark.user PRIMARY KEY (user_id)
# product_no integer PRIMARY KEY,
"""
( website_id INT(11) NOT NULL AUTO_INCREMENT,
website_name VARCHAR(25) NOT NULL,
server_name VARCHAR(20),
creation_date DATE,
CONSTRAINT websites_pk PRIMARY KEY (website_id)
"""
# END
# BEGIN redis
import redis
from datetime import timedelta
r = redis.StrictRedis(
host=settings["Redis"]["host"],
port=settings["Redis"]["port"],
password=settings["Redis"]["password"],
charset="utf-8",
decode_responses=True,
db = settings["Redis"]["db"]
)
# END
# BEGIN L
# Пользователь может быть в нескольких группах.
# ID levol Это уровень групы
# Если ID levol администратора меньше ID levol пользователя, то всё ок.
# Если ID levol администратора равен ID levol пользователя, то прова уразаны в двое (Не досупны функции "Редактировать/Удолять/Создовать").
# Админестрарор может создать или выдать пользователю только те групы, в которых сам состоит.
# Только люди с ID levol 0 имеют право изменять emeil или пароль другим членам.
# Люжи с ID levol 0 имеют обсолютные прова.
# Доступ на чтение <= (user_id[ID levol] <= ID levol пользователей предмета)
# ID levol
"""
r.rpush(f"recording_spark:user_group:{4344}", 4)
r.rpush(f"recording_spark:user_group:{4344}", 2)
r.rpush(f"recording_spark:user_group:{34545}", 4)
r.rpush(f"recording_spark:user_group:{23324}", 4)
"""
[1,2,3,4,5]
#- - + - -
#- - + + +
# +
# + + + + + + +
user_id = 1
#sql.execute(
"""SELECT recording_spark.item.item_id, recording_spark.item.item_name, recording_spark.item.status, recording_spark.item.user_id_1, SAS.user_name, recording_spark.item.user_id_2, SUS.user_name, recording_spark.item.png_id_name, recording_spark.item.comments, recording_spark.item.inventory_id
FROM recording_spark.item
JOIN recording_spark.user SAS
ON recording_spark.item.user_id_1 = SAS.user_id
JOIN recording_spark.user SUS
ON recording_spark.item.user_id_2 = SUS.user_id
WHERE recording_spark.item.user_id_1 = ?
OR recording_spark.item.user_id_2 = ?
OR recording_spark.item.user_id_2
IN (SELECT recording_spark.user_group.user_id FROM recording_spark.group WHERE group_id
IN (SELECT group_id FROM recording_spark.group WHERE group_id IN (SELECT group_id FROM recording_spark.group WHERE recording_spark.user_group.user_id = ?) <= group_id
IN (SELECT MAX(group_id) FROM recording_spark.group WHERE recording_spark.group.item = 5 AND group_id
IN (SELECT group_id FROM recording_spark.user_group WHERE recording_spark.user_group.user_id = ?))))
"""
#, (user_id, user_id, user_id, user_id))
#A = sql.fetchone()
#while A != None:
# print(A)
# A = sql.fetchone()
# Пользователи
# # Сам (Читать, Редактировать)
# # Своя група (Читать, Редактировать/Удолять/Создовать)
# # Остольное (Читать, Редактировать/Удолять/Создовать)
# Предметы
# # Своё (Читать, Редактировать/Удолять/Создовать)
# # Своя група (Читать, Редактировать/Удолять/Создовать)
# # Остольное (Читать, Редактировать/Удолять/Создовать)
"""
0000000000000001 - Предметы - Своё - Читать
0000000001000000 - Пользователи - Своё - Читать
0000000100000000 - Пользователи - Своя група - Читать
1000000000000000 - ID levol - 8
1000000101000001 - 33089
000001
000010
000100
001000
010000
100000
"""
"""
IDL - ID levol
11111111
IDL user item
|10000000|100000|100000|
1000 000101 000001 - 33089
1000
8
111111111111
000101000001
000101000001
1000000101000001
33089-4095
8191 -
"""
# END
"""
IDL user item
|10000000|100000|100000|
1000 000101 000001 - 33089
1100100 000001 000001 - 409665
1010 001111 001111 - 41935
1000 011111 111111 - 34815
000101 000101 - 325
000001 000001 - 65
001111 001111 - 975
011111 111111 - 2047
"""
# 111111111111
# 100
# 1000001
#10000
# # Своё (Читать, Редактировать/Удолять/Создовать)
# # Своя група (Читать, Редактировать/Удолять/Создовать)
# # Остольное (Читать, Редактировать/Удолять/Создовать)
# 000001 - 1
# 000100 - 4
# 010000 - 16
# SELECT 65 & 16, 65 & 4, 65 & 1
#user_id = 1
#sql.execute(
"""
SELECT
@a:=(SELECT rights FROM recording_spark.group WHERE group_id = (SELECT group_id FROM recording_spark.user WHERE user_id = ?)),
IF (1=1,@a,0)
"""
#,(user_id, ))
#A = sql.fetchone()
#while A != None:
# print(A)
# A = sql.fetchone()
print("@@@@@@@@@@@@@@@@@@@")
#sql.execute(
"""
SELECT item_id, item_name, @a & 4, @q FROM recording_spark.item WHERE
user_id_1 = ?
OR user_id_2 = ?
OR @a & 4 = 4
AND user_id_2 IN
(SELECT user_id FROM recording_spark.user WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?) AND
@a:=(SELECT rights FROM recording_spark.group WHERE group_id
IN (SELECT group_id FROM recording_spark.user WHERE user_id = ?))
)
"""
#,(user_id,user_id,user_id,user_id))
#A = sql.fetchone()
#while A != None:
# print(A)
# A = sql.fetchone()
"""
SELECT rights & 1, rights >> 2 & 1, rights >> 4 & 1 FROM recording_spark.group WHERE group_id =
(SELECT group_id FROM recording_spark.user WHERE user_id = ?)
"""
# IF (? = 0, rights & 1, IF (? = 1, rights >> 1 & 1, IF (? = 2, rights >> 6 & 1,rights >> 7 & 1))),
def permissions(u_id,L): # 0 - item_r,1 - item_w ,2 - user_r , 3 - user_w
sql.execute("""
SELECT
IF (? = 0, rights & 1, IF (? = 1, rights >> 1 & 1, IF (? = 2, rights >> 6 & 1,rights >> 7 & 1))),
IF (? = 0, rights >> 2 & 1, IF (? = 1, rights >> 3 & 1, IF (? = 2, rights >> 8 & 1,rights >> 9 & 1))),
IF (? = 0, rights >> 4 & 1, IF (? = 1, rights >> 5 & 1, IF (? = 2, rights >> 10 & 1,rights >> 11 & 1)))
FROM recording_spark.group WHERE group_id =
(SELECT group_id FROM recording_spark.user WHERE user_id = ?)
""", (L ,L ,L ,L ,L ,L ,L ,L ,L ,u_id))
A = sql.fetchone()
if A == None:
return None
else:
#print(A)
return(A)
def permissions_item_r(u_id):
return(permissions(u_id,0))
def permissions_item_w(u_id):
return(permissions(u_id,1))
def permissions_user_r(u_id):
return(permissions(u_id,2))
def permissions_user_w(u_id):
return(permissions(u_id,3))
#print(permissions_item_r(1))
#print(permissions_item_w(1))
#print(permissions_user_r(1))
#print(permissions_user_w(1))
admin = 0
meneger = 34815
sender = 41935
user = 409665
# BEGIN Redis
#
# Используем 2 токена, тороткоживучий 30 мин.
# И долгоживучий 30 дней (12ч. если пользовотель попросил его не запоминать.)
# Если пользователь хочет прдить свой токен то он получит не только ноый короткий токен,
# но и новый доинный, предыдуший будет немедленно удолён.
#
# BEGIN token
def update_short_token(user_id, live_token):
TTL = r.pttl(f"recording_spark:{user_id}:{live_token}:PC-INFO") / 1000
#print(int(L))
if TTL > 31*60:
rm_short_token(user_id, live_token)
list_A = r.lrange(f"recording_spark:{user_id}:{live_token}:PC-INFO", 0, -1)
for key in r.scan_iter(f"recording_spark:{user_id}:{live_token}:*"):
r.delete(key)
short_token, live_token = add_live_token(user_id, list_A[0], list_A[1], list_A[2],int(TTL))
#short_token = add_short_token(user_id, live_token)
return short_token, live_token
return None, None
#rm_short_token()
def rm_live_token(user_id, live_token):
short_token = r.get(f'recording_spark:{user_id}:{live_token}:short_token') ### !!! ИНЕКЦИЯ !!!
r.delete(f"recording_spark:short_token:{short_token}")
A = False
for key in r.scan_iter(f"recording_spark:{user_id}:{live_token}:*"):
A = True
r.delete(key)
return A
def rm_short_token(user_id, live_token):
short_token = r.get(f'recording_spark:{user_id}:{live_token}:short_token') ### !!! ИНЕКЦИЯ !!!
r.delete(f"recording_spark:short_token:{short_token}")
r.delete(f'recording_spark:{user_id}:{live_token}:short_token')
def add_short_token(user_id, live_token):
short_token = secrets.token_urlsafe(32)
r.set(f"recording_spark:short_token:{short_token}", user_id, 30*60)
r.set(f"recording_spark:{user_id}:{live_token}:short_token", short_token, 30*60)
return short_token
def add_live_token(user_id, ps_info_name, ps_info_ip, ps_info_date,TTL):
live_token = secrets.token_urlsafe(128)
#if remember == 1:
# TTL = 30*24*60*60
#elif remember == 0:
# TTL = 12*60*60
#print(ps_info_date)
r.rpush(f"recording_spark:{str(user_id)}:{live_token}:PC-INFO", ps_info_name, ps_info_ip, str(ps_info_date))
r.expire(f'recording_spark:{user_id}:{live_token}:PC-INFO', timedelta(seconds=TTL))
#r.ttl(f"recording_spark:{user_id}:{live_token}:PC-INFO", int(TTL))
#r.rpushx(f"recording_spark:{user_id}:{live_token}:PC-INFO", int(TTL))
short_token = add_short_token(user_id, live_token)
return short_token, live_token
#r.set(f"recording_spark:{user_id}:{live_token}:PC-INFO", ps_info, 30*24*60*60)
return live_token
def check_user_live_token(user_id,live_token):
user_id = r.get(f'recording_spark:{user_id}:{live_token}:PC-INFO') ### !!! ИНЕКЦИЯ !!!
if user_id == None:
print("None")
return None
else:
short_token = update_short_token(user_id, live_token)
#short_token = add_short_token(user_id)
#r.expire(f'recording_spark:live_token:{live_token}', timedelta(seconds=30*24*60*60))
return short_token
#add_live_token(1, "40-PC", "192.168.1.40", "25-04-2022",1)
"""
def add_short_token(user_id):
short_token = secrets.token_urlsafe(32)
r.set(f"recording_spark:short_token:{short_token}", user_id, 12*60*60)
return short_token
def add_live_token(user_id):
live_token = secrets.token_urlsafe(128)
r.set(f"recording_spark:live_token:{live_token}", user_id, 30*24*60*60)
return live_token
"""
def check_user_short_token(short_token):
user_id = r.get(f'recording_spark:short_token:{short_token}') ### !!! ИНЕКЦИЯ !!!
if user_id == None:
return None
else:
return user_id
def ls_sessions(user_id): # !!! МОГУТ БЫТЬ ПРОБЛЕМЫ !!!
A = 0
Q = []
for key in r.scan_iter(f"recording_spark:{user_id}:*:PC-INFO"):
print(key)
short_token = r.lrange(key, 0, -1)
short_token.append(A)
Q.append(short_token)
A = A + 1
return Q
#print(ls_sessions(1))
def rm_live_token_position(user_id, position): # !!! МОГУТ БЫТЬ ПРОБЛЕМЫ !!!
A = 0
for key in r.scan_iter(f"recording_spark:{user_id}:*"):
if position == A:
short_token = r.get(f'recording_spark:{user_id}:{key}:short_token') ### !!! ИНЕКЦИЯ !!!
r.delete(f"recording_spark:short_token:{short_token}")
for key in r.scan_iter(f"recording_spark:{user_id}:{key}:*"):
r.delete(key)
A = A + 1
def full_sessions_kill(user_id):
for key in r.scan_iter(f"recording_spark:{user_id}:*:short_token"):
short_token = r.get(key)
r.delete(f"recording_spark:short_token:{short_token}")
r.delete(key)
for key in r.scan_iter(f"recording_spark:{user_id}:*"):
r.delete(key)
#full_sessions_kill(1)
#print(update_short_token(1, "tAVtQvl-_NmPOXbRoqfPWVtlx5gblZjcjVZmUy6qGa60Dzc7bWqHzj0ybsoyvv1rj5EG-jLc2eEuTR4riEvQy_ggVMLZVx9VDlI_z1fqpWvW6wRQDqxW4upiSLmqseCPHuqJMbNpXqa8l-fIH8Lrb2r73wcCklhFLdqh7lRe9og"))
#add_live_token(1, "80-PC", "192.168.1.64", "26-04-2022",12*60*60)
#r.delete(f"recording_spark:1:*")
"SGSlPpX0m-bWDmgDkaLrtAf9JAjno46Wg01KmEAf0Qs"
"""
def check_user_live_token(live_token):
user_id = r.get(f'recording_spark:live_token:{live_token}') ### !!! ИНЕКЦИЯ !!!
if user_id == None:
print("None")
return None
else:
short_token = add_short_token(user_id)
r.expire(f'recording_spark:live_token:{live_token}', timedelta(seconds=30*24*60*60))
return short_token
"""
# END
def add_user_registration(email, password):
G = int(strftime("%Y")) # Год
M = int(strftime("%m")) # Месяц
D = int(strftime("%d")) # День
ch = int(strftime("%H"))
m = int(strftime("%M"))
s = int(strftime("%S"))
#id = str(D) + str(ch) + str(m) + str(s) + str(random.randint(0, 100000))
id = f"{D}{ch}{m}{s}{random.randint(0, 100000)}"
date = f"{G}-{M}-{D}"
r.set(f"recording_spark:registration:{id}:email", email, 7*24*60*60)
r.set(f"recording_spark:registration:{id}:password", password, 7*24*60*60)
r.set(f"recording_spark:registration:{id}:date", date, 7*24*60*60)
return id
# END
# BEGIN mariadb_SAS
def user_name(user_id):
ping_db()
sql.execute("SELECT user_name FROM recording_spark.user WHERE user_id = ?", (user_id,))
A = sql.fetchone()
if A == None:
return None
else:
return(A[0])
def avatar_png(user_id):
ping_db()
sql.execute("SELECT avatar FROM recording_spark.user WHERE user_id = ?", (user_id,))
A = sql.fetchone()
if A == None:
return None
else:
return(A[0])
def check_user(email, password):
ping_db()
sql.execute("SELECT user_id, user_name, active FROM recording_spark.user WHERE email = ? AND password = ?", (email, password))
A = sql.fetchone()
if A == None:
return None, None, None
else:
print(A[0])
return(A[0], A[1], A[2])
#def ls_item2(user_id):
# Q = [[],[],[],[],[]]
# sql.execute("SELECT item_id, item_name, status, user_id_1, user_id_2 FROM recording_spark.item WHERE user_id_1 = ? OR user_id_2 = ?", (user_id, user_id))
# A = sql.fetchone()
# if A == None:
# return None
# R = 0
# while A != None:
# for a in A:
# Q[R].append(a)
# A = sql.fetchone()
# R = R + 1
#print(Q[2][1])
# return Q
# OR LLL.user_id IN (SELECT user_id FROM recording_spark.group WHERE group_id = ?)
"""
JOIN recording_spark.group LLL
ON recording_spark.item.user_id_2 = LLL.user_id
"""
def ls_user(user_id):
ping_db()
A = permissions_user_r(user_id)
print(A)
sql.execute("""SELECT recording_spark.user.user_id, recording_spark.user.user_name, recording_spark.user.email, recording_spark.user.avatar, recording_spark.user.active, SAS.group_id, SAS.name, SAS.rights
FROM recording_spark.user
JOIN recording_spark.group SAS
ON recording_spark.user.group_id = SAS.group_id
WHERE
IF (? = 1, user_id >= 0,
IF (? = 1, user_id = ?, NULL) OR
IF (? = 1,
user_id IN
(SELECT user_id FROM recording_spark.user WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?)),
NULL)
)
""", (A[2], A[0], user_id, A[1], user_id))
A = sql.fetchall()
if A == None:
return None
else:
print(A)
print(A[0])
#return(A[0])
return A
def ls_user__3(user_id):
A = permissions_user_r(user_id)
print(A)
sql.execute("""SELECT user_id, user_name, email, avatar, active, group_id
FROM recording_spark.user
WHERE
IF (? = 1, user_id >= 0,
IF (? = 1, user_id = ?, NULL) OR
IF (? = 1,
user_id IN
(SELECT user_id FROM recording_spark.user WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?)),
NULL)
)
""", (A[2], A[0], user_id, A[1], user_id))
Q = []
A = sql.fetchone()
while A != None:
print(A)
Q.append(list(A))
A = sql.fetchone()
return Q
#print(ls_user(4))
import time
def ls_item(user_id):
ping_db()
tic = time.perf_counter()
if settings["Mariadb"]["select_commit"] == True:
bd.commit()
toc = time.perf_counter()
print(f"Вычисление заняло {toc - tic:0.8f} секунд")
A = permissions_item_r(user_id)
#if A[2] == 1:
sql.execute("""SELECT recording_spark.item.item_id, recording_spark.item.item_name, recording_spark.item.status, recording_spark.item.user_id_1, SAS.user_name, recording_spark.item.user_id_2, SUS.user_name, recording_spark.item.icon, recording_spark.item.comments, recording_spark.item.inventory_id
FROM recording_spark.item
JOIN recording_spark.user SAS
ON recording_spark.item.user_id_1 = SAS.user_id
JOIN recording_spark.user SUS
ON recording_spark.item.user_id_2 = SUS.user_id
WHERE
IF (? = 1, recording_spark.item.item_id >= 0,
IF (? = 1,
recording_spark.item.user_id_1 = ?
OR recording_spark.item.user_id_2 = ?,
NULL) OR
IF (? = 1, recording_spark.item.user_id_2 IN
(SELECT user_id FROM recording_spark.user WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?)),
NULL)
)
""", (A[2], A[0], user_id, user_id, A[1], user_id))
Q = []
A = sql.fetchone()
while A != None:
#print(A)
Q.append(list(A))
A = sql.fetchone()
return Q
#print(ls_item(3))
#def ls_item(user_id):
#Q = [[],[],[],[],[],[],[],[],[],[]]
# sql.execute(
"""SELECT recording_spark.item.item_id, recording_spark.item.item_name, recording_spark.item.status, recording_spark.item.user_id_1, SAS.user_name, recording_spark.item.user_id_2, SUS.user_name, recording_spark.item.png_id_name, recording_spark.item.comments, recording_spark.item.inventory_id
FROM recording_spark.item
JOIN recording_spark.user SAS
ON recording_spark.item.user_id_1 = SAS.user_id
JOIN recording_spark.user SUS
ON recording_spark.item.user_id_2 = SUS.user_id
WHERE recording_spark.item.user_id_1 = ?
OR recording_spark.item.user_id_2 = ?
OR recording_spark.item.user_id_2 IN
(SELECT user_id FROM recording_spark.user WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?)
)
"""
# , (user_id, user_id, user_id))
# A = sql.fetchone()
# while A != None:
# print(A)
# Q.append(A)
#for a in A:
# print(a)
"""
if A == None:
return None
R = 0
while A != None:
for a in A:
print(a)
if a == None:
Q[R].append("None")
else:
Q[R].append(a)
R = R + 1
print("--------------")
A = sql.fetchone()
R = 0
return Q
"""
#bd.commit()
#sql.execute(
"""
SELECT * FROM recording_spark.user
WHERE
? = user_id
"""
#,(id,))
#A = sql.fetchone()
#print(A)
# 3 зп!
def user_add(user_id:int, user_name:str, email:str, password:str, avatar:bool, active:bool, group_id:int):
ping_db()
def add(user_name, email, password, avatar, active, group_id):
print(user_name, email, password, avatar, active, group_id)
sql.execute("""
INSERT INTO recording_spark.user
VALUES
(NULL, ?, ?, ?, ?, ?, ?)
""",(user_name, email, password, avatar, active, group_id))
id = sql.lastrowid
print(id)
bd.commit()
return id
A = permissions_user_w(user_id)
print(A)
if A[2] == 1:
id = add(user_name, email, password, avatar, active, group_id)
return id
elif A[1] == 1:
sql.execute("""
SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?
""",(user_id,))
Q = []
A = sql.fetchone()
while A != None:
print(A)
Q.append(A[0])
A = sql.fetchone()
print(Q)
for a in Q:
if a == group_id:
id = add(user_name, email, password, avatar, active, group_id)
bd.commit()
return id
else:
return None
#id = user_add(1, "Фёдор", None, "mnvbijdseahicihsf72e3wh89hfuh34h89f", 0, 1, 3)
#print(id)
# Удолить могут только отпровители или те кто имеет власть над отпровителями.
# 3-4 зп!
def item_edit_2(user_id, item_id, user_id_1, user_id_2, name, status, icon, comments, inventory_id):
A = permissions_item_w(user_id)
print(A)
sql.execute("""SELECT IF
(? IN
(SELECT user_id FROM recording_spark.user WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?))
, 1,0), IF
(? IN
(SELECT user_id FROM recording_spark.user WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?))
, 1,0)
""",(user_id_1,user_id, user_id_2,user_id))
Al = sql.fetchone()
print(Al)
if Al[0] == 1 or user_id_1 == user_id or user_id_1 == -1 and Al[1] == 1 or user_id_2 == user_id or user_id_2 == -1:
sql.execute("""SELECT IF (
(SELECT user_id_1 FROM recording_spark.item WHERE item_id = ?) IN
(SELECT user_id FROM recording_spark.user WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?))
, 1,0
)
""",(item_id,user_id,))
Am = sql.fetchone()
print(Am)
if Am[0] == 1:
sql.execute("""UPDATE recording_spark.item
SET
item_name= IF (? = 'None', item_name, ?),
status = IF (? = 'None', status, ?),
user_id_1 = IF (? = -1, user_id_1, ?),
user_id_2 = IF (? = -1, user_id_2, ?),
icon = IF (? = 'None', icon, ?),
comments = IF (? = 'None', comments, ?),
inventory_id = IF (? = 'None', inventory_id, ?)
WHERE item_id = ?
""",(name,name,status,status,user_id_1,user_id_1,user_id_2,user_id_2,icon,icon,comments,comments,inventory_id,inventory_id,item_id))
item_id = 3
user_id = 23
user_id_1 = 1
user_id_2 = -1
#A = permissions_user_w(user_id)
#print(f'uw{A}')
#Al = permissions_user_r(user_id)
#print(f'ur{Al}')
#A = permissions_item_r(user_id)
#print(f'ir{A}')
#A = permissions_item_w(user_id)
#print(f'iw{A}')
# 2 зп!
def item_edit(user_id, item_id, user_id_1, user_id_2, name, status, icon, comments, inventory_id):
ping_db()
print(user_id, item_id, user_id_1, user_id_2, name, status, icon, comments, inventory_id)
Al = permissions_user_r(user_id)
print(f'ur{Al}')
A = permissions_item_w(user_id)
print(f'iw{A}')
sql.execute("""UPDATE recording_spark.item
SET
item_name= IF (? IS NULL, item_name, ?),
status = IF (? IS NULL, status, ?),
user_id_1 = IF (? IS NULL, user_id_1, ?),
user_id_2 = IF (? IS NULL, user_id_2, ?),
icon = IF (? IS NULL, icon, IF (? = '-1', NULL, ?)),
comments = IF (? IS NULL, comments, ?),
inventory_id = IF (? IS NULL, inventory_id, IF (? = -1, NULL, ?))
WHERE item_id =
IF (1 =
IF (? = 1, 1,
IF (? = 1 AND (? = (SELECT user_id_1 FROM recording_spark.item WHERE item_id = ?)), 1,
IF (? = 1 AND
(
(SELECT user_id_1 FROM recording_spark.item WHERE item_id = ?) IN
(SELECT user_id FROM recording_spark.user WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?))), 1, 0
)
)
) AND
IF (? = 1, 1,
IF (? IS NULL, 1,
IF (? = 1 AND ? = ?, 1,
IF (? = 1 AND
(? IN
(SELECT user_id FROM recording_spark.user WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?))),1,0)
)
)
AND
IF (? IS NULL, 1,
IF (? = 1 AND ? = ?, 1,
IF (? = 1 AND
(? IN
(SELECT user_id FROM recording_spark.user WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?))),1,0)
)
)
)
, ?, NULL)
""",(name,name,status,status,user_id_1,user_id_1,user_id_2,user_id_2,icon,icon,icon,comments,comments,inventory_id,inventory_id,inventory_id,
A[2], A[0],user_id,item_id, A[1],item_id,user_id,
Al[2],
user_id_1, Al[0],user_id_1,user_id, Al[1],user_id_1,user_id,
user_id_2, Al[0],user_id_2,user_id, Al[1],user_id_2,user_id,
item_id
))
#Al = sql.fetchone()
id = sql.rowcount
print(id)
bd.commit()
return int(id)
#item_edit(1, 32, None, None, None, None, -1, None, None)
#item_edit(user_id, item_id, user_id_1, user_id_2, "None", "None", -1, "None", 465)
def item_edit_3(user_id, item_id, user_id_1, user_id_2, name, status, icon, comments, inventory_id):
A = permissions_item_w(user_id)
print(A)
sql.execute("""UPDATE recording_spark.item
SET
item_name= IF (? IS NULL, item_name, ?),
status = IF (? IS NULL, status, ?),
user_id_1 = IF (? IS NULL, user_id_1, ?),
user_id_2 = IF (? IS NULL, user_id_2, ?),
icon = IF (? IS NULL, icon, ?),
comments = IF (? IS NULL, comments, ?),
inventory_id = IF (? IS NULL, inventory_id, ?)
WHERE
IF (? =
(SELECT user_id_1 FROM recording_spark.item WHERE item_id = ?)
AND ? = 1, item_id = ?,
IF (? = 1, item_id = ?,
IF (? = 1,
IF
((SELECT user_id_1 FROM recording_spark.item WHERE item_id = ?) IN
(SELECT user_id FROM recording_spark.user WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?))
,
,NULL))))
, NULL)))
""",(name,name,status,status,user_id_1,user_id_1,user_id_2,user_id_2,icon,icon,comments,comments,inventory_id,inventory_id,item_id))
id = sql.rowcount
print(id)
#item_edit(1, 3, -1, -1, "SAS", "None", 0, "None", -1)
"""
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?)
SELECT user_id_1 FROM recording_spark.item WHERE ? = item_id
SELECT
IF (? = ?, (SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?),
IF (? = 1, (SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?),
IF (? = 1 AND (
? IN
(SELECT user_id FROM uid WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?))),
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?)
, NULL)))
"""
def permission(u_id,user_id):
ping_db()
A = permissions_user_r(u_id)
print(A)
sql.execute("""SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id =
IF (? = ? AND ? = 1, ?,
IF (? = 1, ?,
IF (? = 1 AND
? IN
(SELECT user_id FROM recording_spark.user WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?)), ?, NULL)))
""",(u_id, user_id,A[0],user_id,A[2],user_id, A[1], user_id, u_id, user_id))
id = sql.fetchall()
#id = sql.rowcount
print(id)
sql.execute("""SELECT group_id FROM recording_spark.user WHERE user_id =
IF (? = ? AND ? = 1, ?,
IF (? = 1, ?,
IF (? = 1 AND
? IN
(SELECT user_id FROM recording_spark.user WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?)), ?, NULL)))
""",(u_id, user_id,A[0],user_id,A[2],user_id, A[1], user_id, u_id, user_id))
permission_int = sql.fetchall()
return id, permission_int
# permission(3,1)
# 2 зп!
def item_rm(user_id,item_id):
ping_db()
A = permissions_item_w(user_id)
sql.execute("""DELETE FROM recording_spark.item WHERE item_id =
IF (? = (SELECT user_id_1 FROM recording_spark.item WHERE item_id = ?)
AND
(? = 1), ?,
IF (? = 1, ?,
IF (? = 1 AND (
? IN
(SELECT item_id FROM recording_spark.item WHERE user_id_1
IN
(SELECT user_id FROM recording_spark.user WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?)))), ?, NULL)))
""",(user_id,item_id,A[0],item_id, A[2],item_id, A[1],item_id,user_id, item_id))
#id = sql.fetchone()
id = sql.rowcount
print(id)
return id
#item_rm(5,2)
#sql.execute(
"""
DELETE recording_spark.user, recording_spark.ownership_over_group
FROM recording_spark.ownership_over_group
INNER JOIN recording_spark.user
WHERE
recording_spark.ownership_over_group.user_id = 23 AND
recording_spark.user.user_id = 23
"""
#)
#id = sql.rowcount
#print(id)
def user_rm(user_id,user_id_rm):
ping_db()
A = permissions_user_w(user_id)
sql.execute("""DELETE
recording_spark.user, recording_spark.ownership_over_group FROM
recording_spark.user
INNER JOIN recording_spark.user uid
INNER JOIN recording_spark.ownership_over_group
WHERE
IF (? = ?, user_id = NULL,
IF (? = 1, user_id = ?,
IF (? = 1 AND (
? IN
(SELECT user_id FROM uid WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?))), user_id = ?, user_id = NULL)))
""",(user_id, user_id_rm,A[0],user_id_rm, A[2],user_id_rm, user_id,user_id_rm))
#id = sql.fetchone()
id = sql.rowcount
print(id)
return id
#item_rm(5,2)
#user_rm(1,23)
############################################### + !!! ПЕРЕДАЛАТЬ !!!
def item_rm_2(user_id,item_id):
A = permissions_item_w(user_id)
print(A)
if A[2] != 1:
sql.execute("DELETE FROM recording_spark.item WHERE ? = item_id",(item_id,))
bd.commit()
return 1
if A[0] != 1:
print("AAA")
return 0
sql.execute("SELECT user_id_1 FROM recording_spark.item WHERE ? = item_id",(item_id,))
Al = sql.fetchone()
if len(Al) != 0:
if user_id == Al[0]:
sql.execute("DELETE FROM recording_spark.item WHERE ? = item_id",(item_id,))
bd.commit()
return 1
elif A[1] != 1:
sql.execute("""SELECT IF
(? IN
(SELECT user_id FROM recording_spark.user WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?))
, 1,0)
""",(Al[0],user_id,))
Al = sql.fetchone()
if Al == 1:
sql.execute("DELETE FROM recording_spark.item WHERE ? = item_id",(item_id,))
bd.commit()
return 1
else:
print("SSS")
return 0
else:
print("Нет такого!")
return 0
# 4 зп!
def add_item(user_id, user_id_1, user_id_2, name, status, icon, comments, inventory_id):
ping_db()
print(user_id, user_id_1, user_id_2, name, status, icon, comments, inventory_id)
Al = permissions_user_r(user_id)
print(f'ur{Al}')
A = permissions_item_w(user_id)
print(f'iw{A}')
sql.execute("""SELECT
(SELECT
IF (1 =
IF (
IF ((? = ?) AND (? = ?), 1,0) = 0,
IF (? = 1,1,
IF (? = 1,
IF (1 =
IF (? = -1, 1, IF (
?
IN
(SELECT user_id FROM recording_spark.user WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?)) OR ? = ?,
1, 0
)
)
AND
IF (? = -1, 1, IF (
?
IN
(SELECT user_id FROM recording_spark.user WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?)) OR ? = ?,
1, 0
)
),1,0),0)),1)
,
IF (? = 1, 1,
IF (? = 1, 1,
IF (? = 1,
1,0))),0))
""",(user_id_1, user_id, user_id_2, user_id,Al[2],Al[1],user_id_1, user_id_1, user_id,user_id_1,user_id, user_id_2, user_id_2, user_id,user_id_2,user_id, A[0],A[2], A[1]))
id = sql.fetchone()
if id[0] == 1:
print("Ура!!!")
sql.execute("""
INSERT INTO recording_spark.item
VALUES
(NULL, ?, ?, ?, ?, ?, ?, ?)
""",(name, status, user_id_1, user_id_2, icon, comments, inventory_id))
id = sql.lastrowid
print(id)
bd.commit()
return id
#id = sql.rowcount
print(id)
#bd.commit()
return id
#add_item(1, 5, 2, "SAS", "SUS", 0, "SGS", 3333)
# 3 зп!
# Работает, НЕ ТРОГОЙ!!! но мне пох)))
def add_item_3(user_id, user_id_2, name, status, icon, comments, inventory_id):
A = permissions_item_w(user_id)
print(A)
if A[0] == 1 or A[1] == 1 or A[2] == 1:
sql.execute("""
SELECT IF
(? IN
(SELECT user_id FROM recording_spark.user WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?))
, 1,0)
""",(user_id_2,user_id))
Al = sql.fetchone()
if Al[0] == 1:
sql.execute("""
INSERT INTO recording_spark.item
VALUES
(NULL, ?, ?, ?, ?, ?, ?, ?)
""",(name, status, user_id, user_id_2, icon, comments, inventory_id))
id = sql.lastrowid
print(id)
bd.commit()
return id
return 0
#id = add_item(1, 23, "Морковь", "В пути", 0, "2кг.", 784538673428743)
#print(id)
# 2 зп!
def user_edit(user_id,user_id_rec, user_name, email, password, avatar, active, group_id):
ping_db()
A = permissions_user_w(user_id)
print(user_id)
print(A)
print(user_id,user_id_rec, user_name, email, password, avatar, active, group_id)
sql.execute("""UPDATE recording_spark.user
SET
user_name = IF (? IS NULL, user_name, ?),
email = IF (? IS NULL, email, ?),
password = IF (? IS NULL, password, ?),
avatar = IF (? IS NULL, avatar, ?),
active = IF (? IS NULL, active, ?),
group_id = IF (? IS NULL, group_id, ?)
WHERE
IF (? = ? AND ? = 1, recording_spark.user.user_id = ?,
IF (? = 1, recording_spark.user.user_id = ?,
IF (? = 1,
? = user_id and user_id IN
(SELECT user_id FROM recording_spark.user WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?)), NULL)))
""", (user_name, user_name, email, email, password, password, avatar, avatar, active, active, group_id, group_id, user_id, user_id_rec, A[0], user_id, A[2], user_id_rec, A[1] , user_id_rec, user_id))
bd.commit()
id = sql.rowcount
print(id)
if (id == 1 and active == 0) or (id == 1 and password != None):
full_sessions_kill(user_id_rec)
return id
#A = sql.fetchone()
#if A == None:
#return None
#else:
#print(A)
#sql.execute("SELECT IF (? IS NULL, 1, 0)", (None,))
#print(sql.fetchone())
#user_edit(1,5, None, "GGG", None,None,None,None)
# 2 зп!
def user_info(user_id,user_id_rec):
ping_db()
A = permissions_user_r(user_id)
print(A)
sql.execute("""SELECT recording_spark.user.user_name, recording_spark.user.email, recording_spark.user.avatar, recording_spark.user.active, SAS.group_id, SAS.rights
FROM recording_spark.user
JOIN recording_spark.group SAS
ON recording_spark.user.group_id = SAS.group_id
WHERE
IF (? = ? AND ? = 1, recording_spark.user.user_id = ?,
IF (? = 1, recording_spark.user.user_id = ?,
IF (? = 1,
? = user_id and user_id IN
(SELECT user_id FROM recording_spark.user WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?)), NULL)))
""", (int(user_id),int(user_id_rec), A[0],int(user_id), A[2],int(user_id_rec), A[1] ,int(user_id_rec),int(user_id)))
A = sql.fetchone()
if A == None:
return None
else:
print(A)
print(A[0])
#return(A[0])
return A
def ls_group(user_id):
ping_db()
A = permissions_user_r(user_id)
if A[2] == 1:
sql.execute("SELECT * FROM recording_spark.group")
group_list = sql.fetchall()
else:
sql.execute("""SELECT * FROM recording_spark.group WHERE group_id
IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?)
""", (user_id, user_id))
group_list = sql.fetchall()
return group_list
def item_info(user_id,item_id):
ping_db()
A = permissions_item_r(user_id)
sql.execute("""SELECT * FROM recording_spark.item
WHERE item_id =
IF (? = (SELECT user_id_1 FROM recording_spark.item WHERE item_id = ?)
AND
(? = 1), ?,
IF (? = 1, ?,
IF (? = 1 AND (
? IN
(SELECT item_id FROM recording_spark.item WHERE user_id_1
IN
(SELECT user_id FROM recording_spark.user WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?)))), ?, NULL)))
""",(user_id,item_id,A[0],item_id, A[2],item_id, A[1],item_id,user_id, item_id))
group_list = sql.fetchone()
return group_list
def item_w_test(user_id,item_id):
ping_db()
A = permissions_item_w(user_id)
sql.execute("""SELECT
IF (? = (SELECT user_id_1 FROM recording_spark.item WHERE item_id = ?)
AND
(? = 1), 1,
IF (? = 1, 1,
IF (? = 1 AND (
? IN
(SELECT item_id FROM recording_spark.item WHERE user_id_1
IN
(SELECT user_id FROM recording_spark.user WHERE group_id IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?)))), 1, 0)))
""",(user_id,item_id,A[0], A[2], A[1],item_id,user_id))
group_list = sql.fetchone()
print(group_list[0])
return int(group_list[0])
#print(item_info(1,20))
#print(item_w_test(1,100))
"""SELECT * FROM recording_spark.group WHERE group_id
IN
(SELECT group_id FROM recording_spark.ownership_over_group WHERE user_id = ?) OR group_id =
(SELECT group_id FROM recording_spark.user WHERE user_id = ?)
"""
#print(ls_group(2))
#user_info(2,4)
#print(ls_item(5))
#print(permissions_item_w(3))
# END
#sql.execute("INSERT INTO recording_spark.group VALUES (4, 'user', 34545, 409665)")
#sql.execute("INSERT INTO recording_spark.group VALUES (4, 'user', 455435, 409665)")
#bd.commit()
#print(ls_item(1))
#ls_item(455435)