"""Utiles file of guardian""" """Django import""" import oss2 """Import setting""" from django.conf import settings """Import tempfile""" import tempfile # Import date time module's function from datetime import datetime, time # Import real time client module import ntplib # import Number constant from base.constants import NUMBER # Define upload image on # ali baba cloud # firstly save image # in temporary file # then check bucket name # then upload on ali baba # bucket and reform the image url""" # fetch real time data without depend on system time # convert time delta into date time object def upload_image_to_alibaba(image, filename): """upload image on oss alibaba bucket""" # Save the image object to a temporary file with tempfile.NamedTemporaryFile(delete=False) as temp_file: """write image in temporary file""" temp_file.write(image.read()) """auth of bucket""" auth = oss2.Auth(settings.ALIYUN_OSS_ACCESS_KEY_ID, settings.ALIYUN_OSS_ACCESS_KEY_SECRET) """fetch bucket details""" bucket = oss2.Bucket(auth, settings.ALIYUN_OSS_ENDPOINT, settings.ALIYUN_OSS_BUCKET_NAME) # Upload the temporary file to Alibaba OSS bucket.put_object_from_file(filename, temp_file.name) """create perfect url for image""" new_filename = filename.replace(' ', '%20') return f"https://{settings.ALIYUN_OSS_BUCKET_NAME}.{settings.ALIYUN_OSS_ENDPOINT}/{new_filename}" def real_time(): # Fetch real time. # time is not depend on system time # Get the current datetime ntp_client = ntplib.NTPClient() ntp_server = 'pool.ntp.org' response = ntp_client.request(ntp_server) current_datetime = datetime.fromtimestamp(response.tx_time) return current_datetime def convert_timedelta_into_datetime(time_difference): # convert timedelta into datetime format hours = time_difference.seconds // NUMBER['thirty_six_hundred'] minutes = (time_difference.seconds // NUMBER['sixty']) % NUMBER['sixty'] seconds = time_difference.seconds % NUMBER['sixty'] microseconds = time_difference.microseconds # Create a new time object with the extracted time components time_only = time(hours, minutes, seconds, microseconds) return time_only