@@ -341,12 +341,15 @@ class PromoFeedSerializer(rest_framework.serializers.ModelSerializer):
341
341
company_name = rest_framework .serializers .CharField (source = 'company.name' )
342
342
active = rest_framework .serializers .BooleanField (source = 'is_active' )
343
343
is_activated_by_user = rest_framework .serializers .SerializerMethodField ()
344
- is_liked_by_user = rest_framework .serializers .SerializerMethodField ()
345
344
like_count = rest_framework .serializers .IntegerField (
346
345
source = 'get_like_count' ,
347
346
read_only = True ,
348
347
)
349
- comment_count = rest_framework .serializers .SerializerMethodField ()
348
+ comment_count = rest_framework .serializers .IntegerField (
349
+ source = 'get_comment_count' ,
350
+ read_only = True ,
351
+ )
352
+ is_liked_by_user = rest_framework .serializers .SerializerMethodField ()
350
353
351
354
class Meta :
352
355
model = business .models .Promo
@@ -365,18 +368,23 @@ class Meta:
365
368
366
369
read_only_fields = fields
367
370
368
- def get_is_activated_by_user (self , obj ) -> bool :
369
- # TODO:
371
+ def get_is_liked_by_user (self , obj : business .models .Promo ) -> bool :
372
+ request = self .context .get ('request' )
373
+ if (
374
+ request
375
+ and hasattr (request , 'user' )
376
+ and request .user .is_authenticated
377
+ ):
378
+ return user .models .PromoLike .objects .filter (
379
+ promo = obj ,
380
+ user = request .user ,
381
+ ).exists ()
370
382
return False
371
383
372
- def get_is_liked_by_user (self , obj ) -> bool :
384
+ def get_is_activated_by_user (self , obj ) -> bool :
373
385
# TODO:
374
386
return False
375
387
376
- def get_comment_count (self , obj ) -> int :
377
- # TODO:
378
- return 0
379
-
380
388
381
389
class UserPromoDetailSerializer (rest_framework .serializers .ModelSerializer ):
382
390
"""
@@ -406,8 +414,11 @@ class UserPromoDetailSerializer(rest_framework.serializers.ModelSerializer):
406
414
source = 'get_like_count' ,
407
415
read_only = True ,
408
416
)
417
+ comment_count = rest_framework .serializers .IntegerField (
418
+ source = 'get_comment_count' ,
419
+ read_only = True ,
420
+ )
409
421
is_liked_by_user = rest_framework .serializers .SerializerMethodField ()
410
- comment_count = rest_framework .serializers .SerializerMethodField ()
411
422
412
423
class Meta :
413
424
model = business .models .Promo
@@ -420,8 +431,8 @@ class Meta:
420
431
'active' ,
421
432
'is_activated_by_user' ,
422
433
'like_count' ,
423
- 'is_liked_by_user' ,
424
434
'comment_count' ,
435
+ 'is_liked_by_user' ,
425
436
)
426
437
read_only_fields = fields
427
438
@@ -442,6 +453,64 @@ def get_is_activated_by_user(self, obj) -> bool:
442
453
# TODO:
443
454
return False
444
455
445
- def get_comment_count (self , obj ) -> int :
446
- # TODO:
447
- return 0
456
+
457
+ class UserAuthorSerializer (rest_framework .serializers .ModelSerializer ):
458
+ name = rest_framework .serializers .CharField (
459
+ read_only = True ,
460
+ min_length = 1 ,
461
+ max_length = 100 ,
462
+ )
463
+ surname = rest_framework .serializers .CharField (
464
+ read_only = True ,
465
+ min_length = 1 ,
466
+ max_length = 120 ,
467
+ )
468
+ avatar_url = rest_framework .serializers .URLField (
469
+ read_only = True ,
470
+ max_length = 350 ,
471
+ allow_null = True ,
472
+ )
473
+
474
+ class Meta :
475
+ model = user .models .User
476
+ fields = ('name' , 'surname' , 'avatar_url' )
477
+
478
+
479
+ class CommentSerializer (rest_framework .serializers .ModelSerializer ):
480
+ id = rest_framework .serializers .UUIDField (read_only = True )
481
+ text = rest_framework .serializers .CharField (
482
+ min_length = user .constants .COMMENT_TEXT_MIN_LENGTH ,
483
+ max_length = user .constants .COMMENT_TEXT_MAX_LENGTH ,
484
+ )
485
+ date = rest_framework .serializers .DateTimeField (
486
+ source = 'created_at' ,
487
+ read_only = True ,
488
+ format = '%Y-%m-%dT%H:%M:%S%z' ,
489
+ )
490
+ author = UserAuthorSerializer (read_only = True )
491
+
492
+ class Meta :
493
+ model = user .models .PromoComment
494
+ fields = ('id' , 'text' , 'date' , 'author' )
495
+
496
+
497
+ class CommentCreateSerializer (rest_framework .serializers .ModelSerializer ):
498
+ text = rest_framework .serializers .CharField (
499
+ min_length = user .constants .COMMENT_TEXT_MIN_LENGTH ,
500
+ max_length = user .constants .COMMENT_TEXT_MAX_LENGTH ,
501
+ )
502
+
503
+ class Meta :
504
+ model = user .models .PromoComment
505
+ fields = ('text' ,)
506
+
507
+
508
+ class CommentUpdateSerializer (rest_framework .serializers .ModelSerializer ):
509
+ text = rest_framework .serializers .CharField (
510
+ min_length = user .constants .COMMENT_TEXT_MIN_LENGTH ,
511
+ max_length = user .constants .COMMENT_TEXT_MAX_LENGTH ,
512
+ )
513
+
514
+ class Meta :
515
+ model = user .models .PromoComment
516
+ fields = ('text' ,)
0 commit comments