create default user; minor fixes

This commit is contained in:
knst-kotov 2021-12-10 16:52:55 +03:00
parent 6e939f43db
commit d0fdfd2b31
6 changed files with 26 additions and 31 deletions

View File

@ -122,19 +122,7 @@ def shouts(content_data, shouts_by_slug, shouts_by_oid):
# limiting
try: limit = int(sys.argv[2]) if len(sys.argv) > 2 else len(content_data)
except ValueError: limit = len(content_data)
with local_session() as session:
community = session.query(Community).filter(Community.id == 0).first()
if not community:
Community.create(**{
'id' : 0,
'slug': 'discours.io',
'name': 'Дискурс',
'pic': 'https://discours.io/images/logo-min.svg',
'createdBy': '0',
'createdAt': date_parse(OLD_DATE)
})
if not topics_by_cat:
with local_session() as session:
topics = session.query(Topic).all()
@ -270,11 +258,6 @@ if __name__ == '__main__':
users_by_oid = {}
users_by_slug = {}
with local_session() as session:
default_user = session.query(User).filter(User.id == 0).first()
if not default_user:
default_user = User.create(id = 0, email = "discours@discours.io", username = "discours", slug = "default", old_id = 0)
user_id_map = {}
with local_session() as session:
users_list = session.query(User).all()

View File

@ -11,6 +11,7 @@ from transliterate import translit
from datetime import datetime
from sqlalchemy.exc import IntegrityError
from orm.base import local_session
from orm.community import Community
DISCOURS_USER = {
'id': 9999999,
@ -71,7 +72,7 @@ def migrate(entry, users_by_oid, topics_by_oid):
r = {
'layout': type2layout[entry['type']],
'title': entry['title'],
'community': 0,
'community': Community.default_community.id,
'authors': [],
'topics': [],
'views': entry.get('views', 0),

View File

@ -14,6 +14,7 @@ __all__ = ["User", "Role", "Community", "Operation", "Permission", "Message", "S
Base.metadata.create_all(engine)
Operation.init_table()
Resource.init_table()
User.init_table()
Community.init_table()
Role.init_table()

View File

@ -33,7 +33,7 @@ class Base(declarative_base()):
@classmethod
def create(cls: Generic[T], **kwargs) -> Generic[T]:
instance = cls(**kwargs)
return instance.save(session)
return instance.save()
def save(self) -> Generic[T]:
with local_session() as session:

View File

@ -18,14 +18,11 @@ class Community(Base):
def init_table():
with local_session() as session:
default = session.query(Community).filter(Community.slug == "default").first()
if default:
Community.default_community = default
return
default = Community.create(
name = "default",
slug = "default",
createdBy = 0
)
if not default:
default = Community.create(
name = "default",
slug = "default",
createdBy = 0 #TODO: use default user
)
Community.default_community = default

View File

@ -4,9 +4,8 @@ from datetime import datetime
from sqlalchemy import Table, Column, Integer, String, ForeignKey, Boolean, DateTime, JSON as JSONType
from sqlalchemy.orm import relationship, selectinload
from orm import RoleStorage
from orm.base import Base, local_session
from orm.rbac import Role
from orm.rbac import Role, RoleStorage
from orm.topic import Topic
import asyncio
@ -62,6 +61,20 @@ class User(Base):
roles = relationship(lambda: Role, secondary=UserRole.__tablename__)
topics = relationship(lambda: Topic, secondary=UserTopics)
old_id: str = Column(String, nullable = True)
@staticmethod
def init_table():
with local_session() as session:
default = session.query(User).filter(User.slug == "default").first()
if not default:
default = User.create(
id = 0,
email = "discours@discours.io",
username = "discours",
slug = "default"
)
User.default_user = default
async def get_permission(self):
scope = {}