Exemplo n.º 1
0
    def render(
        self,
        dt_subjects=None,
    ):  # subjects datatable

        # SUBJECTS
        if not self.__application: self.EmptyValue("app_guid")
        if not self.__acl_object: self.EmptyValue("object_guid")

        result_uag_header = ["guid", "name", "arrow"]
        result_uag_hidden = ["guid"]
        result_uag_key = "guid"
        result_uag_data = []
        selected_subjects = []

        subjects = ProAdmin.application().get_groups() + ProAdmin.application(
        ).get_users()
        rules = self.__acl_object.rules()

        object_types = ProAdmin.scheme().get_aclobjecttypes()

        for type in object_types:
            if type.name == self.__acl_object.type:
                self.__access_types = type.access_types
                break

        if not self.__access_types:
            raise Exception("This object type '%s' is not registered" %
                            self.__acl_object.type)

        lang = localization.get_lang()
        # fill subjects (groups and users)
        for subject in subjects:
            subject_rules = [
                rule.access for rule in rules if rule.subject == subject
            ]
            #subject_rules = [self.__access_types[subj_rule] for subj_rule in subject_rules if subj_rule in self.__access_types]
            subject_rules = [
                lang[subj_rule] for subj_rule in subject_rules
                if subj_rule in self.__access_types
            ]
            rights_str = ", ".join(subject_rules)

            if hasattr(subject, "email"):
                # user
                subject_str = "<div class='acl_container_user'>%(name)s (%(rights)s) </div>" % {
                    'name': subject.name,
                    'rights': rights_str
                }
            else:
                # group
                subject_str = "<div class='acl_container_group'><b>%(name)s</b> (%(rights)s)</div>" % {
                    'name': subject.name,
                    'rights': rights_str
                }

            result_uag_data.append([subject.guid, subject_str, ""])

        if self.__subject:
            selected_subjects = [self.__subject.guid]

        dt_subjects.showheader = "0"
        dt_subjects.title = ""
        dt_subjects.selectionmode = "0"  # single
        dt_subjects.hiddenfields = json.dumps(result_uag_hidden)
        dt_subjects.key = result_uag_key
        dt_subjects.header = json.dumps(result_uag_header)
        dt_subjects.data = json.dumps(result_uag_data)
        dt_subjects.selectedrows = json.dumps(selected_subjects)
def main():

	header = request.arguments["headerData"]

	if header == "edit":

		import ProAdmin
		import localization

		lang = localization.get_lang()

		current_tab = request.shared_variables[ "currentTab" ]
		guid = request.arguments["keyField"]
		obj = obj_type = search_obj_type = datatable = error_text = None

		if current_tab == "users":

			obj_type = "user"
			search_obj_type = "group"
			count_text = self.dialog_user.groups_cont.groups_count
			datatable = self.dialog_user.groups_cont.cont.datatable_groups
			error_text = self.dialog_user.groups_cont.cont.error_text
			throbber_image = self.dialog_user.groups_cont.cont.throbber_image

			users = ProAdmin.application().get_users(guid = guid)
			obj = user = users[0] if users else None

			if user:


				from widget_user_group_dialog import country_list
				index = -1
				if user.country:
					try: index = country_list.index( user.country )
					except: pass

				self.dialog_user.edit_user_text.action( "show", [ "" ] )
				self.dialog_user.new_user_text.action( "hide", [ "" ] )
				self.dialog_user.continue_btn.action( "hide", [ "" ] )
				self.dialog_user.create_btn.action( "hide", [ "" ] )
				self.dialog_user.save_btn.action( "show", [ "" ] )
				self.dialog_user.groups_btn.action( "show", [ "" ] )
				self.dialog_user.info_btn.action( "hide", [ "" ] )
				self.dialog_user.user_form.action( "show", [ "" ] )
				self.dialog_user.groups_cont.action( "hide", [ "" ] )
				self.dialog_user.user_form.password_input.action( "show", [ "" ] )
				self.dialog_user.user_form.visible_password_input.action( "hide", [ "" ] )

				self.dialog_user.user_form.cont.fn_input.action(
							"setValue",
							[ user.first_name if user.first_name else "" ]  )

				self.dialog_user.user_form.cont.ln_input.action(
							"setValue",
							[ user.last_name if user.last_name else "" ]  )

				self.dialog_user.user_form.login_input.action(
							"setValue",
							[ user.email ]  )

				self.dialog_user.user_form.password_input.action(
							"setValue",
							[ "********" ]  )

				self.dialog_user.user_form.visible_password_input.action(
							"setValue",
							[ "" ]  )

				self.dialog_user.user_form.cont.email_input.action(
							"setValue",
							[ user.notification_email if user.notification_email else "" ]  )

				self.dialog_user.user_form.cont.phone_input.action(
							"setValue",
							[ user.cell_phone if user.cell_phone else "" ]  )

				self.dialog_user.user_form.cont.country_input.action(
							"selectItem",
							[ index ]  )

				self.dialog_user.user_form.keywords_input.action(
							"setValue",
							[ ", ".join( user.keywords ) if user.keywords else "" ]  )

				self.dialog_user.user_form.continue_input.action( "setValue", [ "0" ] )

				self.dialog_user.action( "show", [ "" ] )


			else:
				self.growl.action("show", [ lang[	"error_title"	], lang[ "user_doesnt_exist_error" ] ] )
				return


		else:
			obj_type = "group"
			search_obj_type = "user"
			count_text = self.dialog_group.cont.users_count
			datatable = self.dialog_group.cont.cont.datatable_users
			error_text = self.dialog_group.cont.cont.error_text
			throbber_image = self.dialog_group.cont.cont.throbber_image

			groups = ProAdmin.application().get_groups(guid = guid)
			obj  = group = groups[0] if groups else None

			if group:
				self.dialog_group.edit_group_text.action( "show", [ "" ] )
				self.dialog_group.new_group_text.action( "hide", [ "" ] )
				self.dialog_group.create_btn.action( "hide", [ "" ] )
				self.dialog_group.save_btn.action( "show", [ "" ] )

				self.dialog_group.group_form.gn_input.action(
							"setValue",
					[ group.name if group.name else "" ] )

				self.dialog_group.cont.show_all_btn.action( "hide", [ "" ] )
				self.dialog_group.cont.search_form.searchfield.action( "setValue", [ "" ] )

				self.dialog_group.action( "show", [ "" ] )

			else:
				self.growl.action("show", [ lang[	"error_title"	], lang[ "group_doesnt_exist_error" ] ] )
				return



		if obj:

			from widget_user_group_dialog_datatable import WidgetUserGroupDialogDatatable
			widget = WidgetUserGroupDialogDatatable( search_obj_type, obj  )
			widget.set_data()
			widget.set_selected_rows()
			widget.render( datatable, error_text )

			count = len( widget.selected_rows )
			response.shared_variables[ "selectedObjects" ] = widget.selected_rows
			response.shared_variables[ "displayedObjects" ] = []
			response.shared_variables[ "obj_guid" ] = guid
			response.shared_variables[ "obj_type" ] = obj_type

			count_text.action( "setText", [ count ] )
			throbber_image.action( "hide", [ "" ] )

		else:
			response.shared_variables[ "selectedObjects" ] = \
			response.shared_variables[ "displayedObjects" ] = \
			response.shared_variables[ "obj_guid" ] = \
			response.shared_variables[ "obj_type" ] = None
Exemplo n.º 3
0
try:
    import localization
    from models import Workspace
    from templates import WorkspaceTemplateCollection
    from urls import reverse
    from widget_localization import LocalizationWidget
    import json

    lang = localization.get_lang()

    workspaces = Workspace.all()

    if not workspaces:
        self.hpt_main.htmlcode += '<h2>No workspaces in the system</h2>'
    else:
        template_workspace = WorkspaceTemplateCollection(workspaces,
                                                         add_new=True)
        self.hpt_main.htmlcode += template_workspace.html
        self.obj_workpaces.data = template_workspace.json

except Exception, ex:
    from app_settings import settings
    from vdom_debug import p_ex

    if settings.TEST_MODE:
        p_ex()

    self.growl.title = lang['error']
    self.growl.text = lang['unknown_error']
    self.growl.active = "1"
Exemplo n.º 4
0
def main():

    import json, localization, base64
    from xml.dom.minidom import parseString
    from class_macro import Macros
    from class_plugins import Plugins
    from class_timer import Timer
    from class_custom_event import CustomEvent
    from class_xml_macro import XMLMacros
    from class_xml_timer import XMLTimer
    from class_xml_custom_event import XMLCustomEvent
    from class_xml_plugin import XMLPlugin
    from class_xml_plugin_db import XMLPluginDB
    from class_xml_resource import XMLResource
    from utils.uuid import uuid4
    from widget_localization import LocalizationWidget
    from widget_plugins import WidgetPlugins
    from VEE_resources import create_plugin_dir, ResourceFolderManager
    from VEE_sqlite3 import DatabaseManager

    lang = localization.get_lang()

    if "formbutton_save_plugin" in request.arguments:
        plugin = Plugins()
        plugin.guid = str(uuid4())
        plugin.name = request.arguments.get("formtext_name", "")
        plugin.author = request.arguments.get("formtext_author", "")
        plugin.description = request.arguments.get("formtextarea_description",
                                                   "")
        plugin.version = request.arguments.get("formtext_version", "")
        plugin.zindex = "1"

        if "uploader" in request.arguments:
            file = request.arguments.get("uploader", "", castto=Attachment)
            if file:
                plugin.picture = str(uuid4())
                application.storage.write(plugin.picture, file.handler.read())

        plugin.save()
        create_plugin_dir(plugin.guid)

    if "formbutton_upload_plugin" in request.arguments:
        if request.arguments.get("uploader", "", castto=Attachment):
            try:
                file = request.arguments.get("uploader", "", castto=Attachment)
                xml_data = file.handler.read()

                dom = parseString(xml_data)
                node = XMLPlugin(dom)

                if not Plugins.get_by_guid(node.guid):
                    plugin = Plugins()
                    plugin.name = node.name
                    plugin.description = node.description
                    plugin.guid = node.guid
                    plugin.version = node.version
                    plugin.author = node.author
                    plugin.protected = node.protected

                    plugin_picture_name = ""
                    plugin.picture = ""
                    if node.picture:
                        plugin.picture = plugin_picture_name = str(uuid4())
                        application.storage.write(
                            plugin_picture_name,
                            base64.b64decode(node.picture))
                    plugin.save()
                    create_plugin_dir(plugin.guid)

                    for child in node.childs:

                        if child.tag == "timer":
                            child = XMLTimer(child)

                            if child.name:
                                timer = Timer()
                                timer.fill_from_xml(child, node.guid)
                        elif child.tag == "custom_event":
                            child = XMLCustomEvent(child)

                            if child.name:
                                custom_event = CustomEvent()
                                custom_event.fill_from_xml(child, node.guid)
                        elif child.tag == "macro":
                            child = XMLMacros(child)
                            if child.name and child.source:
                                macros = Macros()
                                macros.fill_from_xml(child, node.guid)
                        elif child.tag == "database":
                            child = XMLPluginDB(child)
                            if child.name:
                                DatabaseManager(plugin.guid).import_db(
                                    child.name,
                                    base64.b64decode(child.db_source))
                        elif child.tag == "resource":
                            child = XMLResource(child)

                            if child.name:
                                ResourceFolderManager(plugin.guid).import_res(
                                    child.name,
                                    base64.b64decode(child.res_source))
                        else:
                            raise Exception(
                                lang.get("xml_not_correctr_error",
                                         "xml_not_correctr_error"))
                else:
                    raise Exception(lang.get("plugin_exist", "plugin_exist"))

            except Exception, ex:
                self.growl.title = lang["error"]
                self.growl.text = ex
                self.growl.show = "1"
