LIL-582 thumbnails, ip save in likes and etc

remotes/origin/hotfix/LIL-661
gzbender 8 years ago
parent 353980c79e
commit 17a3347a88
  1. 4
      api/v1/serializers/content.py
  2. 5
      api/v1/serializers/course.py
  3. 6
      apps/content/models.py
  4. 18
      apps/course/migrations/0042_like_ip.py
  5. 1
      apps/course/models.py
  6. 1
      project/settings.py
  7. 2
      requirements.txt
  8. 2
      web/src/components/blocks/ContestWork.vue
  9. 2
      web/src/sass/_common.sass

@ -85,12 +85,16 @@ class ImageObjectSerializer(serializers.ModelSerializer):
image = Base64ImageField(
required=True, allow_empty_file=False, allow_null=False, read_only=False,
)
image_thumbnail = Base64ImageField(
required=True, allow_empty_file=False, allow_null=False, read_only=False,
)
class Meta:
model = ImageObject
fields = (
'id',
'image',
'image_thumbnail',
'created_at',
'update_at',
)

@ -1,3 +1,5 @@
from ipware import get_client_ip
from rest_framework import serializers
from rest_framework.validators import UniqueValidator
@ -88,13 +90,14 @@ class LikeCreateSerializer(serializers.ModelSerializer):
return Like()
obj_type = validated_data.pop('obj_type')
obj_id = validated_data.pop('obj_id')
client_ip, is_routable = get_client_ip(self.context['request'])
if obj_type == self.OBJ_TYPE_CONTEST_WORK:
contest_work = ContestWork.objects.get(pk=obj_id)
# FIXME in prod: fixed
if contest_work.user == user or contest_work.likes.filter(user=user).exists():
# if contest_work.likes.filter(user=user).exists():
return Like()
like = Like.objects.create(user=user)
like = Like.objects.create(user=user, ip=client_ip)
contest_work.likes.add(like)
return like

@ -2,6 +2,8 @@ from urllib.parse import urlparse
from django.db import models
from django.contrib.auth import get_user_model
from django.urls import reverse_lazy
from imagekit.models import ImageSpecField
from imagekit.processors import ResizeToCover
from polymorphic.models import PolymorphicModel
@ -11,6 +13,10 @@ User = get_user_model()
class ImageObject(models.Model):
image = models.ImageField('Изображение', upload_to='content/imageobject')
image_thumbnail = ImageSpecField(source='image',
processors=[ResizeToCover(300, 200, False)],
format='JPEG',
options={'quality': 85})
created_at = models.DateTimeField(auto_now_add=True)
update_at = models.DateTimeField(auto_now=True)

@ -0,0 +1,18 @@
# Generated by Django 2.0.6 on 2018-08-16 16:45
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('course', '0041_auto_20180813_1306'),
]
operations = [
migrations.AddField(
model_name='like',
name='ip',
field=models.GenericIPAddressField(blank=True, null=True),
),
]

@ -22,6 +22,7 @@ User = get_user_model()
class Like(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
ip = models.GenericIPAddressField(blank=True, null=True)
created_at = models.DateTimeField(auto_now_add=True)
update_at = models.DateTimeField(auto_now=True)

@ -56,6 +56,7 @@ INSTALLED_APPS = [
'sorl.thumbnail',
'raven.contrib.django.raven_compat',
'django_user_agents',
'imagekit',
] + [
'apps.auth.apps',
'apps.user',

@ -28,4 +28,6 @@ git+https://github.com/ivlevdenis/python-instagram.git
django-user-agents==0.3.2
user-agents==1.1.0
ua-parser==0.8.0
django-ipware
django-imagekit

@ -1,7 +1,7 @@
<template>
<div class="contest-work-item">
<a :href="`/contest-work/${contestWork.id}/`">
<img class="contest-work-item__img" :src="contestWork.image.image" />
<img class="contest-work-item__img" :src="contestWork.image.image_thumbnail" />
</a>
<div class="contest-work-item__info">
<div class="contest-work-item__bio">

@ -817,7 +817,7 @@ a[name]
&:not(:last-child)
margin-bottom: 35px
+t
margin: 0
margin: 0 0 15px 0
&__curve
position: absolute
pointer-events: none

Loading…
Cancel
Save