Example #1
0
    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...'})
Example #2
0
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)