Changeset - cec5cbc956c0
[Not reviewed]
default
0 5 0
Marcin Kuzminski - 15 years ago 2010-07-01 18:10:43
marcin@python-works.com
Repository managment permissions, fixed found bugs updated js, added extra checks for doubled users and non active ones
5 files changed with 16 insertions and 13 deletions:
0 comments (0 inline, 0 general)
pylons_app/model/db.py
Show inline comments
 
@@ -57,13 +57,13 @@ class Permission(Base):
 
    
 
    def __repr__(self):
 
        return "<Permission('%s:%s')>" % (self.permission_id, self.permission_name)
 

	
 
class Repo2Perm(Base):
 
    __tablename__ = 'repo_to_perm'
 
    __table_args__ = (UniqueConstraint('user_id', 'permission_id', 'repository'), {'useexisting':True})
 
    __table_args__ = (UniqueConstraint('user_id', 'repository'), {'useexisting':True})
 
    repo2perm_id = Column("repo2perm_id", INTEGER(), nullable=False, unique=True, default=None, primary_key=True)
 
    user_id = Column("user_id", INTEGER(), ForeignKey(u'users.user_id'), nullable=False, unique=None, default=None)
 
    permission_id = Column("permission_id", INTEGER(), ForeignKey(u'permissions.permission_id'), nullable=False, unique=None, default=None)
 
    repository = Column("repository", TEXT(length=None, convert_unicode=False, assert_unicode=None), ForeignKey(u'repositories.repo_name'), nullable=False, unique=None, default=None) 
 
    
 
    user = relation('User')
pylons_app/model/forms.py
Show inline comments
 
@@ -124,13 +124,15 @@ class ValidAuth(formencode.validators.Fa
 
            
 
class ValidRepoUser(formencode.validators.FancyValidator):
 
            
 
    def to_python(self, value, state):
 
        sa = meta.Session
 
        try:
 
            self.user_db = sa.query(User).filter(User.username == value).one()
 
            self.user_db = sa.query(User)\
 
                .filter(User.active == True)\
 
                .filter(User.username == value).one()
 
        except Exception:
 
            raise formencode.Invalid(_('This username is not valid'),
 
                                     value, state)
 
        return self.user_db.user_id
 

	
 
def ValidRepoName(edit=False):    
 
@@ -173,13 +175,15 @@ class ValidPerms(formencode.validators.F
 
                    perms_update.append((usr, v))
 
        value['perms_updates'] = perms_update
 
        value['perms_new'] = perms_new
 
        sa = meta.Session
 
        for k, v in perms_new:
 
            try:
 
                self.user_db = sa.query(User).filter(User.username == k).one()
 
                self.user_db = sa.query(User)\
 
                    .filter(User.active == True)\
 
                    .filter(User.username == k).one()
 
            except Exception:
 
                msg = self.message('perm_new_user_name',
 
                                     state=State_obj)
 
                raise formencode.Invalid(msg, value, state, error_dict={'perm_new_user_name':msg})            
 
        return value
 
    
pylons_app/model/repo_model.py
Show inline comments
 
@@ -40,13 +40,13 @@ class RepoModel(object):
 
    
 
    def get(self, id):
 
        return self.sa.query(Repository).get(id)
 
        
 
    def get_users_js(self):
 
        
 
        users = self.sa.query(User).all()
 
        users = self.sa.query(User).filter(User.active == True).all()
 
        u_tmpl = '''{id:%s, fname:"%s", lname:"%s", nname:"%s"},'''
 
        users_array = '[%s];' % '\n'.join([u_tmpl % (u.user_id, u.name,
 
                                                    u.lastname, u.username) 
 
                                        for u in users])
 
        return users_array        
 
        
pylons_app/public/css/monoblue_custom.css
Show inline comments
 
@@ -205,13 +205,13 @@ table tr.parity1 {
 
.ac .yui-ac {
 
	position: relative;
 
	font-family: arial;
 
	font-size: 100%;
 
}
 

	
 
.ac #perm_ac{
 
.ac .perm_ac{
 
	width:15em;
 
}
 
/* styles for input field */
 
.ac .yui-ac-input {
 
	position: absolute;
 
	width: 100%;
pylons_app/templates/admin/repos/repo_edit.html
Show inline comments
 
@@ -33,13 +33,13 @@
 
        		<td>${h.checkbox('private',value="True")}</td>
 
        		<td>${self.get_form_error('private')}</td>
 
        	</tr>
 
        	<tr>
 
        		<td>${_('Owner')}</td>
 
				<td class='ac'>
 
					<div id="perm_ac">
 
					<div class="perm_ac">
 
						${h.text('user',class_='yui-ac-input')}
 
						<div id="owner_container"></div>
 
					</div>
 
				</td>        		
 
        		<td>${self.get_form_error('user')}</td>
 
        	</tr>
 
@@ -60,30 +60,29 @@
 
        						<tr>
 
									<td colspan="4">
 
										<span style="font-size: 0.8em">${_('disabled for private repository')}</span></td>
 
									<td>${r2p.user.username}</td>
 
								</tr>
 
							%else:
 
	        				<tr id=${id(r2p.user.username)}>
 
	        				<tr id="id${id(r2p.user.username)}">
 
	        					<td>${h.radio('perm_%s' % r2p.user.username,'repository.none')}</td>
 
	        					<td>${h.radio('perm_%s' % r2p.user.username,'repository.read')}</td>
 
	        					<td>${h.radio('perm_%s' % r2p.user.username,'repository.write')}</td>
 
	        					<td>${h.radio('perm_%s' % r2p.user.username,'repository.admin')}</td>
 
	        					<td>${r2p.user.username}</td>
 
	        					<td>
 
	        					  %if r2p.user.username !='default':
 
				                  	<span class="delete_icon action_button" onclick="ajaxAction(${r2p.user.user_id},${id(r2p.user.username)})">
 
				                  	<span class="delete_icon action_button" onclick="ajaxAction(${r2p.user.user_id},'${'id%s'%id(r2p.user.username)}')">
 
				                  		<script type="text/javascript">
 
											function ajaxAction(user_id,field_id){
 
												var sUrl = "${h.url('delete_repo_user',repo_name=c.repo_name)}";
 
												var callback = { success:function(o){
 
																YAHOO.util.Dom.get(String(field_id)).innerHTML = '<td colspan="6"></td>';
 
															 }};
 
												var tr = YAHOO.util.Dom.get(String(field_id));
 
												tr.parentNode.removeChild(tr);}};
 
												var postData = '_method=delete&user_id='+user_id; 
 
												var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData); 
 
						                	};
 
												var request = YAHOO.util.Connect.asyncRequest('POST', sUrl, callback, postData);};
 
										</script>       	
 
				                  	</span>
 
				                  %endif					
 
	        					</td>
 
	        				</tr>
 
	        				%endif
 
@@ -98,13 +97,13 @@
 
        				<tr id="add_perm_input" style="${d}">
 
        					<td>${h.radio('perm_new_user','repository.none')}</td>
 
        					<td>${h.radio('perm_new_user','repository.read')}</td>
 
        					<td>${h.radio('perm_new_user','repository.write')}</td>
 
        					<td>${h.radio('perm_new_user','repository.admin')}</td>
 
        					<td class='ac'>
 
        						<div id="perm_ac">
 
        						<div class="perm_ac" id="perm_ac">
 
        							${h.text('perm_new_user_name',class_='yui-ac-input')}
 
									<div id="perm_container"></div>
 
        						</div>
 
        					</td>
 
        					<td>${self.get_form_error('perm_new_user_name')}</td>     					
 
        				</tr>
0 comments (0 inline, 0 general)