Skip to content
Snippets Groups Projects
Commit a2a9a759 authored by Rafael László's avatar Rafael László :speech_balloon:
Browse files

image upload for main site

parent 5860c5d7
No related branches found
No related tags found
1 merge request!2Dev
......@@ -10,7 +10,7 @@ from common.validators import FileSizeValidator
def document_file_name(instance, filename):
return '/'.join([
'document',
'public/document',
instance.solution.task.title,
instance.uploaded_by.full_name,
filename
......
......@@ -7,6 +7,7 @@ from django.http import HttpResponse, Http404
from rest_framework.decorators import action
import os
class DocumentViewSet(viewsets.ModelViewSet):
serializer_class = serializers.DocumentSerializer
permission_classes = (permissions.IsStaffOrStudent, )
......@@ -25,7 +26,10 @@ class DocumentViewSet(viewsets.ModelViewSet):
profile_id = self.request.query_params.get('profileID', None)
solution_id = self.request.query_params.get('solutionID', None)
if profile_id is not None and solution_id is not None:
return queryset.filter(uploaded_by=profile_id, solution=solution_id)
return queryset.filter(
uploaded_by=profile_id,
solution=solution_id
)
if profile_id is not None:
return queryset.filter(uploaded_by=profile_id)
if solution_id is not None:
......@@ -38,19 +42,23 @@ class DocumentViewSet(viewsets.ModelViewSet):
if solution_id is not None:
return queryset.filter(solution=solution_id)
return queryset
def perform_create(self, serializer):
kwargs = {
'uploaded_by': self.request.user.profile
}
serializer.save(**kwargs)
@action(detail=True, methods=["get"])
def download(self, request, pk):
document = self.get_object()
with document.file.open() as fh:
response = HttpResponse(fh.read(), content_type="application/media")
response['Content-Disposition'] = 'inline; filename=' + os.path.basename(document.file.name)
response = HttpResponse(
fh.read(),
content_type="application/media"
)
response['Content-Disposition'] = \
'inline; filename=' + os.path.basename(document.file.name)
return response
raise Http404
from django.contrib import admin
from .models import Images
admin.site.register(Images)
# Register your models here.
from django.apps import AppConfig
class ImagesConfig(AppConfig):
name = 'images'
# Generated by Django 2.2.4 on 2020-02-07 22:44
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Images',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('image', models.ImageField(blank=True, null=True, upload_to='images/')),
],
),
]
# Generated by Django 2.2.4 on 2020-02-08 01:54
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('images', '0001_initial'),
]
operations = [
migrations.AlterField(
model_name='images',
name='image',
field=models.ImageField(blank=True, null=True, upload_to='public/images/'),
),
]
from django.db import models
class Images(models.Model):
image = models.ImageField(
upload_to='public/images/', null=True, blank=True
)
def __str__(self):
return self.id
from images.models import Images
from rest_framework import serializers
class ImagesSerializer(serializers.ModelSerializer):
class Meta:
model = Images
fields = ('id', 'image')
from rest_framework import routers
from images import views
router = routers.DefaultRouter()
router.register(r'images', views.ImagesViewSet, base_name='images')
urlpatterns = router.urls
from common.permissions import IsStaffOrStudent, \
IsStaffOrReadOnlyForAuthenticated
from rest_framework import viewsets
from images.models import Images
from images.serializers import ImagesSerializer
class ImagesViewSet(viewsets.ModelViewSet):
serializer_class = ImagesSerializer
permission_classes = (
IsStaffOrReadOnlyForAuthenticated,
IsStaffOrStudent,
)
queryset = Images.objects.all()
......@@ -49,6 +49,7 @@ INSTALLED_APPS = [
'news',
'document',
'mentors',
'images',
'groups',
'drf_yasg',
]
......@@ -160,4 +161,4 @@ STATIC_URL = '/staticfiles/'
STATIC_ROOT = os.path.join(BASE_DIR, "staticfiles")
MEDIA_URL = "/mediafiles/"
MEDIA_ROOT = os.path.join(BASE_DIR, "mediafiles")
MEDIA_ROOT = os.path.join(BASE_DIR, "mediafiles")
\ No newline at end of file
......@@ -37,6 +37,7 @@ urlpatterns = [
url(r'^api/v1/', include('document.urls')),
url(r'^api/v1/', include('groups.urls')),
url(r'^api/v1/', include('mentors.urls')),
url(r'^api/v1/', include('images.urls')),
url(r'^api/v1/logout/$', auth_views.LogoutView.as_view(), name='logout'),
]
......
from common.permissions import IsStaffOrStudent
from common.permissions import IsStaffOrStudent, \
IsStaffOrReadOnlyForAuthenticated
from rest_framework import viewsets
from mentors.models import Mentor
from mentors.serializers import MentorSerializer
......@@ -6,7 +7,10 @@ from mentors.serializers import MentorSerializer
class MentorsViewSet(viewsets.ModelViewSet):
serializer_class = MentorSerializer
permission_classes = (IsStaffOrStudent,)
permission_classes = (
IsStaffOrReadOnlyForAuthenticated,
IsStaffOrStudent,
)
queryset = Mentor.objects.all().order_by('name')
def perform_create(self, serializer):
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment