コード例 #1
0
ファイル: Skarphed_repo.py プロジェクト: joker234/skarphed
class Skarphed_repoPage (ObjectPageAbstract):
    def __init__(self,par,repo):
        ObjectPageAbstract.__init__(self,par,repo)
        
        self.table = gtk.Table(2,4,False)
        
        self.moduleFrame=PageFrame(self, _("Modules"), IconStock.MODULE)
        self.moduleList = ModuleList(self,repo)
        self.moduleFrame.add(self.moduleList)
        self.pack_start(self.moduleFrame,False)
        
        self.mUploadFrame=PageFrame(self, _("Upload Module"), IconStock.MODULE)
        self.mUploadbox = gtk.HBox()
        self.mUploadbox.set_border_width(10)
        self.mUpload_label = gtk.Label(_("Please choose the Module and click OK"))
        self.mUpload_filechoose = gtk.FileChooserButton(_("Select Module"), None)
        self.mUpload_filechoose.connect("file-set", self.moduleFileChosen)
        self.mUpload_filechoose.set_size_request(200,30)
        self.mUpload_enter = gtk.Button(stock=gtk.STOCK_OK)
        self.mUpload_enter.connect("clicked", self.uploadModule)
        self.mUpload_dummy = gtk.Label("")
        self.mUploadbox.pack_start(self.mUpload_label,False)
        self.mUploadbox.pack_start(self.mUpload_filechoose,False)
        self.mUploadbox.pack_start(self.mUpload_enter,False)
        self.mUploadbox.pack_start(self.mUpload_dummy,True)
        self.mUploadFrame.add(self.mUploadbox)
        self.pack_start(self.mUploadFrame,False)
        
        self.templateFrame=PageFrame(self, _("Templates"), IconStock.TEMPLATE)
        self.templateVBox = gtk.VBox()
        self.templateButtonBox = gtk.HBox()
        self.templateDeleteButton = gtk.Button(stock=gtk.STOCK_DELETE)
        self.templateDummy = gtk.Label("")
        self.templateList = TemplateList(self,repo)
        self.templateVBox.pack_start(self.templateList,True)
        self.templateVBox.pack_start(self.templateButtonBox,False)
        self.templateButtonBox.pack_start(self.templateDummy,True)
        self.templateButtonBox.pack_start(self.templateDeleteButton,False)
        self.templateDeleteButton.connect("clicked",self.cb_DeleteTemplate)
        self.templateFrame.add(self.templateVBox)
        self.pack_start(self.templateFrame,False)
        
        self.tUploadFrame=PageFrame(self, _("Upload Template"), IconStock.TEMPLATE)
        self.tUploadbox = gtk.HBox()
        self.tUploadbox.set_border_width(10)
        self.tUpload_label = gtk.Label(_("Please choose the Template and click OK"))
        self.tUpload_filechoose = gtk.FileChooserButton(_("Select Template"), None)
        self.tUpload_filechoose.connect("file-set", self.templateFileChosen)
        self.tUpload_filechoose.set_size_request(200,30)
        self.tUpload_enter = gtk.Button(stock=gtk.STOCK_OK)
        self.tUpload_enter.connect("clicked", self.uploadTemplate)
        self.tUpload_dummy = gtk.Label("")
        self.tUploadbox.pack_start(self.tUpload_label,False)
        self.tUploadbox.pack_start(self.tUpload_filechoose,False)
        self.tUploadbox.pack_start(self.tUpload_enter,False)
        self.tUploadbox.pack_start(self.tUpload_dummy,True)
        self.tUploadFrame.add(self.tUploadbox)
        self.pack_start(self.tUploadFrame,False)

        self.adminFrame= PageFrame(self, _("Change Password"), IconStock.CREDENTIAL)
        self.adminHBox = gtk.HBox()
        self.adminHBoxDummy = gtk.Label("")
        self.adminTable= gtk.Table(2,4,False)
        self.adminLabel = gtk.Label(_("Change admin-password here:"))
        self.adminPasswordLabel = gtk.Label(_("New password"))
        self.adminRepeatLabel = gtk.Label(_("New password (repeat)"))
        self.adminPasswordEntry = gtk.Entry()
        self.adminPasswordEntry.set_visibility(False)
        self.adminPasswordEntry.set_invisible_char("●")
        self.adminRepeatEntry = gtk.Entry()
        self.adminRepeatEntry.set_visibility(False)
        self.adminRepeatEntry.set_invisible_char("●")
        self.adminButtonDummy = gtk.Label()
        self.adminButtonHBox = gtk.HBox()
        self.adminButtonChange = gtk.Button(stock=gtk.STOCK_OK)
        self.adminButtonHBox.pack_start(self.adminButtonDummy,True)
        self.adminButtonHBox.pack_start(self.adminButtonChange,False)
        self.adminTable.attach(self.adminLabel,0,2,0,1)
        self.adminTable.attach(self.adminPasswordLabel,0,1,1,2)
        self.adminTable.attach(self.adminPasswordEntry,1,2,1,2)
        self.adminTable.attach(self.adminRepeatLabel,0,1,2,3)
        self.adminTable.attach(self.adminRepeatEntry,1,2,2,3)
        self.adminTable.attach(self.adminButtonHBox,0,2,3,4)
        self.adminHBox.pack_start(self.adminTable,False)
        self.adminHBox.pack_start(self.adminHBoxDummy,True)
        self.adminFrame.add(self.adminHBox)
        self.adminButtonChange.connect("clicked", self.cb_ChangePassword)
        self.pack_start(self.adminFrame,False)
        
        
        self.developerFrame = PageFrame(self, _("Developers"), IconStock.USER)
        self.developerHBox= gtk.HBox()
        self.developerList= DeveloperList(self,repo)
        self.developerHBox.pack_start(self.developerList,True)
        self.developerTable = gtk.Table(2,5,False)
        self.developerButtonHBox = gtk.HBox()
        self.developerButtonHBoxDummy = gtk.Label()
        self.developerLabel = gtk.Label(_("Please enter the information for a new Developer here:"))
        self.developerNameLabel = gtk.Label(_("Nickname:"))
        self.developerFullnameLabel = gtk.Label(_("Full Name:"))
        self.developerPublicKeyLabel = gtk.Label(_("Public Key:"))
        self.developerNameEntry = DefaultEntry(default_message=_("nickname"))
        self.developerFullnameEntry = DefaultEntry(default_message=_("Firstname Lastname"))
        self.developerPublicKeyEntry = gtk.TextView()
        self.developerAddButton = gtk.Button(stock=gtk.STOCK_ADD)
        self.developerAddButton.connect("clicked", self.cb_Add)
        self.developerButtonHBox.pack_start(self.developerButtonHBoxDummy,True)
        self.developerButtonHBox.pack_start(self.developerAddButton,False)
        self.developerTable.attach(self.developerLabel,0,2,0,1)
        self.developerTable.attach(self.developerNameLabel,0,1,1,2)
        self.developerTable.attach(self.developerNameEntry,1,2,1,2)
        self.developerTable.attach(self.developerFullnameLabel,0,1,2,3)
        self.developerTable.attach(self.developerFullnameEntry,1,2,2,3)
        self.developerTable.attach(self.developerPublicKeyLabel,0,1,3,4)
        self.developerTable.attach(self.developerPublicKeyEntry,1,2,3,4)
        self.developerTable.attach(self.developerButtonHBox,0,2,4,5)
        self.developerHBox.pack_start(self.developerTable,False)
        self.developerFrame.add(self.developerHBox)
        self.pack_start(self.developerFrame,False)
        
        self.show_all()
    
    def render(self):
        repo = self.getMyObject()
        if not repo:
            return

        auth = repo.isAuthenticated()

        self.adminFrame.set_visible(auth)
        self.developerFrame.set_visible(auth)
        self.templateDeleteButton.set_visible(auth)
        self.moduleList.render()
        self.developerList.render()
    
    def cb_ChangePassword(self, widget=None, data=None):
        pw1 = self.adminPasswordEntry.get_text()
        pw2 = self.adminRepeatEntry.get_text()
        if pw1 == pw2:
            repo = self.getMyObject()
            repo.changePassword(pw1)
        else:
            pass #TODO: Implement error behaviour

    def cb_DeleteTemplate(self,widget=None,data=None): 
        def execute():
            repo = self.getMyObject()
            repo.deleteTemplate(self.templateToDelete)
            self.templateToDelete = None
        
        selection = self.templateList.treeview.get_selection()
        rowiter = selection.get_selected()[1]
        nr = self.templateList.store.get_value(rowiter,4)
        self.templateToDelete = nr
        YesNoPage(self.getApplication().getMainWindow(), _("Do you really want to delete this Template from the Repository?"), execute)



    def cb_Add(self,widget=None,data=None):
        name = self.developerNameEntry.get_text()
        fullName = self.developerFullnameEntry.get_text()
        textBuffer = self.developerPublicKeyEntry.get_buffer()
        publicKey = textBuffer.get_text(textBuffer.get_start_iter(),textBuffer.get_end_iter())
        
        repo = self.getMyObject()
        if not repo:
            return
        repo.registerDeveloper(name,fullName,publicKey)
        
    
    def moduleFileChosen(self, widget=None, data=None):
        self.moduleFileToUpload = widget.get_filename()
    
    def templateFileChosen(self, widget=None, data=None):
        self.templateFileToUpload = widget.get_filename()
    
    def uploadModule(self,widget=None,data=None):
        repo = self.getMyObject()
        if not repo:
            return
        repo.uploadModule(self.moduleFileToUpload)
    
    def uploadTemplate(self,widget=None,data=None):
        repo = self.getMyObject()
        if not repo:
            return
        repo.uploadTemplate(self.templateFileToUpload)
コード例 #2
0
ファイル: User.py プロジェクト: joker234/skarphed
class UserPage(ObjectPageAbstract):
    def __init__(self, par, user):
        ObjectPageAbstract.__init__(self, par, user)

        user.fetchRightsData()
        user.fetchRoleData()

        self.headline = gtk.Label()
        self.pack_start(self.headline, False)

        self.info = PageFrame(self, _("Information"), gui.IconStock.USER)
        self.infobox = gtk.VBox()
        self.info.add(self.infobox)
        self.pack_start(self.info, False)

        self.perm = PageFrame(self, _("Permissions / Roles"),
                              gui.IconStock.ROLE)
        self.permbox = gtk.Table(2, 2, False)
        self.permbox.set_row_spacings(10)
        self.permbox.set_col_spacings(10)
        self.permbox.set_border_width(10)

        self.perm_permlabel = FrameLabel(
            self,
            _("Please choose the Permissions you want to assign to the user here:"
              ), gui.IconStock.PERMISSION)
        self.perm_rolelabel = FrameLabel(
            self,
            _("Please choose the Rights you want to assign to the user here:"),
            gui.IconStock.ROLE)

        self.perm_permlistview = gtk.TreeView()
        self.perm_permlist = gtk.ListStore(int, str, str)
        self.perm_permlistview.set_model(self.perm_permlist)
        self.perm_permlist_col_checkbox = gtk.TreeViewColumn('')
        self.perm_permlist_col_identifier = gtk.TreeViewColumn(
            _('Permission Identifier'))
        self.perm_permlist_col_name = gtk.TreeViewColumn(_('Permission Name'))
        self.perm_permlistview.append_column(self.perm_permlist_col_checkbox)
        self.perm_permlistview.append_column(self.perm_permlist_col_identifier)
        self.perm_permlistview.append_column(self.perm_permlist_col_name)
        self.perm_permlist_renderer_checkbox = gtk.CellRendererToggle()
        self.perm_permlist_renderer_identifier = gtk.CellRendererText()
        self.perm_permlist_renderer_name = gtk.CellRendererText()

        self.perm_permlist_col_checkbox.pack_start(
            self.perm_permlist_renderer_checkbox)
        self.perm_permlist_col_identifier.pack_start(
            self.perm_permlist_renderer_identifier)
        self.perm_permlist_col_name.pack_start(
            self.perm_permlist_renderer_name)
        self.perm_permlist_col_checkbox.add_attribute(
            self.perm_permlist_renderer_checkbox, 'active', 0)
        self.perm_permlist_col_identifier.add_attribute(
            self.perm_permlist_renderer_identifier, 'text', 1)
        self.perm_permlist_col_name.add_attribute(
            self.perm_permlist_renderer_name, 'text', 2)
        self.perm_permlist_renderer_checkbox.set_activatable(True)
        self.perm_permlist_renderer_checkbox.connect("toggled",
                                                     self.toggledRight)

        self.perm_rolelistview = gtk.TreeView()
        self.perm_rolelist = gtk.ListStore(int, str, str, int)
        self.perm_rolelistview.set_model(self.perm_rolelist)
        self.perm_rolelist_col_checkbox = gtk.TreeViewColumn('')
        self.perm_rolelist_col_identifier = gtk.TreeViewColumn(
            _('Role Identifier'))
        self.perm_rolelist_col_name = gtk.TreeViewColumn(_('RoleName'))
        self.perm_rolelistview.append_column(self.perm_rolelist_col_checkbox)
        self.perm_rolelistview.append_column(self.perm_rolelist_col_identifier)
        self.perm_rolelistview.append_column(self.perm_rolelist_col_name)
        self.perm_rolelist_renderer_checkbox = gtk.CellRendererToggle()
        self.perm_rolelist_renderer_identifier = gtk.CellRendererText()
        self.perm_rolelist_renderer_name = gtk.CellRendererText()

        self.perm_rolelist_col_checkbox.pack_start(
            self.perm_rolelist_renderer_checkbox)
        self.perm_rolelist_col_identifier.pack_start(
            self.perm_rolelist_renderer_identifier)
        self.perm_rolelist_col_name.pack_start(
            self.perm_rolelist_renderer_name)
        self.perm_rolelist_col_checkbox.add_attribute(
            self.perm_rolelist_renderer_checkbox, 'active', 0)
        self.perm_rolelist_col_identifier.add_attribute(
            self.perm_rolelist_renderer_identifier, 'text', 1)
        self.perm_rolelist_col_name.add_attribute(
            self.perm_rolelist_renderer_name, 'text', 2)
        self.perm_rolelist_renderer_checkbox.set_activatable(True)
        self.perm_rolelist_renderer_checkbox.connect("toggled",
                                                     self.toggledRole)

        self.permbox.attach(self.perm_permlabel, 0, 1, 0, 1)
        self.permbox.attach(self.perm_permlistview, 0, 1, 1, 2)
        self.permbox.attach(self.perm_rolelabel, 1, 2, 0, 1)
        self.permbox.attach(self.perm_rolelistview, 1, 2, 1, 2)

        self.perm.add(self.permbox)
        self.pack_start(self.perm, False)

        self.alterpw = PageFrame(self, _("Alter Password"),
                                 gui.IconStock.CREDENTIAL)
        self.alterpwhbox = gtk.HBox()
        self.alterpwdummy = gtk.Label("")
        self.alterpwbox = gtk.Table(2, 4, False)
        self.alterpwbox.set_row_spacings(10)
        self.alterpwbox.set_col_spacings(10)
        self.alterpwbox.set_border_width(10)
        self.alterpw_oldpw_label = gtk.Label(_("Old Password:"******"New Password:"******"Repeat Password:"******"●")
        self.alterpw_oldpw_entry.set_visibility(False)
        self.alterpw_newpw1_entry = gtk.Entry()
        self.alterpw_newpw1_entry.set_invisible_char("●")
        self.alterpw_newpw1_entry.set_visibility(False)
        self.alterpw_newpw2_entry = gtk.Entry()
        self.alterpw_newpw2_entry.set_invisible_char("●")
        self.alterpw_newpw2_entry.set_visibility(False)
        self.alterpw_ok = gtk.Button(_("Alter Password"))
        self.alterpwbox.attach(self.alterpw_oldpw_label, 0, 1, 0, 1)
        self.alterpwbox.attach(self.alterpw_oldpw_entry, 1, 2, 0, 1)
        self.alterpwbox.attach(self.alterpw_newpw1_label, 0, 1, 1, 2)
        self.alterpwbox.attach(self.alterpw_newpw1_entry, 1, 2, 1, 2)
        self.alterpwbox.attach(self.alterpw_newpw2_label, 0, 1, 2, 3)
        self.alterpwbox.attach(self.alterpw_newpw2_entry, 1, 2, 2, 3)
        self.alterpwbox.attach(self.alterpw_ok, 1, 2, 3, 4)
        self.alterpwhbox.pack_start(self.alterpwbox, False)
        self.alterpwhbox.pack_start(self.alterpwdummy, True)
        self.alterpw.add(self.alterpwhbox)
        self.alterpw_ok.connect("clicked", self.alterPassword)
        self.pack_start(self.alterpw, False)

        self.show_all()

        self.render()

    def render(self):
        user = self.getMyObject()
        if not user:
            return

        self.headline.set_markup(
            _("<b>Settings for User: "******"</b>")

        if user.permissiondata is not None:
            self.perm_permlist.clear()
            for permission in user.permissiondata:
                self.perm_permlist.append(
                    (int(permission['granted']), str(permission['right']), ''))

        if user.roledata is not None:
            self.perm_rolelist.clear()
            for role in user.roledata:
                self.perm_rolelist.append(
                    (int(role['granted']), str(role['name']), '', role['id']))

        alter_pw_permitted = user.getUsers().getSkarphed().checkPermission(
            "skarphed.users.alter_password")
        is_active_user = user.getUsers().getSkarphed().getUsername(
        ) == user.getName()
        if alter_pw_permitted or is_active_user:
            self.alterpw.set_visible(True)
            self.alterpw_oldpw_entry.set_visible(is_active_user)
            self.alterpw_oldpw_label.set_visible(is_active_user)
        else:
            self.alterpw.set_visible(False)

    def alterPassword(self, widget=None, data=None):
        user = self.getMyObject()
        if not user:
            return

        alter_pw_permitted = user.getUsers().getSkarphed().checkPermission(
            "skarphed.users.alter_password")
        is_active_user = user.getUsers().getSkarphed().getUsername(
        ) == user.getName()
        if alter_pw_permitted or is_active_user:
            if is_active_user:
                oldpw = self.alterpw_oldpw_entry.get_text()
            newpw1 = self.alterpw_newpw1_entry.get_text()
            newpw2 = self.alterpw_newpw2_entry.get_text()
            if newpw2 != newpw1:
                return False  # Password repeat not successful
            if newpw1 == "":
                return False  # New password is empty
            if is_active_user:
                user.alterPassword(newpw1, oldpw)
            else:
                user.alterPassword(newpw1)

    def toggledRole(self, render=None, path=None):
        rowiter = self.perm_rolelist.get_iter(path)
        roleId = self.perm_rolelist.get_value(rowiter, 3)
        val = 1 - self.perm_rolelist.get_value(rowiter, 0)

        user = self.getMyObject()
        if not user:
            return

        if val == 1:
            user.assignRole(roleId)
        else:
            user.removeRole(roleId)

    def toggledRight(self, render=None, path=None):
        rowiter = self.perm_permlist.get_iter(path)
        perm = self.perm_permlist.get_value(rowiter, 1)
        val = 1 - self.perm_permlist.get_value(rowiter, 0)

        user = self.getMyObject()
        if not user:
            return

        if val == 1:
            user.assignPermission(perm)
        else:
            user.removePermission(perm)
コード例 #3
0
ファイル: User.py プロジェクト: joker234/skarphed
class UserPage(ObjectPageAbstract):
    def __init__(self,par,user):
        ObjectPageAbstract.__init__(self,par,user)

        user.fetchRightsData()
        user.fetchRoleData()
        
        self.headline = gtk.Label()
        self.pack_start(self.headline,False)
        
        self.info = PageFrame(self,_("Information"), gui.IconStock.USER)
        self.infobox = gtk.VBox()
        self.info.add(self.infobox)
        self.pack_start(self.info,False)
        
        self.perm = PageFrame(self,_("Permissions / Roles"), gui.IconStock.ROLE)
        self.permbox = gtk.Table(2,2,False)
        self.permbox.set_row_spacings(10)
        self.permbox.set_col_spacings(10)
        self.permbox.set_border_width(10)
        
        self.perm_permlabel = FrameLabel(self,_("Please choose the Permissions you want to assign to the user here:"),gui.IconStock.PERMISSION)
        self.perm_rolelabel = FrameLabel(self,_("Please choose the Rights you want to assign to the user here:"),gui.IconStock.ROLE)
        
        self.perm_permlistview = gtk.TreeView()
        self.perm_permlist = gtk.ListStore(int, str,str)
        self.perm_permlistview.set_model(self.perm_permlist)
        self.perm_permlist_col_checkbox = gtk.TreeViewColumn('')
        self.perm_permlist_col_identifier = gtk.TreeViewColumn(_('Permission Identifier'))
        self.perm_permlist_col_name = gtk.TreeViewColumn(_('Permission Name'))
        self.perm_permlistview.append_column(self.perm_permlist_col_checkbox)
        self.perm_permlistview.append_column(self.perm_permlist_col_identifier)
        self.perm_permlistview.append_column(self.perm_permlist_col_name)
        self.perm_permlist_renderer_checkbox= gtk.CellRendererToggle()
        self.perm_permlist_renderer_identifier = gtk.CellRendererText()
        self.perm_permlist_renderer_name = gtk.CellRendererText()
        
        self.perm_permlist_col_checkbox.pack_start(self.perm_permlist_renderer_checkbox)
        self.perm_permlist_col_identifier.pack_start(self.perm_permlist_renderer_identifier)
        self.perm_permlist_col_name.pack_start(self.perm_permlist_renderer_name)
        self.perm_permlist_col_checkbox.add_attribute(self.perm_permlist_renderer_checkbox,'active',0)
        self.perm_permlist_col_identifier.add_attribute(self.perm_permlist_renderer_identifier,'text',1)
        self.perm_permlist_col_name.add_attribute(self.perm_permlist_renderer_name,'text',2)
        self.perm_permlist_renderer_checkbox.set_activatable(True)
        self.perm_permlist_renderer_checkbox.connect("toggled",self.toggledRight)
        
        self.perm_rolelistview = gtk.TreeView()
        self.perm_rolelist = gtk.ListStore(int, str,str,int)
        self.perm_rolelistview.set_model(self.perm_rolelist)
        self.perm_rolelist_col_checkbox = gtk.TreeViewColumn('')
        self.perm_rolelist_col_identifier = gtk.TreeViewColumn(_('Role Identifier'))
        self.perm_rolelist_col_name = gtk.TreeViewColumn(_('RoleName'))
        self.perm_rolelistview.append_column(self.perm_rolelist_col_checkbox)
        self.perm_rolelistview.append_column(self.perm_rolelist_col_identifier)
        self.perm_rolelistview.append_column(self.perm_rolelist_col_name)
        self.perm_rolelist_renderer_checkbox= gtk.CellRendererToggle()
        self.perm_rolelist_renderer_identifier = gtk.CellRendererText()
        self.perm_rolelist_renderer_name = gtk.CellRendererText()
        
        self.perm_rolelist_col_checkbox.pack_start(self.perm_rolelist_renderer_checkbox)
        self.perm_rolelist_col_identifier.pack_start(self.perm_rolelist_renderer_identifier)
        self.perm_rolelist_col_name.pack_start(self.perm_rolelist_renderer_name)
        self.perm_rolelist_col_checkbox.add_attribute(self.perm_rolelist_renderer_checkbox,'active',0)
        self.perm_rolelist_col_identifier.add_attribute(self.perm_rolelist_renderer_identifier,'text',1)
        self.perm_rolelist_col_name.add_attribute(self.perm_rolelist_renderer_name,'text',2)
        self.perm_rolelist_renderer_checkbox.set_activatable(True)
        self.perm_rolelist_renderer_checkbox.connect("toggled",self.toggledRole)
        
        self.permbox.attach(self.perm_permlabel,0,1,0,1)
        self.permbox.attach(self.perm_permlistview,0,1,1,2)
        self.permbox.attach(self.perm_rolelabel,1,2,0,1)
        self.permbox.attach(self.perm_rolelistview,1,2,1,2)
        
        self.perm.add(self.permbox)
        self.pack_start(self.perm,False)

        self.alterpw = PageFrame(self, _("Alter Password"), gui.IconStock.CREDENTIAL)
        self.alterpwhbox = gtk.HBox()
        self.alterpwdummy = gtk.Label("")
        self.alterpwbox = gtk.Table(2,4,False)
        self.alterpwbox.set_row_spacings(10)
        self.alterpwbox.set_col_spacings(10)
        self.alterpwbox.set_border_width(10)
        self.alterpw_oldpw_label = gtk.Label(_("Old Password:"******"New Password:"******"Repeat Password:"******"●")
        self.alterpw_oldpw_entry.set_visibility(False)
        self.alterpw_newpw1_entry = gtk.Entry()
        self.alterpw_newpw1_entry.set_invisible_char("●")
        self.alterpw_newpw1_entry.set_visibility(False)
        self.alterpw_newpw2_entry = gtk.Entry()
        self.alterpw_newpw2_entry.set_invisible_char("●")
        self.alterpw_newpw2_entry.set_visibility(False)
        self.alterpw_ok = gtk.Button(_("Alter Password"))
        self.alterpwbox.attach(self.alterpw_oldpw_label,0,1,0,1)
        self.alterpwbox.attach(self.alterpw_oldpw_entry,1,2,0,1)
        self.alterpwbox.attach(self.alterpw_newpw1_label,0,1,1,2)
        self.alterpwbox.attach(self.alterpw_newpw1_entry,1,2,1,2)
        self.alterpwbox.attach(self.alterpw_newpw2_label,0,1,2,3)
        self.alterpwbox.attach(self.alterpw_newpw2_entry,1,2,2,3)
        self.alterpwbox.attach(self.alterpw_ok,1,2,3,4)
        self.alterpwhbox.pack_start(self.alterpwbox,False)
        self.alterpwhbox.pack_start(self.alterpwdummy,True)
        self.alterpw.add(self.alterpwhbox)
        self.alterpw_ok.connect("clicked", self.alterPassword)
        self.pack_start(self.alterpw,False)


        self.show_all()
        
        self.render()
        
    def render(self):
        user = self.getMyObject()
        if not user:
            return 

        self.headline.set_markup(_("<b>Settings for User: "******"</b>")
        
        if user.permissiondata is not None:
            self.perm_permlist.clear()
            for permission in user.permissiondata:
                self.perm_permlist.append((int(permission['granted']),str(permission['right']),''))
        
        if user.roledata is not None:
            self.perm_rolelist.clear()
            for role in user.roledata:
                self.perm_rolelist.append((int(role['granted']), str(role['name']), '', role['id']))

        alter_pw_permitted = user.getUsers().getSkarphed().checkPermission("skarphed.users.alter_password")
        is_active_user = user.getUsers().getSkarphed().getUsername() == user.getName()
        if alter_pw_permitted or is_active_user:
            self.alterpw.set_visible(True)
            self.alterpw_oldpw_entry.set_visible(is_active_user)
            self.alterpw_oldpw_label.set_visible(is_active_user)
        else:
            self.alterpw.set_visible(False)

    def alterPassword(self, widget=None, data=None):
        user = self.getMyObject()
        if not user:
            return 

        alter_pw_permitted = user.getUsers().getSkarphed().checkPermission("skarphed.users.alter_password")
        is_active_user = user.getUsers().getSkarphed().getUsername() == user.getName()
        if alter_pw_permitted or is_active_user:
            if is_active_user:
                oldpw = self.alterpw_oldpw_entry.get_text()
            newpw1 = self.alterpw_newpw1_entry.get_text()
            newpw2 = self.alterpw_newpw2_entry.get_text()
            if newpw2 != newpw1:
                return False # Password repeat not successful
            if newpw1 == "":
                return False # New password is empty
            if is_active_user:
                user.alterPassword(newpw1,oldpw)
            else:
                user.alterPassword(newpw1)
    
    def toggledRole(self,render=None,path=None):
        rowiter = self.perm_rolelist.get_iter(path)
        roleId = self.perm_rolelist.get_value(rowiter,3)
        val = 1-self.perm_rolelist.get_value(rowiter,0)
        
        user = self.getMyObject()
        if not user:
            return 
        
        if val == 1:
            user.assignRole(roleId)
        else:
            user.removeRole(roleId)
    
    def toggledRight(self,render=None,path=None):
        rowiter = self.perm_permlist.get_iter(path)
        perm = self.perm_permlist.get_value(rowiter,1)
        val = 1-self.perm_permlist.get_value(rowiter,0)
        
        user = self.getMyObject()
        if not user:
            return 
        
        if val == 1:
            user.assignPermission(perm)
        else:
            user.removePermission(perm)  
コード例 #4
0
ファイル: Skarphed_repo.py プロジェクト: joker234/skarphed
class Skarphed_repoPage(ObjectPageAbstract):
    def __init__(self, par, repo):
        ObjectPageAbstract.__init__(self, par, repo)

        self.table = gtk.Table(2, 4, False)

        self.moduleFrame = PageFrame(self, _("Modules"), IconStock.MODULE)
        self.moduleList = ModuleList(self, repo)
        self.moduleFrame.add(self.moduleList)
        self.pack_start(self.moduleFrame, False)

        self.mUploadFrame = PageFrame(self, _("Upload Module"),
                                      IconStock.MODULE)
        self.mUploadbox = gtk.HBox()
        self.mUploadbox.set_border_width(10)
        self.mUpload_label = gtk.Label(
            _("Please choose the Module and click OK"))
        self.mUpload_filechoose = gtk.FileChooserButton(
            _("Select Module"), None)
        self.mUpload_filechoose.connect("file-set", self.moduleFileChosen)
        self.mUpload_filechoose.set_size_request(200, 30)
        self.mUpload_enter = gtk.Button(stock=gtk.STOCK_OK)
        self.mUpload_enter.connect("clicked", self.uploadModule)
        self.mUpload_dummy = gtk.Label("")
        self.mUploadbox.pack_start(self.mUpload_label, False)
        self.mUploadbox.pack_start(self.mUpload_filechoose, False)
        self.mUploadbox.pack_start(self.mUpload_enter, False)
        self.mUploadbox.pack_start(self.mUpload_dummy, True)
        self.mUploadFrame.add(self.mUploadbox)
        self.pack_start(self.mUploadFrame, False)

        self.templateFrame = PageFrame(self, _("Templates"),
                                       IconStock.TEMPLATE)
        self.templateVBox = gtk.VBox()
        self.templateButtonBox = gtk.HBox()
        self.templateDeleteButton = gtk.Button(stock=gtk.STOCK_DELETE)
        self.templateDummy = gtk.Label("")
        self.templateList = TemplateList(self, repo)
        self.templateVBox.pack_start(self.templateList, True)
        self.templateVBox.pack_start(self.templateButtonBox, False)
        self.templateButtonBox.pack_start(self.templateDummy, True)
        self.templateButtonBox.pack_start(self.templateDeleteButton, False)
        self.templateDeleteButton.connect("clicked", self.cb_DeleteTemplate)
        self.templateFrame.add(self.templateVBox)
        self.pack_start(self.templateFrame, False)

        self.tUploadFrame = PageFrame(self, _("Upload Template"),
                                      IconStock.TEMPLATE)
        self.tUploadbox = gtk.HBox()
        self.tUploadbox.set_border_width(10)
        self.tUpload_label = gtk.Label(
            _("Please choose the Template and click OK"))
        self.tUpload_filechoose = gtk.FileChooserButton(
            _("Select Template"), None)
        self.tUpload_filechoose.connect("file-set", self.templateFileChosen)
        self.tUpload_filechoose.set_size_request(200, 30)
        self.tUpload_enter = gtk.Button(stock=gtk.STOCK_OK)
        self.tUpload_enter.connect("clicked", self.uploadTemplate)
        self.tUpload_dummy = gtk.Label("")
        self.tUploadbox.pack_start(self.tUpload_label, False)
        self.tUploadbox.pack_start(self.tUpload_filechoose, False)
        self.tUploadbox.pack_start(self.tUpload_enter, False)
        self.tUploadbox.pack_start(self.tUpload_dummy, True)
        self.tUploadFrame.add(self.tUploadbox)
        self.pack_start(self.tUploadFrame, False)

        self.adminFrame = PageFrame(self, _("Change Password"),
                                    IconStock.CREDENTIAL)
        self.adminHBox = gtk.HBox()
        self.adminHBoxDummy = gtk.Label("")
        self.adminTable = gtk.Table(2, 4, False)
        self.adminLabel = gtk.Label(_("Change admin-password here:"))
        self.adminPasswordLabel = gtk.Label(_("New password"))
        self.adminRepeatLabel = gtk.Label(_("New password (repeat)"))
        self.adminPasswordEntry = gtk.Entry()
        self.adminPasswordEntry.set_visibility(False)
        self.adminPasswordEntry.set_invisible_char("●")
        self.adminRepeatEntry = gtk.Entry()
        self.adminRepeatEntry.set_visibility(False)
        self.adminRepeatEntry.set_invisible_char("●")
        self.adminButtonDummy = gtk.Label()
        self.adminButtonHBox = gtk.HBox()
        self.adminButtonChange = gtk.Button(stock=gtk.STOCK_OK)
        self.adminButtonHBox.pack_start(self.adminButtonDummy, True)
        self.adminButtonHBox.pack_start(self.adminButtonChange, False)
        self.adminTable.attach(self.adminLabel, 0, 2, 0, 1)
        self.adminTable.attach(self.adminPasswordLabel, 0, 1, 1, 2)
        self.adminTable.attach(self.adminPasswordEntry, 1, 2, 1, 2)
        self.adminTable.attach(self.adminRepeatLabel, 0, 1, 2, 3)
        self.adminTable.attach(self.adminRepeatEntry, 1, 2, 2, 3)
        self.adminTable.attach(self.adminButtonHBox, 0, 2, 3, 4)
        self.adminHBox.pack_start(self.adminTable, False)
        self.adminHBox.pack_start(self.adminHBoxDummy, True)
        self.adminFrame.add(self.adminHBox)
        self.adminButtonChange.connect("clicked", self.cb_ChangePassword)
        self.pack_start(self.adminFrame, False)

        self.developerFrame = PageFrame(self, _("Developers"), IconStock.USER)
        self.developerHBox = gtk.HBox()
        self.developerList = DeveloperList(self, repo)
        self.developerHBox.pack_start(self.developerList, True)
        self.developerTable = gtk.Table(2, 5, False)
        self.developerButtonHBox = gtk.HBox()
        self.developerButtonHBoxDummy = gtk.Label()
        self.developerLabel = gtk.Label(
            _("Please enter the information for a new Developer here:"))
        self.developerNameLabel = gtk.Label(_("Nickname:"))
        self.developerFullnameLabel = gtk.Label(_("Full Name:"))
        self.developerPublicKeyLabel = gtk.Label(_("Public Key:"))
        self.developerNameEntry = DefaultEntry(default_message=_("nickname"))
        self.developerFullnameEntry = DefaultEntry(
            default_message=_("Firstname Lastname"))
        self.developerPublicKeyEntry = gtk.TextView()
        self.developerAddButton = gtk.Button(stock=gtk.STOCK_ADD)
        self.developerAddButton.connect("clicked", self.cb_Add)
        self.developerButtonHBox.pack_start(self.developerButtonHBoxDummy,
                                            True)
        self.developerButtonHBox.pack_start(self.developerAddButton, False)
        self.developerTable.attach(self.developerLabel, 0, 2, 0, 1)
        self.developerTable.attach(self.developerNameLabel, 0, 1, 1, 2)
        self.developerTable.attach(self.developerNameEntry, 1, 2, 1, 2)
        self.developerTable.attach(self.developerFullnameLabel, 0, 1, 2, 3)
        self.developerTable.attach(self.developerFullnameEntry, 1, 2, 2, 3)
        self.developerTable.attach(self.developerPublicKeyLabel, 0, 1, 3, 4)
        self.developerTable.attach(self.developerPublicKeyEntry, 1, 2, 3, 4)
        self.developerTable.attach(self.developerButtonHBox, 0, 2, 4, 5)
        self.developerHBox.pack_start(self.developerTable, False)
        self.developerFrame.add(self.developerHBox)
        self.pack_start(self.developerFrame, False)

        self.show_all()

    def render(self):
        repo = self.getMyObject()
        if not repo:
            return

        auth = repo.isAuthenticated()

        self.adminFrame.set_visible(auth)
        self.developerFrame.set_visible(auth)
        self.templateDeleteButton.set_visible(auth)
        self.moduleList.render()
        self.developerList.render()

    def cb_ChangePassword(self, widget=None, data=None):
        pw1 = self.adminPasswordEntry.get_text()
        pw2 = self.adminRepeatEntry.get_text()
        if pw1 == pw2:
            repo = self.getMyObject()
            repo.changePassword(pw1)
        else:
            pass  #TODO: Implement error behaviour

    def cb_DeleteTemplate(self, widget=None, data=None):
        def execute():
            repo = self.getMyObject()
            repo.deleteTemplate(self.templateToDelete)
            self.templateToDelete = None

        selection = self.templateList.treeview.get_selection()
        rowiter = selection.get_selected()[1]
        nr = self.templateList.store.get_value(rowiter, 4)
        self.templateToDelete = nr
        YesNoPage(
            self.getApplication().getMainWindow(),
            _("Do you really want to delete this Template from the Repository?"
              ), execute)

    def cb_Add(self, widget=None, data=None):
        name = self.developerNameEntry.get_text()
        fullName = self.developerFullnameEntry.get_text()
        textBuffer = self.developerPublicKeyEntry.get_buffer()
        publicKey = textBuffer.get_text(textBuffer.get_start_iter(),
                                        textBuffer.get_end_iter())

        repo = self.getMyObject()
        if not repo:
            return
        repo.registerDeveloper(name, fullName, publicKey)

    def moduleFileChosen(self, widget=None, data=None):
        self.moduleFileToUpload = widget.get_filename()

    def templateFileChosen(self, widget=None, data=None):
        self.templateFileToUpload = widget.get_filename()

    def uploadModule(self, widget=None, data=None):
        repo = self.getMyObject()
        if not repo:
            return
        repo.uploadModule(self.moduleFileToUpload)

    def uploadTemplate(self, widget=None, data=None):
        repo = self.getMyObject()
        if not repo:
            return
        repo.uploadTemplate(self.templateFileToUpload)