diff --git a/app/project_management/forms/project.py b/app/project_management/forms/project.py deleted file mode 100644 index fb9dbed9..00000000 --- a/app/project_management/forms/project.py +++ /dev/null @@ -1,150 +0,0 @@ -from django import forms -from django.urls import reverse -from django.db.models import Q - -from django.conf import settings - -from core.forms.common import CommonModelForm -from core.templatetags.markdown import to_duration - -from project_management.models.projects import Project - - - -class ProjectForm(CommonModelForm): - - prefix = 'project' - - class Meta: - fields = '__all__' - - - model = Project - - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - self.fields['planned_start_date'].widget = forms.widgets.DateTimeInput(attrs={'type': 'datetime-local', 'format': "%Y-%m-%dT%H:%M"}) - self.fields['planned_start_date'].input_formats = settings.DATETIME_FORMAT - self.fields['planned_start_date'].format="%Y-%m-%dT%H:%M" - - self.fields['planned_finish_date'].widget = forms.widgets.DateTimeInput(attrs={'type': 'datetime-local'}) - self.fields['planned_finish_date'].input_formats = settings.DATETIME_FORMAT - self.fields['planned_finish_date'].format="%Y-%m-%dT%H:%M" - - self.fields['real_start_date'].widget = forms.widgets.DateTimeInput(attrs={'type': 'datetime-local'}) - self.fields['real_start_date'].input_formats = settings.DATETIME_FORMAT - self.fields['real_start_date'].format="%Y-%m-%dT%H:%M" - - self.fields['real_finish_date'].widget = forms.widgets.DateTimeInput(attrs={'type': 'datetime-local'}) - self.fields['real_finish_date'].input_formats = settings.DATETIME_FORMAT - self.fields['real_finish_date'].format="%Y-%m-%dT%H:%M" - - self.fields['description'].widget.attrs = {'style': "height: 800px; width: 1000px"} - - -class DetailForm(ProjectForm): - - - tabs: dict = { - "details": { - "name": "Details", - "slug": "details", - "sections": [ - { - "layout": "double", - "left": [ - 'organization', - 'code', - 'name', - 'priority', - 'project_type', - 'state', - 'completed', - 'organization' - ], - "right": [ - 'planned_start_date', - 'planned_finish_date', - 'real_start_date', - 'real_finish_date', - 'duration' - ] - }, - { - "layout": "double", - "name": "Manager", - "left": [ - 'manager_user', - ], - "right": [ - 'manager_team', - ] - }, - { - "layout": "single", - "name": "Description", - "fields": [ - 'description', - ], - "markdown": [ - 'description', - ], - }, - ] - }, - "tasks": { - "name": "Tasks", - "slug": "tasks", - "sections": [] - }, - "milestones": { - "name": "Milestones", - "slug": "milestones", - "sections": [] - }, - "notes": { - "name": "Notes", - "slug": "notes", - "sections": [] - } - } - - - def __init__(self, *args, **kwargs): - - super().__init__(*args, **kwargs) - - self.fields['c_created'] = forms.DateTimeField( - label = 'Created', - input_formats=settings.DATETIME_FORMAT, - disabled = True, - initial = self.instance.created, - ) - - self.fields['c_modified'] = forms.DateTimeField( - label = 'Modified', - input_formats=settings.DATETIME_FORMAT, - disabled = True, - initial = self.instance.modified, - ) - - self.fields['duration'] = forms.IntegerField( - label = 'Duration', - disabled = True, - initial = to_duration(self.instance.duration_project), - ) - - self.fields['completed'] = forms.CharField( - disabled = True, - help_text = 'Project completion percentage.', - initial = self.instance.percent_completed, - label = 'Completed', - ) - - self.tabs['details'].update({ - "edit_url": reverse('Project Management:_project_change', args=(self.instance.pk,)) - }) - - self.url_index_view = reverse('Project Management:Projects') diff --git a/app/project_management/forms/project_milestone.py b/app/project_management/forms/project_milestone.py deleted file mode 100644 index 9a29420f..00000000 --- a/app/project_management/forms/project_milestone.py +++ /dev/null @@ -1,109 +0,0 @@ -from django import forms -from django.urls import reverse -from django.db.models import Q - -from django.conf import settings - -from core.forms.common import CommonModelForm -from core.templatetags.markdown import to_duration - -from project_management.models.project_milestone import ProjectMilestone - - - -class ProjectMilestoneForm(CommonModelForm): - - prefix = 'project' - - class Meta: - fields = [ - 'id', - 'organization', - 'name', - 'description', - 'project', - 'start_date', - 'finish_date', - ] - - - model = ProjectMilestone - - - def __init__(self, *args, **kwargs): - super().__init__(*args, **kwargs) - - self.fields['start_date'].widget = forms.widgets.DateTimeInput(attrs={'type': 'datetime-local', 'format': "%Y-%m-%dT%H:%M"}) - self.fields['start_date'].input_formats = settings.DATETIME_FORMAT - self.fields['start_date'].format="%Y-%m-%dT%H:%M" - - self.fields['finish_date'].widget = forms.widgets.DateTimeInput(attrs={'type': 'datetime-local'}) - self.fields['finish_date'].input_formats = settings.DATETIME_FORMAT - self.fields['finish_date'].format="%Y-%m-%dT%H:%M" - - self.fields['description'].widget.attrs = {'style': "height: 800px; width: 1000px"} - - self.fields['project'].widget = self.fields['project'].hidden_widget() - - -class DetailForm(ProjectMilestoneForm): - - - tabs: dict = { - "details": { - "name": "Details", - "slug": "details", - "sections": [ - { - "layout": "double", - "left": [ - 'name', - 'percent_completed', - 'organization' - 'c_created', - 'c_modified', - ], - "right": [ - 'start_date', - 'finish_date', - ] - }, - { - "layout": "single", - "name": "Description", - "fields": [ - 'description', - ], - "markdown": [ - 'description', - ], - }, - ] - }, - "tasks": { - "name": "Tasks", - "slug": "tasks", - "sections": [] - }, - } - - - def __init__(self, *args, **kwargs): - - super().__init__(*args, **kwargs) - - self.fields['c_created'] = forms.DateTimeField( - label = 'Created', - input_formats=settings.DATETIME_FORMAT, - disabled = True, - initial = self.instance.created, - ) - - self.fields['c_modified'] = forms.DateTimeField( - label = 'Modified', - input_formats=settings.DATETIME_FORMAT, - disabled = True, - initial = self.instance.modified, - ) - - self.url_index_view = reverse('Project Management:_project_view', kwargs={'pk': self.instance.project.id}) + '?tab=milestones' diff --git a/app/project_management/forms/project_states.py b/app/project_management/forms/project_states.py deleted file mode 100644 index ea900db5..00000000 --- a/app/project_management/forms/project_states.py +++ /dev/null @@ -1,79 +0,0 @@ - -from django import forms -from django.urls import reverse - -from django.conf import settings - -from core.forms.common import CommonModelForm - -from project_management.models.project_states import ProjectState - - -class ProjectStateForm(CommonModelForm): - - class Meta: - - fields = '__all__' - - model = ProjectState - - prefix = 'project_state' - - - - - -class DetailForm(ProjectStateForm): - - tabs: dict = { - "details": { - "name": "Details", - "slug": "details", - "sections": [ - { - "layout": "double", - "left": [ - 'organization', - 'name', - 'is_completed', - 'runbook', - 'c_created', - 'c_modified', - ], - "right": [ - 'model_notes', - ] - }, - ] - }, - "notes": { - "name": "Notes", - "slug": "notes", - "sections": [] - } - } - - - def __init__(self, *args, **kwargs): - - super().__init__(*args, **kwargs) - - self.fields['c_created'] = forms.DateTimeField( - label = 'Created', - input_formats=settings.DATETIME_FORMAT, - disabled = True, - initial = self.instance.created, - ) - - self.fields['c_modified'] = forms.DateTimeField( - label = 'Modified', - input_formats=settings.DATETIME_FORMAT, - disabled = True, - initial = self.instance.modified, - ) - - self.tabs['details'].update({ - "edit_url": reverse('Settings:_project_state_change', kwargs={'pk': self.instance.pk}) - }) - - self.url_index_view = reverse('Settings:_project_states') diff --git a/app/project_management/forms/project_types.py b/app/project_management/forms/project_types.py deleted file mode 100644 index 3e3b1776..00000000 --- a/app/project_management/forms/project_types.py +++ /dev/null @@ -1,85 +0,0 @@ - -from django import forms -from django.urls import reverse - -from django.conf import settings - -from core.forms.common import CommonModelForm - -from project_management.models.project_types import ProjectType - - - -class ProjectTypeForm(CommonModelForm): - - - class Meta: - - fields = '__all__' - - model = ProjectType - - prefix = 'project_type' - - - def clean(self): - - cleaned_data = super().clean() - - return cleaned_data - - - -class DetailForm(ProjectTypeForm): - - tabs: dict = { - "details": { - "name": "Details", - "slug": "details", - "sections": [ - { - "layout": "double", - "left": [ - 'organization', - 'name', - 'runbook', - 'c_created', - 'c_modified', - ], - "right": [ - 'model_notes', - ] - }, - ] - }, - "notes": { - "name": "Notes", - "slug": "notes", - "sections": [] - } - } - - - def __init__(self, *args, **kwargs): - - super().__init__(*args, **kwargs) - - self.fields['c_created'] = forms.DateTimeField( - label = 'Created', - input_formats=settings.DATETIME_FORMAT, - disabled = True, - initial = self.instance.created, - ) - - self.fields['c_modified'] = forms.DateTimeField( - label = 'Modified', - input_formats=settings.DATETIME_FORMAT, - disabled = True, - initial = self.instance.modified, - ) - - self.tabs['details'].update({ - "edit_url": reverse('Settings:_project_type_change', kwargs={'pk': self.instance.pk}) - }) - - self.url_index_view = reverse('Settings:_project_types') diff --git a/app/project_management/templates/icons/project.svg b/app/project_management/templates/icons/project.svg deleted file mode 100644 index 4eda42b4..00000000 --- a/app/project_management/templates/icons/project.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/app/project_management/templates/project_management/project.html.j2 b/app/project_management/templates/project_management/project.html.j2 deleted file mode 100644 index 29854730..00000000 --- a/app/project_management/templates/project_management/project.html.j2 +++ /dev/null @@ -1,117 +0,0 @@ -{% extends 'detail.html.j2' %} - -{% block additional-stylesheet %} - {% load static %} - -{% endblock additional-stylesheet %} - -{% load json %} -{% load markdown %} - - -{% block tabs %} - -
- - {% include 'content/section.html.j2' with tab=form.tabs.details %} - -
- -
- - {% include 'content/section.html.j2' with tab=form.tabs.milestones %} - - - - - - - - - - - {% if milestones %} - {% for milestone in milestones %} - - - - - - - {% endfor %} - {% else %} - - {% endif %} -
NameCompletedStartedFinished
- - {{ milestone.name }} - - {{ milestone.percent_completed }}{{ milestone.start_date }}{{ milestone.finish_date }}
Nothing Found
- -
- - -
- - {% include 'content/section.html.j2' with tab=form.tabs.tasks %} - - - - - - - - - - - - {% for project_task in project_tasks %} - - - - - - - - {% endfor %} -
idtitlestatustypecreated
{{ project_task.id }} - {% if project_task.get_ticket_type_display|lower == 'change' %} - - {% elif project_task.get_ticket_type_display|lower == 'incident' %} - - {% elif project_task.get_ticket_type_display|lower == 'problem' %} - - {% elif project_task.get_ticket_type_display|lower == 'request' %} - - {% elif project_task.get_ticket_type_display|lower == 'project task' %} - - {% else %} - - {% endif %} - {{ project_task.title }} - - - {% include 'core/ticket/badge_ticket_status.html.j2' with ticket_status_text=project_task.get_status_display ticket_status=project_task.get_status_display|ticket_status %} - {{ project_task.get_ticket_type_display }}{{ project_task.created }}
- - -
- -
- - {% include 'content/section.html.j2' with tab=form.tabs.notes %} - - {{ notes_form }} - -
- {% if notes %} - {% for note in notes%} - {% include 'note.html.j2' %} - {% endfor %} - {% endif %} -
- - -
- -{% endblock %} diff --git a/app/project_management/templates/project_management/project_index.html.j2 b/app/project_management/templates/project_management/project_index.html.j2 deleted file mode 100644 index f8ffebf9..00000000 --- a/app/project_management/templates/project_management/project_index.html.j2 +++ /dev/null @@ -1,64 +0,0 @@ -{% extends 'base.html.j2' %} - -{% block content_header_icon %}{% endblock %} - -{% block content %} - - - - - - - - - - - - - {% for project in projects %} - - - - - - - - - {% endfor %} - -
CodeNameTypeStateOrganization 
- {{ project.code }} - - {{ project.name }} - - {% if project.project_type %} - {{ project.project_type }} - {% else%} - - - {% endif %} - - {% if project.state %} - {{ project.state }} - {% else%} - - - {% endif %} - {% if project.is_global %}Global{% else %}{{ project.organization }}{% endif %} 
- - -{% endblock %} \ No newline at end of file diff --git a/app/project_management/templates/project_management/project_milestone.html.j2 b/app/project_management/templates/project_management/project_milestone.html.j2 deleted file mode 100644 index 221bc7e5..00000000 --- a/app/project_management/templates/project_management/project_milestone.html.j2 +++ /dev/null @@ -1,79 +0,0 @@ -{% extends 'detail.html.j2' %} - -{% block additional-stylesheet %} - {% load static %} - -{% endblock additional-stylesheet %} - -{% load json %} -{% load markdown %} - - -{% block tabs %} - -
- - {% include 'content/section.html.j2' with tab=form.tabs.details %} - -
- -
- - {% include 'content/section.html.j2' with tab=form.tabs.tasks %} - - - - - - - - - - {% for task in tasks %} - - - - - - - - {% endfor %} -
IDTitleStatusTypeCreated
{{ task.id }} - {% if task.get_ticket_type_display|lower == 'change' %} - - {% elif task.get_ticket_type_display|lower == 'incident' %} - - {% elif task.get_ticket_type_display|lower == 'problem' %} - - {% elif task.get_ticket_type_display|lower == 'request' %} - - {% elif task.get_ticket_type_display|lower == 'project task' %} - - {% else %} - - {% endif %} - {{ task.title }} - - - {% include 'core/ticket/badge_ticket_status.html.j2' with ticket_status_text=task.get_status_display ticket_status=task.get_status_display|ticket_status %} - {{ task.get_ticket_type_display }}{{ task.created }}
- -
- -
- - {% include 'content/section.html.j2' with tab=form.tabs.notes %} - - {{ notes_form }} - -
- {% if notes %} - {% for note in notes%} - {% include 'note.html.j2' %} - {% endfor %} - {% endif %} -
- -
- -{% endblock %} diff --git a/app/project_management/templates/project_management/project_state.html.j2 b/app/project_management/templates/project_management/project_state.html.j2 deleted file mode 100644 index e2369c56..00000000 --- a/app/project_management/templates/project_management/project_state.html.j2 +++ /dev/null @@ -1,42 +0,0 @@ -{% extends 'detail.html.j2' %} - -{% block additional-stylesheet %} - {% load static %} - -{% endblock additional-stylesheet %} - -{% load json %} -{% load markdown %} - - -{% block tabs %} - -
- - {% include 'content/section.html.j2' with tab=form.tabs.details %} - -
- -
- - {% include 'content/section.html.j2' with tab=form.tabs.tasks %} - -
- -
- - {% include 'content/section.html.j2' with tab=form.tabs.notes %} - - {{ notes_form }} - -
- {% if notes %} - {% for note in notes %} - {% include 'note.html.j2' %} - {% endfor %} - {% endif %} -
- -
- -{% endblock %} diff --git a/app/project_management/templates/project_management/project_state_index.html.j2 b/app/project_management/templates/project_management/project_state_index.html.j2 deleted file mode 100644 index 901ba036..00000000 --- a/app/project_management/templates/project_management/project_state_index.html.j2 +++ /dev/null @@ -1,48 +0,0 @@ -{% extends 'base.html.j2' %} - -{% block content_header_icon %}{% endblock %} - -{% block content %} - - - - - - - - - - - - {% for project_state in project_states %} - - - - - - - - {% endfor %} - -
NameOrganizationCreatedModified 
- {{ project_state.name }} - {% if project_state.is_global %}Global{% else %}{{ project_state.organization }}{% endif %}{{ project_state.created }}{{ project_state.modified }} 
- - -{% endblock %} \ No newline at end of file diff --git a/app/project_management/templates/project_management/project_type.html.j2 b/app/project_management/templates/project_management/project_type.html.j2 deleted file mode 100644 index e2369c56..00000000 --- a/app/project_management/templates/project_management/project_type.html.j2 +++ /dev/null @@ -1,42 +0,0 @@ -{% extends 'detail.html.j2' %} - -{% block additional-stylesheet %} - {% load static %} - -{% endblock additional-stylesheet %} - -{% load json %} -{% load markdown %} - - -{% block tabs %} - -
- - {% include 'content/section.html.j2' with tab=form.tabs.details %} - -
- -
- - {% include 'content/section.html.j2' with tab=form.tabs.tasks %} - -
- -
- - {% include 'content/section.html.j2' with tab=form.tabs.notes %} - - {{ notes_form }} - -
- {% if notes %} - {% for note in notes %} - {% include 'note.html.j2' %} - {% endfor %} - {% endif %} -
- -
- -{% endblock %} diff --git a/app/project_management/templates/project_management/project_type_index.html.j2 b/app/project_management/templates/project_management/project_type_index.html.j2 deleted file mode 100644 index a0af98e3..00000000 --- a/app/project_management/templates/project_management/project_type_index.html.j2 +++ /dev/null @@ -1,48 +0,0 @@ -{% extends 'base.html.j2' %} - -{% block content_header_icon %}{% endblock %} - -{% block content %} - - - - - - - - - - - - {% for project_type in project_types %} - - - - - - - - {% endfor %} - -
NameOrganizationCreatedModified 
- {{ project_type.name }} - {% if project_type.is_global %}Global{% else %}{{ project_type.organization }}{% endif %}{{ project_type.created }}{{ project_type.modified }} 
- - -{% endblock %} \ No newline at end of file diff --git a/app/project_management/tests/unit/project/test_project_permission.py b/app/project_management/tests/unit/project/test_project_permission.py deleted file mode 100644 index 5baa0d7f..00000000 --- a/app/project_management/tests/unit/project/test_project_permission.py +++ /dev/null @@ -1,192 +0,0 @@ -import django -from django.contrib.auth import get_user_model -from django.contrib.auth.models import AnonymousUser, Permission -from django.contrib.contenttypes.models import ContentType -from django.shortcuts import reverse -from django.test import TestCase, Client - -import pytest -import unittest -import requests - -from access.models.tenant import Tenant as Organization -from access.models.team import Team -from access.models.team_user import TeamUsers - -from centurion.tests.abstract.model_permissions import ModelPermissions - -from project_management.models.projects import Project - -User = django.contrib.auth.get_user_model() - - - -class ProjectPermissions(TestCase, ModelPermissions): - - model = Project - - app_namespace = 'Project Management' - - url_name_view = '_project_view' - - url_name_add = '_project_add' - - url_name_change = '_project_change' - - url_name_delete = '_project_delete' - - url_delete_response = reverse('Project Management:Projects') - - @classmethod - def setUpTestData(self): - """Setup Test - - 1. Create an organization for user and item - . create an organization that is different to item - 2. Create a category - 3. create teams with each permission: view, add, change, delete - 4. create a user per team - """ - - organization = Organization.objects.create(name='test_org') - - self.organization = organization - - different_organization = Organization.objects.create(name='test_different_organization') - - - self.item = self.model.objects.create( - organization=organization, - name = 'manufacturerone' - ) - - - self.url_view_kwargs = {'pk': self.item.id} - - # self.url_add_kwargs = {'pk': self.item.id} - - self.add_data = {'name': 'manufacturer', 'organization': self.organization.id} - - self.url_change_kwargs = {'pk': self.item.id} - - self.change_data = {'name': 'manufacturer', 'organization': self.organization.id} - - self.url_delete_kwargs = {'pk': self.item.id} - - self.delete_data = {'name': 'manufacturer'} - - - view_permissions = Permission.objects.get( - codename = 'view_' + self.model._meta.model_name, - content_type = ContentType.objects.get( - app_label = self.model._meta.app_label, - model = self.model._meta.model_name, - ) - ) - - view_team = Team.objects.create( - team_name = 'view_team', - organization = organization, - ) - - view_team.permissions.set([view_permissions]) - - - - add_permissions = Permission.objects.get( - codename = 'add_' + self.model._meta.model_name, - content_type = ContentType.objects.get( - app_label = self.model._meta.app_label, - model = self.model._meta.model_name, - ) - ) - - add_team = Team.objects.create( - team_name = 'add_team', - organization = organization, - ) - - add_team.permissions.set([add_permissions]) - - - - change_permissions = Permission.objects.get( - codename = 'change_' + self.model._meta.model_name, - content_type = ContentType.objects.get( - app_label = self.model._meta.app_label, - model = self.model._meta.model_name, - ) - ) - - change_team = Team.objects.create( - team_name = 'change_team', - organization = organization, - ) - - change_team.permissions.set([change_permissions]) - - - - delete_permissions = Permission.objects.get( - codename = 'delete_' + self.model._meta.model_name, - content_type = ContentType.objects.get( - app_label = self.model._meta.app_label, - model = self.model._meta.model_name, - ) - ) - - delete_team = Team.objects.create( - team_name = 'delete_team', - organization = organization, - ) - - delete_team.permissions.set([delete_permissions]) - - - self.no_permissions_user = User.objects.create_user(username="test_no_permissions", password="password") - - - self.view_user = User.objects.create_user(username="test_user_view", password="password") - teamuser = TeamUsers.objects.create( - team = view_team, - user = self.view_user - ) - - self.add_user = User.objects.create_user(username="test_user_add", password="password") - teamuser = TeamUsers.objects.create( - team = add_team, - user = self.add_user - ) - - self.change_user = User.objects.create_user(username="test_user_change", password="password") - teamuser = TeamUsers.objects.create( - team = change_team, - user = self.change_user - ) - - self.delete_user = User.objects.create_user(username="test_user_delete", password="password") - teamuser = TeamUsers.objects.create( - team = delete_team, - user = self.delete_user - ) - - - self.different_organization_user = User.objects.create_user(username="test_different_organization_user", password="password") - - - different_organization_team = Team.objects.create( - team_name = 'different_organization_team', - organization = different_organization, - ) - - different_organization_team.permissions.set([ - view_permissions, - add_permissions, - change_permissions, - delete_permissions, - ]) - - TeamUsers.objects.create( - team = different_organization_team, - user = self.different_organization_user - ) diff --git a/app/project_management/tests/unit/project/test_project_views.py b/app/project_management/tests/unit/project/test_project_views.py deleted file mode 100644 index 4524087c..00000000 --- a/app/project_management/tests/unit/project/test_project_views.py +++ /dev/null @@ -1,25 +0,0 @@ -from django.test import TestCase - -from centurion.tests.abstract.models import PrimaryModel - - - -class ProjectViews( - PrimaryModel, - TestCase, -): - - add_module = 'project_management.views.project' - add_view = 'Add' - - change_module = add_module - change_view = 'Change' - - delete_module = add_module - delete_view = 'Delete' - - display_module = add_module - display_view = 'View' - - index_module = add_module - index_view = 'Index' diff --git a/app/project_management/tests/unit/project_milestone/test_project_milestone_permission.py b/app/project_management/tests/unit/project_milestone/test_project_milestone_permission.py deleted file mode 100644 index a8e16dcc..00000000 --- a/app/project_management/tests/unit/project_milestone/test_project_milestone_permission.py +++ /dev/null @@ -1,199 +0,0 @@ -import django - -from django.contrib.auth import get_user_model -from django.contrib.auth.models import AnonymousUser, Permission -from django.contrib.contenttypes.models import ContentType -from django.shortcuts import reverse -from django.test import TestCase, Client - -import pytest -import unittest -import requests - -from access.models.tenant import Tenant as Organization -from access.models.team import Team -from access.models.team_user import TeamUsers - -from centurion.tests.abstract.model_permissions import ModelPermissions - -from project_management.models.project_milestone import Project, ProjectMilestone - -User = django.contrib.auth.get_user_model() - - - -class ProjectMilestonePermissions(TestCase, ModelPermissions): - - model = ProjectMilestone - - app_namespace = 'Project Management' - - url_name_view = '_project_milestone_view' - - url_name_add = '_project_milestone_add' - - url_name_change = '_project_milestone_change' - - url_name_delete = '_project_milestone_delete' - - @classmethod - def setUpTestData(self): - """Setup Test - - 1. Create an organization for user and item - . create an organization that is different to item - 2. Create a category - 3. create teams with each permission: view, add, change, delete - 4. create a user per team - """ - - organization = Organization.objects.create(name='test_org') - - self.organization = organization - - different_organization = Organization.objects.create(name='test_different_organization') - - - self.project = Project.objects.create( - name = 'test_item_' + self.model._meta.model_name, - organization = self.organization - ) - - self.url_delete_response = reverse('Project Management:_project_view', kwargs={'pk': self.project.id}) + '?tab=milestones' - - self.item = self.model.objects.create( - name = 'test_item_' + self.model._meta.model_name, - organization = self.organization, - project = self.project, - ) - - - self.url_view_kwargs = {'project_id': self.project.id, 'pk': self.item.id} - - self.url_add_kwargs = {'project_id': self.project.id } - - self.add_data = {'name': 'manufacturer', 'organization': self.organization.id} - - self.url_change_kwargs = {'project_id': self.project.id, 'pk': self.item.id} - - self.change_data = {'name': 'manufacturer', 'organization': self.organization.id} - - self.url_delete_kwargs = {'project_id': self.project.id, 'pk': self.item.id} - - self.delete_data = {'name': 'manufacturer'} - - - view_permissions = Permission.objects.get( - codename = 'view_' + self.model._meta.model_name, - content_type = ContentType.objects.get( - app_label = self.model._meta.app_label, - model = self.model._meta.model_name, - ) - ) - - view_team = Team.objects.create( - team_name = 'view_team', - organization = organization, - ) - - view_team.permissions.set([view_permissions]) - - - - add_permissions = Permission.objects.get( - codename = 'add_' + self.model._meta.model_name, - content_type = ContentType.objects.get( - app_label = self.model._meta.app_label, - model = self.model._meta.model_name, - ) - ) - - add_team = Team.objects.create( - team_name = 'add_team', - organization = organization, - ) - - add_team.permissions.set([add_permissions]) - - - - change_permissions = Permission.objects.get( - codename = 'change_' + self.model._meta.model_name, - content_type = ContentType.objects.get( - app_label = self.model._meta.app_label, - model = self.model._meta.model_name, - ) - ) - - change_team = Team.objects.create( - team_name = 'change_team', - organization = organization, - ) - - change_team.permissions.set([change_permissions]) - - - - delete_permissions = Permission.objects.get( - codename = 'delete_' + self.model._meta.model_name, - content_type = ContentType.objects.get( - app_label = self.model._meta.app_label, - model = self.model._meta.model_name, - ) - ) - - delete_team = Team.objects.create( - team_name = 'delete_team', - organization = organization, - ) - - delete_team.permissions.set([delete_permissions]) - - - self.no_permissions_user = User.objects.create_user(username="test_no_permissions", password="password") - - - self.view_user = User.objects.create_user(username="test_user_view", password="password") - teamuser = TeamUsers.objects.create( - team = view_team, - user = self.view_user - ) - - self.add_user = User.objects.create_user(username="test_user_add", password="password") - teamuser = TeamUsers.objects.create( - team = add_team, - user = self.add_user - ) - - self.change_user = User.objects.create_user(username="test_user_change", password="password") - teamuser = TeamUsers.objects.create( - team = change_team, - user = self.change_user - ) - - self.delete_user = User.objects.create_user(username="test_user_delete", password="password") - teamuser = TeamUsers.objects.create( - team = delete_team, - user = self.delete_user - ) - - - self.different_organization_user = User.objects.create_user(username="test_different_organization_user", password="password") - - - different_organization_team = Team.objects.create( - team_name = 'different_organization_team', - organization = different_organization, - ) - - different_organization_team.permissions.set([ - view_permissions, - add_permissions, - change_permissions, - delete_permissions, - ]) - - TeamUsers.objects.create( - team = different_organization_team, - user = self.different_organization_user - ) diff --git a/app/project_management/tests/unit/project_milestone/test_project_milestone_views.py b/app/project_management/tests/unit/project_milestone/test_project_milestone_views.py deleted file mode 100644 index a62aa7b6..00000000 --- a/app/project_management/tests/unit/project_milestone/test_project_milestone_views.py +++ /dev/null @@ -1,29 +0,0 @@ -import pytest -import unittest -import requests - -from django.test import TestCase - -from centurion.tests.abstract.models import ModelCommon - - - -class ProjectMilestoneViews( - TestCase, - ModelCommon -): - - add_module = 'project_management.views.project_milestones' - add_view = 'Add' - - change_module = add_module - change_view = 'Change' - - delete_module = add_module - delete_view = 'Delete' - - display_module = add_module - display_view = 'View' - - # index_module = add_module - # index_view = 'Index' diff --git a/app/project_management/tests/unit/project_state/test_project_state_permission.py b/app/project_management/tests/unit/project_state/test_project_state_permission.py deleted file mode 100644 index b2791311..00000000 --- a/app/project_management/tests/unit/project_state/test_project_state_permission.py +++ /dev/null @@ -1,194 +0,0 @@ -import django - -from django.contrib.auth import get_user_model -from django.contrib.auth.models import AnonymousUser, Permission -from django.contrib.contenttypes.models import ContentType -from django.shortcuts import reverse -from django.test import TestCase, Client - -import pytest -import unittest -import requests - -from access.models.tenant import Tenant as Organization -from access.models.team import Team -from access.models.team_user import TeamUsers - -from centurion.tests.abstract.model_permissions import ModelPermissions - -from project_management.models.project_states import ProjectState - -User = django.contrib.auth.get_user_model() - - -class ProjectStatePermissions(TestCase, ModelPermissions): - - - model = ProjectState - - app_namespace = 'Settings' - - url_name_view = '_project_state_view' - - url_name_add = '_project_state_add' - - url_name_change = '_project_state_change' - - url_name_delete = '_project_state_delete' - - url_delete_response = reverse('Settings:_project_states') - - - @classmethod - def setUpTestData(self): - """Setup Test - - 1. Create an organization for user and item - . create an organization that is different to item - 2. Create a device - 3. create teams with each permission: view, add, change, delete - 4. create a user per team - """ - - organization = Organization.objects.create(name='test_org') - - self.organization = organization - - different_organization = Organization.objects.create(name='test_different_organization') - - - self.item = self.model.objects.create( - organization=organization, - name = 'a project state' - ) - - - self.url_view_kwargs = {'pk': self.item.id} - - # self.url_add_kwargs = {'pk': self.item.id} - - self.add_data = {'name': 'a added project state', 'organization': self.organization.id} - - self.url_change_kwargs = {'pk': self.item.id} - - self.change_data = {'name': 'a changed project state', 'organization': self.organization.id} - - self.url_delete_kwargs = {'pk': self.item.id} - - self.delete_data = {'name': 'device', 'organization': self.organization.id} - - - view_permissions = Permission.objects.get( - codename = 'view_' + self.model._meta.model_name, - content_type = ContentType.objects.get( - app_label = self.model._meta.app_label, - model = self.model._meta.model_name, - ) - ) - - view_team = Team.objects.create( - team_name = 'view_team', - organization = organization, - ) - - view_team.permissions.set([view_permissions]) - - - - add_permissions = Permission.objects.get( - codename = 'add_' + self.model._meta.model_name, - content_type = ContentType.objects.get( - app_label = self.model._meta.app_label, - model = self.model._meta.model_name, - ) - ) - - add_team = Team.objects.create( - team_name = 'add_team', - organization = organization, - ) - - add_team.permissions.set([add_permissions]) - - - - change_permissions = Permission.objects.get( - codename = 'change_' + self.model._meta.model_name, - content_type = ContentType.objects.get( - app_label = self.model._meta.app_label, - model = self.model._meta.model_name, - ) - ) - - change_team = Team.objects.create( - team_name = 'change_team', - organization = organization, - ) - - change_team.permissions.set([change_permissions]) - - - - delete_permissions = Permission.objects.get( - codename = 'delete_' + self.model._meta.model_name, - content_type = ContentType.objects.get( - app_label = self.model._meta.app_label, - model = self.model._meta.model_name, - ) - ) - - delete_team = Team.objects.create( - team_name = 'delete_team', - organization = organization, - ) - - delete_team.permissions.set([delete_permissions]) - - - self.no_permissions_user = User.objects.create_user(username="test_no_permissions", password="password") - - - self.view_user = User.objects.create_user(username="test_user_view", password="password") - teamuser = TeamUsers.objects.create( - team = view_team, - user = self.view_user - ) - - self.add_user = User.objects.create_user(username="test_user_add", password="password") - teamuser = TeamUsers.objects.create( - team = add_team, - user = self.add_user - ) - - self.change_user = User.objects.create_user(username="test_user_change", password="password") - teamuser = TeamUsers.objects.create( - team = change_team, - user = self.change_user - ) - - self.delete_user = User.objects.create_user(username="test_user_delete", password="password") - teamuser = TeamUsers.objects.create( - team = delete_team, - user = self.delete_user - ) - - - self.different_organization_user = User.objects.create_user(username="test_different_organization_user", password="password") - - - different_organization_team = Team.objects.create( - team_name = 'different_organization_team', - organization = different_organization, - ) - - different_organization_team.permissions.set([ - view_permissions, - add_permissions, - change_permissions, - delete_permissions, - ]) - - TeamUsers.objects.create( - team = different_organization_team, - user = self.different_organization_user - ) diff --git a/app/project_management/tests/unit/project_state/test_project_state_views.py b/app/project_management/tests/unit/project_state/test_project_state_views.py deleted file mode 100644 index ee57cc78..00000000 --- a/app/project_management/tests/unit/project_state/test_project_state_views.py +++ /dev/null @@ -1,29 +0,0 @@ -import pytest -import unittest -import requests - -from django.test import TestCase - -from centurion.tests.abstract.models import PrimaryModel - - - -class ProjectStateViews( - TestCase, - PrimaryModel -): - - add_module = 'project_management.views.project_states' - add_view = 'Add' - - change_module = add_module - change_view = 'Change' - - delete_module = add_module - delete_view = 'Delete' - - display_module = add_module - display_view = 'View' - - index_module = add_module - index_view = 'Index' diff --git a/app/project_management/tests/unit/project_type/test_project_type_permission.py b/app/project_management/tests/unit/project_type/test_project_type_permission.py deleted file mode 100644 index 9cf9c882..00000000 --- a/app/project_management/tests/unit/project_type/test_project_type_permission.py +++ /dev/null @@ -1,195 +0,0 @@ -import django - -from django.contrib.auth import get_user_model -from django.contrib.auth.models import AnonymousUser, Permission -from django.contrib.contenttypes.models import ContentType -from django.shortcuts import reverse -from django.test import TestCase, Client - -import pytest -import unittest -import requests - -from access.models.tenant import Tenant as Organization -from access.models.team import Team -from access.models.team_user import TeamUsers - -from centurion.tests.abstract.model_permissions import ModelPermissions - -from project_management.models.project_types import ProjectType - -User = django.contrib.auth.get_user_model() - - - -class ProjectTypePermissions(TestCase, ModelPermissions): - - - model = ProjectType - - app_namespace = 'Settings' - - url_name_view = '_project_type_view' - - url_name_add = '_project_type_add' - - url_name_change = '_project_type_change' - - url_name_delete = '_project_type_delete' - - url_delete_response = reverse('Settings:_project_types') - - - @classmethod - def setUpTestData(self): - """Setup Test - - 1. Create an organization for user and item - . create an organization that is different to item - 2. Create a device - 3. create teams with each permission: view, add, change, delete - 4. create a user per team - """ - - organization = Organization.objects.create(name='test_org') - - self.organization = organization - - different_organization = Organization.objects.create(name='test_different_organization') - - - self.item = self.model.objects.create( - organization=organization, - name = 'deviceone' - ) - - - self.url_view_kwargs = {'pk': self.item.id} - - # self.url_add_kwargs = {'pk': self.item.id} - - self.add_data = {'device': 'device', 'organization': self.organization.id} - - self.url_change_kwargs = {'pk': self.item.id} - - self.change_data = {'device': 'device', 'organization': self.organization.id} - - self.url_delete_kwargs = {'pk': self.item.id} - - self.delete_data = {'device': 'device', 'organization': self.organization.id} - - - view_permissions = Permission.objects.get( - codename = 'view_' + self.model._meta.model_name, - content_type = ContentType.objects.get( - app_label = self.model._meta.app_label, - model = self.model._meta.model_name, - ) - ) - - view_team = Team.objects.create( - team_name = 'view_team', - organization = organization, - ) - - view_team.permissions.set([view_permissions]) - - - - add_permissions = Permission.objects.get( - codename = 'add_' + self.model._meta.model_name, - content_type = ContentType.objects.get( - app_label = self.model._meta.app_label, - model = self.model._meta.model_name, - ) - ) - - add_team = Team.objects.create( - team_name = 'add_team', - organization = organization, - ) - - add_team.permissions.set([add_permissions]) - - - - change_permissions = Permission.objects.get( - codename = 'change_' + self.model._meta.model_name, - content_type = ContentType.objects.get( - app_label = self.model._meta.app_label, - model = self.model._meta.model_name, - ) - ) - - change_team = Team.objects.create( - team_name = 'change_team', - organization = organization, - ) - - change_team.permissions.set([change_permissions]) - - - - delete_permissions = Permission.objects.get( - codename = 'delete_' + self.model._meta.model_name, - content_type = ContentType.objects.get( - app_label = self.model._meta.app_label, - model = self.model._meta.model_name, - ) - ) - - delete_team = Team.objects.create( - team_name = 'delete_team', - organization = organization, - ) - - delete_team.permissions.set([delete_permissions]) - - - self.no_permissions_user = User.objects.create_user(username="test_no_permissions", password="password") - - - self.view_user = User.objects.create_user(username="test_user_view", password="password") - teamuser = TeamUsers.objects.create( - team = view_team, - user = self.view_user - ) - - self.add_user = User.objects.create_user(username="test_user_add", password="password") - teamuser = TeamUsers.objects.create( - team = add_team, - user = self.add_user - ) - - self.change_user = User.objects.create_user(username="test_user_change", password="password") - teamuser = TeamUsers.objects.create( - team = change_team, - user = self.change_user - ) - - self.delete_user = User.objects.create_user(username="test_user_delete", password="password") - teamuser = TeamUsers.objects.create( - team = delete_team, - user = self.delete_user - ) - - - self.different_organization_user = User.objects.create_user(username="test_different_organization_user", password="password") - - - different_organization_team = Team.objects.create( - team_name = 'different_organization_team', - organization = different_organization, - ) - - different_organization_team.permissions.set([ - view_permissions, - add_permissions, - change_permissions, - delete_permissions, - ]) - - TeamUsers.objects.create( - team = different_organization_team, - user = self.different_organization_user - ) diff --git a/app/project_management/tests/unit/project_type/test_project_type_views.py b/app/project_management/tests/unit/project_type/test_project_type_views.py deleted file mode 100644 index c0a15ab8..00000000 --- a/app/project_management/tests/unit/project_type/test_project_type_views.py +++ /dev/null @@ -1,29 +0,0 @@ -import pytest -import unittest -import requests - -from django.test import TestCase - -from centurion.tests.abstract.models import PrimaryModel - - - -class ProjectTYpeViews( - TestCase, - PrimaryModel -): - - add_module = 'project_management.views.project_types' - add_view = 'Add' - - change_module = add_module - change_view = 'Change' - - delete_module = add_module - delete_view = 'Delete' - - display_module = add_module - display_view = 'View' - - index_module = add_module - index_view = 'Index' diff --git a/app/project_management/urls.py b/app/project_management/urls.py deleted file mode 100644 index 1288be39..00000000 --- a/app/project_management/urls.py +++ /dev/null @@ -1,32 +0,0 @@ -from django.urls import path - -from .views import project, project_milestones - -from core.views import ticket, ticket_comment - - -app_name = "Project Management" -urlpatterns = [ - path('', project.Index.as_view(), name='Projects'), - - path("project/add", project.Add.as_view(), name="_project_add"), - path("project/", project.View.as_view(), name="_project_view"), - path("project//edit", project.Change.as_view(), name="_project_change"), - path("project//delete", project.Delete.as_view(), name="_project_delete"), - - path('project//milestone/add', project_milestones.Add.as_view(), name="_project_milestone_add"), - path('project//milestone//edit', project_milestones.Change.as_view(), name="_project_milestone_change"), - path('project//milestone//delete', project_milestones.Delete.as_view(), name="_project_milestone_delete"), - path('project//milestone/', project_milestones.View.as_view(), name="_project_milestone_view"), - - path('project///add', ticket.Add.as_view(), name="_project_task_add"), - path('project////edit', ticket.Change.as_view(), name="_project_task_change"), - path('project////delete', ticket.Delete.as_view(), name="_project_task_delete"), - path('project///', ticket.View.as_view(), name="_project_task_view"), - - path('project////comment/add', ticket_comment.Add.as_view(), name="_project_task_comment_add"), - path('project////comment//edit', ticket_comment.Change.as_view(), name="_project_task_comment_change"), - path('project////comment//add', ticket_comment.Add.as_view(), name="_project_task_comment_reply_add"), - - -] diff --git a/app/project_management/views/project.py b/app/project_management/views/project.py deleted file mode 100644 index 76432e9d..00000000 --- a/app/project_management/views/project.py +++ /dev/null @@ -1,209 +0,0 @@ -import json - -from django.contrib.auth.mixins import PermissionRequiredMixin -from django.core.paginator import Paginator -from django.db.models import Q -from django.urls import reverse -from django.views import generic - -from access.mixin import OrganizationPermission - -from core.forms.comment import AddNoteForm -from core.models.notes import Notes -from core.models.ticket.ticket import Ticket -from core.views.common import AddView, ChangeView, DeleteView, DisplayView, IndexView - -from project_management.forms.project import Project, ProjectForm, DetailForm -from project_management.models.project_milestone import ProjectMilestone - -from settings.models.user_settings import UserSettings - - - -class Add(AddView): - - form_class = ProjectForm - - model = Project - - permission_required = [ - 'project_management.add_project', - ] - - template_name = 'form.html.j2' - - - def get_initial(self): - return { - 'organization': UserSettings.objects.get(user = self.request.user).default_organization - } - - def form_valid(self, form): - form.instance.is_global = False - return super().form_valid(form) - - - def get_success_url(self, **kwargs): - - return reverse('Project Management:Projects') - - - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - - context['content_title'] = 'Create a Project' - - return context - - - -class Change(ChangeView): - - form_class = ProjectForm - - model = Project - - permission_required = [ - 'project_management.change_project', - ] - - template_name = 'form.html.j2' - - - def form_valid(self, form): - form.instance.is_global = False - return super().form_valid(form) - - - def get_success_url(self, **kwargs): - - return reverse('Project Management:_project_view', kwargs={'pk': self.kwargs['pk']}) - - - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - - context['content_title'] = 'Edit' - - return context - - - -class Delete(DeleteView): - model = Project - - permission_required = [ - 'project_management.delete_project', - ] - - template_name = 'form.html.j2' - - - def get_success_url(self, **kwargs): - - return reverse('Project Management:Projects') - - - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - - context['content_title'] = 'Delete ' + self.object.name - - return context - - - -class Index(IndexView): - - model = Project - - permission_required = [ - 'project_management.view_project', - ] - - template_name = 'project_management/project_index.html.j2' - - context_object_name = "projects" - - paginate_by = 10 - - - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - - context['content_title'] = 'Projects' - - return context - - - def get_queryset(self): - - if self.request.user.is_superuser: - - return self.model.objects.filter().order_by('name') - - else: - - return self.model.objects.filter(Q(organization__in=self.user_organizations()) | Q(is_global = True)).order_by('name') - - - -class View(ChangeView): - - model = Project - - permission_required = [ - 'project_management.view_project' - ] - - template_name = 'project_management/project.html.j2' - - form_class = DetailForm - - context_object_name = "project" - - - def get_context_data(self, **kwargs): - - context = super().get_context_data(**kwargs) - - # context['notes_form'] = AddNoteForm(prefix='note') - # context['notes'] = Notes.objects.filter(service=self.kwargs['pk']) - - context['milestones'] = ProjectMilestone.objects.filter(project__id=self.kwargs['pk']) - - context['project_tasks'] = Ticket.objects.filter( - project = self.object, - ) - - - context['model_docs_path'] = self.model._meta.app_label + '/' + self.model._meta.model_name + '/' - - context['model_pk'] = self.kwargs['pk'] - context['model_name'] = self.model._meta.verbose_name.replace(' ', '') - - context['model_delete_url'] = reverse('Project Management:_project_delete', args=(self.kwargs['pk'],)) - - context['content_title'] = context['project'].name - - return context - - - # def post(self, request, *args, **kwargs): - - # project = self.model.objects.get(pk=self.kwargs['pk']) - - # notes = AddNoteForm(request.POST, prefix='note') - - # if notes.is_bound and notes.is_valid() and notes.instance.note != '': - - # if request.user.has_perm('core.add_notes'): - - # notes.instance.organization = device.organization - # notes.instance.project = project - # notes.instance.usercreated = request.user - - # notes.save() - - # return super().post(request, *args, **kwargs) - diff --git a/app/project_management/views/project_milestones.py b/app/project_management/views/project_milestones.py deleted file mode 100644 index af37e633..00000000 --- a/app/project_management/views/project_milestones.py +++ /dev/null @@ -1,182 +0,0 @@ -import json - -from django.contrib.auth.mixins import PermissionRequiredMixin -from django.core.paginator import Paginator -from django.db.models import Q -from django.urls import reverse -from django.views import generic - -from access.mixin import OrganizationPermission - -from core.forms.comment import AddNoteForm -from core.models.notes import Notes -from core.models.ticket.ticket import Ticket -from core.views.common import AddView, ChangeView, DeleteView, DisplayView, IndexView - -from project_management.forms.project_milestone import DetailForm, ProjectMilestone, ProjectMilestoneForm - -from settings.models.user_settings import UserSettings - - - -class Add(AddView): - - form_class = ProjectMilestoneForm - - model = ProjectMilestone - - permission_required = [ - 'project_management.add_projectmilestone', - ] - - template_name = 'form.html.j2' - - - def get_initial(self): - initial = super().get_initial() - - initial.update({ - 'project': self.kwargs['project_id'] - }) - - return initial - - def form_valid(self, form): - form.instance.is_global = False - return super().form_valid(form) - - - def get_success_url(self, **kwargs): - - return reverse('Project Management:_project_view', kwargs={'pk': self.kwargs['project_id']}) + '?tab=milestones' - - - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - - context['content_title'] = 'Create a Project Milestone' - - return context - - - -class Change(ChangeView): - - form_class = ProjectMilestoneForm - - model = ProjectMilestone - - permission_required = [ - 'project_management.change_projectmilestone', - ] - - template_name = 'form.html.j2' - - - def form_valid(self, form): - form.instance.is_global = False - return super().form_valid(form) - - - def get_success_url(self, **kwargs): - - return reverse('Project Management:_project_view', kwargs={'pk': self.kwargs['pk']}) - - - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - - context['content_title'] = 'Edit' - - return context - - - -class Delete(DeleteView): - - model = ProjectMilestone - - permission_required = [ - 'project_management.delete_projectmilestone', - ] - - template_name = 'form.html.j2' - - - def get_success_url(self, **kwargs): - - return reverse('Project Management:_project_view', kwargs={'pk': self.kwargs['project_id']}) + '?tab=milestones' - - - def get_context_data(self, **kwargs): - context = super().get_context_data(**kwargs) - - context['content_title'] = 'Delete ' + self.object.name - - return context - - - -class View(ChangeView): - - model = ProjectMilestone - - permission_required = [ - 'project_management.view_projectmilestone' - ] - - template_name = 'project_management/project_milestone.html.j2' - - form_class = DetailForm - - context_object_name = "project" - - - def get_initial(self): - initial = super().get_initial() - - initial.update({ - 'project': self.kwargs['project_id'] - }) - - return initial - - - def get_context_data(self, **kwargs): - - context = super().get_context_data(**kwargs) - - context['tasks'] = Ticket.objects.filter( - project = self.object.project, - milestone = self.kwargs['pk'], - ) - - context['model_docs_path'] = self.model._meta.app_label + '/' + self.model._meta.model_name + '/' - - context['model_pk'] = self.kwargs['pk'] - context['model_name'] = self.model._meta.verbose_name.replace(' ', '') - - context['model_delete_url'] = reverse('Project Management:_project_milestone_delete', kwargs={'project_id': self.kwargs['project_id'], 'pk': self.kwargs['pk']}) - - context['content_title'] = context['project'].name - - return context - - - # def post(self, request, *args, **kwargs): - - # project = self.model.objects.get(pk=self.kwargs['pk']) - - # notes = AddNoteForm(request.POST, prefix='note') - - # if notes.is_bound and notes.is_valid() and notes.instance.note != '': - - # if request.user.has_perm('core.add_notes'): - - # notes.instance.organization = device.organization - # notes.instance.project = project - # notes.instance.usercreated = request.user - - # notes.save() - - # return super().post(request, *args, **kwargs) diff --git a/app/project_management/views/project_states.py b/app/project_management/views/project_states.py deleted file mode 100644 index af193ab7..00000000 --- a/app/project_management/views/project_states.py +++ /dev/null @@ -1,150 +0,0 @@ -from django.urls import reverse - -from core.forms.comment import AddNoteForm -from core.models.notes import Notes -from core.views.common import AddView, ChangeView, DeleteView, DisplayView, IndexView - -from project_management.forms.project_states import DetailForm, ProjectState, ProjectStateForm - -from settings.models.user_settings import UserSettings - - - -class Add(AddView): - - form_class = ProjectStateForm - - model = ProjectState - - permission_required = [ - 'project_management.add_projectstate', - ] - - - def get_success_url(self, **kwargs): - - return reverse('Settings:_project_states') - - - -class Change(ChangeView): - - context_object_name = "project_state" - - form_class = ProjectStateForm - - model = ProjectState - - permission_required = [ - 'project_management.change_projectstate', - ] - - - def get_context_data(self, **kwargs): - - context = super().get_context_data(**kwargs) - - context['content_title'] = self.object.name - - return context - - - def get_success_url(self, **kwargs): - - return reverse('Settings:_project_state_view', args=(self.kwargs['pk'],)) - - - -class Delete(DeleteView): - - model = ProjectState - - permission_required = [ - 'project_management.delete_projectstate', - ] - - - def get_context_data(self, **kwargs): - - context = super().get_context_data(**kwargs) - - context['content_title'] = 'Delete ' + self.object.name - - return context - - - def get_success_url(self, **kwargs): - - return reverse('Settings:_project_states') - - - -class Index(IndexView): - - context_object_name = "project_states" - - model = ProjectState - - paginate_by = 10 - - permission_required = [ - 'project_management.view_projectstate' - ] - - template_name = 'project_management/project_state_index.html.j2' - - - -class View(ChangeView): - - context_object_name = "project_state" - - form_class = DetailForm - - model = ProjectState - - permission_required = [ - 'project_management.view_projectstate', - ] - - template_name = 'project_management/project_state.html.j2' - - - def get_context_data(self, **kwargs): - - context = super().get_context_data(**kwargs) - - context['notes_form'] = AddNoteForm(prefix='note') - context['notes'] = Notes.objects.filter(config_group=self.kwargs['pk']) - - context['model_pk'] = self.kwargs['pk'] - context['model_name'] = self.model._meta.model_name - - context['model_delete_url'] = reverse('Settings:_project_state_delete', args=(self.kwargs['pk'],)) - - - context['content_title'] = self.object.name - - return context - - - def post(self, request, *args, **kwargs): - - item = KnowledgeBase.objects.get(pk=self.kwargs['pk']) - - notes = AddNoteForm(request.POST, prefix='note') - - if notes.is_bound and notes.is_valid() and notes.instance.note != '': - - notes.instance.organization = item.organization - - notes.save() - - # dont allow saving any post data outside notes. - # todo: figure out what needs to be returned - # return super().post(request, *args, **kwargs) - - - def get_success_url(self, **kwargs): - - return reverse('Settings:_project_state_view', args=(self.kwargs['pk'],)) diff --git a/app/project_management/views/project_types.py b/app/project_management/views/project_types.py deleted file mode 100644 index 38ee0199..00000000 --- a/app/project_management/views/project_types.py +++ /dev/null @@ -1,157 +0,0 @@ -from datetime import datetime - -from django.contrib.auth import decorators as auth_decorator -from django.db.models import Q -from django.urls import reverse -from django.utils.decorators import method_decorator - -from access.models.team_user import TeamUsers - -from core.forms.comment import AddNoteForm -from core.models.notes import Notes -from core.views.common import AddView, ChangeView, DeleteView, DisplayView, IndexView - -from project_management.forms.project_types import DetailForm, ProjectType, ProjectTypeForm - -from settings.models.user_settings import UserSettings - - - -class Add(AddView): - - form_class = ProjectTypeForm - - model = ProjectType - - permission_required = [ - 'project_management.add_projecttype', - ] - - - def get_success_url(self, **kwargs): - - return reverse('Settings:_project_types') - - - -class Change(ChangeView): - - context_object_name = "project_type" - - form_class = ProjectTypeForm - - model = ProjectType - - permission_required = [ - 'project_management.change_projecttype', - ] - - - def get_context_data(self, **kwargs): - - context = super().get_context_data(**kwargs) - - context['content_title'] = self.object.name - - return context - - - def get_success_url(self, **kwargs): - - return reverse('Settings:_project_type_view', args=(self.kwargs['pk'],)) - - - -class Index(IndexView): - - context_object_name = "project_types" - - model = ProjectType - - paginate_by = 10 - - permission_required = [ - 'project_management.view_projecttype' - ] - - template_name = 'project_management/project_type_index.html.j2' - - - -class View(ChangeView): - - context_object_name = "project_type" - - form_class = DetailForm - - model = ProjectType - - permission_required = [ - 'project_management.view_projecttype', - ] - - template_name = 'project_management/project_type.html.j2' - - - def get_context_data(self, **kwargs): - - context = super().get_context_data(**kwargs) - - context['notes_form'] = AddNoteForm(prefix='note') - context['notes'] = Notes.objects.filter(config_group=self.kwargs['pk']) - - context['model_pk'] = self.kwargs['pk'] - context['model_name'] = self.model._meta.model_name - - context['model_delete_url'] = reverse('Settings:_project_type_delete', args=(self.kwargs['pk'],)) - - - context['content_title'] = self.object.name - - return context - - - def post(self, request, *args, **kwargs): - - item = KnowledgeBase.objects.get(pk=self.kwargs['pk']) - - notes = AddNoteForm(request.POST, prefix='note') - - if notes.is_bound and notes.is_valid() and notes.instance.note != '': - - notes.instance.organization = item.organization - - notes.save() - - # dont allow saving any post data outside notes. - # todo: figure out what needs to be returned - # return super().post(request, *args, **kwargs) - - - def get_success_url(self, **kwargs): - - return reverse('Settings:_project_type_view', args=(self.kwargs['pk'],)) - - - -class Delete(DeleteView): - - model = ProjectType - - permission_required = [ - 'project_management.delete_projecttype', - ] - - - def get_context_data(self, **kwargs): - - context = super().get_context_data(**kwargs) - - context['content_title'] = 'Delete ' + self.object.name - - return context - - - def get_success_url(self, **kwargs): - - return reverse('Settings:_project_types')