Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #viewset
- class DealViewSet(viewsets.ModelViewSet):
- """
- Get, list, create, update and delete deals with case with `case_id`.
- """
- serializer_class = serializers.DealSerializer
- lookup_field = 'client_generated_id'
- def get_queryset(self):
- case_id = self.kwargs['case_client_generated_id']
- return Deal.objects.filter(case__client_generated_id=case_id)
- #models
- class Note(models.Model):
- client_generated_id = models.UUIDField(editable=True, unique=True)
- case = models.ForeignKey(Case)
- category = models.ForeignKey(Category)
- party = models.ForeignKey(Party, blank=True, null=True)
- text = models.TextField()
- cancelled = models.BooleanField(default=False)
- private = models.BooleanField(default=False)
- created = models.DateTimeField()
- class Meta:
- verbose_name = _('note')
- verbose_name_plural = _('notes')
- def __str__(self):
- return str(self.id)
- class Deal(models.Model):
- client_generated_id = models.UUIDField(editable=True, unique=True)
- case = models.ForeignKey(Case)
- notes = models.ManyToManyField(Note, through='DealNote', through_fields=('deal', 'note'))
- accepted = models.BooleanField()
- created = models.DateTimeField()
- class Meta:
- verbose_name = _('deal')
- verbose_name_plural = _('deals')
- def __str__(self):
- return str(self.id)
- class DealNote(models.Model):
- AND = 'and'
- OR = 'or'
- IF = 'if'
- UNLESS = 'unless'
- CONNECTING_WORDS = (
- (AND, 'and'),
- (OR, 'or'),
- (IF, 'if'),
- (UNLESS, 'unless'),
- )
- deal = models.ForeignKey(Deal)
- note = models.ForeignKey(Note)
- connecting_word = models.CharField(max_length=40, choices=CONNECTING_WORDS, blank=True, null=True, default=None)
- parent = models.ForeignKey(Note, related_name='parent', blank=True, null=True, default=None)
- #serializers
- class DealNoteSerializer(serializers.ModelSerializer):
- note_id = serializers.SlugRelatedField(slug_field='client_generated_id', source='note', queryset=Note.objects.all())
- parent_note_id = serializers.SlugRelatedField(slug_field='client_generated_id', source='parent', queryset=Note.objects.all())
- class Meta:
- model = DealNote
- fields = ('note_id', 'connecting_word', 'parent_note_id')
- class DealSerializer(CaseChildSerializer):
- id = serializers.UUIDField(source='client_generated_id')
- case_id = serializers.SlugRelatedField(slug_field='client_generated_id', source='case', queryset=Case.objects.all())
- notes = DealNoteSerializer(many=True, read_only=False)
- created = UnixEpochDateTimeField(required=True)
- class Meta:
- model = Deal
- fields = ('id', 'case_id', 'accepted', 'notes', 'created')
- def create(self, validated_data):
- print('DealSerializer.create()', validated_data)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement