74 lines
1.9 KiB
Python
74 lines
1.9 KiB
Python
# -*- coding: utf-8 -*-
|
|
# vi:si:et:sw=4:sts=4:ts=4
|
|
|
|
from oxtornado import actions
|
|
from . import models
|
|
from . import query
|
|
|
|
|
|
import logging
|
|
logger = logging.getLogger(__name__)
|
|
|
|
|
|
def editTitle(data):
|
|
'''
|
|
takes {
|
|
id string
|
|
sortname string
|
|
}
|
|
'''
|
|
response = {}
|
|
'''
|
|
item = models.Item.get(data['id'])
|
|
item.sortname = unicodedata.normalize('NFKD', data['sortname'])
|
|
item.save()
|
|
response['name'] = item.name
|
|
response['sortname'] = item.sortname
|
|
'''
|
|
return response
|
|
actions.register(editTitle)
|
|
|
|
def findTitles(data):
|
|
'''
|
|
takes {
|
|
query {
|
|
conditions [{}]
|
|
operator string
|
|
}
|
|
keys [string]
|
|
sort [{}]
|
|
range [int, int]
|
|
}
|
|
'''
|
|
response = {}
|
|
#q = query.parse(data)
|
|
q = {
|
|
'qs': models.Item.query,
|
|
}
|
|
if 'range' in data:
|
|
q['range'] = data['range']
|
|
|
|
if 'position' in data:
|
|
pass
|
|
#ids = [i.id for i in q['qs'].options(load_only('id'))]
|
|
#response['position'] = utils.get_positions(ids, [data['qs'][0].id])[0]
|
|
print('fixme', data)
|
|
elif 'positions' in data:
|
|
#ids = [i.id for i in q['qs'].options(load_only('id'))]
|
|
#response['positions'] = utils.get_positions(ids, data['positions'])
|
|
response['positions'] = []
|
|
print('fixme', data)
|
|
elif 'keys' in data:
|
|
response['items'] = []
|
|
for i in q['qs'][q['range'][0]:q['range'][1]]:
|
|
j = {}
|
|
for key in (data['keys'] or ['title', 'sorttitle']):
|
|
if key == 'title':
|
|
j[key] = i.info.get(key)
|
|
elif key == 'sorttitle':
|
|
j[key] = i.sort[0].title
|
|
response['items'].append(j)
|
|
else:
|
|
response['items'] = q['qs'].count()
|
|
return response
|
|
actions.register(findTitles)
|