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
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"
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"
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 )
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", [])
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"
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()