""" web_utils file """ import base64 import datetime from base.constants import ARTICLE_CARD_IMAGE_FOLDER, DATE_FORMAT from guardian.utils import upload_image_to_alibaba, upload_base64_image_to_alibaba def pop_id(data): """ to pop id, not in use :param data: :return: data """ data.pop('id') if 'id' in data else data return data def get_image_url(data): """ to get image url :param data: :return: image url """ if 'image_url' in data and 'http' in data['image_url']: if 'image_name' in data: data.pop('image_name') return data['image_url'] elif 'image_url' in data and type(data['image_url']) == str and data['image_url'].startswith('data:image'): base64_image = base64.b64decode(data.get('image_url').split(',')[1]) image_name = data.pop('image_name') if 'image_name' in data else f"{data['title']}.jpg" filename = f"{ARTICLE_CARD_IMAGE_FOLDER}/{image_name}" # upload image on ali baba image_url = upload_base64_image_to_alibaba(base64_image, filename) return image_url elif 'image' in data and data['image'] is not None: image = data.pop('image') filename = f"{ARTICLE_CARD_IMAGE_FOLDER}/{image.name}" # upload image on ali baba image_url = upload_image_to_alibaba(image, filename) return image_url def get_dates(start_date, end_date): """ to get start and end date :param start_date: format (yyyy-mm-dd) :param end_date: format (yyyy-mm-dd) :return: start and end date """ if start_date and end_date: start_date = datetime.datetime.strptime(start_date, DATE_FORMAT).date() end_date = datetime.datetime.strptime(end_date, DATE_FORMAT).date() else: end_date = datetime.date.today() start_date = end_date - datetime.timedelta(days=6) return start_date, end_date