add file listing without user name
add file listing at /restapi/file/* need to modify `user` parameter in restful.views.FileList.get kairos03/2018-1-d.cloud#10
Showing
6 changed files
with
59 additions
and
8 deletions
... | @@ -105,7 +105,7 @@ AUTH_PASSWORD_VALIDATORS = [ | ... | @@ -105,7 +105,7 @@ AUTH_PASSWORD_VALIDATORS = [ |
105 | # Internationalization | 105 | # Internationalization |
106 | # https://docs.djangoproject.com/en/2.0/topics/i18n/ | 106 | # https://docs.djangoproject.com/en/2.0/topics/i18n/ |
107 | 107 | ||
108 | -LANGUAGE_CODE = 'en-us' | 108 | +LANGUAGE_CODE = 'ko_kr' |
109 | 109 | ||
110 | TIME_ZONE = 'UTC' | 110 | TIME_ZONE = 'UTC' |
111 | 111 | ... | ... |
... | @@ -18,5 +18,5 @@ from django.conf.urls import url, include | ... | @@ -18,5 +18,5 @@ from django.conf.urls import url, include |
18 | 18 | ||
19 | urlpatterns = [ | 19 | urlpatterns = [ |
20 | url('admin/', admin.site.urls), | 20 | url('admin/', admin.site.urls), |
21 | - url(r'^', include('restful.urls')), | 21 | + url(r'^restapi/', include('restful.urls')), |
22 | ] | 22 | ] | ... | ... |
dcloud/restful/s3_interface.py
0 → 100644
1 | +import boto3 | ||
2 | +import json | ||
3 | + | ||
4 | +S3 = boto3.client('s3') | ||
5 | +BUCKET = '2018-dcloud' | ||
6 | + | ||
7 | + | ||
8 | +def list_path(bucket, user, path): | ||
9 | + | ||
10 | + files = [] | ||
11 | + # get list | ||
12 | + objects = S3.list_objects(Bucket=bucket, Prefix='{}/{}'.format(user, path), Delimiter='/') | ||
13 | + | ||
14 | + # get sub directorys | ||
15 | + common_prefixes = objects.get('CommonPrefixes') | ||
16 | + if common_prefixes: | ||
17 | + for obj in common_prefixes: | ||
18 | + files.append({'type':'diretory', 'name':obj.get('Prefix').split('/')[-2]}) | ||
19 | + | ||
20 | + # get files | ||
21 | + contents = objects.get('Contents') | ||
22 | + if contents: | ||
23 | + for obj in contents: | ||
24 | + file = obj.get('Key').split('/')[-1] | ||
25 | + if file != '': | ||
26 | + files.append({'type':'file', 'name':file}) | ||
27 | + | ||
28 | + return {'files':files} | ||
29 | + | ||
30 | +# print(list_path(BUCKET, 'test1', '')) | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
1 | from django.conf.urls import url | 1 | from django.conf.urls import url |
2 | +from django.shortcuts import redirect | ||
2 | from rest_framework.urlpatterns import format_suffix_patterns | 3 | from rest_framework.urlpatterns import format_suffix_patterns |
3 | from restful import views | 4 | from restful import views |
4 | 5 | ||
5 | urlpatterns = [ | 6 | urlpatterns = [ |
6 | - url(r'^files/$', views.FileList.as_view(), name='file-list'), | 7 | + url(r'^files/(?P<path>(\/*[a-zA-z0-9가-힣._-]*/)*)$', views.FileList.as_view(), name='file-list'), |
7 | - url(r'^files/(?P<pk>[0-9]+)/$', views.FileDetail.as_view(), name='file-detail'), | 8 | + url(r'^files/(?P<pk>[0-9]+)/$', views.FileDetail.as_view()), |
8 | ] | 9 | ] |
9 | 10 | ||
10 | urlpatterns = format_suffix_patterns(urlpatterns) | 11 | urlpatterns = format_suffix_patterns(urlpatterns) |
... | \ No newline at end of file | ... | \ No newline at end of file | ... | ... |
... | @@ -4,6 +4,7 @@ from django.http import Http404 | ... | @@ -4,6 +4,7 @@ from django.http import Http404 |
4 | from rest_framework.views import APIView | 4 | from rest_framework.views import APIView |
5 | from rest_framework.response import Response | 5 | from rest_framework.response import Response |
6 | from rest_framework import status | 6 | from rest_framework import status |
7 | +from restful import s3_interface | ||
7 | 8 | ||
8 | 9 | ||
9 | # Create your views here. | 10 | # Create your views here. |
... | @@ -12,10 +13,14 @@ class FileList(APIView): | ... | @@ -12,10 +13,14 @@ class FileList(APIView): |
12 | List all file, or create a new snippet. | 13 | List all file, or create a new snippet. |
13 | """ | 14 | """ |
14 | 15 | ||
15 | - def get(self, request, format=None): | 16 | + def get(self, request, path='/', format=None): |
16 | - file = File.objects.all() | 17 | + # file = File.objects.all() |
17 | - serializer = FileSerializer(file, many=True) | 18 | + # serializer = FileSerializer(file, many=True) |
18 | - return Response(serializer.data) | 19 | + # print(serializer.data) |
20 | + # return Response(serializer.data) | ||
21 | + data = s3_interface.list_path(s3_interface.BUCKET, 'test1', path) | ||
22 | + return Response(data) | ||
23 | + | ||
19 | 24 | ||
20 | def post(self, request, format=None): | 25 | def post(self, request, format=None): |
21 | serializer = FileSerializer(data=request.data) | 26 | serializer = FileSerializer(data=request.data) | ... | ... |
dcloud/website/urls.py
0 → 100644
1 | +from django.conf.urls import url | ||
2 | +from website import views, auth_views | ||
3 | + | ||
4 | +urlpatterns = [ | ||
5 | + # blog | ||
6 | + url(r'^$', views.post_list, name='post_list'), | ||
7 | + url(r'^post/(?P<pk>\d+)/$', views.post_detail, name='post_detail'), | ||
8 | + url(r'^post/new/$', views.post_new, name='post_new'), | ||
9 | + url(r'^post/(?P<pk>\d+)/edit/$', views.post_edit, name='post_edit'), | ||
10 | + url(r'^drafts/$', views.post_draft_list, name='post_draft_list'), | ||
11 | + url(r'^post/(?P<pk>\d+)/publish/$', views.post_publish, name='post_publish'), | ||
12 | + | ||
13 | + url(r'^files/$', views.file_list, name='file_list'), | ||
14 | + url(r'^signup/$', auth_views.signup, name='signup'), | ||
15 | +] | ||
... | \ No newline at end of file | ... | \ No newline at end of file |
-
Please register or login to post a comment