vsmdvic commited on
Commit
c7c15d1
·
verified ·
1 Parent(s): 5f35ed2

Upload app.py

Browse files
Files changed (1) hide show
  1. app.py +12 -11
app.py CHANGED
@@ -74,19 +74,17 @@ def drive_headers():
74
  return {"Authorization": f"Bearer {get_drive_token()}"}
75
 
76
  def get_or_create_folder(name, parent_id):
77
- # Sanitize folder name
78
  safe_name = name.strip().replace("/", "-").replace("\\", "-") or "general"
79
  q = f"name='{safe_name}' and '{parent_id}' in parents and mimeType='application/vnd.google-apps.folder' and trashed=false"
80
  r = requests.get("https://www.googleapis.com/drive/v3/files",
81
- params={"q": q, "fields": "files(id,name)"},
82
  headers=drive_headers(), timeout=15)
83
- resp = r.json()
84
- files = resp.get("files", [])
85
  if files:
86
  print(f"[FOLDER] Found '{safe_name}' → {files[0]['id']}")
87
  return files[0]["id"]
88
- # Creeaza folder nou
89
  r2 = requests.post("https://www.googleapis.com/drive/v3/files",
 
90
  headers={**drive_headers(), "Content-Type": "application/json"},
91
  json={"name": safe_name, "mimeType": "application/vnd.google-apps.folder", "parents": [parent_id]},
92
  timeout=15)
@@ -144,7 +142,7 @@ def drive_upload():
144
 
145
  token = get_drive_token()
