├── license.txt ├── requirements.txt ├── subscription_v11 ├── patches.txt ├── config │ ├── __init__.py │ ├── desktop.py │ └── docs.py ├── templates │ ├── __init__.py │ └── pages │ │ └── __init__.py ├── modules.txt ├── subscription_v11 │ ├── __init__.py │ └── doctype │ │ ├── __init__.py │ │ └── license_subscription_settings │ │ ├── __init__.py │ │ ├── license_subscription_settings.js │ │ ├── test_license_subscription_settings.py │ │ ├── license_subscription_settings.py │ │ ├── test_license_subscription_settings.js │ │ └── license_subscription_settings.json ├── __init__.py └── hooks.py ├── .gitignore ├── README.md ├── MANIFEST.in └── setup.py /license.txt: -------------------------------------------------------------------------------- 1 | License: MIT -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | frappe -------------------------------------------------------------------------------- /subscription_v11/patches.txt: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /subscription_v11/config/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /subscription_v11/templates/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /subscription_v11/modules.txt: -------------------------------------------------------------------------------- 1 | Subscription V11 -------------------------------------------------------------------------------- /subscription_v11/subscription_v11/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /subscription_v11/templates/pages/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /subscription_v11/subscription_v11/doctype/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /subscription_v11/subscription_v11/doctype/license_subscription_settings/__init__.py: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | .DS_Store 2 | *.pyc 3 | *.egg-info 4 | *.swp 5 | tags 6 | subscription_v11/docs/current -------------------------------------------------------------------------------- /subscription_v11/subscription_v11/doctype/license_subscription_settings/license_subscription_settings.js: -------------------------------------------------------------------------------- 1 | // Copyright (c) 2021, Subscription and contributors 2 | // For license information, please see license.txt 3 | 4 | frappe.ui.form.on('License Subscription Settings', { 5 | refresh: function(frm) { 6 | 7 | } 8 | }); 9 | -------------------------------------------------------------------------------- /subscription_v11/config/desktop.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | from frappe import _ 4 | 5 | def get_data(): 6 | return [ 7 | { 8 | "module_name": "Subscription V11", 9 | "color": "grey", 10 | "icon": "octicon octicon-file-directory", 11 | "type": "module", 12 | "label": _("Subscription V11") 13 | } 14 | ] 15 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | ## Subscription V11 2 | 3 | Subscription 4 | 5 | #### License 6 | 7 | MIT 8 | 9 | ## Installation 10 | Navigate to your bench folder 11 | ``` 12 | cd frappe-bench 13 | ``` 14 | Install Subscription App 15 | ``` 16 | bench get-app subscription_v11 https://github.com/aerele/Subscription-v11.git 17 | bench --site [site-name] install-app subscription_v11 18 | ``` 19 | -------------------------------------------------------------------------------- /subscription_v11/subscription_v11/doctype/license_subscription_settings/test_license_subscription_settings.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright (c) 2021, Subscription and Contributors 3 | # See license.txt 4 | from __future__ import unicode_literals 5 | 6 | import frappe 7 | import unittest 8 | 9 | class TestLicenseSubscriptionSettings(unittest.TestCase): 10 | pass 11 | -------------------------------------------------------------------------------- /subscription_v11/config/docs.py: -------------------------------------------------------------------------------- 1 | """ 2 | Configuration for docs 3 | """ 4 | 5 | # source_link = "https://github.com/[org_name]/subscription_v11" 6 | # docs_base_url = "https://[org_name].github.io/subscription_v11" 7 | # headline = "App that does everything" 8 | # sub_heading = "Yes, you got that right the first time, everything" 9 | 10 | def get_context(context): 11 | context.brand_html = "Subscription V11" 12 | -------------------------------------------------------------------------------- /subscription_v11/subscription_v11/doctype/license_subscription_settings/license_subscription_settings.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | # Copyright (c) 2021, Subscription and contributors 3 | # For license information, please see license.txt 4 | 5 | from __future__ import unicode_literals 6 | import frappe 7 | from frappe.model.document import Document 8 | 9 | class LicenseSubscriptionSettings(Document): 10 | pass 11 | -------------------------------------------------------------------------------- /MANIFEST.in: -------------------------------------------------------------------------------- 1 | include MANIFEST.in 2 | include requirements.txt 3 | include *.json 4 | include *.md 5 | include *.py 6 | include *.txt 7 | recursive-include subscription_v11 *.css 8 | recursive-include subscription_v11 *.csv 9 | recursive-include subscription_v11 *.html 10 | recursive-include subscription_v11 *.ico 11 | recursive-include subscription_v11 *.js 12 | recursive-include subscription_v11 *.json 13 | recursive-include subscription_v11 *.md 14 | recursive-include subscription_v11 *.png 15 | recursive-include subscription_v11 *.py 16 | recursive-include subscription_v11 *.svg 17 | recursive-include subscription_v11 *.txt 18 | recursive-exclude subscription_v11 *.pyc -------------------------------------------------------------------------------- /subscription_v11/subscription_v11/doctype/license_subscription_settings/test_license_subscription_settings.js: -------------------------------------------------------------------------------- 1 | /* eslint-disable */ 2 | // rename this file from _test_[name] to test_[name] to activate 3 | // and remove above this line 4 | 5 | QUnit.test("test: License Subscription Settings", function (assert) { 6 | let done = assert.async(); 7 | 8 | // number of asserts 9 | assert.expect(1); 10 | 11 | frappe.run_serially([ 12 | // insert a new License Subscription Settings 13 | () => frappe.tests.make('License Subscription Settings', [ 14 | // values to be set 15 | {key: 'value'} 16 | ]), 17 | () => { 18 | assert.equal(cur_frm.doc.key, 'value'); 19 | }, 20 | () => done() 21 | ]); 22 | 23 | }); 24 | -------------------------------------------------------------------------------- /setup.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from setuptools import setup, find_packages 3 | import re, ast 4 | 5 | with open('requirements.txt') as f: 6 | install_requires = f.read().strip().split('\n') 7 | 8 | # get version from __version__ variable in subscription_v11/__init__.py 9 | _version_re = re.compile(r'__version__\s+=\s+(.*)') 10 | 11 | with open('subscription_v11/__init__.py', 'rb') as f: 12 | version = str(ast.literal_eval(_version_re.search( 13 | f.read().decode('utf-8')).group(1))) 14 | 15 | setup( 16 | name='subscription_v11', 17 | version=version, 18 | description='Subscription', 19 | author='Subscription', 20 | author_email='Subscription', 21 | packages=find_packages(), 22 | zip_safe=False, 23 | include_package_data=True, 24 | install_requires=install_requires 25 | ) 26 | -------------------------------------------------------------------------------- /subscription_v11/__init__.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | import frappe 4 | from frappe.sessions import Session, delete_session 5 | 6 | __version__ = '0.0.1' 7 | 8 | 9 | def validate_license(): 10 | license = frappe.db.get_value("License Subscription Settings", "License Subscription Settings", "license_id") 11 | user = frappe.session.user 12 | if user != "Administrator": 13 | if not license: 14 | frappe.throw("License not found, Contact your Administrator") 15 | 16 | import requests 17 | 18 | url = "http://license.ribox.me/api/license/CheckLicense/"+license 19 | 20 | payload={} 21 | headers = { 22 | 'authorization': 'Basic U01COlNNQkAyMDE5' 23 | } 24 | 25 | response = requests.request("GET", url, headers=headers, data=payload) 26 | 27 | if response.status_code == 200: 28 | data = response.json() 29 | if data['statusCode'] in ['A', 'B', 'C', 'F']: 30 | delete_session(frappe.session.sid, frappe.session.user) 31 | frappe.throw(data['message']) 32 | elif data['statusCode'] == 'D': 33 | frappe.msgprint(data['message']) 34 | else: 35 | frappe.throw("Something went wrong!, please try again later") 36 | -------------------------------------------------------------------------------- /subscription_v11/subscription_v11/doctype/license_subscription_settings/license_subscription_settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "allow_copy": 0, 3 | "allow_events_in_timeline": 0, 4 | "allow_guest_to_view": 0, 5 | "allow_import": 0, 6 | "allow_rename": 0, 7 | "beta": 0, 8 | "creation": "2021-08-31 13:45:19.377756", 9 | "custom": 0, 10 | "docstatus": 0, 11 | "doctype": "DocType", 12 | "document_type": "", 13 | "editable_grid": 1, 14 | "engine": "InnoDB", 15 | "fields": [ 16 | { 17 | "allow_bulk_edit": 0, 18 | "allow_in_quick_entry": 0, 19 | "allow_on_submit": 0, 20 | "bold": 0, 21 | "collapsible": 0, 22 | "columns": 0, 23 | "fetch_if_empty": 0, 24 | "fieldname": "license_id", 25 | "fieldtype": "Data", 26 | "hidden": 0, 27 | "ignore_user_permissions": 0, 28 | "ignore_xss_filter": 0, 29 | "in_filter": 0, 30 | "in_global_search": 0, 31 | "in_list_view": 0, 32 | "in_standard_filter": 0, 33 | "label": "License ID", 34 | "length": 0, 35 | "no_copy": 0, 36 | "permlevel": 0, 37 | "precision": "", 38 | "print_hide": 0, 39 | "print_hide_if_no_value": 0, 40 | "read_only": 0, 41 | "remember_last_selected_value": 0, 42 | "report_hide": 0, 43 | "reqd": 0, 44 | "search_index": 0, 45 | "set_only_once": 0, 46 | "translatable": 0, 47 | "unique": 0 48 | } 49 | ], 50 | "has_web_view": 0, 51 | "hide_heading": 0, 52 | "hide_toolbar": 0, 53 | "idx": 0, 54 | "image_view": 0, 55 | "in_create": 0, 56 | "is_submittable": 0, 57 | "issingle": 1, 58 | "istable": 0, 59 | "max_attachments": 0, 60 | "modified": "2021-10-11 14:16:31.790360", 61 | "modified_by": "Administrator", 62 | "module": "Subscription V11", 63 | "name": "License Subscription Settings", 64 | "name_case": "", 65 | "owner": "Administrator", 66 | "permissions": [ 67 | { 68 | "amend": 0, 69 | "cancel": 0, 70 | "create": 1, 71 | "delete": 1, 72 | "email": 1, 73 | "export": 0, 74 | "if_owner": 0, 75 | "import": 0, 76 | "permlevel": 0, 77 | "print": 1, 78 | "read": 1, 79 | "report": 0, 80 | "role": "System Manager", 81 | "set_user_permissions": 0, 82 | "share": 1, 83 | "submit": 0, 84 | "write": 1 85 | } 86 | ], 87 | "quick_entry": 0, 88 | "read_only": 0, 89 | "read_only_onload": 0, 90 | "show_name_in_global_search": 0, 91 | "sort_field": "modified", 92 | "sort_order": "DESC", 93 | "track_changes": 0, 94 | "track_seen": 0, 95 | "track_views": 0 96 | } -------------------------------------------------------------------------------- /subscription_v11/hooks.py: -------------------------------------------------------------------------------- 1 | # -*- coding: utf-8 -*- 2 | from __future__ import unicode_literals 3 | from . import __version__ as app_version 4 | 5 | app_name = "subscription_v11" 6 | app_title = "Subscription V11" 7 | app_publisher = "Subscription" 8 | app_description = "Subscription" 9 | app_icon = "octicon octicon-file-directory" 10 | app_color = "grey" 11 | app_email = "Subscription" 12 | app_license = "MIT" 13 | 14 | # Includes in 15 | # ------------------ 16 | 17 | # include js, css files in header of desk.html 18 | # app_include_css = "/assets/subscription_v11/css/subscription_v11.css" 19 | # app_include_js = "/assets/subscription_v11/js/subscription_v11.js" 20 | 21 | # include js, css files in header of web template 22 | # web_include_css = "/assets/subscription_v11/css/subscription_v11.css" 23 | # web_include_js = "/assets/subscription_v11/js/subscription_v11.js" 24 | 25 | # include js in page 26 | # page_js = {"page" : "public/js/file.js"} 27 | 28 | # include js in doctype views 29 | # doctype_js = {"doctype" : "public/js/doctype.js"} 30 | # doctype_list_js = {"doctype" : "public/js/doctype_list.js"} 31 | # doctype_tree_js = {"doctype" : "public/js/doctype_tree.js"} 32 | # doctype_calendar_js = {"doctype" : "public/js/doctype_calendar.js"} 33 | 34 | # Home Pages 35 | # ---------- 36 | 37 | # application home page (will override Website Settings) 38 | # home_page = "login" 39 | 40 | # website user home page (by Role) 41 | # role_home_page = { 42 | # "Role": "home_page" 43 | # } 44 | 45 | # Website user home page (by function) 46 | # get_website_user_home_page = "subscription_v11.utils.get_home_page" 47 | 48 | # Generators 49 | # ---------- 50 | 51 | # automatically create page for each record of this doctype 52 | # website_generators = ["Web Page"] 53 | 54 | # Installation 55 | # ------------ 56 | 57 | # before_install = "subscription_v11.install.before_install" 58 | # after_install = "subscription_v11.install.after_install" 59 | 60 | # Desk Notifications 61 | # ------------------ 62 | # See frappe.core.notifications.get_notification_config 63 | 64 | # notification_config = "subscription_v11.notifications.get_notification_config" 65 | 66 | # Permissions 67 | # ----------- 68 | # Permissions evaluated in scripted ways 69 | 70 | # permission_query_conditions = { 71 | # "Event": "frappe.desk.doctype.event.event.get_permission_query_conditions", 72 | # } 73 | # 74 | # has_permission = { 75 | # "Event": "frappe.desk.doctype.event.event.has_permission", 76 | # } 77 | 78 | # Document Events 79 | # --------------- 80 | # Hook on document methods and events 81 | 82 | # doc_events = { 83 | # "*": { 84 | # "on_update": "method", 85 | # "on_cancel": "method", 86 | # "on_trash": "method" 87 | # } 88 | # } 89 | 90 | # Scheduled Tasks 91 | # --------------- 92 | 93 | # scheduler_events = { 94 | # "all": [ 95 | # "subscription_v11.tasks.all" 96 | # ], 97 | # "daily": [ 98 | # "subscription_v11.tasks.daily" 99 | # ], 100 | # "hourly": [ 101 | # "subscription_v11.tasks.hourly" 102 | # ], 103 | # "weekly": [ 104 | # "subscription_v11.tasks.weekly" 105 | # ] 106 | # "monthly": [ 107 | # "subscription_v11.tasks.monthly" 108 | # ] 109 | # } 110 | 111 | # Testing 112 | # ------- 113 | 114 | # before_tests = "subscription_v11.install.before_tests" 115 | 116 | # Overriding Whitelisted Methods 117 | # ------------------------------ 118 | # 119 | # override_whitelisted_methods = { 120 | # "frappe.desk.doctype.event.event.get_events": "subscription_v11.event.get_events" 121 | # } 122 | 123 | on_session_creation= "subscription_v11.validate_license" 124 | --------------------------------------------------------------------------------