Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.db import models
- from rems.models.Task import Task
- class Project(models.Model):
- id = models.IntegerField('id', primary_key=True)
- name = models.CharField('name', max_length=45, unique=False)
- code = models.CharField('code', unique=True, max_length=8)
- description = models.CharField('description', max_length=255)
- created_at = models.DateTimeField(auto_now_add=True)
- updated_at = models.DateTimeField(auto_now=True)
- class Meta:
- db_table = 'project'
- verbose_name = 'project'
- verbose_name_plural = 'projects'
- ordering = ('-code',)
- def natural_key(self):
- return self.id
- def project_get_tree(self):
- children_tree = self.get_children_tree()
- returned_data = {
- "id": self.id,
- "name": self.name,
- "code": self.code,
- "description": self.description,
- "tasks": children_tree
- }
- return returned_data
- def get_children_tree(self):
- task_collection = Task.objects.filter(project_id=self.id)
- returned_array = []
- if len(task_collection) > 0:
- for child in task_collection:
- returned_array.append(child.get_tree())
- return returned_array
- @staticmethod
- def get_object(id):
- try:
- return Project.objects.get(id=id)
- except Project.DoesNotExist:
- return False
- def can_be_deleted(self):
- children_count = Task.objects.filter(project_id=self.id).count()
- if children_count > 0:
- return False
- return True
- from rest_framework import serializers
- from rems.models.Project import Project
- from rest_framework.validators import UniqueValidator
- class ProjectSerializer(serializers.HyperlinkedModelSerializer):
- id = serializers.IntegerField(read_only=True)
- name = serializers.CharField(required=True, min_length=1, max_length=45)
- code = serializers.CharField(required=True, min_length=1, max_length=8,
- validators=[UniqueValidator(queryset=Project.objects.all())])
- description = serializers.CharField(required=False, min_length=1, max_length=255)
- class Meta:
- model = Project
- fields = ('id', 'code', 'name', 'description')
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement