remove unused per isbn metadata table and related apis
This commit is contained in:
parent
8267fa8b39
commit
6f4672d296
6 changed files with 14 additions and 133 deletions
|
|
@ -263,40 +263,6 @@ def findMetadata(data):
|
|||
actions.register(findMetadata)
|
||||
|
||||
|
||||
def getMetadata(data):
|
||||
'''
|
||||
takes {
|
||||
key: value
|
||||
includeEdits: boolean
|
||||
}
|
||||
key can be one of the supported identifiers: isbn10, isbn13, oclc, olid,...
|
||||
'''
|
||||
if 'includeEdits' in data:
|
||||
include_edits = data.pop('includeEdits')
|
||||
else:
|
||||
include_edits = False
|
||||
key, value = next(iter(data.items()))
|
||||
value = cleanup_id(key, value)
|
||||
response = meta.lookup(key, value)
|
||||
if include_edits:
|
||||
response.update(models.Metadata.load(key, value))
|
||||
for key in [k['id'] for k in settings.config['itemKeys'] if isinstance(k['type'], list)]:
|
||||
if key in response and not isinstance(response[key], list):
|
||||
response[key] = [response[key]] if response[key] else []
|
||||
return response
|
||||
actions.register(getMetadata)
|
||||
|
||||
|
||||
def resetMetadata(data):
|
||||
item = models.Item.get(data['id'])
|
||||
if item and 'primaryid' in item.meta:
|
||||
meta = models.Metadata.get(*item.meta['primaryid'])
|
||||
if meta:
|
||||
meta.reset()
|
||||
return {}
|
||||
actions.register(resetMetadata)
|
||||
|
||||
|
||||
def download(data):
|
||||
'''
|
||||
takes {
|
||||
|
|
|
|||
|
|
@ -760,81 +760,6 @@ class Transfer(db.Model):
|
|||
state.db.session.add(self)
|
||||
state.db.session.commit()
|
||||
|
||||
class Metadata(db.Model):
|
||||
__tablename__ = 'metadata'
|
||||
|
||||
created = sa.Column(sa.DateTime())
|
||||
modified = sa.Column(sa.DateTime())
|
||||
|
||||
id = sa.Column(sa.Integer(), primary_key=True)
|
||||
|
||||
key = sa.Column(sa.String(256))
|
||||
value = sa.Column(sa.String(256))
|
||||
|
||||
data = sa.Column(MutableDict.as_mutable(sa.PickleType(pickler=json_pickler)))
|
||||
|
||||
def __repr__(self):
|
||||
return '='.join([self.key, self.value])
|
||||
|
||||
@property
|
||||
def timestamp(self):
|
||||
return utils.datetime2ts(self.modified)
|
||||
|
||||
@classmethod
|
||||
def get(cls, key, value):
|
||||
return cls.query.filter_by(key=key, value=value).first()
|
||||
|
||||
@classmethod
|
||||
def get_or_create(cls, key, value):
|
||||
m = cls.get(key, value)
|
||||
if not m:
|
||||
m = cls(key=key, value=value)
|
||||
m.created = datetime.utcnow()
|
||||
m.data = {}
|
||||
m.save()
|
||||
return m
|
||||
|
||||
def save(self):
|
||||
self.modified = datetime.utcnow()
|
||||
state.db.session.add(self)
|
||||
state.db.session.commit()
|
||||
|
||||
def reset(self):
|
||||
user = state.user()
|
||||
Changelog.record(user, 'resetmeta', self.key, self.value)
|
||||
state.db.session.delete(self)
|
||||
state.db.session.commit()
|
||||
self.update_items()
|
||||
|
||||
def edit(self, data, record=True):
|
||||
changed = {}
|
||||
for key in data:
|
||||
if key == 'id':
|
||||
continue
|
||||
if data[key] != self.data.get(key):
|
||||
self.data[key] = data[key]
|
||||
changed[key] = data[key]
|
||||
if changed:
|
||||
self.save()
|
||||
if record:
|
||||
user = state.user()
|
||||
Changelog.record(user, 'editmeta', self.key, self.value, changed)
|
||||
return changed
|
||||
|
||||
def update_items(self):
|
||||
for f in Find.query.filter_by(key=self.key, value=self.value):
|
||||
if f.item:
|
||||
f.item.update()
|
||||
|
||||
@classmethod
|
||||
def load(self, key, value):
|
||||
m = self.get(key, value)
|
||||
if m:
|
||||
if 'id' in m.data:
|
||||
del m.data['id']
|
||||
return m.data
|
||||
return {}
|
||||
|
||||
def remove_unused_names():
|
||||
used = list(set(
|
||||
get_sort_name(a)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue