File size: 4,759 Bytes
e729f97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
b8abf64
 
 
 
 
 
 
 
 
 
 
 
 
 
e729f97
 
b8abf64
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
e729f97
b8abf64
e729f97
b8abf64
e729f97
b8abf64
e729f97
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a05f4a6
e729f97
a05f4a6
e729f97
 
 
 
 
 
a05f4a6
e729f97
 
 
 
 
 
 
7d58ebe
 
 
 
 
 
a05f4a6
 
 
e729f97
a05f4a6
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
import os, json, re
from googleapiclient.discovery import build
from googleapiclient.http import MediaFileUpload
from google.oauth2 import service_account
import base64
from PIL import Image
from PIL import Image
from io import BytesIO

from vouchervision.general_utils import get_cfg_from_full_path


def setup_streamlit_config(dir_home):
    # Define the directory path and filename
    dir_path = os.path.join(dir_home, ".streamlit")
    file_path = os.path.join(dir_path, "config.toml")

    # Check if directory exists, if not create it
    if not os.path.exists(dir_path):
        os.makedirs(dir_path)
    
    # Create or modify the file with the provided content
    config_content = f"""
    [theme]
    base = "dark"
    primaryColor = "#00ff00"

    [server]
    enableStaticServing = false
    runOnSave = true
    port = 8524
    maxUploadSize = 5000
    """

    with open(file_path, "w") as f:
        f.write(config_content.strip())



def save_uploaded_file(directory, img_file, image=None):
    if not os.path.exists(directory):
        os.makedirs(directory)
    # Assuming the uploaded file is an image
    if image is None:
        try:
            with Image.open(img_file) as image:
                full_path = os.path.join(directory, img_file.name)
                image.save(full_path, "JPEG")
            # Return the full path of the saved image
            return full_path
        except:
            with Image.open(os.path.join(directory,img_file)) as image:
                full_path = os.path.join(directory, img_file)
                image.save(full_path, "JPEG")
            # Return the full path of the saved image
            return full_path
    else:
        try:
            full_path = os.path.join(directory, img_file.name)
            image.save(full_path, "JPEG")
            return full_path
        except:
            full_path = os.path.join(directory, img_file)
            image.save(full_path, "JPEG")
            return full_path
    
def save_uploaded_local(directory, img_file, image=None):
    name = img_file.split(os.path.sep)[-1]
    if not os.path.exists(directory):
        os.makedirs(directory)
    
    # Assuming the uploaded file is an image
    if image is None:
        with Image.open(img_file) as image:
            full_path = os.path.join(directory, name)
            image.save(full_path, "JPEG")
        # Return the full path of the saved image
        return os.path.join('uploads_small',name)
    else:
        full_path = os.path.join(directory, name)
        image.save(full_path, "JPEG")
        return os.path.join('.','uploads_small',name)
    
def image_to_base64(img):
    buffered = BytesIO()
    img.save(buffered, format="JPEG")
    return base64.b64encode(buffered.getvalue()).decode()

def check_prompt_yaml_filename(fname):
    # Check if the filename only contains letters, numbers, underscores, and dashes
    pattern = r'^[\w-]+$'
    
    # The \w matches any alphanumeric character and is equivalent to the character class [a-zA-Z0-9_].
    # The hyphen - is literally matched.

    if re.match(pattern, fname):
        return True
    else:
        return False
    
# Function to upload files to Google Drive
def upload_to_drive(filepath, filename):
    # Parse the service account info from the environment variable
    creds_info = os.environ.get('GDRIVE_API')
    if creds_info:
        creds_info = json.loads(creds_info)
        creds = service_account.Credentials.from_service_account_info(
            creds_info, scopes=["https://www.googleapis.com/auth/drive"]
        )
        service = build('drive', 'v3', credentials=creds)

        # Get the folder ID from the environment variable
        folder_id = os.environ.get('GDRIVE_FOLDER_ID')  # Renamed for clarity

        if folder_id:
            file_metadata = {
                'name': filename,
                'parents': [folder_id]
            }

            # Determine the mimetype based on the file extension
            if filename.endswith('.yaml') or filename.endswith('.yml'):
                mimetype = 'application/x-yaml'
            elif filename.endswith('.zip'):
                mimetype = 'application/zip'
            else:
                # Set a default mimetype if desired or handle the unsupported file type
                print("Unsupported file type")
                return None

            # Upload the file
            media = MediaFileUpload(filepath, mimetype=mimetype)
            file = service.files().create(
                body=file_metadata,
                media_body=media,
                fields='id'
            ).execute()
            print(f"Uploaded file with ID: {file.get('id')}")
    else:
        print("GDRIVE_API environment variable not set.")