46 lines
925 B
Python
46 lines
925 B
Python
__author__ = 'RemiZOffAlex'
|
||
__email__ = 'remizoffalex@mail.ru'
|
||
|
||
import logging
|
||
|
||
from .. import lib, models
|
||
|
||
|
||
log = logging.getLogger(__name__)
|
||
|
||
|
||
def tag_as_dict(
|
||
tag: models.Tag,
|
||
fields: list = ['id', 'name']
|
||
):
|
||
"""Тег в словарь
|
||
"""
|
||
def field_pages(tag):
|
||
# Теги
|
||
result = []
|
||
for tagLink in tag.tags:
|
||
newTag = tagLink.tag.as_dict()
|
||
result.append(newTag)
|
||
return result
|
||
|
||
def field_user(tag):
|
||
# Пользователь
|
||
return tag.user.as_dict()
|
||
|
||
funcs = {
|
||
'pages': field_pages,
|
||
'user': field_user,
|
||
}
|
||
result = {}
|
||
|
||
for column in tag.__table__.columns:
|
||
if column.name in fields:
|
||
result[column.name] = getattr(tag, column.name)
|
||
|
||
for field in fields:
|
||
if field in funcs:
|
||
func = funcs[field]
|
||
result[field] = func(tag)
|
||
|
||
return result
|