def downgrade(active_plugins=None, options=None): op.add_column(u'worklists', sa.Column('permission_id', mysql.INTEGER(display_width=11), autoincrement=False, nullable=True)) op.create_foreign_key(u'worklists_ibfk_2', 'worklists', 'permissions', ['permission_id'], ['id']) op.add_column(u'boards', sa.Column('permission_id', mysql.INTEGER(display_width=11), autoincrement=False, nullable=True)) op.create_foreign_key(u'boards_ibfk_2', 'boards', 'permissions', ['permission_id'], ['id']) session = api_base.get_session(in_request=False) to_delete = [] for board in boards.get_all(session=session): for permission in board.permissions: to_delete.append(permission) for worklist in worklists.get_all(session=session): for permission in worklist.permissions: to_delete.append(permission) op.drop_table('worklist_permissions') op.drop_table('board_permissions') for permission in to_delete: api_base.entity_hard_delete( models.Permission, permission.id, session=session)
def downgrade(active_plugins=None, options=None): op.add_column( u'worklists', sa.Column('permission_id', mysql.INTEGER(display_width=11), autoincrement=False, nullable=True)) op.create_foreign_key(u'worklists_ibfk_2', 'worklists', 'permissions', ['permission_id'], ['id']) op.add_column( u'boards', sa.Column('permission_id', mysql.INTEGER(display_width=11), autoincrement=False, nullable=True)) op.create_foreign_key(u'boards_ibfk_2', 'boards', 'permissions', ['permission_id'], ['id']) session = api_base.get_session(in_request=False) to_delete = [] for board in boards.get_all(session=session): for permission in board.permissions: to_delete.append(permission) for worklist in worklists.get_all(session=session): for permission in worklist.permissions: to_delete.append(permission) op.drop_table('worklist_permissions') op.drop_table('board_permissions') for permission in to_delete: api_base.entity_hard_delete(models.Permission, permission.id, session=session)
def user_update_preferences(user_id, preferences): for key in preferences: value = preferences[key] prefs = api_base.entity_get_all(models.UserPreference, user_id=user_id, key=key) if prefs: pref = prefs[0] else: pref = None # If the preference exists and it's null. if pref and value is None: api_base.entity_hard_delete(models.UserPreference, pref.id) continue # If the preference exists and has a new value. if pref and value and pref.cast_value != value: pref.cast_value = value api_base.entity_update(models.UserPreference, pref.id, dict(pref)) continue # If the preference does not exist and a new value exists. if not pref and value: api_base.entity_create(models.UserPreference, { 'user_id': user_id, 'key': key, 'cast_value': value }) return user_get_preferences(user_id)
def task_delete(task_id): task = task_get(task_id) if task: stories_api.story_update_updated_at(task.story_id) # Update updated_at in projects when task/story is deleted projects_api.project_update_updated_at(task.project_id) api_base.entity_hard_delete(models.Task, task_id)
def team_delete(team_id): team = team_get(team_id) if not team: raise exc.NotFound(_('Team not found.')) if len(team.users) > 0: raise exc.NotEmpty(_('Team must be empty.')) api_base.entity_hard_delete(models.Team, team_id)
def project_group_delete(project_group_id): project_group = project_group_get(project_group_id) if not project_group: raise exc.NotFound(_('Project group not found.')) if len(project_group.projects) > 0: raise exc.NotEmpty(_('Project group must be empty.')) api_base.entity_hard_delete(models.ProjectGroup, project_group_id)
def testSimpleGroupMigration(self): # Clear out previous projects. for project in api_base.entity_get_all(Project): api_base.entity_hard_delete(Project, project.id) projects_loader.do_load_models('./etc/projects.yaml.sample') all_groups = api_base.entity_get_all(ProjectGroup) all_projects = api_base.entity_get_all(Project) self.assertEqual(3, len(all_groups)) self.assertEqual(2, len(all_projects)) for project in all_projects: branches = api_base.entity_get_count(Branch, project_id=project.id, name='master') self.assertEqual(1, branches)
def handle_deletions(self, session, resource_name, resource_id): target_subs = [] sub_ids = set() resource_name = resource_name[:-1] target_sub = db_api.entity_get_all(models.Subscription, target_type=resource_name, target_id=resource_id, session=session) target_subs.extend(target_sub) for sub in target_subs: sub_ids.add(sub.id) for sub_id in sub_ids: db_api.entity_hard_delete(models.Subscription, sub_id, session=session)
def user_update_preferences(user_id, preferences): for key in preferences: value = preferences[key] prefs = api_base.entity_get_all(models.UserPreference, user_id=user_id, key=key) matching_prefs = [] if prefs: for p in prefs: if p.key == key: # FIXME: We create a list here because there appears to # currently be a bug which means that each preference may # appear more than once per-user. We should fix that once # we discover the cause. matching_prefs.append(p) else: pref = None for pref in matching_prefs: # If the preference exists and it's null. if pref and value is None: api_base.entity_hard_delete(models.UserPreference, pref.id) continue # If the preference exists and has a new value. if pref and value is not None and pref.cast_value != value: pref.cast_value = value api_base.entity_update( models.UserPreference, pref.id, dict(pref)) continue # If the preference does not exist and a new value exists. if not matching_prefs and value is not None: api_base.entity_create(models.UserPreference, { 'user_id': user_id, 'key': key, 'cast_value': value }) return user_get_preferences(user_id)
def task_delete(task_id): task = task_get(task_id) if task: stories_api.story_update_updated_at(task.story_id) api_base.entity_hard_delete(models.Task, task_id)
def task_delete(task_id): task = task_get(task_id) if task: api_base.entity_hard_delete(models.Task, task_id)
def authorization_code_delete(code): del_code = authorization_code_get(code) if del_code: api_base.entity_hard_delete(models.AuthorizationCode, del_code.id)
def delete_filter(filter_id): filter = api_base.entity_get(models.WorklistFilter, filter_id) for criterion in filter.criteria: api_base.entity_hard_delete(models.FilterCriterion, criterion.id) api_base.entity_hard_delete(models.WorklistFilter, filter_id)
def story_delete(story_id, current_user=None): story = story_get(story_id, current_user=current_user) if story: api_base.entity_hard_delete(models.Story, story_id)
def subscription_delete(subscription_id): subscription = subscription_get(subscription_id) if subscription: api_base.entity_hard_delete(models.Subscription, subscription_id)
def subscription_events_delete(subscription_event_id): subscription = subscription_events_get(subscription_event_id) if subscription: api_base.entity_hard_delete(models.SubscriptionEvents, subscription_event_id)
def story_delete(story_id): story = story_get(story_id) if story: api_base.entity_hard_delete(models.Story, story_id)