#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Akvo RSR is covered by the GNU Affero General Public License.
# See more details in the license.txt file located at the root folder of the Akvo RSR module.
# For additional details on the GNU license please see < http://www.gnu.org/licenses/agpl.html >.
from rest_framework import serializers
from akvo.rsr.models import ProjectHierarchy
from .rsr_serializer import BaseRSRSerializer
[docs]class ProgramSerializer(BaseRSRSerializer):
id = serializers.ReadOnlyField(source='root_project.pk')
name = serializers.ReadOnlyField(source='root_project.title')
project_count = serializers.SerializerMethodField()
can_edit_program = serializers.SerializerMethodField()
can_create_projects = serializers.SerializerMethodField()
is_master_program = serializers.ReadOnlyField(source='is_master')
[docs] def get_project_count(self, program):
return program.project_count
[docs] def get_can_edit_program(self, program):
user = self.context['request'].user
if user.is_superuser or user.is_admin:
return True
return user.has_perm('rsr.change_project', program)
[docs] def get_can_create_projects(self, program):
user = self.context['request'].user
return user.can_create_projects_in_program(program)