def post(self, request, *args, **kwargs): self.set_context_props(request, **kwargs) body = json.loads(request.body) action = body.get('action', None) user = body.get('user', None) permission = body.get('permission', None) DataEvent.send_generic_event({ 'username_from': request.user.username, 'username_to': user, 'permission': permission, 'action': 'share_start', 'path': self.file_path, 'action_link': { 'label': 'View Files', 'value': '/data/my/#/Shared with me/' + self.file_path}, 'html':[ {'Message': 'Your files are been shared.'}, {'Action': 'Sharing Sarting'}, {'Shared with': user}, {'Permissions set': permission}, ], 'toast': { 'type': 'info', 'msg': user + ' will be notified when shared files are available.' } }, [request.user.username]) tasks.share.delay(system_id = self.filesystem, path = self.file_path, username = user, permission = permission, me = request.user.username) return self.render_to_json_response({'message':'Sharing...'})
def share(system_id, path, username, permission, me): logger.debug('Sharing file/folder: {}. To: {}. Owner: {}'.format(path, username, me)) path_shared = path try: user = get_user_model().objects.get(username=me) ag = user.agave_oauth.client mngr = FileManager(agave_client = ag) rep = mngr.share(system_id = system_id, path = path, username = username, permission = permission, me = me) meta_obj, ret = mngr.get(system_id, path, me, False) if meta_obj.format != 'folder': path_shared = meta_obj.path logger.debug('Successfully updated permissions: {}'.format(rep)) DataEvent.send_generic_event({ 'username_from': me, 'username_to': username, 'permission': permission, 'action': 'share_finished', 'path': path, 'action_link': { 'label': 'View Files', 'value': '/data/my/#/Shared with me/' + path_shared}, 'html':[ {'Message': 'Your files have been shared.'}, {'Action': 'Sharing Finished'}, {'Shared with': username}, {'Permissions set': permission}, ] }, [me]) DataEvent.send_generic_event({ 'username_from': me, 'username_to': username, 'permission': permission, 'action': 'share_finished', 'path': path, 'action_link': { 'label': 'View Files', 'value': '/data/my/#/Shared with me/' + path_shared}, 'html':[ {'Message': '{} have shared some files with you.'.format(me)}, {'Action': 'Sharing Finished'}, {'Shared with': username}, {'Permissions set': permission}, ], 'toast': { 'type': 'info', 'msg': me + ' has shared files with you.' } }, [username]) except ObjectDoesNotExist: logger.exception('Unable to locate local user=%s' % username)