def save(self, commit=True): if commit: _notifier = notifier() group = self.cleaned_data['bsdusr_group2'] if group is None: try: gid = models.bsdGroups.objects.get( bsdgrp_group=self.cleaned_data['bsdusr_username'] ).bsdgrp_gid except: gid = -1 else: gid = group.bsdgrp_gid uid, gid, unixhash, smbhash = _notifier.user_create( username=str(self.cleaned_data['bsdusr_username']), fullname=self.cleaned_data['bsdusr_full_name'].encode('utf8', 'ignore').replace(':', ''), password=self.cleaned_data['bsdusr_password2'].encode('utf8', 'ignore'), uid=self.cleaned_data['bsdusr_uid'], gid=gid, shell=str(self.cleaned_data['bsdusr_shell']), homedir=str(self.cleaned_data['bsdusr_home']), homedir_mode=int(self.cleaned_data['bsdusr_mode'], 8), password_disabled=self.cleaned_data.get('bsdusr_password_disabled', False), ) bsduser = super(bsdUserCreationForm, self).save(commit=False) try: grp = models.bsdGroups.objects.get(bsdgrp_gid=gid) except models.bsdGroups.DoesNotExist: grp = models.bsdGroups( bsdgrp_gid=gid, bsdgrp_group=self.cleaned_data['bsdusr_username'], bsdgrp_builtin=False, ) grp.save() bsduser.bsdusr_group = grp bsduser.bsdusr_uid = uid bsduser.bsdusr_shell = self.cleaned_data['bsdusr_shell'] bsduser.bsdusr_unixhash = unixhash bsduser.bsdusr_smbhash = smbhash bsduser.bsdusr_builtin = False bsduser.save() models.bsdGroupMembership.objects.filter( bsdgrpmember_user=bsduser).delete() groupid_list = self.cleaned_data['bsdusr_to_group'] for groupid in groupid_list: group = models.bsdGroups.objects.get(id=groupid) m = models.bsdGroupMembership(bsdgrpmember_group=group, bsdgrpmember_user=bsduser) m.save() _notifier.reload("user") bsdusr_sshpubkey = self.cleaned_data.get('bsdusr_sshpubkey') if bsdusr_sshpubkey: _notifier.save_pubkey(bsduser.bsdusr_home, bsdusr_sshpubkey, bsduser.bsdusr_username, bsduser.bsdusr_group.bsdgrp_group) return bsduser
def save(self): user = models.bsdUsers.objects.get(id=self.userid) models.bsdGroupMembership.objects.filter(bsdgrpmember_user=user).delete() groupid_list = self.cleaned_data["bsduser_to_group"] for groupid in groupid_list: group = models.bsdGroups.objects.get(id=groupid) m = models.bsdGroupMembership(bsdgrpmember_group=group, bsdgrpmember_user=user) m.save() notifier().reload("user")
def save(self): user = models.bsdUsers.objects.get(id=self.userid) models.bsdGroupMembership.objects.filter( bsdgrpmember_user=user).delete() groupid_list = self.cleaned_data['bsduser_to_group'] for groupid in groupid_list: group = models.bsdGroups.objects.get(id=groupid) m = models.bsdGroupMembership(bsdgrpmember_group=group, bsdgrpmember_user=user) m.save() notifier().reload("user")
def save(self): group = models.bsdGroups.objects.get(id=self.groupid) models.bsdGroupMembership.objects.filter( bsdgrpmember_group=group).delete() userid_list = self.cleaned_data['bsdgroup_to_user'] for userid in userid_list: user = models.bsdUsers.objects.get(id=userid) m = models.bsdGroupMembership( bsdgrpmember_group=group, bsdgrpmember_user=user) m.save() notifier().reload("user")
def save(self, commit=True): _notifier = notifier() if self.instance.id is None: group = self.cleaned_data["bsdusr_group"] if group is None: try: gid = models.bsdGroups.objects.get(bsdgrp_group=self.cleaned_data["bsdusr_username"]).bsdgrp_gid except: gid = -1 else: gid = group.bsdgrp_gid uid, gid, unixhash, smbhash = _notifier.user_create( username=str(self.cleaned_data["bsdusr_username"]), fullname=self.cleaned_data["bsdusr_full_name"].encode("utf8", "ignore").replace(":", ""), password=self.cleaned_data["bsdusr_password"].encode("utf8", "ignore"), uid=self.cleaned_data["bsdusr_uid"], gid=gid, shell=str(self.cleaned_data["bsdusr_shell"]), homedir=str(self.cleaned_data["bsdusr_home"]), homedir_mode=int(self.cleaned_data.get("bsdusr_mode", "755"), 8), password_disabled=self.cleaned_data.get("bsdusr_password_disabled", False), ) bsduser = super(bsdUsersForm, self).save(commit=False) try: grp = models.bsdGroups.objects.get(bsdgrp_gid=gid) except models.bsdGroups.DoesNotExist: grp = models.bsdGroups( bsdgrp_gid=gid, bsdgrp_group=self.cleaned_data["bsdusr_username"], bsdgrp_builtin=False ) grp.save() bsduser.bsdusr_group = grp bsduser.bsdusr_uid = uid bsduser.bsdusr_shell = self.cleaned_data["bsdusr_shell"] bsduser.bsdusr_unixhash = unixhash bsduser.bsdusr_smbhash = smbhash bsduser.bsdusr_builtin = False bsduser.save() models.bsdGroupMembership.objects.filter(bsdgrpmember_user=bsduser).delete() groupid_list = self.cleaned_data["bsdusr_to_group"] for groupid in groupid_list: group = models.bsdGroups.objects.get(id=groupid) m = models.bsdGroupMembership(bsdgrpmember_group=group, bsdgrpmember_user=bsduser) m.save() else: bsduser = super(bsdUsersForm, self).save(commit=False) _notifier.reload("user") bsdusr_sshpubkey = self.cleaned_data.get("bsdusr_sshpubkey") if bsdusr_sshpubkey: _notifier.save_pubkey( bsduser.bsdusr_home, bsdusr_sshpubkey, bsduser.bsdusr_username, bsduser.bsdusr_group.bsdgrp_group ) return bsduser
def save(self): user = models.bsdUsers.objects.get(id=self.userid) models.bsdGroupMembership.objects.filter( bsdgrpmember_user=user).delete() groupid_list = self.cleaned_data['bsduser_to_group'] for groupid in groupid_list: group = models.bsdGroups.objects.get(id=groupid) m = models.bsdGroupMembership(bsdgrpmember_group=group, bsdgrpmember_user=user) m.save() try: notifier().reload("user", timeout=_fs().account.user.timeout.reload) except Exception as e: log.debug("ERROR: failed to reload user: %s", e)
def save(self): user = models.bsdUsers.objects.get(id=self.userid) models.bsdGroupMembership.objects.filter( bsdgrpmember_user=user ).delete() groupid_list = self.cleaned_data['bsduser_to_group'] for groupid in groupid_list: group = models.bsdGroups.objects.get(id=groupid) m = models.bsdGroupMembership( bsdgrpmember_group=group, bsdgrpmember_user=user) m.save() try: notifier().reload("user", timeout=_fs().account.user.timeout.reload) except Exception as e: log.debug("ERROR: failed to reload user: %s", e)
def save(self, commit=True): _notifier = notifier() if self.instance.id is None: group = self.cleaned_data['bsdusr_group'] if group is None: try: gid = models.bsdGroups.objects.get( bsdgrp_group=self.cleaned_data['bsdusr_username'] ).bsdgrp_gid except: gid = -1 else: gid = group.bsdgrp_gid uid, gid, unixhash, smbhash = _notifier.user_create( username=str(self.cleaned_data['bsdusr_username']), fullname=self.cleaned_data['bsdusr_full_name'].encode( 'utf8', 'ignore').replace(':', ''), password=self.cleaned_data['bsdusr_password'].encode( 'utf8', 'ignore'), uid=self.cleaned_data['bsdusr_uid'], gid=gid, shell=str(self.cleaned_data['bsdusr_shell']), homedir=str(self.cleaned_data['bsdusr_home']), homedir_mode=int(self.cleaned_data.get('bsdusr_mode', '755'), 8), password_disabled=self.cleaned_data.get( 'bsdusr_password_disabled', False), ) bsduser = super(bsdUsersForm, self).save(commit=False) try: grp = models.bsdGroups.objects.get(bsdgrp_gid=gid) except models.bsdGroups.DoesNotExist: grp = models.bsdGroups( bsdgrp_gid=gid, bsdgrp_group=self.cleaned_data['bsdusr_username'], bsdgrp_builtin=False, ) grp.save() bsduser.bsdusr_group = grp bsduser.bsdusr_uid = uid bsduser.bsdusr_shell = self.cleaned_data['bsdusr_shell'] bsduser.bsdusr_unixhash = unixhash bsduser.bsdusr_smbhash = smbhash bsduser.bsdusr_builtin = False bsduser.save() else: bsduser = super(bsdUsersForm, self).save(commit=False) bsduser.bsdusr_group = self.cleaned_data['bsdusr_group'] bsduser.save() # # Check if updating password # bsdusr_password = self.cleaned_data.get("bsdusr_password", "") if self._api is True: bsdusr_password2 = bsdusr_password else: bsdusr_password2 = self.cleaned_data["bsdusr_password2"] if bsdusr_password and (bsdusr_password == bsdusr_password2): unixhash, smbhash = _notifier.user_changepassword( username=bsduser.bsdusr_username.encode('utf8'), password=bsdusr_password.encode('utf8'), ) bsduser.bsdusr_unixhash = unixhash bsduser.bsdusr_smbhash = smbhash bsduser.save() # # Check if updating group membership # models.bsdGroupMembership.objects.filter( bsdgrpmember_user=bsduser).delete() groupid_list = self.cleaned_data['bsdusr_to_group'] for groupid in groupid_list: group = models.bsdGroups.objects.get(id=groupid) m = models.bsdGroupMembership(bsdgrpmember_group=group, bsdgrpmember_user=bsduser) m.save() _notifier.reload("user") if self.bsdusr_home_copy: p = pipeopen( "su - %s -c '/bin/cp -a %s/* %s/'" % (self.cleaned_data['bsdusr_username'], self.bsdusr_home_saved, self.cleaned_data['bsdusr_home'])) p.communicate() bsdusr_sshpubkey = self.cleaned_data.get('bsdusr_sshpubkey') if bsdusr_sshpubkey: _notifier.save_pubkey(bsduser.bsdusr_home, bsdusr_sshpubkey, bsduser.bsdusr_username, bsduser.bsdusr_group.bsdgrp_group) else: _notifier.delete_pubkey(bsduser.bsdusr_home) return bsduser
def save(self, commit=True): _notifier = notifier() if self.instance.id is None: group = self.cleaned_data['bsdusr_group'] if group is None: try: gid = models.bsdGroups.objects.get( bsdgrp_group=self.cleaned_data['bsdusr_username'] ).bsdgrp_gid except: gid = -1 else: gid = group.bsdgrp_gid uid, gid, unixhash, smbhash = _notifier.user_create( username=str(self.cleaned_data['bsdusr_username']), fullname=self.cleaned_data['bsdusr_full_name'].encode( 'utf8', 'ignore' ).replace(':', ''), password=self.cleaned_data['bsdusr_password'].encode( 'utf8', 'ignore' ), uid=self.cleaned_data['bsdusr_uid'], gid=gid, shell=str(self.cleaned_data['bsdusr_shell']), homedir=str(self.cleaned_data['bsdusr_home']), homedir_mode=int( self.cleaned_data.get('bsdusr_mode', '755'), 8 ), password_disabled=self.cleaned_data.get( 'bsdusr_password_disabled', False ), ) bsduser = super(bsdUsersForm, self).save(commit=False) try: grp = models.bsdGroups.objects.get(bsdgrp_gid=gid) except models.bsdGroups.DoesNotExist: grp = models.bsdGroups( bsdgrp_gid=gid, bsdgrp_group=self.cleaned_data['bsdusr_username'], bsdgrp_builtin=False, ) grp.save() bsduser.bsdusr_group = grp bsduser.bsdusr_uid = uid bsduser.bsdusr_shell = self.cleaned_data['bsdusr_shell'] bsduser.bsdusr_unixhash = unixhash bsduser.bsdusr_smbhash = smbhash bsduser.bsdusr_builtin = False bsduser.save() else: bsduser = super(bsdUsersForm, self).save(commit=False) bsduser.bsdusr_group = self.cleaned_data['bsdusr_group'] bsduser.save() # # Check if updating password # bsdusr_password = self.cleaned_data.get("bsdusr_password", "") if self._api is True: bsdusr_password2 = bsdusr_password else: bsdusr_password2 = self.cleaned_data["bsdusr_password2"] if bsdusr_password and (bsdusr_password == bsdusr_password2): unixhash, smbhash = _notifier.user_changepassword( username=bsduser.bsdusr_username.encode('utf8'), password=bsdusr_password.encode('utf8'), ) bsduser.bsdusr_unixhash = unixhash bsduser.bsdusr_smbhash = smbhash bsduser.save() # # Check if updating group membership # models.bsdGroupMembership.objects.filter( bsdgrpmember_user=bsduser ).delete() groupid_list = self.cleaned_data['bsdusr_to_group'] for groupid in groupid_list: group = models.bsdGroups.objects.get(id=groupid) m = models.bsdGroupMembership( bsdgrpmember_group=group, bsdgrpmember_user=bsduser) m.save() _notifier.reload("user") if self.bsdusr_home_copy: p = pipeopen("su - %s -c '/bin/cp -a %s/* %s/'" % ( self.cleaned_data['bsdusr_username'], self.bsdusr_home_saved, self.cleaned_data['bsdusr_home'] )) p.communicate() bsdusr_sshpubkey = self.cleaned_data.get('bsdusr_sshpubkey') if bsdusr_sshpubkey: _notifier.save_pubkey( bsduser.bsdusr_home, bsdusr_sshpubkey, bsduser.bsdusr_username, bsduser.bsdusr_group.bsdgrp_group) else: _notifier.delete_pubkey(bsduser.bsdusr_home) return bsduser
def save(self, commit=True): _notifier = notifier() if self.instance.id is None: group = self.cleaned_data['bsdusr_group'] if group is None: try: gid = models.bsdGroups.objects.get( bsdgrp_group=self.cleaned_data['bsdusr_username'] ).bsdgrp_gid except: gid = -1 else: gid = group.bsdgrp_gid uid, gid, unixhash, smbhash = _notifier.user_create( username=self.cleaned_data['bsdusr_username'], fullname=self.cleaned_data['bsdusr_full_name'].replace(':', ''), password=self.cleaned_data['bsdusr_password'], uid=self.cleaned_data['bsdusr_uid'], gid=gid, shell=str(self.cleaned_data['bsdusr_shell']), homedir=self.cleaned_data['bsdusr_home'], homedir_mode=int( self.cleaned_data.get('bsdusr_mode', '755'), 8 ), password_disabled=self.cleaned_data.get( 'bsdusr_password_disabled', False ), ) bsduser = super(bsdUsersForm, self).save(commit=False) try: grp = models.bsdGroups.objects.get(bsdgrp_gid=gid) except models.bsdGroups.DoesNotExist: grp = models.bsdGroups( bsdgrp_gid=gid, bsdgrp_group=self.cleaned_data['bsdusr_username'], bsdgrp_builtin=False, ) grp.save() bsduser.bsdusr_group = grp bsduser.bsdusr_uid = uid bsduser.bsdusr_shell = self.cleaned_data['bsdusr_shell'] bsduser.bsdusr_unixhash = unixhash bsduser.bsdusr_smbhash = smbhash bsduser.bsdusr_builtin = False bsduser.save() else: bsduser = super(bsdUsersForm, self).save(commit=False) bsduser.bsdusr_group = self.cleaned_data['bsdusr_group'] bsduser.save() # # Check if updating password # bsdusr_password = self.cleaned_data.get("bsdusr_password", "") if self._api is True: bsdusr_password2 = bsdusr_password else: bsdusr_password2 = self.cleaned_data["bsdusr_password2"] if bsdusr_password and (bsdusr_password == bsdusr_password2): unixhash, smbhash = _notifier.user_changepassword( username=bsduser.bsdusr_username, password=bsdusr_password, ) bsduser.bsdusr_unixhash = unixhash bsduser.bsdusr_smbhash = smbhash bsduser.save() homedir_mode = self.cleaned_data.get('bsdusr_mode') if ( not bsduser.bsdusr_builtin and homedir_mode is not None and os.path.exists(bsduser.bsdusr_home) ): try: homedir_mode = int(homedir_mode, 8) os.chmod(bsduser.bsdusr_home, homedir_mode) except: log.warn('ERROR: failed to set homedir mode', exc_info=True) # # Check if updating group membership # models.bsdGroupMembership.objects.filter( bsdgrpmember_user=bsduser ).delete() groupid_list = self.cleaned_data['bsdusr_to_group'] for groupid in groupid_list: group = models.bsdGroups.objects.get(id=groupid) m = models.bsdGroupMembership( bsdgrpmember_group=group, bsdgrpmember_user=bsduser) m.save() try: _notifier.reload("user", timeout=_fs().account.user.timeout.reload) except Exception as e: log.debug("ERROR: failed to reload user: %s", e) if self.bsdusr_home_copy: p = pipeopen("su - %s -c '/bin/cp -a %s/* %s/'" % ( self.cleaned_data['bsdusr_username'], self.bsdusr_home_saved, self.cleaned_data['bsdusr_home'] )) p.communicate() with client as c: c.call('user.update', bsduser.id, {'sshpubkey': self.cleaned_data.get('bsdusr_sshpubkey')}) return bsduser
def save(self, commit=True): if commit: _notifier = notifier() group = self.cleaned_data['bsdusr_group2'] if group is None: try: gid = models.bsdGroups.objects.get( bsdgrp_group=self.cleaned_data['bsdusr_username'] ).bsdgrp_gid except: gid = -1 else: gid = group.bsdgrp_gid uid, gid, unixhash, smbhash = _notifier.user_create( username=str(self.cleaned_data['bsdusr_username']), fullname=self.cleaned_data['bsdusr_full_name'].encode( 'utf8', 'ignore').replace(':', ''), password=self.cleaned_data['bsdusr_password2'].encode( 'utf8', 'ignore'), uid=self.cleaned_data['bsdusr_uid'], gid=gid, shell=str(self.cleaned_data['bsdusr_shell']), homedir=str(self.cleaned_data['bsdusr_home']), homedir_mode=int(self.cleaned_data['bsdusr_mode'], 8), password_disabled=self.cleaned_data.get( 'bsdusr_password_disabled', False), ) bsduser = super(bsdUserCreationForm, self).save(commit=False) try: grp = models.bsdGroups.objects.get(bsdgrp_gid=gid) except models.bsdGroups.DoesNotExist: grp = models.bsdGroups( bsdgrp_gid=gid, bsdgrp_group=self.cleaned_data['bsdusr_username'], bsdgrp_builtin=False, ) grp.save() bsduser.bsdusr_group = grp bsduser.bsdusr_uid = uid bsduser.bsdusr_shell = self.cleaned_data['bsdusr_shell'] bsduser.bsdusr_unixhash = unixhash bsduser.bsdusr_smbhash = smbhash bsduser.bsdusr_builtin = False bsduser.save() models.bsdGroupMembership.objects.filter( bsdgrpmember_user=bsduser).delete() groupid_list = self.cleaned_data['bsdusr_to_group'] for groupid in groupid_list: group = models.bsdGroups.objects.get(id=groupid) m = models.bsdGroupMembership(bsdgrpmember_group=group, bsdgrpmember_user=bsduser) m.save() _notifier.reload("user") bsdusr_sshpubkey = self.cleaned_data.get('bsdusr_sshpubkey') if bsdusr_sshpubkey: _notifier.save_pubkey(bsduser.bsdusr_home, bsdusr_sshpubkey, bsduser.bsdusr_username, bsduser.bsdusr_group.bsdgrp_group) return bsduser