youjeongsue

init file upload

1 +./vscode
2 +./backend/api/cloud/aws.py
...\ No newline at end of file ...\ No newline at end of file
1 +"""
2 +ASGI config for api project.
3 +
4 +It exposes the ASGI callable as a module-level variable named ``application``.
5 +
6 +For more information on this file, see
7 +https://docs.djangoproject.com/en/3.0/howto/deployment/asgi/
8 +"""
9 +
10 +import os
11 +
12 +from django.core.asgi import get_asgi_application
13 +
14 +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'api.settings')
15 +
16 +application = get_asgi_application()
1 +"""
2 +Django settings for api project.
3 +
4 +Generated by 'django-admin startproject' using Django 3.0.6.
5 +
6 +For more information on this file, see
7 +https://docs.djangoproject.com/en/3.0/topics/settings/
8 +
9 +For the full list of settings and their values, see
10 +https://docs.djangoproject.com/en/3.0/ref/settings/
11 +"""
12 +
13 +import os
14 +
15 +# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
16 +BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
17 +
18 +
19 +# Quick-start development settings - unsuitable for production
20 +# See https://docs.djangoproject.com/en/3.0/howto/deployment/checklist/
21 +
22 +# SECURITY WARNING: keep the secret key used in production secret!
23 +SECRET_KEY = '+ste$ef+eq%n&&f02quxcuk@w6ypz5)pp8gh*$^6*s-@3dvb9d'
24 +
25 +# SECURITY WARNING: don't run with debug turned on in production!
26 +DEBUG = True
27 +
28 +ALLOWED_HOSTS = ['*']
29 +
30 +# Application definition
31 +
32 +INSTALLED_APPS = [
33 + 'django.contrib.admin',
34 + 'django.contrib.auth',
35 + 'django.contrib.contenttypes',
36 + 'django.contrib.sessions',
37 + 'django.contrib.messages',
38 + 'django.contrib.staticfiles',
39 + 'cloud',
40 + 'rest_framework'
41 +]
42 +
43 +MIDDLEWARE = [
44 + 'django.middleware.security.SecurityMiddleware',
45 + 'django.contrib.sessions.middleware.SessionMiddleware',
46 + 'django.middleware.common.CommonMiddleware',
47 + 'django.middleware.csrf.CsrfViewMiddleware',
48 + 'django.contrib.auth.middleware.AuthenticationMiddleware',
49 + 'django.contrib.messages.middleware.MessageMiddleware',
50 + 'django.middleware.clickjacking.XFrameOptionsMiddleware',
51 +]
52 +
53 +ROOT_URLCONF = 'api.urls'
54 +
55 +TEMPLATES = [
56 + {
57 + 'BACKEND': 'django.template.backends.django.DjangoTemplates',
58 + 'DIRS': [],
59 + 'APP_DIRS': True,
60 + 'OPTIONS': {
61 + 'context_processors': [
62 + 'django.template.context_processors.debug',
63 + 'django.template.context_processors.request',
64 + 'django.contrib.auth.context_processors.auth',
65 + 'django.contrib.messages.context_processors.messages',
66 + ],
67 + },
68 + },
69 +]
70 +
71 +WSGI_APPLICATION = 'api.wsgi.application'
72 +
73 +
74 +# Database
75 +# https://docs.djangoproject.com/en/3.0/ref/settings/#databases
76 +
77 +DATABASES = {
78 + 'default': {
79 + 'ENGINE': 'django.db.backends.sqlite3',
80 + 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
81 + }
82 +}
83 +
84 +
85 +# Password validation
86 +# https://docs.djangoproject.com/en/3.0/ref/settings/#auth-password-validators
87 +
88 +AUTH_PASSWORD_VALIDATORS = [
89 + {
90 + 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator',
91 + },
92 + {
93 + 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator',
94 + },
95 + {
96 + 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator',
97 + },
98 + {
99 + 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator',
100 + },
101 +]
102 +
103 +
104 +# Internationalization
105 +# https://docs.djangoproject.com/en/3.0/topics/i18n/
106 +
107 +LANGUAGE_CODE = 'en-us'
108 +
109 +TIME_ZONE = 'UTC'
110 +
111 +USE_I18N = True
112 +
113 +USE_L10N = True
114 +
115 +USE_TZ = True
116 +
117 +
118 +# Static files (CSS, JavaScript, Images)
119 +# https://docs.djangoproject.com/en/3.0/howto/static-files/
120 +
121 +STATIC_URL = '/static/'
1 +"""api URL Configuration
2 +
3 +The `urlpatterns` list routes URLs to views. For more information please see:
4 + https://docs.djangoproject.com/en/3.0/topics/http/urls/
5 +Examples:
6 +Function views
7 + 1. Add an import: from my_app import views
8 + 2. Add a URL to urlpatterns: path('', views.home, name='home')
9 +Class-based views
10 + 1. Add an import: from other_app.views import Home
11 + 2. Add a URL to urlpatterns: path('', Home.as_view(), name='home')
12 +Including another URLconf
13 + 1. Import the include() function: from django.urls import include, path
14 + 2. Add a URL to urlpatterns: path('blog/', include('blog.urls'))
15 +"""
16 +from django.contrib import admin
17 +from django.urls import path, include
18 +
19 +urlpatterns = [
20 + path('admin/', admin.site.urls),
21 + path('',include('cloud.urls'))
22 +]
1 +"""
2 +WSGI config for api project.
3 +
4 +It exposes the WSGI callable as a module-level variable named ``application``.
5 +
6 +For more information on this file, see
7 +https://docs.djangoproject.com/en/3.0/howto/deployment/wsgi/
8 +"""
9 +
10 +import os
11 +
12 +from django.core.wsgi import get_wsgi_application
13 +
14 +os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'api.settings')
15 +
16 +application = get_wsgi_application()
1 +from django.contrib import admin
2 +
3 +# Register your models here.
1 +from django.apps import AppConfig
2 +
3 +
4 +class CloudConfig(AppConfig):
5 + name = 'cloud'
1 +def aws_key():
2 + return {
3 + 'AWS_ACCESS_KEY_ID' : 'AKIAIBBP3XOYSXLBY2IQ',
4 + 'AWS_SECRET_ACCESS_KEY' : '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'
5 + }
...\ No newline at end of file ...\ No newline at end of file
1 +# Generated by Django 3.0.6 on 2020-05-09 15:45
2 +
3 +from django.db import migrations, models
4 +import django.utils.timezone
5 +
6 +
7 +class Migration(migrations.Migration):
8 +
9 + initial = True
10 +
11 + dependencies = [
12 + ]
13 +
14 + operations = [
15 + migrations.CreateModel(
16 + name='File',
17 + fields=[
18 + ('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
19 + ('path', models.CharField(max_length=300)),
20 + ('created_date', models.DateTimeField(default=django.utils.timezone.now)),
21 + ('modified_date', models.DateTimeField(blank=True, null=True)),
22 + ],
23 + ),
24 + ]
1 +from django.db import models
2 +from django.utils import timezone
3 +
4 +# Create your models here.
5 +class File(models.Model):
6 + path=models.CharField(max_length=300)
7 + created_date = models.DateTimeField(default=timezone.now)
8 + modified_date = models.DateTimeField(blank=True, null=True)
...\ No newline at end of file ...\ No newline at end of file
1 +test
...\ No newline at end of file ...\ No newline at end of file
1 +from django.test import TestCase
2 +from rest_framework.test import APIClient
3 +
4 +# Create your tests here.
5 +class APITest(TestCase):
6 + def test_upload_file(self):
7 + client=APIClient()
8 + response=client.post('/files/',{})
9 + self.assertEqual(response.status_code,200)
...\ No newline at end of file ...\ No newline at end of file
1 +from django.urls import path, include
2 +from cloud import views
3 +
4 +urlpatterns = [
5 + path('files/', views.FileView.as_view())
6 +]
...\ No newline at end of file ...\ No newline at end of file
1 +from django.shortcuts import render
2 +from cloud.models import File
3 +from django.views.generic import View
4 +from django.views.decorators.csrf import csrf_exempt
5 +import boto3
6 +from django.http import JsonResponse
7 +from cloud.aws import aws_key
8 +# class FileToURL(View):
9 +# s3_client = boto3.client(
10 +# 's3',
11 +# aws_access_key_id={'AKIAIBBP3XOYSXLBY2IQ'},
12 +# aws_secret_access_key={'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'}
13 +# )
14 +# @csrf_exempt
15 +# def post(self, request):
16 +# #FILES=MultiValueDict({'file':['/path1.txt','/folder/path2.txt',...]})
17 +# for file in request.FILES.getlist('file'):
18 +# self.s3_client.upload_fileobj(
19 +# file,
20 +# {'khuloud'},
21 +# file.name
22 +# )
23 +# file_urls = [f"https://s3.us-ease-1.amazonaws.com/khuloud/{file.name}" for file in request.FILES.getlist('file')]
24 +
25 +# return JsonResponse({'files':file_urls}, status=200)
26 +
27 +
28 +class FileView(View):
29 + keys=aws_key()
30 + s3_client = boto3.client(
31 + 's3',
32 + aws_access_key_id = keys['AWS_ACCESS_KEY_ID'],
33 + aws_secret_access_key=keys['AWS_SECRET_ACCESS_KEY']
34 + )
35 +
36 +
37 + @csrf_exempt
38 + def post(self, request):
39 + # filename = request.data.get('filename')
40 + bucket_name = "khuloud"
41 + filepath = 'cloud/test/text1.txt'
42 + self.s3_client.upload_file(filepath, bucket_name, filepath)
43 + s3link='https://s3.console.aws.amazon.com/s3/buckets/'+bucket_name+'/'+filepath
44 + return JsonResponse({'file':s3link})
...\ No newline at end of file ...\ No newline at end of file
No preview for this file type
1 +#!/usr/bin/env python
2 +"""Django's command-line utility for administrative tasks."""
3 +import os
4 +import sys
5 +
6 +
7 +def main():
8 + os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'api.settings')
9 + try:
10 + from django.core.management import execute_from_command_line
11 + except ImportError as exc:
12 + raise ImportError(
13 + "Couldn't import Django. Are you sure it's installed and "
14 + "available on your PYTHONPATH environment variable? Did you "
15 + "forget to activate a virtual environment?"
16 + ) from exc
17 + execute_from_command_line(sys.argv)
18 +
19 +
20 +if __name__ == '__main__':
21 + main()