def delete_related_content(self): # NOTE: Remember to update code in taiga.projects.admin.ProjectAdmin.delete_selected from taiga.events.apps import (connect_events_signals, disconnect_events_signals) from taiga.projects.tasks.apps import (connect_all_tasks_signals, disconnect_all_tasks_signals) from taiga.projects.userstories.apps import (connect_all_userstories_signals, disconnect_all_userstories_signals) from taiga.projects.issues.apps import (connect_all_issues_signals, disconnect_all_issues_signals) from taiga.projects.apps import (connect_memberships_signals, disconnect_memberships_signals) disconnect_events_signals() disconnect_all_issues_signals() disconnect_all_tasks_signals() disconnect_all_userstories_signals() disconnect_memberships_signals() try: self.tasks.all().delete() self.user_stories.all().delete() self.issues.all().delete() self.memberships.all().delete() self.roles.all().delete() finally: connect_events_signals() connect_all_issues_signals() connect_all_tasks_signals() connect_all_userstories_signals() connect_memberships_signals()
def delete_related_content(self): from taiga.events.apps import (connect_events_signals, disconnect_events_signals) from taiga.projects.tasks.apps import (connect_all_tasks_signals, disconnect_all_tasks_signals) from taiga.projects.userstories.apps import ( connect_all_userstories_signals, disconnect_all_userstories_signals) from taiga.projects.issues.apps import (connect_all_issues_signals, disconnect_all_issues_signals) from taiga.projects.apps import (connect_memberships_signals, disconnect_memberships_signals) disconnect_events_signals() disconnect_all_issues_signals() disconnect_all_tasks_signals() disconnect_all_userstories_signals() disconnect_memberships_signals() try: self.tasks.all().delete() self.user_stories.all().delete() self.issues.all().delete() self.memberships.all().delete() self.roles.all().delete() finally: connect_events_signals() connect_all_issues_signals() connect_all_tasks_signals() connect_all_userstories_signals() connect_memberships_signals()
def delete_selected(self, request, queryset): # NOTE: This must be equal to taiga.projects.models.Project.delete_related_content from taiga.events.apps import (connect_events_signals, disconnect_events_signals) from taiga.projects.tasks.apps import (connect_all_tasks_signals, disconnect_all_tasks_signals) from taiga.projects.userstories.apps import ( connect_all_userstories_signals, disconnect_all_userstories_signals) from taiga.projects.issues.apps import (connect_all_issues_signals, disconnect_all_issues_signals) from taiga.projects.apps import (connect_memberships_signals, disconnect_memberships_signals) disconnect_events_signals() disconnect_all_issues_signals() disconnect_all_tasks_signals() disconnect_all_userstories_signals() disconnect_memberships_signals() r = admin.actions.delete_selected(self, request, queryset) connect_events_signals() connect_all_issues_signals() connect_all_tasks_signals() connect_all_userstories_signals() connect_memberships_signals() return r
def delete_queryset(self, request, queryset): # NOTE: Override delete_queryset so its use the same approach used in # taiga.projects.models.Project.delete_related_content. # # More info https://docs.djangoproject.com/en/2.2/ref/contrib/admin/actions/#admin-actions from taiga.events.apps import (connect_events_signals, disconnect_events_signals) from taiga.projects.tasks.apps import (connect_all_tasks_signals, disconnect_all_tasks_signals) from taiga.projects.userstories.apps import ( connect_all_userstories_signals, disconnect_all_userstories_signals) from taiga.projects.issues.apps import (connect_all_issues_signals, disconnect_all_issues_signals) from taiga.projects.apps import (connect_memberships_signals, disconnect_memberships_signals) disconnect_events_signals() disconnect_all_issues_signals() disconnect_all_tasks_signals() disconnect_all_userstories_signals() disconnect_memberships_signals() try: super().delete_queryset(request, queryset) finally: connect_events_signals() connect_all_issues_signals() connect_all_tasks_signals() connect_all_userstories_signals() connect_memberships_signals()
def delete_selected(self, request, queryset): # NOTE: This must be equal to taiga.projects.models.Project.delete_related_content from taiga.events.apps import (connect_events_signals, disconnect_events_signals) from taiga.projects.tasks.apps import (connect_all_tasks_signals, disconnect_all_tasks_signals) from taiga.projects.userstories.apps import (connect_all_userstories_signals, disconnect_all_userstories_signals) from taiga.projects.issues.apps import (connect_all_issues_signals, disconnect_all_issues_signals) from taiga.projects.apps import (connect_memberships_signals, disconnect_memberships_signals) disconnect_events_signals() disconnect_all_issues_signals() disconnect_all_tasks_signals() disconnect_all_userstories_signals() disconnect_memberships_signals() r = admin.actions.delete_selected(self, request, queryset) connect_events_signals() connect_all_issues_signals() connect_all_tasks_signals() connect_all_userstories_signals() connect_memberships_signals() return r
def delete_related_content(self): from taiga.events.apps import connect_events_signals, disconnect_events_signals from taiga.projects.tasks.apps import connect_all_tasks_signals, disconnect_all_tasks_signals from taiga.projects.userstories.apps import connect_all_userstories_signals, disconnect_all_userstories_signals from taiga.projects.issues.apps import connect_all_issues_signals, disconnect_all_issues_signals from taiga.projects.apps import connect_memberships_signals, disconnect_memberships_signals disconnect_events_signals() disconnect_all_issues_signals() disconnect_all_tasks_signals() disconnect_all_userstories_signals() disconnect_memberships_signals() try: self.tasks.all().delete() self.user_stories.all().delete() self.issues.all().delete() self.memberships.all().delete() self.roles.all().delete() finally: connect_events_signals() connect_all_issues_signals() connect_all_tasks_signals() connect_all_userstories_signals() connect_memberships_signals()
def destroy(self, request, *args, **kwargs): from taiga.events.apps import connect_events_signals, disconnect_events_signals from taiga.projects.tasks.apps import connect_all_tasks_signals, disconnect_all_tasks_signals from taiga.projects.userstories.apps import connect_all_userstories_signals, disconnect_all_userstories_signals from taiga.projects.issues.apps import connect_all_issues_signals, disconnect_all_issues_signals from taiga.projects.apps import connect_memberships_signals, disconnect_memberships_signals obj = self.get_object_or_none() self.check_permissions(request, 'destroy', obj) if obj is None: raise Http404 disconnect_events_signals() disconnect_all_issues_signals() disconnect_all_tasks_signals() disconnect_all_userstories_signals() disconnect_memberships_signals() try: obj.tasks.all().delete() obj.user_stories.all().delete() obj.issues.all().delete() obj.memberships.all().delete() obj.roles.all().delete() finally: connect_events_signals() connect_all_issues_signals() connect_all_tasks_signals() connect_all_userstories_signals() connect_memberships_signals() self.pre_delete(obj) self.pre_conditions_on_delete(obj) obj.delete() self.post_delete(obj) return response.NoContent()
def handle(self, *args, **options): # Prevent events emission when sample data is running disconnect_events_signals() self.users = [User.objects.get(is_superuser=True)] # create users if BASE_USERS: for username, full_name, email in BASE_USERS: self.users.append(self.create_user(username=username, full_name=full_name, email=email)) else: for x in range(NUM_USERS): self.users.append(self.create_user(counter=x)) # create project for x in range(NUM_PROJECTS + NUM_EMPTY_PROJECTS): project = self.create_project(x, is_private=(x in [2, 4] or self.sd.boolean())) # added memberships computable_project_roles = set() for user in self.users: if user == project.owner: continue role = self.sd.db_object_from_queryset(project.roles.all()) Membership.objects.create(email=user.email, project=project, role=role, is_owner=self.sd.boolean(), user=user) if role.computable: computable_project_roles.add(role) # added invitations for i in range(NUM_INVITATIONS): role = self.sd.db_object_from_queryset(project.roles.all()) Membership.objects.create(email=self.sd.email(), project=project, role=role, is_owner=self.sd.boolean(), token=''.join(random.sample('abcdef0123456789', 10))) if role.computable: computable_project_roles.add(role) # added custom attributes if self.sd.boolean: for i in range(1, 4): UserStoryCustomAttribute.objects.create(name=self.sd.words(1, 3), description=self.sd.words(3, 12), type=self.sd.choice(TYPES_CHOICES)[0], project=project, order=i) if self.sd.boolean: for i in range(1, 4): TaskCustomAttribute.objects.create(name=self.sd.words(1, 3), description=self.sd.words(3, 12), type=self.sd.choice(TYPES_CHOICES)[0], project=project, order=i) if self.sd.boolean: for i in range(1, 4): IssueCustomAttribute.objects.create(name=self.sd.words(1, 3), description=self.sd.words(3, 12), type=self.sd.choice(TYPES_CHOICES)[0], project=project, order=i) if x < NUM_PROJECTS: start_date = now() - datetime.timedelta(55) # create milestones for y in range(self.sd.int(*NUM_MILESTONES)): end_date = start_date + datetime.timedelta(15) milestone = self.create_milestone(project, start_date, end_date) # create uss asociated to milestones for z in range(self.sd.int(*NUM_USS)): us = self.create_us(project, milestone, computable_project_roles) # create tasks rang = NUM_TASKS_FINISHED if start_date <= now() and end_date <= now() else NUM_TASKS for w in range(self.sd.int(*rang)): if start_date <= now() and end_date <= now(): task = self.create_task(project, milestone, us, start_date, end_date, closed=True) elif start_date <= now() and end_date >= now(): task = self.create_task(project, milestone, us, start_date, now()) else: # No task on not initiated milestones pass start_date = end_date # created unassociated uss. for y in range(self.sd.int(*NUM_USS_BACK)): us = self.create_us(project, None, computable_project_roles) # create bugs. for y in range(self.sd.int(*NUM_ISSUES)): bug = self.create_bug(project) # create a wiki page wiki_page = self.create_wiki(project, "home") # Set a value to total_story_points to show the deadline in the backlog project_stats = get_stats_for_project(project) defined_points = project_stats["defined_points"] project.total_story_points = int(defined_points * self.sd.int(5,12) / 10) project.save() self.create_likes(project)
def handle(self, *args, **options): # Prevent events emission when sample data is running disconnect_events_signals() self.users = [User.objects.get(is_superuser=True)] # create users if BASE_USERS: for username, full_name, email in BASE_USERS: self.users.append( self.create_user(username=username, full_name=full_name, email=email)) else: for x in range(NUM_USERS): self.users.append(self.create_user(counter=x)) # create project projects_range = range(NUM_PROJECTS + NUM_EMPTY_PROJECTS + NUM_BLOCKED_PROJECTS) empty_projects_range = range(NUM_PROJECTS, NUM_PROJECTS + NUM_EMPTY_PROJECTS) blocked_projects_range = range( NUM_PROJECTS + NUM_EMPTY_PROJECTS, NUM_PROJECTS + NUM_EMPTY_PROJECTS + NUM_BLOCKED_PROJECTS) for x in projects_range: project = self.create_project( x, is_private=x in [2, 4], blocked_code=BLOCKED_BY_STAFF if x in (blocked_projects_range) else None) # added memberships computable_project_roles = set() for user in self.users: if user == project.owner: continue role = self.sd.db_object_from_queryset(project.roles.all()) Membership.objects.create(email=user.email, project=project, role=role, is_admin=self.sd.boolean(), user=user) if role.computable: computable_project_roles.add(role) # Delete a random member so all the projects doesn't have the same team Membership.objects.filter(project=project).exclude( user=project.owner).order_by("?").first().delete() # added invitations for i in range(NUM_INVITATIONS): role = self.sd.db_object_from_queryset(project.roles.all()) Membership.objects.create(email=self.sd.email(), project=project, role=role, is_admin=self.sd.boolean(), token=self.sd.hex_chars(10, 10)) if role.computable: computable_project_roles.add(role) # If the project isn't empty if x not in empty_projects_range: # added custom attributes names = set([self.sd.words(1, 3) for i in range(1, 6)]) for name in names: EpicCustomAttribute.objects.create( name=name, description=self.sd.words(3, 12), type=self.sd.choice(TYPES_CHOICES)[0], project=project, order=i) names = set([self.sd.words(1, 3) for i in range(1, 6)]) for name in names: UserStoryCustomAttribute.objects.create( name=name, description=self.sd.words(3, 12), type=self.sd.choice(TYPES_CHOICES)[0], project=project, order=i) names = set([self.sd.words(1, 3) for i in range(1, 6)]) for name in names: TaskCustomAttribute.objects.create( name=name, description=self.sd.words(3, 12), type=self.sd.choice(TYPES_CHOICES)[0], project=project, order=i) names = set([self.sd.words(1, 3) for i in range(1, 6)]) for name in names: IssueCustomAttribute.objects.create( name=name, description=self.sd.words(3, 12), type=self.sd.choice(TYPES_CHOICES)[0], project=project, order=i) start_date = now() - datetime.timedelta(55) # create milestones for y in range(self.sd.int(*NUM_MILESTONES)): end_date = start_date + datetime.timedelta(15) milestone = self.create_milestone(project, start_date, end_date) # create uss asociated to milestones for z in range(self.sd.int(*NUM_USS)): us = self.create_us(project, milestone, computable_project_roles) # create tasks rang = NUM_TASKS_FINISHED if start_date <= now( ) and end_date <= now() else NUM_TASKS for w in range(self.sd.int(*rang)): if start_date <= now() and end_date <= now(): task = self.create_task(project, milestone, us, start_date, end_date, closed=True) elif start_date <= now() and end_date >= now(): task = self.create_task( project, milestone, us, start_date, now()) else: # No task on not initiated milestones pass start_date = end_date # created unassociated uss. for y in range(self.sd.int(*NUM_USS_BACK)): us = self.create_us(project, None, computable_project_roles) # create bugs. for y in range(self.sd.int(*NUM_ISSUES)): bug = self.create_bug(project) # create a wiki pages and wiki links wiki_page = self.create_wiki_page(project, "home") for y in range(self.sd.int(*NUM_WIKI_LINKS)): wiki_link = self.create_wiki_link(project) if self.sd.boolean(): self.create_wiki_page(project, wiki_link.href) # create epics for y in range(self.sd.int(*NUM_EPICS)): epic = self.create_epic(project) project.refresh_from_db() # Set color for some tags: for tag in project.tags_colors: if self.sd.boolean(): tag[1] = self.generate_color(tag[0]) # Set a value to total_story_points to show the deadline in the backlog project_stats = get_stats_for_project(project) defined_points = project_stats["defined_points"] project.total_story_points = int(defined_points * self.sd.int(5, 12) / 10) project.save() self.create_likes(project)
def handle(self, *args, **options): # Prevent events emission when sample data is running disconnect_events_signals() self.users = [User.objects.get(is_superuser=True)] # create users if BASE_USERS: for username, full_name, email in BASE_USERS: self.users.append(self.create_user(username=username, full_name=full_name, email=email)) else: for x in range(NUM_USERS): self.users.append(self.create_user(counter=x)) # create project for x in range(NUM_PROJECTS + NUM_EMPTY_PROJECTS): project = self.create_project(x) # added memberships computable_project_roles = set() for user in self.users: if user == project.owner: continue role = self.sd.db_object_from_queryset(project.roles.all()) Membership.objects.create(email=user.email, project=project, role=role, is_owner=self.sd.boolean(), user=user) if role.computable: computable_project_roles.add(role) # added invitations for i in range(NUM_INVITATIONS): role = self.sd.db_object_from_queryset(project.roles.all()) Membership.objects.create(email=self.sd.email(), project=project, role=role, is_owner=self.sd.boolean(), token=''.join(random.sample('abcdef0123456789', 10))) if role.computable: computable_project_roles.add(role) # added custom attributes if self.sd.boolean: for i in range(1, 4): UserStoryCustomAttribute.objects.create(name=self.sd.words(1, 3), description=self.sd.words(3, 12), project=project, order=i) if self.sd.boolean: for i in range(1, 4): TaskCustomAttribute.objects.create(name=self.sd.words(1, 3), description=self.sd.words(3, 12), project=project, order=i) if self.sd.boolean: for i in range(1, 4): IssueCustomAttribute.objects.create(name=self.sd.words(1, 3), description=self.sd.words(3, 12), project=project, order=i) if x < NUM_PROJECTS: start_date = now() - datetime.timedelta(55) # create milestones for y in range(self.sd.int(*NUM_MILESTONES)): end_date = start_date + datetime.timedelta(15) milestone = self.create_milestone(project, start_date, end_date) # create uss asociated to milestones for z in range(self.sd.int(*NUM_USS)): us = self.create_us(project, milestone, computable_project_roles) # create tasks rang = NUM_TASKS_FINISHED if start_date <= now() and end_date <= now() else NUM_TASKS for w in range(self.sd.int(*rang)): if start_date <= now() and end_date <= now(): task = self.create_task(project, milestone, us, start_date, end_date, closed=True) elif start_date <= now() and end_date >= now(): task = self.create_task(project, milestone, us, start_date, now()) else: # No task on not initiated milestones pass start_date = end_date # created unassociated uss. for y in range(self.sd.int(*NUM_USS_BACK)): us = self.create_us(project, None, computable_project_roles) # create bugs. for y in range(self.sd.int(*NUM_ISSUES)): bug = self.create_bug(project) # create a wiki page wiki_page = self.create_wiki(project, "home") # Set a value to total_story_points to show the deadline in the backlog defined_points = sum(project.defined_points.values()) project.total_story_points = int(defined_points * self.sd.int(5,12) / 10) project.save()
def handle(self, *args, **options): # Prevent events emission when sample data is running disconnect_events_signals() self.users = [User.objects.get(is_superuser=True)] # create users if BASE_USERS: for username, full_name, email in BASE_USERS: self.users.append(self.create_user(username=username, full_name=full_name, email=email)) else: for x in range(NUM_USERS): self.users.append(self.create_user(counter=x)) # create project projects_range = range(NUM_PROJECTS + NUM_EMPTY_PROJECTS + NUM_BLOCKED_PROJECTS) empty_projects_range = range(NUM_PROJECTS, NUM_PROJECTS + NUM_EMPTY_PROJECTS ) blocked_projects_range = range( NUM_PROJECTS + NUM_EMPTY_PROJECTS, NUM_PROJECTS + NUM_EMPTY_PROJECTS + NUM_BLOCKED_PROJECTS ) for x in projects_range: project = self.create_project( x, is_private=x in [2, 4], blocked_code = BLOCKED_BY_STAFF if x in(blocked_projects_range) else None ) # added memberships computable_project_roles = set() for user in self.users: if user == project.owner: continue role = self.sd.db_object_from_queryset(project.roles.all()) Membership.objects.create(email=user.email, project=project, role=role, is_admin=self.sd.boolean(), user=user) if role.computable: computable_project_roles.add(role) # Delete a random member so all the projects doesn't have the same team Membership.objects.filter(project=project).exclude(user=project.owner).order_by("?").first().delete() # added invitations for i in range(NUM_INVITATIONS): role = self.sd.db_object_from_queryset(project.roles.all()) Membership.objects.create(email=self.sd.email(), project=project, role=role, is_admin=self.sd.boolean(), token=self.sd.hex_chars(10,10)) if role.computable: computable_project_roles.add(role) # If the project isn't empty if x not in empty_projects_range: # added custom attributes names = set([self.sd.words(1, 3) for i in range(1, 6)]) for name in names: EpicCustomAttribute.objects.create(name=name, description=self.sd.words(3, 12), type=self.sd.choice(TYPES_CHOICES)[0], project=project, order=i) names = set([self.sd.words(1, 3) for i in range(1, 6)]) for name in names: UserStoryCustomAttribute.objects.create(name=name, description=self.sd.words(3, 12), type=self.sd.choice(TYPES_CHOICES)[0], project=project, order=i) names = set([self.sd.words(1, 3) for i in range(1, 6)]) for name in names: TaskCustomAttribute.objects.create(name=name, description=self.sd.words(3, 12), type=self.sd.choice(TYPES_CHOICES)[0], project=project, order=i) names = set([self.sd.words(1, 3) for i in range(1, 6)]) for name in names: IssueCustomAttribute.objects.create(name=name, description=self.sd.words(3, 12), type=self.sd.choice(TYPES_CHOICES)[0], project=project, order=i) start_date = now() - datetime.timedelta(55) # create milestones for y in range(self.sd.int(*NUM_MILESTONES)): end_date = start_date + datetime.timedelta(15) milestone = self.create_milestone(project, start_date, end_date) # create uss asociated to milestones for z in range(self.sd.int(*NUM_USS)): us = self.create_us(project, milestone, computable_project_roles) # create tasks rang = NUM_TASKS_FINISHED if start_date <= now() and end_date <= now() else NUM_TASKS for w in range(self.sd.int(*rang)): if start_date <= now() and end_date <= now(): task = self.create_task(project, milestone, us, start_date, end_date, closed=True) elif start_date <= now() and end_date >= now(): task = self.create_task(project, milestone, us, start_date, now()) else: # No task on not initiated milestones pass start_date = end_date # created unassociated uss. for y in range(self.sd.int(*NUM_USS_BACK)): us = self.create_us(project, None, computable_project_roles) # create bugs. for y in range(self.sd.int(*NUM_ISSUES)): bug = self.create_bug(project) # create a wiki pages and wiki links wiki_page = self.create_wiki_page(project, "home") for y in range(self.sd.int(*NUM_WIKI_LINKS)): wiki_link = self.create_wiki_link(project) if self.sd.boolean(): self.create_wiki_page(project, wiki_link.href) # create epics for y in range(self.sd.int(*NUM_EPICS)): epic = self.create_epic(project) project.refresh_from_db() # Set color for some tags: for tag in project.tags_colors: if self.sd.boolean(): tag[1] = self.generate_color(tag[0]) # Set a value to total_story_points to show the deadline in the backlog project_stats = get_stats_for_project(project) defined_points = project_stats["defined_points"] project.total_story_points = int(defined_points * self.sd.int(5,12) / 10) project.save() self.create_likes(project)