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 %}
-
-
-
-
-
- Name
- Completed
- Started
- Finished
-
- {% if milestones %}
- {% for milestone in milestones %}
-
-
-
- {{ milestone.name }}
-
-
- {{ milestone.percent_completed }}
- {{ milestone.start_date }}
- {{ milestone.finish_date }}
-
- {% endfor %}
- {% else %}
- Nothing Found
- {% endif %}
-
-
-
-
-
-
-
- {% include 'content/section.html.j2' with tab=form.tabs.tasks %}
-
-
-
-
-
-
-
-
-
-
- {% include 'content/section.html.j2' with tab=form.tabs.notes %}
-
- {{ notes_form }}
-
-
-
-
-
-
-{% 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 %}
-
-
-
-
-
- Code
- Name
- Type
- State
- Organization
-
-
- {% for project in projects %}
-
-
- {{ 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 %}
-
-
- {% endfor %}
-
-
-
-
-{% 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 %}
-
-
-
-
-
-
-
- {% include 'content/section.html.j2' with tab=form.tabs.notes %}
-
- {{ notes_form }}
-
-
-
-
-
-{% 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 }}
-
-
-
-
-
-{% 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 %}
-
-
-
-
-
- Name
- Organization
- Created
- Modified
-
-
- {% for project_state in project_states %}
-
-
- {{ project_state.name }}
-
- {% if project_state.is_global %}Global{% else %}{{ project_state.organization }}{% endif %}
- {{ project_state.created }}
- {{ project_state.modified }}
-
-
- {% endfor %}
-
-
-
-
-{% 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 }}
-
-
-
-
-
-{% 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 %}
-
-
-
-
-
- Name
- Organization
- Created
- Modified
-
-
- {% for project_type in project_types %}
-
-
- {{ project_type.name }}
-
- {% if project_type.is_global %}Global{% else %}{{ project_type.organization }}{% endif %}
- {{ project_type.created }}
- {{ project_type.modified }}
-
-
- {% endfor %}
-
-
-
-
-{% 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')