Example #1
0
class BaseCustomAttributesValuesExportValidator(validators.ModelValidator):
    attributes_values = JSONField(source="attributes_values", required=True)
    _custom_attribute_model = None
    _container_field = None

    class Meta:
        exclude = ("id", )

    def validate_attributes_values(self, attrs, source):
        # values must be a dict
        data_values = attrs.get("attributes_values", None)
        if self.object:
            data_values = (data_values or self.object.attributes_values)

        if type(data_values) is not dict:
            raise ValidationError(
                _("Invalid content. It must be {\"key\": \"value\",...}"))

        # Values keys must be in the container object project
        data_container = attrs.get(self._container_field, None)
        if data_container:
            project_id = data_container.project_id
        elif self.object:
            project_id = getattr(self.object, self._container_field).project_id
        else:
            project_id = None

        values_ids = list(data_values.keys())
        qs = self._custom_attribute_model.objects.filter(project=project_id,
                                                         id__in=values_ids)
        if qs.count() != len(values_ids):
            raise ValidationError(_("It contains invalid custom fields."))

        return attrs
Example #2
0
class ProjectTemplateValidator(validators.ModelValidator):
    default_options = JSONField(required=False, label=_("Default options"))
    us_statuses = JSONField(required=False, label=_("User story's statuses"))
    points = JSONField(required=False, label=_("Points"))
    task_statuses = JSONField(required=False, label=_("Task's statuses"))
    issue_statuses = JSONField(required=False, label=_("Issue's statuses"))
    issue_types = JSONField(required=False, label=_("Issue's types"))
    priorities = JSONField(required=False, label=_("Priorities"))
    severities = JSONField(required=False, label=_("Severities"))
    roles = JSONField(required=False, label=_("Roles"))

    class Meta:
        model = models.ProjectTemplate
        read_only_fields = ("created_date", "modified_date")
Example #3
0
class ProjectExportValidator(WatcheableObjectModelValidatorMixin):
    logo = FileField(required=False)
    anon_permissions = PgArrayField(required=False)
    public_permissions = PgArrayField(required=False)
    modified_date = serializers.DateTimeField(required=False)
    roles = RoleExportValidator(many=True, required=False)
    owner = UserRelatedField(required=False)
    memberships = MembershipExportValidator(many=True, required=False)
    points = PointsExportValidator(many=True, required=False)
    us_statuses = UserStoryStatusExportValidator(many=True, required=False)
    task_statuses = TaskStatusExportValidator(many=True, required=False)
    issue_types = IssueTypeExportValidator(many=True, required=False)
    issue_statuses = IssueStatusExportValidator(many=True, required=False)
    priorities = PriorityExportValidator(many=True, required=False)
    severities = SeverityExportValidator(many=True, required=False)
    swimlanes = SwimlaneExportValidator(many=True, required=False)
    tags_colors = JSONField(required=False)
    creation_template = serializers.SlugRelatedField(slug_field="slug",
                                                     required=False)
    default_points = serializers.SlugRelatedField(slug_field="name",
                                                  required=False)
    default_us_status = serializers.SlugRelatedField(slug_field="name",
                                                     required=False)
    default_task_status = serializers.SlugRelatedField(slug_field="name",
                                                       required=False)
    default_priority = serializers.SlugRelatedField(slug_field="name",
                                                    required=False)
    default_severity = serializers.SlugRelatedField(slug_field="name",
                                                    required=False)
    default_issue_status = serializers.SlugRelatedField(slug_field="name",
                                                        required=False)
    default_issue_type = serializers.SlugRelatedField(slug_field="name",
                                                      required=False)
    default_swimlane = serializers.SlugRelatedField(slug_field="name",
                                                    required=False)
    userstorycustomattributes = UserStoryCustomAttributeExportValidator(
        many=True, required=False)
    taskcustomattributes = TaskCustomAttributeExportValidator(many=True,
                                                              required=False)
    issuecustomattributes = IssueCustomAttributeExportValidator(many=True,
                                                                required=False)
    user_stories = UserStoryExportValidator(many=True, required=False)
    tasks = TaskExportValidator(many=True, required=False)
    milestones = MilestoneExportValidator(many=True, required=False)
    issues = IssueExportValidator(many=True, required=False)
    wiki_links = WikiLinkExportValidator(many=True, required=False)
    wiki_pages = WikiPageExportValidator(many=True, required=False)

    class Meta:
        model = projects_models.Project
        exclude = ('id', 'members')