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)
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)
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,))
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}
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)