Esempio n. 1
0
def search(request, string):
    template = loader.get_template('search.html')
    drive_services = DriveCredential.objects.filter(user_id=request.user.id)
    file_list = []
    root_ids = []
    cred_list = [(x.token, x.credentials) for x in drive_services]
    for i in cred_list:
        file_list += (get_file_list(auth(*i)))
        root_ids.append(get_root_id(auth(*i)))
    results = find(string, file_list)
    context = {
        'file_list': results,
    }
    return HttpResponse(template.render(context))
Esempio n. 2
0
def index(request):
    template = loader.get_template('main.html')

    drive_service = auth('manager/tokens/token001.json',
                         'manager/credentials/credentials001.json')

    file_list = get_file_list(drive_service)
    context = {'file_list': file_list}
    return HttpResponse(template.render(context))
Esempio n. 3
0
def create_drive(request):
    if request.method == 'POST':
        form = DriveDetailForm(request.POST)
        if form.is_valid():
            if auth(form['token'].value(), form['credentials'].value()):
                root_id = get_root_id(
                    auth(form['token'].value(), form['credentials'].value()))
                user = User.objects.get(pk=request.user.id)
                new_drive = DriveCredential.create(user, form['email'].value(),
                                                   root_id,
                                                   form['token'].value(),
                                                   form['credentials'].value())
                new_drive.save()
                return redirect('/drives/')
            else:
                raise ValueError("token and credentials are invalid")
    else:
        form = DriveDetailForm()
    return render(request, 'drive_details.html', {'form': form})
Esempio n. 4
0
def download(request, file_id):
    template = loader.get_template('contents.html')
    drive_services = DriveCredential.objects.filter(user_id=request.user.id)
    file_list = []
    root_ids = []
    cred_list = [(x.token, x.credentials) for x in drive_services]

    for i in cred_list:
        file_list += (get_file_list(auth(*i)))

    file = [x for x in file_list if x['id'] == file_id]
    print(file[0]['owners'][0]['emailAddress'])
    for i in cred_list:
        if (get_user(auth(*i)) == file[0]['owners'][0]['emailAddress']):
            drive = auth(*i)
    request, file_name = download_file(file_id, file_list, drive)
    response = HttpResponse(request.execute())
    response['Content-Disposition'] = 'attachement; filename=' + file_name

    return response
Esempio n. 5
0
def upload_test(request):
    drive_services = DriveCredential.objects.get(user_id=2, pk=2)
    drive = auth(drive_services.token, drive_services.credentials)
    if request.method == 'POST':
        uploaded_file = request.FILES['document']
        fs = FileSystemStorage()
        fs.save(uploaded_file.name, uploaded_file)
        media = MediaFileUpload(BASE_DIR + '/tmp/' + uploaded_file.name)
        file_metadata = {'name': uploaded_file.name}
        # print(BASE_DIR)
        drive.files().create(body=file_metadata, media_body=media,
                             fields='id').execute()
        fs.delete(uploaded_file.name)
    return render(request, 'upload_test.html')
Esempio n. 6
0
def drive_detail(request, drive_id):
    drive_service = DriveCredential.objects.get(user_id=request.user.id,
                                                pk=drive_id)
    if request.method == 'POST':
        form = DriveDetailForm(request.POST)
        if form.is_valid():
            root_id = get_root_id(
                auth(form['token'].value(), form['credentials'].value()))
            drive_service.email = form['email'].value()
            drive_service.token = form['token'].value()
            drive_service.credentials = form['credentials'].value()
            drive_service.root_id = root_id
            drive_service.save()
            return redirect('/drives/')
    else:
        form = DriveDetailForm(
            initial={
                'email': drive_service.email,
                'token': drive_service.token,
                'credentials': drive_service.credentials
            })

    return render(request, 'drive_details.html', {'form': form})
Esempio n. 7
0
def contents(request, parent_id):
    drive_services = DriveCredential.objects.filter(user_id=request.user.id)
    file_list = []
    root_ids = []
    drives = []
    cred_list = [(x.token, x.credentials) for x in drive_services]
    page = request.GET.get('page', 1)

    for i in cred_list:
        file_list += (get_file_list(auth(*i)))
        root_ids.append(get_root_id(auth(*i)))

    file = get_file(parent_id, file_list)
    if parent_id != 'all':
        if not file:
            cred = DriveCredential.objects.get(user_id=request.user.id,
                                               root_id=parent_id)
            drive = auth(cred.token, cred.credentials)
            parent = parent_id
        else:
            for i in cred_list:
                if (get_user(auth(*i)) == file['owners'][0]['emailAddress']):
                    drive = auth(*i)
            parent = file['id']

    if request.method == 'POST':
        if 'upload' in request.POST:
            uploaded_file = request.FILES['document']
            fs = FileSystemStorage()
            fs.save(uploaded_file.name, uploaded_file)
            media = MediaFileUpload(BASE_DIR + '/tmp/' + uploaded_file.name)
            file_metadata = {'name': uploaded_file.name, 'parents': [parent]}
            # print(BASE_DIR)
            drive.files().create(body=file_metadata,
                                 media_body=media,
                                 fields='id').execute()
            fs.delete(uploaded_file.name)
            file_list = []
            for i in cred_list:
                file_list += (get_file_list(auth(*i)))
                root_ids.append(get_root_id(auth(*i)))
        elif 'search' in request.POST:
            string = request.POST.get('string')
            print(request.POST)
            return redirect('/search/' + string)

    # print(file_list)
    if parent_id != 'all':
        cleared = [
            x for x in file_list if 'parents' in x if parent_id in x['parents']
        ]
        print('not all')
    else:
        cleared = [x for x in file_list]
        print('all')
    # print(cleared)
    paginator = Paginator(cleared, 10)
    try:
        files = paginator.page(page)
    except PageNotAnInteger:
        files = paginator.page(1)
    except EmptyPage:
        files = paginator.page(paginator.num_pages)
    # print(files)
    for i in files:
        print(i['name'])
    context = {
        'parent_id': parent_id,
        'file_list': cleared,
        'root_ids': root_ids,
        'file': file,
        'files': files,
    }
    # print(file_list)
    return render(request, 'contents.html', context)