include owner on mailrule / account creation

This commit is contained in:
Michael Shamoon 2023-01-01 21:12:35 -08:00
parent d840308392
commit 1663450c1f
2 changed files with 7 additions and 25 deletions

View File

@ -1,5 +1,6 @@
from documents.serialisers import CorrespondentField from documents.serialisers import CorrespondentField
from documents.serialisers import DocumentTypeField from documents.serialisers import DocumentTypeField
from documents.serialisers import OwnedObjectSerializer
from documents.serialisers import TagsField from documents.serialisers import TagsField
from paperless_mail.models import MailAccount from paperless_mail.models import MailAccount
from paperless_mail.models import MailRule from paperless_mail.models import MailRule
@ -18,7 +19,7 @@ class ObfuscatedPasswordField(serializers.Field):
return data return data
class MailAccountSerializer(serializers.ModelSerializer): class MailAccountSerializer(OwnedObjectSerializer):
password = ObfuscatedPasswordField() password = ObfuscatedPasswordField()
class Meta: class Meta:
@ -42,17 +43,13 @@ class MailAccountSerializer(serializers.ModelSerializer):
super().update(instance, validated_data) super().update(instance, validated_data)
return instance return instance
def create(self, validated_data):
mail_account = MailAccount.objects.create(**validated_data)
return mail_account
class AccountField(serializers.PrimaryKeyRelatedField): class AccountField(serializers.PrimaryKeyRelatedField):
def get_queryset(self): def get_queryset(self):
return MailAccount.objects.all().order_by("-id") return MailAccount.objects.all().order_by("-id")
class MailRuleSerializer(serializers.ModelSerializer): class MailRuleSerializer(OwnedObjectSerializer):
account = AccountField(required=True) account = AccountField(required=True)
action_parameter = serializers.CharField( action_parameter = serializers.CharField(
allow_null=True, allow_null=True,
@ -96,7 +93,7 @@ class MailRuleSerializer(serializers.ModelSerializer):
def create(self, validated_data): def create(self, validated_data):
if "assign_tags" in validated_data: if "assign_tags" in validated_data:
assign_tags = validated_data.pop("assign_tags") assign_tags = validated_data.pop("assign_tags")
mail_rule = MailRule.objects.create(**validated_data) mail_rule = super().create(validated_data)
if assign_tags: if assign_tags:
mail_rule.assign_tags.set(assign_tags) mail_rule.assign_tags.set(assign_tags)
return mail_rule return mail_rule

View File

@ -1,3 +1,4 @@
from documents.views import PassUserMixin
from paperless.views import StandardPagination from paperless.views import StandardPagination
from paperless_mail.models import MailAccount from paperless_mail.models import MailAccount
from paperless_mail.models import MailRule from paperless_mail.models import MailRule
@ -7,7 +8,7 @@ from rest_framework.permissions import IsAuthenticated
from rest_framework.viewsets import ModelViewSet from rest_framework.viewsets import ModelViewSet
class MailAccountViewSet(ModelViewSet): class MailAccountViewSet(ModelViewSet, PassUserMixin):
model = MailAccount model = MailAccount
queryset = MailAccount.objects.all().order_by("pk") queryset = MailAccount.objects.all().order_by("pk")
@ -15,27 +16,11 @@ class MailAccountViewSet(ModelViewSet):
pagination_class = StandardPagination pagination_class = StandardPagination
permission_classes = (IsAuthenticated,) permission_classes = (IsAuthenticated,)
# TODO: user-scoped
# def get_queryset(self):
# user = self.request.user
# return MailAccount.objects.filter(user=user)
# def perform_create(self, serializer): class MailRuleViewSet(ModelViewSet, PassUserMixin):
# serializer.save(user=self.request.user)
class MailRuleViewSet(ModelViewSet):
model = MailRule model = MailRule
queryset = MailRule.objects.all().order_by("pk") queryset = MailRule.objects.all().order_by("pk")
serializer_class = MailRuleSerializer serializer_class = MailRuleSerializer
pagination_class = StandardPagination pagination_class = StandardPagination
permission_classes = (IsAuthenticated,) permission_classes = (IsAuthenticated,)
# TODO: user-scoped
# def get_queryset(self):
# user = self.request.user
# return MailRule.objects.filter(user=user)
# def perform_create(self, serializer):
# serializer.save(user=self.request.user)