146
  r = requests.post(
147
- "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart&fields=id,name,size",
148
  headers={
149
  "Authorization": f"Bearer {token}",
150
  "Content-Type": f"multipart/related; boundary={boundary}",
@@ -176,19 +174,20 @@ def drive_list():
176
  try:
177
  elev_vpass = request.args.get("elevId", "")
178
  materie = request.args.get("materieId", "")
 
179
  q_elev = f"name='{elev_vpass}' and '{DRIVE_FOLDER_ID}' in parents and mimeType='application/vnd.google-apps.folder' and trashed=false"
180
  r1 = requests.get("https://www.googleapis.com/drive/v3/files",
181
- params={"q": q_elev, "fields": "files(id)"}, headers=drive_headers(), timeout=15)
182
  ef = r1.json().get("files", [])
183
  if not ef: return jsonify({"files": []})
184
  q_mat = f"name='{materie}' and '{ef[0]['id']}' in parents and mimeType='application/vnd.google-apps.folder' and trashed=false"
185
  r2 = requests.get("https://www.googleapis.com/drive/v3/files",
186
- params={"q": q_mat, "fields": "files(id)"}, headers=drive_headers(), timeout=15)
187
  mf = r2.json().get("files", [])
188
  if not mf: return jsonify({"files": []})
189
  q_files = f"'{mf[0]['id']}' in parents and trashed=false"
190
  r3 = requests.get("https://www.googleapis.com/drive/v3/files",
191
- params={"q": q_files, "fields": "files(id,name,size,mimeType,createdTime,description)"},
192
  headers=drive_headers(), timeout=15)
193
  return jsonify({"files": r3.json().get("files", [])})
194
  except Exception as e:
@@ -200,9 +199,10 @@ def drive_list():
200
  def drive_download(file_id):
201
  try:
202
  r_meta = requests.get(f"https://www.googleapis.com/drive/v3/files/{file_id}",
203
- params={"fields": "name,mimeType"}, headers=drive_headers(), timeout=15)
 
204
  meta = r_meta.json()
205
- r_file = requests.get(f"https://www.googleapis.com/drive/v3/files/{file_id}?alt=media",
206
  headers=drive_headers(), timeout=120, stream=True)
207
  headers = {
208
  "Content-Disposition": f"attachment; filename=\"{meta.get('name','file')}\"",
@@ -217,6 +217,7 @@ def drive_download(file_id):
217
  def drive_delete(file_id):
218
  try:
219
  r = requests.delete(f"https://www.googleapis.com/drive/v3/files/{file_id}",
 
220
  headers=drive_headers(), timeout=30)
221
  if r.status_code in (200, 204, 404):
222
  return jsonify({"ok": True})
 
74
  return {"Authorization": f"Bearer {get_drive_token()}"}
75
 
76
  def get_or_create_folder(name, parent_id):
 
77
  safe_name = name.strip().replace("/", "-").replace("\\", "-") or "general"
78
  q = f"name='{safe_name}' and '{parent_id}' in parents and mimeType='application/vnd.google-apps.folder' and trashed=false"
79
  r = requests.get("https://www.googleapis.com/drive/v3/files",
80
+ params={"q": q, "fields": "files(id,name)", "supportsAllDrives": "true", "includeItemsFromAllDrives": "true"},
81
  headers=drive_headers(), timeout=15)
82
+ files = r.json().get("files", [])
 
83
  if files:
84
  print(f"[FOLDER] Found '{safe_name}' → {files[0]['id']}")
85
  return files[0]["id"]
 
86
  r2 = requests.post("https://www.googleapis.com/drive/v3/files",
87
+ params={"supportsAllDrives": "true"},
88
  headers={**drive_headers(), "Content-Type": "application/json"},
89
  json={"name": safe_name, "mimeType": "application/vnd.google-apps.folder", "parents": [parent_id]},
90
  timeout=15)
 
142
 
143
  token = get_drive_token()
144
  r = requests.post(
145
+ "https://www.googleapis.com/upload/drive/v3/files?uploadType=multipart&fields=id,name,size&supportsAllDrives=true",
146
  headers={
147
  "Authorization": f"Bearer {token}",
148
  "Content-Type": f"multipart/related; boundary={boundary}",
 
174
  try:
175
  elev_vpass = request.args.get("elevId", "")
176
  materie = request.args.get("materieId", "")
177
+ PARAMS_BASE = {"supportsAllDrives": "true", "includeItemsFromAllDrives": "true"}
178
  q_elev = f"name='{elev_vpass}' and '{DRIVE_FOLDER_ID}' in parents and mimeType='application/vnd.google-apps.folder' and trashed=false"
179
  r1 = requests.get("https://www.googleapis.com/drive/v3/files",
180
+ params={**PARAMS_BASE, "q": q_elev, "fields": "files(id)"}, headers=drive_headers(), timeout=15)
181
  ef = r1.json().get("files", [])
182
  if not ef: return jsonify({"files": []})
183
  q_mat = f"name='{materie}' and '{ef[0]['id']}' in parents and mimeType='application/vnd.google-apps.folder' and trashed=false"
184
  r2 = requests.get("https://www.googleapis.com/drive/v3/files",
185
+ params={**PARAMS_BASE, "q": q_mat, "fields": "files(id)"}, headers=drive_headers(), timeout=15)
186
  mf = r2.json().get("files", [])
187
  if not mf: return jsonify({"files": []})
188
  q_files = f"'{mf[0]['id']}' in parents and trashed=false"
189
  r3 = requests.get("https://www.googleapis.com/drive/v3/files",
190
+ params={**PARAMS_BASE, "q": q_files, "fields": "files(id,name,size,mimeType,createdTime,description)"},
191
  headers=drive_headers(), timeout=15)
192
  return jsonify({"files": r3.json().get("files", [])})
193
  except Exception as e:
 
199
  def drive_download(file_id):
200
  try:
201
  r_meta = requests.get(f"https://www.googleapis.com/drive/v3/files/{file_id}",
202
+ params={"fields": "name,mimeType", "supportsAllDrives": "true"},
203
+ headers=drive_headers(), timeout=15)
204
  meta = r_meta.json()
205
+ r_file = requests.get(f"https://www.googleapis.com/drive/v3/files/{file_id}?alt=media&supportsAllDrives=true",
206
  headers=drive_headers(), timeout=120, stream=True)
207
  headers = {
208
  "Content-Disposition": f"attachment; filename=\"{meta.get('name','file')}\"",
 
217
  def drive_delete(file_id):
218
  try:
219
  r = requests.delete(f"https://www.googleapis.com/drive/v3/files/{file_id}",
220
+ params={"supportsAllDrives": "true"},
221
  headers=drive_headers(), timeout=30)
222
  if r.status_code in (200, 204, 404):
223
  return jsonify({"ok": True})