コード例 #1
0
ファイル: models.py プロジェクト: hinashi/airone
 def _user_has_permission(self, target_obj, permission_level):
     slave_db = get_slave_db()
     return any([
         permission_level.id <= x.get_aclid()
         for x in self.permissions.using(slave_db).all()
         if target_obj.id == x.get_objid()
     ])
コード例 #2
0
ファイル: models.py プロジェクト: hinashi/airone
    def is_permitted(self, target_obj, permission_level, groups=[]):
        if not groups:
            slave_db = get_slave_db()
            groups = self.groups.using(slave_db).all()

        return (self._user_has_permission(target_obj, permission_level)
                or self._group_has_permission(target_obj, permission_level,
                                              groups))
コード例 #3
0
ファイル: models.py プロジェクト: hinashi/airone
 def _group_has_permission(self, target_obj, permission_level, groups):
     slave_db = get_slave_db()
     return any(
         sum([[
             permission_level.id <= x.get_aclid()
             for x in g.permissions.using(slave_db).all()
             if target_obj.id == x.get_objid()
         ] for g in groups], []))
コード例 #4
0
    def get(self, request):
        # set each request parameters to description variables
        param_entity = request.query_params.get('entity')
        param_entry = request.query_params.get('entry')
        param_target_entity = request.query_params.get('target_entity')
        param_quiet = request.query_params.get('quiet')

        # validate input parameter
        if not param_entry:
            return Response({'result': 'Parameter "entry" is mandatory'},
                            status=status.HTTP_400_BAD_REQUEST)

        # declare query to send DB according to input parameters
        query = Q(name=param_entry, is_active=True)
        if param_entity:
            query &= Q(schema__name=param_entity)

        ret_data = []
        slave_db = get_slave_db()
        for entry in Entry.objects.using(slave_db).filter(query):
            ret_data.append({
                'id':
                entry.id,
                'entity': {
                    'id': entry.schema.id,
                    'name': entry.schema.name
                },
                'referral': [{
                    'id': x.id,
                    'name': x.name,
                    'entity': {} if param_quiet else {
                        'id': x.schema.id,
                        'name': x.schema.name
                    },
                } for x in entry.get_referred_objects(
                    entity_name=param_target_entity)]
            })

        return Response({'result': ret_data},
                        content_type='application/json; charset=UTF-8')
コード例 #5
0
ファイル: test_db.py プロジェクト: hinashi/airone
 def test_get_slave_db(self):
     self.assertIn(get_slave_db(), settings.AIRONE['DB_SLAVES'])