Exemplo n.º 5
0
def main():

	import json
	import localization
	lang = localization.get_lang()

	selectedRows = request.shared_variables[ "selectedRows" ]
	selectedRows = [] if not selectedRows else selectedRows

	if not selectedRows: self.growl.action( "show", [ lang[ "warning_title" ], lang[ "select_objects_error" ] ] )
	else:

		import ProAdmin
		import cgi

		args = request.arguments

		group_id = args.get( "formlist_groups" )
		group = error = None

		if group_id == "new":
			name = args.get( "new_group_name", "" ).strip()
			if not name: error = "fill_group_name_field"
			elif ProAdmin.application().get_groups( name = name ): error = "group_name_already_exists"
			else:
				group = ProAdmin.application().create_group( cgi.escape( name ) )
				group.save()
		else:
			groups = ProAdmin.application().get_groups( guid = group_id )
			if groups: group = groups[0]
			else:	error = "group_doesnt_exist"


		if error:
			self.growl.action( "show", [ lang[ "error_title" ], lang[ error ] ] )

		else:
			from widget_add_users_to_group_dialog import WidgetAddUsersToGroupDialog
			widget = WidgetAddUsersToGroupDialog(
								selectedRows
						)

			widget.add_users_to_group( group )
			self.dialog_add_to_group.action( "hide", [ ] )

			response.shared_variables[ "selectedRows" ] = None
			self.cont.dt_main.action( "selectNone", [ "" ] )

			import widget_user_and_group_dd_group
			widget_user_and_group_dd_group.render( self.form.obj_from_group )


			from widget_user_and_group_datatable import WidgetUserAndGroupDatatable
			current_tab = request.shared_variables[ "currentTab" ]
			headername = request.shared_variables[ "headername" ]
			asc = request.shared_variables[ "sort_up" ]
			per_page = request.shared_variables[ "per_page" ]
			page = request.shared_variables[ "pagenumber" ]
			from_group = request.shared_variables[ "from_group_guid" ]

			widgetUGDatatable = WidgetUserAndGroupDatatable( current_tab, from_group	)
			if page is not None: widgetUGDatatable.set_page( page )
			if per_page: widgetUGDatatable.set_objects_per_page( per_page )
			if headername and asc is not None: widgetUGDatatable.sort_by( headername, asc )

			widgetUGDatatable.render( self.cont.dt_main, self.pager, self.cont.error_text )
Exemplo n.º 6
0
def main():

    from class_macro import Macros
    from class_timer import Timer
    from class_custom_event import CustomEvent
    from widget_plugins import WidgetPlugins
    from widget_macro import WidgetMacros
    from class_plugins import Plugins
    import localization

    lang = localization.get_lang()

    from VEE_events import event_map

    name = self.dialog_create_macro.form_macro.formtext_name.value = request.arguments.get(
        "formtext_name", "")
    macros_type = self.dialog_create_macro.form_macro.container_back.formlist_type.selectedvalue = request.arguments.get(
        "formlist_type", Macros.MacrosType.LIBRARY)
    event = self.dialog_create_macro.form_macro.container_back.formlist_event.selectedvalue = request.arguments.get(
        "formlist_event", "")
    location = self.dialog_create_macro.form_macro.container_back.formlist_location.selectedvalue = request.arguments.get(
        "formlist_location", "")
    description = self.dialog_create_macro.form_macro.formtextarea_description.value = request.arguments.get(
        "formtextarea_description", "")
    macros_id = self.dialog_create_macro.form_macro.formtext_id.value = request.arguments.get(
        "formtext_id", "")
    page = self.dialog_create_macro.form_macro.container_back.formlist_page.selectedvalue = request.arguments.get(
        "formlist_page", "")

    import re
    guid_regex = re.compile(
        "^[a-zA-Z0-9]{8}\-[a-zA-Z0-9]{4}\-[a-zA-Z0-9]{4}\-[a-zA-Z0-9]{4}\-[a-zA-Z0-9]{12}$"
    )

    class_name = ""
    timer_guid = ""
    custom_event_guid = ""
    is_button = "0"
    on_board = "0"

    if macros_type == Macros.MacrosType.EVENT:
        is_button = "0"
        if guid_regex.match(event):
            if Timer.get_timer_by_guid(event):
                timer_guid = event
                class_name = "VEE_TimerEvent"
            elif CustomEvent.get_custom_event_by_guid(event):
                custom_event_guid = event
                class_name = "VEE_CustomEvent"
        else:
            for e in event_map:
                if e == int(event):
                    class_name = event_map[e].__name__

    elif macros_type == Macros.MacrosType.BUTTON:
        is_button = "1"
        on_board = "1" if location and location == "1" else "0"

    elif macros_type != Macros.MacrosType.LIBRARY:
        macros_type = Macros.MacrosType.LIBRARY

    plugin_id = request.shared_variables["plugin_id"]
    plugin = Plugins.get_by_id(plugin_id)
    macros = Macros.get_by_id(macros_id) if macros_id else Macros()
    macros.name = name
    macros.class_name = class_name
    macros.timer_guid = timer_guid
    macros.custom_event_guid = custom_event_guid
    macros.is_button_macros = is_button
    macros.on_board = on_board
    macros.description = description
    macros.plugin_guid = plugin.guid
    macros.page = page
    macros.type = macros_type
    macros.save()

    plugin = Plugins.get_by_id(plugin_id)
    macros = plugin.get_macros()

    widget_macros = WidgetMacros()
    widget_macros.set_data(macros)
    widget_macros.render(self.datatable_macros)
    self.dialog_create_macro.action("hide", [])
