Example #1
0
    def _get_label(self, name, field_args):
        """
            Label for field name. If it is not specified explicitly,
            then the views prettify_name method is used to find it.
            :param field_args:
                Dictionary with additional field arguments
        """
        if 'label' in field_args:
            return field_args['label']

        column_labels = get_property(self.view, 'column_labels', 'rename_columns')

        if column_labels and name in column_labels:
            return column_labels.get(name)

        prettify_override = getattr(self.view, 'prettify_name', None)
        if prettify_override:
            return prettify_override(name)

        return prettify_name(name)
Example #2
0
    def _get_label(self, name, field_args):
        """
            Label for field name. If it is not specified explicitly,
            then the views prettify_name method is used to find it.

            :param field_args:
                Dictionary with additional field arguments
        """
        if 'label' in field_args:
            return field_args['label']

        column_labels = get_property(self.view, 'column_labels', 'rename_columns')

        if column_labels:
            return column_labels.get(name)

        prettify_override = getattr(self.view, 'prettify_name', None)
        if prettify_override:
            return prettify_override(name)

        return prettify_name(name)
Example #3
0
    def generate_permissions(self):
        permission_codes = []
        for tenant_admin, _ in self.admin._tenant_admins:
            permission_code = '{}.*'.format(tenant_admin.endpoint)
            permission_name = prettify_name('{}.all'.format(
                tenant_admin.endpoint))
            permission_codes.append((permission_code, permission_name))
            for view in tenant_admin._views:
                endpoint = view.endpoint
                if isinstance(view, AdminIndexView):
                    permission_code = '{}.index'.format(tenant_admin.endpoint)
                    permission_name = prettify_name(permission_code)
                    permission_codes.append((permission_code, permission_name))
                    continue

                permission_code = '{}.{}.list'.format(tenant_admin.endpoint,
                                                      endpoint)
                permission_name = view._prettify_name(permission_code)
                permission_codes.append((permission_code, permission_name))

                for action in view._actions:
                    permission_code = '{}.{}.{}'.format(
                        tenant_admin.endpoint, endpoint, action)
                    permission_name = view._prettify_name(permission_code)
                    permission_codes.append((permission_code, permission_name))

        permission_code = '*'
        permission_name = 'All'
        permission_codes.append((permission_code, permission_name))
        for view in self.admin._views:
            endpoint = view.endpoint
            if isinstance(view, AdminIndexView):
                permission_code = 'index'
                permission_name = prettify_name(permission_code)
                permission_codes.append((permission_code, permission_name))
                continue

            permission_code = '{}.list'.format(endpoint)
            permission_name = view._prettify_name(permission_code)
            permission_codes.append((permission_code, permission_name))

            for action in view._actions:
                permission_code = '{}.{}'.format(endpoint, action)
                permission_name = view._prettify_name(permission_code)
                permission_codes.append((permission_code, permission_name))

        for permission_code, permission_name in permission_codes:
            query = self.Permission.query.filter_by(code=permission_code)
            permission = query.one_or_none()
            if permission is None:
                permission = self.Permission(code=permission_code)
                self.db.session.add(permission)
            permission.name = permission_name

        to_delete_permissions = []
        permission_codes = [p[0] for p in permission_codes]
        for permission in self.Permission.query.all():
            if permission.code not in permission_codes:
                to_delete_permissions.append(permission)

        for permission in to_delete_permissions:
            self.db.session.delete(permission)

        self.db.session.commit()