Advertisement
eduardoperezl

Methods Views

Jun 2nd, 2016
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.81 KB | None | 0 0
  1. # View for the user authentication
  2. def oauth2callback(request):
  3.     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')
  4.     if 'code' not in request.GET:        
  5.         auth_uri = flow.step1_get_authorize_url()
  6.         return redirect(auth_uri)
  7.     else:
  8.         auth_code = request.GET.get('code')
  9.         credentials = flow.step2_exchange(auth_code)
  10.         request.session['credentials'] = credentials.to_json()
  11.         return redirect("http://drivepython.10.0.2.186.xip.io:8020/scenario/"+scen_id)
  12.  
  13. # View for create new File
  14. def new(request):
  15.     credentials = client.OAuth2Credentials.from_json(request.session['credentials'])
  16.     http_auth = credentials.authorize(httplib2.Http())
  17.     drive_service = discovery.build('drive', 'v3', http_auth)
  18.     if 'folder_id' in request.GET:
  19.         folder_id = request.GET.get('folder_id')
  20.     else:
  21.         folder_id = 'root'
  22.  
  23.     # Metadata of the new file to create
  24.     file_metadata = {
  25.     'mimeType' : 'application/vnd.google-apps.'+request.GET.get('type'),
  26.     'parents': [ folder_id ]
  27.     }
  28.  
  29.     # Create New File
  30.     file = drive_service.files().create(body=file_metadata, fields='id, webViewLink').execute()
  31.     file_url = file.get("webViewLink")
  32.  
  33.     # Obtain Updated List of Files
  34.     files = drive_service.files().list(q="'{0}' in parents".format(folder_id), fields="nextPageToken, files(id, name, mimeType, trashed, webViewLink, fileExtension)").execute()
  35.     items = files.get('files', [])
  36.     if request.GET.get('folder_id'):
  37.         # Render view to create a file into a Folder        
  38.         student_id = get_student_id(request)
  39.         try:
  40.             scenario = get_scenarios()[scen_id]
  41.         except KeyError:
  42.             raise Http404
  43.  
  44.         usage_id = scenario.usage_id
  45.         runtime = WorkbenchRuntime(student_id)
  46.         block = runtime.get_block(usage_id)
  47.         render_context = {
  48.             'activate_block_id': request.GET.get('activate_block_id', None)
  49.         }
  50.         frag = block.render('student_view', render_context)
  51.  
  52.         return render_to_response('drivepy/folder.html', {
  53.             "folder_id": folder_id,
  54.             "file_url": request.GET.get('file_url'),
  55.             'head_html': frag.head_html(),
  56.             'foot_html': frag.foot_html(),
  57.             'files': items
  58.         })
  59.     return redirect('http://drivepython.10.0.2.186.xip.io:8020/scenario/'+scen_id, file_url=file_url)
  60.  
  61. # View for obtain the files of a Folder
  62. def folder(request):
  63.     folder_id = request.GET.get('id')
  64.     folder_name = request.GET.get('name')
  65.     credentials = client.OAuth2Credentials.from_json(request.session['credentials'])  
  66.     http_auth = credentials.authorize(httplib2.Http())
  67.     drive_service = discovery.build('drive', 'v3', http_auth)
  68.     files = drive_service.files().list(q="'{0}' in parents".format(folder_id), fields="nextPageToken, files(id, name, mimeType, trashed, webViewLink, fileExtension)").execute()
  69.     items = files.get('files', [])
  70.  
  71.     student_id = get_student_id(request)
  72.     try:
  73.         scenario = get_scenarios()[scen_id]
  74.     except KeyError:
  75.         raise Http404
  76.  
  77.     usage_id = scenario.usage_id
  78.     runtime = WorkbenchRuntime(student_id)
  79.     block = runtime.get_block(usage_id)
  80.     render_context = {
  81.         'activate_block_id': request.GET.get('activate_block_id', None)
  82.     }
  83.     frag = block.render('student_view', render_context)
  84.  
  85.     return render_to_response('drivepy/folder.html', {
  86.         "files": items,
  87.         "folder_name": folder_name,
  88.         "folder_id": folder_id,
  89.         "file_url": request.GET.get('file_url'),
  90.         'head_html': frag.head_html(),
  91.         'foot_html': frag.foot_html(),
  92.         'files': items
  93.     })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement