initial commit

This commit is contained in:
David Malinowski 2021-03-24 01:36:20 +01:00
commit 4f7b75dbe5
78 changed files with 1594 additions and 0 deletions

6
.gitignore vendored Normal file
View File

@ -0,0 +1,6 @@
.DS_Store
*.pyc
*.egg-info
*.swp
tags
msp/docs/current

18
MANIFEST.in Normal file
View File

@ -0,0 +1,18 @@
include MANIFEST.in
include requirements.txt
include *.json
include *.md
include *.py
include *.txt
recursive-include msp *.css
recursive-include msp *.csv
recursive-include msp *.html
recursive-include msp *.ico
recursive-include msp *.js
recursive-include msp *.json
recursive-include msp *.md
recursive-include msp *.png
recursive-include msp *.py
recursive-include msp *.svg
recursive-include msp *.txt
recursive-exclude msp *.pyc

7
README.md Normal file
View File

@ -0,0 +1,7 @@
## MSP
App for Managed Service Providers
#### License
GPLv3# msp

1
license.txt Normal file
View File

@ -0,0 +1 @@
License: GPLv3

5
msp/__init__.py Normal file
View File

@ -0,0 +1,5 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
__version__ = '0.0.1'

0
msp/config/__init__.py Normal file
View File

14
msp/config/desktop.py Normal file
View File

@ -0,0 +1,14 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from frappe import _
def get_data():
return [
{
"module_name": "MSP",
"color": "grey",
"icon": "octicon octicon-rocket",
"type": "module",
"label": _("MSP")
}
]

11
msp/config/docs.py Normal file
View File

@ -0,0 +1,11 @@
"""
Configuration for docs
"""
# source_link = "https://github.com/[org_name]/msp"
# docs_base_url = "https://[org_name].github.io/msp"
# headline = "App that does everything"
# sub_heading = "Yes, you got that right the first time, everything"
def get_context(context):
context.brand_html = "MSP"

95
msp/config/msp.py Normal file
View File

@ -0,0 +1,95 @@
from __future__ import unicode_literals
from frappe import _
def get_data():
return [
{
"label": _("Objects"),
"items": [
{
"type": "doctype",
"name": "IT Object",
"label": _("IT Object"),
"description": _("IT Object")
},
{
"type": "doctype",
"name": "IP Network",
"label": _("IP Network"),
"description": _("IP Network")
},
{
"type": "doctype",
"name": "IP Address",
"label": _("IP Address"),
"description": _("IP Address")
},
{
"type": "doctype",
"name": "IT User Account",
"label": _("IT User Account"),
"description": _("IT User Account")
},
{
"type": "doctype",
"name": "IT Backup",
"label": _("IT Backup"),
"description": _("IT Backup")
}
]
},
{
"label": _("Master Data"),
"items": [
{
"type": "doctype",
"name": "IT Landscape",
"label": _("IT Landscape"),
"description": _("IT Landscape")
},
{
"type": "doctype",
"name": "IT Object Type",
"label": _("IT Object Type"),
"description": _("IT Object Type")
},
{
"type": "doctype",
"name": "IT Contract",
"label": _("IT Contract"),
"description": _("IT Contract")
},
{
"type": "doctype",
"name": "IT Contract Type",
"label": _("IT Contract Type"),
"description": _("IT Contract Type")
},
{
"type": "doctype",
"name": "IT User Account Type",
"label": _("IT User Account Type"),
"description": _("IT User Account Type")
},
]
},
{
"label": _("Process Management"),
"items": [
{
"type": "doctype",
"name": "IT Checklist",
"label": _("IT Checklist"),
"description": _("IT Checklist")
},
{
"type": "doctype",
"name": "IT Checklist Template",
"label": _("IT Checklist Template"),
"description": _("IT Checklist Template")
}
]
}
]

129
msp/hooks.py Normal file
View File

@ -0,0 +1,129 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals
from . import __version__ as app_version
app_name = "msp"
app_title = "MSP"
app_publisher = "itsdave GmbH"
app_description = "App for Managed Service Providers"
app_icon = "octicon octicon-rocket"
app_color = "grey"
app_email = "dev@itsdave.de"
app_license = "GPLv3"
# Includes in <head>
# ------------------
# include js, css files in header of desk.html
# app_include_css = "/assets/msp/css/msp.css"
# app_include_js = "/assets/msp/js/msp.js"
# include js, css files in header of web template
# web_include_css = "/assets/msp/css/msp.css"
# web_include_js = "/assets/msp/js/msp.js"
# include js in page
# page_js = {"page" : "public/js/file.js"}
# include js in doctype views
# doctype_js = {"doctype" : "public/js/doctype.js"}
# doctype_list_js = {"doctype" : "public/js/doctype_list.js"}
# doctype_tree_js = {"doctype" : "public/js/doctype_tree.js"}
# doctype_calendar_js = {"doctype" : "public/js/doctype_calendar.js"}
# Home Pages
# ----------
# application home page (will override Website Settings)
# home_page = "login"
# website user home page (by Role)
# role_home_page = {
# "Role": "home_page"
# }
# Website user home page (by function)
# get_website_user_home_page = "msp.utils.get_home_page"
# Generators
# ----------
# automatically create page for each record of this doctype
# website_generators = ["Web Page"]
# Installation
# ------------
# before_install = "msp.install.before_install"
# after_install = "msp.install.after_install"
# Desk Notifications
# ------------------
# See frappe.core.notifications.get_notification_config
# notification_config = "msp.notifications.get_notification_config"
# Permissions
# -----------
# Permissions evaluated in scripted ways
# permission_query_conditions = {
# "Event": "frappe.desk.doctype.event.event.get_permission_query_conditions",
# }
#
# has_permission = {
# "Event": "frappe.desk.doctype.event.event.has_permission",
# }
# Document Events
# ---------------
# Hook on document methods and events
# doc_events = {
# "*": {
# "on_update": "method",
# "on_cancel": "method",
# "on_trash": "method"
# }
# }
# Scheduled Tasks
# ---------------
# scheduler_events = {
# "all": [
# "msp.tasks.all"
# ],
# "daily": [
# "msp.tasks.daily"
# ],
# "hourly": [
# "msp.tasks.hourly"
# ],
# "weekly": [
# "msp.tasks.weekly"
# ]
# "monthly": [
# "msp.tasks.monthly"
# ]
# }
# Testing
# -------
# before_tests = "msp.install.before_tests"
# Overriding Methods
# ------------------------------
#
# override_whitelisted_methods = {
# "frappe.desk.doctype.event.event.get_events": "msp.event.get_events"
# }
#
# each overriding function accepts a `data` argument;
# generated from the base implementation of the doctype dashboard,
# along with any modifications made in other Frappe apps
# override_doctype_dashboards = {
# "Task": "msp.task.get_dashboard_data"
# }

1
msp/modules.txt Normal file
View File

@ -0,0 +1 @@
MSP

0
msp/msp/__init__.py Normal file
View File

View File

View File

View File

@ -0,0 +1,8 @@
// Copyright (c) 2021, itsdave GmbH and contributors
// For license information, please see license.txt
frappe.ui.form.on('IP Address', {
// refresh: function(frm) {
// }
});

View File

@ -0,0 +1,80 @@
{
"allow_rename": 1,
"autoname": "format:IP-{ip_address}-{it_landscape}",
"creation": "2021-03-18 03:15:11.235106",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"title",
"ip_address",
"protocol",
"it_object",
"ip_network",
"it_landscape"
],
"fields": [
{
"fieldname": "title",
"fieldtype": "Data",
"label": "Title"
},
{
"fieldname": "ip_address",
"fieldtype": "Data",
"in_list_view": 1,
"label": "IP Address",
"reqd": 1
},
{
"fieldname": "protocol",
"fieldtype": "Select",
"label": "Protocol",
"options": "IPv4\nIPv6"
},
{
"fieldname": "it_object",
"fieldtype": "Link",
"label": "IT Object",
"options": "IT Object"
},
{
"fieldname": "it_landscape",
"fieldtype": "Link",
"label": "IT Landscape",
"options": "IT Landscape",
"reqd": 1
},
{
"fieldname": "ip_network",
"fieldtype": "Link",
"label": "IP Network",
"options": "IP Network",
"reqd": 1
}
],
"modified": "2021-03-24 00:15:34.341218",
"modified_by": "Administrator",
"module": "MSP",
"name": "IP Address",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"quick_entry": 1,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1,
"track_views": 1
}

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, itsdave GmbH and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
# import frappe
from frappe.model.document import Document
class IPAddress(Document):
pass

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, itsdave GmbH and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestIPAddress(unittest.TestCase):
pass

View File

View File

@ -0,0 +1,18 @@
// Copyright (c) 2021, itsdave GmbH and contributors
// For license information, please see license.txt
frappe.ui.form.on('IP Network', {
refresh(frm) {
frm.add_custom_button('Calculate Network Data', function(){
frappe.call({
method: 'msp.msp.doctype.ip_network.ip_network.calculate_network_data',
args: { doc: frm.doc.name },
callback:function(r){
console.log(r.message)
frm.reload_doc()
}
})
})
}
});

View File

@ -0,0 +1,174 @@
{
"allow_rename": 1,
"autoname": "format:NET-{network_address}/{cidr_mask}-{it_landscape}",
"creation": "2021-03-18 03:13:40.772882",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"network_address",
"subnet_mask",
"host_min",
"host_max",
"broadcast",
"number_of_hosts",
"column_break_4",
"cidr_mask",
"configuration_section",
"default_gateway",
"primary_dns",
"secondary_dns",
"column_break_13",
"vlan",
"dhcp_server",
"1_to_1_nat_network_address",
"aditional_data_section",
"it_landscape",
"description",
"customer",
"location"
],
"fields": [
{
"fieldname": "description",
"fieldtype": "Text Editor",
"label": "Description"
},
{
"fieldname": "network_address",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Network Address",
"reqd": 1
},
{
"fieldname": "cidr_mask",
"fieldtype": "Select",
"in_list_view": 1,
"label": "CIDR Mask",
"options": "24\n25\n26\n27\n28\n29\n30\n31\n32",
"reqd": 1
},
{
"fieldname": "subnet_mask",
"fieldtype": "Data",
"label": "Subnet Mask"
},
{
"fieldname": "broadcast",
"fieldtype": "Data",
"label": "Broadcast",
"read_only": 1
},
{
"fieldname": "host_min",
"fieldtype": "Data",
"label": "Host min",
"read_only": 1
},
{
"fieldname": "host_max",
"fieldtype": "Data",
"label": "Host max",
"read_only": 1
},
{
"fieldname": "number_of_hosts",
"fieldtype": "Data",
"label": "number of Hosts",
"read_only": 1
},
{
"fieldname": "vlan",
"fieldtype": "Data",
"label": "VLAN"
},
{
"fieldname": "default_gateway",
"fieldtype": "Data",
"label": "Default Gateway"
},
{
"fieldname": "primary_dns",
"fieldtype": "Data",
"label": "Primary DNS"
},
{
"fieldname": "secondary_dns",
"fieldtype": "Data",
"label": "Secondary DNS"
},
{
"fieldname": "dhcp_server",
"fieldtype": "Data",
"label": "DHCP Server"
},
{
"fieldname": "1_to_1_nat_network_address",
"fieldtype": "Data",
"label": "1 to 1 NAT Network Address"
},
{
"fieldname": "customer",
"fieldtype": "Link",
"label": "Customer",
"options": "Customer"
},
{
"fieldname": "it_landscape",
"fieldtype": "Link",
"in_list_view": 1,
"label": "IT Landscape",
"options": "IT Landscape",
"reqd": 1
},
{
"fieldname": "location",
"fieldtype": "Link",
"label": "Location",
"options": "Location"
},
{
"fieldname": "column_break_4",
"fieldtype": "Column Break"
},
{
"fieldname": "configuration_section",
"fieldtype": "Section Break",
"label": "Configuration"
},
{
"fieldname": "column_break_13",
"fieldtype": "Column Break"
},
{
"fieldname": "aditional_data_section",
"fieldtype": "Section Break",
"label": "Aditional Data"
}
],
"modified": "2021-03-24 00:12:13.023565",
"modified_by": "Administrator",
"module": "MSP",
"name": "IP Network",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"quick_entry": 1,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1,
"track_views": 1
}

View File

@ -0,0 +1,24 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, itsdave GmbH and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
import frappe
from ipaddress import IPv4Address, IPv4Network
from frappe.model.document import Document
class IPNetwork(Document):
pass
@frappe.whitelist()
def calculate_network_data(doc):
net_doc = frappe.get_doc("IP Network", doc)
network = IPv4Network(net_doc.network_address + "/" + net_doc.cidr_mask)
net_doc.host_min = str(min(list(network.hosts())))
net_doc.host_max = str(max(list(network.hosts())))
net_doc.number_of_hosts = len(list(network.hosts()))
net_doc.subnet_mask = str(network.netmask)
net_doc.broadcast = str(network.broadcast_address)
net_doc.save()
return "please refresh"

View File

@ -0,0 +1,14 @@
from __future__ import unicode_literals
from frappe import _
def get_data():
return {
'heatmap': False,
'fieldname': 'ip_network',
'transactions': [
{
'label': _('Objects'),
'items': ['IP Address' ]
}
]
}

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, itsdave GmbH and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestIPNetwork(unittest.TestCase):
pass

View File

View File

@ -0,0 +1,8 @@
// Copyright (c) 2021, itsdave GmbH and contributors
// For license information, please see license.txt
frappe.ui.form.on('IT Checklist', {
// refresh: function(frm) {
// }
});

View File

@ -0,0 +1,60 @@
{
"autoname": "ITCL-.#####",
"creation": "2021-03-18 02:30:47.686842",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"title",
"customer",
"it_landscape",
"completed_on"
],
"fields": [
{
"fieldname": "title",
"fieldtype": "Data",
"label": "Title"
},
{
"fieldname": "customer",
"fieldtype": "Link",
"label": "Customer",
"options": "Customer"
},
{
"fieldname": "it_landscape",
"fieldtype": "Link",
"label": "IT Landscape",
"options": "IT Landscape"
},
{
"fieldname": "completed_on",
"fieldtype": "Datetime",
"label": "Completed on"
}
],
"modified": "2021-03-18 02:30:47.686842",
"modified_by": "Administrator",
"module": "MSP",
"name": "IT Checklist",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"quick_entry": 1,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1
}

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, itsdave GmbH and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
# import frappe
from frappe.model.document import Document
class ITChecklist(Document):
pass

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, itsdave GmbH and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestITChecklist(unittest.TestCase):
pass

View File

@ -0,0 +1,8 @@
// Copyright (c) 2021, itsdave GmbH and contributors
// For license information, please see license.txt
frappe.ui.form.on('IT Checklist Template', {
// refresh: function(frm) {
// }
});

View File

@ -0,0 +1,40 @@
{
"autoname": "ITCLT-.###",
"creation": "2021-03-18 02:27:40.328506",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"title"
],
"fields": [
{
"fieldname": "title",
"fieldtype": "Data",
"label": "Title"
}
],
"modified": "2021-03-18 02:27:40.328506",
"modified_by": "Administrator",
"module": "MSP",
"name": "IT Checklist Template",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"sort_field": "modified",
"sort_order": "DESC",
"title_field": "title",
"track_changes": 1
}

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, itsdave GmbH and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
# import frappe
from frappe.model.document import Document
class ITChecklistTemplate(Document):
pass

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, itsdave GmbH and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestITChecklistTemplate(unittest.TestCase):
pass

View File

View File

@ -0,0 +1,8 @@
// Copyright (c) 2021, itsdave GmbH and contributors
// For license information, please see license.txt
frappe.ui.form.on('IT Contract', {
// refresh: function(frm) {
// }
});

View File

@ -0,0 +1,62 @@
{
"autoname": "ITCON-.#####",
"creation": "2021-03-18 02:54:42.727620",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"title",
"customer",
"it_landscape",
"it_contract_type"
],
"fields": [
{
"fieldname": "title",
"fieldtype": "Data",
"label": "Title"
},
{
"fieldname": "customer",
"fieldtype": "Link",
"label": "Customer",
"options": "Customer"
},
{
"fieldname": "it_landscape",
"fieldtype": "Link",
"label": "IT Landscape",
"options": "IT Landscape"
},
{
"fieldname": "it_contract_type",
"fieldtype": "Link",
"label": "IT Contract Type",
"options": "IT Contract Type"
}
],
"modified": "2021-03-23 21:04:54.623670",
"modified_by": "Administrator",
"module": "MSP",
"name": "IT Contract",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"quick_entry": 1,
"sort_field": "modified",
"sort_order": "DESC",
"title_field": "title",
"track_changes": 1
}

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, itsdave GmbH and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
# import frappe
from frappe.model.document import Document
class ITContract(Document):
pass

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, itsdave GmbH and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestITContract(unittest.TestCase):
pass

View File

@ -0,0 +1,8 @@
// Copyright (c) 2021, itsdave GmbH and contributors
// For license information, please see license.txt
frappe.ui.form.on('IT Contract Type', {
// refresh: function(frm) {
// }
});

View File

@ -0,0 +1,40 @@
{
"autoname": "field:title",
"creation": "2021-03-23 21:03:02.275205",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"title"
],
"fields": [
{
"fieldname": "title",
"fieldtype": "Data",
"label": "Title",
"unique": 1
}
],
"modified": "2021-03-23 21:03:02.275205",
"modified_by": "Administrator",
"module": "MSP",
"name": "IT Contract Type",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1
}

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, itsdave GmbH and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
# import frappe
from frappe.model.document import Document
class ITContractType(Document):
pass

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, itsdave GmbH and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestITContractType(unittest.TestCase):
pass

View File

View File

@ -0,0 +1,8 @@
// Copyright (c) 2021, itsdave GmbH and contributors
// For license information, please see license.txt
frappe.ui.form.on('IT Landscape', {
// refresh: function(frm) {
// }
});

View File

@ -0,0 +1,68 @@
{
"allow_rename": 1,
"autoname": "field:abbreviation",
"creation": "2021-03-18 01:39:06.814363",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"title",
"abbreviation",
"customer",
"description"
],
"fields": [
{
"fieldname": "title",
"fieldtype": "Data",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Title"
},
{
"fieldname": "customer",
"fieldtype": "Link",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Customer",
"options": "Customer"
},
{
"fieldname": "description",
"fieldtype": "Text Editor",
"label": "Description"
},
{
"fieldname": "abbreviation",
"fieldtype": "Data",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Abbreviation",
"unique": 1
}
],
"modified": "2021-03-24 00:34:10.605746",
"modified_by": "Administrator",
"module": "MSP",
"name": "IT Landscape",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"quick_entry": 1,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1,
"track_views": 1
}

View File

@ -0,0 +1,27 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, itsdave GmbH and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
import frappe
from frappe.model.document import Document
class ITLandscape(Document):
pass
def get_timeline_data(doctype, name):
"""views for linked objects"""
return dict(frappe.db.sql("""select unix_timestamp(l.creation), sum(1) as `count`
from `tabView Log` as l where
(`reference_doctype` = "IT Object" and `reference_name` in (select `name` from `tabIT Object` where `it_landscape` = %s))
or
(`reference_doctype` = "IP Network" and `reference_name` in (select `name` from `tabIP Network` where `it_landscape` = %s))
or
(`reference_doctype` = "IP Address" and `reference_name` in (select `name` from `tabIP Address` where `it_landscape` = %s))
or
(`reference_doctype` = "IT User Account" and `reference_name` in (select `name` from `tabIT User Account` where `it_landscape` = %s))
or
(`reference_doctype` = "IT Landscape" and `reference_name` = %s)
and
creation > date_sub(curdate(), interval 1 year)
group by date(l.creation);""", (name,name,name,name,name)))

View File

@ -0,0 +1,19 @@
from __future__ import unicode_literals
from frappe import _
def get_data():
return {
'heatmap': True,
'heatmap_message': _('Based on Views of linked Objects and this Landscape.'),
'fieldname': 'it_landscape',
'transactions': [
{
'label': _('Objects'),
'items': ['IT Object', 'IT User Account', 'IP Network', 'IP Address' ]
},
{
'label': _('Processes'),
'items': ['IT Contract']
}
]
}

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, itsdave GmbH and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestITLandscape(unittest.TestCase):
pass

View File

View File

@ -0,0 +1,8 @@
// Copyright (c) 2021, itsdave GmbH and contributors
// For license information, please see license.txt
frappe.ui.form.on('IT Object', {
// refresh: function(frm) {
// }
});

View File

@ -0,0 +1,149 @@
{
"autoname": "ITO-.#####",
"creation": "2021-03-18 01:33:25.740040",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"overview_section",
"title",
"main_ip",
"link",
"status",
"column_break_4",
"type",
"item",
"customer",
"it_landscape",
"location",
"description_section",
"description",
"image",
"network_config_section",
"ip_adresses"
],
"fields": [
{
"fieldname": "title",
"fieldtype": "Data",
"in_standard_filter": 1,
"label": "Title"
},
{
"fieldname": "description",
"fieldtype": "Text Editor",
"label": "Description"
},
{
"fieldname": "item",
"fieldtype": "Link",
"label": "Item",
"options": "Item"
},
{
"fieldname": "network_config_section",
"fieldtype": "Section Break",
"label": "Advanced Network Config"
},
{
"fieldname": "overview_section",
"fieldtype": "Section Break",
"label": "Overview"
},
{
"fieldname": "type",
"fieldtype": "Link",
"label": "Type",
"options": "IT Object Type"
},
{
"fieldname": "description_section",
"fieldtype": "Section Break",
"label": "Description"
},
{
"fieldname": "main_ip",
"fieldtype": "Link",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Main IP Address",
"options": "IP Address"
},
{
"fieldname": "location",
"fieldtype": "Link",
"label": "Location",
"options": "Location"
},
{
"fieldname": "it_landscape",
"fieldtype": "Link",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "IT Landscape",
"options": "IT Landscape"
},
{
"fieldname": "column_break_4",
"fieldtype": "Column Break"
},
{
"fieldname": "image",
"fieldtype": "Attach Image",
"label": "Image"
},
{
"fieldname": "status",
"fieldtype": "Select",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Status",
"options": "in Production\nImplementation\nin Maintenance\nDecommissioned"
},
{
"fieldname": "link",
"fieldtype": "Link",
"label": "Main Admin Account",
"options": "IT User Account"
},
{
"fieldname": "customer",
"fieldtype": "Link",
"label": "Customer",
"options": "Customer"
},
{
"fieldname": "ip_adresses",
"fieldtype": "Table",
"label": "IP Adresses",
"options": "IT Object IP Address"
}
],
"image_field": "image",
"modified": "2021-03-23 21:28:29.467402",
"modified_by": "Administrator",
"module": "MSP",
"name": "IT Object",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"quick_entry": 1,
"search_fields": "title, main_ip, item, description",
"sort_field": "modified",
"sort_order": "DESC",
"title_field": "title",
"track_changes": 1,
"track_views": 1
}

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, itsdave GmbH and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
# import frappe
from frappe.model.document import Document
class ITObject(Document):
pass

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, itsdave GmbH and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestITObject(unittest.TestCase):
pass

View File

@ -0,0 +1,44 @@
{
"creation": "2021-03-18 03:40:19.147899",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"ip_address",
"interface_caption",
"main_address"
],
"fields": [
{
"fieldname": "ip_address",
"fieldtype": "Link",
"in_list_view": 1,
"label": "IP Address",
"options": "IP Address"
},
{
"fieldname": "interface_caption",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Interface Caption"
},
{
"default": "0",
"fieldname": "main_address",
"fieldtype": "Check",
"in_list_view": 1,
"label": "Main Address"
}
],
"istable": 1,
"modified": "2021-03-18 03:46:44.712861",
"modified_by": "Administrator",
"module": "MSP",
"name": "IT Object IP Address",
"owner": "Administrator",
"permissions": [],
"quick_entry": 1,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1
}

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, itsdave GmbH and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
# import frappe
from frappe.model.document import Document
class ITObjectIPAddress(Document):
pass

View File

@ -0,0 +1,8 @@
// Copyright (c) 2021, itsdave GmbH and contributors
// For license information, please see license.txt
frappe.ui.form.on('IT Object Type', {
// refresh: function(frm) {
// }
});

View File

@ -0,0 +1,55 @@
{
"allow_rename": 1,
"autoname": "field:title",
"creation": "2021-03-18 01:31:27.823964",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"title",
"description",
"default_image"
],
"fields": [
{
"fieldname": "title",
"fieldtype": "Data",
"in_list_view": 1,
"label": "Title",
"reqd": 1,
"unique": 1
},
{
"fieldname": "description",
"fieldtype": "Data",
"label": "Description"
},
{
"fieldname": "default_image",
"fieldtype": "Attach Image",
"label": "Default Image"
}
],
"modified": "2021-03-23 21:09:27.176989",
"modified_by": "Administrator",
"module": "MSP",
"name": "IT Object Type",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1
}

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, itsdave GmbH and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
# import frappe
from frappe.model.document import Document
class ITObjectType(Document):
pass

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, itsdave GmbH and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestITObjectType(unittest.TestCase):
pass

View File

@ -0,0 +1,8 @@
// Copyright (c) 2021, itsdave GmbH and contributors
// For license information, please see license.txt
frappe.ui.form.on('IT User Account', {
// refresh: function(frm) {
// }
});

View File

@ -0,0 +1,80 @@
{
"autoname": "ITUACC-.#####",
"creation": "2021-03-18 02:43:33.591837",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"username",
"password",
"domain",
"account_type",
"it_landscape",
"upn"
],
"fields": [
{
"fieldname": "username",
"fieldtype": "Data",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Username"
},
{
"fieldname": "password",
"fieldtype": "Password",
"label": "Password"
},
{
"fieldname": "account_type",
"fieldtype": "Link",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Account Type",
"options": "IT User Account Type"
},
{
"fieldname": "it_landscape",
"fieldtype": "Link",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "IT Landscape",
"options": "IT Landscape"
},
{
"fieldname": "domain",
"fieldtype": "Data",
"in_list_view": 1,
"in_standard_filter": 1,
"label": "Domain"
},
{
"fieldname": "upn",
"fieldtype": "Data",
"label": "UPN"
}
],
"modified": "2021-03-24 00:27:17.507476",
"modified_by": "Administrator",
"module": "MSP",
"name": "IT User Account",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"sort_field": "modified",
"sort_order": "DESC",
"title_field": "upn",
"track_changes": 1
}

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, itsdave GmbH and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
# import frappe
from frappe.model.document import Document
class ITUserAccount(Document):
pass

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, itsdave GmbH and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestITUserAccount(unittest.TestCase):
pass

View File

@ -0,0 +1,8 @@
// Copyright (c) 2021, itsdave GmbH and contributors
// For license information, please see license.txt
frappe.ui.form.on('IT User Account Type', {
// refresh: function(frm) {
// }
});

View File

@ -0,0 +1,41 @@
{
"autoname": "field:title",
"creation": "2021-03-18 02:44:48.527444",
"doctype": "DocType",
"editable_grid": 1,
"engine": "InnoDB",
"field_order": [
"title"
],
"fields": [
{
"fieldname": "title",
"fieldtype": "Data",
"label": "Title",
"unique": 1
}
],
"modified": "2021-03-18 02:44:48.527444",
"modified_by": "Administrator",
"module": "MSP",
"name": "IT User Account Type",
"owner": "Administrator",
"permissions": [
{
"create": 1,
"delete": 1,
"email": 1,
"export": 1,
"print": 1,
"read": 1,
"report": 1,
"role": "System Manager",
"share": 1,
"write": 1
}
],
"quick_entry": 1,
"sort_field": "modified",
"sort_order": "DESC",
"track_changes": 1
}

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, itsdave GmbH and contributors
# For license information, please see license.txt
from __future__ import unicode_literals
# import frappe
from frappe.model.document import Document
class ITUserAccountType(Document):
pass

View File

@ -0,0 +1,10 @@
# -*- coding: utf-8 -*-
# Copyright (c) 2021, itsdave GmbH and Contributors
# See license.txt
from __future__ import unicode_literals
# import frappe
import unittest
class TestITUserAccountType(unittest.TestCase):
pass

0
msp/patches.txt Normal file
View File

View File

View File

2
requirements.txt Normal file
View File

@ -0,0 +1,2 @@
frappe
ipaddress

20
setup.py Normal file
View File

@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
from setuptools import setup, find_packages
with open('requirements.txt') as f:
install_requires = f.read().strip().split('\n')
# get version from __version__ variable in msp/__init__.py
from msp import __version__ as version
setup(
name='msp',
version=version,
description='App for Managed Service Providers',
author='itsdave GmbH',
author_email='dev@itsdave.de',
packages=find_packages(),
zip_safe=False,
include_package_data=True,
install_requires=install_requires
)