subscriptions read only

This commit is contained in:
alex 2020-01-15 15:03:38 +03:00
parent 42885e8b4c
commit 63cc029ce3
5 changed files with 75 additions and 5 deletions

View File

@ -340,6 +340,14 @@ class User(AbstractUser):
model='product',
).values_list('object_id', flat=True)
@property
def subscriptions(self):
result = []
for subscription in self.subscriber.all():
for item in subscription.active_subscriptions:
result.append(item.id)
return set(result)
class UserRole(ProjectBaseMixin):
"""UserRole model."""
@ -380,4 +388,4 @@ class OldRole(models.Model):
old_role = models.CharField(verbose_name=_('Old role'), max_length=512, null=True)
class Meta:
unique_together = ('new_role', 'old_role')
unique_together = ('new_role', 'old_role')

View File

@ -45,11 +45,21 @@ class BackUserSerializer(serializers.ModelSerializer):
'last_ip',
'last_country',
'roles',
'subscriptions',
)
extra_kwargs = {
'password': {'write_only': True},
}
read_only_fields = ('old_password', 'last_login', 'date_joined', 'city', 'locale', 'last_ip', 'last_country')
read_only_fields = (
'old_password',
'last_login',
'date_joined',
'city',
'locale',
'last_ip',
'last_country',
'subscriptions',
)
def create(self, validated_data):
user = super().create(validated_data)
@ -61,8 +71,38 @@ class BackUserSerializer(serializers.ModelSerializer):
class BackDetailUserSerializer(BackUserSerializer):
class Meta:
model = User
exclude = ('password',)
read_only_fields = ('old_password', 'last_login', 'date_joined')
fields = (
'id',
'last_country',
'roles',
'last_login',
'is_superuser',
'first_name',
'last_name',
'is_staff',
'is_active',
'date_joined',
'username',
'image_url',
'cropped_image_url',
'email',
'unconfirmed_email',
'email_confirmed',
'newsletter',
'old_id',
'locale',
'city',
'last_ip',
'groups',
'user_permissions',
'subscriptions',
)
read_only_fields = (
'old_password',
'last_login',
'date_joined',
'subscriptions',
)
def create(self, validated_data):
user = super().create(validated_data)

View File

@ -56,6 +56,7 @@ class UserSerializer(serializers.ModelSerializer):
'email_confirmed',
'newsletter',
'roles',
'subscriptions',
]
extra_kwargs = {
'first_name': {'required': False, 'write_only': True, },
@ -65,6 +66,9 @@ class UserSerializer(serializers.ModelSerializer):
'cropped_image_url': {'required': False, },
'newsletter': {'required': False, },
}
read_only_fields = (
'subscriptions',
)
def create(self, validated_data):
user = super(UserSerializer, self).create(validated_data)

View File

@ -27,6 +27,7 @@ class UserListView(generics.ListCreateAPIView):
serializer_class = serializers.BackUserSerializer
permission_classes = (permissions.IsAdminUser,)
filter_backends = (DjangoFilterBackend, OrderingFilter)
filterset_fields = (
'email_confirmed',
'is_staff',

View File

@ -1,3 +1,20 @@
from django.contrib import admin
from notification import models
# Register your models here.
@admin.register(models.SubscriptionType)
class SubscriptionTypeAdmin(admin.ModelAdmin):
"""SubscriptionType admin."""
list_display = ['index_name', 'country']
@admin.register(models.Subscriber)
class SubscriberAdmin(admin.ModelAdmin):
"""Subscriber admin."""
raw_id_fields = ('user',)
@admin.register(models.Subscribe)
class SubscribeAdmin(admin.ModelAdmin):
"""Subscribe admin."""
raw_id_fields = ('subscriber',)