mirror of
https://github.com/HamzaSha1/zod-backend.git
synced 2025-07-15 10:05:21 +00:00
60 lines
2.2 KiB
Python
60 lines
2.2 KiB
Python
"""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
|