Ejemplo n.º 1
0
 def add_worksheet_item(self, worksheet_uuid, item):
     '''
     Add the given item to the worksheet.
     '''
     worksheet = self.model.get_worksheet(worksheet_uuid, fetch_items=False)
     check_has_all_permission(self.model, self._current_user(), worksheet)
     self.model.add_worksheet_item(worksheet_uuid, item)
Ejemplo n.º 2
0
 def chown_worksheet(self, uuid, owner_spec):
     '''
     Change the owner of the given worksheet |uuid| to |owner|.
     '''
     worksheet = self.model.get_worksheet(uuid, fetch_items=False)
     check_has_all_permission(self.model, self._current_user(), worksheet)
     owner_id = self.user_info(owner_spec)['id']
     self.model.chown_worksheet(worksheet, owner_id)
Ejemplo n.º 3
0
 def update_worksheet(self, worksheet_info, new_items):
     '''
     Set the worksheet to have items |new_items|.
     '''
     worksheet_uuid = worksheet_info['uuid']
     last_item_id = worksheet_info['last_item_id']
     length = len(worksheet_info['items'])
     worksheet = self.model.get_worksheet(worksheet_uuid, fetch_items=False)
     check_has_all_permission(self.model, self._current_user(), worksheet)
     try:
         new_items = [worksheet_util.convert_item_to_db(item) for item in new_items]
         self.model.update_worksheet(worksheet_uuid, last_item_id, length, new_items)
     except UsageError:
         # Turn the model error into a more readable one using the object.
         raise UsageError('%s was updated concurrently!' % (worksheet,))
Ejemplo n.º 4
0
    def set_worksheet_perm(self, worksheet_uuid, group_spec, permission_spec):
        '''
        Give the given |group_spec| the desired |permission_spec| on |worksheet_uuid|.
        '''
        worksheet = self.model.get_worksheet(worksheet_uuid, fetch_items=False)
        check_has_all_permission(self.model, self._current_user(), worksheet)
        group_info = self._get_group_info(group_spec, need_admin=False)
        old_permission = self.model.get_group_permission(group_info['uuid'], worksheet.uuid)
        new_permission = parse_permission(permission_spec)

        if new_permission > 0:
            if old_permission > 0:
                self.model.update_permission(group_info['uuid'], worksheet.uuid, new_permission)
            else:
                self.model.add_permission(group_info['uuid'], worksheet.uuid, new_permission)
        else:
            if old_permission > 0:
                self.model.delete_permission(group_info['uuid'], worksheet.uuid)
        return {'worksheet': {'uuid': worksheet.uuid, 'name': worksheet.name},
                'group_info': group_info,
                'permission': new_permission}
Ejemplo n.º 5
0
 def delete_worksheet(self, uuid):
     worksheet = self.model.get_worksheet(uuid, fetch_items=False)
     check_has_all_permission(self.model, self._current_user(), worksheet)
     self.model.delete_worksheet(uuid)