Ejemplo n.º 1
0
 def get(self, uuid):
     permission = permissions.get_metadata(uuid).json()
     if 'errors' in permission:
         permission = None
         object_type = None
     else:
         api_handler = self.get_api_handler(permission['object_type'])
         # dashboard uses singular object names as labels to differentiate
         # single views from listings
         object_type = permission['object_type'][:-1]
         # create a dict of objects where keys are uuid and values are
         # objects
         objects = api_handler.list_metadata()
         object_list = objects.json()
         object_map = {obj[f'{object_type}_id']: obj for obj in object_list}
         # rebuild the 'objects' dict with the uuid: object structure
         # instead of uuid: created_at
         permission['objects'] = {
             k: {
                 'added_to_permission': v,
                 **object_map[k]
             }
             for k, v in permission['objects'].items() if k in object_map
         }
     return render_template('forms/admin/permission.html',
                            permission=permission,
                            dashboard_type=object_type,
                            **self.template_args())
Ejemplo n.º 2
0
 def get(self, uuid, **kwargs):
     try:
         permission = permissions.get_metadata(uuid)
     except DataRequestException as e:
         return render_template(self.template, errors=e.errors)
     else:
         self.set_template_args(permission)
     return render_template(self.template, **self.template_args)
Ejemplo n.º 3
0
 def get(self, uuid):
     self.set_template_args()
     try:
         perm = permissions.get_metadata(uuid)
     except DataRequestException as e:
         self.template_args['errors'] = e.errors
     else:
         self.template_args['metadata'] = render_template(
             self.meta_template, data_type="permission", permission=perm)
         self.template_args['uuid'] = perm['permission_id']
         self.template_args['data_type'] = 'permission'
     return render_template(self.template, **self.template_args)
Ejemplo n.º 4
0
 def get(self, uuid, permission_id, **kwargs):
     """Confirmation view for removing permission from a role
     """
     try:
         role = roles.get_metadata(uuid)
         permission = permissions.get_metadata(permission_id)
     except DataRequestException as e:
         return render_template(self.template, errors=e.errors)
     self.set_template_args()
     return render_template(self.template,
                            role=role,
                            perm=permission,
                            **kwargs,
                            **self.template_args)
Ejemplo n.º 5
0
 def get(self, uuid, object_id, **kwargs):
     try:
         permission = permissions.get_metadata(uuid)
         api = self.get_api_handler(permission['object_type'])
         object_data = api.get_metadata(object_id)
     except DataRequestException as e:
         return render_template(self.template, errors=e.errors)
     else:
         self.set_template_args()
         return render_template(self.template,
                                permission=permission,
                                object_data=object_data,
                                object_id=object_id,
                                **kwargs,
                                **self.template_args)
Ejemplo n.º 6
0
    def get(self, uuid, **kwargs):
        try:
            permission = permissions.get_metadata(uuid)
        except DataRequestException as e:
            # If the permission could not be read, display the api error and
            # take no further action
            return render_template(self.template, errors=e.errors)
        else:
            # remove trailing s from object type, since dashboard uses singular
            # names for data types.
            data_type = permission['object_type'][:-1]
            api = self.get_api_handler(permission['object_type'])

            # Get a list of object uuids on the permission
            perm_objects = list(permission['objects'].keys())

            # Users can't add objects from other organizations to their
            # permissions, so remove them.
            all_objects = api.list_metadata()
            all_objects = self.filter_by_org(all_objects, 'provider')

            if data_type == 'report':
                # move 'name' field from nested report_parameters, and remove
                # other unnecessary fields
                all_objects = self.flatten_reports(all_objects)

            # remove any objects already on the permission
            if 'forecast' in data_type:
                object_id_key = 'forecast_id'
            else:
                object_id_key = f"{data_type}_id"
            all_objects = [
                obj for obj in all_objects
                if obj[object_id_key] not in perm_objects
            ]
            self.set_template_args(permission)
        return render_template(self.template,
                               table_data=all_objects,
                               data_type=data_type,
                               **self.template_args,
                               **kwargs)