found the more elegant solution
parent
6ba290fab6
commit
a33660166f
|
@ -3,6 +3,7 @@ import time
|
|||
from typing import Optional
|
||||
|
||||
from sqlalchemy import Column
|
||||
from sqlalchemy.ext.mutable import MutableList
|
||||
from sqlalchemy.orm import relationship
|
||||
from sqlalchemy.types import VARCHAR, Boolean, Integer
|
||||
from sqlalchemy.dialects.postgresql import ARRAY
|
||||
|
@ -19,7 +20,7 @@ class Sub(Base):
|
|||
sidebar = Column(VARCHAR(SUB_SIDEBAR_COLUMN_LENGTH))
|
||||
sidebar_html = Column(VARCHAR(SUB_SIDEBAR_HTML_COLUMN_LENGTH))
|
||||
sidebarurl = Column(VARCHAR(SUB_SIDEBAR_URL_COLUMN_LENGTH))
|
||||
bannerurls = Column(ARRAY(VARCHAR(SUB_BANNER_URL_COLUMN_LENGTH)))
|
||||
bannerurls = Column(MutableList.as_mutable(ARRAY(VARCHAR(SUB_BANNER_URL_COLUMN_LENGTH))), default=MutableList([]), nullable=False)
|
||||
marseyurl = Column(VARCHAR(SUB_MARSEY_URL_LENGTH))
|
||||
css = Column(VARCHAR(SUB_CSS_COLUMN_LENGTH))
|
||||
stealth = Column(Boolean)
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
from sqlalchemy import nullslast
|
||||
from sqlalchemy.orm.attributes import flag_modified
|
||||
|
||||
from files.classes import *
|
||||
from files.helpers.alerts import *
|
||||
|
@ -463,15 +462,8 @@ def upload_sub_banner(v:User, sub:str):
|
|||
file.save(name)
|
||||
bannerurl = process_image(name, v, resize=1200)
|
||||
|
||||
if sub.bannerurls:
|
||||
sub.bannerurls.append(bannerurl)
|
||||
else:
|
||||
sub.bannerurls = [bannerurl]
|
||||
# while testing it seems sqlalchemy doesn't seem to recognize an array
|
||||
# column being updated. in order to get around this, we manually set
|
||||
# the modified flag
|
||||
# TODO: is there a more elegant way for this?
|
||||
flag_modified(sub, 'bannerurls')
|
||||
sub.bannerurls.append(bannerurl)
|
||||
|
||||
g.db.add(sub)
|
||||
|
||||
ma = SubAction(
|
||||
|
@ -502,7 +494,6 @@ def delete_sub_banner(v:User, sub:str, index:int):
|
|||
except FileNotFoundError:
|
||||
pass
|
||||
del sub.bannerurls[index]
|
||||
flag_modified(sub, 'bannerurls') # see the note in upload_sub_banner
|
||||
g.db.add(sub)
|
||||
|
||||
ma = SubAction(
|
||||
|
|
|
@ -2,6 +2,7 @@ UPDATE subactions SET kind = 'upload_banner' WHERE kind = 'change_banner'; -- up
|
|||
|
||||
ALTER TABLE subs RENAME COLUMN bannerurl TO bannerurls;
|
||||
ALTER TABLE subs ALTER COLUMN bannerurls TYPE VARCHAR(60)[] USING ARRAY[bannerurls];
|
||||
ALTER TABLE subs ALTER COLUMN bannerurls SET DEFAULT '{}'; -- multiple banners <3
|
||||
ALTER TABLE subs ALTER COLUMN bannerurls SET DEFAULT '{}';
|
||||
ALTER TABLE subs ALTER COLUMN bannerurls SET NOT NULL; -- multiple banners <3
|
||||
|
||||
UPDATE subs SET bannerurls = '{}' WHERE bannerurls = '{NULL}'; -- update subs with no banners
|
||||
|
|
Loading…
Reference in New Issue