Exemplo n.º 7
0
def main():

    import json, localization, base64
    from xml.dom.minidom import parseString
    from class_plugins import Plugins
    from class_xml_macro import XMLMacros
    from class_xml_timer import XMLTimer
    from class_xml_custom_event import XMLCustomEvent
    from class_xml_plugin import XMLPlugin
    from class_xml_plugin_db import XMLPluginDB
    from class_xml_resource import XMLResource
    from utils.uuid import uuid4
    from widget_localization import LocalizationWidget
    from widget_plugins import WidgetPlugins
    from widget_macro import WidgetMacros
    from widget_timer import WidgetTimer
    from widget_custom_event import WidgetCustomEvent
    from widget_plugin_db import WidgetPluginDB
    from widget_resource import WidgetResource
    from class_macro import Macros
    from class_timer import Timer
    from class_custom_event import CustomEvent
    from VEE_sqlite3 import DatabaseManager
    from VEE_resources import ResourceFolderManager

    lang = localization.get_lang()

    if "id" in request.arguments:
        try:
            plugin = Plugins.get_by_id(int(request.arguments.get("id", 0)))
            if plugin.protected:
                response.redirect("/plugins.vdom")
            macros = plugin.get_macros()
            timer_list = plugin.get_timer()
            custom_event_list = plugin.get_custom_event()

            config_is_exist = False
            for m in macros:
                if m.name == "config":
                    config_is_exist = True

            if config_is_exist == True:
                self.button_config.visible = "1"
                self.button_create_config.visible = "0"
            else:
                self.button_config.visible = "0"
                self.button_create_config.visible = "1"

            response.shared_variables["plugin_id"] = plugin.id
            widget_plugins = WidgetPlugins()
            widget_plugins.set_single_data(plugin)
            widget_plugins.render(richtext=self.richtext_plugin)

            widget_macros = WidgetMacros()
            widget_macros.set_data(macros)
            widget_macros.render(self.datatable_macros)

            widget_timer = WidgetTimer()
            widget_timer.set_data(timer_list)
            widget_timer.render(self.datatable_timer)

            widget_custom_event = WidgetCustomEvent()
            widget_custom_event.set_data(custom_event_list)
            widget_custom_event.render(self.datatable_custom_event)

            widget_db = WidgetPluginDB()
            widget_db.set_data(DatabaseManager(plugin.guid).databaselist)
            widget_db.render(self.datatable_db)

            widget_resource = WidgetResource()
            widget_resource.set_data(
                ResourceFolderManager(plugin.guid).resourcelist, plugin.guid)
            widget_resource.render(self.datatable_resource)

            self.dialog_add_timer.action("hide", [])
        except Exception, ex:
            self.growl.title = lang["error"]
            self.growl.text = str(ex)
            self.growl.visible = "1"
Exemplo n.º 8
0
def main():

    from class_timer import Timer
    from class_custom_event import CustomEvent
    from class_macro import Macros
    import json, localization
    from class_plugins import Plugins
    from config import config
    from VEE_events import event_map

    lang = localization.get_lang()

    macros_id = request.shared_variables["macro_id"]
    plugin_id = request.shared_variables["plugin_id"]
    plugin = Plugins.get_by_id(plugin_id)

    macro_type = request.arguments.get("itemValue", Macros.MacrosType.UNKNOWN)

    def setup_event_type_controls():
        self.dialog_create_macro.form_macro.container_back.formlist_location.visible = "0"
        self.dialog_create_macro.form_macro.container_back.text_location.visible = "0"
        self.dialog_create_macro.form_macro.container_back.formlist_event.visible = "1"
        self.dialog_create_macro.form_macro.container_back.text_event.visible = "1"
        self.dialog_create_macro.form_macro.container_back.formlist_page.visible = "0"
        self.dialog_create_macro.form_macro.container_back.text_timer.visible = "0"

        event_dict = {}
        for event in event_map:
            event_dict[event] = lang[event_map[event].__name__]

        for timer in Timer.get_timer_by_plugin_guid(plugin.guid):
            event_dict[timer.guid] = timer.name

        for cevent in CustomEvent.get_custom_event_by_plugin_guid(plugin.guid):
            event_dict[cevent.guid] = cevent.name

        self.dialog_create_macro.form_macro.container_back.formlist_event.value = json.dumps(
            event_dict)

    def setup_button_type_controls():
        self.dialog_create_macro.form_macro.container_back.formlist_page.selectedvalue = config[
            "plugin_page_dict"].keys()[0]
        self.dialog_create_macro.form_macro.container_back.formlist_page.value = json.dumps(
            config["plugin_page_dict"])
        self.dialog_create_macro.form_macro.container_back.formlist_location.visible = "1"
        self.dialog_create_macro.form_macro.container_back.text_location.visible = "1"
        self.dialog_create_macro.form_macro.container_back.formlist_event.visible = "0"
        self.dialog_create_macro.form_macro.container_back.text_event.visible = "0"
        self.dialog_create_macro.form_macro.container_back.formlist_location.value = json.dumps(
            {
                "1": "On panel",
                "2": "In plugin menu"
            })

    def setup_library_type_controls():
        self.dialog_create_macro.form_macro.container_back.formlist_page.visible = "0"
        self.dialog_create_macro.form_macro.container_back.formlist_location.visible = "0"
        self.dialog_create_macro.form_macro.container_back.text_location.visible = "0"
        self.dialog_create_macro.form_macro.container_back.formlist_event.visible = "0"
        self.dialog_create_macro.form_macro.container_back.text_event.visible = "0"
        self.dialog_create_macro.form_macro.container_back.text_timer.visible = "0"

    if macros_id and macro_type == Macros.MacrosType.UNKNOWN:

        macros = Macros.get_by_id(macros_id)

        self.dialog_create_macro.form_macro.formtext_id.value = macros_id
        self.dialog_create_macro.form_macro.formtext_name.value = macros.name
        self.dialog_create_macro.form_macro.formtextarea_description.value = macros.description
        macro_type = macros.type

        if macros.type == Macros.MacrosType.EVENT:
            setup_event_type_controls()

            if macros.timer_guid:
                self.dialog_create_macro.form_macro.container_back.formlist_event.selectedvalue = macros.timer_guid
            elif macros.custom_event_guid:
                self.dialog_create_macro.form_macro.container_back.formlist_event.selectedvalue = macros.custom_event_guid
            elif macros.class_name:
                for event in event_map:
                    if event_map[event].__name__ == macros.class_name:
                        self.dialog_create_macro.form_macro.container_back.formlist_event.selectedvalue = event
                        break

        elif macros.type == Macros.MacrosType.BUTTON:
            setup_button_type_controls()
            self.dialog_create_macro.form_macro.container_back.formlist_location.selectedvalue = "1" if macros.on_board == "1" else "2"
            self.dialog_create_macro.form_macro.container_back.formlist_page.selectedvalue = macros.page

        else:
            setup_library_type_controls()

    self.dialog_create_macro.form_macro.container_back.formlist_type.value = json.dumps(
        {
            Macros.MacrosType.EVENT: "Event macro",
            Macros.MacrosType.BUTTON: "Button macro",
            Macros.MacrosType.LIBRARY: "Library"
        })

    if macro_type == Macros.MacrosType.UNKNOWN:
        macro_type = Macros.MacrosType.EVENT

    self.dialog_create_macro.form_macro.container_back.formlist_type.selectedvalue = macro_type

    if macro_type == Macros.MacrosType.BUTTON:
        setup_button_type_controls()

    elif macro_type in Macros.MacrosType.EVENT:
        setup_event_type_controls()

    else:
        setup_library_type_controls()