58 lines
1.7 KiB
Python
58 lines
1.7 KiB
Python
import os
|
|
|
|
import logging
|
|
|
|
import settings
|
|
from sync import untouched
|
|
from sync.core import Sync
|
|
from sync.data import Provider
|
|
from sync.models.Article import Article
|
|
from sync.models.Person import Person
|
|
|
|
from utils.text.transform import url_encode_text
|
|
|
|
logger = logging.getLogger(settings.name + '.Article')
|
|
|
|
|
|
class SyncArticle(Sync):
|
|
async def run(self):
|
|
logger.info('Checking for update')
|
|
|
|
documents = await Article.scan(self.provider)
|
|
documents_id = [doc.id for doc in documents]
|
|
# self.validate(documents)
|
|
logger.info('Found {} Item(s)'.format(len(documents)))
|
|
|
|
# SKIP UNTOUCHED DOCUMENTS
|
|
documents = await untouched(documents)
|
|
logger.info('Changed {} Items(s)'.format(len(documents)))
|
|
|
|
# UPDATING
|
|
if settings.update_enabled:
|
|
if len(documents) == 0:
|
|
logger.info('No Items to update')
|
|
|
|
for document in documents:
|
|
logger.info('Updating Item {}'.format(document.id))
|
|
|
|
await document.build(
|
|
sizes=settings.image_sizes,
|
|
)
|
|
await document.save()
|
|
|
|
logger.info('Updated Item {}'.format(document.id))
|
|
|
|
# DELETING
|
|
if settings.delete_enabled:
|
|
documents_delete = list(self.query({'id': {'$nin': documents_id}}))
|
|
|
|
if len(documents_delete) == 0:
|
|
logger.info('No Items to delete')
|
|
else:
|
|
for document in documents_delete:
|
|
logger.info('Deleting Item {}'.format(document['id']))
|
|
|
|
q = {'_id': document['_id']}
|
|
self.delete(q)
|
|
|
|
# await self.clean() |