Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # View for the user authentication
- def oauth2callback(request):
- flow = client.flow_from_clientsecrets('/var/www/credentials/client_secrets.json', scope='https://www.googleapis.com/auth/drive', redirect_uri='http://drivepython.10.0.2.186.xip.io:8020/oauth2callback')
- if 'code' not in request.GET:
- auth_uri = flow.step1_get_authorize_url()
- return redirect(auth_uri)
- else:
- auth_code = request.GET.get('code')
- credentials = flow.step2_exchange(auth_code)
- request.session['credentials'] = credentials.to_json()
- return redirect("http://drivepython.10.0.2.186.xip.io:8020/scenario/"+scen_id)
- # View for create new File
- def new(request):
- credentials = client.OAuth2Credentials.from_json(request.session['credentials'])
- http_auth = credentials.authorize(httplib2.Http())
- drive_service = discovery.build('drive', 'v3', http_auth)
- if 'folder_id' in request.GET:
- folder_id = request.GET.get('folder_id')
- else:
- folder_id = 'root'
- # Metadata of the new file to create
- file_metadata = {
- 'mimeType' : 'application/vnd.google-apps.'+request.GET.get('type'),
- 'parents': [ folder_id ]
- }
- # Create New File
- file = drive_service.files().create(body=file_metadata, fields='id, webViewLink').execute()
- file_url = file.get("webViewLink")
- # Obtain Updated List of Files
- files = drive_service.files().list(q="'{0}' in parents".format(folder_id), fields="nextPageToken, files(id, name, mimeType, trashed, webViewLink, fileExtension)").execute()
- items = files.get('files', [])
- if request.GET.get('folder_id'):
- # Render view to create a file into a Folder
- student_id = get_student_id(request)
- try:
- scenario = get_scenarios()[scen_id]
- except KeyError:
- raise Http404
- usage_id = scenario.usage_id
- runtime = WorkbenchRuntime(student_id)
- block = runtime.get_block(usage_id)
- render_context = {
- 'activate_block_id': request.GET.get('activate_block_id', None)
- }
- frag = block.render('student_view', render_context)
- return render_to_response('drivepy/folder.html', {
- "folder_id": folder_id,
- "file_url": request.GET.get('file_url'),
- 'head_html': frag.head_html(),
- 'foot_html': frag.foot_html(),
- 'files': items
- })
- return redirect('http://drivepython.10.0.2.186.xip.io:8020/scenario/'+scen_id, file_url=file_url)
- # View for obtain the files of a Folder
- def folder(request):
- folder_id = request.GET.get('id')
- folder_name = request.GET.get('name')
- credentials = client.OAuth2Credentials.from_json(request.session['credentials'])
- http_auth = credentials.authorize(httplib2.Http())
- drive_service = discovery.build('drive', 'v3', http_auth)
- files = drive_service.files().list(q="'{0}' in parents".format(folder_id), fields="nextPageToken, files(id, name, mimeType, trashed, webViewLink, fileExtension)").execute()
- items = files.get('files', [])
- student_id = get_student_id(request)
- try:
- scenario = get_scenarios()[scen_id]
- except KeyError:
- raise Http404
- usage_id = scenario.usage_id
- runtime = WorkbenchRuntime(student_id)
- block = runtime.get_block(usage_id)
- render_context = {
- 'activate_block_id': request.GET.get('activate_block_id', None)
- }
- frag = block.render('student_view', render_context)
- return render_to_response('drivepy/folder.html', {
- "files": items,
- "folder_name": folder_name,
- "folder_id": folder_id,
- "file_url": request.GET.get('file_url'),
- 'head_html': frag.head_html(),
- 'foot_html': frag.foot_html(),
- 'files': items
- })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement